- 博客(88)
- 资源 (35)
- 收藏
- 关注
原创 只在栈上和只在堆上申请对象
1. 只在堆上申请 class A { protected: A(){} ~A(){} public: static A* create() { return new A(); } void destory() { delete this; } }; 构造函数和析构函数为protected,则不能直
2015-10-24 11:13:20
699
原创 SUID,SGID,SBIT
一个进程的 real user ID【实际用户ID】 是指运行此进程的用户角色的 ID; 一个进程的 effective user 【有效用户ID】ID 是指此进程目前实际有效的用户 ID(也就是权限的大小),effective user ID 主要用来校验权限时使用,比如打开文件、 创建文件、修改文件、kill 别的进程,等等【表示进程的权限】。 SUID【设置用户ID】从程序
2015-09-05 18:24:26
707
原创 linux大杂烩
1. mkdir [-mp] dirname -m 直接设置目录权限,无视umask -p 递归创建目录 Rmdir –p dirname -p 若指定目录被删除后其上层目录也为空,则递归删除上层目录 Rm [–rfi] dirname 用于目录不为空时 -r 递归删除 -f 强制删除 -i 交互 2. cp [-alsiru] source destinat
2015-09-03 22:50:37
1752
原创 System V 共享内存区
System V共享内存区在概念上类似于Posix共享内存区。代之以调用shm_open后调用mmap的是,先调用shmget,再调用shmat shmget函数创建一个尚未存在的共享内存区,或者访问一个已经存在的共享内存区。 #include int shmget(key_t key, size_t size, int oflag);返回值为共享内存区的标识符。 key既可以是fto
2015-09-01 21:04:05
694
原创 System V 信号灯
1.semget函数创建一个信号灯集或访问一个已存在的信号灯集 #include int semget(key_t key, int nsems, int oflags);返回一个信号灯的标识符。 nsems指定集合中的信号灯数,如果只是打开一个已存在的集合,则该参数指定为0.创建完一个信号灯集,就不能改变其中的信号灯数。 oflags值是SEM_R和SEM_A常值的组合。也可以与IPC
2015-08-31 23:03:30
803
转载 extern "C"解析
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言, C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言 ,为了支持函数的重载,C++对全局函数的处理方式与C有明显的
2015-08-24 08:13:56
493
原创 读写锁
读写锁和互斥量(互斥锁)很类似,是另一种线程同步机制,但不属于POSIX标准,可以用来同步同一进程中的各个线程。当然如果一个读写锁存放在多个进程共享的某个内存区中,那么还可以用来进行进程间的同步, 和互斥量不同的是:互斥量会把试图进入已保护的临界区的线程都阻塞;然而读写锁会视当前进入临界区的线程和请求进入临界区的线程的属性来判断是否允许线程进入。 相对互斥量只有加锁和不加锁两种状态,读
2015-08-21 20:00:41
664
原创 共享内存区
Posix提供了无亲缘关系进程间共享内存区的两种方法: 1.内存映射文件 由open函数打开,由mmap函数把得到的描述字映射到当前进程地址空间的一个文件。 #include void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset); addr可以指定为描述字fd应被映射到的进程内空间起
2015-08-21 19:37:28
784
原创 Posix信号灯
互斥锁是为上锁而优化的,条件变量是为等待而优化的,信号灯既可用用于上锁,也可用于等待,因而可能导致更多的开销和更高的复杂性。 Posix.1基本原理一文给出了有了互斥锁和条件变量还提供信号灯的原因: 信号灯的主要目的是提供一种进程间同步方式;这些进程可能共享内存也可能不共享内存区。互斥锁和条件变量是作为线程间的同步机制说明的,这些线程总是共享(某个)内存区。 但是,互斥锁意图是用于线程同步,
2015-08-21 18:01:08
660
原创 linux线程相关小结
typedef unsigned long int pthread_t; int pthread_create(pthread_t *thread, pthread_attr_t *attr, void*(func)(void*), void *arg); attr为NULL时使用默认属性。 线程的退出方式: 1.执行完成后隐式退出; 2.由线程本身显式调用pthread_exit函数退出;
2015-08-17 22:42:21
504
原创 linux 线程同步、互斥
#include #include #include #include #define MAXITEMS 10000 #define MAXTHREADS 20 int nitems; int buf[MAXITEMS]; struct { pthread_mutex_t mutex; int nput; int nval; }put = {PTHREAD_MUTEX_INI
2015-08-17 11:38:16
571
原创 pipe练习(暂存)
#include #include #include #include #include #include #include #include #include #define MAXLEN 100 void client(int readfd, int writefd) { size_t len; ssize_t n; char buf[MAXLEN]; fget
2015-07-24 18:07:51
597
原创 相关函数(暂存)
以下所述服务既可以是十进制端口数值,也可以是ftp,http,domain等。因为不同特定服务对应不同的端口。 gethostbyname函数通过查询DNS服务器用主机名来获得主机IPv4地址。 #include struct hostent *gethostbyname(const char *hostname); struct hostent{ char *h_name; /*o
2015-07-22 21:36:59
476
转载 epoll之ET与LT模式
在使用epoll时,在函数 epoll_ctl中如果不设定,epoll_event 的event默认为LT(水平触发)模式。 使用LT模式意味着只要fd处于可读或者可写状态,每次epoll_wait都会返回该fd,这样的话会带来很大的系统开销,且处理时候每次都需要把这些fd轮询一遍,如果fd的数量巨大,不管有没有事件发生,epoll_wait都会触发这些fd的轮询判断。
2015-07-20 16:45:11
675
转载 epoll处理多连接
#include #include #include #include #include #include #include #include #include #include #include #define MAXEVENTS 1024 #define BUF_SIZE 100 //set this descriptor non blocking static in
2015-07-20 16:25:09
1148
原创 select练习小结
//readwrite.h #include #include #include #include #include #include #include #include #define MAXLEN 1024 struct packet { int len; char content[MAXLEN]; }; size_t read
2015-07-10 21:38:17
897
原创 做好自己的事,别想太多
别人想什么,我们控制不了;别人做什么,我们也强求不了。唯一可以做的,就是尽心尽力做好自己的事,走自己的路,按自己的原则,好好生活。
2014-08-03 20:43:32
1099
原创 生命的最后时刻...
人在生命的最后时刻都会很可怜吗,我想是的,半年时间外公和奶奶相继去世,在生命的最后一段时间我都有目睹过,让我很伤心,不敢去想... 一个生命就那样陨落了,现在想起奶奶生前的模样感觉很近,就在眼前,可是回过神来,奶奶却已不在,以后在家吃饭就不会听到妈妈让我喊奶奶吃饭的声音了,围在桌子旁边的就不再有奶奶了,回家晚上就不能和奶奶睡一块了......每当想到这里,心里说不出的难过,甚至难以接受,不敢
2012-08-22 23:08:50
945
原创 奶奶去世了
早上还在上自习,维勋打电话问我啥时候回去,奶奶刚才去世了,他现在就回,我很艰难的说“我回不去”,他也没说啥,就挂电话了。 之前爸爸跟我说等奶奶入土的前一天我回来,可是打完电话我开始犹豫了,这两天我还能看进去书吗,我是不是太过分了,奶奶和我最亲,其他人都回去了,我却还在。打电话给爸爸,爸爸说过两天再回来,就直接挂电话了。也不知道为啥,听到奶奶去世的消息我竟然很木讷,我不知道咋了,想哭却很难哭出
2012-08-14 12:42:19
1866
原创 后天回家
明天去人事局报完到之后,后天回家,奶奶病危,感觉今年发生的事太多了,心里很难受...... 奶奶已经得病有好几个月了,心脏衰竭,今晚妈妈打电话说让这两天尽快回来,如果我想见奶奶最后一面的话。上次回去,奶奶已经瘦得皮包骨头了,隔一两天就发作一次,每次都很严重,奶奶说感觉很痛苦,但是有什么办法呢,真希望我能替奶奶承受,她还安慰我说不要难过,她已经到了该走的年龄了,听到这里我说不出的伤心。
2012-07-31 22:23:44
736
原创 可变参数及可变参数宏的使用
可变参数及可变参数宏的使用 我们在C语言编程中会遇到一些参数个数可变的函数,例如printf()这个函数,这里将介绍可变函数的写法以及原理. * 1. 可变参数的宏 一般在调试打印Debug 信息的时候, 需要可变参数的宏. 从C99开始可以使编译器标准支持可变参数宏(variadic macros), 另外GCC 也支持可变参数宏, 但是两种在细节上可能存在区别. 1. __
2012-02-28 11:35:00
745
转载 预处理的步骤
现在我们全面了解一下C编译器做语法解析之前的预处理步骤: 1、把常量替换成相应的单字符。 2、把用\字符续行的多行代码接成一行。例如: #define STR "hello, "\ "world" 经过这个预处理步骤之后接成一行: #define STR "hello, " "world" 这种续行的写法要求\后面紧跟换行,中间不能有其它空白字符。 3、把注释(不管是单行注释还
2012-02-16 11:35:41
1397
1
转载 20 个数据库设计最佳实践
使用明确、统一的标明和列名,例如 School, SchoolCourse, CourceID。数据表名使用单数而不是复数,例如 StudentCourse,而不是StudentCourses。 数据表名不要使用空格。 数据表名不要使用不必要的前缀或者后缀,例如使用School,而不是TblSchool,或者SchoolTable等等。 数据库中的密码要加密,到应用中再解密。 (其实就是散列存储、
2012-02-14 11:01:44
530
转载 sockaddr与sockaddr_in结构体简介
struct sockaddr { unsigned short sa_family; /* address family, AF_xxx */ char sa_data[14]; /* 14 bytes of protocol address */ }; sa_family是地址家族,一般都是“AF_xxx”的形式。好像通常大多用的是都是AF
2012-02-10 16:28:26
576
转载 多态的概念和作用
多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,就是同一种事物表现出的多种形态。 编程其实就是一个将具体世界进行抽象化的过程,多态就是抽象化的一种体现,把一系列具体事物的共同点抽象出来, 再通过这个抽象的事物, 与不同的具体事物进行对话。 对不同类的对象发出相同的消息将会有不同的行为。比如,你的老板让所有员工在九点钟开始工作, 他只要在九点钟的时候说:“开始工作”即可,而不需要对
2012-02-10 09:21:39
1083
转载 计算某年某月某日是星期几
计算星期可以用蔡勒(Zeller)公式(只适合于1582年10月15日之后的情形): w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 公式中的符号含义如下: c:世纪(年的高两位数); y:年(年的低两位数); m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月 来计算,
2011-12-04 17:35:32
1910
转载 一辈子都应该记住的话
1、人间两件事不能等:行善和尽孝。 2、在外面与朋友嬉游的时候,不要忘记家中孤独的老人。 3、恨,能挑起争端,爱,能遮掩一切过错。放下爱恨,一切顺其自然。 4、含蓄是一种美,也是对他人的一种尊重。 5、每个人都有潜在的能量,只是很容易:被习惯所掩盖,被时间所迷离,被惰性所消磨。 6、有些人说不出哪里好,但就是谁都替代不了!
2011-11-30 10:37:20
1494
原创 枚举的取值范围
每个枚举都有取值范围,通过强制类型转换,可以将取值范围内的任何整数赋给枚举变量,即使这个值不是枚举值.例如:假设bits和Myflag的定义如下: enum bits{one = 1,two = 2,four = 4,eight}; bits bit; 则bit = bits(6);是合法的,其中,6不是枚举值,但它是属于枚举值范围内的. 取值范围定义如下:
2011-11-14 21:56:43
10184
1
转载 一致性Hash算法(转)
一致性Hash算法(转) 2010-10-08 11:40:26| 分类: 分布式 |字号 订阅 consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在 cache 系统中应用越来越广泛; 1 基本场景 比如你有 N 个 cache 服
2011-10-30 09:19:48
612
转载 cout输出流的执行顺序
下面是IBM的一道笔试题 #include using namespace std; int fun( ) { cout return 1; } int main() { int i = 1; // cout cout
2011-09-23 00:27:22
2523
转载 C++虚继承内存对象模型探讨
C++虚继承内存对象模型探讨 最近看了下Inside C++里面讲的对虚继承层次的对象的内存布局,发现在不同编译器实现有所区别。因此,自己动手探索了一下。结果如下: 首先,说说GCC的编译器. 它实现比较简单,不管是否虚继承,GCC都是将虚表指针在整个继承关系中
2011-09-13 00:30:11
1335
原创 模板的友元函数的使用
#include #include using namespace std; template class T> class A; template class T> void display(const A &a); template clas
2011-09-11 18:10:38
612
原创 一点小细节
#include #include #include using namespace std; class Parent { public: void checkOut(){outPut();cout virtual
2011-09-07 21:03:10
600
转载 cin用法介绍(特别是学习了cin.clear和cin.sync)
in用法介绍 摘自http://hi.baidu.com/jrckkyy/blog/item/0a4a3026b10a8f128b82a184.html 2008年06月04日 星期三 下午 01:11 第一次搞cin,真是搞昏人了,现在逐渐开始明白是什么东东,一起探讨
2011-09-04 09:34:15
1008
1
批处理 自动关机.bat
2010-03-21
Code Block 简体中文语言包
2010-03-23
PDF转 rtf txt 软件
2011-04-12
类库查询(MFC类库详解中文版,opencv,opencv,opengl查询)
2012-02-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