- 博客(21)
- 收藏
- 关注
原创 管道
匿名管道(pipe)管道是IPC最基本的一种实现机制。我们都知道在Linux下“一切皆文件”,其实这里的管道就是一个文件。管道实现进程通信就是让两个进程都能访问该文件。 管道的特征: ①只提供单向通信,也就是说,两个进程都能访问这个文件,假设进程1往文件内写东西,那么进程2 就只能读取文件的内容。 ②只能用于具有血缘关系的进程间通信,通常用于父子进程建通信 ③管道是基于字节流来通信的 ④依赖于文件...
2018-03-23 18:05:43 253
原创 多线程pthread函数的基本使用
#include<stdio.h>#include<pthread.h>pthread_cond_t cond;pthread_mutex_t mutex;void *r1(void *arg){ while(1) { pthread_cond_wait(&cond,&mutex); printf("happy~!!!\n"); ...
2018-03-23 16:15:23 309
原创 进程与线程
进程:具有一定独立功能的程序,他是系统进行分配资源和调度的一个独立单位,也就是说进程是一个程序的动态过程线程:线程是进程的一个实体,是cpu独立运行和调度的基本单位,由于线程比进程更小基本上不拥有系统资源,所以它的调度所付出的开销小很多,更高效的提高系统内多个程序间并发执行的程度。区别:1.多个线程共享数据空间,子进程和父进程有不同的代码和数据空间 2.通信:进程间通信IPC,线...
2018-03-23 15:59:38 158
原创 实现简易shell
用fork() 创建出来的子进程是和父进程相同的程序经常与exec函数搭配 让子进程做其他事情 对于exec 就不详细解释 可以自己去 man 下 主要功能就是进程程序替换 六种不同的exec 参数不同 要注意于是 我们可以写一个简易版的shell(只实现最基本的功能就可以)#include#include#includeint argc;char
2017-12-12 13:29:28 243
原创 僵尸进程与孤儿进程
看了网上写的 找到自己想要的答案 父进程健在 , 子进程挂了, 子进程是僵尸父进程死了, 子进程在, 子进程就是孤儿进程 孤儿进程被一号进程收养 ,一号进程也叫孤儿院你首先要了解 fork() getpid() 的返回值 如果英语好的 可以man下概念多的是 不多说 直接说fork()它可能有三种不同的返回值:在父进程中,fork返
2017-11-27 00:01:38 254
原创 Linux指令查询
线上查询及帮助命令(2个)命令功能说明man查看命令帮助,命令的词典help查看Linux内置命令的帮助文件、目录操作命令(18个)命令功能说明ls全拼list,功能是列出目录的内容及其内容属性信息cd
2017-11-05 11:00:51 332
原创 Linux下的重要目录/proc, /sys, /SElinux, /bin, /usr/lib, /usr/local, /var, /tmp .....
linux 常用目录的作用和存放的内容:/bin 存放使用者最长用的命令,如:cp、ls、cat,等等。 /boot 启动linux时使用的一些核心文件。 /dev 是device(设备)的缩写,这个目录下是所有linux的外围设备。 /etc 这个目录用来存放系统管理所需要的配置文件和子目录。 /home 用户的主目录,比如说有个用户叫wang,那他的目录就是/home/wang也可以用~wa
2017-11-05 10:46:02 293
原创 Linux 关于g++,gdb,ctags安装以及vim的配置
Centos6.5 虚拟机Linux安装g++,gdb,ctags 1.su //进入根目录; 2.yum install gcc-c++ //安装g++; 3.yum install gdb //安装gdb 4.yum install ctags //安装ctags 5.Ctrl+D退出根目录,回到自己的工作目录下;
2017-11-05 10:35:14 221
原创 为什么模板不支持分离编译
上文简述了类模板相关功能,本文主要简述为什么模板不支持分离编译? 在C++中,为了一个项目的规范,我们通常把代码归为三类:声明文件、实现文件、测试文件. 比如,我要用C++实现一个链表,那么就会创建这3个文件: LinkList.h //链表的相关声明 LinkList.cpp //链表的实现代码 Test.cpp //链表测试代码(
2017-10-17 11:05:54 200
原创 队列与栈的一些基本问题
实现栈#pragma once#includetemplateclass stack{public: stack() :_size(0) , _capacity(0) , _arr(NULL) {} ~stack() { if (_size != 0) { delete[] _arr; _arr = NULL; } _size = 0;
2017-10-03 01:09:39 288
原创 关于单链表的一些常见问题
#includeusing namespace std;#include#includestruct ListNode{ int _data; struct ListNode* _next; ListNode(int x) :_data(x), _next(NULL) {}};typedef ListNode Node;void PushBack(Node*
2017-07-23 12:37:22 1649
原创 复杂链表负责三步走
复杂链表--每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点这个问题难点不在于代码 在于理解 首先理解复杂链表 他的特殊指针random 他随机指向一个节点 也可能为空个人觉得特殊指针在是一种迷惑 思考时可以忽略它 先想怎么搞出来复制的链表1.复制整个链表 比如:a b c a a. b b. c c. 暂时不想r
2017-07-22 00:28:32 215
原创 TCP握手和挥手
三次握手 ——在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器 进入SYN_RECV状态
2017-07-19 14:08:56 281
原创 linux的基本配置和vim的快捷键
1. sudo yum install gcc 2.sudo yum install g++ 3.sudo yum install gdb4.wget http://files.cnblogs.com/ma6174/vimrc.zip unzip vimrc,zip 只需要这样几行简单的代码就可以配置好自己的环境进入vi的命令v
2017-04-09 12:44:57 280
原创 虚表(探讨多态的原理)菱形虚拟继承
多态(Polymorphism)按字面的意思就是"多种状态"。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述--多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自"Delphi4 编程技术内幕")。简单的说,就是一句话:允许将子类类型的指针赋值给父
2017-02-16 00:32:31 261
原创 研究虚表(探索多态的原理)和菱形虚拟继承
多态—— 一个接口 多种形态,编译器在执行过程中遇到virtual关键字的时候,将自动安装动态联编需要的机制,首先为这些包含virtual函数的类(注意不是类的实例)--即使是祖先类包含虚函数而本身没有--建立一张虚拟函数表VTABLE。在这些虚拟函数表中,编译器将依次按照函数声明次序放置类的特定虚函数的地址。同时在每个带有虚函数的类中放置一个称之为vpointer的指针,简称vpt
2017-02-15 21:38:15 349
原创 编译链接的整个过程
预编译 1:将所有的#define删除,并展开所有的宏定义; 2:处理所有的预编译指令,例如:#if,#elif,#else,#endif; 3:处理#include预编译指令,将被包含的文件插入到预编译指令的位置; 4:添加行号信息文件名信息,便于调试; 5:删除所有的注释:// /**/; 6:保留所有的#pragma编译指令,因为在编写程序的时候,我们经常要用到#pr
2016-10-19 15:24:10 264
原创 关于宏的一些问题
1.预定义标识符__FILE__ 正在编译的文件的名字__LINE__ 正在编译的文件的行号__DATE__ 编译时刻的日期字符串__TIME__ 编译时刻的时间字符串2.宏和函数的区别 1.宏会在编译器在对源代码进行编译的时候进行简单替换,不会进行任何逻辑检测,即简单代码复制而已。2.宏进行定义时不会考虑参数的类型。3.参数宏的使
2016-10-19 15:20:29 262
原创 剑啸江湖
同胞们 别着急 多读书多看报少吃零食多睡觉 成功秘诀哦推荐二首歌给大家--- high点的 ----剑啸江湖 粤语的---------爱的故事上集#include#include#includeint main(){ char arr1[] = "welcome to bit"; char arr2[] = "###
2016-09-24 18:02:06 376
原创 如何判断一个未知数据类型的数为0
只要这个数小于参考数据类型的最小正值、且大于最大负值,(num 最大负值 ) 那么这个数就为0了。比如 int型,int型数的最大负数是:-1,最小正数是:+1,只要 (num >-1 && num比如floa或double:最大负数是:-0.000001 最小正数:+0.000001 只要(num > -0.000001 && num下面是自己写的运用这个方式 去
2016-09-22 21:33:00 1195
原创 一个起点
简单点 说话的方式简单点 巨洋有点梦想有想要的生活想做一个程序猿编程上想很熟练的掌握想有一天自己做出来一款软件或者游戏这个过程嘛 勤奋+学习-懒惰 大体这样 绿岸公司是我的目标 原因保密就这样附送今天自己写的很low 的代码 #includeint main(){int a = 10;int b = 20;int x;
2016-09-17 17:00:35 255
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人