3 adorable_

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 4w+

内存池

内存池概念   通常我们用new和malloc来分配内存的话,由于申请的大小不确定,所以频繁的使用时会带来内存碎片和效率降低的问题。为了克服这种问题提出了内存池的概念。内存池是一种内存分配方式。内存池的优点是可以有效的减少内存碎片化,分配内存更加快速,减少内存泄漏等优点。    内存池是在真正使用内存之前,先申请分配一个大的内存块留作备用。当真正需要使用内存的时候,就从内存池中分配一...

2018-08-08 23:55:12

set与map介绍

pair  pair是一种模板类型,每个pair可以存储两个值,这两个值的类型可以是任何类型的。它定义在#include<utility> 中。 set(集合) map(映射)...

2018-08-06 23:58:40

HTTP协议

URLURL:统一资源定位符,它是一种特殊类型的URI,包含了用于查找某个资源的足够的信息。 URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。 URL的一般语法格式为:(带方括号[]的为可选项):   http://hostname[:port][path]   http表示通过http协议来定位网络资源,hostname表示合法的主机域名或IP地址。port指...

2018-08-04 23:44:50

红黑树—RBTree

  红黑树是一棵二叉搜索树,它在每个节点上增加了一个存储位来表示节点的颜色,可以是Red或Black。通过对任何一条从根到叶子简单路径上的颜色来约束,红黑树保证最长路径不超过最短路径的两倍,因而近似于平衡。红黑树是满足下面红黑性质的二叉搜索树:每个节点,不是红色就是黑色的根节点是黑色的如果一个节点是红色的,则它的两个子节点是黑色的(没有连续的红节点)对每个节点,从该节点到其所有后代...

2018-07-24 23:48:56

平衡搜索树—AVLTree

基本实现:#pragma once#include <iostream>#include <assert.h>using namespace std;template<class K, class V>struct AVLTreeNode{ K _key; V _value; in

2018-07-16 23:54:51

快速排序—Quick

所用栈相关知识请参考:>数据结构之栈的基本操作< 快速排序基本思想快速排序是一种划分交换的方法,它采用分治法进行排序。其基本思想是:先从数列中取出一个数作为基准数分区过程,将比基准值大的数全放到它的右边,小于或等于它的数全放到它的左边,基准值则在中间再对左右区间重复第二步,直到各区间只有一个元素或没有元素//////////////////////////...

2018-07-09 23:47:32

死锁及其四个必要条件

死锁  死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 产生条件互斥条件:资源是独占的且排他使用,进程互斥使用资源,即任意时刻一个资源只能给一个进程使用,其他进程若申请一个资源,而该资源被另一进程占有时,则申请...

2018-07-08 00:59:33

归并排序—Merge

  归并排序是一种基于分治法的一种排序方法。它将要排序的序列分成两个长度相等的子序列,为每一个子序列进行排序,然后再将子序列合并成一个有序的序列。//////////////////////////////////////////////////////////////归并排序//时间复杂度:O(N * logN)//空间复杂度:O(N)//稳定性:稳定排序/////////////...

2018-07-06 23:52:36

希尔排序—Shell

