自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 C语言开发总结(十八)

优秀程序员不得不知道的20个位运算技巧 一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读《编程之美》求“1的数目”时,我才开始觉得位...

2015-11-29 22:34:45 372 0

原创 C语言开发总结(十七)

浅析为什么char类型的范围是 —128~+127  在C语言中, signed char 类型的范围为-128~127,每本教科书上也这么写,但是没有哪一本书上(包括老师)也不会给你为什么是-128~127,这个问题貌似看起来也很简单容易, 以至于不用去思考为什么,不是有一个整型范围的...

2015-11-29 22:04:22 352 0

原创 C语言开发总结(十六)

sizeof() 与strlen()  sizeof 是C/C++的一种运算符,用来返回数据类型占用内存的字节数。返回类型是 size_t 其实就是 typedef unsigned int size_t;      它有三种形式:      1) sizeof( obj...

2015-11-28 23:21:39 292 0

原创 C语言开发总结(十五)

C语言宏定义 1、为什么要有宏定义?         代码中某个特定数值需要参与运算,而且该数值作用于多个地方,当需要对该数值进行修改时,希望只改动一个地方就能实现该数值的全部更新;即便某个数值只用到一次,当修改时也会面临搜索阅读大量代码、数值含义不明晰的问题;某些“操作块”封装成...

2015-11-28 22:20:12 246 0

原创 C语言开发总结(十四)

C语言位域的使用及其注意点 所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。位域的定义和位域变量的说明位域定义与结构定义相仿,其形式为: struct 位域结...

2015-11-28 19:09:52 357 0

原创 C语言开发总结(十三)

C语言中没有main函数生成可执行程序的几种方法 1、define预处理指令 这种方式很简单,只是简单地将main字符串用宏来代替,或者使用##拼接字符串。示例程序如下: #include #define begin main int begin(void) { p...

2015-11-28 18:51:21 620 0

原创 C语言开发总结(十二)

C函数调用与堆栈的变化 转载自这个博客:http://www.cnblogs.com/dahai/archive/2011/07/29/2120651.html 感想:这个的堆栈的图示画的还是非常好的。。。。。。。,反汇编的注释也是相当通俗易懂,就是纳闷,我的反汇编的代码为嘛不好复...

2015-11-27 21:24:14 299 0

原创 C语言开发总结(十一)

单片机C语言模块化编程 下面让我们揭开模块化神秘面纱,一窥其真面目。      C语言源文件 *.c          提到C语言源文件,大家都不会陌生。因为我们平常写的程序代码几乎都在这个XX.C文件里面。编译器也是以此文件来进行编译并生成相应的目标文件。作为模块化编程的组成基础,我们所要实现的...

2015-11-27 20:56:14 438 0

原创 C语言开发总结(十)

exit和_exit的区别 exit()在结束调用它的进程之前,要进行如下步骤:  1.cleanup();  2.在atexit()注册的函数;  最后调用_exit()函数。。。  ‘exit()’与‘_exit()’有不少区别在使用‘fork()’,特别是‘vfork()’时变得很  突...

2015-11-27 15:34:55 387 0

原创 多个进程间共享动态链接库的原理

多个进程间共享动态链接库的原理  同样这个问题是我在面试总监的时候,总监问我的一个问题,这些天一直 忙活,都没有好好看书了,今天总结一下这个问题?为什么一个进程用完一个动态链接库以后另一个进程还可以继续使用呢?当时回答的很是笼统,只说对了答案的一半,现在就在这里好...

2015-11-27 15:04:56 877 0

原创 C语言开发总结(九)

Socket send函数和recv函数协议角度解释 1.send 函数 int send( SOCKET s, const char FAR *buf, int len, int flags );       不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数...

2015-11-27 14:01:14 277 0

原创 C语言开发总结(八)

基于C语言字符串函数的一些使用心得 就字符串的拼接函数为例strcat. 原型:extern char *strcat(char *dest,char *src); 用法:#include 功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0'...

2015-11-27 13:40:01 271 0

原创 移动终端访问互联网时socket的传输过程详解

http://www.zhihujingxuan.com/23124.html http://www.zhihu.com/question/23989027/answer/33611749 http://www.zhihu.com/question/26558233/answer/3342...

2015-11-26 21:20:34 4598 0

原创 手机如何上网?3G如何建立TCT连接?3G如何建立HTTP连接?

回答得最好的知乎: http://www.zhihujingxuan.com/23124.html TCP连接、Http连接与Socket连接 http://www.blogjava.net/thisliy/archive/2009/1...

2015-11-25 22:02:36 439 0

原创 C语言开发总结(七)

C语言字符串操作总结大全(超详细) C里面最困难部分居然是字符串! 1)字符串操作  strcpy(p, p1) 复制字符串  strncpy(p, p1, n) 复制指定长度字符串  strcat(p, p1) 附加字符串  strncat(p, p1, n) 附加指...

