C/C++ 的构建/编译工具有很多,CMake应该属于第三代构建工具,其次个人觉得应该是C++生态领域中最广的,一些新一代的虽好但是生态不行!Cmake-Demo地址: https://github.com/Anthony-Dong/cpp
Cmake学习
C++ 入门到放弃
C++目前在一些领域处于垄断地位,比如数据库内核、高性能网络代理、基础软件设施 等基本都是C/C++的垄断领域,虽然其他语言也有在做,但是生态、性能等都无法企及,其次C/C++有着丰富的生态,很多高级语言也提供了接口可以对接C/C++ (JNI/CGO等) ,这样你可以很方便的将一些底层C/C++库链接到自己的项目中,避免造轮子!本人学习C++目的是为了看懂别人的代码,因为很多优秀的项目都是C++写的,而非我从事C++相关领域开发!
个人觉得C++本身包含了几门语言:面向对象语言 + 内存管理语言 + 模版语言,其中最臭名昭著的就是模版,大量的SFINAE实现,难以理解的报错信息,让很多人讨厌C++,其次就是C++委员会对于各种语法的支持!
本篇文章会长期更新和补充,而且篇幅过长,我平时喜欢把学习语言语法相关的文档归类到一起,所以会存在体积较大的问题,方便平时当作工具书使用,可能有点啰嗦了,这个是我从学习一开始记录的文章,不同阶段理解程度是不一样的!
Protobuf-SourceCodeInfo 介绍
PB 感觉工具非常成熟,这里主要指的是protoc 提供了很多核心的功能,我们直接拿来即用即可,protoc解析后的 FileDescriptorSet
足够我们去实现 代码生成、生成API文档、协议转换 等全部功能了,这里我核心讲解一下 SourceCodeInfo
的设计,其他部分感觉很好理解!
聊一聊HTTP协议
如今互联网已经与我们密不可分了,购物、金融、社交、娱乐等都依赖于互联网,其中主要依赖的几项技术就包含HTTP(HyperText Transfer Protocol, 超文本传输协议)。本文核心就是介绍HTTP发展历史以及HTTP/2协议!
用markdown画流程图和时序图
markdown 目前已经成为轻量级编辑器的代表,依靠markdown可以解决日常生活中写文档的基本需求,并且对于一些日常使用的流程图和序列图也有一定的支持!目前本人使用的是 Typora 写个人文章,在公司内用的是飞书文档,基本都是markdown语法!而使用目前比较好用的ProcessOn(网页版)
、Visio/PowerPoint(microsoft)
、Draw.io(开源)
使用下来的体验就是文章和流程图分离!也就是导致使用体验大打折扣,目前飞书文档支持的PlantUML
很不错!我个人一般是PlantUML
和Mermaid
!
Thrift 协议讲解
使用Hexo+Next搭建个人博客
grep、awk、sed、正则表达式 开发必备分享
grep、awk命令主要是用于我们日常开发中日志检索,问题就是有同学可能会咨询不是有elk、企业内部日志收集过滤系统,那么我为啥要学这些东西!日志收集在系统不稳定的情况下是很容易丢失日志的或者你做一些高精度的过滤日志也不符合,比如我要查看一下latency>10s的接口,你日志咋搜!!所以还是有学习必要性的!
正则表达式如果你业务中处理文本的需求比较多的话,正则表达式的作用不容小觑,而且正则表达式庞大的知识体系也需要经常练习才可以!
Go的runtime.SetFinalizer函数介绍
业务中我们经常遇到需要进行手动回收的操作,虽然Go提供了defer操作可以用来手动回收,但是有些时候确实会出现一些case用户忘记手动回收,并且大量内存泄漏或者goroutine泄口的问题,而且只能通过线上工具进行事后定位!本文介绍一下 runtime.SetFinalizer
来解决对象回收释放资源的问题!本文只是根据简单的例子进行阐述,例子选择不一定的好!
singleflight和backoff包介绍和组合使用
业务中我们经常遇到一些重复使用的轮子代码,本篇介绍了 singleflight 和 backoff 以及本地缓存!来提高我们平时业务开发的效率和代码的精简度!