自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 Linux僵尸进程

僵尸进程的原因: 子进程退出之后,仅仅在进程表(processs table)中仍然还占了一个位置(slot),该位置存储的是子进程退出时的状态信息,供其他进程收集,除此之外,该进程不再占有任何存储空间。 我们称,子进程退出之后,父进程在读取子进程的退出状态信息之前的这段时间内,子进程处于僵尸状态,这样的子进程称为僵尸进程。 避免僵尸进程的方法: ...

2018-03-23 16:37:45 173

转载 生产者消费者伪代码

https://blog.csdn.net/yongf2014/article/details/46493129

2018-03-22 17:53:10 5408

转载 操作系统进程、作业调度常见算法详解

参考http://blog.csdn.net/guoweimelon/article/details/50847532 以后有时间在总结

2018-03-22 11:29:06 342

原创 linux、windows下的进程间的通信方式、线程间的通信方式

Linux进程间的通信方式:管道、有名管道、信号量、消息队列、共享内存、信号、socketWindows进程间的通信方式:管道、信号量、消息队列、共享内存、socketLinxu线程间的通信方式:互斥量、条件变量、信号量、信号 Windows线程间的通信方式:互斥量、信号量、事件(Event)、临界区(Critical Section)...

2018-03-22 10:24:24 1254

转载 对称加密、非对称加密(转账)

参考博客: http://blog.csdn.net/shenggaofei/article/details/52333687 有时间了在总结

2018-03-21 12:19:38 262

转载 为什么要字节对齐