基本定义:希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。 基本思想:希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。代码实现:void ShellSort(int array[], int64_t size){ if(...

2018-07-02 23:52:31

简单排序

简单排序之冒泡排序、选择排序、堆排序、插入排序。冒泡排序算法的原理如下:比较相邻的元素,如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。选择排序算法的原理如下:   对比数组...

2018-06-30 17:02:05

线索化二叉树

线索化概念当某节点的左指针为空时,令该指针指向按照某种方式遍历二叉树时得到该节点的前驱结点;当某节点的右指针为空时,令该指针指向按照某种方式遍历二叉树时得到该节点的后继结点。但是无法区分:左指针指向的结点是左孩子结点还是前驱结点右指针指向的结点是右孩子结点还是后继结点因此需要增加两个线索标志位来区分这两种情况: leftThread(左线索):0: leftC...

2018-06-29 17:16:31

TCP服务器

所需API如下: (1)创建 socket 文件描述符 (TCP/UDP, 客户端 + 服务器) int socket(int domain, int type, int protocol);socket()打开⼀个网络通讯端口,如果成功的话就像open()⼀样返回⼀个文件描述符应⽤程序可以像读写⽂件⼀样用read/write在网络上收发数据如果socket()调用出错则返回-1对...

2018-06-28 16:44:58

UDP服务器

IP地址IP协议有两个版本,IPv4和IPv6,若没有特殊说明的,默认都是指IPv4IP地址是在IP协议中,⽤来标识网络中不同主机的地址对于IPv4来说, IP地址是⼀个4字节, 32位的整数我们通常也使⽤ “点分⼗进制” 的字符串表⽰IP地址,例如192.168.0.1 ;⽤点分割的每⼀个数字表示⼀个字节,范围是0 ~ 255 端口号端⼝号(port)是传输...

2018-06-24 23:42:44

GDB多线程调试

GDB多线程调试的基本命令info threads:显示当前可调试的所有线程,GDB会给每个线程分配一个Id。前面有“ * ”号的表示当前正在调试的线程。thread Id:切换当前调试的线程为指定线程。break FileName.cpp:LinuNum thread all:所有线程都在文件FileName.cpp的第LineNum行有断点。thread apply I...

2018-06-22 18:32:17

线程同步与互斥

同步互斥概念互斥:   互斥就是指某一资源同时只能允许一个访问者对其进行访问,具有唯一性和排他性,但是互斥无法限制访问者对资源的访问顺序,即访问是无序的。   对于线程来说,互斥就是说两个线程之间不可以同时运行,他们之间会相互排斥,必须等一个线程运行完毕之后,另一个才能运行。 同步:   同步是指在互斥的基础上(大多数情况),通过其他机制实现访问者对资源的有序访问。在大...

2018-06-20 17:45:08

多线程编程

线程基本概念线程(thread)是操作系统能够进行运算调度的最小单位线程被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流一个进程中可以并发多个线程,每条线程并行执行不同的任务  线程是在进程内部运行的控制流程,多线程的控制流程可以长期共存,操作系统会在各个线程之间调度和切换,就像在各个进程间调度和切换一样。   由于同一个进程的多个线程...

2018-06-16 01:34:28

单例模式

什么是单例模式  单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的某一个类只有一个实例。即一个类只有一个对象实例。 为什么需要单例模式  有时候我们会遇到一个类只能有一个对象被实例化的情况,这是就需要单例模式。单例模式通过类本身来管理其唯一实例。在设计这个类的时候,让它只能创建一个实例并提供对此实例...

2018-06-15 00:07:12

生产者消费者模型

什么是生产者消费者模型  在实际的开发中,经常会碰到如下场景:某个模块负责生产数据,某个模块负责处理这些数据。产生数据的模块就称为生产者,而处理数据的模块就称为消费者。这个模型还需要一个缓冲区来作为中介,生产者将产生的数据放入缓冲区中,消费者从缓冲区将数据取出并处理。 为什么需要生产者消费者模型解耦 假设生产者和消费者是两个类,如果让生产者直接调用消费者的某个方法...

2018-06-14 14:49:12

进程间关系和守护进程

进程组  每个进程除了有⼀个进程ID之外,还属于⼀个进程组。进程组是⼀个或多个进程的集合。通常,它们与同⼀作业相关联,可以接收来⾃同⼀终端的各种信号。每个进程组有⼀个唯⼀的进程组ID。每个进程组都可以有⼀个组⻓进程,组长的pid与pgid相同。组⻓进程可以创建⼀个进程组,创建该组中的进程,然后终⽌。只要在某个进程组中⼀个进程存在,则该进程组就存在,这与其组⻓进程是否终⽌⽆关。删...

2018-06-14 00:48:32

硬连接与软链接

硬连接  硬连接是指通过索引结点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引结点号(inode index)。在Linux中,多个文件名指向同一个索引节点是存在的。一般这种连接就是硬连接。   硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”操作。因为对应该目录的索引节点有一个以...

2018-06-13 18:12:34

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!