2015-11-25 21:58:15 236 0

原创 C语言开发总结(六)

内核态与用户态    内核态与用户态是操作系统的两种运行级别,intel cpu提供Ring0-Ring3三种级别的运行模式。Ring0级别最高,Ring3最低。其中特权级0(Ring0)是留给操作系统代码,设备驱动程序代码使用的,它们工作于系统核心态;而特权极3(Ring3)则给普通的...

2015-11-25 18:26:28 367 0

原创 C语言开发总结(五)

端口号的总结 端口号---具有网络功能的应用软件的标识号。注意,端口号是不固定的,即可以由用户手工可以分配(当然,一般在软件编写时就已经定义)。当然,有很多应用软件有公认的默认的端口,比如FTP:20和21,HTTP:80,TELNET:23等等,这里就不一一列举了。一个软件可以拥有多个端口号,...

2015-11-25 17:56:39 263 0

原创 C语言开发总结(四)

linux网络编程基础知识 网络编程,一定离不开套接口;那什么是套接口呢?在Linux下,所有的I/O操作都是通过读写文件描述符而产生的,文件描述符是一个和打开的 文件相关联的整数,这个文件并不只包括真正存储在磁盘上的文件,还包括一个网络连接、一个命名管道、一个终端等,而套接口就是系统进程和...

2015-11-25 17:45:44 271 0

原创 C语言开发总结(三)

c语言中static 用法总结   一、c程序存储空间布局 C程序一直由下列部分组成:       1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令;       2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,...

2015-11-25 17:43:48 226 0

原创 C语言开发总结(二)

2.1 C语言 #error作用 #error 预处理指令的作用是,编译程序时,只要遇到#error 就会生成一个编译错误提 示消息,并停止编译。其语法格式为: #error error-message 注意,宏串error-message 不用双引号包围。遇到#error 指令时,错误信...

2015-11-20 17:58:37 219 0

原创 C语言开发总结(一)

1.1 c++中的 -> 、::、 .的作用,都分别用在什么地方 ->是指针,是一个指针变量访问其所指向地址存放其内部成员的方式;如struct A{int a;int b;}tmp; struct A *p = new struct A; coutab;其使用是和.类似,不同...

2015-11-20 16:04:18 264 0

原创 定义函数指针

1  定义一个函数指针 且不论语法,有两种不同形式的指针函数: 一个是指向普通的C函数的指针和C++的静态成员函数,另外一个是指向C++的非静态成员函数的指针。这两者的基本区别是所有指向非静态成员函数的指针都 需要这个隐含定义:指向本类的一个This指针。注意:这两种函数指针彼此不兼容。 ...

2015-11-16 16:43:31 165 0

原创 多CPU支持下的 percpu 变量分析

/*  *使用一个数组,来记录对于每个特定的CPU的变量的地址偏移量。  *有些CPU有自己独特的技术来实现。  */ #ifndef __per_cpu_offset extern unsigned long __per_cpu_offset[NR_CPUS]; ...

2015-11-15 16:41:34 579 0

原创 计算机指令级并行

提高桌面级计算机指令级并行度的方法 http://ce.sysu.edu.cn/hope2008/Education/ShowArticle.asp?ArticleID=13367 作者:未知    厚朴教育来源:转载    点击数:525    更新时间:2011-7-24 ...

2015-11-15 15:24:57 463 0

原创 分布式计算、并行计算及集群、网格、云计算的区别

并行计算:并行计算是相对于串行计算来说的。可分为时间上的并行和空间上的并行。 时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。例如基于CUDA编程。并行计算的目的就是提供单处理器无法提供的性能(处理器能力或存储器),使用多处理器求解单个问题。 总结:并行的主体 ...

2015-11-15 15:24:00 287 0

原创 理解 Linux 配置文件

理解 Linux 配置文件 分类和使用 本文说明了 Linux 系统的配置文件,在多用户、多任务环境中,配置文件控制用户权限、系统应用程序、守护进程、服务和其它管理任务。这些任务包括管理用户帐号、分配磁盘配额、管理电子邮件和新闻组,以及配置内核参数。本文还根据配置文件的使用...

2015-11-15 15:20:42 296 0

原创 gdb 调试openmp多线程程序 示例介绍

