腾讯十大最受欢迎的开源项目!
高性能通用 key-value 组件
MMKV 原理
内存准备
通过 mmap 内存映射文件,提供一段可供随时写入的内存块,App 只管往里面写数据,由操作系统负责将内存回写到文件,不必担心 crash 导致数据丢失。数据组织
数据序列化方面我们选用 protobuf 协议,pb 在性能和空间占用上都有不错的表现。写入优化
考虑到主要使用场景是频繁地进行写入更新,我们需要有增量更新的能力。我们考虑将增量 kv 对象序列化后,append 到内存末尾。空间增长
使用 append 实现增量更新带来了一个新的问题,就是不断 append 的话,文件大小会增长得不可控。我们需要在性能和空间上做个折中。
项目地址
开源地址:https://github.com/Tencent/MMKV
APIJSON
APIJSON 是一种专为 API 而生的 JSON 网络传输协议 以及 基于这套协议实现的 ORM 库。
为 简单的增删改查、复杂的查询、简单的事务操作 提供了完全自动化的万能 API。
适合中小型前后端分离的项目,尤其是 BaaS、Serverless、互联网创业项目和企业自用项目。
对于前端
不用再向后端催接口、求文档
数据和结构完全定制,要啥有啥
看请求知结果,所求即所得
可一次获取任何数据、任何结构
能去除重复数据,节省流量提高速度
对于后端
提供通用接口,大部分 API 不用再写
自动生成文档,不用再编写和维护
自动校验权限、自动管理版本、自动防 SQL 注入
开放 API 无需划分版本,始终保持兼容
支持增删改查、模糊搜索、正则匹配、远程函数等
项目地址
github地址:https://github.com/Tencent/APIJSON
跨平台跨业务的终端基础组件
comm:可以独立使用的公共库,包括 socket、线程、消息队列、协程等; xlog:高可靠性高性能的运行期日志组件; SDT:网络诊断组件; STN:信令分发网络模块,也是 Mars 最主要的部分。
项目地址
开源地址:https://github.com/Tencent/Mars
高性能神经网络前向计算框架
ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。ncnn 目前已在腾讯多款应用中使用,如 QQ,Qzone,微信,天天P图等。
功能概述
支持卷积神经网络,支持多输入和多分支结构,可计算部分分支
无任何第三方库依赖,不依赖 BLAS/NNPACK 等计算框架
纯 C++ 实现,跨平台,支持 android ios 等
ARM NEON 汇编级良心优化,计算速度极快
精细的内存管理和数据结构设计,内存占用极低
支持多核并行计算加速,ARM big.LITTLE cpu 调度优化
支持基于全新低消耗的 vulkan api GPU 加速
整体库体积小于 700K,并可轻松精简到小于 300K
项目地址
Android热补丁解决方案
gradle编译插件: tinker-patch-gradle-plugin 核心sdk库: tinker-android-lib 非gradle编译用户的命令行版本: tinker-patch-cli.jar
项目地址
c/c++协程库
libco是微信后台大规模使用的c/c++协程库,2013年至今稳定运行在微信后台的数万台机器上。
libco通过仅有的几个函数接口 co_create/co_resume/co_yield 再配合 co_poll,可以支持同步或者异步的写法,如线程库一样轻松。同时库里面提供了socket族函数的hook,使得后台逻辑服务几乎不用修改逻辑代码就可以完成异步化改造。
libco的特性
无需侵入业务逻辑,把多进程、多线程服务改造成协程服务,并发能力得到百倍提升; 支持CGI框架,轻松构建web服务(New); 支持gethostbyname、mysqlclient、ssl等常用第三库(New); 可选的共享栈模式,单机轻松接入千万连接(New); 完善简洁的协程编程接口 类pthread接口设计,通过co_create、co_resume等简单清晰接口即可完成协程的创建与恢复; __thread的协程私有变量、协程间通信的协程信号量co_signal (New); 语言级别的lambda实现,结合协程原地编写并执行后台异步任务 (New); 基于epoll/kqueue实现的小而轻的网络框架,基于时间轮盘实现的高性能定时器;
项目地址
开源地址:https://github.com/Tencent/libco
Android插件框架
零反射无Hack实现插件技术:从理论上就已经确定无需对任何系统做兼容开发,更无任何隐藏API调用,和Google限制非公开SDK接口访问的策略完全不冲突。
项目地址
github地址:https://github.com/Tencent/Shadow
新生的跨端开发框架
Hippy 是一个新生的跨端开发框架,目标是使开发者可以只写一套代码就直接运行于三个平台(iOS、Android 和 Web)。Hippy 的设计是面向传统 Web 开发者的,特别是之前有过 React Native 和 Vue 的开发者用起来会更为顺手,Hippy 致力于让前端开发跨端 App 更加容易。
到目前为止,腾讯内已经有了27款流行 App 在使用 Hippy 框架,包括手机QQ、手机QQ浏览器、腾讯视频App,QQ音乐App等,每日触达数亿用户。
特征
为传统 Web 前端设计,官方支持
React
和Vue
两种主流前端框架。不同的平台保持了相同的接口。
通过 JS 引擎 binding 模式实现的前终端通讯,具备超强性能。
提供了高性能的可复用列表。
皆可平滑迁移到 Web 浏览器。
完整支持 Flex 的布局引擎。
项目地址
github地址:https://github.com/Tencent/Hippy
小程序支持组件化开发的框架
特性:
类 Vue 开发风格 支持自定义组件开发 支持引入 NPM 包 支持 Promise 支持 ES2015+ 特性,如 Async Functions 支持多种编译器,Less/Sass/Stylus/PostCSS、Babel/Typescript、Pug 支持多种插件处理,文件压缩,图片压缩,内容替换等 支持 Sourcemap,ESLint 等 小程序细节优化,如请求列队,事件优化等
项目地址
物联网领域开发的实时操作系统
TencentOS tiny整体架构
TencentOS tiny 主体架构图,从下到上主要包括: