链表技巧

在软件开发中,我想链表是除了数组之外,用的最多的一种数据结构。但是,如何把链表结构和数据本身能够完美地融合在一起,这本身确是一件复杂的事情。但是linux kernel在这方面为我们做出了示范,让我们在充分地享受方便的同时,无需考虑链表的一些具体操作。那么,在linux kernel下面,链表是怎...

2016-02-29 22:03:32

阅读数 255

评论数 0

软件调试及单元测试

对于很多程序员朋友来说,编写代码要比调试代码快乐的多。似乎创造软件比维护软件更能给人带来成就感。然而,在企业里面维护前人留下的代码也是工作中不可缺少的一项内容。所以,如何调试软件,更快更好地寻找软件中的bug,就成了我们必须学习的一门功课。当然,有人查找故障很快,而有的人却要慢一点,这中间的原因很...

2016-02-29 21:58:29

阅读数 1341

评论数 0

函数压栈及协议栈的基本技术

在编译器编译文件的时候,软件会根据程序本身的要求对函数作不同的压栈处理。有的压栈是按照从左到右进行压栈,有的压栈是按照从右到左进行压栈,有的不压栈、直接用寄存器代替,有的是需要被调用函数自身自己平衡堆栈。下面,我们就可以一个一个自己看看。首先,随便写一个函数, [cpp] view pla...

2016-02-29 21:49:31

阅读数 319

评论数 0

编译器是怎么工作的

编译器一直是我比较喜欢的话题。编译器是个比较神奇的工具,它可以把原来毫无意义的字符数据转变成一行一行可以执行的代码。作为每一个科班出身的同学来说,编译原理都是专业学习中必须经历的一个部分。只是在后来的工作中,真正从事编译器开发的同学少之又少,但是如果你懂得了编译原理的相关机理,会给你的工作带来很大...

2016-02-29 21:48:12

阅读数 632

评论数 0

c语言编程规范和范例及写给自己的C++编程规范

c语言编程规范和范例 1 排版 1    1-1:程序块要采用缩进风格编写,缩进的空格数为4个。 说明:对于由开发工具自动生成的代码可以有不一致。 1    1-2:相对独立的程序块之间、变量说明之后必须加空行。 示例:如下例子不符合规范。 if (!valid_ni(ni)) {     .....

2016-02-29 21:46:19

阅读数 3185

评论数 0

构建自己的代码库及软件开发不能是加工作坊--及一个简单的Linux C程序开发框架—linux-dev-framework

对于我这样一个C语言的程序员来说,编写C++的机会其实不太多。但是我还是比较喜欢写C++语言,原因主要有几个方面:(1)自己学C++语言的时间比较长了,也比较了解,如果从大一的时候算起,现在也有小十年了;(2)windows下面的开发工具确实很好用,比如调试器调用、汇编代码查看也方便,学起来其实没...

2016-02-29 21:37:07

阅读数 1568

评论数 1

寻找开源代码的方式

我平时看代码主要是C和C++代码为主,Java代码也会偶尔看一下。平时除了自己积累一些代码之外,也会主动去寻找一些代码,比如说, (1)到sourceforge上查找相关代码; (2)到google code上面查找具体的代码; (3)到apache网站上寻找java的相关代码; (4)直...

2016-02-29 21:33:34

阅读数 4890

评论数 0

编写用户侧定时器

定时器是我们在平时开发中经常使用到的工具,特别是在协议的编写上更是必不可少的组成部分。虽然系统本身给我们提供了定时器,但是有的时候,我们也想自己编写一个粗粒度的定时器,比如说在单元测试的时候。大家只要看到下面的实例代码,其实就会发现,只要利用一下sleep函数,编写属于自己的定时器原来不是一件复杂...

2016-02-29 21:25:15

阅读数 239

评论数 0

为什么循环队列具有先天的并行性

循环队列是很多人喜欢用的一种数据结构。本着先来先服务的特性,循环队列是一种十分简单、健壮的数据结构。不像链表、二叉树,如果使用不慎,就会造成很大的麻烦,但是在循环队列上面则没有这个烦恼。     同样而言,循环队列具有很强的并行性,如果服务的数据比较少,那么完全可以利用两个线程进...

2016-02-29 21:22:50

阅读数 218

评论数 0

linux PV操作理解

进程通常分为就绪、运行和阻塞三个工作状态。三种状态在某些条件下可以转换,三者之间的转换关系如下: 进程三个状态之间的转换就是靠PV操作来控制的。PV操作主要就是P操作、V操作和信号量。其中信号量起到了至关重要的作用。 信号量 信号量是最早出现的用来...

2016-02-29 21:19:19

阅读数 3396

评论数 0

从开源的宝库中学习

有几点和大家分享一下,主要是使用linux和ubuntu系统的体会,     (01)新公司的开发环境是ubuntu。同样如vmware一样,我们可以在linux下使用virtual box访问windows;     (02)使用ubuntu非常方便,用户界面非常友好,有...

2016-02-29 21:00:13

阅读数 290

评论数 0

linux c 提高代码质量的几个测试工具

很多it公司对于软件开发都有严格的分工,这包括设计、测试、服务支持等等。但是,我一直都认为只有开发者才是真正对软件质量负责的人。没有好的软件设计,软件质量基本上是无从谈起。当然,要做到这一点是需要额外的一些工具来进行保证的。因为这一段时间都是在linux上开发的,所以下面涉及到的工具基本上都是基于...

2016-02-29 20:37:54

阅读数 1144

评论数 0

网络编程中的一些问题总结

以前,也写过网络编程的一些代码,但是写的不太好。仔细想来,还是对tcp/ip协议理解得不够。加上最近看lwip的实现,学习一下github上开源的代码,再练习一下,也有很多收获。     a)tcp是面向连接的,udp是非连接的。tcp的超时重传和拥塞控制机制,保证了tcp的稳定...

