本文主要讲述了应对复杂性的一些原则和经验,通过实际案例解构设计思想,个人认为好的设计是体现在「职责分离」、「抽象分层」和「变化扩展」上,在类的结构设计上尤其要花心思去想,如「变与不变分离」、「配置域与执行域分离」、「查询与命令分离」。
语音识别技术,是将语音信号转换为文本内容的技术。目前比较流行的语音识别技术主要有两种。一种是基于Kaldi的传统语音识别技术,另一种是目前流行的基于深度学习模型的端到端语音识别技术。Kaldi是一种大而全的语音识别处理框架,集成了数据预处理、特征提取、声学模型建模、语言模型建模、解码等,识别效果上能够满足大多数的语音识别场景。但是Kaldi是自成一体的框架,没有现在流行的pytorch、tensorflow框架的支持,需要开发者自行开发能应用到生产环境中的服务。基于深度学习模型的端到端语音识别框架是指将语音信号直接输入到深度学习模型中,通过端到端的方式进行语音识别,无需使用传统的声学模型和语言模型,常见的基于深度学习的端到端语音识别框架有很多,比如EspNet,WeNet等,这类语音识别框架有更通用的模型训练和部署框架支持,有着更好的识别性能和识别效果。
G6VP 是由蚂蚁集团 AntV 图可视化小组开源的图可视化与分析平台。用户可以在 G6VP 中连接自己的数据,包括本地文件上传,或多种图数据库,并组装 G6VP 提供的丰富图可视化与分析资产,进行数据分析,或设计和开发出自己的图可视分析产品,嵌入到自己的系统当中。
互联网蓬勃发展的今天是流量为王的时代,但随着流量红利逐渐消失,获客成本的日益增高,用户留存成为各大互联网公司的重点关注问题,其中流失用户的召回在当今的流量红海市场中显得尤为关键,为此,基于大数据和机器学习的智能营销技术应用而生。 携程火车票业务每周都会有短信营销活动,旨在通过对近期未下单的老客发送短信将其召回,促进复购,提升用户粘性(业务流程如图 1 所示);原有业务策略是基于规则的方式随机从满足条件的用户池中选择一部分进行短信投放,针对该方法过于粗放、召回效果不佳、短信发送 ROI 不高的问题,我们分阶段提出基于 Response Model 的转化率预估模型、基于 Uplift Model 的短信敏感度预估模型,逐一对问题进行更科学的定义、拆解和优化。
目前我们团队小程序是使用 Taro 跨端方案 React 框架进行开发,基于现有样式方案,在编译打包后会产生大量的样式代码冗余,在项目编译后的产物中占有较大比例。
目前字节 Android 的一些超大型项目均从原来的多仓二进制的研发模式切换到了 Monorepo 全源码,并在研发效能方面取得了较大的收益。关于 Monorepo 全源码模式下的一些技术挑战及解决方案后续会有文章单独阐述。在全源码改造的过程中,作为 build 方向的基建团队,我们也不断克服了很多 Gradle 生态的问题与挑战,对构建系统方面有了更进一步的理解。 提到超大型仓库的 Monorepo,就不得不提到 Bazel 构建系统。Google 内部使用 Bazel 作为超大仓(TB 级别)的构建系统,足以证明 Bazel 构建系统优异的性能表现。目前字节内服务端、iOS 端均采用 Bazel 作为构建系统来演进 Monorepo,业界关于 Bazel 的原理文章也很多,但大部分都围绕在工程改造方面或者在单一阐述 Bazel 的设计。
本文主要讲述企业微信大规模组织架构(后文简称为大架构)的性能优化过程。分成两部分讲述,第一部分是短线迭代的优化,主要是并发性能的优化。第二部分是长线迭代的优化,主要是从业务模式上做了根本性优化。
随着云计算需求愈发多样且复杂,定制化程度日益加深。在这种大背景下,硬件供应商已经在客户端计算市场,引入了平衡功耗与性能的异构计算架构,在 CPU 体系结构中,为人津津乐道的是 ARM 指令集设计下的大小核架构。下面我们跟着腾讯云工程师的分享,详细了解 Hybrid 架构是怎么诞生的吧。欢迎围观~