翻译:使用 Semgrep 进行热点代码评审
2022-05-18 00:40:32共享内存并发路线图
2022-03-15 14:02:51Shared Memory Concurrency Roadmap
过去很多年, 单核处理器性能基本沿摩尔定律的预测不断提速. 然而, 设计上越来越复杂, 也越来越接近物理极限, 引起了生产成本和功耗的增大, 性价比降低. 2005年前后, CPU制造商, 开始从原来提升单核处理器的ILP(instruction-level parallelism), 转向在单个芯片上增加核数, 挖掘multicore processor的性能[1].
目前, 市面上, 商用廉价或高端服务器, 一般都采用shared memory multicore multiprocessor. 高端服务器有几十~几百core, 几百GB甚至上TB的内存. 例如: Intel® Xeon® Processor E7-8894 v4支持8 socket * 24 core, 3.07TB内存[2]. 服务器提供了强大处理的能力, 可将系统dataset(比如in-memory database)可以全驻于内存, 采用multi-threaded编程, 共享地址空间, 提升计算性能[3][4].
shared memory concurrency涉及三个方面: parallelism, performance和correctnesss.
阿里XQUIC:标准QUIC实现自研之路
2022-01-08 03:20:39为什么越来越多的团队投入QUIC协议自研实现?来自阿里巴巴淘系技术的刘彦梅的投稿很好的解释了背后的原因——提供更好的灵活性。同时,遵守标准的IETF QUIC也让研发投入能产生长期回报。刘彦梅介绍了XQUIC的前生今世,以及未来的开源计划。为什么越来越多的团队投入QUIC协议自研实现?来自阿里巴巴淘系技术的刘彦梅的投稿很好的解释了背后的原因——提供更好的灵活性。同时,遵守标准的IETF QUIC也让研发投入能产生长期回报。刘彦梅介绍了XQUIC的前生今世,以及未来的开源计划。为什么越来越多的团队投入QUIC协议自研实现?来自阿里巴巴淘系技术的刘彦梅的投稿很好的解释了背后的原因——提供更好的灵活性。同时,遵守标准的IETF QUIC也让研发投入能产生长期回报。刘彦梅介绍了XQUIC的前生今世,以及未来的开源计划。
为什么越来越多的团队投入QUIC协议自研实现?来自阿里巴巴淘系技术的刘彦梅的投稿很好的解释了背后的原因——提供更好的灵活性。同时,遵守标准的IETF QUIC也让研发投入能产生长期回报。刘彦梅介绍了XQUIC的前生今世,以及未来的开源计划。
XQUIC是阿里巴巴淘系架构团队自研的IETF QUIC标准化协议库实现,在手机淘宝上进行了广泛的应用,并在多个不同类型的业务场景下取得明显的效果提升,为手机淘宝APP的用户带来丝般顺滑的网络体验:
-
在RPC请求场景,网络耗时降低15%
-
在直播高峰期场景,卡顿率降低30%、秒开率提升2%
-
在短视频场景,卡顿率降低20%
从以上提升效果可以看出,对QUIC的一个常见认知谬误:“QUIC只对弱网场景有优化提升”是不准确的。实际上QUIC对于整体网络体验有普遍提升,弱网场景由于基线较低、提升空间更显著。此外,在5G推广初期,基站部署不够密集的情况下,如何保证稳定有效带宽速率,是未来2-3年内手机视频应用将面临的重大挑战,而我们研发的MPQUIC将为这些挑战提供有效的解决方案。
本文将会重点介绍XQUIC的设计原理,面向业务场景的网络传输优化,以及面向5G的Multipath QUIC技术(多路径QUIC)。
弱网不弱-TQUIC助力业务提速30%
2021-11-26 11:41:19腾讯核心业务用户登录耗时降低30%,下载场景500ms内请求成功率从HTTPS的60%提升到90%,腾讯的移动端APP在弱网、跨网场景下取得媲美正常网络的用户体验。这是腾讯网关sTGW团队打造的TQUIC网络协议栈在实时通信、音视频、在线游戏、在线广告等多个腾讯业务落地取得的成果。
TQUIC基于下一代互联网传输协议HTTP3/QUIC深度优化,日均请求量级突破千亿次,在腾讯云CLB、CDN开放云客户使用。本文重点分享了sTGW团队在协议栈基础能力、私有协议、明文传输等功能研发经验,并且针对弱网场景,分享腾讯如何基于0-RTT握手、连接迁移、实时传输等能力帮助业务用户体验提升。
程序员眼中最有价值的10条开发经验
2021-08-22 10:33:44到现在,我已经做了超过 21 年开发,可以说,我生命中超过一半的时间都在编程,那既是我的职业,也成了我的习惯。
下面是我在开发过程中学到的 10 条最有价值的经验。
1
你永远不可能什么都知道
尤其是在开始的时候,我以为我什么都能学会,在开发生涯的大部分时间里,我都是这样想的。但是,每次我学了什么新东西,就打开了一个全新的世界,里面有不同的概念和技术。
那似乎很有吸引力,你很愿意尝试,希望把什么都学会,但这是一个没有终点的旅程。如果要学的话,总是有其他的库、框架以及其他很酷的东西可以学。
因为似乎永远无法达成自己的目标,所以最终你的热情会慢慢冷却。最好是立足于你最擅长的东西,然后因需而学,即在真正需要的时候才学习新东西。这可以让你保持清醒,维持学习的动力。
你还可以把这一点应用在任何其他的领域。不是什么都知道才能达成预期的结果。利用这一点来打造自己的优势,在需要的时候学习。
国外机器人实验室的开源项目
2021-05-28 02:52:12这里编辑文章摘要...
超文本传输协议版本3 (HTTP/3)
2021-01-27 13:43:13QUIC 传输协议具有 HTTP 传输所需的几个特性,例如流多路复用、每个流的流控制和低延迟连接建立。本文档描述了 HTTP 语义在 QUIC 上的映射。本文档还确定了 QUIC 包含的 HTTP/2 功能,并描述了如何将 HTTP/2 扩展移植到 HTTP/3。
编程类中文开源电子书合集
2020-09-03 12:21:39关于开源图书有热心的伙伴和网友在网络上做了大量整理,本文为大家刊载免费编程类中文开源电子书合集全集,转载自 LinuxStory
暂无同学编辑和校对的文章 https://linuxstory.org/free-chinese-programming-books/,(原始 GitHub 地址:https://github.com/justjavac/free-programming-books-zh_CN)转载的原因是未来开源工场的小伙伴会就这个 repo 和话题做更加细致的整理,包括技术类、非技术类等等,希望帮到更多的小伙伴。如果你有兴趣一起做这件事情,请考虑联系工场电报群管理员或者 QQ 群群主。
- 国外程序员在 stackoverflow 推荐的程序员必读书籍,中文版。
- stackoverflow 上的程序员应该阅读的非编程类书籍有哪些? 中文版
- github 上的一个流行的编程书籍索引 中文版
书山有路勤为径,学海无涯苦作舟!
开源不仅局限于软件领域,开源同样意味着自由选择的权利和对知识开放的追求
Redis 6 新功能提前看!
2019-10-10 15:09:06作者先简单介绍 Redis 6 会给大家提供的新功能,包括:
一、对用户使用有直接影响的功能
- ACL用户权限控制功能
- RESP3:新的 Redis 通信协议
- Cluster 管理工具
- SSL 支持
二、Redis 内部的优化
- IO多线程支持
- 新的Module API
- 新的 Expire 算法
三、外部工具
- Redis Cluster Proxy
- Disque
安装VMware没有虚拟网卡出现解决方法
2019-09-11 05:54:46Matrix:Mozilla中心化实时互操作通信标准
2018-10-18 13:15:24矩阵规范
Matrix定义了一组用于分散通信的开放API,适用于通过全局开放式服务器联合安全发布,持久化和订阅数据,而无需单一控制点。用途包括即时消息(IM),IP语音(VoIP)信令,物联网(IoT)通信以及将现有通信孤岛联系在一起 - 为新的开放式实时通信生态系统提供基础。
CentOS 二进制安装MySQL8.0.12
2018-10-17 08:46:01运行环境:centos+mysql8.0.12
1.下载官方打包好的二进制安装包:
#wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.12-linux-glibc2.12-x86_64.tar.xz
可以看到这个版本采用了tar.xz的打包压缩方式,文件只有350M左右,下载还是满方便的。
数据的未来:SQL正在击败NoSQL?
2018-08-11 23:35:37随着计算机的日益普及,各种应用每天产生的数据量呈指数级增长。如何存储这些数据,有效处理分析这些数据,并从中提取有价值的信息,是当下迫切需要解决的问题。在过去的十年里,NoSQL在软件工程师阵营里越来越受欢迎,其中最重要的实现是MapReduce ,Bigtable,Cassandra,MongoDB,等产品。 它主要用于解决SQL的可扩展性问题。
确保搞砸人工智能项目的十种方法
2018-08-05 11:33:27做成一件事儿不容易,而坑恒在。
鲍捷博士于5月10日在将门创投的线上 talk 中盘点了人工智能项目的大坑小坑,选出了看上去非常反常识的十个经典坑。
这是一篇大实话合集,但别绝望,最后将会放出从二十年踩坑经验中总结出的彩蛋,共勉。
作者介绍
鲍捷博士,文因互联 CEO。拥有20年学术界和工业界的相关经验。美国Iowa State University人工智能博士,RPI博士后,MIT访问研究员,W3C OWL(Web本体语言)工作组成员,前三星美国研发中心研究员,三星问答系统SVoice第二代系统核心设计师。主要研究领域涵盖人工智能的诸多分支,包括机器学习、神经网络、数据挖掘、自然语言处理、形式推理、语义网和本体工程等,发表了70多篇领域内相关论文。是中文信息学会语言与知识计算专委会委员,中国计算机协会会刊编委,W3C顾问会员会代表。2010年以来关注金融智能化的研究和应用,成果有XBRL语义模型,基于知识图谱的基本面分析、金融问答引擎、财务报告自动化提取、自动化监管等。
以下为演讲原文:
xcache系统 操作命令记录
2018-05-24 10:49:51xRedisCluster集群设计分享
2018-05-05 12:59:33几年前redis官方的集群还没有成熟前,自己也尝试设计了一个REDIS集群方案,主要思想是通过添加代理层,对redis数据节点进行管理,并初步的实现了下相关的代码。
不过后来官方的集群出来以后,基于proxy的方案就没有太大优势了,所以就没有继续开发了。
刚好看到以前的文档,就贴出来跟大家分享下。
QUIC协议规范
2018-04-15 13:04:03介绍
QUIC (Quick UDP Internet Connection,快速UDP互联网连接) 是一个新的基于UDP的多路复用且安全的传输协议,它从头开始设计,且为 HTTP/2 语义做了优化。尽管以 HTTP/2 作为主要的应用协议而构建,然而 QUIC 的构建是基于传输和安全领域数十年的经验的,且实现了使它成为有吸引力的现代通用传输协议的机制。QUIC提供了等价于 HTTP/2 的多路复用和流控,等价于 TLS 的安全机制,及等价于 TCP 的连接语义、可靠性和拥塞控制。
<!--more-->
QUIC完全运行于用户空间,它当前作为 Chromium 浏览器的一部分发布给用户,以便于快速的部署和实验。作为基于 UDP 的用户空间传输协议,QUIC 可以做一些由于遗留的客户端和中间设备,或旷日持久的操作系统开发和部署周期的阻碍,而被证明很难在现有的协议中部署的创新。
QUIC 的一个重要目标是通过快速的实验获得更好的传输设计相关的知识。作为结果,我们希望将其中的一些精华的改动迁移进 TCP 和 TLS,后者通常有着长得多的迭代周期。
这份文档描述标准化前 QUIC 协议的概念设计和协议规范。补充资料描述了加密和传输握手 [QUIC-CRYPTO],及丢失恢复和拥塞控制 [draft-iyengar-quic-loss-recovery]。其它资源,包括一份更详细的相关文档,可以在 Chromium 的 QUIC 主页 找到。
基于早期的部署的 QUIC 标准化建议为 [draft-hamilton-quic-transport-protocol],[draft-shade-quic-http2-mapping],[draft-iyengar-quic-loss-recovery],和 [draft-thomson-quic-tls]。
TCP BBR 安装方法 汇总
2017-04-08 07:56:22这是2016年9月份才开源的一个优化网络拥堵的算法。
目前最新版本的Linux内核(4.9-rc8)中已经集成了该算法。
根据目前使用的情况反馈来看,能大幅度提升网速。
开源地址
https://github.com/google/bbr