【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

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

关注

评论

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

给大模型穹顶,树一根存力支柱

脑极体

存储

Amazon 上的数字孪生:使用 L3 预测性数字孪生来预测“行为”

亚马逊云科技 (Amazon Web Services)

Amazon

大模型基础:理论与技术演进

永佳

Centos7系列安装FineBI教程。

百度搜索:蓝易云

云计算 Linux centos 运维 FineBI

Docker学习路线6:使用第三方镜像

小万哥

Docker 容器 运维 后端 开发

博客重启计划,阿坚产品笔记

Bonaparte

产品 产品经理 产品设计 产品需求 产品定义

代码随想录Day16 - 二叉树(三)

jjn0703

CentOS7系统搭建SFTP教程。

百度搜索:蓝易云

Linux 运维 SSH 云服务器 sftp

Nautilus Chain 更换全新测试网,主网即将在不久上线

威廉META

Linux系统安装redis教程。

百度搜索:蓝易云

redis 云计算 Linux 运维 云服务器

Cnetos7系统安装git仓库教程

百度搜索:蓝易云

git Linux centos7 运维 云服务器

2023年Java面试最全攻略:秋招求职跳槽必刷题目1000+,横扫一切技术盲点!

架构师之道

java面试

PyTorch: 池化-线性-激活函数层

timerring

PyTorch

快速离线安装MySql数据库

zhengzai7

MySQL

vue项目nginx服务器部署

百度搜索:蓝易云

vue.js Linux 运维 Web 云服务器

不容错过!10个Python自动化办公库免费送!(上)

程序员晚枫

Python 自动化办公

以 AI 变革组织运营与管理,2023 Kyligence 用户大会盛大举行

Kyligence

数据分析 数智化

深入了解C++优先队列

攻城狮Wayne

Nautilus Chain 更换全新测试网,主网即将在不久上线

股市老人

Nautilus Chain 更换全新测试网,主网即将在不久上线

EOSdreamer111

对线面试官-Redis 九 | 持久化的方式及优缺点

派大星

Java 面试题

免费试用商业智能工具,帮助您轻松解决商业智能选型问题

对不起该用户已成仙‖

AI的“道德感”如何训练而来(1)|社区征文

石君

AIGC 年中技术盘点 人工智能道德

Nautilus Chain 更换全新测试网,主网即将在不久上线

鳄鱼视界

vscode GraphQL插件踩坑

林十二XII

Linux系统iptables与Firewalld防火墙区别?

百度搜索:蓝易云

云计算 Linux 运维 Firewalld iptables

解析!1V1直播源码开发搭建技术实时语音识别翻译功能的应用

山东布谷科技

软件开发 直播 源码搭建 一对一直播源码 1v1语音系统搭建

ChatGPT:向未来迈进的智能对话伴侣 | 社区征文

架构精进之路

技术 后端 社区征文 ChatGPT 年中技术盘点

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