2017-03-04 Eric Wang
作者简介:刘未鹏,南京大学计算机系硕士毕业,现就职于微软亚洲研究院创新工程中心,有自己的Blog Mind Hacks。域名 MindHacks.cn 的含义:  Mind Hacks 是一本书*  Mind Hacks 是一系列思维工具*  Mind Hacks 有一个漫长的前生——一个有着近6年历史的技术博客,在CSDN上有超过一百二十万的访问量,详见《前世档案|C++的罗浮宫》 * Mind Hacks 的博客作者创建了TopLanguage*:https://groups.google.com/group/pongba 善于利用思维时间的人,可以无形中比别人多出很多时间,从而实际意义上能比别人多活很多年。善于利用思维时间的 继续阅读 »
2016-02-04 ruki
TBOX的内存分配在调试模式下,可以检测支持内存泄露和越界,而且还能精确定位到出问题的那块内存具体分配位置,和函数调用堆栈。 内存泄露检测 内存泄露的检测必须在程序退出的前一刻,调用tb_exit()的时候,才会执行,如果有泄露,会有详细输出到终端上。 c tb_void_t tb_demo_leak() { tb_pointer_t data = tb_malloc0(10); } 输出: [tbox]: [error]: leak: 0x7f9d5b058908 at tb_static_fixed_pool_dump(): 735, memory/impl/stat 继续阅读 »
2016-10-21 Meng Lei
Nginx是一个俄罗斯开发的高性能HTTP服务器和反向代理服务器,功能丰富、性能强悍、运行稳定、应用广泛,完全使用C语言编写,可运行于各种Unix Like OS,并有Windows移植版本(不推荐用于生产环境)。 安装 在Ubuntu中,可以直接使用sudo apt-get install nginx 命令安装nginx,安装之后,默认的配置文件保存在 /etc/nginx 文件夹内,默认提供http服务的目录位置在 /usr/local/nginx/html。 配置 nginx的主配置文件是:nginx.conf ``` user www-data; #用户与用户组 worker_processes 4; #对外提 继续阅读 »
2016-05-26 ALEX LIN
更新日志 2016.09.09 UIImageView加载WebP格式的图片 2016.09.19 更新UI系列 2016.10.18 更新隐藏GroupedTableView上边多余的间隔 工具类 提取assets.car中的图片 iPhone 6 屏幕揭秘 iOS 通过获取iTunes上的APP信息,判断是否提醒升级APP POST https://itunes.apple.com/CN/lookup?id=978591579 使用POST方法,id 是iTunes connect里APP信息的Apple ID:为APP自动生成的id Charles 请求 HTTPS 出现 “You may need to c 继续阅读 »
2016-02-04 ruki
这里为了使代码更加简洁,直接用了transfer来挂接两路流的传输操作。 ```c // 初始化文件输入流 tb_stream_ref_t istream = tb_stream_init_from_url("/home/file.txt"); // 初始化文件输出流 tb_stream_ref_t ostream = tb_stream_init_from_file("/home/file.gz", TB_FILE_MODE_RW | TB_FILE_MODE_CREAT | TB_FILE_MODE_BINARY | TB_FILE_MODE_TRUNC); // 初始化解压缩流,以istream作为输入 继续阅读 »
2016-12-03 ruki
tbox provides a lightweight implementation of stackless coroutines and it's interfaces are very simple too, for example: c tb_lo_coroutine_enter(coroutine) { while (1) { tb_lo_coroutine_yield(); } } The switch performance of this stackless coroutines is faster than the implementation of tbox's 继续阅读 »
2017-04-04 LEo
go只提供了一种循环方式,即for循环,在使用时可以像c那样使用,也可以通过for range方式遍历容器类型如数组、切片和映射。但是在使用for range时,如果使用不当,就会出现一些问题,导致程序运行行为不如预期。比如,下面的示例程序将遍历一个切片,并将切片的值当成映射的键和值存入,切片类型是一个int型,映射的类型是键为int型,值为*int,即值是一个地址。 继续阅读 »
2016-03-17 ruki
tbox中提供了常用的一些stream模块,例如:data、file、http、sock等,可以通过指定不同的url,使用相同的接口 进行数据流的读写,非常的方便。 例如: ```c // init stream tb_stream_ref_t stream = tb_stream_init_from_url("http://www.xxx.com/file.txt"); if (stream) { // open stream if (tb_stream_open(stream)) { // read line 继续阅读 »
2017-12-31 Renfei Yu
主要说明不断更新的软件技术指引未来发展方向,此文持续更新。对于技术的共性给出必要的原理解释。 linux的基本技能,主要说明linux环境下c编程,shell;着重于基础概念,并不是作为进阶的工具,主要起到一个抛砖抛砖引玉的作用,能够通过对这些基本的技能的学习初步掌握解决问题的基本技能。此文章并不深入讨论各个技术点的细节,只是总结出技能之间的依赖关系,归纳出一般的学习步骤,希望对自己的思路有一个清晰的认识。 继续阅读 »
2016-08-02 ruki
tbox里面针对三个正则库(pcre/pcre2/posix)进行了封装,实现接口统一和跨平台处理,只要xmake在编译配置的时候自动检测到其中一种库,就可以使用了,一般会优先使用pcre2。 如果你不想过多的依赖第三方库,可以切换到posix的正则,调用 xmake f --pcre=false --pcre2=false 把pcre的库禁用了就行了。 首先给个最简单的匹配单个子串的例子: ```c // 执行简单匹配,第二个参数是匹配模式,默认传0就行了 tb_vector_ref_t results = tb_regex_match_done_simple("(\w+)\s+?(\w+)", 0, "he 继续阅读 »