自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

某薛的黑猫

XiXiTaoZi

  • 博客(99)
  • 收藏
  • 关注

原创 内存管家

一:项目简介内存管家是一个内存池,它实现了在多核多线程的环境下,效率较高的处理高并发的内存池。它由三层缓存结构组成,三层缓存分别为ThreadCache、CentralCache、PageCache。ThreadCache可以解决多核多线程环境下,锁的竞争问题;CentralCache可以均衡内存资源;PageCache可以解决内存碎片问题。内存碎片:在内存分配的过程中会产生内存碎片,而内存碎...

2019-08-04 18:21:13 250

原创 资源管理小助手

一:项目介绍本项目是一个支持多人访问的http服务器,在每一个客户端访问服务器的时候可以对其进行目录内的文件列表展示,并且支持文件下载与文件上传的功能,从而达到一个资源共享的目的。二:项目流程1.首先搭建服务器1)为了保证文件下载与文件上传功能的可靠性,该服务器使用TCP协议。TCP协议是一个面向字节流的,可靠 的,面向连接的传输层协议。它的确认应答机制,校验和,序列号,重发机制以及链接管...

2019-08-04 00:41:01 427

原创 进程调度队列与进程调度算法的学习

引言:在学习了进程创建、进程等待、进程退出后,父进程创建子进程,父子进程谁先执行由它们的优先级决定,这就了解到了进程的调度,本篇为关于进程调度知识的学习。1.为什么要引入调度,引入调度的目的是什么?在计算机操作系统中,可能同时有数百个批处理任务存放在磁盘的中,或者有数百个终端与主机相连接,这样一来内存和处理器等资源便供不应求。如何从这些任务中挑选任务进入主存运行、如何在进程之间分配处理器时间,...

2019-07-17 20:59:54 1345

原创 FLAG

不想进大厂的程序员不是好程序员。 努力,冲鸭!

2019-04-25 12:37:31 362

原创 网络基础

