自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

石木石的仓库

本博客收集了一些我看到的、听到的、学到的,觉得有用的知识和大家进行分享!

  • 博客(30)
  • 资源 (1)
  • 收藏
  • 关注

原创 第四章 - 注释 - 读书心得

”别给糟糕的代码加注释 --- 重写吧“  --- Brian W.Kernighan & P.J.Plaugher注释不是万能的,良好的代码是不需要注释再做额外的解释的。注释的恰当用法是弥补我们在用代码表达意图时遭遇的失败。为什么是“失败”呢,因为注释说明了,代码无法清楚地表达自己。为什么不提倡注释? - 因为注释会撒谎的。1. 注释的可维护性差,很多时候我们更改代码是不会去更改

2013-08-16 17:22:29 699

转载 如何高效的访问内存

转载:http://lenky.info/2011/11/23/%e5%a6%82%e4%bd%95%e9%ab%98%e6%95%88%e7%影响内存访问速度的因素主要有:1.内存带宽:每秒读写内存的数据量,由硬件配置决定。2.CACHE高速缓冲:CPU与内存之间的缓冲器,当命中率比较高时能大大提供内存平均访问速度。3.TLB转换旁视缓冲:系统虚拟地址向物理地址转换的高速

2013-08-15 15:32:37 949

原创 第三章 - 函数 - 读书心得

1. 短小- 函数尽可能的维持在一屏可见的范围内。20行封顶代码最好。代码短小除了阅读轻松外,更便于理解,出错的概率也比较小。2. 只做一件事情- 我们常常期望函数具有可扩展性,貌似有点不一致???3. 每个函数一个抽象层级- 每个函数都对应一个抽象层级- 函数由相同抽象层级的其他函数组成自顶向下读代码:向下规则4. switch语句xxxx5. 使用描述性

2013-08-14 18:40:52 526

转载 减少搜索头文件的目录数

转自:http://yunli.blog.51cto.com/831344/1250264假设存在下图所示的项目目录结构。如果存在如下包含头文件的代码,则大多的项目中需要通过“-I foo”和“-I bar”指明两个搜索头文件的目录。12foo.c#include "bar.h"

2013-08-13 16:38:07 425

原创 第二章 - 有意义的命名 - 读书心得

1. 让代码会说话。- C/C++, python, Java...各种不同层次的编程语言,我首先强调“语言”这两个字。- 编程语言和我们日常交流用于其实并没有实质性的区别。都是一种表达方式。- 好的程序写出来也需要像日常交流一样能够正确清晰的表达自己。2. 名副其实- 何为名副其实,简单来说就是写的和做的一样。- 如果一个变量/函数定义出来之后仍然需要加额外的注释去注解。

2013-08-12 17:13:44 728

原创 第一章 - 整洁代码 - 读书心得

1. 既然说到整洁代码,前提当然是要有代码。2. 强调了糟糕代码的破坏力(可以废掉一个公司)。当然低下的投入产出比和更多的抱怨无可避免。3. 整洁的代码是从头开始的,推倒重新来过的新设计未必不会重蹈覆辙,关键是态度。4. 为什么代码越写越糟,而不是越写越好?- PM只关注进度,不关注质量?- QA只关注数据,不关注代码?- 程序员选择代码的堆砌,而不是代码的不断重设计?

2013-08-09 14:45:07 511

转载 用rdtsc实现linux下的精确计时

转自:http://blog.csdn.net/x86/article/details/2235267在linux开发版最长问到的问题之一就是在linux下如何得到更精确的计时。其实有很多办法,比如以前就有人用select。不过现在有更精确的实时时钟可以用,这就是用CLOCK_PROCESS_CPUTIME_ID做参数通过timer_create来创建timer。通过clock_getre

2013-08-07 13:14:52 3045

转载 Linux下格式化输出字符串

转自:http://www.linuxidc.com/Linux/2011-03/32903.htm格式:printf("\033[字背景颜色;字体颜色m字符串\033[0m" );printf("\033[41;32m字体背景是红色,字是绿色\033[0m\n");41是字背景颜色, 32是字体的颜色, 字体背景是红色,字是绿色是字符串.  后面的\033[0m是控制

2013-07-23 15:20:47 2051

转载 C++中const用法总结

转自:http://www.cnblogs.com/lichkingct/archive/2009/04/21/1440848.html1. const修饰普通变量和指针const修饰变量,一般有两种写法:const TYPE value;TYPE const value;这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。

2013-07-23 11:04:43 375

转载 [C语言]支持命名参数的函数调用

转载自:http://www.cnblogs.com/cbscan/archive/2012/10/26/2741817.html对于参数较多的函数,如UI库函数,你很难去记忆每个位置的参数类型和意义,尤其在你的IDE比较简陋的开发环境下,尤为痛苦,可能你需要频繁的查询文档。像Python这样语言,原生支持命名参数,如def func(name, age): pri

