Frank Tan

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  13 随笔 :: 0 文章 :: 11 评论 :: 0 引用

2012年4月11日

正文内容加载中...
posted @ 2012-04-11 13:00 Frank Tan 阅读 (500) 评论 (3) 编辑

2011年2月20日

摘要:打通的方法不多说了,有时候会出现打通了还不需要密码的状况,这个时候一般是以下两种问题:1. ${HOME}、${HOME}/.ssh、${HOME}/.ssh/authorized_keys的权限不对,可以在/var/log/secure中查看。2. pub key 拷贝不对,如果在/var/log/secure中报error: key_read: uudecode *** failed,一般都是pub key拷贝不对,注意pub key是写在一行的,如果你用鼠标拷贝,容易拷成多行。 阅读全文
posted @ 2011-02-20 11:17 Frank Tan 阅读 (1107) 评论 (0) 编辑

2011年1月23日

摘要:尽量不要在你的程序中使用无符号类型,以免增加不必要的复杂性,尤其不要仅仅因为无符号类型不存在负数(比如年龄)而使用它来表示数值。 尽量使用像int那样的有符号数,这样在涉及混合类型操作(比如比较有符号数和无符号数)的时候不必担心边界情况(比如-1会被提升为一个非常大的正数)。 只有在使用位段和二进制掩码的时候才使用无符号数。 如果要混合操作有符号数和无符号数,应在表达式中使用强制类型转换,使它们同时为有符号数或无符号数,这样,就不必由编译器来选择结果的类型。 阅读全文
posted @ 2011-01-23 19:34 Frank Tan 阅读 (400) 评论 (0) 编辑

2011年1月16日

摘要:一直总是觉得自己做事不得要领,有些事情看别人做起来特别容易,而自己来做总是进步缓慢,今天在打斯诺克的时候这种感觉就特别强烈,在练习推杆的时候球总是向左偏一个球,在练直线球的时候发现球总是往右走,仔细想想可能是用上了腕力,还有待进一步训练。 有时候想想主要是自己考虑得太少,执行太不够坚定。 于是制定了一个斯诺克训练计划,不管效果如何,先按这个执行: 1. 每周练习两次,每次两个小时。 2. 推杆训练20分钟。 3. 中距离直线球练习20分钟。 4. 中袋蛇彩练习20分钟。 5. 角度球练习、其他校正练习1小时。 每次多想想,复盘,考虑为什么没达到目标。 愿我在2011年有大的进步。也希望通过先做 阅读全文
posted @ 2011-01-16 21:42 Frank Tan 阅读 (207) 评论 (0) 编辑

2011年1月9日

摘要:经常有人问我.bashrc和.bash_profile的区别,在这里把它写出来。 .bash_profile是在登陆的时候才会执行的,它也可以叫做.bash_login,也就是说你在命令行再运行bash命令的时候是不会执行这个文件里面的命令的。 而.bashrc恰好相反,是在执行子shell(sub-shell)的时候才会执行里面的命令。 现在默认的.bash_profile大多都有这么一句:[代码]所以登陆的时候也会执行到.bashrc里面的命令。 阅读全文
posted @ 2011-01-09 20:48 Frank Tan 阅读 (2415) 评论 (0) 编辑

2010年12月30日

摘要:今天同事发现一个问题,挂在/home的磁盘一共有107G,df 看发现该盘的空间已经用完,但使用du查看则所有文件加起来的空间只有7.4G,余下100G空间不知去向,系统中也未发现T状态的进程,在百思不得其解的情况下准备重新挂载,于是杀掉所有在使用/home的进程,竟然发现空间莫名其妙的回来了,经排查,发现杀掉的程序中有两个进程的日志文件不见了,原因是在程序运行的过程中同事手动删掉了这个正在写的日志文件,但程序由于已经打开过这个文件,还在一直不停的写,杀掉进程后,发现文件已经被删掉,于是空间就被“释放”了。 阅读全文
posted @ 2010-12-30 20:20 Frank Tan 阅读 (442) 评论 (2) 编辑

2010年12月15日

摘要:gtest的浮点数比较断言关于浮点数的比较,我们知道不能直接用==比较,除此之外,有比较绝对误差和相对误差以及转换为整数比较,http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm对浮点数的比较写得很详细。gtest使用的是将sign-and-magnitude representation 转为biased repesentation,然后再进行比较,而不是使用二进制补码的方式进行比较,这样可以不用管浮点数里的指数段表示法。关于这几种表示方法,可以在http://en.wikipedia.org/wi 阅读全文
posted @ 2010-12-15 09:07 Frank Tan 阅读 (948) 评论 (0) 编辑

2010年12月11日

摘要:GCC 提供的原子操作gcc从4.1.2提供了__sync_*系列的built-in函数,用于提供加减和逻辑运算的原子操作。其声明如下:[代码]这两组函数的区别在于第一组返回更新前的值,第二组返回更新后的值。type可以是1,2,4或8字节长度的int类型,即:[代码]后面的可扩展参数(...)用来指出哪些变量需要memory barrier,因为目前gcc实现的是full barrier(类似于linux kernel 中的mb(),表示这个操作之前的所有内存操作不会被重排序到这个操作之后),所以可以略掉这个参数。[代码]这两个函数提供原子的比较和交换,如果*ptr == oldval,就将 阅读全文
posted @ 2010-12-11 20:03 Frank Tan 阅读 (38839) 评论 (0) 编辑

摘要:LIKELY和UNLIKELY的一般定义如下:#define LIKELY(x) (__builtin_expect(!!(x),1))#define UNLIKELY(x) (__builtin_expect(!!(x),0))为什么要使用两个叹号呢?取两次非主要是为了顺利的和0或1进行比较。 阅读全文
posted @ 2010-12-11 00:02 Frank Tan 阅读 (589) 评论 (0) 编辑

2010年3月23日

摘要:今天一个同事问我如何将一列转换成一行,第一想法就是用sed,但是因为sed是行编辑器,所以如下ls -1 | sed -e "s/\n/ /g" 并不会生效。于是就告诉他先把要处理的内容放到vi里面,然后用J连接或者:%s/\n/ /g处理。后来他告诉我这样不够cool(他的原话),于是乎求助google,g到该命令:ls -1 | tr -s '\n' ' '如此任务就算完成了,仔细看了一下tr... 阅读全文
posted @ 2010-03-23 18:43 Frank Tan 阅读 (2286) 评论 (0) 编辑