腾讯技术 - 知乎专栏 - RSS Feed

跟腾讯技术相关的文章都在这里了

Latest articles

微信小仓实践录|后端代码仓库发展史

作者:cmlchen,腾讯微信后台开发工程师 最近某些代码大仓的思想风靡整个 DevOps 圈子,这里的所谓大仓指的并不是仓库的代码容量达到多少 G,而是一种指导思想——就一个公司的代码(如 Google)的增长趋势,代码的趋近于整合到一个单一的仓库的,而非趋于分割为多个仓库分开存储的。但除了 Google、Microsoft 这些历史悠久的公司实践了大仓,其它的新兴公司几乎都没有一个划分仓库的规则。本文从微信后端的代码仓储方式的历史说起,一步步的描述微信后端是如何构建一套真实可用的小仓方案的,并将这样一种分仓的方法分享出来,希望实践微服务的同事们有所帮助。 其实或许不应该使用小仓这个词来描述当前微信后端的代码组织方式,就占用空间而言,微信后端的某些仓库从体积上来说并不算得上是小 ,微信支付后端的旧代码仓库项目截止...

GPU 利用率低常见原因分析及优化

作者:summerwuxia,腾讯 PCG 运营开发工程师最近经常有同学反馈 GPU 利用率低,严重浪费 GPU 资源的问题,经过对一些实例分析后,总结这篇文档,希望能对使用 GPU 的同学有些帮助。一、GPU 利用率的定义本文的 GPU 利用率主要指 GPU 在时间片上的利用率,即通过 nvidia-smi 显示的 GPU-util 这个指标。统计方式为:在采样周期内,GPU 上面有 kernel 执行的时间百分比。二、GPU 利用率低的本质常见 GPU 任务运行流程图如下:如上图所示,GPU 任务会交替的使用 CPU 和 GPU 进行计算,当 CPU 计算成为瓶颈时,就会出现 GPU 等待的问题,GPU 空跑那利用率就低了。那么优化的方向就是缩短一切使用 CPU 计算环节的耗时,减少 CPU...

使用 LLVM 实现一个简单编译器(二)

作者:tomoyazhang,腾讯 PCG 后台开发工程师本文接上一篇:腾讯技术工程:使用 LLVM 实现一个简单编译器(一)8. Control Flow我们现在实现的 Kaleidoscope 还不够完善,缺少 if else 控制流,比如不支持如下代码:def fib(x) if x < 3 then 1 else fib(x - 1) + fib(x - 2) 首先让我们的 Lexer 能识别 if then else 三个关键字,增加 TOKEN 类型: TOKEN_IF = -6, // if TOKEN_THEN = -7, // then TOKEN_ELSE = -8,...

使用 LLVM 实现一个简单编译器(一)

作者:tomoyazhang,腾讯 PCG 后台开发工程师1. 目标这个系列来自 LLVM 的Kaleidoscope 教程,增加了我对代码的注释以及一些理解,修改了部分代码。现在开始我们要使用 LLVM 实现一个编译器,完成对如下代码的编译运行。# 斐波那契数列函数定义 def fib(x) if x < 3 then 1 else fib(x - 1) + fib(x - 2) fib(40) # 函数声明 extern sin(arg) extern cos(arg) extern atan2(arg1 arg2) # 声明后的函数可调用 atan2(sin(.4), cos(42)) 这个语言称为...

通向大规模医疗知识图谱:详细解读天衍实验室知识图谱对齐技术

