最近在折腾一个代理的App,要实现一个根据域名来决定是否走代理的功能。实现的思路很简单,获取被墙屏蔽的域名列表,根据这个列表来判断是否需要走代理。被屏蔽的域名列表github上有项目在维护(点击查看)。有了列表之后就可以通过编写Proxy auto-config告诉浏览器选择代理

阅读更多»

###加解密流程### 一般应用会用到两种加密技术:对称加密和非对称加密。所谓对称加密就是数据发送接收双方加密解密用的是相同的密钥。由于对称加密技术加解密的速度相对于非对称加密有明显的优势,所以传输数据一般使用对称加密。因为对称加密的密钥是在易信客户端生成的,需要加密之后传给服务

阅读更多»

###返回值优化### 返回值优化是一个编译器优化行为,它可以减少函数调用返回时临时对象的产生以及拷贝行为。以下面代码为例 class BigData { public: BigData(const char* data, size_t size) {

阅读更多»

传统的数据库必须具备“ACID”,即原子性(Atomic)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)这四个特性。下面的文章主要阐述SQLite对隔离性的支持,以及对数据库并发控制的影响。 数据库的隔离性决定了多个并发事务同时对

阅读更多»

###Page Cache### Page cache是内核缓存文件内容的内存块,一般大小为4KB,可以通过sysconf(_SC_PAGE_SIZE)获取当前系统page cache大小。Page cache的引入解决了与文件操作先关的两个严重的问题: 跟内存相比磁盘的读写难

阅读更多»

##merge 图 1 如图 1所示要将experiment分支合并到master,只要运行: git checkout master git merge experiment git在内部执行了如下几个操作: 寻找到C3,C4的最近祖先C2 将C2,C3和C4进行三方合并 生

阅读更多»

在Lua源代码的llimits.h头文件中有这么一段宏定义: union luai_Cast { double l_d; LUA_INT32 l_p[2]; }; #define lua_number2int32(i,n,t) \ { LUAI_EXTRAIEEE \

阅读更多»

Lua实现中如果没有定义LUA_NANTRICK这个宏,那么他的TValus结构是这么定义的: typedef struct { union { GCObject *gc; void *p; lua_CFunction f;

阅读更多»

##C语言##函数内部的流程控制有: if … else … while break continue goto 函数间流程控制: setjmp()和longjmp() 一个程序的状态依赖于当前内存内容(如代码、全局变量、堆、栈)和寄存器的内容。寄存器内容包括stack

阅读更多»

举个栗子……