2013-06-20 17:32:34 482

转载 有序插入时,数组与链表效率比较

绝对不是。这确实让人很不理解,毕竟为了将某元素插入到数组合适的地方,需要将此地方及以后的元素都要向后平移,而对链表来说,简单地新申请一个节点和改变两个指针变量的值即可,甚至,我们还可以预先一次性申请一堆节点。但是Programming Pearls(英文版第2版)第137页列出一张表,证实情况不那么简单。表列出数据表明了向相应数据结构中插入m个0~n(n = 1,000,000)之间的随机数的

2013-06-13 15:57:01 2955 1

转载 用Raspberry Pi和乐高打造廉价超级计算机

南安普顿大学教授Cox和他六岁大的儿子在乐高超级计算机前合影在普罗大众的眼里,超级计算机和F1方程式赛车一样是梦幻性能和天价投入的组合,是骨灰级发烧友做梦都不敢奢望的顶级机器。超级计算机的人才荒,也与超级计算机的使用人数太少有关,但这一切有望得到改变。根据Wired的报道,英国南安普顿大学计算方法教授Simon Cox认为超级计算机应当"从娃娃抓起”,他带领一帮工程师用最廉价的

2013-03-19 09:12:05 1602

转载 纪念google codesearch,同时提供好的codesearch替代品

