(MQTT Series) Part 1 - Introduction: Hello World

Preface Introduction to MQTT Hello World Ref PrefaceOver the past two months, I’ve practically stopped updating, although I’ve mentioned before that updates would not be ti...

Read More

【MQTT系列】(一)简介之 Hello World

说在前面 MQTT 简介 Hello World Ref 说在前面最近两个月,我几乎是停更了,虽然之前提到过不会及时更新了,但是拖了那么久还是第一次。我当然可以用忙来解释,毕竟我周末用来刷 B 站的时间也少了好多。所以就陷入了另一个窘迫的地步:现在有素材可以写,但是这些可以拿来写的素材却是我忙起来之后才能得到,导致没有足够的精力时间去整理这些...

Read More

Git 之消失的文件

今天来跟大家分享一个有趣的事情,在开始之前,想问问大家如何在 Git 中,如何在 Git 项目中,让一个文件消失?或者说,对 Git 来说不可见? 似乎很简单对不对?用 .gitignore 文件不就可以了。对,你说的没错,只是除了这个方法呢? 演示接下来如果你如果想尝试这个方法,请别在你的真实项目中操作,搞坏了我可没法负责。 123mkdir test...

Read More

Golang Heap 分析

通常,我们只会在两种情况下,会去分析一个程序的表现: 你遇到了问题; 你闲的没事干; 好了,开个玩笑,其实研究程序的性能对于每一个工程师来说,都很重要,我甚至可以这么说:这是一个工程师的必备技能。 下面来说说,我们如何去研究 Golang 程序的性能问题。 介绍之前我也在 穷人的程序性能分析器 介绍过 C++ 的性能分析,以及很久之前也介绍过 Nod...

Read More

像火箭科学家一样思考

这本书在我看来,就是在教你如何创业。因为,创业成功的难度不亚于一次火箭发射,虽然还会有更难的探月、探火星、载人,只是,这个过程中的方法论都是一致的,都是由普通的人类在用科学的方法,将不可能变为可能。 事实上,在技术行业,似乎做出一件伟大的产品似乎也是不可能的,比如你能在现在想象我们国家能在十年后造出可以跟 ASML 高端光刻机吗? 同样,可能你也无法在多...

Read More

Linux 时间之 hwclock

Linux 中,有好些个工具是跟时间相关的,最近工作遇到了它们,于是打算写几篇与 Linux 时间相关的文章。 今天先说说 hwclock 这个工具,估计也就玩物联网的朋友会用到了,因为这个工具往往只是用来保持硬件设备的时间的,但是前大多数设备往往都是联网的,也就是用的 NTP。 另外,Ubuntu 15.04 之后就用 systemd 来管理时间了,它...

Read More

不拘一格的网飞

对于网飞的文化,我向来推崇备至,在之前的多篇文章里面,也提到过很多次: 从把 SLA 加进 KPI 考核说起 谈谈服务稳定性 如何理性地失败:黑匣子思维 这次见到这本网飞 CEO 里德 · 哈斯廷斯写的书出来后,也是第一时间排上了阅读计划。这几天看完之后,有种难以名状的感受:就像自己被自己打了脸。 以下涉及剧透,慎读。 自由与责任工作法整本书的逻辑很...

Read More

工程师的傲骄

最近的几场外部对接,由于我们的业务涉及到对外合作,因此避免不了跟外部工程师的对接,然而对接的时候,就是出现各种幺蛾子的时候了。但是,这个过程中,让我发现了一个很有意思的事情:在群里吵起来的两个工程师,私下聊天的时候却是和和气气的。 我们从典型的外部对接开始说起。 典型的外部对接大致的流程是这样的:销售跟商务接触合作方,双方互相了解需求,如果合适的话,就开...

Read More

CMake 动态链接库绝对路径问题

今天这篇文章算是对 【CMake 系列】(五)安装、打包与导出 的一个补充。其实我本打算跟上篇文章放在一起,毕竟都属于动态链接库相关的知识,但是这样一来就不容易被出现问题的同学们检索到了(才不是为了再水一篇文章 doge)。 问题的由来是因为这个问题困扰了我不少时间,在好几个项目里面都遇到了这个问题。 那就是链接动态库的时候,编译出来的可执行文件会带有编...

Read More

RPATH 简介以及 CMake 中的处理

所谓的 RPATH,就是硬编码在可执行文件或者动态库中的一个或多个路径,被动态链接加载器用来搜索依赖库。1 这个值是存在可执行文件或者动态库的 ELF 结构中的 .dynamic 小节中,它可以用 readelf 或者 objdump 查看。 具体就是 readelf -d a.out | grep RPATH 或者 objdump -x a.out |...

Read More

HTTPS 双向证书认证

在很久之前,我在 划一划 HTTPS 以及 SSL/TLS 的重要知识点 提到过客户端 HTTPS 证书,之后就没后续了,不过目前还是遇到了接口问题,不得不用上了。 简介接下来会给大家说清几个概念:HTTPS 单向认证、HTTPS 双向认证、中间人攻击。 HTTPS 单向认证与双向认证在这两种认证场景中,主要的区别在于服务器是不是需要客户端提供...

Read More

穷人的程序性能分析器

标题是直接翻译自 Poor man’s profiler,也可以叫做最简陋的程序性能分析方法。 这种程序性能分析分析方式还是非常有意思的,第一次见到它时在 Stack Overflow 的一个问答里面,本以为最高票答案的方式会介绍一个非常牛逼的工具,哪知道他介绍的却是一种朴实无华的 Profiler 方式。 我本来也直接跳过了这个回答,觉得太不靠谱了,但...

Read More

2020 总结

今年总的来说,是比较颓的一年,首先是疫情带来的影响,无论是成长还是机遇;其次是自己今年放弃了几个好习惯,比如坚持每两周一篇的博客,每周两次的锻炼以及坚持阅读。 对于新冠疫情,到目前还是没有结束,虽然已经有疫苗上市了,看情况还是得持续一段时间。不过也有好事,各种公共场合大家都很自觉地戴着口罩,于是除了新冠病毒,今年各种呼吸道传染病减少了很多。虽说没有染上新...

Read More

RTSP 服务器的简单实现

在上次的 RTSP 协议详解 中,把 RTSP 协议本身简单介绍了,这次就来说说如何实现一个简单的 RTSP 服务器。 Live555Live555 是我们经常用的 C++ 媒体库,它支持非常多的媒体服务协议,实现了对多种音视频编码格式的音视频数据的数据流化、接收和处理等支持。 它也是现在为数不多的可用库之一,它的代码比较繁琐,但是胜在简单,多数人拿到之...

Read More

磁盘缓存:从一次文件丢失问题说起

如果你遇到了这样的问题: 刚往你的 Linux 机器中,写入了个文件,然后直接断电重启,发现文件只剩下了空壳,即产生了一个没有内容,大小为 0 的文件。 那么,你遇到了磁盘缓存问题,或者更确切的说法是掉电导致的磁盘缓存丢失问题。 什么是磁盘缓存我们在小学二年级学过(是的,我也是天天给毕导视频点赞的),在 Linux 系统(实际上是任何操作系统)中,磁盘读...

Read More