夏绪宏,专注对高性能大规模 Web 架构,云计算、性能优化等方向,对编程语言设计实现也很感兴趣。目前是 PHP 官方开发组成员,乐于分享,著有《TIPI:深入理解 PHP 内核》,填补了 PHP 内部实现细节相关的资料的欠缺。同时也是 HHVM 项目贡献者。
2009 开始加入百度。先后从事大规模 IDC 自运维设施建设,云计算平台的架构设计,构建了百度最大规模的私有云计算平台,接入大部分社区产品线。同期负责贴吧的业务性能优化,对无线业务,PC,服务端均做了大量的优化工作,并构建了服务端性能分析平台,系统化的解决性能优化问题。期间还负责百度通用 RPC 基础中间层的设计实现和优化。
2015 年加入今日头条负责基础设施,系统架构设计和优化,解决大流量高并发下的系统性能、可靠性和运维效率等方面的问题。
新兴编程语言选型与应用。
零成本抽象是 Rust 的特性之一,而 Rust 的线程安全性也是贯彻了该特性。在这次演讲中,我们将确切了解 Rust 到底是如何实现这一点的。我们将探索组成 Rust 并发工具包的生态系统,了解 Rust 是如何扩展这些语言原则,来实现通道(Channel)、线程池、工作窃取算法、并发数据结构和异步 I/O 的。
静若处子,动若脱兔。对于从事编程工作的我们来说,动静之分又有另一番意义。我们写着静态语言往往想着动态语言的灵活,写着动态语言又容易想着静态语言的稳定和可靠。因此 IT 界又有俗话说:最好自己写的时候用动态语言,读别人写的用静态语言。静动态语言之争更是到如今仍然没有平息,两边各说各有理,似乎是肯定没有鱼与熊掌可以兼得的好事的。
常听到有人说,Clojure 确实优美,但动态语言实在驾驭不了啊!没有类型的帮助,在涉及到复杂的数据结构之后很容易失去对现有程序的理解,易读性也会急速下降,而这也确实是 Clojure 作为动态语言所造成的问题。但是部分解决这个问题的办法总是有的。core.typed 和 core.spec 两个核心库就可以帮助我们缓解动态语言太过野性框不住的问题,而本次演讲的任务就是向大家介绍这两个库,以及这两个库解决这一问题的不同角度。
Go 在 2016 年获得了年度编程语言的称号,或许这和 Kubernetes 以及 Docker 的流行是分不开的。今日头条在 2015 年的时候开始使用 Go 语言构建后端的核心服务,并开发了基于 Thrift 协议的 Go 语言微服务框架,目前运行着近百个 Go 语言开发的微服务,每天在线处理超过 3000 亿次请求,在生产环境大规模使用 Go 语言开发服务的过程中,我们体验到了 Go 语言带来的在性能和开发效率上的平衡,同时也碰到了许多问题,例如:并发控制,超时控制,锁粒度控制,GC 调优,性能调优。这里和大家分享下关于 Go 语言的一些最佳实践,知道了这些,或许可以构建出更加优秀的服务。
与所有软件一样,用于编写软件的编程语言本身也在不断演化。但大多数程序员只是偶尔学习一下语言新特性,很少关心这些新特性是如何设计出来的。本次分享将以 JavaScript 语言社区正在讨论中的 private 特性提案为例,探索编程语言本身如何演化,与普通软件相比存在哪些独特挑战,如何平衡各种因素。之所以选择 private 特性,是因为这是绝大多数工业语言普遍实现了的,程序员也普遍使用的语言特性,因此无论是否熟悉 JavaScript,都不会存在理解障碍。