AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

老树新花:芒果 TV 林喆谈 C++11 选型与应用

  • 2015-08-17
  • 本文字数:1147 字

    阅读完需:约 4 分钟

林喆是芒果TV 的系统工程师。在10 月15 日~17 日的 QCon 上海 2015 大会上,他将分享《C++11 核心特性简析》,结合实际项目经验,分享一下他对C++11 一些新特性的理解和应用。在大会开始前,InfoQ 对他做了采访,谈到了C++11 的选择与应用、编程语言选型等话题。以下为采访内容。

InfoQ:您现在在芒果 TV 主要负责哪些方面?

林喆:我在长沙芒果 TV 负责 Redis 解决方案的制定,包括 Redis 集群调配、管理维护以及内部培训事宜,以及 Redis 集群代理 redis-cerberus 、控制管理程序 redis-ctl 等相关项目的开发工作。这两个项目都托管在 GitHub 上,感兴趣的读者可以自行查阅。

InfoQ:可以简单介绍一下 redis-cerberus 这个项目吗?

林喆:redis-cerberus 是一个 Redis 集群代理程序,早期是为了在使用 Redis 集群的同时兼容旧客户端和应用程序库而开发的。后续开发过程中加入了基于 Redis 集群主从模式的读写分离特性。

InfoQ:这个项目为什么会考虑用 C++11 开发?

林喆:首先,选择 C++ 开发是基于两点考虑:性能和开发效率。而之所以选择使用了 C++11 的特性,是因为新标准对原有的一些缺陷进行了有效的弥补,并且增加了很多有利于提高开发效率的特性。

InfoQ:C++11 引入了很多特性,可以分享一下实际使用中的感受吗?比如给开发带来了哪些好处?

林喆:C++11 引入的新特性有很多,我在项目中用到的可以分为三个方面,包括更好的对象生命周期控制语义、更灵活的语法以及多线程。具体我会在 QCon 上分享。下面简单举两个例子。

在更好的对象生命周期控制语义这方面,新标准库中引入的 std::unique_ptr(在 redis-cerberus 项目中有进一步封装) 表示对一个对象的唯一引用。在阅读代码的时候,如果看到对象 A 成员里有一个 std::unique_ptr 去引用另一个对象 B,那么隐含的语义是,B 的生命周期就应该完全由 A 来决定,并会随着 A 的析构而析构。

在更灵活的语法方面,我想最易用的就是基于容器的迭代循环,有了 auto 自动推断类型,不需要再去写很长的如“std::vector::iterator i”这样用于指定类型的代码,把精力从这种无益的体力劳动中释放了出来。

InfoQ:您在开发中选择编程语言都会考虑哪些因素?

林喆:无疑使用环境是最重要的因素,如果是系统级程序,并且不太适用 C++ STL 库(主要是从内存分配器和异常两方面考量),那么 C 语言肯定是第一选择;其它对性能很敏感的环境,C++ 比较适合;使用脚本控制的话, 则 Python 自然是一把利器;新出现的一些语言,如 Rust 在许多方面也表现不错,不过我还没有深入接触。

需要单独说说的是 Javascript,目前浏览器普遍支持的只有这一种脚本语言,但它又有很多缺陷和不便需要规避和改善。我认为 JavaScript 更类似于前端界的汇编语言,现在也有一些编译为 JavaScript 的语言,如 CoffeeScript、TypeScript 等,我们有了更多选择。

2015-08-17 21:102873
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 140.2 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

GitHub持续霸榜!2021年Java核心知识:面试突击版

Java架构之路

Java 程序员 架构 面试 编程语言

如果以这样的方式,你愿参与到碳普惠行动中吗?

CECBC

区块链

当造车成为风潮,谁帮助“造车党”连接未来?

脑极体

小心,别被eureka坑了

好好学习,天天向上

Java spring 信息安全 springboot Eureka

架构实战营 - 模块 2- 作业

carl

架构实战营

剖析6个MySQL死锁案例的原因以及死锁预防策略

北游学Java

Java MySQL 数据库 死锁

每天一个 Linux 命令(1):cd

民工哥

Linux 运维

每天学一个 Linux 命令(5):passwd

民工哥

Linux 程序员 运维 后端

一个CURD三年的Java程序员刷完这份《阿里面试指南(恒山版)》,居然斩获了十七个offer

Java架构之路

Java 程序员 架构 面试 编程语言

工业互联网的脖子被卡死了?

工业互联网

阿里总结出Java九大核心专题,1159页内容,吃透后我上个月砍下5个大厂Offer!

Java架构追梦

Java 阿里巴巴 架构 面试 九大核心专题

canvas小球绕斜椭圆轨迹运动

空城机

JavaScript 大前端 canvas 4月日更

阿里巴巴架构师王小瑞“墙裂”推荐:RocketMQ核心实战原理

Java架构师迁哥

使用Harbor搭建Mirror Registry

xcbeyond

Harbor 4月日更 镜像仓库

工厂模式还不懂?看这里!

IT皮皮蟹

Java 设计模式

特权访问管理(PAM)即服务

龙归科技

云上接单不空跑 京东云助力“佬司机”为货运物流业降本增效

CECBC

京东云

自学Java走进阿里,仅用了六个月,他是怎么做到的?

Java架构师迁哥

只要你不敢以MySQL专家自诩,又岂敢错过这本神书?

Java架构师迁哥

小程序支持MQTT协议

风翱

小程序 websocket mqtt 4月日更

每天学一个 Linux 命令(4):useradd/userdel

民工哥

Linux 程序员 运维

每天学一个 Linux 命令(6):cp

民工哥

Linux 程序员 运维

全国沿海港口首个区块链木材业务服务平台上线试运行,“区块链+港口”撬动数千万元“福利”

CECBC

港口

一份完美的阿里开源Java面试宝典,Github上star数已30K+

Java架构师迁哥

portal认证-上线流程

箭上有毒

每天学一个 Linux 命令(2):shutdown

民工哥

Linux 程序员 运维

一篇文章了解CI/CD管道全流程

禅道项目管理

DevOps 持续集成 持续交付

代码回现 | 如何实现交易反欺诈?

VoltDB

数据分析 金融科技 VoltDB

面试官:聊一聊SpringBoot服务监控机制

AI乔治

Java spring 架构 微服务 springboot

python列表转字符串

ベ布小禅

4月日更

每天学一个 Linux 命令(3):ls

民工哥

程序员 linux运维

老树新花:芒果TV林喆谈C++11选型与应用_QCon_臧秀涛_InfoQ精选文章