2016-02-29 20:30:02

阅读数 282

评论数 0

高质量代码开发总结

编写代码本身不是一件很复杂的事情。按照一定的逻辑,配合一定的IDE工具,撸起袖子马上就可以干起来。但是不可否认,人与人开发代码的质量还是有差别的。有的同学虽然写代码写了很长时间,但是常常眉毛胡子一把抓,要结构没有结构,要逻辑没有逻辑,更谈不上扩展、测试和性能分析了。那么,个人怎么写出质量还可以的代...

2016-02-29 20:15:07

阅读数 326

评论数 0

linux 嵌入式操作系统内核原理和开发总结

很多朋友都喜欢嵌入式操作系统的内容,但是如何实现和仿真这样一个系统一直是困扰我们的难题。现在郑重推荐一下raw-os系统,在我们的博客当中也多次提到了这个代码,希望大家可以多多阅读,不断加深对os的认识。如果有可能,大家可以到http://ishare.iask.sina.com.cn/f/334...

2016-02-29 20:02:53

阅读数 286

评论数 0

linux c 多线程编程总结

多线程一直是我比较喜欢的话题,当然也是很多朋友比较害怕的话题。喜欢它,因为它确实可以提高pc的使用效率;讨厌它,因为如果对它处理不好,反而会导致更大的麻烦。这里断断续续写了这么多,没有什么新意,主要是想结合自己这么多年的个人经历谈一谈自己的想法而已。真心希望这些文章能够达到抛砖引玉的效果,更多的达...

2016-02-29 19:46:25

阅读数 259

评论数 0

linux c 算法总结

自10月初编写算法系列的博客以来,陆陆续续以来写了几十篇。按照计划,还有三个部分的内容没有介绍,主要是(Dijkstra算法、二叉平衡树、红黑树)。这部分会在后面的博客补充完整。这里主要是做一个总结,有兴趣的朋友可以好好看看,欢迎大家提出宝贵意见。     (1) 排序算法 ...

2016-02-29 19:43:50

阅读数 223

评论数 0

linux c 编程模板总结(二)

01)linux下的c语言开发(网络编程) 02)linux下的c语言开发(线程互斥) 03)linux下的c语言开发(线程等待) 04)linux下的c语言开发(多线程编程) 05)linux下的c语言开发(管道通信) 06)linux下的c语言开发(信号处理) 07...

2016-02-29 19:40:55

阅读数 530

评论数 0

linux c 进程间通信实例代码总结

http://www.tldp.org/LDP/lpg/node7.html linux管道之 pipe()函数的使用   pipe(建立管道): 表头文件: #include 定义函数: int pipe(int filedes[2]); 函数说明: pipe()...

2016-02-29 16:06:27

阅读数 421

评论数 0

linux下的C语言编程(总结篇)

在Linux下面关于C语言的内容其实挺多的。不同的人关注的地方也不一样。关注系统设计的人可能更关注整个linux系统的结构;设计驱动的人可能更关注linux驱动的配置和实现;而我在这里所关注的只是linux应用层方面的内容,属于最基础的内容,当然也是最重要的内容。实际上对应于C语言的理解在很大程度...

2016-02-29 15:01:33

阅读数 385

评论数 0

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