作者:zihengzhang、chalerislin,腾讯 CSIG 天衍实验室应用研究员医疗知识图谱医疗知识图谱(Medical Knowledge Graph)作为医疗人工智能的核心,本质上是一种揭示医疗实体之间关系的语义网络,可以对现实世界的事物及其相互关系进行形式化描述。通常情况下,医疗知识图谱是在人工构建的专业知识基础上,通过算法以及专家审核的方式不断扩充实体及关系来构建的,包括疾病、症状、药品、手术等医学概念和多种医学关系 [9]。在广泛的医疗场景中,医疗知识图谱已经被证明可以有效地为算法提供医学知识支撑并为算法的预测结果提供医学解释。在可预见的未来,知识图谱都将在医疗这个强知识属性的领域发挥至关重要的作用。为什么需要知识图谱对齐知识图谱对齐(Knowledge Graph Alignment)指的是在多个异源异构的知识图谱中发现完全等价的实体,即发现指代相同真实世界物体的两个实体,因此也可称为实体对齐(Entity...

QUIC 协议详解

作者:beichen,腾讯 PCG 客户端开发工程师1、QUIC 简介QUIC 全称:Quick UDP Internet Connections,是一种基于 UDP 的传输层协议。由 Google 自研,2012 年部署上线,2013 年提交 IETF,2021 年 5 月,IETF 推出标准版 RFC9000。从协议栈可以看出:QUIC = HTTP/2 + TLS + UDP2、QUIC 实现原理2.1、数据格式一个 QUIC 数据包的格式如下:由 header 和 data 两部分组成。header 是明文的,包含 4 个字段:Flags、Connection ID、QUIC Version、Packet Number;data 是加密的,可以包含 1 个或多个 frame,每个 frame...

mdebug 新的 web 调试工具

作者:thinkchen,腾讯 PCG 高级前端工程师mdebug是腾讯新闻 TNTWEB 团队推出的新一代调试工具, 沉淀自腾讯新闻微信手 q 双插件多年的移动 web 开发实践中。相比 vconsole, eruda 等调试工具, 使用现代框架进行编写。整合 network 监控能力,提供了更丰富的调试能力和 api, 拥有更强大的网络捕获能力,接入和使用简单。本文将从背景, 架构,功能, 实现原理, 未来扩展点等角度全面介绍这款工具。一.背景调试一直是移动 web 开发的疼点,业界也在调试工具上不断寻找更好的解决方案。从真机联调,js 模拟,Nodejs 代理, 代理软件等方面提出移动 web 调试解决方案。mdebug是一款通过 js 模拟来实现移动 web 调试的轻量化工 具,无需依赖任何插件,使用简单,功能强大。git...

Go 语言中各式各样的优化手段

作者:korzhao,腾讯 QQ 音乐后台开发工程师总结了一些在维护 go 基础库过程中,用到或者见到的性能优化技巧。时间仓促,可能有一些错误,欢迎一起讨论常规手段1.sync.Pool临时对象池应该是对可读性影响最小且优化效果显著的手段。基本上,业内以高性能著称的开源库,都会使用到。最典型的就是fasthttp了,它几乎把所有的对象都用sync.Pool维护。但这样的复用不一定全是合理的。比如在fasthttp中,传递上下文相关信息的RequestCtx就是用sync.Pool维护的,这就导致了你不能把它传递给其他的goroutine。如果要在fasthttp中实现类似接受请求->异步处理的逻辑,必须得拷贝一份RequestCtx再传递。这对不熟悉fasthttp原理的使用者来讲,很容易就踩坑了。还有一种利用sync.Pool特性,来减少锁竞争的优化手段,也非常巧妙。另外,在优化前要善用go逃逸检查分析对象是否逃逸到堆上,防止负优化。2.string2bytes...

大型代码仓库工程实践

作者: marinewu,腾讯 PCG 工程效能平台部专家 腾讯 PCG 工程效能平台部自 2020 年开始进行大仓基本能力建设,并在 2021 年与工蜂合作成立了代码大仓研效联合项目组。 在此, 我们想分享大仓/单仓踩过的坑。 我们认为这些坑是真实存在且很难避免的,不是小马过河。 单仓并不简单。成功的单仓所带来的效果绝不止简单的代码聚合,但成本是大量的工具支持以及工程实践。单仓像放大镜,可以将优秀的工程实践以极低的成本推广,但同时也会将错误迅速放大。同时,向单仓迁移的过程也有相当程度的风险。本文会详细讨论单仓的益处、挑战,以及我们对挑战的应对之道,以供参考。单仓/大仓是什么?单仓:指Monorepo,或单一仓库,是指将多个项目放在同个仓库中的版本控制策略。单仓在实践中可能有不同规模,如中心级、部门级、BG...

消息队列背后的设计思想

作者:jaydenwen,腾讯 PCG 后台开发工程师消息队列也通常称为消息中间件,提到消息队列,大部分互联网人或多或少都听过该名词。对于后端工程师而言,更是日常开发中必备的一项技能。随着大数据时代的到来,apache 旗下的 kafka 一度成为消息队列的代名词,提起消息队列大家自然而然就想到了 kafka。近而网上有太多太多介绍消息队列 kafka 功能或者内部实现的文章。然而消息队列本身是工程领域内一种解决问题的通用方案。它的背后有着一些通用的设计思想和经典模型,这些是消息队列的精髓和灵魂。它们独立于任何一种消息队列的具体实现(例如 kafka),但每种消息队列(除了 kafka 外,还有 rocketMQ、pulsar 等)的实现中到处体现着这些设计思想。本文主要从抽象层面来简单谈谈消息队列背后的一些设计思想,辅助理解消息队列这一类组件。本文主要解决三个问题:消息队列适合什么场景?消息队列有哪些主流产品、各自的优缺点?消息队列背后的设计思想(整体核心模型、数据存储考量、数据获取方案对比、消费者消费模型)1.消息队列适合哪些场景?消息队列:它主要用来暂存生产者生产的消息,供后续其他消费者来消费。它的功能主要有两个:a.暂存(存储...

Discover, share and read the best on the web

Follow RSS Feeds, Blogs, Podcasts, Twitter searches, Facebook pages, even Email Newsletters! Get unfiltered news feeds or filter them to your liking.

Get Inoreader
Inoreader - Follow RSS Feeds, Blogs, Podcasts, Twitter searches, Facebook pages, even Email Newsletters!