自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 链表技巧

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

2016-02-29 22:03:32 288 0

原创 软件调试及单元测试

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

2016-02-29 21:58:29 1567 0

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

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

2016-02-29 21:49:31 351 0

原创 编译器是怎么工作的

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

2016-02-29 21:48:12 680 0

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

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

2016-02-29 21:46:19 3354 0

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

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

2016-02-29 21:37:07 1632 1

原创 寻找开源代码的方式

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

2016-02-29 21:33:34 6157 0

原创 编写用户侧定时器

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

2016-02-29 21:25:15 270 0

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

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

2016-02-29 21:22:50 243 0

原创 linux PV操作理解

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

2016-02-29 21:19:19 4899 0

原创 从开源的宝库中学习

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

2016-02-29 21:00:13 316 0

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

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

2016-02-29 20:37:54 1326 0

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

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

2016-02-29 20:30:02 312 0

原创 高质量代码开发总结

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

2016-02-29 20:15:07 354 0

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

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

2016-02-29 20:02:53 361 0

原创 linux c 多线程编程总结

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

2016-02-29 19:46:25 292 0

原创 linux c 算法总结

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

2016-02-29 19:43:50 259 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 580 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 480 0

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

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

2016-02-29 15:01:33 408 0

原创 linux c 代码测试之内存越界及内存泄露

内存越界是我们软件开发中经常遇到的一个问题。不经意间的复制常常导致很严重的后果。经常使用memset、memmove、strcpy、strncpy、strcat、sprintf的朋友肯定对此印象深刻,下面就是我个人在开发中实际遇到的一个开发问题,颇具典型。 [cpp] vie...

2016-02-27 22:04:54 2214 0

原创 linux c 编程模板总结(一)

