2016-07-18 derekchan
在程序界的远古时期,大神们手持键盘敲着机器语言跟庞大的机器打着交道,那时候机器语言还没有语义和语法,更没有封装的概念。后来进化到汇编语言,C语言时期,基础的功能特性就已经能满足当时的需求了,比如函数封装使其得于复用,但随着计算机的普及,操作系统的到来,面向过程语言已无法继续满足复杂的需求。 继续阅读 »
2016-08-04 ruki
tbox的默认内存分配,是完全基于自己的内存池架构,支持内存的快速分配,和对碎片的优化,并且支持各种内存泄露、溢出检测。 如果不想用tbox内置的默认内存分配管理,也可以灵活切换到其他分配模式,因为tbox现在已经完全支持allocator架构, 只要在init阶段传入不同的分配器模型,就能快速切换分配模式,例如: ```c /* 采用默认的tbox内存管理,启用内存池维护、碎片优化、内存泄露溢出检测等所有特性 * 相当于使用了:tb_default_allocator(tb_null, 0) */ tb_init(tb_null, tb_null); /* 采用默认的tbox内存管理,启用 继续阅读 »
2016-12-22 AnnatarHe
生成二叉树 type Node struct { data string left *Node right *Node } nodeG := Node{data: "g", left: nil, right: nil} nodeF := Node{data: "f", left: &nodeG, right: nil} nodeE := Node{data: "e", left: nil, right: nil} nodeD := Node{data: "d", left: &nodeE, right: nil} nodeC := Node{data: "c", left: nil, right: 继续阅读 »
2015-06-03 Eric Wang
 导出所有的数据库  mysqldump -uuserName -ppassword --all-database > D:/all.sql 需要注意的是,该命令需要在MySql的安装目录的bin目录下使用,例如在bin下输入mysqldump,会给出提示信息 bash C:\Program Files\MySQL\MySQL Server 5.6\bin > mysqldump Usage: mysqldump [OPTIONS] database [tables] OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] OR     mysqldum 继续阅读 »
2016-08-12 ruki
tbox对于数据文件的解析提供了完善的支持,可以对各种二进制数据,文件数据流,网络数据流等进行各种解析操作 并且提供了一整套字节解析、比特位解析的接口,来支持各种流模式: stream 通用数据流,提供对流式数据的读写和解析,支持多层流嵌套以及各种协议(http, socket, file, data ...) 对于如何使用stream,这里暂时不详细介绍了,之后会单独重点介绍下,这里主要是为了描述,如何使用stream来处理字节数据的解析 例如,我要从数据流中,读取一个大端的16bits数值,很简单,只要: c tb_uint16_t value; if (tb_stream_bread_u16_be(stream, 继续阅读 »
2016-08-01 YongHao Hu
C++
首先做了笔试题, 我觉得笔试题非常好, 才对公司有兴趣的. 笔试题忘记了 二面 全程英文,问了很多问题 算法,判断一个数是否power of two的方法 这个有多种办法,不断除以2是最笨的方法;还可以用二进制,直接&1判断最后一位是不是1;还有利用 C 语言库函数等等; 继续阅读 »
2015-03-04 Mithrilwoodrat
ctypes是一个Python库,可以提供C中的数据类型,调用链接库中的函数. 1.加载动态链接库 使用cdll.LoadLibrary或者CDLL. ex CDLL("libc,so,6") 2.调用已加载库中的函数 继续阅读 »
2016-09-18 ruki
tbox内置的libc库,有一份自有的printf实现,在支持了所有标准格式化参数的同时,也对其进行了一些扩展,来支持自定义的格式化参数打印, 例如: ```c // 输出定点数:3.14 tb_printf("%{fixed}\n", tb_float_to_fixed(3.14)); // 输出ipv4地址:127.0.0.1 tb_ipv4_t addr; tb_ipv4_set(&addr, "127.0.0.1"); tb_printf("%{ipv4}\n", &addr); ``` 以上两种都是TBOX内置的对象参数打印,你只需要吧你需要打印的对象名和对象描述函数注册进来,就行了。 其中%{ob 继续阅读 »
2016-09-18 ruki
tbox目前支持sqlite3、mysql两种关系型数据库(需要链接对应的libsqlite3.a和libmysql.a),并对其接口进行了封装,使用更加的方便简洁并且只需要换个url,就可以随时切换成其他数据库引擎,而不需要修改接口。 下面先看个简单的例子: ```c /* 初始化一个mysql数据库 * * localhost: 主机名,也可以是ip地址 * type: 数据库的类型,目前支持:mysql 和 sqlite3两种类型 * username: 数据库用户名 * password: 数据库用户密码 * databas 继续阅读 »
2016-08-03 ruki
tbox内部提供了两种定时器实现:timer和ltimer timer: 高精度版本,采用最小堆实现,复杂度是:O(log(n)) ltimer: 低精度版本,采用linux内核中的timing-wheel算法,复杂度是:O(1) 这里主要讲解下,如何使用timer实现高精度的定时器任务,精确到ms级别,对于低精度的ltimer,可以参考:低精度定时器的使用 下面先给个简单的例子来说明: ```c /* 定义一个定时器任务处理函数 * * @param killed 表示当前任务是否被tb_timer_task_kill强行kill掉的 * @param priv 投递任务时传入的用户自定义数据指针 */ stat 继续阅读 »