- 博客(39)
- 收藏
- 关注
原创 进程通信之pipe通信
#include #include #define MAXLINE 80int main(void){ int n; int fd[2]; pid_t pid; char line[MAXLINE]; if (pipe(fd) < 0) { perror("pipe"); exit(1); } if ((pid = fork()) < 0) { perror("
2017-04-18 16:53:20
571
原创 孤儿进程
1、孤儿进程: 父进程先于子进程结束,则子进程成为孤儿进程,子进程的父进程成为1号进程init进程,称为init进程领养孤儿进程#include#include#includeint main(){ pid_t pid; pid=fork(); if(pid>0){ printf("i am par
2017-04-18 16:28:20
393
转载 HTTP协议简要
一、什么是HTTP协议 HTTP协议是一种应用层协议,HTTP是HyperText Transfer Protocol(超文本传输协议)的英文缩写。HTTP可以通过传输层的TCP协议在客户端和服务器之间传输数据。HTTP协议主要用于Web浏览器和Web服务器之间的数据交换。我们在使用IE或Firefox浏览网页或下载Web资源时,通过在地址栏中输入,开头的4个字母http就相
2017-04-18 14:44:41
359
原创 Linux execl()函数练习
1、首先创建一个upper.c文件,功能实现将标准输入转换为大写的标准输出到屏幕上/* upper.c */#include int main(void){int ch;while((ch = getchar()) != EOF) {putchar(toupper(ch));}return 0;}2、实现wrapper.c程序。wrapper程序将命令行参数当作文
2017-04-18 11:18:26
1885
1
原创 非阻塞轮询读终端和等待超时
1、非阻塞轮询读终端#include #include #include #include #include #define MSG_TRY "try again\n"int main(void){char buf[10];int fd, n;fd = open("/dev/tty", O_RDONLY|O_NONBLOCK);if(fd<0) {perror("ope
2017-04-17 17:20:52
940
原创 Linux open()函数练习
1、先用man 2 open查看一下open函数接口2、最简单的open函数代码 #include #include #include #include int main() { int fd; fd=open("abc",O_CREAT,0777); printf("fd=%d\n",fd
2017-04-17 16:35:30
22152
1
原创 Linux网络编程--初等网络函数介绍(TCP)
Linux系统是通过提供套接字(socket)来进行网络编程的.网络程序通过socket和其它几个函数的调用, 会返回一个 通讯的文件描述符,我们可以将这个描述符看成普通的文件的描述符来操作,这就是linux的设备无关性的好处. 我们可以通过向描述符读写操作实现网络之间的数据交流. (一)socket int socket(int domain, int typ
2017-04-17 14:38:27
244
原创 (Ubuntu)dependency problems prevent configuration of XXX
原因:包依赖问题解决:sudo apt-get -f install
2017-04-14 15:17:22
1577
原创 sizeof('\0') strlen("\0")
#includeusing namespace std;void main(){cout //cout cout system("pause");}
2017-04-14 09:24:51
887
原创 c++基本数据类型字节长度
32位操作系统 64位操作系统char :1个字节(固定) char:1个字节(固定)*(即指针变量): 4个字节 *(即指针变量): 8个字节short int : 2个字节(固定)
2017-04-14 09:14:54
1169
转载 epoll详解
转自:http://blog.youkuaiyun.com/xiajun07061225/article/details/9250579什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2
2017-04-12 23:12:42
216
转载 c++基础知识总结
1:把程序员分成两类:一类是类创建者,一类是客户程序员。 (好比我开发了一套类库(当然我没那么牛),我封装了一些大部分的功能,对某一个具体的类而言, 我只向外面暴露借口,而具体的实现,我已经隐藏起来了--->这个时候我就是类的创建者。 而客户程序员,他要利用我写的那套类库去开发某一个新的产品(或者软件),他只需要调用我暴 露出来的借口去实现具体的功能,而根本不
2017-04-12 17:13:31
197
转载 Linux socket 编程
“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有
2017-04-12 16:15:52
173
转载 同一进程中的线程共享哪些资源
线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。 进程拥有这许多共性的同时,还拥有自己的个性。有了这些个性,线程才能实现并发性。这些个性包括: 1.线程ID 每个线程都有自己的线程ID,这个ID在本进程中是唯一的。
2017-04-12 11:12:52
353
转载 Mysql 数据库优化总结
对于一个以数据为中心的应用,数据库的好坏直接影响到程序的性能,因此数据库性能至关重要。一般来说,要保证数据库的效率,要做好以下四个方面的工作:数据库设计、sql语句优化、数据库参数配置、恰当的硬件资源和操作系统,这个顺序也表现了这四个工作对性能影响的大小。下面我们逐个阐明: 一、数据库设计 适度的反范式,注意是适度的 我们都知道三范式,基于三范
2017-04-12 09:49:31
195
转载 itoa(),atoi()实现
atoi 和 itoa是面试笔试经常要考到的题目,下面两份代码是用C语言实现的atoi和itoa:1, atoi原型: int atoi(const char *nptr);函数说明: 参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。#inclu
2017-04-10 22:34:50
229
原创 static关键字剖析
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。1.面向过程设计中的static1.1静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example 1#include
2017-04-10 09:24:01
257
转载 TCP超时与重传
出处http://blog.youkuaiyun.com/jiange_zh1.前言对每个连接, TCP管理4个不同的定时器。1.重传定时器适用于当希望收到另一端的确认。2.坚持(persist)定时器使窗口大小信息保持不断流动,即使另一端关闭了其接收窗口。3.保活(keepalive)定时器可检测到一个空闲连接的另一端何时崩溃或重启。4.2MSL定时器测量一个
2017-04-09 19:32:17
1032
转载 TCP连接的建立与终止
出处http://blog.youkuaiyun.com/jiange_zh第十八章 TCP连接的建立与终止1.前言TCP连接的建立可以简单的称为三次握手,而连接的中止则可以叫做四次挥手。2.TCP的建立,终止以及半关闭TCP的建立比较熟悉,在此不赘述。由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送
2017-04-09 17:27:11
238
转载 strcpy(),strncpy(),strcmp(),strcat(),memset(),memcpy(),atoi(),
出处http://blog.youkuaiyun.com/jiange_zh前言在面试中,常常会被问到几个库函数的实现,虽然代码很短,涉及的细节却特别多,因此特别受面试官青睐,所以要把他们熟记于心,方能应对自如。strcpy()原型声明:char strcpy(char dest, const char *src); 功能:把从src地址开始且含有NULL结束符的字符串
2017-04-09 16:56:13
326
原创 单例模式
class Singleton 2 { 3 private: 4 static Singleton* m_instance; 5 Singleton(){} 6 public: 7 static Singleton* getInstance(); 8 }; 9 10 Singleton* Singleton::getInstance()11 {12
2017-04-06 15:11:28
171
原创 构造函数,析构函数
#include using namespace std;class A{public: A(){ cout << "Construct a" << endl; p(); } virtual void p(){ cout << "A" << endl; } ~A(){ cout << "Destruct a" << endl; p(); }//析构函数不加virtual};clas
2017-04-06 10:43:20
252
原创 子类父类 构造函数析构函数
#include using namespace std;//运算符的重载 class Base//{public: int a; Base() { cout << "父类的不带参的构造函数调用" << endl; } Base(int a) { cout << "父类的带参数的构造函数调用" << endl; } ~Base() { cout << "
2017-04-06 10:11:02
448
转载 模板全特化和偏特化
模板为什么要特化,因为编译器认为,对于特定的类型,如果你能对某一功能更好的实现,那么就该听你的。模板分为类模板与函数模板,特化分为全特化与偏特化。全特化就是限定死模板实现的具体类型,偏特化就是如果这个模板有多个类型,那么只限定其中的一部分。先看类模板:[cpp] view plain copytemplatetypename
2017-04-06 09:55:52
470
转载 进程和线程
线程和进程,线程可以共享进程里的哪些东西。 知道协程是什么吗进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间,即进程空间或(虚空间)。进程空间的大小 只与处理机的位数有关,一个 16 位长处理机的进程空间大小为 216 ,而 32 位处理机的进程空间大小为 232 。进程至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态
2017-04-05 22:32:16
220
原创 数据库三大范式理解
1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非主键字段不能相互依赖; 不符合第一范式的例子(关系数据库中create不出这样的表): 表:字段1, 字段2(字段2.1, 字段2.2), 字段3 ...... 存在的问题: 因为设计不出这样的表, 所以没有问题; 不符合第二范式的例子: 假定选课关系表为S
2017-04-05 22:19:12
375
转载 tcp为什么要三次握手,tcp为什么可靠。
为什么不能两次握手:(防止已失效的连接请求又传送到服务器端,因而产生错误)假设改为两次握手,client端发送的一个连接请求在服务器滞留了,这个连接请求是无效的,client已经是closed的状态了,而服务器认为client想要建立一个新的连接,于是向client发送确认报文段,而client端是closed状态,无论收到什么报文都会丢弃。而如果是两次握手的话,此时就已经建立连接
2017-04-05 21:52:20
5585
原创 冒泡排序,快速排序,归并排序
#includeusing namespace std;//************************冒泡排序***************************************************************void bubbleSort(int arr[],int len){ for (int i = 0; i < len - 1; i++){ b
2017-04-05 20:57:10
254
原创 多态与虚函数表
什么是多态,多态有什么用途。定义:“一个接口,多种方法”,程序在运行时才决定调用的函数。实现:C++多态性主要是通过虚函数实现的,虚函数允许子类重写override(注意和overload的区别,overload是重载,是允许同名函数的表现,这些函数参数列表/类型不同)。多态与非多态的实质区别就是函数地址是早绑定还是晚绑定。如果函数的调用,在编译器编译期间就可以确定函数的调用地址,
2017-04-05 17:11:09
604
原创 c++基本数据类型字节长度
除了*与long随操作系统子长变化而变化外,其他的都固定不变(32位和64相比)32位操作系统 64位操作系统char :1个字节(固定) char:1个字节(固定)*(即指针变量): 4个字节 *(即指针变量): 8
2017-04-05 15:38:52
654
转载 select,poll,epoll
一、IO多路复用所谓IO多路复用,就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。Linux支持IO多路复用的系统调用有select、poll、epoll,这些调用都是内核级别的。但select、poll、epoll本质上都是同步I/O,先是block住等待就绪的socket,再是block住将数据从内核拷
2017-04-05 10:18:12
178
转载 Linux进程间通信
一、进程间通信概述进程通信有如下一些目的:A、数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间B、共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。C、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。D、资源共享:多个进程之间共享同样的资源。为了作
2017-04-05 09:27:05
192
原创 满二叉排序树
对于一棵满二叉排序树深度为k,节点数为2^k - 1,节点值为1至(2^k - 1),给出k和任意三个节点的值,输出包含该三个节点的最小子树的根节点值。样例输入:4 10 15 13,样例输出:12
2017-04-04 20:12:40
783
原创 fork
#include#include#includeint main(){ pid_t pid; pid=fork(); if(pid>0){ printf("I am parent\n"); while(1); } else if(pid==0){ printf("i am child\n"); while(1); } else{ perror("fork
2017-04-01 16:46:40
251
原创 mycp
#include#include#include#include#include#include#include#define SIZE 8192int main(int argc,char *argv[]){ char buf[SIZE]; int fd_src,fd_desc,len; if(argc prin
2017-04-01 15:53:51
1014
原创 编译和链接
在多道程序环境中,要想将一个用户源代码变成一个可以在内存中执行的程序,通常分为三个步骤:编译、链接、载入。 (1)编译:由编译程序将用户的源代码编译成若干个目标模块。 (2)链接:由链接程序将编译后形成的一组目标模块以及它们所需要的库函数链接在一起,形成一个完整的载入模块。 (3)载入:由载入程序将载入模块载入内存。
2017-04-01 15:38:10
249
原创 TCP三次握手,四次挥手
1、建立连接协议 (三次握手) (1)客户端发送一个带SYN标志的TCP报文到服务器 。这是三次握手过程中的报文1. (2) 服务器 端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯。 (3) 客户必须再次回应服务段一个ACK报文,这是报文段3.
2017-04-01 15:35:49
156
原创 数据库调优
SQL 语句调优基本原则:1、避免全表扫描2、建立索引3、尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理4、尽量避免大事务操作,提高系统并发能力5、使用基于游标的方法或临时表方法之前,应先寻找基于集的解决方案来解决问题,基于集的方法通常更有效。尽量避免使用游标,因为游标的效率较差。关于where 后的条件应尽量避免在 whe
2017-04-01 15:33:12
399
转载 数据库读写分离
读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。为什么要分库、分表、读写分?单表的数据量限制,当单表数据量到一定条数之后数据库性能会显著下降。数据多了之后,对数据库的读、写就会很多。分库减少单台数据库的压力。接触过几个分库分表的系统,都是通
2017-04-01 15:26:06
370
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人