研究一下 fork 的原理,并且还有 vfork 的一些使用场景

2017-07-29
阅读 2 分钟
8.5k
笔者一直试图从最基本的原理上去理解(甚至尝试原理性设计)一个服务器的架构,为此提出了一些问题。此外,笔者对 异步 I/O 也有不少学习。从几个方面学习了 vfork() 的用法。

在 C++ 中实现 super 关键字

2017-07-08
阅读 3 分钟
15k
我的工作历程是 C ==> Objective-C ==> C++,所以我的 OOP 习惯很大程度上是来自于 Objective-C 的。玩 C++ 的时候忽然就很不习惯了:因为没有 super 啊。于是就有了这篇文章。

Google Protocol Buffer(protoc, protobuf, pb)学习笔记

2017-07-07
阅读 4 分钟
25.9k
以前玩 C,Json、XML 什么的看多了,现在开始玩 C++,才发现我了解的世界太小了——原来 C++ 届还有 Google Protocol Buffers 这么好的东西。果然在 PC 上做开发真是好,不用考虑可执行程序的 size,可以放心放肆地用 C++。

基于 epoll 设计类似 libevent 的异步 I/O 库 - 接口

2017-06-13
阅读 4 分钟
7k
这篇文章可以算是我在 GitHub 上一个工程的设计概要了。简要说明了该工程的设计思路以及技术要点。 本文章纯原创,没有参考资料。不过有设计过程中记录下的相关文章: 使用 pipe 在程序正文中捕获和处理信号 本文地址:[链接] 工程简介 基本原理 总所周知,在 Linux 中实现异步 I/O,适用的系统 API 就是 epoll。这里主...

DNS 报文结构和个人 DNS 解析代码实现——解决 getaddrinfo() 阻塞问题

2017-05-10
阅读 5 分钟
24.3k
实际应用中发现一个问题,在某些国家/ 地区的某些 ISP 提供的网络中,程序在请求 DNS 以连接一些服务器的时候,有时候会因为 ISP 的 DNS 递归查询太慢,导致设备端认为 DNS 超时了,无法获取服务器 IP。

使用 pipe 在程序正文中捕获和处理信号

2017-05-03
阅读 2 分钟
5k
我的上一篇文章研究了一下如何在程序的正文(而不是信号处理函数)中捕获和处理信号。当时用的方案是 sigprocmask()。但那个方法理论上是可能漏掉一些信号的。

使用 sigprocmask 和 sigpending 在程序正文中捕获和处理信号

2017-04-20
阅读 4 分钟
7k
最近在尝试使用 epoll 写一个类似 libevent 的库。那么,如何像 libevent 一样,在 event loop 里加入对信号事件的观测呢?我查了一下资料,一个可行的方法,就是使用 sigprocmask() 及其相关功能来实现啦。

Swift 个人学习笔记 - 09: 属性

2017-03-25
阅读 2 分钟
2.4k
本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的地方,我会以“存疑”的注解指出。 在此感谢中文版翻译者,这极大地加快了 Swift 的学习速度。 本文地址:[链接] Reference: 原版...

Swift 个人学习笔记 - 08: 类和结构体

2017-03-10
阅读 2 分钟
2.7k
本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的地方,我会以“存疑”的注解指出。 在此感谢中文版翻译者,这极大地加快了 Swift 的学习速度。 本文地址:[链接] Reference: 原版...

Swift 个人学习笔记 - 07: 枚举

2017-03-09
阅读 3 分钟
2.3k
本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的地方,我会以“存疑”的注解指出。 在此感谢中文版翻译者,这极大地加快了 Swift 的学习速度。 本文地址:[链接] Reference: 原版...

Swift 个人学习笔记 - 06: 闭包(Clousures)

2017-03-01
阅读 2 分钟
3k
本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的地方,我会以“存疑”的注解指出。 在此感谢中文版翻译者,这极大地加快了 Swift 的学习速度。 本文地址:[链接] Reference: 原版...

Swift 个人学习笔记 - 07: 函数

2017-02-23
阅读 3 分钟
3k
本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的地方,我会以“存疑”的注解指出。 在此感谢中文版翻译者,这极大地加快了 Swift 的学习速度。 本文地址:[链接] Reference: 原版...

Swift 个人学习笔记 - 06: 控制流

2017-02-22
阅读 3 分钟
2.8k
本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的地方,我会以“存疑”的注解指出。 在此感谢中文版翻译者,这极大地加快了 Swift 的学习速度。 本文地址:[链接] Reference: 原版...

Swift 个人学习笔记 - 05: 集合类型(Array, Set, Dictionary)

2017-02-22
阅读 2 分钟
4.4k
本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的地方,我会以“存疑”的注解指出。 在此感谢中文版翻译者,这极大地加快了 Swift 的学习速度。 本文地址:[链接] Reference: 原版...

嵌入式编程中应如何使用 mmap 访问 CPU 寄存器

2017-02-17
阅读 2 分钟
7.3k
之前忘了在哪了,看到一个面试题:在 Linux 中如果不允许你写内核驱动,但是要访问内核寄存器,那应该怎么做?答案就是使用 mmap() 系统调用,搭配 Linux 的一个设备节点 /dev/mem。

Swift 个人学习笔记 - 04: 字符串和字符

2017-02-16
阅读 3 分钟
3.1k
本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的地方,我会以“存疑”的注解指出。 在此感谢中文版翻译者,这极大地加快了 Swift 的学习速度。 本文地址:[链接] Reference: 原版...

Git 使用集

