写点什么

老树新花:芒果 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:103119
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

前端配置化表单组件设计方法 | 京东云技术团队

京东科技开发者

前端 表单设计 配置化 企业号 5 月 PK 榜

深入理解shims-vue.d.ts和declare module

Lee Chen

JavaScript

景区共享电动车合作找厂家要注意什么

共享电单车厂家

共享电动车厂家 校园共享电单车 景区共享电动车 共享电动车合作

路由器的后台管理界面的IP地址为什么都是192.168开头?

wljslmz

网络 三周年连更

谁说前端已死,低代码没干掉我,chatGPT又如何!| 社区征文

花花

三周年征文

以最大速度将数据迁移至AWS S3存储

镭速

ShareSDK 钉钉平台注册指南

MobTech袤博科技

2023年免费堡垒机排行榜(仅供参考)

行云管家

安全运维 运维安全 免费堡垒机

揭秘镭速传输点对点传输技术,NAT+Raysync强强组合

镭速

SpringBoot 中操作 Redis 及工具类的封装

Java redis spring Spring Boot

数据导向下制造业的生产效率、交易效率提升办法

镭速

面向万物智联的应用框架的思考和探索(下)

HarmonyOS开发者

HarmonyOS

分布式场景下,如何对外提供易变的服务,打造可靠的注册中心?

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

【等保一级】等保一级一般适用于哪些信息系统?

行云管家

等保 等级保护 等保一级

Istio数据面新模式:Ambient Mesh技术解析

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

GaussDB(DWS)字符串处理函数返回错误结果集排查

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

美团架构师熬夜整理:Netty权威指南2.0版+英雄传说项目

Java Netty

IM开发者的零基础通信技术入门(十二):上网卡顿?网络掉线?一文即懂!

JackJiang

网络编程 即时通讯 IM

SpringBoot集成ElasticSearch

Java elasticsearch Spring Boot

去哪儿网企业级监控平台-Watcher

Qunar技术沙龙

去哪儿网 监控平台

一文详解如何在 ChengYing 中通过产品线部署一键提升效率

袋鼠云数栈

开源

软件测试/测试开发丨Pytest 参数化用例

测试人

软件测试 自动化测试 测试开发 pytest

细节爆炸!腾讯用13个案例实战讲明白MySQL,没想到这么全

Java MySQL 数据库

如何利用 AREX 在本地快速复现线上问题

AREX 中文社区

自动化测试 接口测试 代码复现

完美!华为爆出Redis宝典,原来Redis性能可压榨到极致

Java 数据库 nosql redis 缓存

字节Java程序性能优化宝典开源,原来这才叫性能优化

Java 性能优化 性能调优

惊艳!阿里自爆用480页讲清楚了44种微服务架构设计模式

Java 架构 微服务 设计模式

看华为云Serverless 4大特性如何让软件架构更丝滑

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

使用MASA全家桶从零开始搭建IoT平台(二)设备注册

MASA技术团队

IoT mqtt

机器人SLAM,三维人工智能的核心技术!

博文视点Broadview

MySQL一次大量内存消耗的跟踪

GreatSQL

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