微信数据库分析

本文是关于微信数据库的一些基本信息,所括数据库的基本结构,以及加密算法,还有关键数据库参数的说明。

阅读全文

Cisco AnyConnect VPN on CentOS 7

The Cisco AnyConnect Secure Mobility client is a web-based VPN client that does not require user configuration. VPN, also called IP tunneling, is a secure method of accessing USC computing resources.

This guide will assist with the installation of the Cisco AnyConnect VPN client for CentOS.

阅读全文

编译器的尾部调用优化

尾调用是指某个方法或函数的最后一条指令是对另一个方法或函数的调用,尾部调用优化(Tail-Call Optimization)是编译器对尾部函数调用所做的一个处理,使得尾部函数调用不消耗额外的栈空间。一般的递归函数,每调用一层都要分配一定大小的栈空间来存放参数、临时变量和返回地址等数据,如果递归层数很深,会消耗大量的栈空间,甚至发生栈溢出。如果启用尾调用优化,递归中的每层调用都共享一个栈空间,能大提升栈内存的使用效率。

阅读全文

配置软件源码包构建环境

在 Linux 系统下,不管是自己进行项目开发还是安装应用软件,一定使用过 make 命令,它是一个非常重要的编译命令。但是通过手工编写 Makefile 文件,对任何程序员来说都是一个挑战。幸而有 GNU 提供的 Autoconf 和 Automake 两个工具使用 Makefile 不再困难,使用这两个工具可以协助我们自动产生 Makefile 文件。

阅读全文

Swift中的比较运算符

本文通过两种常用的情景:数组的排序和查找,来演示Swift中比较运算符的用法。实现了Comparable协议的类型,其对象可以像数字一样比较大小。为自定义类型实现Compatable协议,只需为你的类型定义 < 和 == 两个静态方法,基于这两个基本的运算符,Swift提供了剩余4个比较运算符的默认实现。

阅读全文

使用Rsync建立文件同步服务

rsync 是用来保持两台机器之间文件或目录同步的工具,使用广泛。rsync 使用 SSH 建立远程连接,一旦连接建立,客户端的 rsync 会调用远程主机的 rsync,它们会决定哪些数据会被传输,只传输变化的数据,实现差量更新。

阅读全文

HTTP中的ETag在移动客户端的应用

绝大多数移动客户端在设计网络模块时,都会选用HTTP作为客户端和服务端通信的网络协议。随着业务的不断发展以及用户量的持续增长,整个客户端的稳定性和性能会逐渐成为关注的焦点,其中网络的性能优化更是重中之重,本文介绍的 ETag 缓存技术,可以在缓存数据的同时做到数据的实时更新,适用于对数据实效性要求较高的业务。

阅读全文

虚拟内存系统

OS X 和 iOS 中都有一个虚拟内存系统在持续运行。在32位的系统中,它为每个进程提供 4GB 的地址空间,64位的系统中提供 18EB 的地址空间。但是实际的内存容量远比这个地址空间要小得多,在 OS X 中,为了应用程序能访问全部的虚拟地址空间,系统会将部分数据备份在磁盘上。物理内存不足时,不用的数据会被写到磁盘上,即将要使用到的数据会从磁盘读入内存,这个过程称为页面交换。磁盘中有一个特殊分区,用于备份内存中暂时不用的数据,这个分区被称之为后备存储(backing store)。

阅读全文

使用NSProxy实现对象的动态代理

动态代理可以在运行时期为协议(protocol)动态生成实现(implementations),请注意,这个很重要,是在运行时期动态为一个方法生成实现。使用动态代理可以为一系列功能相同的方法提供统一的实现,而不需要为每个接口实现相同的逻辑。

阅读全文

Example for markdown-pretty

Example for markdown-pretty

Here is a small example for highlighting c code:

#include <stdio.h>

/**
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
int main(int argh, char* argv[]) {
    printf("Hello\n");
    return 0;
}

Here is a small example for highlighting java code:

package com.google.mr4c;

/**
 * Copyright 2014 Google Inc. All rights reserved.
 * Unless required by applicable law or agreed to in writing.
 */
public class AlgoRunner {
    public static void main(String argv[]) throws Exception {
        AlgoRunnerConfig config = new AlgoRunnerConfig(true);
        config.setCommandLineArguments(argue);
        config.configure();
        AlgoRunner runner = new AlgoRunner(config);
        runner.executeStandalone();
    }
}

Here is a small example for highlighting python code:

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "example.settings")
    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)
}

Here is a small example for highlighting shell code:

nam install hero -g

done.