2017-02-16
阅读 5 分钟
4k
本文是本人在学习和使用 Git 过程中的一些记录。以备查阅。随时更新。本文地址:[链接] 另外推荐我的另一个 Git 文章:实际操作 Svn 迁移到 Git Reference git使用详细介绍使用 Git 管理源代码实际操作 Svn 迁移到 Gitgit rebase简介(基本篇) git merge和rebase的区别git 撤销commitGit修改已经提交的注释或日志为 Git ...

Swift 个人学习笔记 - 03: 基本运算符

2017-01-11
阅读 1 分钟
3.6k
本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的地方,我会以“存疑”的注解指出。 在此感谢中文版翻译者,这极大地加快了 Swift 的学习速度。 Reference: 原版:The Swift Progra...

Swift 个人学习笔记 - 02: 基础内容

2017-01-08
阅读 2 分钟
2.8k
本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的地方,我会以“存疑”的注解指出。 在此感谢中文版翻译者,这极大地加快了 Swift 的学习速度。 Reference: 原版:The Swift Progra...

Swift 个人学习笔记 - 01: A Swift Tour

2016-12-25
阅读 5 分钟
2.7k
本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的地方,我会以“存疑”的注解指出。 在此感谢中文版翻译者,这极大地加快了 Swift 的学习速度。 Reference: 原版:The Swift Progra...

正确使用 realloc()

2016-12-02
阅读 2 分钟
17.1k
众所周知,realloc() 的作用就是将已经 malloc 的内存块,重新扩展加长。当你并没有使用高端的内存池的时候,临时从堆中申请加大内存,这是很有用的。但是如何正确地使用 realloc() 呢?

Linux kernel 在 Git 目录和 SVN 目录编译行为不一致的解决方法

2016-10-20
阅读 3 分钟
4.9k
近期把开发从 SVN 迁移到了 Git 上。其实一早就遇到一个问题,那就是 Linux kernel 在 SVN 的版本控制下编译得好好的,但是换成 Git 做版本控制之后,即便是完全一模一样的两套目录树,编译出来就是不一样!

优化 cJSON 库的 array 插入速度

2016-10-17
阅读 3 分钟
6.3k
和参考资料一样,我在我的项目中应用 cJSON 数组功能,发现在创建 array 的时候耗时很厉害(作为嵌入式 CPU,几十个 array 项的插入,居然花了 300ms)。搜了一下,网上已经有人遇到过了,就是参考资料的那篇。本文解释一下优化的思路和方法。

Linux 中 /proc/meminfo 的含义

2016-10-10
阅读 2 分钟
20.7k
做嵌入式开发对内存泄露很敏感,而对泄露的位置更加关注。本文记录一下从网上搜集的/proc/meminfo各参数的含义。还不完整,待补完。 本文地址:[链接] Reference 关于/proc/meminfo的理解linux/Documentation/filesystems/proc.txt 说明 以下项目并不是每一个 Linux 系统上都有的,根据你的 Linux 设计和版本,可能多出...

实际操作 Svn 迁移到 Git

2016-09-29
阅读 3 分钟
31.2k
最近把一个开发了很久的项目从公司的 svn 服务器迁移到 GitLab 上,折腾了几天。我们的 svn 目录结构不是很标准,所以网上的资料没一个能够照搬用的。Anyway,最后成功了,我这里详细记录一下,供参考。

ZigBee 学习笔记 - 第1章 ZigBee 技术原理(让人抓狂的 ZigBee 缩写列表)

2016-08-29
阅读 3 分钟
10.6k
初学 Zigbee,已经被大量的缩写整崩溃了……一边看书一边记录 Zigbee 协议栈中的缩写列表以及它们出现的位置吧。我看的书是《ZigBee技术开发——Z-Stack协议栈原理及应用》。 本文地址:[链接] 1.2 Zigbee 网络结构 1.2.3 Zigbee 协议架构 SAP:服务接入点,Service Access Point 具体的分层架构: PHY:物理层 MAC:媒体访...

使用 NSURLConnection 的 delegate 处理 http 通信

2016-08-29
阅读 3 分钟
4.3k
在苹果 Foundation 库里面,提供了一个原生的 HTTP 处理类,那就是NSURLConnection。本文记录了使用这个库的最基本的支持,阅读了苹果官方文档之后的一些笔记。

使用 libev 构建 TCP 响应服务器(echo server)的简单流程

2016-08-23
阅读 2 分钟
16k
请注意这是 libev 而不是 libevent 的文章!这篇文章主要是使用具体的例子,说明如何使用 libev。网上不少文章都是照抄示例,一点用都没有……本文将示例的代码精简一下,补上说明;大家都懂的部分就不赘述了。需要完整源码请查看参考资料。

Libev 官方文档学习笔记 - 03:常用 watcher 接口

2016-08-22
阅读 6 分钟
15.2k
这个 watcher 负责检测文件描述符(以下简称fd)是否可写入数据或者是读出数据。最好是将fd设置为非阻塞的。  注意有时候在调用read时是没有数据的(返回0),此时一个一个非阻塞的read会得到EAGAIN错误。

Linux errno 列表

2016-08-16
阅读 7 分钟
6.7k
网上关于 errno 的资料,要么没有错误名,要么没有错误号,要么格式编排混乱……算了,自己记一个吧 本文地址:[链接] 1~16 {代码...} 17~32 {代码...} 33~48 {代码...} 49~64 {代码...} 65~80 {代码...} 81~96 {代码...} 97~112 {代码...} 113~124 {代码...}