1.平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据,某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常2.硬件原因:经过内存对齐之后,CPU的内存访问速度大大提升(因为任意数据或者结构体都是从偏移量为0的地方开始存储的,经过字节对齐后,他们的大小都是2的整数倍,正好符合cpu按块读取数据的规则,这样的话,cpu每次都是读取一个或者若干个块,不需要再删除里面...

2018-03-20 11:41:41 993

转载 C++ 高性能服务器网络框架设计细节(转载)

先收藏,在细细品尝:http://blog.csdn.net/GitChat/article/details/78215757

2018-03-18 18:34:06 918

原创 函数的参数传递

c语言中只有两种参数传递,分别是传值、传指针 c++中包括传值、传指针、传引用按值传递的过程为:首先计算出实参表达式的值,接着给对应的形参变量在栈上分配一个存储空间,该空间的大小等于该形参类型的,然后把以求出的实参表达式的值一一存入到形参变量分配的存储空间中,成为形参变量的初值,供被调用函数执行时使用。这种传递是把实参表达式的值传送给对应的形参变量,形参是实参的一个副本,故称这种传递方式为“...

2018-03-17 17:20:58 281

原创 c++ 线程创建 参数传递

在C++的类中,普通成员函数不能作为pthread_create的线程函数,如果要作为pthread_create中的线程函数,必须是static ! 在C语言中,我们使用pthread_create创建线程,线程函数是一个全局函数,所以在C++中,创建线程时,也应该使用一个全局函数。static定义的类的成员函数就是一个全局函数。C++线程使用的注意点 1.多个参数的传递需要使用结构体 ...

2018-03-17 14:49:39 4892 1

原创 c++从标准输入输入数据的问题

istringstream类用于执行C++风格的串流的输入操作。 ostringstream类用于执行C风格的串流的输出操作。 strstream类同时可以支持C风格的串流的输入输出操作。 第一种:输入带有空格的或者其他字符串 可以用stringstream分离string str;while(getline(cin,str)){vector<string&gt...

2018-03-16 20:48:42 1767

原创 输入两个整数n和m,从1-n中随意取几个数,使其和等于m

编程求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来。 求解思路: 1.首先判断,如果n>m,则n中大于m的数不可能参与组合,此时置n = m; 2.递归求解#include<iostream>#include<vector>#include<algorithm>using na...

2018-03-16 20:14:34 1493

原创 数据库ER图

参考http://blog.csdn.net/belen_xue/article/details/52763629

2018-03-16 19:56:39 1692

转载 B+树比B树更适合做文件数据库索引

B树: B+树: B*树是B+树的变体,在B+树的非根和非叶子结点再增加指向兄弟的指针; B树和B+树在结构上的区别 1. B树中关键字集合分布在整棵树中,叶节点中不包含任何关键字信息,而B+树关键字集合分布在叶子结点中,非叶节点只是叶子结点中关键字的索引; 2. B树中任何一个关键字只出现在一个结点中,而B+树中的关键字必须出现在叶节点中,也可能在非叶结点中重复出现;*...

2018-03-16 19:44:10 2333 2

原创 设计模式

单例模式:实现较简单。其构造函数是私有的,故无法通过构造函数实例化,唯一的方法是通过调用静态函数GetInstance。 参考https://www.cnblogs.com/myd620/p/6133420.html 单例模式分为恶汉模式(线程安全的)、懒汉模式(非线程安全的) 懒汉模式:#include<iostream>#include<s...

2018-03-16 10:24:01 157

原创 HTTP和HTTPS的区别

推荐参考以下两篇博客 http://www.mahaixiang.cn/internet/1233.html http://blog.csdn.net/permike/article/details/52449512 **第五步:浏览器把用公钥加密的随机数key发送到服务器 第六步:服务器用私钥解密得到随机数key 之后,双方就是用这个随机数key对双方通信的数据进行加密、解密了 ...

2018-03-15 20:35:51 183

原创 数据库连接池

数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。数据库连接池的最小连接数和最大连接数的设置要考虑到下列几个因素: 1....

2018-03-15 16:49:32 203

原创 给出一个数组 求任意个数的数相加的和等于给定数 输出所有满足条件的数

#include<iostream>#include<vector>#include<algorithm>using namespace std;void dfs(vector<int> &a,vector<vector<int>> &res,vector<int> &am

2018-03-15 16:22:57 12926 1

原创 hash解决冲突的方法优缺点

hash表解决冲突的方法: 1.开放定址法 1.1 线性探测法 1.2 二次探测法 1.3 随机探测法 2.链地址法 3.公共溢出区法 这种方法需要两个表,分别是基本表、溢出表链地址法的优点 与开放定址法相比,拉链法有如下几个优点: ①链地址法处理冲突简单,且无堆积现象,即非同义词决不会发生冲突,因此平均查找长度较短; ②由于链地址法中各链表...

2018-03-15 14:44:12 7460 1

原创 25匹马,5个跑道,最少比多少次能比出前3名

(1)求前3名要7次; 将马分成A、B、C、D、E五组。 第1-5次比赛:各组分别进行比赛,决出各组名次,取每组前三名 A1、A2、A3, B1、B2、B3, C1、C2、C3, D1、D2、D3, E1、E2、E3。 第6次比赛:A1、B1、C1、D1、E1, 假设得到的结果是A1、B1、C1、D1、E1,A1是跑的最快的,那么分析A组A2、A3还有希望冲进前3,B组呢?只有B...

2018-03-15 14:36:29 13173

转载 TCP粘包,拆包及解决方法、丢包的原因及解决办法

参考此博客https://blog.insanecoder.top/tcp-packet-splice-and-split-issue/粘包、拆包发生原因 发生TCP粘包或拆包有很多原因,现列出常见的几点,可能不全面,欢迎补充, 1、要发送的数据大于TCP发送缓冲区剩余空间大小,将会发生拆包。 2、待发送数据大于MSS(最大报文长度),TCP在传输前将进行拆包。 3、要发送的数据小于T...

2018-03-15 11:42:36 11095 1

原创 DNS使用TCP和UDP的端口号53

DNS在两种情况下使用TCP 1.如果用wireshark、sniffer或古老些的tcpdump抓包分析,会发现几乎所有的情况都是在使用UDP,使用TCP的情况非常罕见。其实当解析器发出一个request后,返回的response中的tc删节标志比特位被置1时,说明反馈报文因为超长而有删节。这是因为UDP的报文最大长度为512字节。解析器发现后,将使用TCP重发request,...

2018-03-15 10:57:03 37822

原创 c++ assert()

assert宏的原型定义在#include <assert.h>void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。 用法总结与注意事项: 0)程序一般分为Debug 版本和Releas...

2018-03-13 21:12:19 140

转载 Epoll在LT和ET模式下的读写方式

转载自:http://kimi.it/515.html在一个非阻塞的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK) 从字面上看, 意思是:EAGAIN: 再试一次,EWOULDBLOCK: 如果这是一个阻塞socket, 操作将被block,perror输出: Resource temporarily ...

2018-03-13 15:42:50 145

原创 socket收发缓冲区

1. TCP socket的接收和发送缓冲区: socket(PF_INET, SOCK_STREAM, 0); 每个TCP Socket在内核中都有一个发送缓冲区和一个接收缓冲区, TCP的全双工工作模式以及TCP的滑动窗口就是依赖这两个独立的buffer以及buffer的填充状态。应用程序调用write()或send()时,仅仅是把应用程序buffer中的数据copy到socket的...

2018-03-13 14:56:44 12372

转载 Linux下的五种io模型

概念说明 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操作系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。针对linux操作系...

2018-03-13 10:14:44 136

转载 C++继承中关于子类构造函数的写法

转载于https://www.cnblogs.com/shmilxu/p/4849097.html 构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法)。因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。 如果没有显式的构造函数,编译器会给一个默认的构造函数,并且该默认的构...

2018-03-05 14:51:35 1078

转载 new 和malloc

Malloc:定义上:malloc memory allocation 动态内存分配 是c中的一个函数使用方法:extern void *malloc(unsigned int num_bytes)num_bytes内存块字节长度。内存块大小确定:malloc是通过我们计算然后得到一块新内存,然后指定数据类型并且内存值也是随机的。使用时:需要引入头文件库函数 stdl...

2018-03-04 17:36:27 154

原创 最小的k个数、第k小的数(利用快排,堆排序)

快排:(若求top M个元素,则只需把下面的程序里的k换乘n-M即可)//利用快排求最小的k个数,第k小的数void GetLeastKNum(int *input,int n,int *output,int k){ if(input==NULL || n<=0 || k<=0) return; int start=0; int end=n-1; ...

2018-03-04 15:14:13 4211 1

原创 最大堆排序(可用于求最小的K个数)

以下代码均是最大堆/****************大根堆排序********************/void AdjustDown(int *a,int s,int n){ a[0]=a[s];//a[0]暂时存放 for(int i=2*s;i<=n;i*=2)//沿着k较大的字节点向下筛选 { if(i<n && ...

2018-03-04 13:30:13 880

原创 两个栈实现队列、一个队列实现栈

第一题:栈实现队列 Implement the following operations of a queue using stacks.push(x) – Push element x to the back of queue. pop() – Removes the element from in front of queue. front() – Get the front ele...

2018-03-04 10:28:08 187

原创 排序算法代码汇总(可参考http://blog.csdn.net/liqinzhe11/article/details/78743743)

#include<iostream>using namespace std;//冒泡排序void BubbleSort(int *a,int n){ for(int i=0;i<n-1;i++)//n-1趟 { for(int j=n-2;j>=i;j--) { if(a[j]>a[j+...

2018-03-03 18:55:43 144

原创 二叉排序树的创建、查找

给定一个数组,将该数组转化成二叉排序树#include <iostream> using namespace std; struct BiTNode{ int data; struct BiTNode *lchild, *rchild;//左右孩子};bool insertBST(BiTNode *&T,int element){ if(T...

2018-03-03 14:29:08 1328

原创 二叉树创建、遍历

二级指针创建二叉树//==========================================定义头部#include <iostream>using namespace std;struct BiTNode{ char data; struct BiTNode *lchild, *rchild;//左右孩子};void CreateBiTree(Bi...

2018-03-03 10:59:27 305

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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