字符处理函数: size_t strlcpy (char *dst, const char *src, size_t dst_sz) {     size_t n;     for (n = 0; n      {        if ((*dst++ = *src++) == '\0...

2016-02-27 21:58:50 1533 0

原创 C语言和设计模式(继承、封装、多态)

记得还在我们大学C++第一门课的时候,老师就告诉我们说,C++是一门面向对象的语言。C++有三个最重要的特点,即继承、封装、多态。等到后来随着编码的增多和工作经验的积累,我也慢慢明白了面向对象的含义。可是,等我工作以后,使用的编程语言更多的是C语言,这时候我又想能不能把C语言变成面向对象的语言呢?...

2016-02-27 21:21:54 413 0

原创 memmove 和 memcpy的区别

memcpy和memmove()都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下: void *memcpy(void *dst, const void *src, size_t count); void *memmove(void *dst,...

2016-02-26 22:04:28 292 0

原创 从问题看本质:socket到底是什么?及socket,端口,进程问答(收集整理)

一、问题的引入——socket的引入是为了解决不同计算机间进程间通信的问题 1.socket与进程的关系 1).socket与进程间的关系:socket   用来让一个进程和其他的进程互通信息(IPC),而Socket接口是TCP/IP网络的API接口函数。 2).进程间通信(本...

2016-02-26 11:23:01 3077 0

原创 linux下《UNIX环境高级编程》(apue2)源码编译出错的处理方法汇总

linux下《UNIX环境高级编程》(apue2)源码编译出错的处理方法 文章出处:http://www.diybl.com/course/3_program/c++/cppjs/2008617/126036.html 相信很多跟我一样想要学习unix编程的朋友在兴冲冲拿到《unix环境高...

2016-02-26 11:21:05 642 0

原创 .c和.h文件的区别(头文件与之实现文件的的关系~ )

.c和.h文件的区别 一个简单的问题:.c和.h文件的区别 学了几个月的C语言,反而觉得越来越不懂了。同样是子程序,可以定义在.c文件中,也可以定义在.h文件中,那这两个文件到底在用法上有什么区别呢? 2楼: 子程序不要定义在.h中。 函数定义要放在.c中,而.h只做声明.否则多...

2016-02-26 11:18:36 452 0

原创 linux大量使用了static关键字用来修饰函数和结构体定义,为何?

问:linux大量使用了static关键字用来修饰函数和结构体定义,为何? linux的内核代码大量使用了static关键字,到处可见,不管是函数还是struct 结构体定义都大量使用了static关键字,这么做的目的是什么?对于多线程数据 共享和线程自己的数据内容又该如何考虑? ...

2016-02-26 11:16:20 876 0

原创 linux C 开发中重要的数据结构——结构体

在linux的驱动开发中,最常用的,也最重要的数据结构是结构体,它也最容易使人混淆。要掌握结构体,首先要弄明白运算符的优先级: 在所有运算符中,下面4个运算符的优先级是最高的:结构体运算符“.”和“->”、用与函数调用的“()”以及用于下标的“[]”,因此它们同操作数之间的结合也最紧密...

2016-02-26 11:13:18 646 0

原创 C语言和设计模式(总结篇)

设计模式的书相信很多人都看过。对于设计模式这样一种方法,相信不同的人有不同的理解。我在这里写的博客只是我个人对设计模式的粗浅认识。文中肯定存在很多的不足和不成熟之处,希望朋友们谅解。望大家多多指正,谢谢! 01)C语言和设计模式(继承、封装、多态) 02)C语言和设计模式(...

2016-02-26 11:01:28 2203 0

原创 C学习地址汇总

http://blog.csdn.net/yeyuangen/article/details/44778771   http://www.jb51.net/article/40684.htm     http://blog.csdn.net/yeyuangen/article/detai...

2016-02-26 11:00:31 184 0

原创 C语言中extern的用法

在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。 1. extern修饰变量的声明。举例来说,如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern int v,然后就可以引用变量v。这里需要注意的是,...

2016-02-26 10:59:49 224 0

原创 Java面试宝典2015版(绝对值得收藏超长版)

Java面试宝典2015版(绝对值得收藏超长版)(一)   这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的朋友在笔试时更好地赢得笔试和面试。由于这套面试题涉及的范围很泛,很广,很杂,大家不可能一天两天就看完和学完这套...

2016-02-26 10:55:46 692 0

原创 写出高质量代码的10个Tips

很长一段时间以来,我都在关注如何提高代码质量,也为此做过一些尝试,我想这个话题可能大家会比较感兴趣,在这里分享一下我关于如何提高代码质量的一些体会。  1. 打好基础   写出高质量代码,并不是搭建空中楼阁,需要有一定的基础,这里我重点强调与代码质量密切相关的几点: 掌握...

2016-02-26 10:52:58 351 0

原创 深入解析java应用程序的一般架构

1. 不同系统不同语言之间的交互   现在我们常见的不同系统不同语言之间的交互使用WebService,Http请求。WebService,即“Web 服务”,简写为WS。从字面上理解,它其实就是“基于 Web的服务”。而服务却是双方的,有服务需求方,就有服务提供方。服务提供方对外发布服务,...

2016-02-26 10:51:27 495 0

原创 40个Java多线程问题总结

前言 个人认为,学习内容越多、越杂的知识,越需要进行深刻的总结,这样才能记忆深刻,将知识变成自己的。这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。 这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能...

2016-02-26 10:40:21 442 0

原创 Linux 软件的常用安装方法

对于操作系统而言,如果没有软件和一些任务算法 那么这个系统意义是不大的。而我们使用操作系统目的是为了让一些软件和任务能够运行在系统上,从而帮助我们提高工作的效率。 在Linux系统中常用的软件安装方式有yum rpm gcc(编译源码安装) 这3种方式,以下内容将对着3种安装方式做详细的介绍...

2016-02-26 10:39:11 395 0

原创 Java程序员应当知道的10个面向对象设计原则

面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心, 但我见过的大多数Java程序员热心于像Singleton (单例) 、 Decorator(装饰器)、Observer(观察者) 等设计模式,而没有把足够多的...

2016-02-26 10:38:40 352 0

原创 Java 中日期的几种常见操作 —— 取值、转换、加减、比较

Java 的开发过程中免不了与 Date 类型纠缠,准备总结一下项目经常使用的日期相关操作,JDK 版本 1.7,如果能够帮助大家节约那么几分钟起身活动一下,去泡杯咖啡,便是极好的,嘿嘿。当然,我只提供了可行的解决方案,并不保证是最佳实践,欢迎讨论。 1. 日期取值 在旧版本 JDK ...

2016-02-26 10:37:51 363 0

原创 10个经典的C语言小程序

今天给大家分享10个比较基础的C语言的小程序,希望给C语言初学者带来一定帮助。 1、题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排...

2016-02-26 10:36:54 587 0

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