2014-05-21 11:46 427人阅读 评论(0) 收藏 举报 [html] view plaincopy  首先一个简单程序源代码:   [html] view plaincopy    ...

2015-11-15 15:09:59 833 0

原创 理解递归操作

1.先来看看一个经典的问题,汉诺塔问题 汉诺塔问题:大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 ...

2015-11-15 15:09:02 247 0

原创 vc中内存对齐

[cpp] view plaincopy #include   typedef struct MyStruct    {    double dda1;    char dda;    int type;   }MyStruct;    typedef ...

2015-11-15 15:08:18 237 0

原创 汇编里寄存器的作用

ebp和esp是32位的SP,BP esp是堆栈指针 ebp是基址指针 ESP与SP的关系就象AX与AL,AH的关系. 32位CPU所含有的寄存器有: 4个数据寄存器(EAX、EBX、ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) ...

2015-11-15 15:07:26 251 0

原创 c语言有趣的位运算

一、小技巧 1.与特殊数与&(1,0xAAAA,0x5555等)    应用:1.判断奇偶 2.见后面有趣应用 2.异或的技巧  本身异或为0,与0异或为本身,满足交换律。 应用:不借助第三个数交换两数,有趣应用4 [cpp] view ...

2015-11-15 15:06:41 310 0

原创 static在c语言中的作用

C程序一直由下列部分组成:       1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令;       2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。       3)非初始化数据段(bss段)——在程序中没有...

2015-11-15 15:05:58 219 0

原创 关于原码,反码,补码和左右移位的若干思考

1.为什么要使用原码,反码,补码 1)负数二进制怎么表示? 答:在原码中,高位为1就表示负数 2)计算机如何实现减法? 1-1=? 答:对于计算机,逻辑运算应该设计的简单,1-1可以表示为1+(-1),故没有减法,用加法实现减法。 1...

2015-11-15 15:03:16 511 0

原创 字符串处理易错点

一.知识点 1.字符指针和字符数组 (1)字符指针,是个变量,存放的是地址而已。是个指针,如只定义,则指针指向不可用的地址 ,不能乱用,则指针没指向任何地址,赋值后用来指向一个字符串。所以用时必须malloc (2)字符数组,定义是系统就为其分配了数组大小的区域。字符串定义时可以为数...

2015-11-15 15:02:39 325 0

原创 学习笔记一之编程基础

一、GCC -c:只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件。 -g:产生调试工具(GNU的gdb)所必要的符号信息,要想对编译出的程序进行调试,就必须加入这个选项。 -O,对程序进行优化编译、链接. 例 gcc –O o...

2015-11-15 15:01:57 184 0

原创 学习笔记二之文件与时间编程

Linux中文件编程可以使用两种方法:Linux系统调用,C语言库函数 前者依赖于Linux系统,后者与操作系统是独立的,在任何操作系统下,使用C语言库函数操作文件的方法都是相同的。 1.1系统调用-创建   int creat(const char *filename,m...

2015-11-15 15:00:42 127 0

原创 学习笔记三之进程控制

一、进程控制理论基础 定义 进程是一个具有一定独立功能的程序的一次运行活动。 状态 进程 进程ID(PID):标识进程的唯一数字 父进程的ID(PPID) 启动进程的用户ID(UID) 几个概念 进程互斥 进程互斥是指当有若干进程...

2015-11-15 14:59:32 181 0

原创 学习笔记七之网络编程(TCP)

一.Linux下TCP编程框架 TCP网络编程的流程包含服务器和客户端两种模式。服务器模式创建一个服务程序,等待客户端用户的连接,接收到用户的连接请求后,根据用户的请求进行处理;客户端模式则根据目的服务器的地址和端口进行连接,向服务器发送请求并对服务器的响应进行数据处理。 ...

2015-11-15 14:58:20 200 0

原创 __attribute__ ((packed)) 的作用

__attribute__ ((packed)) 的作用 最近在看我们的代码的时候发现声明类型的时候有 __attribute__ ((packed))的结构体类型声明,不知道是什么意思,查了下知道是如下含义: 1. __attribute__ ((packed)) 的...

2015-11-15 14:57:13 179 0

原创 跨平台时基于数据结构的网络通信

网络通信通常分为基于数据结构的和基于流的。HTTP协议就是后者的一个例子。     有时为了提高程序的处理速度和数据处理的方便,会使用基于数据结构的通信(不需要对流进行解析)。但是,当需要在多平台间进行通信时,基于数据结构的通信,往往要十分注意以下几个方面: [1] 字节序 [2] 变量长度...

2015-11-15 14:55:57 316 0

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