1.冯洛伊曼理论上是网络,不考虑数据丢失。数据发出网卡收到存在内存CPU(运算,解包自低向上)封装在内存,通过网卡丢出去但是不可距离过长,因为长距离传输容易造成数据的丢失。(Tcp可以解决丢包问题,IP解决查找问题)2.网络的发展独立模式:计算机之间相互独立。网络互联:多台计算机连接在一起,完成数据共享。局域网LAN:计算机数量更多了,通过交换机和路由器连接在一起。(交换...

2019-02-19 16:08:07 129

原创 IP地址与端口号

1.IP地址IPv4版本的IP地址为4字节,也就是32位网络层的数据报中封装两个IP地址,一个源IP地址(数据报源主机的IP),一个目的IP地址(数据报目的主机的IP)一个数据报的头部不应该只存在源IP地址和目的IP地址,还应该存在一个协议字段告诉应该交给上层的哪一个协议2.端口号《1》基本概念端口号是传输层的概念端口号是一个2字节16位的整数端口号用来标识一个进程...

2019-02-11 11:35:17 5897

原创 智能指针

1.智能指针存在的必要性C++的内存管理是让很多事都需要程序员自己去处理,例如:当我们写一个new语句时,就一定要存在对应的delete语句去释放资源,但是我们不能避免程序还未执行到delete时就跳转了或者在函数中没有执行到最后的delete语句就返回了,如果我们不在每一个可能跳转或者返回的语句前释放资源,就会造成内存泄露。使用智能指针可以很大程度上的避免这个问题,因为智能指针实质上就是一个类...

2019-02-11 04:00:26 135

原创 异常

1.C语言处理错误的方式终止程序,eg:assert,如果断言为假则终止进程返回错误码。根据错误码查找错误码对应的错误信息,使用广泛C标准库中的setjmp和longjmp组合2.C++的异常处理异常是一种处理错误的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的直接或间接的调用者处理这个错误。throw:当问题出现时,程序会抛出一个异常。通过使用throw关键字...

2019-02-11 02:49:32 156

原创 IO流

1.c语言的IO函数请看本篇博客:https://blog.csdn.net/weixin_41892460/article/details/826892662.c语言的输入与输出C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数 据,并将值存放在变量中。printf(): 将指定的文字/字符串输出到标准输出设备(...

2019-02-11 01:48:48 135

原创 模版特化及类型萃取

1.非类型模版参数模版参数分为类型形参与非类型形参类型形参:出现在模版参数列表中,跟在class或者typename之类的参数类型名称非类型参数:用一个常量作为类(函数)模版的一个参数,在类(函数)模版中可将该参数当做常量来使用T为类型形参,N为非类型形参template<class T, size_t N = 10>class Array{public: T&a...

2019-02-11 00:52:50 158

原创 STL简介

1.STL基本概念STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且 是一个包罗数据结构与算法的软件框架。2.STL的版本原始版本 Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意 运用、拷贝、修改、传播商业使用这些代码,无需付费。唯一的...

2019-02-10 03:21:42 160

原创 【c语言】可变参数

1.基本概念通常将函数实现为可变参数的形式,可以使得函数可以接受1个以上的任意多个参数(不固定)2.实例使用#include<stdlib.h>#include<stdio.h>#include<stdarg.h>int average(int n, ...){//声明一个va_list 类型的变量arg,它用于访问参数列表的未确定部分 ...

2019-02-08 19:35:39 153

原创 【c语言】函数栈帧

1.函数栈帧的基本概念在调用函数时,为函数开辟栈空间,用于本次函数调用中临时变量的保存与现场保护等等。栈是由高地址向低地址延伸的。寄存器ebp指向当前的栈帧的地步(高地址),寄存器esp指向当前栈帧的顶部(低地址)。2.实例分析代码 #include<stdio.h> int Add(int x, int y) { int z = 0; ...

2019-02-08 17:18:13 343

原创 读写锁

1.基本概念读写锁就是解决多读少的问题。读写锁支持当没有线程去写入时,多个线程可以同时去共享的访问临界资源,而当临界区没有线程去访问或者没有线程去写的时候才允许该线程去写。这种用于共享访问给定资源的读写锁,也叫共享-独占锁,获取一个读写锁用于读的叫做共享锁,获取一个读写锁用于写的叫做独占锁。2.三种关系读者与读者:共享关系,可以多个线程同时访问写者与写者:互斥关系,当一个线程在写,其他线...

2019-01-29 17:35:40 151

原创 生产者消费者模型

1.基本概念生产者消费者模型就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里面取出,阻塞队列就相当于一个缓冲区平衡了生产者和消费者的处理能力,这个阻塞队列就是用来给生产者和消费者解耦的。2.优点解耦支持并发支持忙闲不均...

2019-01-28 21:34:32 150

原创 守护进程

1)守护进程基本概念守护进程也称精灵进程(Daemon),是运⾏在后台的⼀种特殊进程。它独⽴于控制终端并且周期性地执⾏某种任务或等待处理某些发⽣的事件。守护进程是⼀种很有⽤的进程。Linux的⼤多数服务器就是⽤守护进程实现的。⽐如淘宝啦,百度,支付宝这些等等。Linux系统启动时会启动很多系统服务进程,这些系统服务进程没有控制终端,不能直接和⽤户交互。其它进程都是在⽤户登录或运⾏程序时创建,在...

2019-01-22 17:14:32 205

原创 Linux系统调用接口

open #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int open(const char *pathname, int...

2019-01-20 19:35:22 616

原创 冯诺依曼体系的了解

冯诺依曼体系结构1.框图2.组成输入设备:键盘、鼠标、写板、扫描仪等。中央处理器:含有运算器与控制器等。输出单元:显示器,打印机等。3.注意事项上面所说的存储器指的是内存不考虑缓存情况,CPU只能对内存进行读写,不能访问输入设备或输出设备输入/输出设备要输入或者输出数据,也只能写入内存或者从内存中读取所有设备都只能直接与内存打交道操作系统1.组成任何计算机系统都包含...

2019-01-15 20:43:47 5225 4

原创 行缓冲了解

1.回车与换行在电视上大家应该看到过,有人用一种打字机打字,那是计算机未出现前的产品。但它存在一个缺陷,在打完一行换行的时候,需要0.2秒的时间,但是这0.2秒可以打两个字符,如果这0.2秒内有新的字符传入,那么该字符会丢失。于是打字机的研发人员便想了办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做”回车”,告诉打字机把打印头定位在左边界;另一个叫做”换行”,告诉打字机把纸向下移...

2019-01-15 15:48:15 1099

原创 Linux调试器gdb的使用

1.使用条件在源代码生成二进制程序时加上-g。2.使用相关命令1)使用gdb 需要调试的文件名命令开始调试2)使用 ctrl + d或者quit退出3)list/l:显示源代码,每次列10列4)l/list 函数名:显示函数的源代码5)r/run:运行程序,相当于vs中的F56)n/next :单条执行,相当于vs中的F10逐过程7)s/step:进入函数调用,相当于vs中的F1...

