后端系统开发
文章平均质量分 65
好玩、有趣、实用的关于互联网后端系统的文章,希望能够帮助你在职场生存和提升境界。
张巩武
后端系统开发系列博客,分享互联网后端技术,科普理财知识。
展开
-
后端系统开发之工作和面试中的gdb
gdb是C/C++程序员必备的专业技能,工作中gdb最常用的场景有两个,一个是分析core文件,另一个是调试程序。分析core文件的方法如下:1、gdb 程序名 core文件名2、bt或where命令查看堆栈信息。3、进入某个栈:f N,f是frame的缩写,N是栈号,如0、1、2、3...进入到某个栈后,才能通过p命令查看这个栈的临时变量,否则只能查看全局变量。...原创 2019-02-27 01:20:51 · 717 阅读 · 0 评论 -
后端系统开发之白名单机制
后端系统中经常会听到“某某白名单”的名字,为什么要有白名单呢?使用白名单机制有什么好处?一首脍炙人口的儿歌可以帮我们领悟答案。“小白兔乖乖,把门儿开开。快点开开,我要进来。不开不开就不开,妈妈没回来,我就不开门。”小白兔的妈妈在能开门的白名单里。显然,白名单机制是一种简单易行的系统自我保护机制,没有白名单的“开门系统”存在严重的安全隐患。在大型后端系统中,白名单机制是必不...原创 2019-02-22 01:18:25 · 3686 阅读 · 0 评论 -
后端系统开发之如何选择公司和工作
互联网行业的寒冬还在继续,滴滴宣布今年准备裁员2000人,现有13000人左右,裁员比例接近1/6,相当残酷。当一家企业经营不达预期时,通常都会砍掉不赚钱的业务,精简人员,以求自救。选公司就像选股票,需要我们冷静思考,擦亮眼睛,尽量避免职业生涯上的选择不慎。整理去年的工作笔记时,在记事本上发现一段有意思的记录,标题是"了解一个公司",当时是在跳槽找工作时写的,因为面试官都喜欢问面试者"你...原创 2019-02-28 01:15:04 · 615 阅读 · 0 评论 -
后端系统开发之工作和面试中的字符串
软件开发过程中会遇到形形色色的字符串处理问题,例如数字和字符串之间的格式转换、字符串去掉前后空白字符、从一个特定格式的字符串中提取字符串等。上面这些函数通常会出现在各大公司的基础库中,使用起来非常方便。今天要分享的是一个去掉字符串结尾换行符的小技巧,C++11提供了back()函数用于返回最后一个字符,以及pop_back()函数删除最后一个字符。因此去掉字符串结尾换行符可以写的非常优雅:...原创 2019-02-28 23:50:18 · 162 阅读 · 0 评论 -
后端系统开发之技术方案写作
软件开发除了编写代码以外,还有一项重要的工作技能是写技术方案。技术方案通常用于同事之间的沟通和交流,一个好的技术方案应该有背景介绍和明确的目标,以及具体的实现思路。背景往往是为了引出目前存在的问题,因此可以围绕问题的发生条件和影响来介绍背景。目标是整个方案的核心,如果目标存在问题,例如目标价值不大或无法实现,或者目标会损害他人利益,那么整个方案注定会遭遇挑战。实现思路即具体的解决方案,...原创 2019-02-28 01:23:12 · 3481 阅读 · 0 评论 -
后端系统开发之JSON技巧
最近在做系统模块重构时遇到一个小问题:如何将一个带格式的JSON字符串转换成不带格式的、“拉平”的JSON字符串?在解决这个小问题时花费了不少时间,请教了好几个同事。因此感觉很有必要写文纪念一下,让后人少走一些弯路,同时也对JSON使用经验做个总结。学习任何技术本质上都是在学习它的历史,JSON是如何产生的,最初用于解决什么问题?JSON(JavaScript Object Notatio...原创 2019-02-19 22:50:38 · 539 阅读 · 0 评论 -
后端系统开发之工作和面试中的单例
单例是什么?单例是一种特殊的类,用于确保只有一个对象,同时提供一种全局访问这个对象的方法。最近在工作中体验了一把5分钟将一个类改造成单例,感觉还是蛮不错的,所以我决定写一篇文章,跟大家交流技术和经验。单例的原理是利用C++中的静态成员变量和静态成员函数,同时禁用构造函数的方法,达到只有一个对象实例的目的。具体来说,设计一个单例的要点如下:(1)类的静态成员变量是该类的指针。(2)类的静...原创 2019-02-17 22:48:57 · 320 阅读 · 0 评论 -
Go语言相对于C++的优点
Go语言是Google公司在2009年开源的一门高级编程语言,它为解决大型系统开发过程中的实际问题而设计,支持并发、规范统一、简单优雅,被很多Go语言传道者誉为“互联网时代的C语言”。而C++语言诞生于1979年,可以将C++语言视为一个语言联邦,主要包含C语言(面向过程)、面向对象、STL容器和算法、范型编程(模板)4部分,它高效强大同时又臃肿复杂,目前最流行的是C++11标准,它的很多优化为C...原创 2019-02-17 22:40:22 · 5939 阅读 · 0 评论 -
后端系统开发之检查意识
生活中要有常识意识,行走在外要有交通安全意识,竞技游戏中要有参战和逃命意识。软件开发作为一项极易踩坑而且犯错成本很高的工作,一定要有强烈的检查意识。我在工作中发现,检查意识能带来很多明显的好处:检查代码可以加快开发完成时间。大型的C++工程中代码编译速度很慢,短则几十秒,长则十几分钟。因此写完代码就直接编译是非常错误的选择,应该首先由开发者检查代码,解决显而易见的错误,然后再进行编译。理想...原创 2019-01-26 20:12:42 · 283 阅读 · 0 评论 -
后端系统开发之protobuf使用技巧和经验
Google protobuf是非常出色的开源工具,在项目中可以用它来作为服务间数据交互的接口,例如rpc服务、数据文件传输等。protobuf为proto文件中定义的对象提供了标准的序列化和反序列化方法,可以很方便的对pb对象进行各种解析和转换。以下是我总结的protobuf使用技巧和经验,分享给大家。技巧1:使用optional而不是required字段。protobuf的可选字段op...原创 2018-10-04 15:03:55 · 1290 阅读 · 0 评论 -
后端系统开发之面试和工作中的map
map是C++ STL中的关联容器,存储的是键值对(Key-Value),可以通过key快速索引到value。map容器中的数据是自动排序的,其排序方式是严格的弱排序(stick weak ordering),即在判断Key1和Key2的大小时,使用“<”而不是“<=”。map 使用二叉搜索树实现,STL map的底层实现是红黑树。map有几个值得注意的地方:map的赋值运算是深拷...原创 2018-09-03 18:21:33 · 492 阅读 · 0 评论 -
后端系统开发之面试和工作中的线程池
线程池是一种很经典的技术,在后端系统中很常见。线程池的常规做法是提前创建好一组工作线程,然后将任务分发给这些工作线程来处理,这样就避免了频繁的线程创建和销毁,同时也能很好的控制线程数量。线程池本质上是一种池化技术,利用空间来换取时间。线程池技术已经存在很多年,在面试的时候被问到的概率很高,在工作中也非常有用。首先来看面试中的线程池,通常面试官会提问线程池的目的和原理,如果面试时间充足的话,恭喜...原创 2018-08-26 21:45:55 · 292 阅读 · 0 评论 -
后端系统开发之gflags使用规范
任何好用的工具如果使用不当都会带来不好的后果,gflags也是一样。我遇到过一些gflags的“坑”,还从领导和同事那里获得一些好的想法,整理成7条gflags使用规范。有意识的遵循这些规范,对项目的开发维护和自身的技术成长都将有很大的益处。规范1:bool类型的gflags默认值设置成false,防止误启用新功能。新的功能上线一定要经过代码审查、测试和验证流程,默认为true的gflag...原创 2018-08-26 21:31:40 · 437 阅读 · 0 评论 -
后端系统开发利器之gflags
简介gflags是Google的一个开源项目,用于解析程序运行参数。gflags简单易用,它的好处在于统一配置格式,减少开发工作量。在工程实践中,gflags在简化开发和测试方面表现非常出色,它还有一个很棒的功能是支持多人合作开发。gflags在2008年首次推出,至今已有10年时间,目前有很多公司都在用gflags。使用下面的例子简单展示了C++语言中gflags的基本用法。si...原创 2018-08-17 13:55:26 · 3059 阅读 · 0 评论