- 博客(32)
- 资源 (1)
- 收藏
- 关注
转载 TCP/IP
#include "unp.h"//TCP回射服务器程序:main函数 //IPv4套节字地址结构struct in_addr { in_addr_t s_addr;//IPv4地址,一般为带符号的32位整数};struct sockaddr_in //IPv4套节字地址结构名{ uint8_t sin_len;//无符号的8位整数,是长度字段,简化零长度可变
2014-08-25 16:59:42 406
转载 Makefile
ChinaUnix.net首页 | 论坛 | 博客 | Linux | 人才 | 培训 | 精华 | Wiki | 读书 | 资料 | 手册 | 下载 | 搜索 ChinaUnix首页 > 精华文章 > C/C++ > 正文
2014-05-12 10:57:00 495
转载 udhcp源码详解(三)上 之配置信息的读取
上节介绍了存储管理配置信息的结构体struct server_config_t,该结构体贯穿整个server端程序的运行。在dhcpd.c里的用该结构体定义个一个全局的变量:struct server_config_t server_config;在server启动做的第一件事就是初始化这个全局变量server_config:现在就进入read_config
2014-05-04 17:54:18 705
转载 如何编写一个完整的Linux命令
一个完整的Linux命令需要有以下几个重要的部分组成:1.使用方法2.命令行参数3.移植性1.使用方法在每个命令当中,都需要提供一个usage函数,当然名称不一定要用这个。看了很多开源软件,几乎都是使用usage命名。usage一般是在用户输入不规则的命令行参数才调用的,也就是打印出详细的使用方法。比如我以下随便给一个Linux命令传入一个没有被提供的参数,执行结果是这样:
2014-05-04 15:18:24 1026
转载 linux的Listen调用详解
listen系统可以使一台主机上的一个tcp socket在某个端口号被动侦听,等待来自其它主机的tcp socket的连接请求,下面是listen系统调用的函数原型: #include int listen(int s, int backlog); 1)backlog是侦听队列的长度,在内核函数中,首先对backlog作检查,如果大于128,则强制使其等于128。
2014-05-02 15:10:01 1032
转载 Linux服务器程序性能测试的一些思考
工作中对项目压力测试的一些心得,先自我作一个小结吧!(一)宏观与微观相结合 (1)宏观层面 即系统的一些关键性能指标,如:各进程所占CPU的百分比、内存消耗、网络包量、磁盘IO等等,详细指标列举如下:名称描述参考值CPU useageCPU 的使用时间百分比。
2014-05-02 14:39:16 507
转载 setsockopt()用法(参数详细说明)
int setsockopt(SOCKET s,int level,int optname,const char* optval,int optlen);s(套接字): 指向一个打开的套接口描述字level:(级别): 指定选项代码的类型。SOL_SOCKET: 基本套接口IPPROTO_IP: IPv4套接口IPPROTO_IPV6: IPv6套接
2014-05-01 18:04:44 563
转载 用户、用户组、角色的区别和联系
1、用户User:最终操作人员,权限的最终受益者,控制权限控制权限实际上就是控制用户的权限,而不是角色或者用户组的权限2、用户组UserGroup:是相对垂直而言的。比如说采购部这个用户组实际上是由采购部的业务员(暂且定义都为用户)组成的,具有上下级的明确关系;采购部只能查看属于采购部的文档,销售部只能查看属于销售部的文档,带有强烈的部门(组)性质,但是采购部业务员虽然都是属于同一个部门,但是
2014-04-30 22:15:49 11495
转载 回调函数,同步调用,异步调用,事件,消息循环
什么是回调函数?一,回调函数我们经常在C 设计时通过使用回调函数可以使有些应用(如定时器事件回调处理、用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函数)有何不同呢?使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。而那个函数
2014-04-30 17:45:53 917
转载 C/C++产生随机数
C/C++产生随机数用到两个函数rand() 和 srand()一. 不指定范围产生随机数 用到函数rand(),函数原型为int rand(),无参数。此时会产生一个介于0~RAND_MAX间的整数。RAND_MAX的大小可以查看,在include文件夹(linux在usr目录、windows在安装目录)的stdlib.h可以看到,linux下其值为2147483647(
2014-04-24 22:31:59 436
转载 oracle的jdbc连接方式:oci和thin
oracle的jdbc连接方式:oci和thin oci和thin是Oracle提供的两套Java访问Oracle数据库方式。 thin是一种瘦客户端的连接方式,即采用这种连接方式不需要安装oracle客户端,只要求classpath中包含jdbc驱动的jar包就行。thin就是纯粹用Java写的ORACLE数据库访问接口。oci是一种胖客户端的连接方式,即采用这种
2014-02-26 21:26:30 611
转载 C++中const的用法
看到const 关键字,很多程序员想到的可能是const 常量,这可有点象踩到陷井上还不知道自己危险了。读读以下文字会使你对c++中的const有一个全面的认识。const 是C++中常用的类型修饰符,有某些微妙的应用场合,如果没有搞清本源,则错误在所难免。本篇中将对const进行辨析。溯其本源,究其实质,希望能对大家理解const有所帮助,根据思维的承接关系,分为如下几个部分进行阐述。
2013-12-27 14:53:11 429
转载 C++中的namespace的用法
关键字namespace定义了一个名字空间,里面的变量和函数,声明在此名字空间外使用须在前面加名字空间名称.例如:#includenamespace my{int a=3;}class test{public:int a;test(){a=1;}void fb(){int a=0;cou
2013-12-26 11:37:43 635
转载 C++中的sort函数
起来自己天天排序排序,冒泡啊,二分查找啊,结果在STL中就自带了排序函数sort,qsort,总算把自己解脱了~所以自己总结了一下,首先看sort函数见下表: 函数名 功能描述 sort 对给定区间所有元素进行排序 stable_sort 对给定区间所有元素进行稳定排序 partial_sort 对给定区间所有元素部分排序 partial_sort_c
2013-10-27 19:35:05 653
转载 C++直接初始化与复制初始化<一>
现在正式对C++中对象建立和初始化做一个总结。(1)复制初始化的基本原理我们知道,对象在内存中的直接表象是在内存中占有一个一定大小的空间。分配空间是建立对象的第一步。但是刚刚分配的空间就像一个没有开垦的荒田,或者是前面对象占有之后留下来的残余,从理论上讲,由于不管是什么大家都是0101,所以就算没有初始化也是有值的,只是这个值你是不能正确使用的。所以建立对象的关键在于如何对该对象所占有
2013-10-24 15:01:44 608
转载 const修饰函数相关
看到const 关键字,C++程序员首先想到的可能是const 常量。这可不是良好的条件反射。如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮。const 更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设
2013-10-20 10:53:16 425
转载 标准C++算法库
算法简介 标准库定义了 100多个算法,要学习如何使用它们,需要理解它们的结构,而不是记住每个算法的细节 ( 1)查找对象的算法: find(beg,end,val) count(beg,end,val) find_if(beg,end,unaryPred) count_if(beg,end,unaryPred) find_first_of(beg1,en
2013-10-07 21:40:10 614
转载 递归与分治分析
递归与分治分析适合用递归算法来解决的常见问题有:(1)二分搜索技术;(2)大整数乘法;(3)Strassen矩阵乘法;(4)棋盘覆盖;(5)合并排序和快速排序;(6)线性时间选择;(7)最接近点对问题;(8)循环赛日程表。 算法总体思想 对这k个子问题分别求解。如果子问题的规模仍然不够小,则再划分为k个子问题
2013-10-03 10:01:27 1146
转载 用C++模板来展示new与delete操作符原理
C++中的new与delete可以认为是C中的malloc与free的升级版本。new包含两部分,一部分是与malloc功能相同,是从堆上面申请内存块,第二部是调用类的构造方法来初始化刚申请的内存。delete是new的逆过程,先调用类的析构方法来反初始化,再把刚申请的内存还给堆。new [] 与delete []是针对数组操作符,要注意是通过new []分配的对象,不能用
2013-09-08 23:52:56 1139
转载 内存管理二
C++内存管理[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃
2013-09-08 12:13:47 853
转载 详解C/C++预处理器
C/C++编译系统编译程序的过程为预处理、编译、链接。预处理器是在程序源文件被编译之前根据预处理指令对程序源文件进行处理的程序。预处理器指令以#号开头标识,末尾不包含分号。预处理命令不是C/C++语言本身的组成部分,不能直接对它们进行编译和链接。C/C++语言的一个重要功能是可以使用预处理指令和具有预处理的功能。C/C++提供的预处理功能主要有文件包含、宏替换、条件编译等。 1、文件包含
2013-09-07 16:37:57 582
转载 内存管理一
摘要:内存管理向来是C/C++程序设计的一块雷区,大家都不怎么愿意去碰她,但是有时不得不碰它。虽然利用C++中的smart pointer已经可以完全避免使用指针,但是对于对于指针的进一步了解,有助于我们编写出更有效率的代码,也有助于我们读懂以前编写的程序。 五大内存分区 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局
2013-09-03 10:19:25 467
原创 学习总结一
在即将进入大三之际,去领完书回来,分析了一下学校教材的安排,感慨之大,只能用汪峰的歌声来呐喊。尽管过去两年每天都很累,也常常很迷茫、常常很受打击。总的来说,收获还是很多的、、、、尤其是在电脑都不会复制与粘贴、普通软件也不会装的大一第一学期,直接啃谭浩强的C语言,简直是天书中的天书啊,不过经过第一次、第二次、、、最后在第三次一次无意中的在电脑上敲代码让我找到了感觉,所以趁热打铁把整本书带着思考敲
2013-09-02 18:39:50 745
原创 动态内存分配
/***定义一个不容易发生错误的内存分配器*/#include #define malloc 不要直接调用malloc!#define MALLOC(num,type) (type *)alloc( (num) * sizeof(type) )extern void *alloc(size_t size);/***在定义函数时,如果在函数首部的最左端加
2013-08-24 16:08:43 506
原创 java学习之路
一个非常励志的例子摆在眼前,他从寒窗苦读到一份不错的工作,生活质量也一步一步的改善。虽然买房子还是比较遥远的事情,但买房子与国情社会有很多关系。听听卡洛儿的哼音乐,不禁被带到了另一个心情世界、、、、、再大的梦想也要回到现实,回到此时此刻的慎思与付出、、、一直以来非常笃定的打算往C++方向走,此刻也一样,虽然这比其他任何一个方向都要有更多的付出,尽管当初是觉得他对数学逻辑思维的要求非常高,学起来
2013-08-24 11:10:51 626
原创 sizeof()和strlen()的检测与对比
//*****sizeof函数的用法******#include using namespace std;void printValues(const int ia[], size_t size){for (size_t i = 0; i != size; ++i){cout }}int main(){int j[] = {0
2013-08-24 00:32:49 654
原创 查找标记(指针和数组名作为参数的区别)
#include #include #include using namespace std;/*void print_tokens( char *line ){static char whitespace[] = " \t\f\r\v\n";char *token ;for( token = strtok( line, whitespace )
2013-08-24 00:29:47 763
原创 结构体(有数组和指针)
#include #include using namespace std;struct {int a;char b;float c;} x;//创建了一个变量x,包含三个成员/************************************************************************
2013-08-24 00:26:07 1091
原创 指针
#include using namespace std;int main (){//vector这个名字的值是一个指向它第1个元素的指针,所以vector是一个指向一个包含10个整形元素的数组的指针int vector[10], *vp = vector;int matrix[3][4] = {{90,11,22,33},{44,55,66,77},
2013-08-24 00:24:11 558
原创 指针与二维数组
#include using namespace std;int lookup_keyword(char const * const desired_word, char const *keyword_table[],int const size){char const **kwp;/***对应表中的每个单词*/for ( kwp = keyword_tab
2013-08-24 00:20:52 569
原创 追踪递归
/***接受一个整形值(无符号),把它转化为字符并打印它,前导零并删除*/#include #include using namespace std;void binary_to_ascii( unsigned int value){unsigned int quotient;quotient = value / 10;if (quotien
2013-08-24 00:19:19 577
原创 字符型的数组与指针
/***用于维护一个地址列表的抽象数据类型*/#include "addrlist.h"#include #include using namespace std;/***每个地址的三个部分,分别保存于三个数组的对应元素中。*/static char name[MAX_ADDRESSES][NAME_LENGTH];static char add
2013-08-24 00:05:18 850
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人