摘要: Google protobuf是非常出色的开源工具,在项目中可以用它来作为服务间数据交互的接口,例如rpc服务、数据文件传输等。protobuf为proto文件中定义的对象提供了标准的序列化和反序列化方法,可以很方便的对pb对象进行各种解析和转换。以下是我总结的protobuf使用技巧和经验,分享给 阅读全文
posted @ 2019-02-19 23:00 张巩武 阅读(7424) 评论(0) 推荐(0) 编辑
摘要: Go语言是Google公司在2009年开源的一门高级编程语言,它为解决大型系统开发过程中的实际问题而设计,支持并发、规范统一、简单优雅,被很多Go语言传道者誉为“互联网时代的C语言”。而C++语言诞生于1979年,可以将C++语言视为一个语言联邦,主要包含C语言(面向过程)、面向对象、STL容器和算 阅读全文
posted @ 2019-02-17 23:06 张巩武 阅读(5432) 评论(0) 推荐(1) 编辑
摘要: 线程池是一种很经典的技术,在后端系统中很常见。线程池的常规做法是提前创建好一组工作线程,然后将任务分发给这些工作线程来处理,这样就避免了频繁的线程创建和销毁,同时也能很好的控制线程数量。线程池本质上是一种池化技术,利用空间来换取时间。线程池技术已经存在很多年,在面试的时候被问到的概率很高,在工作中也 阅读全文
posted @ 2018-08-26 22:05 张巩武 阅读(1736) 评论(0) 推荐(0) 编辑
摘要: 金三银四,跳槽和招聘旺季,分享一个程序员面试中经常被提问的问题:你所在公司的系统架构是什么样的? 想象一下,此刻你面前坐的是一位脸带笑意的面试官,他把一张空白的A4纸和一支黑色签字笔推到你眼前,"在纸上画下你们公司的系统架构吧。" 通常来说,大吹特吹系统架构多么高大上可能会被当场揭穿,觉得没啥可讲的 阅读全文
posted @ 2019-03-24 16:52 张巩武 阅读(984) 评论(0) 推荐(0) 编辑
摘要: gdb是C/C++程序员必备的专业技能,工作中gdb最常用的场景有两个,一个是分析core文件,另一个是调试程序。 分析core文件的方法如下: 1、gdb 程序名 core文件名 2、bt或where命令查看堆栈信息。 3、进入某个栈:f N,f是frame的缩写,N是栈号,如0、1、2、3... 阅读全文
posted @ 2019-03-24 16:51 张巩武 阅读(2570) 评论(0) 推荐(0) 编辑
摘要: 我读过的第一本理财启蒙书是《富爸爸,穷爸爸》,作者是一名拥有传奇人生的美国人罗伯特清崎,书中介绍的理财知识非常震撼:作者有两个爸爸,富爸爸是一个没有读过大学的当地巨富,穷爸爸是一个拥有博士学历的大学教授,作者告诉人们:智商和财商完全是两码事,提高财商需要主动学习会计、投资、市场、法律这4方面的知识。 阅读全文
posted @ 2019-03-24 16:49 张巩武 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 互联网行业的寒冬还在继续,滴滴宣布今年准备裁员2000人,现有13000人左右,裁员比例接近1/6,相当残酷。​ 当一家企业经营不达预期时,通常都会砍掉不赚钱的业务,精简人员,以求自救。选公司就像选股票,需要我们冷静思考,擦亮眼睛,尽量避免职业生涯上的选择不慎。 整理去年的工作笔记时,在记事本上发现 阅读全文
posted @ 2019-03-24 16:46 张巩武 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 后端系统中经常会听到“某某白名单”的名字,为什么要有白名单呢?使用白名单机制有什么好处? 一首脍炙人口的儿歌可以帮我们领悟答案。 “小白兔乖乖,把门儿开开。快点开开,我要进来。 不开不开就不开,妈妈没回来,我就不开门。” 小白兔的妈妈在能开门的白名单里。显然,白名单机制是一种简单易行的系统自我保护机 阅读全文
posted @ 2019-03-24 16:44 张巩武 阅读(2206) 评论(0) 推荐(0) 编辑
摘要: 智者千虑,必有一失。异常情况总是存在的,我们考虑不到全部场景。美剧《越狱》中精心策划一切的男主也做不到,例如男主意外烫伤导致纹身地图被毁。面对异常我们通常有两种选择,要么让它core掉,要么继续处理。 程序core掉的方法可以通过glog的FATAL级别日志,或者调用abort函数等方式终止程序。c 阅读全文
posted @ 2019-03-24 16:41 张巩武 阅读(880) 评论(1) 推荐(0) 编辑
摘要: 单例是什么?单例是一种特殊的类,用于确保只有一个对象,同时提供一种全局访问这个对象的方法。最近在工作中体验了一把5分钟将一个类改造成单例,感觉还是蛮不错的,所以我决定写一篇文章,跟大家交流技术和经验。 单例的原理是利用C++中的静态成员变量和静态成员函数,同时禁用构造函数的方法,达到只有一个对象实例 阅读全文
posted @ 2019-02-24 23:29 张巩武 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 生活中要有常识意识,行走在外要有交通安全意识,竞技游戏中要有参战和逃命意识。软件开发作为一项极易踩坑而且犯错成本很高的工作,一定要有强烈的检查意识。我在工作中发现,检查意识能带来很多明显的好处: 检查代码可以加快开发完成时间。大型的C++工程中代码编译速度很慢,短则几十秒,长则十几分钟。因此写完代码 阅读全文
posted @ 2019-02-24 23:24 张巩武 阅读(282) 评论(0) 推荐(0) 编辑
摘要: map是C++ STL中的关联容器,存储的是键值对(key-value),可以通过key快速索引到value。map容器中的数据是自动排序的,其排序方式是严格的弱排序(stick weak ordering),即在判断Key1和Key2的大小时,使用“<”而不是“<=”。map 使用二叉搜索树实现, 阅读全文
posted @ 2019-02-19 23:13 张巩武 阅读(552) 评论(0) 推荐(0) 编辑
摘要: 最近经历了冰火两重天,上周还可以不紧不慢的开发功能和学习技术,本周突然就被卷入到一个紧急业务的开发之中,要求在这周五开发完成一个全新的后端业务,具体包括制定上下游服务接口、设计后端系统业务流程、开发代码和测试通过,以便在周末和测试同学一起进行紧急测试,这是背景。 这个项目的挑战在于业务十分紧急,留给 阅读全文
posted @ 2019-02-19 23:03 张巩武 阅读(213) 评论(0) 推荐(0) 编辑