2019-01-14 22:10:02 181

原创 zip与tar指令

1.zip/unzip指令1)zip语法:zip 压缩文件.需要zip的目录或文件功能:将目录或文件压缩成zip格式使用-f参数可以将指定目录下的所有文件与子目录递归处理2)unzip语法:unzip 压缩文件功能:将zip解压为文件使用-d参数可以指明解压文件的存放路径3)实例a.创建file.cc文件,并使用zip指令进行解压,得到file.zip文件。b.unzip ...

2019-01-14 13:49:47 580 1

原创 touch指令

1.touch指令的语法touch【选项】 文件。2.功能touch指令可以创建不存在的文件,或者touch通过参数修改目录或文档的日期时间。3.实例(1)使用touch指令创建一个新文件test.cc(2)使用shat查看文件Access:最后访问时间,查看文件,这个时间会改变,使用cat命令查看文件时,可以看出Access时间改变了。Modefy:最后修改时间,文件内容修...

2019-01-13 21:07:01 8000

原创 线程的同步与互斥

文章目录1.名词了解2.互斥量1)互斥量存在的意义2)通过操作实现共享变量带来问题的售票系统理解互斥量3)互斥量的接口4)互斥量的加锁与解锁5)完善的售票系统6)互斥量原理探究3.条件变量1)条件变量存在的意义2)条件变量基本概念3)条件变量的接口4.可重入与线程安全1)概念2)常见的线程不安全的情况3)常见的线程安全的情况4)常见不可重入的情况5)常见可重入的情况6)可重入与线程安全联系7)可重...

2018-12-25 16:21:51 203

原创 进程间关系

文章目录一:进程组、作业、会话1.进程组2.作业1)基本概念2)作业控制一:进程组、作业、会话1.进程组每个进程除了有⼀个进程ID之外,还属于⼀个进程组。进程组是⼀个或多个进程的集合。通常,它们与同⼀作业相关联,可以接收来⾃同⼀终端的各种信号。每个进程组有⼀个唯⼀的进程组ID。每个进程组都可以有⼀个组⻓进程。组⻓进程的标识是,其进程组ID等于其进程ID。 组⻓进程可以创建⼀个进程组,创建该组...

2018-12-24 18:19:58 232

原创 简易线程池的实现

1.首先我们创建一个任务类。//回调函数typedef int(*cal_t)(int,int);class Task{ private: int x;//操作数1 int y;//操作数2 int z;//运算结果 cal_t handler_task;//运算操作 public: Task(int a,int b,cal_t handle...

2018-11-30 18:01:33 267

原创 linux线程基本概念及线程控制

文章目录1.初始线程1)线程的概念2)进程与线程的关系1.初始线程1)线程的概念在一个进程里的一个执行路线被称为线程,更专业的说是:线程是一个进程内部的控制序列,并且一个进程中至少有一个线程。2)进程与线程的关系进程:Linux系统中的进程被称为轻量级进程,CPU眼中的看到的PCB要比传统进程更加轻量级。透过进程虚拟地址空间可以看到进程的大部分资源将进程资源合理分配给每个执行流就形成了线...

2018-11-28 14:56:34 229

原创 Linux进程控制

文章目录1.进程创建1)fork函数2)调度算法了解3)fork的写时拷贝4)fork调用失败原因5)vfork函数2.进程等待1)进程等待的必要性2)进程等待的方法1>wait2>waitpid3)返回值4)参数1>pid2>st

2018-11-28 11:10:50 216

原创 Linux进程