Google codesearch团队道歉信亲们:我们对即将关闭一事感到抱歉,但很不幸的是这已经是板儿上钉钉的事了。你可能已经注意到我们最近一直很消极,因为我们也曾为该项目的投资而奔波。公司里的人们也都非常伤心,但这是来自高层的决定。不过其实还有一线希望,Googlecode.com将取代工程的搜索,也会代替Chromium的搜索页面(如果Chromium OS和Android也对

2013-03-15 14:36:40 909

转载 圈复杂度计算公式 - Cyclomatic Complexity

如果一个模块流程如下有e条边n个节点,它的圈复杂度v(G) = e-n+2例:使用工具跟踪代码的复杂度Klocwork

2013-01-14 15:28:01 4238 1

原创 减小圈复杂度 - Cyclomatic Complexity

由于之前开发的模块是C++的,功能也相对简单,代码整体上来说简洁明了,清晰易懂。最近呢,由于项目原因,需要去熟悉C代码,因为功能相对复杂一些,所以每个函数都是很大,几百行一个。其实行数倒是其次,最让我讨厌的是代码本身写得是太复杂。简单一个例子就是:void func(){ if (condition) { ... if (condition

2013-01-14 15:16:20 7935

原创 形式参数的声明是放在函数定义的第2行-(args definition of function)

在查看gzip软件的源代码时,发现很多感觉很奇怪的函数定义。如下:intgetopt (argc, argv, optstring) int argc; char *const *argv; const char *optstring;感到很莫名。上网查找之后,才知道。在老版本C语言中,函数的形式参数的声明是放在函数定义的第2行的。所

2013-01-07 16:54:43 412

原创 免费域名注册-(Free domains for all)

在网上发现一个还不错的免费域名注册网站TK。网页简洁明了。按照指示一步一步填写就可以了。如果懒得自己搭域名服务器,还可以直接选择将域名链接到自己的博客等等。使用google账户注册之后,还可以对已注册域名进行修改。有兴趣大家可以试一试。本博客的domain: dreamthink.tk

2013-01-07 10:42:25 1544

原创 关于软件质量的思考-(thought of software quantity)

在网上看到一篇文章《软件质量管理之困境与对策思考》的文章,很有想法。和作者本人进行了沟通。一下是我对软件质量管理的砍翻以及作者的评论。希望对大家有所帮助。1. 关于“哑铃型”组织结构从你的分析可以得出,质量管理部门和软件开发部门很容易形成两种对立的部门。由于在管理过程中,不能忽略的情感因素,两大部门之间沟通的桥梁 - 数据,很容易出现误差。本身数据对软件质量的反馈,本身就存在不

2013-01-07 10:30:37 390 1

原创 负载均衡-指定进程/线程运行的CPU-(affinity setup)

多线程、多进程的情况下。可以同过指定CPU进行负载均衡,而不是让操作系统自动进行负载均衡。因为你比操作系统更了解自己的程序,为了避免调度器愚蠢的调度你的程序,或是为了在多线程程序中避免缓存失效造成的开销。进程指定函数:sched_setaffinity(); sched_getaffinity();线程指定函数:pthread_setaffinity_np(); p

2012-12-26 17:32:44 638

转载 软件版本Beta,RC,Demo,Build等的什么意思-(definition of each software's version)

转自:http://www.linuxdiyf.com/viewarticle.php?id=137414版本号:V(Version):即版本,通常用数字表示版本号。(如:EVEREST Ultimate v4.20.1188 Beta )Build:用数字或日期标示版本号的一种方式。(如:VeryCD eMule v0.48a Build 071112)SP:Service Pa

2012-12-26 17:03:36 405

转载 别的程序员是怎么读你的简历的

下面这个图片来源国外,是一个关于程序员面试时的简历,被人事部门和程序员本身评审的角度不同的图片。当然,这是一个从国外面试的视角制作的图片,不过,可以看出,其中很多东西都是和国内是相同的。让我们通过这个图片也来了解一下自身吧。下面是我对其做的翻译,翻译水平有限,请大家指正。人事部门是这样阅读简历的(+15分)如果简历中说到了和工作职位相符的技能超过5次以上。(

2012-12-05 14:23:45 448

转载 一个fork的面试题

这个题是这样的:题目:请问下面的程序一共输出多少个“-”?1234567891011121314#include #include #include  intmain(void)

2012-12-05 13:56:35 378

转载 LaTeX学习笔记

如果还没有安装 LaTeX,参看下面的链接LaTeX下载,中文 LaTeX下载如果还是LaTeX新手, 建议看下面链接中的入门教材。LaTeX 教程, LaTEX入门教程-------------------------------------------下面的内容转载自:http://tech.idv2.com/2006/04/03/lat

2012-12-04 17:36:28 2826

转载 LaTeX快速入门

如果还没有安装 LaTeX,参看下面的链接LaTeX下载,中文 LaTeX下载如果还是LaTeX新手, 建议看下面链接中的入门教材。LaTeX 教程, LaTEX入门教程一定要把上面的入门教材稍微翻一下, 好在碰到问题的时候查找。基本概念: 比如导言区, 从那里开始写中文, 如何输入数学符号等。明白这些基本概念之后,接下来从这里找一个

2012-12-04 15:54:41 749

原创 定制自己的Wireshark解析工具

每当使用Wireshark抓到一堆log,却无从下手时。总是想着如果wireshark能够自动解析就好了。经过调查,现在有以下两种方法可以定制自己的Wireshark解析器。①编译自己的wireshark工具URL: http://www.codeproject.com/Articles/19426/C reating-Your-Own-Custom-Wiresha

2012-11-07 13:48:32 619

转载 linux下多定时器的实现-(multimer implementation under linux)

概论定时器属于基本的基础组件,不管是用户空间的程序开发,还是内核空间的程序开发,很多时候都需要有定时器作为基础组件的支持,但使用场景的不同,对定时器的实现考虑也不尽相同,本文讨论了在 Linux 环境下,应用层和内核层的定时器的各种实现方法,并分析了各种实现方法的利弊以及适宜的使用环境。首先,给出一个基本模型,定时器的实现,需要具备以下几个行为,这也是在后面评判各种定时器实现的一个

2012-09-06 10:39:34 456

原创 linux的几种定时器实现-(timer implementation under linux)

使用定时器的目的无非是为了周期性的执行某一任务,或者是到了一个指定时间去执行某一个任务。要达到这一目的,一般有两个常见的比较有效的方法。linux内部的三个定时器(setitimer);sleep, usleep函数让进程睡眠一段时间,使用alarm定时发出一个信号;用gettimeofday, difftime等自己来计算时间间隔,然后时间到了就执行某一任务,但是这种方法

2012-09-06 10:27:29 513

原创 定时器与线程的同步-(sync between timer and thead)

基站开发的时候,我们需要做一个debug工具,以便将来做外场测试的时候用。工具中有一个测量项是需要计算数据的速率。那么我们都知道,除了在数据收集的地方做累加以外,还需要有一个定时器做时钟的参考。事实上数据是在线程中接收的,1ms内可能收到好几个包,没收到一个数据包,就对数据量做一次累加。 然后我们在外部起一个定时器用来周期性的收集并复位。看似很简单,但是我们遇到的问题是,当我们解析出来

2012-09-06 10:20:45 617

原创 在Cygwin环境下,堆栈的修改-(stack modification under cygwin)

在linux环境下,修改堆栈的大小可以通过ulimit -s stacksize在cygwin环境下,上述方法不可行,那么可以通过gcc -Wl,--stack,stacksize *.c来修改栈大小。

2012-08-30 13:24:50 1615

转载 关于hudson上的job迁移-(job migration of hudson)

迁移过程分为两部分,一部分是要迁移slave上的数据;还有一部分是要迁移master上的数据; 对于slave上的任务信息,只要把workspace下的所有数据拷贝到新的slave上的workspace目录下既可上面的事情做完了,在新的hudson master上并看不到相关的job。这个时候还要迁移master的数据,同样的要把数据从旧的master上拷贝到新的master,但是这还

2012-07-16 16:35:56 659

cx_freeze打包软件

python 打包软件 cx_freeze打包软件

2012-10-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除