Liam冯海舰邮箱:linss@51cto.
com电话:010-68476606-81232018年01月16日linss@51cto.
com040911阿里巴巴年度技术总结:人工智能在搜索的应用和实践自动驾驶还有距离智能驾驶舱已在眼前让数据库跑的更快的7个MySQL优化建议!
欢迎加入51CTO挨踢部落群QQ群:312724475出版方责任编辑封面设计联系方式出版日期投稿方式2024爱奇艺CTO汤兴:道天地将法,《孙子兵法》的管理之道灵智优诺CTO许可:AI技术破传统保险推销模式困局2017年12月目录总第41期探城译文精选26如何在两台服务器之间安全迁移MySQL数据库13网易传媒刘彦东:AI将个性化内容及时送至读者手中122017年12月编程语言排行榜2931342018年科技界很热门的13项IT技能如何辨别你的Linux服务器已中了招十种方式用AI进行Web设计36如何在您的Java应用中查找并修复内存泄漏45挨踢部落技术坐诊·精编篇41全栈工程师的自我修炼挨踢故事汇技术坐诊其次是搜索应用,包括智能交互,语义搜索,智能匹配和智能决策四个技术方向,这四个方向的协同创新实现了搜索全链路的深度学习技术升级,并具备从传统的单场景单目标优化到多场景多目标联合优化的能力;再次是在性能优化上做的工作,包括模型压缩、量化、低秩分解再到二值网络,大量的技术调研和论证,为未来提高深度模型预测性能和软硬件协同优化做了很好的技术铺垫;最后是排序平台化,实现了PC商品搜索、无线商品搜索、店铺内搜索搜索和店铺搜索的搜索服务统一,通过特征和模型复用,实现了多条业务线技术的快速升级.
下面我会简要的概括下在四个方向上取得的主要进展和背后的思考.
如下图,是搜索系统和算法的简图.
搜索系统和算法简图以深度学习为代表的人工智能在图像、语音和NLP领域带来了突破性的进展,在信息检索和个性化领域近几年也有不少公开文献,比如wide&deep实现了深度模型和浅层模型的结合,dssm用于计算语义相关性,deepfm增加了特征组合的能力,deepCF用深度学习实现协同过滤,rnnrecommender采用行为序列预估实现个性化推荐等.
工业级的信息检索或个性化系统是一个复杂的系统工程,深度学习的工业级应用需要具备三个条件:强大的系统计算能力,优秀的模型设计能力和合适的应用场景,我们梳理了过去一年多搜索在深度学习方向上的探索,概要的介绍了我们在深度学习系统、深度学习算法和搜索应用落地的进展和思考,希望对大家有所启发.
深度学习在搜索的应用概括起来包括4个方面:首先是系统,强大的深度学习训练平台和在线预测系统是深度学习应用的必要条件,目前我们的离线深度学习框架、在线深度学习框架和在线预测框架统一到tf,并实现了日志处理,特征抽取,模型训练和在线服务部署端到端的流程,极大提升了算法迭代效率;阿里巴巴年度技术总结:人工智能在搜索的应用和实践作者:欧文武来源:51CTO4该系统包括:a.
离线数据平台ODPS,负责离线日志join、特征抽取和离线模型预估产出排序特征,时效性不强的特征都是通过离线数据平台产出的,比如用户性别标签,商品关键字等;b.
离线机器学习平台PAI,底层是主流的parameterserver和TF深度学习框架,平台实现了大部分机器学习算法模型的并行训练和预测,在搜索应用中主要作用是离线模型训练产出离线排序特征模型;c.
流式计算和在线学习平台Porsche,流式计算是基于blink负责实时日志解析和特征join生成实时排序特征,在线学习和离线学习底层框架可以相同,差别主要是依赖数据源和部分优化方法不同,由于用户行为和市场环境变化快,流式计算和在线学习在搜索应用非常广泛,并积累了不少在线学习和强化学习算法;d.
在线服务平台,包括引擎、排序服务和搜索平台组成,负责在线的服务分发、索引查询、排序服务和结果合并等功能,搜索的排序策略、相关性、个性化等模型主要通过在线预测服务生效.
经过多年发展我们已经具备了非常完善的商品搜索排序算法体系,包括知识图谱、分词、tagging、类目预测、意图预测、拼写纠错、query推荐、query语义改写、相关性、商品标签、商品质量、店铺分层、用户profile、用户偏好、用户感知、召回策略、个性化模型、多样性策略、异构服务混排策略、多目标联合优化策略、多场景联合排序策略等,并平台化的方式赋能相关业务团队.
系统进展包括机器学习平台和在线预测平台机器学习平台.
搜索训练样本主要来自用户行为,由于用户行为是流式数据,适合做在线深度学习,但当模型参数非常庞大需要海量的样本时在线学习需要很长的时间才能收敛,这时一般是先做离线预训练再结合增量或在线学习,另外有些模型离线预训练后在线只需要对接近输出层的网络做fine-tuning.
搜索在实际应用的有离线机器学习平台PAI和在线机器学习平台Porsche,两个平台深度学习框架目前都统一到了tf-pai,tf-pai对原生tf做了一些优化,比如底层通讯,稀疏参数存储、优化方法、GPU显存优化等,比原生tf训练深度有较大的提升,训练上千亿样本和上百亿参数的深度模型毫无压力.
虽然Porsche和PAI都支持GPU,但在搜索应用中CPU依然是主流,GPU应用比较少,原因主要是个性化相对图像或语音简单,特征抽取网络比较浅,维度相对较低,GPU的稠密矩阵计算能力得不到充分发挥,同时离在线混布后流量低谷期间腾出了大量的在线服务闲置CPU,把临时闲置的CPU利用起来做深度学习训练是一个非常好的思路.
在线预估RTP,搜索排序算分服务.
由于每次搜索请求有上千个商品需要计算排序分数,深度模型应用对RTP服务的压力是非常大的,RTP通过采用异构计算,计算算子化和模型分片等方式解决了深度模型inference计算和存储问题,深度模型用GPU,浅层模型用CPU,今年双11期间搜索RTP服务用到了550张GPU卡.
另外,RTP还实现了离线/在线训练模型/数据和在线预测服务部署的无缝衔接,算法训练好的模型或数据可以很轻松的部署都在线服务,提升了算法迭代效率.
算法包括智能交互、语义搜索、智能匹配和搜索策略四个方向智能交互商品搜索就是带交互的商品推荐,用户通过关5键字输入搜索意图,引擎返回和搜索意图匹配的个性化推荐结果,好的交互技术能够帮助到用户更好的使用搜索引擎,目前搜索的交互主要是主动关键字输入和关键字推荐,比如搜索框中的默认查询词和搜索结果中的文字链等,推荐引擎根据用户搜索历史、上下文、行为和状态推荐关键字.
和商品推荐的区别是,关键字推荐是搜索链路的中间环节,关键字推荐的收益除了关键字的点击行为外,还需要考虑对整个购物链路的影响,包括在推荐关键字的后续行为中是否有商品点击、加购和成交或跳转到另外一个关键字的后继行为,这是一个典型的强化学习问题,action是推荐的关键字候选集合,状态是用户当前搜索关键词、上下文等,收益是搜索引导的成交.
除了被动的关键字推荐,我们也在思考搜索中更加主动的交互方式,能够做到像导购员一样的双向互动,主动询问用户需求,挑选个性化的商品和给出个性化的推荐理由,目前阿里搜索团队已经在做智能导购和智能内容方向的技术原型及论证,智能导购在技术上主要是借鉴对话系统,通过引导用户和引擎对话与关键字推荐方式互为补充,包括自然语言理解,对话策略,对话生成,知识推理、知识问答和商品搜索等模块,功能主要包括:a.
根据用户搜索上下文生成引导用户主动交互的文本,比如搜索"奶粉"时,会生成"您宝宝多大0~6个月,6个月到1岁….
"引导文案,提示用户细化搜索意图,如果用户输入"3个月"后,会召回相应段位的奶粉,并在后续的搜索中会记住对话状态"3个月"宝宝和提示用户"以下是适合3个月宝宝的奶粉".
b.
知识导购,包含提高售前知识问答或知识提示,比如"3个月宝宝吃什么奶粉"回答"1段".
目前对话技术正在提高中,尤其是在多轮对话状态跟踪、知识问答和自动评价几个方面,但随着深度学习、强化学习和生成对抗学习等技术在NLP、对话策略、阅读理解等领域的应用,越来越多的训练数据和应用场景,domainspecific的对话技术未来几年应该会突飞猛进.
智能内容生成,包括生成或辅助人工生成商品和清单的"卖点",短标题和文本摘要等,让淘宝商品表达更加个性化和多元化.
语义搜索语义搜索主要是解决关键字和商品内容之间的语义鸿沟,比如搜索"2~3周岁宝宝外套",如果按照关键字匹配召回结果会远小于实际语义匹配的商品.
语义搜索的范围主要包括:a.
querytagging和改写,比如新品,年龄,尺码,店铺名,属性,类目等搜索意图识别和归一化,querytagging模型是用的经典的序列标注模型bi-lstm+CRF,而标签分类(归一化)作为模型另外一个任务,将序列标注和分类融合在一起学习.
b.
query改写,主要是计算query之间相似度,把一个query改写成多个语义相似的query,通常做法是先用不同改写策略生成改写候选query集合,比如词替换、向量化后topk、点击商品相似度等,然后在用ltr对后续集合排序找出合适的改写集合,模型设计和训练相对简单,比较难的是如何构建高质量的训练样本集合,线上我们用bandit的方法探测部分query改写结果的优劣,离线则用规则和生成对抗网络生成一批质量较高的样本.
6c.
商品内容理解和语义标签,通过商品图片,详情页,评价和同义词,上下位词等给商品打标签或扩充商品索引内容,比如用imagetagging技术生成图片的文本标签丰富商品内容,或者更进一步用直接用图片向量和文本向量融合,实现富媒体的检索和查询.
d.
语义匹配,经典的DSSM模型技术把query和商品变成向量,用向量内积表达语义相似度,在问答或阅读理解中大量用到多层LSTM+attention做语义匹配,同样高质量样本,特别是高质量负样本很大程度上决定了模型的质量,我们没有采样效率很低的随机负采样,而是基于电商知识图谱,通过生成字面相似但不相关的query及相关文档的方法生成负样本.
从上面可以看到querytagging、query相似度、语义匹配和语义相关性是多个目标不同但关联程度非常高的任务.
下一步计划用统一的语义计算框架支持不同的语义计算任务,具体包括1.
开发基于商品内容的商品表征学习框架,为商品内容理解,内容生成,商品召回和相关性提供统一的商品表征学习框架,重点包括商品标题,属性,详情页和评价等文本信息抽取,图像特征抽取和多模信号融合.
2.
query表征学习框架,为query类目预测,query改写,query推荐等提供统一的表征学习框架,重点通过多个query相似任务训练统一的query表征学习模型.
3.
语义召回,语义相关性等业务应用模型框架.
语义搜索除了增加搜索结果相关性,提升用户体验外,也可以一定程度上遏制淘宝商品标题堆砌热门关键词的问题.
智能匹配这里主要是指个性化和排序.
内容包括:a.
ibrain(深度用户感知网络),搜索或推荐中个性化的重点是用户的理解与表达,基于淘宝的用户画像静态特征和用户行为动态特征,我们基于multi-modalslearning、multi-taskrepresentationlearning以及LSTM的相关技术,从海量用户行为日志中直接学习用户的通用表达,该学习方法善于"总结经验"、"触类旁通",使得到的用户表达更基础且更全面,能够直接用于用户行为识别、偏好预估、个性化召回、个性化排序等任务,在搜索、推荐和广告等个性化业务中有广泛的应用场景,感知网络超过10B个参数,已经学习了几千亿次的用户行为,并且会保持不间断的增量学习越来越聪明.
b.
多模学习,淘宝商品有文本、图像、标签、id、品牌、类目、店铺及统计特征,这些特征彼此有一定程度的冗余和互补,我们利用多模学习通过多模联合学习方法把多维度特征融合在一起形成统一的商品标准,并多模联合学习中引入self-attention实现特征维度在不同场景下的差异,比如女装下图片特征比较重要,3C下文本比较重要等.
c.
deepfm,相对wide&deep模型,deepfm增加了特征组合能力,基于先验知识的组合特征能够应用到深度学习模型中,提升模型预测精度.
d.
在线深度排序模型,由于行为类型和商品重要性差异,每个样本学习权重不同,通过样本池对大权重样本重复copy分批学习,有效的提升了模型学习稳定性,同时通过融合用户状态深度ltr模型实现了千人千面的排序模型学习.
e.
全局排序,ltr只对单个文档打分然后按照ltr分数和打散规则排序,容易导致搜索结果同质化,影响总页效率,全局排序通过已知排序结果做为上下文预测下一个位置的商品点击概率,有7效提升了总页排序效率.
f.
另外工程还实现了基于用户和商品向量的向量召回引擎,相对倒排索引,向量化召回泛化能力更强,对语义搜索和提高个性化匹配深度是非常有价值的.
以上实现了搜索从召回、排序特征、排序模型、个性化和重排的深度学习升级,在双11无线商品搜索中带来超过10%(AB-Test)的搜索指标提升.
多智能体协同学习实现智能决策搜索中个性化产品都是成交最大化,导致的问题是搜索结果趋同,浪费曝光,今年做的一个重要工作是利用多智能体协同学习技术,实现了搜索多个异构场景间的环境感知、场景通信、单独决策和联合学习,实现联合收益最大化,而不是此消彼长,在今年双11中联合优化版本带来的店铺内和无线搜索综合指标提升12%(AB-Test),比非联合优化版本高3%(AB-Test).
性能优化.
在深度学习刚起步的时候,我们意识到深度模型inference性能会是一个瓶颈,所以在这方面做了大量的调研和实验,包括模型压缩(剪枝),低秩分解,量化和二值网络.
通过以上技术,今年双11期间在手淘默认搜索、店铺内搜索、店铺搜索等均取得了10%(AB-Test)以上的搜索指标提升.
阿里巴巴人工智能搜索应用的未来计划通用用户表征学习.
前面介绍的DUPN是一个非常不错的用户表征学习模型,但基于query的attention只适合搜索,同时缺少基于日志来源的attention,难以推广到其他业务,在思考做一个能够适合多个业务场景的用户表征模型,非搜索业务做些简单finetuning就能取得比较好的效果;同时用户购物偏好受季节和周期等影响,时间跨度非常大,最近K个行为序列假设太简单,我们在思考能够做life-longlearning的模型,能够学习用户过去几年的行为序列;搜索链路联合优化.
从用户进入搜索到离开搜索链路中的整体优化,比如搜索前的query引导(底纹),搜索中的商品和内容排序,搜索后的query推荐(锦囊)等场景;跨场景联合优化.
今年搜索内部主搜索和店铺内搜索联合优化取得了很好的结果,未来希望能够拓展在更多大流量场景,提高手淘的整体购物体验;多目标联合优化.
搜索除了成交外,还需要承担卖家多样性,流量公平性,流量商业化等居多平台和卖家的诉求,搜索产品中除了商品搜索外还有"穹顶","主题搜索","锦囊","内容搜索"等非商品搜索内容,不同搜索目标和不同内容(物种)之间的联合优化未来很值得深挖.
智能交互.
"搜索排序做的再好搜索也只是一个工具",如何把搜索从工具做成私人导购助手,能够听懂你的语言,了解你的情绪,能够对话和多轮交互,解决售前售后困惑,推荐更加个性化的商品应该是搜索未来的另外一个主要发展方向.
8自动驾驶还有距离智能驾驶舱已在眼前提及智能汽车,先想到的是自动驾驶,虽众巨头们均在这方面发力,也有很明显的进展,但距真正实现距离还很远,相对而言,实现智能驾驶舱要更接地气一些.
正如中科创达智能汽车事业部首席架构师张航在采访中表示:融入了AI听觉、视觉和炫酷人机交互界面的智能驾驶舱,让只针对司机的交互,变成车内所有人的交互,且场景更加丰富,方式更加智能化、科技化.
智能驾驶舱已在眼前传统驾驶舱仪表盘、中控显示屏、车载信息及娱乐终端等功能大多呈分区显示,这样功能布局碎片化和复杂的操作环境,不仅分散驾驶者的注意力,降低驾驶体验,还隐藏着安全隐患.
还有就是UI的设计很老旧,很多人把当前汽车的人机交互比作智能手机前夜的"诺基亚".
IT创新带动人机交互的方式也在不断被颠覆,拿电脑来说,从键盘到鼠标、触控屏;拿手机来说,从按键到智能.
汽车是我们日常生活中每天都要用到的出行工具,未来的交互也一定会发生巨大的改变.
智能驾驶舱概念的提出,亦或能够定义未来汽车人机交互新体验.
那么,什么是智能驾驶舱呢包含多屏融合(包含了液晶仪表、HUD、中控屏及中控车载信息终端、后座HMI娱乐屏、车内外后视镜等载体),以及语音控制、手势操作等智能化的交互方式.
近日,中科创达智能汽车事业部首席架构师张航于2017安卓技术大会现场接受了我们的采访,过程中了解到2014年起,中科创达就专注于为下一代智能联网汽车提供智能驾驶舱系统解决方案,以智能车载信息娱乐系统为基础,并与高级辅助驾驶系统(ADAS)、智能仪表盘、汽车总线、车载通信系统相融合.
中科创达在去年收购了Rightware——先进汽车数字仪表盘及信息娱乐系统中的图形引擎软件供应商,和Appsy——能够提供高性能高表现的汽车显示音频解决方案的供应商,标志着中科创达将有能力为全球客户提供智能车载娱乐信息系统和数字仪表盘系统的解决方案.
今年,又携手重庆市渝北区政府成立重庆智能汽车协同创新研究院,联合产业链上的合作伙伴共同建设的智能网联汽车前沿技术创新基地、重点产品研发基地、高层次人才培养基地,推动智能网联汽车产业规模化发展.
智能驾驶舱的产业链分为硬件和软件两部分,作者:王雪燕来源:51CTO9硬件涵盖抬头显示器、中控显示器、数据仪表盘、汽车后座屏等,软件部分涵盖操作系统、软件服务、ADAS系统等.
只有产业链的各个环节都趋近于成熟,智能驾驶舱才能真正的落地.
当下,有很多像中科创达这样的专注于某一细分环节的提供商活跃在这条产业链上,相信智能驾驶舱的实现就在眼前.
基于Kanzi的车载Android系统2105年开始,一些车厂开始使用安卓前装车载的信息娱乐系统,但当时的安卓只有移动和平板两个版本,各个厂家需要按需定制功能,在兼容性方面存在很大问题.
2016年末,AndroidO、AndroidP新功能公布,在汽车方面涉及的模块,如下表所示.
从表中可以看出这是一个相对完善的功能,但对于车厂来说,还有很大改善空间,定制必不可少.
就拿风格来说,每个车厂都希望自己独具一格,所以对才做系统的界面会有很高的要求.
张航向我们介绍,中科创达收购Rightware,主要是因为它的明星产品Kanzi——一款汽车行业领先的人机交互界面设计软件,用于快速设计和执行包括仪表盘、信息娱乐系统、和抬头显示器在内的汽车用户界面.
Kanzi有三大亮点:一是用户界面设计工具Kanzistudio,具备功能有:从基本的2D扩爱到高端3D图形;内置UI空间,布局,动画,过渡等;高级UI流和视觉状态创作,无须编码等,可设计出非常绚的界面效果.
二是跨平台运行引擎KanziEngine,提供工程团队熟悉的标准C++API、先进的图像渲染引擎、模块化架构,支持多硬件多操作系统、从低端扩展到高端应用,像素完美的图像及文本渲染.
三是KanziConnect,把车内的各个系统全都联起来,并通过云端联接手机,这样一来,使得信息可以在不同的子系统之间实现相互通讯,而且因为KanziConnect定制过,可以联接车载网络.
目前,中科创达把Kanzi作为智能驾驶舱的基础架构,包括UI的显示、HMI的架构、不同系统之间的链接方式等等.
采访最后,张航表示,在车联网时代,智能汽车的标准不仅是拥有更智能的交互式驾驶舱、更安全的自动驾驶技术,更包含与互联网相连,为人们提供丰富多彩互联网服务的能力.
然而,不同于智能手机行业,智能汽车的网络入口不完全由车厂决定,互联网企业同样有机会参与竞争,作为汽车行业OS的提供商,中科创达致力同时为车厂和互联网企业提供优秀的技术平台,使得他们能够更专注于用户体验和服务质量的提升.
10网易传媒刘彦东:AI将个性化内容及时送至读者手中2017年12月01日-02日,由51CTO主办的WOTD全球软件开发技术峰会将在深圳中州万豪酒店隆重举行.
本次峰会以软件开发为主题,数十位专家级嘉宾将带来多场精彩的技术内容分享.
届时,网易传媒技术VP刘彦东先生将在峰会主会场与来宾分享"当AI遇见信息流:新时代的信息分发"主题演讲,为大家详细阐述AI技术在信息流产品的应用与变革.
51CTO诚邀您莅临大会,与我们共享技术带来的喜悦.
人工智能是计算机学科的一个分支,被认为是21世纪三大尖端技术(基因工程、纳米科学、人工智能)之一.
网易传媒技术VP刘彦东先生在接受51CTO记者采访时表示,AI的发展将经历三个阶段:第一阶段是集中诞生基础理论的阶段,学术界在过去的很长一段时间内都在AI领域探索,在理论层面不断进展,但实际落地和商业应用少之又少;第二阶段是数据驱动AI技术不断发展的阶段,尤其是最近几年,随着计算能力的提升,数据量迅猛增长,AI产品也越来越丰富,开始逐渐渗透到各个垂直领域,例如新闻推荐、电商、无人车以及安防等;第三阶段是未来阶段,当资源进一步加大,AI技术有了更大的突破,弱人工智能过渡到强人工智能,届时必将引发新的变革.
网易传媒技术VP刘彦东先生此前,创新工场董事长李开复曾表示,"人工智能将快速爆发,十年后50%的人类工作将被AI取代.
"对此观点刘彦东先生向记者给出了自己的看法,他认为对于传媒行业来说,内容的收集、处理和分发都会因为AI而变得更好,编辑和记者的工作内容里,有一部分枯燥和重复性的工作由机器来做效率更高,效果更好;而有些工作内容,如写作、内容深度判断之类,目前来看还很难被直接取代.
刘彦东介绍,随着大数据及推荐技术的发展,信息流产品可以将内容根据用户喜好进行精准推送,有了AI之后,信息分发将从三方面发生显著变化:一是更准时,更及时,机器的反映速度快,尤其在大规模处理方面,热点事件发生后可以得到大范围的快速传播;二作者:查士加来源:51CTO11是更具个性化,千人千面;三是形式更加多样,人不可能是所有内容形式的专家,机器却可以.
未来的信息流产品在内容形式上将更加多样,领域也更加细分,更强调平台化发展和生态化建设.
"AI在传媒行业也有很好的应用前景,目前网易传媒在内容理解、质量判断、用户理解和个性化分发领域都用到了人工智能,"刘彦东先生介绍道:"在内容理解和质量判断方面,可以理解和判断文字、图片、音频、短视频等多种内容形式,在用户理解方面,通过构建用户画像,可以对用户的兴趣进行识别,深度了解用户的个性化需求;个性化分发无需多言了,网易新闻已经做到了内容的个性化推荐.
"此外,他还提到,网易传媒还引入深度学习等新技术,加快AI在传媒领域的应用,为用户提供更加优质的内容服务.
众所周知,广告业务是传媒行业不可分割的组成部分,广告收益更是传媒企业营收水平的重要指标.
谈到AI对广告业务影响时,刘彦东提到:"广告的本质就是推荐,和新闻的推荐是一个道理,广告投放在传媒行业已经做了很多年,相对成熟.
当然,随着数据体量的不断增长,以及新技术的涌现,广告形式的多样性以及传播效果将会进一步提升.
"例如,世界人工智能概念第一股——Veritone最初就是利用其专属平台帮助广告主提升其媒体放置(广告投放),通过实时广告验证和媒体分析来实现广告投资最大化.
可以预见,AI在传媒行业,尤其在内容服务及广告服务两个方面将会有更大的发挥空间.
Kotlin与C似乎已经成为2017年年度编程语言的惟二候选人.
随着小型软件设备的蓬勃发展以及汽车行业低级软件的增加,C编程语言在2017年得到进一步普及.
Kotlin于2011年由JetBrains最初发布,这是一种可以在Java虚拟机上运行的语言,如今因被指定为Android官方语言而变得炙手可热.
编程语言排行榜TOP20榜单:前10名编程语言的走势图:2017年12月编程语言排行榜12让数据库跑的更快的7个MySQL优化建议!
随着容量和负载的增加,MySQL的性能会日趋缓慢.
这里有七点建议能够保证MySQL的平稳运行.
性能是我们衡量应用的一种方式,而应用性能的一项指标就是用户体验,也就是平时我们常说的:"用户需要等待超过合理的时间,才能获得他们想要的东西吗"在不同的情况和场景下,该指标会有所不同.
比如说:对于移动购物应用来说,其响应时间不能超过几秒钟;而对于一个员工的人力资源页面而言,其响应时间则允许比几秒钟更长.
因此,不管是什么样的标准,维持应用程序的良好性能都是至关重要的,否则就会引发用户的抱怨(或更糟的是用户转而使用其他的应用).
而数据库性能就是影响应用程序性能的因素之一.
可以说,应用程序、网站和数据库之间的交互会直接影响到应用服务水平的确立.
这种交互的一个核心组成部分是:各种应用程序如何去查询数据库,以及数据库是如何响应各种请求的.
不论是哪一种标准,MySQL都是时下最流行的数据库管理系统之一.
越来越多的企业已将MySQL(和其他开源的数据库)视为其生产环境中的数据库解决方案.
MySQL有许多配置方法可以确保您的数据库能够快速地响应各种查询,同时仅对应用程序性能造成细微的下降.
以下就是能够帮助您优化MySQL数据库性能的7点必备技巧:学习如何使用EXPLAIN创建正确的索引拒绝默认设置将数据库载入内存中使用SSD存储13横向扩展追求可视性学习如何使用EXPLAIN在您对数据库做任何设计决策时,有两个方面非常重要:应用实体之间如何被映射到各个数据表(数据库模式架构)上.
应用程序如何获取(查询)到它们所需格式类型的数据.
复杂的应用程序必然有着复杂的模式架构和查询.
如果您想让自己的各种应用具备所需的性能和扩展性,那就不能单纯依靠直觉去理解各种查询的执行机制.
建议您认真学习如何去使用EXPLAIN命令,而不是凭空猜想.
该命令会向您展示查询是如何被执行的;并深入地演示有关性能的真实表现情况,以及查询是如何伴随着数据量的变化进行扩展的.
像许多MySQLWorkbench之类的工具都可以将EXPLAIN的输出可视化地展示给您,不过您仍然需要了解与它相关的基本知识.
EXPLAIN命令的输出有两种不同的格式:老式的表格形式和较新的、能够提供更为细节化的、结构化的JSON文档.
如下所示:1.
mysql>explainformat=jsonselectavg(k)fromsbtest1whereidbetween1000and2000\G2.
1.
row3.
EXPLAIN:{4.
"query_block":{5.
"select_id":1,6.
"cost_info":{7.
"query_cost":"762.
40"8.
},9.
"table":{10.
"table_name":"sbtest1",11.
"access_type":"range",12.
"possible_keys":[13.
"PRIMARY"14.
],15.
"key":"PRIMARY",16.
"used_key_parts":[17.
"id"18.
],19.
"key_length":"4",20.
"rows_examined_per_scan":1874,21.
"rows_produced_per_join":1874,22.
"filtered":"100.
00",23.
"cost_info":{24.
"read_cost":"387.
60",25.
"eval_cost":"374.
80",26.
"prefix_cost":"762.
40",27.
"data_read_per_join":"351K"28.
},29.
"used_columns":[30.
"id",31.
"k"32.
],33.
"attached_condition":"(`sbtest`.
`sbtest1`.
`id`between1000and2000)"34.
}35.
}1436.
}其中您需要重点查看的部分是:查询成本.
查询成本是指基于查询执行的总体成本和许多不同的因素考虑,MySQL判定一次查询所付出的花销.
一般简单查询的成本会小于1000.
介于1000到100,000的成本值被视为中等成本的查询.
因此,如果您每秒只是运行上百个(并非几万个)此类查询的话,一般速度应该比较快.
查询成本如果是超过100,000的话,那么开销就比较大了.
而通常当您的系统只有单个用户时,此类查询仍然可以被迅速地执行.
当然,您需要仔细考虑一下在交互式应用程序中,使用此类查询的频率(尤其在用户数量增长的时候).
虽然这些只是大概的数字,但是它们却能够反映出总体的规律.
实际情况下,您的系统在处理查询请求负载时会表现得更好还是更糟,完全取决于自身的架构与配置.
决定查询成本的一个首要因素是:查询是否正确地使用了各种索引.
如果您没有使用索引进行查询,那么会被EXPLAIN命令所指出来,通常源于索引是如何在数据库中被创建的,以及查询本身是如何被设计的.
这也正是为什么EXPLAIN值得去好好学习和使用的原因.
创建正确的索引索引是通过减少在数据库里查询时,必须扫描的数据量来提高查询的自身效率.
在MySQL中,索引被用于加快对数据库的访问,并有助于遵循数据库的各种约束(例如UNIQUE和FOREIGNKEY).
数据库索引就像书的索引一样,它们的位置信息被保存,并且包含有数据库的主要信息.
它们是数据位置的一种参考方法或映射,因此索引并不会更改数据库中的任何数据.
它们只是指向数据存放的位置而已.
不过,索引并不总能匹配上任何的负载请求.
在系统运行中,您应当不断为查询的上下文环境创建各种索引.
虽然有着良好索引的数据库会运行更快速,但是如果出现单个索引的缺失,则会拖慢整个数据库的效率.
因此,我们需要使用EXPLAIN来查找缺失的索引,并将其添加上去.
需要注意的是:不要添加您所不需要的索引,因为不必要的索引会反过来拖慢数据库.
拒绝默认设置就像其他任何软件那样,MySQL也能通过各种可配置的设置,来修改其行为并最终优化其性能.
同时这些配置的设置经常会被管理员所忽略,并一直保持着默认值的状态.
为了让MySQL获得最佳的性能,了解如何配置MySQL,以及将它们设置为最适合您的数据库环境的状态是非常重要的.
在默认情况下,MySQL是针对小规模的发布、安装进行调优的,而并非真正的生产环境规模.
15因此,通常您需要将MySQL配置为使用所有可用的内存资源,并且能允许您的应用程序所需的最大连接数.
这里有三个有关MySQL性能优化的设置,值得您去仔细地配置:innodb_buffer_pool_size数据和索引被用作缓存的缓冲池.
当您的数据库服务器有着大量的系统内存时,可以用到该设置.
如果您只运行InnoDB存储引擎,那么您通常可以分配80%左右的内存给该缓冲池.
而如果您要运行非常复杂的查询或者您有大量的并发数据库连接,亦或您有非常大的数据表的情况,那么就可能需要将此值下调一个等级,以便为其他的调用分配更多的内存.
您在设置InnoDB缓冲池大小的时候,要确保其设置既不要过大,也不要频繁引起交换(swapping),因为这些绝对会降低您的数据库性能.
有一个简单的检查方法就是在"Percona监控和管理".
如图所示,如果你看到有大于1MB每秒的持续交换活动的话,您就需要减少缓冲池的大小了,或者使用其他的内存.
如果您一开始并没有将innodb_buffer_pool_size的值设置正确,也不必担心.
从MySQL5.
7开始,您可以动态地改变InnoDB缓冲池的大小,而不需要重新启动数据库服务器了.
innodb_log_file_size这是指单个InnoDB日志文件的大小.
默认情况下,InnoDB使用两个值,这样您就可以通过将其增加一倍,来让InnoDB获得循环的重做日志空间,以确保交易的持久性.
这同时也优化了对数据库的写入性能.
设置innodb_log_file_size的值是很值得推敲的:如果分配了较大的重做空间,那么对于写入密集型的工作负载来说性能会越好.
但是如果您的系统遭受到断电或其他问题导致崩溃的时候,那么其恢复时间则会越长.
您可能会问:怎么才能知道自己的MySQL性能是否受限于当前的InnoDB日志文件大小呢您可以通过查看未实际使用的重做日志空间大小来判定.
最简单的方法就是查看"Percona监控和管理"的InnoDB指标仪表板.
在下图中,InnoDB的日志文件不够大,使用空间已经屡屡接近于可用的重做日志空间了,如红线所示:因此,您的日志文件应该至少比使用量大20%,从而保持系统处于最佳的性能状态.
max_connections大型应用程序通常需要比默认数量多得多的连接.
不同于其他的变量,如果您没能将该值设置16正确,您就会碰到性能方面的问题.
也就是说,如果连接的数量不足以满足您的应用需求,那么应用程序将根本无法连接到数据库,在用户看来就像宕机了一样.
由此可见,将它设置正确是非常重要的.
对于在多台服务器上运行着具有多个组件的复杂应用来说,您想获知到底需要多少个连接是非常困难的.
幸运的是,MySQL能够在峰值操作时轻易地获悉所用到的连接数量.
通常,您需要确保在应用程序所使用到的最大连接数和可用的最大连接数之间至少有30%的差额.
查看这些数字的一个简单方法是:在"Percona监控和管理"的系统概述界面中查看使用MySQL连接图.
下图显示了一个健康的系统,它有着足够数量的可用额外连接.
还有一点需要记住:如果您的应用程序所创建的连接数量过多,通常会导致数据库运行缓慢.
在这种情况下,您应该在数据库性能上做文章,而不是简单地允许建立更多的连接.
更多的连接会使得潜在的性能问题更加恶化.
将数据库载入内存中近年来,出现了固态硬盘(SSD)方向上的转变.
尽管固态硬盘比传统机械旋臂硬盘快得多,但是它们仍然敌不过将数据存在内存里.
这种差别不仅来自于存储性能本身,还来自于数据库从磁盘或SSD里存取数据时所产生的额外工作.
随着近年来硬件技术的改进,不管您是运行在云端,还是管理着自己的硬件,将数据库载入内存已经变得可行.
更令人振奋的是:您并不需要将整个数据库载入内存以获得其性能优势,您只需要将最频繁访问的数据集放入其中便可.
您可能已经看过一些文章,有介绍将数据库多少比例(如:10%到33%)载入到内存里.
而事实上并不存在着"一刀切"的规律,数据的访问量决定着载入内存所获得的最佳性能的提升程度.
您与其去寻找某个特定的"神奇"数字,不如去检查数据库达到稳定运行状态时的I/O(通常是在它开始运行的几个小时之后).
请查看一下数据的读取,因为如果您的数据库已载入到内存里的话,那么读取会完全结束;而只要有内存可用,写入操作总是会发生的.
下图是"Percona监控和管理"的InnoDB指标仪表板中的InnoDBI/O图:如上图所示,那些峰值高达每秒2,000的I/O操作表明(至少是流量负载的一部分)它们与载入内存中数据库的数据集并不相配.
使用SSD存储17无论您的数据库是否已被载入内存,您都需要使用快速存储来处理写入操作,并且避免在数据库启动后(重启之后)出现性能问题.
这里的快速存储就是指固态硬盘.
一些所谓的"专家"仍在基于成本和可靠性的基础上,主张使用机械旋臂硬盘.
坦率地说,当涉及到数据库操作时,这些建议往往是过时的或是完全错误的.
现如今,固态硬盘的性能已经非常卓越、可靠且价格低廉了.
并非所有的固态硬盘都是同等生产的.
对于数据库服务器来说,您应该选用那些专供服务器工作负载、且能精心呵护数据的SSD.
例如:防止断电损坏的,而避免使用那些专为台式和笔记本电脑设计的商用固态硬盘.
通过NVMe或英特尔Optane技术来直接连接的SSD往往能够提供最佳的性能.
即使远程连接到SAN、NAS或云端的块设备上,固态硬盘也能比机械旋臂硬盘提供更为优越的性能.
横向扩展即使是性能最高的服务器也有局限性.
业界一般用两种方法来进行扩展:纵向和横向.
纵向扩展意味着购买更多的硬件.
这样做不但成本昂贵,而且硬件折旧速度快.
而横向扩展,则在处理负载方面有如下几点优势:您可以从更小型、成本更低的系统中获益.
横向扩展使得系统的线性扩展更方便、更快捷.
由于数据库会横跨增长到多个物理机上,横向扩展在保护数据库的同时,消除了硬件单点故障.
尽管横向扩展有着诸多优势,不过它还是具有一定的局限性.
横向扩展需要数据复制,例如基本的MySQLReplication或是用于数据同步的PerconaXtraDB群集.
但是作为回报,您也会获得更高的性能和可用性.
如果您需要更高级的扩展性,那么请考虑使用MySQL分片(sharding).
另外,您还需要确保连接到群集架构的应用程序可以找到它们所需的数据.
这通常是通过诸如ProxySQL或HAProxy的一些代理服务器和负载平衡器来实现的.
当然,过早地规划横向扩展,会增加分布式数据库的复杂性.
最近发布的MySQL8候选版本已声称自己能够在单一的系统上处理超过200万个简单查询.
追求可视性可视性是系统设计的最佳境界,MySQL也不例外.
一旦完成了MySQL环境的搭建、运行并调优,您千万不要认为已经万事大吉了.
数据库环境既会受到来自系统更改或流量负荷的影响,也会遇到例如流量高峰、应用程序错误以及MySQL自身的各种问题.
为了快速、有效地解决各种问题,您需要建立和实施一些监控机制,从而能获悉数据库环境的状态,并在出现错误时及时分析服务器上的数据.
因此理想情况就是在系统出现问题或是被用户所察觉之前就做到防范于未然.
常用的监测工具有:MySQL企业监控器(EnterpriseMonitor)18Monyog.
具有免费与开源版本的Percona监控和管理(PMM).
这些工具在监控和故障排除方面提供了很好的操作可视性.
随着越来越多的公司在大规模生产环境中使用开源的数据库(特别是MySQL)来管理和服务他们的业务数据,他们需要把工作重心放在保持数据库的调优和运行效率上.
MySQL的确是一款能够提升您的应用程序和网站性能的优秀数据库,当然您需要通过对它进行调整,以满足业务需求,监测、发现并防止任何瓶颈和性能方面的问题.
陈峻(JulianChen),有着十多年的IT项目、企业运维和风险管控的从业经验,日常工作深入系统安全各个环节.
作为CISSP证书持有者,他在各专业杂志上发表了《IT运维的"六脉神剑"》、《律师事务所IT服务管理》和《股票交易网络系统中的安全设计》等论文.
他还持续分享并更新《廉环话》系列博文和各种外文技术翻译,曾被(ISC)2评为第九届亚太区信息安全领袖成就表彰计划的"信息安全践行者"和Future-S中国IT治理和管理的2015年度践行人物.
1911月18日,汤兴在CTO训练营第四季"CTO的格局观"章节上做了"CTO技术性视野"的分享.
从他的分享中,可以了解到作为一个称职的CTO,要清晰地知道自身职责是什么,必备的能力有哪些,以及应该具备怎样的格局与修养等,还要拥有技术视野,进而从视野到决策.
爱奇艺CTO汤兴:道天地将法,《孙子兵法》的管理之道在中国,网络视频发展起步相对较晚,2004年成立的优酷,是我们最早看到的视频网站,2013年与土豆合并,以捍卫双方在视频界的地位.
爱奇艺于2010年成立,作为相对年轻的视频网站,能够在如此激烈的竞争环境中崛起,被大众熟知并认可,在品质、技术等方面,必有诸多值得借鉴之处.
汤兴,中国科技大学数学博士——CTO训练营第四季重量级分享导师;现任爱奇艺CTO,从2012年3月至今,一直任此要职;负责管理产品、技术、运营、渠道四大版块;曾就职英特尔、Google.
在英特尔八年,除销售以外汤兴从事过几乎所有业务;在Google,则聚焦于视频搜索业务及YouTube视频搜索服务的研发;11月18日,汤兴在CTO训练营第四季"CTO的格局观"章节上做了"CTO技术性视野"的分享.
从他的分享中,可以了解到作为一个称职的CTO,要清晰地知道自身职责是什么,必备的能力有哪些,以及应该具备怎样的格局与修养等,还要拥有技术视野,进而从视野到决策.
所有的管理都来源于兵法CTO的职责可以总结为"战略、组织和运营",《孙子兵法》提到想要打赢一场战争需要"道天地将法",而其中的"法"就是今天我们说的"战略、组织和运营".
兵法中提到最多的就是战略,战术永远都是为战略服务的,作为CTO应该做的是在公司不同的发展阶段,做出最适合的技术战略决策与招聘最合适的人员.
对于初创公司CTO而言,首要做的作者:王雪燕来源:51CTO20是明白最终目标、到达目标的方式和现状,以及非常明确技术的发展路径.
就爱奇艺当前五六千职员规模而言,在真正去实施的过程中,完全没有固定套路可言,需要观察整个市场的变化,随时调整自身的技术战略,组织结构,及运营规则.
所谓"兵无常势水无常形"就是这个道理.
如何成为一个成功的CTO懂技术是根本,CTO存在的核心价值是拥有技术性视野.
懂战略是未来,要有长远眼光和部署.
懂商业是基石,知道企业存在的社会价值.
懂管理是动力,和高管团队合作,共同管理技术团队.
CTO的格局,体现在站在最高层次,具备发现问题与解决问题的能力.
格局则可助力看透事物的本质,体现一个人更高层次的价值,CTO不仅自己应该有格局,也应该告知团队人员注重自己的格局.
CTO不是只管技术,还会涉及到产品、运营,商务,在这过程中,修养会起到非常关键的作用.
具体体现在:自重者威.
即自身要有不畏困难的自信,成功完成任务,从而树立威信.
品牌.
这当中要从两方面出发.
对于个人而言,任何时期,都要重视个人行为,打造优质的个人品牌.
于企业来说,最好的品牌宣传,是产品自身的体验,用户认可,从而自带品牌效应.
不迁怒,不贰过.
即中国俗语:"己所不欲勿施于人.
"再者,谨记对团队、对自己,同样的错误不能犯第二次.
CTO要具备对"组织结构适应性"进行改变的能力,垂直与水平两种管理方式的切换要拿捏得当.
招聘时,要从基于体力、智力、能力,过度到看潜力,看应聘者是否具备好奇心、好学、专注执着、洞见的优秀素养,且一定要有正确的动机.
CTO的技术性视野CTO要看得高、看得远、看得透,要看到冰山的下部.
任何事情要看本质,别看现象,看到本质才能做正确的决策.
看得透:了解最新技术和应用场景.
保持对国内外、技术前沿及行业趋势的敏感、热爱的同时对公司的技术储备和路线做到心中有谱,推进技术的创新与落地.
如下图,是科技发展的脉络图很多事情回过头看,感觉很清晰,很简单,但企业发展难点恰恰在于超前布局,在新技术没有普及之前,就要做大量的技术人才储备.
《孙子兵法》中提到:十则围之,五则攻之,意思是我十倍于敌,就实施围歼,五倍于敌就实施进攻,重兵投入打赢这场战争.
CTO一定要知道每一年公司的核心项目是什么需要亲自抓的项目是什么当项目多的时候,不要所有项目的都亲自过问,选两个,全力以赴,把重点项目做成功,再以此为基础辐射周边业务.
看得高:站在公司战略的高度.
CTO要切记站在公司的角度去看问题,制定技术战略,抓住两个最重要的点.
切记,技术团队是帮助公司达成21盈利,解决生存问题,完成最终商业目标,而不是单纯地沉溺于技术高低的误区里.
看得远:提前布局.
爱奇艺是行业内较早布局云计算的公司,约在2012下半年便着手建设.
目前,所有云计算、CDN网络等均为自建,每天带宽30多T.
云计算团队,为整个爱奇艺服务保驾护航,极少出现问题.
还有高峰期达3.
5亿的全网搜索、乐高后台系统、视频社交这些方面,爱奇艺都有业界超前布局.
从视野到决策汤兴负责爱奇艺产品、技术、运营、渠道四大业务,管理近公司一半员工.
从视野到决策,涉及公司、技术与产品,运营三方面.
公司决策:永远记得拓宽你的护城河.
从世界上最厉害的投资人的角度思考公司决策,建立结构性竞争优势.
优质产品、高市场份额,高效的执行和管理都还不构成护城河,还需要:无形资产.
品牌、专利、法律许可等,可间接获得定价权,产生更大的利润.
网络效应.
企业产品或服务的价值随使用人数增加而提高,提高竞争者进入门槛,长期的竞争优势.
转换成本.
用户转换产品的时间、金钱、心理等成本影响着用户的忠诚度与留存.
成本优势.
低成本的流程优势、特有资源、相对较大市场规模是竞争者无法效仿的优势.
作为CTO空降到任何一家公司,都应该围绕用户体验、运营成本、商业变现去解决问题,一定没有错.
技术决策:识别技术S型曲线.
CTO一定要对技术投入做好判断,再适合的时期做适合的投入.
技术刚开始时,跟随;成熟期,重兵压;认准一个趋势,全力以赴.
但要认清楚是真的有前途,还是昙花一现.
产品决策:用波士顿矩阵做取舍.
也就是重要和紧急的区别.
做为CTO应该先做重要且紧急的事情,然后是重要非紧急的事情,然后才是紧急不重要,对于不重要不紧急的事情直接扔掉,不用做.
爱奇艺·技术展示爱奇艺大脑.
大数据、大计算力、优秀的计算模型和应用场景是AI落地的基本要素,缺一不可.
如下图,是爱奇艺大脑.
222014年6月爱奇艺大脑问世,是全球首个基于视频数据理解人类行为的视频大脑.
爱奇艺大脑基于用户、内容和商业三部分数据,智能分析,进而创作内容、服务用户、提升运营效率.
视频社交.
做泡泡社交是用技术手段增加用户粘性和互动,把用户按照喜欢的明星、剧、兴趣进行聚集,某类人可以直接对某一部剧进而评论,对某一个明星打榜.
其实做社交是一件非常困难的事情,面对的资源和阻碍是巨大的.
作为CTO需要亲自挂帅,因为需要公司高层全力以赴的支持和资源的调配.
做社交首先要有效的利用和整合公司的资源,第二要解决用户真实的需求,第三要面对并解决所有相关业务线的质疑.
如何管理三千人的技术队伍管理三千人的技术队伍最重要的三件事情:制度、组织、文化的建设.
企业竞争的初期是价格、产品的竞争,之后是制度、品牌的竞争,而最后的竞争则是文化的竞争.
作为CTO一定要有很清晰的组织结构图,组织结构图代表了如何做垂直和水平管理,如何进行调整.
在互联网公司,组织结构应该随市场环境调整,而不是一成不变.
制度、文化是企业组织建设的根本.
有了好的制度,可以培育出优秀的人才和产品.
而具备吸引力的文化,则是精神动力的源泉,让企业发展稳如泰山.
分享接近尾声时,汤兴表示,读书、健身是最值得花时间的两件事情,原因相信大家都明白.
23灵智优诺CTO许可:AI技术破传统保险推销模式困局许可先生在百度公司从事搜索和智能推荐领域多年,2015年进入金融行业,做金融知识图谱和证券智能投顾,2016年与好友一同创业,成立灵智优诺,担任CTO一职.
灵智优诺是一家通过人工智能技术做保险领域智能投顾的公司,简单说也就是帮助用户去挑选合适的保险产品,节省中间人力成本,完成售卖和服务的整个闭环.
目前,灵智优诺拥有自主研发的语义分析、垂直搜索、个性化推荐、深度学习模型等核心技术,并且结合保险领域知识图谱,解决了传统深度学习对话引擎无法生成包含细粒度语义知识的长句答复的问题,实现了智能对话在保险领域的深度工业级应用.
许可认为,在人工智能领域,国内外差异并不大,机器学习、智能化等在很大程度上依赖于数据,而在数据领域,国内反而更有优势,未来反超国外不失为一种可能.
保险领域的智能投顾,要解决的核心问题,是如何为用户提供良好的在线投资顾问服务,主要包括以下几大方面:一是问题解答,二是产品推荐和产品组合,三是后续的服务支持.
其中,前两个方面技术可发挥的空间更大.
"问题解答环节,采用知识图谱对问题进行挖掘和检索,通过智能对话、深度学习、机器学习和语义理解等模型,进行自动回答;在产品推荐和产品组合方面,灵智优诺有专注于精算模型的团队,通过对用户家庭收入情况、收入来源、职业及其所能承受的风险程度等进行评估,将各类保险产品与模型进行对比分析,从而得出产品推荐结果及产品组合方式.
"灵智优诺CTO许可说.
传统的保险销售,由经销商和代理人驱动,这个过程会面临很多问题.
首先,从用户的角度出发.
第一,经销商和代理人有很强的推销意图,并不时会主动联系用户,这对很多用户来讲是一种打扰;第二,经销商和代理人的知识覆盖面和自身的素质有限,对保险产品的理解以及传递给用户的信息,也会因此受限;第三,为达成交易,经销商和代理人可能存在诸多误导用户的行为.
这是困扰投保用户的三大痛点,用户自身在这个前提下,并不能很清楚的了解哪种产品更适合自己,但也不能完全信赖代理人和经纪人的推荐.
其次,从行业的角度出发,保险公司也存在痛点.
保险公司维护代理人和经纪人团队有很高的成本,负担非常高的保险佣金,管理体系也庞大繁杂,,因此很多保险公司也希望通过技术革新改变这一行业现状.
灵智优诺采用机器辅助人工的方式,完成保险产品的线上销售,这种方式下客服不需要长期培训,而是由机器提供知识和技能的转化,然后对接客户.
译者:查士加来源:51CTO24智能投顾使得保险公司所承担的成本结构发生了变化,同时,与传统代理人相比智能投顾的专业性更强、知识储备更广、产品覆盖面更全,且不会因为代理人的离职或转岗而中断客户服务,全生命周期的服务特性使它能给客户带来更好的用户体验.
此外,对保险公司来说,智能投顾能够帮助其缩短销售环节,避免代理人对保险条款的误导,增强保险环节的可控性,降低投诉量,避免了后续很多理赔的问题.
许可介绍,"灵智优诺有一个统一的平台来负责这些事情,可以做到统一的质量监控和对服务情况的把控,能够在提升保险行业服务水平的同时,提升用户对保险产品和保险类别的接受程度.
"许可的自信源自三个方面:一是灵智优诺有全行业唯一完整的保险领域的知识图谱;二是有非常丰富的智能对话和个性化推荐的积累;三是有丰富的互联网行业的从业经验,并且能把这些经验结合起来形成业务的完整闭环.
灵智优诺聚焦保障类人身险,为用户提供免费咨询服务,一对一量身定做保险方案.
产品承接在微信端,关注微信公众号"灵智优诺",即可发送文字信息开始对话咨询;系统以聊天形式与用户交流,依据用户自身需求横向对比产品,筛选最佳匹配方案,最终完成购买.
许可举例:用户有保险方面的购买需求,但不知道该如何选择,他在网络上看到我们的公众号,和我们的客服聊天,这个过程中客服会了解他的家庭情况,收入来源,以及哪些家庭成员的收入作为保障已有的保障有哪些缺哪些保障需要什么样的保额通过一系列的沟通,来给用户推荐样例产品.
用户看到样例产品之后会有很多问题,比如什么叫返还型产品什么叫消费型产品重疾责任包括哪些疾病投保人豁免是什么意思等等这些问题都会由客服人员在系统的帮助下做出详细解释.
最后,客服人员会根据用户对投保金额、保额范围、保险种类、是否返额等条款细节的偏好重新进行推荐和对比,经过一步步细致的迭代之后,最终确定用户想要购买的产品合集,最后辅助客户下单.
除此之外,在出险和核赔方面,智能投顾也能保障核赔流程的顺畅,符合双方的标准和利益,使之形成一个完整的业务流程的闭环.
许可提到,在当前整个保险行业的环境下,用保险知识图谱结合AI技术做保险咨询及服务这件事,灵智优诺是唯一一家,有非常好的先发优势.
由于保险属于重决策服务,其问题的复杂性和离散性更高,因此存在很大的技术挑战,这些挑战来自于对话过程当中的几项核心指标:一是对话满意度,二是反馈速度,三是客服承接能力.
这些核心指标均可以由系统来改善,系统给出的自动回复越好,客服的承接能力越高,客户体验也更好,这是一个技术持续优化的过程.
目前,灵智优诺已实现70%的机器问题覆盖率,30%的自动回复率.
灵智优诺是微软加速器·北京十期校友企业,也是加速器唯一的保险科技校友,同时还是微软云在中国合作的第一家保险科技企业.
入选加速器后,灵智优诺把团队搬到了位于微软亚太研发集团总部的加速器办公室.
在加速器的四个月,业务增长迅速,入驻不久就完成了A轮融资.
未来,灵智优诺将不断提升自身技术水平,实现用技术改变保险推销模式,为中国消费者提供需求导向的高品质全流程个人保险服务的使命.
25如何在两台服务器之间安全迁移MySQL数据库迁移MySQL数据库通常只需要几个简单的步骤,但是由于您要转移的数据量可能比较庞大,因此一般耗时也会比较长.
下面的步骤将指导您如何从旧的服务器上导出MySQL数据库,对它进行安全加固;然后将其复制并导入到新的服务器上,以保证数据的完整.
将MySQL数据库导出至转储文件(dumpfile)Oracle提供了一个名为mysqldump的工具,允许您轻松地将数据库结构和其数据导出到一个SQL的转储文件.
您可以使用如下的命令:1.
mysqldump-uroot-p--opt[databasename]>[databasename].
sql不过,请注意如下几点:我们可以使用--single-transaction的标志,以避免数据库在导出数据的过程中被锁死.
这样能够在将数据导出到转储文件的同时,您仍可继续在旧的数据库上更新数据.
不过请注意,那些在导出进程已经开始之后被更新的数据,是不会被导入转储文件之中的.
在运行该命令之前,请务必将[databasename]替换成您的实际数据库名称.
请输入您自己的用户名和相对应的密码,并确保该用户具有备份数据库所需的权限.
安全加固备份文件在大多数情况下,数据是一家企业的最重要的资产.
因此,我们不希望数据库的各种备份被暴露在不受保护的服务器上,因为这样有可能会造成错误地泄露,甚至会出现被黑客窃取等更为糟糕的状况.
译者:陈峻编译来源:51CTO26因此,通常您可以尝试的做法是:压缩、加密文件,然后删除原文件.
在Linux操作系统上,请使用以下的命令对已压缩文件进行加密:1.
zip--encryptdump.
zipdb.
sql在压缩开始之前,系统将提示您输入密码.
传输备份文件至此,我们已经获得了一个加密的转储文件.
下面让我们通过网络使用SCP命令,将其传输到新的服务器上:1.
scp/path/to/source-fileuser@host:/path/to/destination-folder/将MySQL转储导入新服务器通过上面一步,我们已将备份文件传到了新的服务器上,下面让我们来进行解密和提取:1.
unzip-Pyour-passworddump.
zip为了存储空间和安全方面的原因,一旦文件导入成功,请记得删除其对应的转储文件.
您可以使用以下的命令来导入文件:1.
mysql-uroot-pnewdatabase插件->"可用插件".
请选择如下的插件(如果您喜欢,则可以随意浏览并添加更多的插件):内存池可视的GC终止应用程序b.
用VisualVM分析运行的代码(1)现在运行您的Java应用程序.
(2)将VisualVM连接到您的应用程序.
(3)执行那些容易导致性能变缓的操作.
(4)检查"监控"和"内存池"选项卡.
如果您看到在"监视器"选项卡中内存显示增加的话,那就按下"执行GC"(垃圾收集),并监视内存的使用情况是否有所减少.
(5)如果并不减少的话,那么就切换到"内存池"选项卡,并检查"OldGen"(最开始的对象会停留在"Eden"中,然后通过Survivor空间进行过渡,比较旧的对象会被移到"OldGen"池中.
如果出现泄漏,则会出现在Old-Gen池里.
)38(6)现在返回去,并注释掉程序代码的大部分,从而定位到应用程序开始变慢的位置.
(7)重复上述过程,直到应用程序完全不再有泄漏的发生.
(8)然后,经过反复迭代来重新启用代码的各个部分,并检查VisualVM的内存使用情况.
一旦您的应用程序再次开始泄漏,则马上进入导致内存泄漏的该函数方法,从而进一步缩小代码的考察范围.
(9)最终,您将能够把问题缩小到具体某一个类,甚至某一个单一的方法上.
请仔细验证所有文件的缓冲区是否已被关闭,而HashMap是否被正确的使用了.
五、标准化您的代码有时候会很难确定您那"金光闪闪"的新代码是否真的会比旧代码更好.
面对这种情况下,您需要去标准化应用程序的性能.
您可以将下面的这段代码插入到任何您认为适当的位置,以获取有关运行时间和垃圾收集次数的相关信息:1.
longstart=System.
currentTimeMillis();2.
.
.
3.
//yourcode4.
.
.
5.
longend=System.
currentTimeMillis();6.
System.
out.
println("Runtime:"+Long.
toString(end-start));7.
System.
out.
println(printGCStats());8.
publicstaticStringprintGCStats(){9.
longtotalGarbageCollections=0;10.
longgarbageCollectionTime=0;11.
for(GarbageCollectorMXBeangc:ManagementFactory.
getGarbageCollectorMXBeans()){12.
longcount=gc.
getCollectionCount();13.
if(count>=0){14.
totalGarbageCollections+=count;15.
}16.
longtime=gc.
getCollectionTime();17.
if(time>=0){18.
garbageCollectionTime+=time;19.
}20.
}21.
return"GarbageCollections:"+totalGarbageCollections+"n"+22.
"GarbageCollectionTime(ms):"+garbageCollectionTime;23.
}特别提醒一下:如果您是在主Eclipse中进行测试的话,我建议去测试一个"干净"的子Eclipse;或者是在您的Eclipse的一些"干净"实例中进行.
因为这样的话,其他各种插件是不会对标准的耗时产生影响的.
六、附加说明:堆转储我个人使用的并不多,但有些人比较热衷于"39堆转储".
您可以在任何时候采取堆转储,然后查看有多少类的实例被打开,以及它们使用了多大的空间.
您可以通过双击它们来查看具体的内容.
如果您想获悉自己的应用程序产生了多少个对象的话,这种方法会非常有用.
七、我的应用并没有泄漏,可为何还是很慢当然也存在着一种可能性:就算您的代码中并没有任何的泄漏,它仍然运行缓慢.
如果出现这种情况的话,您就必须进行代码分析了.
不过,代码分析已经超出了本文所涉及的范围.
这里推荐一个很好的YouTube视频,它讲解了如何去使用免费和付费的分析器来对Eclipse进行分析,请参见:https://www.
youtube.
com/watchv=YCC-CpTE2LU.
八、还能看哪些至此您可以潜下心来,花上一到两天的时间去修复您的内存泄漏问题了.
在此过程中,如果您仍碰到麻烦的话,请参考如下的链接:捕捉内存泄漏:https://www.
toptal.
com/java/hunting-memory-leaks-in-java内部类的内存泄漏问题:https://blogs.
oracle.
com/olaf/entry/memory_leaks_made_easy浏览Oracle的JVMGC指南:www.
oracle.
com/technetwork/java/javase/gc-tuning-6-140523.
html40挨踢部落故事汇(33)全栈工程师的自我修炼史亚风是一个全栈工程师,5年的开发经验,积累了很多idea,这些idea从传统的JavaWeb到Golang、SVM、hadoop、UIAutomation都有涉及,对每一件事情,他都有自己的思考,剑走偏锋.
另外亚风是一位兼职的魔术师,在省赛国赛等魔术大赛中屡屡获奖,工作之余也经常参加演出,也许是魔术打开了亚风的灵感,如下文中提到的FoolQQ,让很多开发者看完源码后大呼很神奇.
零基础自学编程独立建站亚风从2013年7月参加工作开始,一晃,快五个年头了.
他初次接触编程是在2010年的时候,大一上学期刚结束,春节,大家忙着串亲戚、走朋友.
在上海创业的叔叔回来过年,吃过年夜饭,照例是一次深入的家庭谈话.
寒暄过后,叔叔提出想建个网站,一开始亚风是拒绝的,毕竟才大一,只学过C语言,没接触过Web,当时连"Web"这个词都没听过.
但是看着叔叔焦急的样子,亚风还是硬着头皮答应下来.
他做事是个激进派,直到现在也是这样,别人交代的事情总想尽快落实.
当时他家里没有网,第二天就去了附近的网吧,搜搜怎样建个网站.
幸好亚风找了一套视频,讲的HTML/CSS/JS基础.
现在看史亚风高级工程师41来当时的路很正确,对初学者而言看视频跟着做,很容易成功并一步一步建立信心.
学了一周,依葫芦画瓢地把网站的几个主要页面做出来了,满满成就感.
当然,后面花了一些时间磨合需求,期间也了解了绕不过去的兼容性问题.
但是下一个问题是,后台程序怎么办呢很巧,视频后面是JavaWeb开发的内容,从此,也让他走上了Java工程师的道路.
现在他回想起来真的很神奇,如果视频后面是PHP他现在大概就是PHP工程师了吧.
从未接触过Java的亚风,要从Java基础语法学到JSP,然后是SQL.
周期不短,没有之前那么顺,他叔叔也在催,说实话很多东西似懂非懂,亚风也就学了20多天,还是硬生生把一个后台程序做出来了.
又过了一个学期,暑假,直接去了叔叔那儿,基于用友的ERP、CRM做一些软件的二次开发,在这个过程中他熟悉了Java体系,学习了Spring、MyBatis、Maven,前端又系统的学了一遍,然后是jQuery等等.
接下来每逢寒暑假他都会去叔叔那儿帮忙,在这个过程中不断完善自己,也为后面的就业积累了实战经验.
海量大报文数据持久化毕业,亚风来到了一家信息领域技术研究公司,接触的第一个项目就是一个高并发下大报文数据的持久化问题.
基于TT/TC做的,但是压测性能一直上不去.
客户要求单节点18KB报文持久化达到5000TPS,他在数据库和代码优化后只达到单节点2100TPS,不过很快事情有了转机,一次偶然的实验,亚风单独压测TC,发现不经过TT并发写入多个TC文件可以达到5000TPS,而之前使用TT访问TC的方式只能基于一个TC文件,结合应用"写多读少"的特点,并考虑分布式架构,可以设计出如下架构:如图,每台server上有一个基于socket的readserver供Web读取,而写的部分并发写入多个TC文件中.
现在需要解决的是,你需要知道某个报文存在哪儿了,也就是在哪台server的哪个文件中,很显然只需要在数据库中保存server所在的IP信息和文件的名称就ok了,这个数据库就像hdfs中的namenode一样.
数据表应该至少包含三个字段,分别是IP、TC文件名称、报文的key.
这个案例他还记得很清楚,毕竟当时花了很长时间做实验,在不改变原有系统架构的情况下,这是个好办法.
另外TC真的很强劲而且稳定.
基于SVM的验证码识别2014年,亚风出差北京,待了半年多.
给中国电信集团做内部门户项目,当时要做一个手机门户,在和外围多个系统谈接口,进展缓慢.
于是他自己提出用爬虫的方式试试,短短一周完成了很多接口,积累了不少爬虫经验,不过很多系统都用到了验证码,因此这是一个绕不过去的关.
亚风基于像素比较和SVM做了识别,效果不错,在人工智能在中国火起来之前接触了这些,还是很不错的.
为了让读者有个感性的认识,举个例子,你经常看到形形色色的验证码,它们有不同的颜色,甚至会扭曲的很严重.
以数字"8"为例42计算机怎么分别这是8而不是6或者7呢我们把"8"放大,可以看到图像是由一个一个色块组成的,每个色块都有一个颜色值,再设置一个阈值,大于这个阈值的色块设置成黑色,反之设置成白色,就得到了一个黑白的数字"8",这叫二值化,接下来从左到右、自上而下,白色的标记为0,黑色的标记为1,得到一个二进制的数组,这就是SVM的输入,SVM会自动根据这些数据构建多维空间,根据距离判断数字到底是几.
这些数字组成多维空间的坐标,这个坐标可以看做一个点,通过很多张"8"图片的训练,会形成一个"8"组成的点群,看上去就像银河系的星河.
显然,判断某颗星球属于银河系,它必然在银河系划分的范围之内,否则可能是别的星系.
基于单例对象的定制Ajax框架Fela日子平静的来到了2015,亚风公司各产品的UI也开始基于UED统一设计,摒弃了之前Extjs的厚重,这带来了一个问题,使用最多的分页表格页面需要结合UED提供的CSS重新实现,如果放手不管,每个人都会有自己的实现,又因为样式和网上的差别大,无法直接套用某个Ajax框架,因此只能定制.
需要一个轻量级的Ajax框架,满足分页、查询、各种事件支持、后台数据解析、表单数据打包、以及尽可能的简单,Fela应运而生.
Fela基于单例对象,和传统Ajax框架不同,单例对象的使用使得Fela更轻量级,在JavaScript中单例有很多优势,诸如更小的内存开销,加载即创建,方便覆盖重写,对象结构清晰以及易于和JSON互转等;但是这样做也带来一些问题,比如一个页面里只有一个对象,为此,亚风使用克隆代替new来生成新的对象,避免了初始化大对象时构造方法中的耦合,也使得使用者对大对象得以按需取用,书写结构清晰的代码.
他设计了别名和方法链,力求让一个传统的表格数据页面、查询框等等的开发尽可能简单.
编写Fela只用了三天时间,不到500行的代码小而精巧,公司的几个产品基于此开发,基本做一个页面前台只需要简单的配置,缩短了开发周期.
最重要的是,Fela通过有限的API约束了代码,使得每个人写出来的代码看上去都差不多.
它的源码在这>>搭载黑科技的表单工具——如意2016年起,亚风开始完善自己的理论,工作之余挤出时间看了不少书籍,JVM原理、并发编程、TCP/IP原理等等,也做了一些hadoop技术栈的学习,很多东西之前知道,但大都太碎片化,不成体系,读书让他理顺了他们的关系.
在IT行业,知道的越多,就越发觉得自己还很渺小,反倒是读书少时,更容易自满.
根据项目要求,这一年他花了四分之一的时间独立做了一个表单平台——如意.
如意相对亚风以前的作品可谓是大制作,为此他还拍摄了一部宣传片.
如意有很多特性,全控件支持、首创可视化业务逻辑设计、多数据源、多租户、在线JS编程等等.
2017年10月份,亚风用这个项目参加了51CTO开发者大赛,很幸运,如意已经入围了,希望后面它能43取得好成绩.
这一年,他被任命为公司软件实验室的执行主任,负责创新型项目的研发、以及疑难问题的解决.
让计算机识别自己!
亚风参与了很多新兴项目,如GIS、声纹时长识别、问答机器人等等.
在GIS项目的开发过程中他提出了一个基于让计算机通过图像识别来操作自己的屏幕的方法论,这就好像在计算机前面摆了个镜子,这样它就可以看到自己,从而操作自己.
这为项目节省了不少人工的工作量,主要用于自动化的批量几何图形绘制.
后来把它应用在操作QQ上,由于目前读写QQ的机器人都是基于爬虫分析SmartQQ报文来实现的,然而SmartQQ腾讯已经不再维护,其HTTP服务端经常不可用,且经常需要不定时的重启,于是基于图像识别,亚风开源了FoolQQ.
由于计算机给自己截图的输出图像是高清的,意味着开发者可以直接基于像素比对来实现图像比对.
判断一个图像中是否包含某个子图像就会像下面这样简单:1.
publicstaticbooleanisEqual(intx,inty,BufferedImageimage,BufferedImagepoint){2.
3.
intpointW=point.
getWidth();4.
intpointY=point.
getHeight();5.
for(intm=0;mIT云服务器-胡华秋-北京:用lvs集群.
2>测试-Gavin-北京:DNS会分开处理,先从DNS做均衡处理,后面的一层一层做均衡.
是这个结构,我把页面的逻辑放在外面,label就没作用了,我把逻辑放到plusready里label可以点了,逻辑就没用了求指教.
C#-Po-成都:PC没有plusready手机上试试.
mui.
ajax不是可跨域的么1>广州-前端-黄小文:你是app还是M站在app里面才可以跨域吧.
2>C#-Po-成都:手机上才可以,电脑上还是用的普通ajax.
45C#-Po-成都:跨域问题吧.
两种方法··如果是MUI的话,用MUI的那个AJAX方法直接请求,另外就是改服务端代码,允许跨域就好了.
你也可以采用JSONP之类来解决·,不过比较直接的就这个.
php代码里配置了header('Access-Control-Allow-Origin','*');问大家一个问题,路由器交换机都正常,网线这些都正常,但是ping内网网关都掉包,这个是什么原因,会不会跟回路有关系布局很简单,就外网进来,连路由器交换机,公司为了节约,居然只换一部分,另外一部分不换,网线要留两根.
1>安徽-Coeus-PHP:确定有没有回路了吗看下是不是有同一交换机2条线插在了路由器上,如果是个别电脑有问题,检查一下ARP,我之前局域网ARP,公司电脑一半都有问题.
2>运维-当那一天来临-深圳:电脑是自动获取的IP地址,还是手动IP地址.
3>泉州-某真-网络安全维护:看你有没dhcp,或者连接外网的二层,你没把具体的问题方案给我,我也是不晓得是什么问题,或许你手动设置IP和DNS试试,如果还有其他问题再问我吧.
4>网络-广州-天涯:看看水晶头两头接触是不是很好,若不行重做水晶头.
5>Linux&oracle-S.
H.
I-成都:先排查交换机上面是否学习到你主机的Mac,如果学习到了,请在检查下交换机对应端口上面是否有做Mac绑定,如果学习到了Mac并且也没有做Mac绑定,请检查下是交换机的access端口是否有打VLAN,还有trunk口是否允许此VLAN通过,顺便排查下你的交换机是否路由器连接正常.
明明传到jsp了,为啥不显示我把bean存到request里转发到jsp页面,然后用EL在jsp里显示,用谷歌的插件,明明显示能获取到,到了jsp页面就是不显示.
用${}都打印不出来,可是按理说,返回的数据中有东西,怎么会打印不出来.
1>Java+李赛+郑州:页面的EL有问题没在页面打印一下bean,看看有没有.
2>Java—小刘—长沙:设置没有.
批量插入后怎么获取影响的行数id,为什么只能返回第一个Linux&oracle-S.
H.
I-成都:是关于数据库的么如果是的话,在数据字典里面试着找下dif的表,ORACLE可以试着找下USER_COMPARISON_ROW_DIF这个表.
46
hostkvm在2021年3月新上线洛杉矶新VPS业务,强制三网接入中国联通优化线路,是当前中美之间性价比最高、最火热的线路之一,性价比高、速度非常好,接近联通AS9929和电信AS4809的效果,带宽充裕,晚高峰也不爆炸。 官方网站:https://hostkvm.com 全场优惠码:2021(全场通用八折,终身码,长期) 美国 US-Plan0【三网联通优化线路】 内存:1G CPU:...
ttcloud怎么样?ttcloud是一家海外服务器厂商,运营服务器已经有10年时间,公司注册地址在香港地区,业务范围包括服务器托管,机柜托管,独立服务器等在内的多种服务。我们后台工单支持英文和中文服务。TTcloud最近推出了新上架的日本独立服务器促销活动,价格 $70/月起,季付送10Mbps带宽。也可以跟进客户的需求进行各种DIY定制。点击进入:ttcloud官方网站地址TTcloud拥有自...
捷锐数据官网商家介绍捷锐数据怎么样?捷锐数据好不好?捷锐数据是成立于2018年一家国人IDC商家,早期其主营虚拟主机CDN,现在主要有香港云服、国内物理机、腾讯轻量云代理、阿里轻量云代理,自营香港为CN2+BGP线路,采用KVM虚拟化而且单IP提供10G流量清洗并且免费配备天机盾可达到屏蔽UDP以及无视CC效果。这次捷锐数据给大家带来的活动是香港云促销,总共放量40台点击进入捷锐数据官网优惠活动内...
无线搜索为你推荐
万联集成吊顶软件(三维版)流量支付宝publicationethics.org支持ipad张女士苹果5photoshop技术ps几大关键技术?iphone连不上wifi苹果iphone6/plus wifi连接不上怎么办canvas2html5创建两个canvas后,怎么回到第一个canvaschromeframe我的Chrome Frame为什么不能使用?phpemptyphp中 isset函数有什么功能
免费网站空间申请 广州主机租用 工信部域名备案 中国万网域名 过期域名抢注 webhostingpad 鲨鱼机 debian源 韩国名字大全 谁的qq空间最好看 台湾谷歌 linux使用教程 申请网站 789 php服务器 登陆qq空间 酷锐 塔式服务器 hosting so域名 更多