文章目录1.进程基本概念2.进程组成3.管理方式:先描述再组织。1)描述进程2)组织进程4.查看进程<1>使用`ps aux | grep 文件1 获取文件1的进程信息<2> top:动态查看进程的变化5.通过系统调用获取进程标识符号6.进程的状态1)常见状态2)进程状态修改7.僵尸进程1)概念

2018-11-28 10:49:37 206

原创 C++string类模拟实现与深浅拷贝

文章目录1.深浅拷贝1)深浅拷贝的引入2)浅拷贝3)深拷贝a.传统写法b.现代写法4)写时拷贝2.string的模拟实现String.hString.cc1.深浅拷贝1)深浅拷贝的引入观察下面的代码:class String{public: String(const char* str = "") { // 构造string类对象时,如果传递nullptr指针,认为程序非法,此处...

2018-11-24 19:21:22 341

原创 C++string类初识及其常用接口说明

文章目录1.初识string类1)为什么c++不使用c语言中的字符串?2)string类基本了解2.string类的常用接口1)string类对象的常见构造a.常用构造了解b.常用构造测试2)string类对象的容量操作a.容量操作了解b.容量操作测试c.注意事项d.可以使用reserve提高插入数据时的效率,避免增容的开销。3)string类对象的访问操作a.访问接口了解b.测试4)string...

2018-11-24 12:07:01 869

原创 【数据结构】搜索二叉树的实现

BinarySortTree.h#ifndef __BINARYSTREE_H__#define __BINARYSTREE_H__#include <stdio.h>#include <malloc.h>#include <assert.h>#include <stdlib.h>typedef int BSDataType;...

2018-11-23 11:01:00 158

原创 【c++】模版初了解

文章目录1.泛型编程的引入2.模版1)函数模版1>概念2>函数模版格式3>函数模版的原理4>函数模版的实例化《1》 隐式实例化:让编译器根据实参推演模板参数的实际类型《2》显式实例化:在函数名后的<>中指定模板参数的实际类型5> 模板参数的匹配原则2)类模版1.泛型编程的引入当我们想实现一个交换函数时,但要考虑多种类型,怎么实现一个通用的交换类型呢

2018-11-20 21:22:16 142

原创 【c语言】volatile关键字

文章目录1)作用:可以防止编译器进行优化,保证内存的可见性。2)应用场景:用于多线程或多CPU编程。1)作用:可以防止编译器进行优化,保证内存的可见性。引入:const修饰变量,变量的值不可更改,但是可以使用指针取地址进行改值。#include<stdio.h>int main(){ const int n = 10; int *p = (int *)&

2018-11-13 19:17:50 140

原创 Linux信号的产生、阻塞与捕捉

文章目录1.信号的基本概念1)理解什么是信号?2)信号列表2.信号的产生1)产生信号的方法概述2)终端产生信号3)调用系统函数向进程发信号kill命令raise函数abort函数4)软件条件产生信号3.阻塞信号1)信号其他相关常见概念2)在内核中的表达3)sigset_t4)信号集操作函数5)sigprocmask函数6)sigpending函数1.信号的基本概念1)理解什么是信号?⽤户...

2018-11-06 17:00:15 317

原创 【设计模式】单例模式

文章目录1.单例模式基本介绍2.饿汉模式3.懒汉模式1.单例模式基本介绍2.饿汉模式3.懒汉模式

2018-11-06 14:24:19 132

原创 【数据结构】位图与布隆处理器

文章目录1.位图的实现BitMap.hBitMap.c2.布隆的实现BloomFilter.hBloomFilter.c1.位图的实现BitMap.h#ifndef __BITSET_H__#define __BITSET_H__#include<stdio.h>#include<stdlib.h>#include<assert.h>#in...

2018-11-05 16:54:07 145

原创 【数据结构】搜索二叉树的key-value模型

文章目录1. 采用key-value模型判断一个单词是否拼写正确,并且显示翻译BSVTree.hBSVTree.c2. 采用key-value模型才能求出文章中所有单词重复出现的次数呢?BSVTree.hBSVTree.c1. 采用key-value模型判断一个单词是否拼写正确,并且显示翻译BSVTree.h#pragma once#include <stdio.h>#in...

2018-11-05 16:42:31 1442

原创 【数据结构】堆的实现

文章目录Heap.hHeap.cTest.cHeap.h#ifndef __HEAP_H__#define __HEAP_H__#include<assert.h>#include<stdio.h>#include<stdlib.h>#include<malloc.h>typedef i

2018-11-05 16:25:10 116

原创 【数据结构】二叉树基本操作

文章目录BinaryTree.hBinaryTree.cTest.c栈和队列的相关函数:栈:https://blog.csdn.net/weixin_41892460/article/details/82973851队列:https://blog.csdn.net/weixin_41892460/article/details/82973881BinaryTree.h#ifndef __...

2018-11-05 16:22:41 282

原创 【数据结构】双向链表的实现

文章目录LinkList.hLinkLish.cLinkList.h#ifndef __LINKLIST_H__#define __LINKLIST_H__#include <stdio.h>#include <stdlib.h>#include <assert.h>typedef int DataType;typedef struct L...

2018-11-05 16:01:35 151

空空如也

空空如也

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

TA关注的人

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