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 继续阅读 »
2012-12-16 Klaus Ma
在编写Java程序时,Exception类的printStacktrace()可以打印异常堆栈,这个小工具极大的提高了调试效率;虽然不是一个好习惯,却很实用。习惯了Java编程,很希望 C/C++里也有这样的小工具可以帮助调试程序. 经过几天查找,发现其实每个系统都提供了打印调用堆栈的函数;这些函数是系统相关,这里仅以Linux下的函数作说明. Linux中共提供了三个函数用于打印调用堆栈: 继续阅读 »
2016-04-15 Eric Wang
把辛勤的耕作当做生命的必要,即使没有收获的指望依然心平气和的继续耕种。 路遥 在Java中,通常情况下,需要将异常堆栈信息输出到日志中,这样便于纠错及修正Bug,而多数情况下,大家最常用的是使用e.printStackTrace()直接打印堆栈信息完事,这并不是值的推荐的做法。 1. 当出现异常时,调用e.printStackTrace();其实相当于什么都没做,同时也不会把异常信息输出到日志文件中 2. 使用log.error(e.getMessage());只能够输出异常信息,但是并不包括异常堆栈,所以无法追踪出错的源点 3. 使用log.error(e);除了输出异常信息外,还能输出异常类型,但是同样不包括异常堆栈,该 继续阅读 »
2015-02-15 YongHao Hu
C++
亲爱的程序猿们,你们肯定都用过printf吧?你们知道,看起来理所当然的简单的printf,实际上是个难倒众多计算机科学家的难题吗?直到1971年,才有我们的毒师Mr.White科学家(Jon White)解决这个问题,直到1990年,我们的Mr.White才正式发表这算法的最终版本,Dragon4, 在随后到最近的几十年来,语言上的各种浮点数打印字符串都是用Dragon4算法,其他人的研究都只是对这个算法修修补补,直到Grisu算法的出现。Grisu算法由Florian Loitsch发表,64位的浮点数可以用它表示,但是有0.6%的依然要用Dragon4算法来表示。 因此,要是想做轮子,无论如何都要懂Dragon4算法!!! 继续阅读 »
2018-01-18 geekspeng
打印出 hello world 只是我们学习Python的第一步,但是仅仅打印出 hello world 肯定不能满足我们的需求,你可能会希望做得更多,比如写一个小脚本帮你抢火车票,接下来我们会介绍一些基本概念。 more 继续阅读 »
2018-03-01 石头人m
牛客网编程练习-剑指offer,python实现。 github链接 1.【链表】从尾到头打印链表 输入一个链表,从尾到头打印链表每个节点的值。 继续阅读 »
2015-02-26 刘太华
上段时间组内解决的一个奇葩内存泄露问题, 找到最终原因时发现真是奇坑无比的一个原因. 一开始怀疑某个逻辑会导致dict引用数一直增加, 或是其他对象始终不释放, 导致内存一直在涨, 期间开启gc collect也没用. 使用memory grapher 等内存泄露工具检测, 打印出一段时间对象的增长量, dict, list等数据结构的增长量, 从打印信息看虽然有一定问题, 但是确实不可能会导致那么严重的内存泄露, 我们某个游戏服有时甚至会突然从300MB进程内存, 很快就上涨到3GB. 继续阅读 »
2016-10-12 曹强
一些重构的建议: 提炼函数 * 避免出现超大函数 * 独立出来的函数有助于代码复用 * 独立出来的函数更容易被覆写 * 独立出来的函数如果拥有一个良好的命名, * 它本身就起到了注释的作用。 比如在一个负责取得用户信息的函数里面,我们还需要打印跟用户信息有关的log,那么打印log的语句就可以被封装在一个独立的函数里: var getUserInfo = function() { ajax('http://xxx.com/userInfo', function(data) { console.log('userId: ' + data.userId); console.log('u 继续阅读 »
2017-04-21 LEo
go提供了一种叫map的数据结构,可以翻译成映射,对应于其他语言的字典、哈希表。借助map,可以定义一个键和值,然后可以从map中获取、设置和删除这个值,尤其适合数据查找的场景。但是map的使用有一定的限制,如果是在单个协程中读写map,那么不会存在什么问题,如果是多个协程并发访问一个map,有可能会导致程序退出,并打印下面错误信息: 继续阅读 »
2016-07-16 ruki
首先我们通过内置的工程模板创建一个空工程: ```bash $ xmake create -P ./hello create hello ... create ok!👌 ``` 这个时候xmake将会产生一些工程文件,如下: ```bash $ cd ./hello $ tree . . ├── src │   └── main.c └── xmake.lua ``` 这个简单的程序仅仅只是为了打印输出: hello xmake! ```bash $ cat ./src/main.c include int main(int argc, char** argv) { printf("hello xmak 继续阅读 »