一种关于低代码平台(LCDP)建设实践与设计思路
作者 | 刘玄(玄哥)来源 | 阿里开发者公众号背景负责菜鸟商业中心CRM系统开发已经有1年多时间,过程中发现有一个痛点:业务线特别多,每个业务线对同一个页面都有个性化布局和不同的字段需求,而我所在的团队就3个人,在资源有限的情况下如何支撑好呢?刚开始,我们是为各业务线单独定制页面和业务逻辑,1到2个业务线还能应付过来,目前已经发展有十几业务线,且每个业务线下还有子业务线,这种个性化的开发多了,工作量就大了,系统维护压力就巨大。所以就孕育而生了—— 销售魔方类低代码产品,与其说低代码产品,还不如说是一种解决千人千面的个性化业务搭建的前后端一体的解决方案。本文就降本的情况下,我是如何低成本构建产品能力去支撑多条业务线、多租户,我先以小实践成果展示,再过度分享我后续升级的设计思路。什么是LCDP低代码开发平台(Low-Code Development Platform)是无需编码(0代码)或通过少量代码就可以快速生成应用程序的开发平台。通过可视化进行应用程序开发的方法(参考可视编程语言),使具有不同经验水平的开发人员可以通过图形化的用户界面,使用拖拽组件和模型驱动的逻辑来创建网页和移动应用程序。低代码开发平台(LCDP)的正式名称直到2014年6月才正式确定,整个低代码开发领域却可以追溯到更早前第四代编程语言和快速应用开发工具。魔方核心能力产品能力上图是魔方1.0 MVP版本基本运行原理,以及上线后降本增效的数据,业务开发从60人日缩短到20人日,年省成本180人日。以上版本基本满足了80%以上的业务个性化需求自闭环开发。还有一些小问题,基于这个版本,我们又不断的升级,提升产品体验、能力提升和业务覆盖。后续我们可做到新页面上线,只需5分钟,新增字段无需模型变更和无需java代码发布,复杂页面前端也能做到0代码。基于我们业务的诉求,所以销售魔方需具有以下几个核心能力:页面的千行千面(千人千面),包含同一个页面不同布局、不同字段、不同样式。数据模块的千行千面(千人千面),根据不同身份执行不同的业务技术逻辑和服务编排。page一键创建,在没有新的业务组建和新的module情况无需开发接入,0代码上线,运营同学自行配置页面。前端组件复用,在没有新前端组件,前端无需参与开发,后端只需编写module对应的业务接口。实现module可复用,module数据渲染、数据写入,查询条件、浮层、半推页面、页面操作。新增字段扩展0代码,模型字段可以自定义,动态扩展,可定义来自本地数据库、远程HSF接口数据。环境可隔离,测试、预发、生产。平台和业务代码分离,业务上线只需关注业务逻辑本身的代码。DO DTO可定义,动态映射。数据枚举动态定义,动态绑定。魔方的设计产品界面先展现一个实例配置界面,有个体感通过以上配置可以个性化配置页面输出的布局和字段,动态输出个性化页面用户运营:运营可以根据自己的业务身份,定义独有的page实例,自由选择页面的版块和需要展现和编辑的字段产品:配置初始化页面,module、以及全量字段池技术:定义元数据,module,编写module group逻辑执行单元代码产品模块核心逻辑一般低代码平台,主要分为两部分,前端页面的渲染和后端服务接口绑定(服务编排等)。大的逻辑差不多,因为我这个主要还是具有行业特色的类低代码产品,所以是紧扣行业特殊性构建。前端渲染因为我负责的是后端,所以前端我就不过多叙述,大概的逻辑如下两张图,大致意思是前端的页面渲染就如同做菜一样,用户根据自己的需求,可选择菜谱、食材和烹饪方式,不用关心烹饪过程,也不用自己亲自烹饪,都叫由厨师烹饪,厨师会根据你提供的菜谱和食材做好,最后将美食给你端上桌。同理,前端渲染引擎会根据数据协议、组件库、渲染方式,动态渲染成页面,如果有业务数据将会动态绑定。后端绑定我们这有个特殊性,页面是通过后端给定schema,由前端根据这个schema进行页面渲染。后端通过识别出用户的身份,通过接口输出给前端千人千面的个性化schema,前端就通过schema配置动态去渲染。这样就能实现我们说的同一个功能页面,不同业务身份展示不同的布局和字段。同时,还会会有一个业务数据接口,用于绑定前端页面填充业务数据或提交表单数据。每一个组件绑定业务数据接口后,就不是单纯的前端组件了,就具有行业业务属性的组件和页面,这样在这个领域是可以被业务系统直接复用,无需重新编写业务代码。这里有一个难点,每次新增业务线(租户)后就有新增字段需求,而且字段的差异还挺多,约占80%,在不修改模型的前提下,如何做到?带着这个问题可以先思考下。一般解决方案有以下几种:1、通过设计纵表,以扩展字段。缺点就是查询复杂度高。2、元数据驱动。缺点就是成本高,架构更加复杂3、通过定义一个特殊feature字段,存储类型为json,约定好协议,扩展字段按照不同行业存储在json内。优点就是轻量。根据我们自身的定位和资源情况,最终选择的是第3种方案。这里有个担心就是json数据方便搜索吗?性能如何?mysql5.7上,在相同数据量的情况下,虚拟索引和普通索引查询效率基本一致 在大数据量情况下不推荐用聚合函数计算json数据,但是如果json key建立了虚拟列,可以对该虚拟列进行聚合操作,效率跟普通列一样。模型设计整个模型可以看出,从左往右:DO的定义、DTO的定义、module定义(等同VO定义)、原始页面定义(originalPage)、实例化页面配置(instancePage)这个过程基本描述了一个页面是如何定义出来的,以及动态模型的扩展(模型驱动),从模型到页面组件的布局定义。行业个性化配置则通过对OriginalPage实例化成InstancePage而得。这样就能动态生成千行千面。OriginalPage到InstancePage这里借鉴了java的思想,类似Class和实例对象。渲染页面逻辑页面在渲染的时候,只需两个接口:1、实例页面数据结构 ;2、业务数据。前端根据两个接口分成两步渲染:1、初始化页面布局;2、填充业务数据。这个借鉴了Spring容器启动时的设计思路,类似实例化、初始化,属性数据填充。template定义即是对页面类型的定义列表页面详情页面半开页面表单提交页面page定义定义一张前端页面,分成两个阶段:origin;instance。origin是定义的原始页面,可以理解成java 的Class类,可以构建多个实例页面。instance page是最终渲染的运行态。页面结构:一个page 由N个module组成、一个module由N个field组成。如下图一个实例page由以下维度定义1、用户传入参数page_codecustom_dimension2、系统获取参数biz_codesub_biz_codeenviromentmodule定义页面的组成单元,一个页面由多个module组成。代表页面显示区域单元,有多个前端组件组成,是页面容器的布局单元。module_code 全局唯一,实例化后的module可被复用、重写、实现多态。modules 数据结构为一个 B+tree,只有叶子节点是有具体的实体数据。叶子节点是真正包含具体的字段和属性配置module_type 定义对module类型的定义1、主列表查询模块 MAIN_LIST_MODULE2、导出模块 EXPORT_MODULE3、弹出页面模块 FLOAT_PAGE_MODULE4、搜索条件区域 SEARCH_ARE_MODULE5、子列表查询模块 SUB_LIST_MODULE6、编辑表单模块 EDIT_MODULE7、信息平铺呈现 DISPLAY_FLAT_MODULEMcubeContextAwaremodule容器代码定义@Component
public class McubeContextAware implements ApplicationContextAware {
private static volatile ApplicationContext alc;
@Resource
private ModuleBeanFactory moduleBeanFactory;
@Resource
private ModuleGroupBeanFactory moduleGroupBeanFactory;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
alc = applicationContext;
}
@PostConstruct
public void init(){
setModuleBeanMap();
setModuleGroupBeanMap();
}
private void setModuleBeanMap() {
Map<String, McubeModuleExecutor> beanMap = alc.getBeansOfType(McubeModuleExecutor.class);
if (beanMap != null) {
beanMap.values().stream().forEach(m -> {
McubeModule module = AnnotationUtils.findAnnotation(m.getClass(), McubeModule.class);
if (module != null) {
String code = module.code();
String name = module.name();
if (code != null) {
moduleBeanFactory.getMcubeBeanMap().put(code, m);
}
}
});
}
}
private void setModuleGroupBeanMap() {
Map<String, McubeModuleExecutor> beanMap = alc.getBeansOfType(McubeModuleExecutor.class);
if (beanMap != null) {
beanMap.values().stream().forEach(m -> {
McubeModuleGroup module = AnnotationUtils.findAnnotation(m.getClass(), McubeModuleGroup.class);
if (module != null) {
String code = module.code();
String name = module.name();
moduleGroupBeanFactory.getMcubeBeanMap().put(code,m);
}
});
}
}
}执行单元(moduleGroup executor)为了保证页面的数据填充效率,所以并不是一个module绑定一个服务接口,而是一个执行单元对应一个或多个module,负责多个module的数据渲染和数据写入,moduleGroup executor是一个页面计算单元。通过moduleCode动态路由对应的module group,执行相应的计算单元。每个module 执行单至少都包含读、新增、编辑和删除接口。页面上的每一个module就自动绑定了后端的业务接口,实现了前后端一体化搭建。/**
* Created by hzliuxuan on 2022/5/27.
* @author hzliuxuan
* 模块接口
*/
public interface McubeModuleExecutor<T,V> {
/**
* 填充数据,页面渲染,一般是read接口
* @param value
* @return
*/
T populate(V value);
/**
* 编辑模块
* @param value
* @return
*/
void edit(V value);
/**
* 写接口
* @param value
* @return
*/
void add(V value);
/**
* 删除接口
* @param value
* @return
*/
void delete(V value);
}McubeModuleGroupmodule执行组注解定义field定义一个module对应多个field。如果要支持动态扩展,module需要对应一个实体模型。module只代表一个VO层的部分显示片段,要想达到字段可以动态扩展需要定义一层实体模型的映射关系,这样才能找到统一的feature对象去解析,完成DO、DTO、VO的相互自动转换。当module需要动态扩展的时候,从实体模型中去选择已经定义好的field。因为我们的VO也是动态生成的,这样就不需要因为新增一个字段而进行模型变更或者代码发布。即实现0代码上线。field数据结构定义page 数据结构 public class McubePageBeanDTO {
/**
* 页面编码
*/
@CrmOperateLogBizCode
private String pageCode;
/**
* 业务线
*/
private String bizCode;
/**
* 配置类型
*/
private TemplateTypeEnum templateType;
/**
* 配置模块
*/
private List<McubeModuleBeanDTO> originalModules;
/**
* 配置字段
*/
private Map<String, List<McubeField>> originalFields;
/**
* 实例的模块
*/
private List<McubeModuleBeanDTO> instanceModules;
private List<String> instanceModulesList;
/**
* 实例的字段
*/
private Map<String, List<McubeField>> instanceFields;
private String subBizCode;
/**
* 元页面version
*/
private Byte originVersion;
/**
* 实例version
*/
private Byte instanceVersion;
/**
* module version
*/
private Byte moduleVersion;
/**
* 属性集合
*/
private List<Property> properties;
///**
// * 显示的模块
// */
//private List<String> instanceModulesList;
private Boolean isCache;
@Data
public static class Property {
/**
* property
*/
private Boolean checkable;
private Boolean isEdit;
private Boolean selectable;
private Boolean isLeaf;
private Boolean isAdd;
private Boolean isDelete;
private String showType;
private Integer level;
private String extendedField;
}
}
page渲染运行时序图运行时类设计图每一个模块背后都会绑定一个 moduleGroup executor ,业务开发只需通过对这个executor实现,即可快速完成开发上线,整个过程无需前端参与。简单的字段添加也无需发布上线,我们会通过动态扩展映射背后的DO扩展。总结好了,整个魔方的产品设计到这里基本描述完。整个产品我理解更多的是贴近业务而产生的一种前后端一体化,低成本快速构建方案。如果要做大,做全,可以参考salesforce元数据驱动模型。模型关系图:可参考:https://www.infoq.cn/article/rwstpgujoxxuw9tlm88tsalesforce官方架构文档:https://www.developerforce.com/media/ForcedotcomBookLibrary/Force.com_Multitenancy_WP_101508.pdfsalesforce 已经超脱了模型驱动,下探到元数据模型驱动架构 Metadata-driven Architectures。优点很明显,就是真的强大,业务都不需要建任何表,想怎么扩展模型就怎么扩展,此架构一般适用于与SAAS产品。缺点也很明显,完全失去业务语义,开发成本和维护成本高,需要一套强大的sql管理和解析、实时的ETL数据架构、检索能力,后期成本也非常大。故不适用我这个业务团队采纳的方案,但这套设计方案也给我打开了些思路。魔方这套方案搭建工时约为50人日,两个后端加一个前端,解决了十几个业务线多租户的个性化接入,一定程度实现了模型驱动,千人千面的能力,我认为是典型小投入大产出吧,希望对正遇到同样问题的同学有一定的帮助和启发,限于个人能力,最终要搞大的需要有专业的团队支撑,也欢迎指正和探讨。阿里云产品评测—阿里云容器镜像服务 ACR免费试用体验面向容器镜像、Helm Chart 等符合 OCI 标准的云原生制品安全托管及高效分发平台,发布你的评测更有机会获得千元机械键盘,限量定制礼品。点击这里,查看详情。McubeContextAwareMcubeContextAware
【笔记】SQL调优指南—SQL调优进阶—查询优化器介绍
PolarDB-X接收到一条SQL后的执行过程大致如下:语法解析器(Parser)将SQL文本解析成抽象语法树(AST)。语法树被转化成基于关系代数的逻辑计划。优化器(Optimizer)对逻辑计划进行优化得到物理计划。执行器(Executor)执行该计划,得到查询结果并返回给客户端。关系代数算子一条SQL查询在数据库系统中通常被表示为一棵关系代数算子组成的树,有如下场景的算子:Project:用于描述SQL中的SELECT列,包括函数计算。Agg:用于描述SQL中的Group By及聚合函数,其对应的物理算子有HashAgg、SortAgg。Sort:用于描述SQL中的Order By及Limit,其对应的物理算子有TopN、MemSort。Filter:用于描述SQL中的WHERE条件。JOIN:用于描述SQL中的JOIN,其对应的物理算子有HashJoin、 BKAJoin、Nested-Loop Join、SortMergeJoin等。Agg:用于描述SQL中的Group By及聚合函数,其对应的物理算子有HashAgg、SortAgg。Sort:用于描述SQL中的Order By及Limit,其对应的物理算子有TopN、MemSort。等等例如,对于如下查询SQLSELECT l_orderkey, sum(l_extendedprice *(1 - l_discount)) AS revenue
FROM CUSTOMER, ORDERS, LINEITEM
WHERE c_mktsegment = 'AUTOMOBILE'
and c_custkey = o_custkey
and l_orderkey = o_orderkey
and o_orderdate < '1995-03-13'
and l_shipdate > '1995-03-13'
GROUP BY l_orderkey;通过如下EXPLAIN命令看到PolarDB-X的执行计划:HashAgg(group="l_orderkey", revenue="SUM(*)") HashJoin(condition="o_custkey = c_custkey", type="inner") Gather(concurrent=true) LogicalView(tables="ORDERS_[0-7],LINEITEM_[0-7]", shardCount=8, sql="SELECT `ORDERS`.`o_custkey`, `LINEITEM`.`l_orderkey`, (`LINEITEM`.`l_extendedprice` * (? - `LINEITEM`.`l_discount`)) AS `x` FROM `ORDERS` AS `ORDERS` INNER JOIN `LINEITEM` AS `LINEITEM` ON (((`ORDERS`.`o_orderkey` = `LINEITEM`.`l_orderkey`) AND (`ORDERS`.`o_orderdate` < ?)) AND (`LINEITEM`.`l_shipdate` > ?))") Gather(concurrent=true) LogicalView(tables="CUSTOMER_[0-7]", shardCount=8, sql="SELECT `c_custkey` FROM `CUSTOMER` AS `CUSTOMER` WHERE (`c_mktsegment` = ?)")用树状图表示如下:查询改写(RBO)查询改写(SQL Rewrite)阶段输入为逻辑执行计划,输出为逻辑执行计划。这一步主要应用一些启发式规则,是基于规则的优化器(Rule-Based Optimizer,简称RBO),所以也常被称为RBO阶段。查询改写这一步的主要有如下功能:子查询去关联化(Subquery Unnesting)子查询去关联化是将含有关联项的子查询(关联子查询)表示为SemiJoin或类似的算子,便于后续的各种优化,例如下推到存储层MySQL或在PolarDB-X层选择某种算法执行。在如下例子中IN子查询转化为SemiJoin算子,并最终转化成SemiHashJoin物理算子由PolarDB-X进行执行:> explain select id from t1 where id in (select id from t2 where t2.name = 'hello');SemiHashJoin(condition="id = id", type="semi") Gather(concurrent=true) LogicalView(tables="t1", shardCount=2, sql="SELECT `id` FROM `t1` AS `t1`") Gather(concurrent=true) LogicalView(tables="t2_[0-3]", shardCount=4, sql="SELECT `id` FROM `t2` AS `t2` WHERE (`name` = ?)")算子下推算子下推是非常关键的一步,PolarDB-X内置了如下算子的下推优化规则:优化规则描述谓词下推或列裁剪将Filter及Project算子下推至存储层MySQL执行,过滤掉不需要的行和列。JOIN Clustering将JOIN按照拆分方式及拆分键的等值条件进行重排和聚簇,方便下一步的JOIN下推。JOIN下推对于符合条件的JOIN,将其下推至存储层MySQL执行。Agg下推将聚合(Agg)拆分为FinalAgg和LocalAgg两个阶段,并将LocalAgg下推至存储层MySQL。Sort下推将排序(Sort)拆分为MergeSort和LocalSort两个阶段,并将LocalSort下推至存储层MySQL。更多关于查询下推的信息,请参见查询改写与下推。查询计划枚举(CBO)查询改写阶段输出的逻辑执行计划会被输入到查询计划枚举(Plan Enumerator)中,并输出一个最终的物理执行计划。查询计划枚举在多个可行的查询计划中,根据预先定义的代价模型,选择出代价最低的一个。与查询改写阶段不同,在查询计划枚举中,规则可能产生更好的执行计划,也可能产生更差的执行计划,可以根据算子经过规则优化后的前后代价对比选出较优的那个,因此这也被称为基于代价的优化(Cost-based Optimizer,简称CBO)。其核心组件有以下几个部分:统计信息(Statistics)基数估计(Cardinality Estimation)转化规则(Transform Rules)代价模型(Cost Model)计划空间搜索引擎(Plan Space Search Engine)逻辑上,CBO的过程包括如下几个步骤:搜索引擎利用转化规则,对输入的逻辑执行计划进行变换,构造出物理执行计划的搜索空间。利用代价模型对搜索空间中的每一个执行计划进行代价估计,选出代价最低的物理执行计划。代价估计的过程离不开基数估计,它利用各个表、列的统计信息,估算出各算子的输入行数、选择率等信息,提供给算子的代价模型,从而估算出查询计划的代价。
每日分享:DAPP泰山众筹系统开发逻辑原理(成熟代码)
在新零售时代,消费者体验升级的基础建立在商家对于消费者的识别的精准度上升到前所未有的水平,使得商家更“懂”你,甚至比“你”更懂“你”,而不只是“你们”,从这个角度,新零售首先革新的是消费者行为数据采集系统,这是源头。以往,消费者在线上购物时,平台可以收集到消费者几乎全部购物行为数据,从浏览点击,收藏,到下单,快递等。随着我们的生活融入互联网的程度加深,除了购物信息,各类手机软件还记录了我们的出行信息,餐饮信息,娱乐信息,旅游信息,甚至还包含金融信息医疗信息和教育信息等。新零售时代的数据采集将更进一步,利用物联网和视频捕捉技术把消费者在实体商店的各种消费行为数据化,补上电子商务时代缺失的消费者线下行为数据。紧接着,数据采集系统革新最重要的一步,就是数据与数据之间的链接,一方面是线上数据直接的链接,即消费者在互联网世界的身份账号统一,另一方面是线上数据与线下数据的链接,即消费者真实身份和互联网身份的统一。泰山众筹,这是一款以卖货为主的电商商业模式,主要用户通过购买商品获得购物币,从而参与众筹,待到一轮一轮众筹成功之后出期,用户能够从中获得一定的收益。泰山众筹仍然活跃在市场上,这也证明了该模式的优势。结合当前电商会员的保留和增值,简单地说,它是泰山众筹和电商卖货,使模式长期、可持续、更合理、合法、合规。泰山众筹有着三个机制:满四出一:众筹采用以四期为出一期众筹,假设用户在第1期投入,那么就需要等到第四期众筹成功之后才能将第1期的本金以及奖励给到用户。复倍利增:泰山众筹每一期都按照30%的增长幅度进行,每一期等比增长。30%当中12%为静态收益、10%为动态收益、8%为平台收益。爆仓重生:当众筹失败的话怎么办?假设当20期已经筹不满了,系统则自动判定该轮众筹失败,于是将当期20期的购物币全额原路退还给到用户,而后三期则只能退还70%的购物币,但能够给到他们一个优先勋章以及广告积分,可以进行提前参与众筹以及提前与认购的功能。而众筹则开始继续下一轮重新开始。泰山众筹具体究竟如何玩?显示限量地进行消费认购,每一期认购时效性为二十四—四十八小时左右,超时未认购满,即为本期认购失败。只需要通过消费商品获得的“资产”,并且赠送其消费积分。第1期需1000购物币,每人限购10—100;第二期需1300购物币,每人限购10—100;第三期需1690购物币,每人限购10—100;第四期需2197购物币,每人限购10—100;第五期需......新零售与电商应该有着完全不同的内涵和意义:1、消费体验不同在先进的高端技术的支持下,新零售模式使用数字技术实现现实与虚拟的结合,最大限度地利用最大空间和时间维度的客户,产品和场景。客户可以在不受地区,时间,空间等限制的情况下体验产品。2、主体不同传统的电子商务零售是入驻各大电子商务平台,完全依靠电子商务平台的流量来获取消费者。新零售主要使用网上购物商场、小程序、应用程序等工具,结合网上实体实体商店,形成新的销售模式。实现线上、线下的集成,将会有更多的流量。3、与消费者距离不同传统的电子商务产品是成批生产的,也可以直接与制造商合作生产。很难满足消费者不断变化的需求和个性。他们的步伐总是落后于市场更新的步伐。但新零售不同,它拥有大量的数据支持,以及先进的人工智能,它始终关注市场,可以生产个性化的产品,并且可以随时根据市场和消费者的需求进行调整。4.不同的驱动力电商的主要推动力来自互联网。电商吸引商品的买卖双方到同一平台完成交易。电商的优势在于可以有效解决商品供需对接的问题,但不能改变商品生产前后的痛点和问题。目前,电商发展的停滞,正是这些痛点被放大了。新零售时代的驱动力主要来自以大数据、云计算和智能科技为代表的新技术。这些新技术与互联网的最大区别在于,它们的作用不是通过优化供需对接渠道来实现的,而是通过对商品生产的具体过程进行深度干预,从而实现产业效率的再提高。这样既能解决行业固有的痛点和问题,又能从根本上提高行业的发展效率,真正使行业发展进入新的发展阶段。5.不同的商业模式电商时代的商业模式是B2B模式,它考虑如何在平台上加入电商时代的元素,使供需双方在平台上实现更高效的对接。新零模式是赋能模式,它考虑如何通过对b端用户的深度赋能来实现行业的深度转型,从而提高行业内部效率,从根本上满足用户消费升级的基本需求。本文由系统开发对接唯:StPv888编辑整理发布。6.不同的使用场景电商的使用场景主要体现在网上,而电商所做的就是吸引线下用户上网,从而在网上完成零售过程。新零售的使用场景不仅是线上集中,而且线上线下统一,从而实现行业效率的再提升,从根本上消除用户的痛点。正因新零售更加关注线上和线下的统一,我们才能看到新零售与电商的根本区别。线上和线下的统一,能让线上无法解决的痛点在线下场景被化解。
记第一次使用云服务器
感受第一次使用云服务器,开始的时候其实还是挺迷茫的,因为在课堂上老师授课不会进行手把手的教学,去熟悉每一个模块。所以一般遇到问题我都是百度+使用手册来进行学习。在学习的过程中也算是得心应手,毕竟现在的网络资源很丰富,只要能善用搜索引擎,绝大部分的问题都能迎刃而解。使用的小技巧 网站的使用手册完全够我们日常的使用,对每一个模块都用对应的使用教程,按照教程我们可以进行对应功能的使用。如果在手册里面还是不能解决你的问题,那可以尝试一下百度,在里面你可能可以找到更加简单的教程,因为有些教程没有图片,理解起来还是比较困难的,当然是对于像我这样的小白。结语最后还是要进行一个自我鼓励,希望可以一直坚持下去,加强学习,慢慢进步。
CleanMyMac X4.11升级版下载及功能详情
CleanMyMac X/4一键智能清理系统垃圾,提升您的Mac运行速度,深度清理内存和保护隐私,检测并删除恶意软件和并读。删除海量垃圾文件和恶意软件,让您的 Mac 飞速运行,井然有序。转载于:https://www.sohu.com/a/577661833_120864439CleanMyMac X 囊括了 30 多种工具,可以帮助您解决大部分 Mac 问题。您可以用它来管理存储空间、应用,并监控 Mac 的健康状况。它会基于您使用 Mac 的情况提供一些个性化清理建议。主要特性:• 释放空间删除海量系统垃圾、损坏的数据和缓存。查找散落在所有文件夹中的大文件和旧文件。一目了然地查看存储空间,并查找占用最多空间的无用文件。保护您的 Mac扫描 Mac 查找最新的并读和广告软件。删除键盘记录程序、见叠软件等恶意软件代理。清理浏览历史记录和追踪 Cookie.• 卸载应用查找并彻底删除不需要的应用。将损坏的应用重置到默认状态。移除扩展程序和背景插件。• 监控 Mac 的健康状况查看电池电量和处理器负荷的实时数据。监控网络速度和可用内存。获取个性化 Mac 清理技巧.• 屡获殊荣的设计2020 年 iF 设计奖获奖应用。Product Hunt “月度最佳应用” 2019 年 MacStories “必备 Mac 应用”。将平淡无奇的 Mac 清理任务转变成时髦的互动操作。这款应用以简单性为设计的核心理念。底层的智能自我学习算法可以保证其极佳的易用性。• MAC 专家的评价“如果您因磁盘空间几乎已满的 Mac 而抓狂,不妨试试 CleanMyMac X。借助该款应用,您可以在多年中相当轻松地恢复大量磁盘空间,希望这款应用可以继续保持。”• MacStories“CleanMyMac X 可以帮助用户轻松保持最佳的 Mac 健康状况。其内置工具可以帮助您清理不需要的应用和文件,删除恶意软件等。”• Cult of Mac“用户将会喜欢 CleanMyMac X 简洁诱人的界面,其中包括清晰的图标和动画效果,让原本枯燥的过程变得有趣。”• VentureBeat“从极大的速度改进到恶意软件移除、全新菜单设计等,该版本包含了诸多您迫不及待想要查看的新功能。” iMore官方下载地址:如下复制下载https://wm.makeding.com/iclk/?zoneid=49983windows版本的也有哦,在我之前的文章有发过,感兴趣的宝宝们可以去看一下。最后宝宝们如果有什么想了解的软件跟我说,我写给你看,欢迎评论区留言CleanMyMac X 还具有哪些其他功能?CleanMyMac X 包括优化 Mac 所需的所有工具。深层清理、恶意软件移除、性能提升 — 一款应用涵盖所有功能:查找并移除大型隐藏文件更新、卸载和重置您的应用清理浏览器数据和聊天历史记录退出挂起的应用和占用大量 CPU 的应用
外贸crm平台适合哪些行业?
外贸crm平台适合哪些行业?外贸中哪些行业可以应用孚盟外贸CRM平台,其实孚盟外贸CRM平台适合和行业十分广泛,可以适合于多行业企业的客户关系管理,不仅适合一般的普遍性的行业,也适合一些具有特殊性的行业。当然添加了外贸属性的CRM客户关系管理平台同样适用于所有从事贸易出口的行业及企业。比如:服装纺织出口,汽配贸易出口,机械设备出口,灯具出口等贸易型企业及公司,有哪些企业用了外贸CRM平台?孚盟外贸CRM平台已经与熊猫电子、恰恰集团、国药集团等在内的5W+企业携手,帮助他们管理客户关系,实现业务量增长。近日,孚盟外贸CRM平台与绿源电动车达成合作,构建以客户为中心的数字化业务管理新生态,提升数字化水平与市场占有率。1、全面管理客户资源孚盟外贸CRM平台可以帮助外贸公司全面掌握客户的相关信息,并通过丰富的自定义表单将客户的相关信息添加到外贸CRM平台中,从而可以整体把握客户的整体信息,并根据自己的喜好进行个性化定制。定制化、点对点连接更有利于把握客户需求,提高客户关联度。2、数据共享与权限管理在孚盟外贸CRM平台中,团队内的任何销售细节都会被记录下来。如果部门想协同工作,可以通过孚盟外贸CRM平台直接查看,还可以提醒团队哪些任务需要完成,不用担心事情太多。孚盟外贸CRM平台支持app下载,可以随时随地访问。3、日常任务自动化在各个部门的工作中,一个任务可能与部门任务叠加。如果用原来的方式填表和提交报告,可能会占用员工大部分的时间和精力,甚至可能会出现人员的荣誉,但是这些细节工作直接交给了孚盟外贸CRM平台,不仅可以实时存储信息,还可以实现智能办公,进一步提升业务水平。4、团队管理在外贸公司发展的过程中,客户的数量也会增加。如果所有工作都交给员工,可能会出现错误或遗漏。使用孚盟外贸CRM平台可以为管理者分配职责,跟踪工作流程,有助于提高员工的积极性。同时,孚盟外贸CRM平台还可以对员工的工作进行分类管理,确保工作内容清晰明了。
你说你懂互联网,那这些你知道么?(一)
今天的因特网无疑是有史以来由人类创造的、精心设计的最大系统、该系统由数以千计的计算机设备(计算机、平板电脑、智能手机)彼此相互连接构成,并且还有一批与因特网相互连接的物品比如游戏机、监控系统、汽车、医疗设备、智能眼镜、手表、运动手环等,随着5G时代的到来,万物互联也越来越称为可能,这里推荐一下 尤瓦尔·赫拉利 的《未来简史》,这个人的格局很高,他书中描述的未来也越来越成为现实,他写的文字能让你感觉到你更想变为计算机世界里的一片硅片。但是,面对互联网如此巨大且迅速的变化,我们能做些什么?我在地铁站等车的时候经常被地铁广告洗脑,鼓吹人工智能发展的多么牛逼,鼓吹大家都成为人工智能的高端型人才,我不能否认这个操作,但是我认为人工智能并不适合每个人,而且人工智能需要的技术和知识储备是巨大的,所以,与其憧憬成为人工智能的高端型人才,不如把眼下的计算机基础知识学好,你的未来才会有更多的可能性。毕竟,一切计算力发展的源头都是计算机,也可以说现在互联网一切的衍生物都是计算机的儿子。说到计算机基础,就不得不提计算机网络,就像人长大后是需要和外界进行交流一样,计算机网络也是计算机彼此通信的必要条件。如果计算机的创造好比新中国成立,那么计算机网络的出现就相当于是改革开放。并且计算机网络是每个软件工程师必须要学好的一门知识。扯了这么多,下面开始进入正题,一展计算机网络的宏图。什么是因特网首先来聊一下因特网是什么,wiki 对它的定义是:因特网是一个全球范围的互联网系统,它使用 TCP/IP 协议簇来链接全世界的设备。我们可以从两个方面来描述一下因特网我们描述因特网可以通过基本硬件和软件组件来进行描述我们能够根据为分布式应用提供服务的联网基础设施来描述因特网我们先从第一条描述开始因特网的描述通过硬件和软件来描述因特网是一个世界范围的计算机网络。说到因特网的构成,就不得不提构成因特网的组件是什么,还记得我们开头提到的因特网设备吗?智能手机、平板电脑,智能电视,智能家居,游戏机,手表,汽车,眼镜,温度调节系统,这些构件在因特网中有个专门的术语,所有的这些设备都被称为主机(host)或者端系统(end system),一提到主机你是不是想到的是计算机的主机?这两个主机的领域虽然不同,但是它们的作用是相同的,都是系统的大脑。据保守性评估,2015年已经有大约50亿台设备接入了因特网。而到了2020年这个数字将会变为250亿。那么这些主机或者端系统之间是如何进行通信的呢?实际上,端系统通过通信链路(communication link)和分组交换机(packet switch) 连接到一起。通信链路:指的是因特网中两个节点之间的物理通道。通信链路的传输介质有双绞线、光纤 和 微波分组交换机:网络交换设备,它主要包括三个基本部分:交换单元、接口单元和控制单元。不同的链路能够以不同的速率进行传输数据,称为链路的传输速率(transmission type) ,以 比特/秒(bit/s,或 bps)进行度量。当一台端系统要向另一台端系统发送数据时,发送端系统将数据分段,并为每段加上首部字节。由此形成的信息包用计算机网络的术语称为分组(packet),这个分组的概念非常重要,以后我们会经常提到。这些分组通过网络发送到目的端系统,在那里被装配成初始数据。分组交换机从它的一条入通信链路接收到达的分组,并从它的一条出通信链路转发该分组。分组交换机的种类有很多种,最著名最常见的分组交换机就是路由器(router) 和 链路层交换机(link-layer switch),一个分组所经历的一系列通信链路和分组交换机称为通过该网络的路径(route 或者 path)。上面讲述的名词肯能比较晦涩,如果你不是很理解的话,就可以把分组在交换网络中的传输比作是 运输车在高速公路上的运输,分组类似于卡车,通信链路类似于高速公路,分组交换机类似于交叉口,端系统类似于建筑物,就像卡车需要从某一建筑物的起点经过高速公路和交叉口到达另外一个建筑物的过程。就像卡车需要选取一条路进行运输一样,分组也选取计算机网络的一条路径前行。端系统通过因特网服务提供商(Internet Service Provider,ISP) 接入因特网,包括如本地电缆或电话公司那样的住宅区 ISP、公司 ISP、大学 ISP,在机场、咖啡馆或者公共场所所提供的 WiFi 接入的 ISP,以及为智能手机或者其他设备提供移动接入的蜂窝数据。我们国家的 ISP 主要有三大基础运营商,中国电信、中国移动和中国联通。端系统、分组交换机和其他因特网部件都要运行一系列的 协议(protocol),这些协议控制因特网中信息的接收和发送。其中 TCP 和 IP 协议是因特网中最重要的两个协议。IP协议定义了在路由器和端系统之间发送和接收的分组格式。因特网中的协议统称为TCP/IP,而不单单指的是TCP 和 IP 两个协议。那么这些协议是由谁制定的呢?实际上,这些因特网协议或者称为因特网标准是由因特网工程任务组(Internet Engineering Task Force)通过分布式应用程序来描述上面我们描述的因特网是从硬件和软件层面进行说明的,除此之外,我们还可以通过为分布式应用提供服务的联网基础设施来描述因特网,这个概念比较抽象,我们还是举例子说明一下。除了传统应用程序就像是电子邮件和web 冲浪外,因特网应用还包括智能手机和平板应用程序,这些应用程序中又包括像是即时通讯、来自云的音乐流、电影和电视流、在线社交网络、视频会议、多人游戏和基于位置的推荐系统。因为这些应用程序涉及多个相互交换的端系统,所以这些应用被称为分布式应用程序。重要的是,因特网应用程序运行在端系统上,而不是运行在网络核心的分组交换机中。我们来深入的探究一下,因为应用程序可能会运行在端系统上,所以你需要编写使其运行在端系统上的程序,你可能会使用 C、Java、Python 来编写。现在,因为你开发了一个分布式应用程序,这个程序运行在不同的端系统需要彼此发送消息。此时我们遇见一个核心问题,那就是一个运行在端系统的应用程序如何让其他运行在端系统的应用程序收发数据呢?接入因特网的端系统提供了一个套接字接口(socket Interface)用于和其他端系统的应用程序收发数据。这个因特网套接字是应用程序必须要遵守的约定。协议是什么既然我们已经对因特网有了一点概念了,下面我们就来探讨一下因特网又一个很重要的概念那就是协议,协议就相当于是人类活动所遵守的约定。人类活动的比喻理解计算机网络协议最简单的方式就是把它抽象为我们的生活,因为我们人类无时无刻都在执行协议。考虑一下当你想向其他人询问当前时间的时候你会怎样做?下面是一个典型的询问方式上图是一个男女双方都比较友好的对话,那么假如女方回答:"请不要烦我",或者说我不会说中文等等类似不合时宜的回答造成双方不再对话,那么此时就会造成中断。通常情况下,发问者就会放弃继续询问。那么造成上述中断的原因是什么呢?是不是男女双方没有就询问时间这个话题达成一致呢?也就是说,协议最重要的一点就是为了完成一项工作,需要两个(或多个)通信实体遵守相同的协议。网络协议网络协议非常类似于人类协议,除了通信双方由人类变为了计算机载体,哦,协议也会不一样。以大家熟悉的一个计算机网络协议为例,考虑当你向一个 Web 服务器发送请求时(即你在 Web 浏览器中键入一个 Web 页面的 URL)所发生的情况。首先,你的计算机会向 Web 服务器发送一条连接请求报文,并等待该服务器的响应,等到服务器发送响应到计算机之后,计算机会重新发送一条 GET 请求报文到服务器,最后,Web 服务器向计算机返回该 Web 页面(文件)。根据上面两个例子你能给的出协议的定义了吗?也许下面这个定义会比较准确呢协议(protocol)定义了在两个或多个通信实体之间交换报文的格式和顺序,以及报文发送和/或接受一条报文或其他事件所采取的动作。因特网广泛的采取了各种各样的协议,不同的协议用于完成不同的通信任务。掌握计算机网络领域知识的过程就是理解网络协议的构成、原理和工作方式的过程。 </div>
国际机器人联合会:2022年机器人发展的五大趋势
全球范围内正在运营的工业机器人,达到了创纪录的300万台——平均每年增长13%(2015-2020年)。国际机器人联合会(IFR)分析了在全球范围内,影响机器人技术和自动化发展的5大趋势。“在传统和新兴行业,机器人自动化转型正在加速前进。越来越多的公司逐步意识到,机器人技术为其业务带来诸多优势。”IFR主席Milton Guerry说。1 新兴行业中的机器人应用自动化程度较低的领域,正在迅速采用机器人。消费者行为正在推动公司满足个性化的产品和装了成千上万台机器人,而5年前这一领域根本没有部署机器人。为了解决劳动力短缺问题,以前没有考虑过自动化的公司将重新考虑这一方案。依赖服务业人员的企业,如零售业和餐饮业,出现了无法填补人员空缺。因此,我们可以期待看到他们投资自动化以满足顾客的需求。相对较新的机器人应用领域,如配送和物流、建筑、农业及其它领域,也将受益于不断进步的自动化技术。2 更容易使用的机器人部署机器人可能是一项复杂的任务,但新一代机器人将更容易使用。有一个明显的趋势是新的用户界面,允许简单的图标驱动编程和手动指导机器人。一些机器人公司和第三方供应商,正在将硬件包与软件捆绑在一起,以便于实施。这一趋势看似简单,但专注于完整生态系统的产品,通过减少投入和运营时间,大大提升了价值。低成本机器人技术的趋势,还包括易于设置和安装,在某些情况下可以预先配置特定应用程序。供应商提供适配手爪、传感器和控制器的标准程序。应用商店为各种应用提供程序例程,并支持低成本机器人的部署。3 机器人和员工的技能提升越来越多的政府、行业协会和企业认为,需要尽早为下一代劳动力提供基础的机器人和自动化教育。数据驱动的生产线需要加强教育和培训。除了对员工进行内部培训外,外部教育途径还可以加强员工的学习计划。每年在30多个国家开展的机器人课程中,机器人制造商们每年都会收获1万到3万名注册学员。机器人技术正在改善工厂工人的职业形态。正如最近的“辞职潮”所显示的那样,人们希望可以在一个现代环境中工作,开始自己的职业生涯。机器人技术带来的新的培训机会,对公司和员工来说都是一个双赢的策略:枯燥、肮脏和危险的任务让机器人自动完成,这样人们就有机会去学习未来工作所需的关键技能,并在整个职业生涯中增加提升收入的潜力。4 机器人为生产提供保障全球贸易环境的恶化和新冠疫情,驱动着制造业回归,更贴近消费者。供应链问题促使企业考虑自动化解决方案。来自美国的一份统计数据显示,自动化是如何帮助企业重返市场的:根据美国先进自动化协会(A3)的数据,美国2021年第三季度的机器人订单,比2020年同期增长了35%。超过一半的订单来自非汽车行业。这一创纪录的增长不仅限于机器人技术,机器视觉、运动控制和电机也出现了大幅增长。IFR秘书长Susanne Bieller博士说:“这场疫情以及由此导致的供应链和劳动力供应中断,似乎是许多人为证明投资合理性所需要的推动力。最有可能投资自动化的公司是那些已经考虑了一段时间,但还没有迈出最后一步的公司。”5 机器人支持数字自动化2022年及以后,我们认为数据将被视为未来制造业的关键推动因素。从智能自动化过程中收集的数据将由生产者进行分析,以做出更明智的决策。由于机器人能通过人工智能(AI)共享任务和学习,企业还可以更容易地在新环境中采用智能自动化,从建筑到食品和饮料包装设施,再到医疗实验室。用于机器人的AI越来越成熟,学习型机器人正在成为主流。该行业已经过了试点阶段,预计在2023年,这些技术将获得更大规模的部署。本文转载自51CTO,本文一切观点和机器智能技术圈子无关。原文链接免费体验百种AI能力以及试用热门离线SDK:【点此跳转】
linux的目录结构
目录结构及主要内容“/”根目录部分有以下子目录/usr目录包含所有的命令、程序库、文档和其它文件。这些文件在正常操作中不会被改变的。这个目录也包含你的 Linux 发行版本的主要的应用程序,譬如,Netscape。/var目录包含在正常操作中被改变的文件:假脱机文件、记录文件、加锁文件、临时文件和页格式化文件等。这个目录中存放着那些不断在扩充着的东西,为了保持/usr 的相对稳定,那些经常被修改的目录可以放在这个目录下,实际上许多系统管理员都是这样干的。顺带说一下系统的日志文件就在/var/log 目录中。/home目录包含用户的文件:参数设置文件、个性化文件、文档、数据、EMAIL、缓存数据等。这个目录在系统升级时应该保留。/proc目录包含用户的文件:参数设置文件、个性化文件、文档、数据、EMAIL、缓存数据等。这个目录在系统升级时应该保留。/bin系统启动时需要的执行文件(二进制),这些文件可以被普通用户使用。/sbin系统执行文件(二进制),这些文件不打算被普通用户使用。(普通用户仍然可以使用它们,要指定目录。)/etc操作系统的配置文件目录。/root系统管理员(也叫超级用户或根用户)的 Home 目录/dev设备文件目录。LINUX 下设备被当成文件,这样一来硬件被抽象化,便于读写、网络共享以及需要临时装载到文件系统中。正常情况下,设备会有一个独立的子目 录。这些设备的内容会出现在独立的子目录下。LINUX 没有所谓的驱动符/lib根文件系统目录下程序和核心模块的共享库/boot 用于自举加载程序(LILO 或 GRUB)的文件。当计算机启动时(如果有多个操作系统,有可能允许你选择启动哪一个操作系统),这些文件首先被装载。这个目录也会包含LINUX核(压缩文件vmlinuz),但 LINUX 核也可以存在别处,只要配置 LILO 并且 LILO 知道 LINUX 核在哪儿/opt 可选的应用程序,譬如,REDHAT 5.2 下的 KDE (REDHAT 6.0 下,KDE 放在其它XWINDOWS 应用程序中,主执行程序在/usr/bin 目录下)/tmp 临时文件。该目录会被自动清理干净/lost+found 在文件系统修复时恢复的文件/usr 目录下比较重要的部分有:/usr/X11R6 X-WINDOWS 系统(version 11, release 6)
/usr/X11 同/usr/X11R6 (/usr/X11R6 的符号连接)
/usr/X11R6/bin 大量的小 X-WINDOWS 应用程序(也可能是一些在其它子目录下大执行文件的符号连
接)。
/usr/doc LINUX 的文档资料(在更新的系统中,这个目录移到/usr/share/doc)。
/usr/share 独立与你计算机结构的数据,譬如,字典中的词。
/usr/bin 和/usr/sbin 类似与“/”根目录下对应的目录(/bin 和/sbin),但不用于基本的启动(譬如,
在紧急维护中)。大多数命令在这个目录下。
/usr/local 本地管理员安装的应用程序(也可能每个应用程序有单独的子目录)。在“main”安装后,
这个目录可能是空的。这个目录下的内容在重安装或升级操作系统后应该存在。
/usr/local/bin 可能是用户安装的小的应用程序,和一些在/usr/local 目录下大应用程序的符号连接。/proc 目录的内容:◆/proc/cpuinfo 关于处理器的信息,如类型、厂家、型号和性能等。
◆/proc/devices 当前运行内核所配置的所有设备清单。
◆/proc/dma 当前正在使用的 DMA 通道。/proc/filesystems 当前运行内核所配置的文件系统。
◆/proc/interrupts 正在使用的中断,和曾经有多少个中断。
◆/proc/ioports 当前正在使用的 I/O 端口。
举例,使用下面的命令能读出系统的 CPU 信息。
cat /proc/cpuinfo总结来说:◆用户应该将文件存在/home/user_login_name 目录下(及其子目录下)。◆本地管理员大多数情况下将额外的软件安装在/usr/local 目录下并符号连接在/usr/local/bin 下的主执行程序。◆系统的所有设置在/etc 目录下。◆不要修改根目录(“/”)或/usr 目录下的任何内容,除非真的清楚要做什么。这些目录最好和 LINUX发布时保持一致。
国际机器人联合会:2022年机器人发展的五大趋势
全球范围内正在运营的工业机器人,达到了创纪录的300万台——平均每年增长13%(2015-2020年)。国际机器人联合会(IFR)分析了在全球范围内,影响机器人技术和自动化发展的5大趋势。 “在传统和新兴行业,机器人自动化转型正在加速前进。越来越多的公司逐步意识到,机器人技术为其业务带来诸多优势。”IFR主席Milton Guerry说。1 新兴行业中的机器人应用自动化程度较低的领域,正在迅速采用机器人。消费者行为正在推动公司满足个性化的产品和装了成千上万台机器人,而5年前这一领域根本没有部署机器人。为了解决劳动力短缺问题,以前没有考虑过自动化的公司将重新考虑这一方案。依赖服务业人员的企业,如零售业和餐饮业,出现了无法填补人员空缺。因此,我们可以期待看到他们投资自动化以满足顾客的需求。相对较新的机器人应用领域,如配送和物流、建筑、农业及其它领域,也将受益于不断进步的自动化技术。2 更容易使用的机器人部署机器人可能是一项复杂的任务,但新一代机器人将更容易使用。有一个明显的趋势是新的用户界面,允许简单的图标驱动编程和手动指导机器人。一些机器人公司和第三方供应商,正在将硬件包与软件捆绑在一起,以便于实施。这一趋势看似简单,但专注于完整生态系统的产品,通过减少投入和运营时间,大大提升了价值。低成本机器人技术的趋势,还包括易于设置和安装,在某些情况下可以预先配置特定应用程序。供应商提供适配手爪、传感器和控制器的标准程序。应用商店为各种应用提供程序例程,并支持低成本机器人的部署。3 机器人和员工的技能提升越来越多的政府、行业协会和企业认为,需要尽早为下一代劳动力提供基础的机器人和自动化教育。数据驱动的生产线需要加强教育和培训。除了对员工进行内部培训外,外部教育途径还可以加强员工的学习计划。每年在30多个国家开展的机器人课程中,机器人制造商们每年都会收获1万到3万名注册学员。机器人技术正在改善工厂工人的职业形态。正如最近的“辞职潮”所显示的那样,人们希望可以在一个现代环境中工作,开始自己的职业生涯。机器人技术带来的新的培训机会,对公司和员工来说都是一个双赢的策略:枯燥、肮脏和危险的任务让机器人自动完成,这样人们就有机会去学习未来工作所需的关键技能,并在整个职业生涯中增加提升收入的潜力。4 机器人为生产提供保障全球贸易环境的恶化和新冠疫情,驱动着制造业回归,更贴近消费者。供应链问题促使企业考虑自动化解决方案。来自美国的一份统计数据显示,自动化是如何帮助企业重返市场的:根据美国先进自动化协会(A3)的数据,美国2021年第三季度的机器人订单,比2020年同期增长了35%。超过一半的订单来自非汽车行业。这一创纪录的增长不仅限于机器人技术,机器视觉、运动控制和电机也出现了大幅增长。IFR秘书长Susanne Bieller博士说:“这场疫情以及由此导致的供应链和劳动力供应中断,似乎是许多人为证明投资合理性所需要的推动力。最有可能投资自动化的公司是那些已经考虑了一段时间,但还没有迈出最后一步的公司。”5 机器人支持数字自动化2022年及以后,我们认为数据将被视为未来制造业的关键推动因素。从智能自动化过程中收集的数据将由生产者进行分析,以做出更明智的决策。由于机器人能通过人工智能(AI)共享任务和学习,企业还可以更容易地在新环境中采用智能自动化,从建筑到食品和饮料包装设施,再到医疗实验室。用于机器人的AI越来越成熟,学习型机器人正在成为主流。该行业已经过了试点阶段,预计在2023年,这些技术将获得更大规模的部署。