自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从00000000000000000000000000000000到11111111111111111111111111111111

分水岭不好——————————————————————————————————————————————好晚安!!!

2019-08-30 00:32:38 631

原创 【C++】弱智能指针weak_ptr详解

在最早有介绍关于智能指针的博文,但并未深入探讨弱智能指针的存在,这是简单提到它是来配合强智能指针一起使用,且不可以单独使用,所以对于弱智能指针它的作用就是解决强智能指针之间的相互引用而存在的。https://blog.csdn.net/IT_Mitchell/article/details/86615669那,本文主要介绍关于弱智能指针weak_ptr的一些东西;关于weak_ptr,we...

2019-10-09 20:32:40 743

原创 【剑指offer】字符串翻转以及左旋转字符串

题目一:字符串翻转题目描述: 输入一给英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如:输入“I am a student.”,输出为“student. a am I”;思路:第一步:对整个字符串进行逆置,例如就是将“I am a student.”逆置为".tneduts a ma I" 第二步:对句子中的每个单词在进行逆...

2019-10-07 15:48:21 220

原创 【剑指offer】栈和队列相关题目——后序会补充

题目一:两个栈实现一个队列;也就是利用栈的先进后出实现队列的先进先出特性;这里实现的接口有:入队、出队;基本思路:利用两个栈实现队列,也就是说利用栈的先进后出的规则实现队列的先进先出;那么,如图: 因此,对于函数appendTail,只需要对stack1进行入栈操作即可;对于函数deleteHead,当stack2不为空时,stack2的栈顶元素就是最先进入队列的元素,将其出队就;...

2019-10-06 18:47:27 234

原创 【剑指offer】面试题12:回溯法——矩阵中的路径

面试题12:矩阵中的路径题目:请设计一个函数,用来判断在一个矩阵中是否在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵的上、下、左、右移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入格子。例如:在下面的3X4的矩阵中包含一条字符串“bfce”的路径。但矩阵中不包含字符串“abfb”的路径,因为字符串的每一个字符b占据了矩阵中的第一行第二个格...

2019-10-06 17:53:18 220

原创 【剑指offer】面试题15:二进制中1的个数

总结总结以前写过的一些题目吧。。。。回顾题目:请实现一个函数,输入一个整数,输出该数二进制表示的1的个数。例如,9的二进制是1001,有2位是1.因此,如果输入时9,则输出就是2.思路: 方法一: 整型数据除法 该整数除2,原来的数字将会减少一个0; 若有余数,则表示当前位置有一个1;int Count(int data){ int n...

2019-10-06 17:47:08 126

原创 【C++】class和struct的区别

语法上,class和struct做类型定义时只有两点区别:默认继承权限,如果不指定,来自class的继承默认是按照private继承处理,来自struct的继承默认是按照public继承处理; 成员的默认访问权限:class默认是private,struct默认的是public; “class”这个关键字还用于定义模板参 数,就像“typename”。但关键字“struct”不用于定义模板...

2019-10-02 13:05:02 239

原创 【Leetcode】100.相同的树

给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 ...

2019-09-14 15:17:36 137

原创 【STL】容器(二)——set和map简单了解

一、set单重集合和multiset多重集合(一)set和multiset的简述Set是我们所说的单重集合。Set是一类数据的集合,一个有序集合,也就是说它里边的元素都是排好序的,并且set不允许插入的元素重复。Set支持插入删除查找等操作,它的所有操作都能在(logN)的时间复杂度内完成,效率很高。Multiset与set的区别就在于,multiset允许插入的元素重复。(二)set...

2019-09-01 20:33:43 218

原创 【STL】vector的一些API详解

在容器(一)中有简单介绍我们的vector容器。在本节,主要讲解关于vector的一些API。vector是我们STL中的一种顺序容器,它的底层是用数组实现的,所以vector的内存无论是在物理上还是在逻辑上都是连续的。它也可以像数组一样进行操作,例如按照下标访问元素,vector<int> vec(1,0); vec[0];访问0号下标的元素。另外,那对于vector还有哪些我...

2019-09-01 20:27:51 457

原创 【Linux】fork函数详解以及与vfork的区别

fork()函数是用来通过一个现有的进程创建一个新进程。一、简述fork()函数1、函数原型:pid_t fork(void);2、返回值:0 返回到子进程中 >0 给父进程返回新子进程的进程ID; -1 出错3、两个问题:为什么子进程中返回0?为什么要向父进程中返回新子进程的进程ID?...

2019-08-31 19:02:56 342

原创 【STL】容器(一)——顺序容器vector、list、deque(初级简单了解)

目录一、vector(一)对于vector容器的插入删除以及访问的研究:(二)vector的扩容机制(三)优缺点二、list(一)对于list插入删除以及访问的研究:(二)list的优缺点三、deque(一)对于deque容器的插入删除操作以及访问的研究(二)deque的扩容机制(三)优缺点四、vector和deque的区别一、vectorV...

2019-08-31 18:52:24 448

转载 【Linux】Linux虚拟地址空间布局以及进程栈和线程栈总结

整篇文章均转自:https://blog.csdn.net/FreeeLinux/article/details/53782986

2019-08-31 11:09:54 167

原创 【数据结构】——BST二叉搜索树

BST树——二叉平衡/搜索树它的特点是:左孩子的值 < 根的值;根的值 < 右孩子的值; 所有关键码的结点都不相同; 左右子树也都是二叉搜索树; 并且BST树不一定是一棵完全二叉树。对这样一棵二叉搜索树,进行中序遍历,可以按从小到大的顺序将各节点关键码排列起来,所以也称二叉搜索树为二叉排序树。1、定义二叉搜索树的结构结点结构:typedef int Ke...

2019-08-30 00:27:34 353

原创 【算法】页面置换算法FIFO、LRU和LFU的概述以及实现方式

页面置换算法,我们最常用的页面置换算法包括FIFO先来先服务,LRU最近最久未被使用,LFU最近最少被使用以及我们的时钟置换算法。一、FIFO算法——先来先服务1、简述FIFO算法FIFO算法是我们比较简单的置换算法,就是先来先服务或者说是先进先出。也就是说在进行页面置换的时候,最先来的那个会被最先置换出去。先进入的指令先完成并引退,跟着才执行第二条指令。2、FIFO算法的简单...

2019-08-27 15:03:13 11694 1

原创 【LeetCode】957.N天后的牢房

题目描述:8 间牢房排成一排,每间牢房不是有人住就是空着。每天,无论牢房是被占用或空置,都会根据以下规则进行更改:如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用。否则,它就会被空置。(请注意,由于监狱中的牢房排成一行,所以行中的第一个和最后一个房间无法有两个相邻的房间。)我们用以下方式描述监狱的当前状态:如果第 i 间牢房被占用,则 cell[i]==1,...

2019-08-25 20:16:17 306

原创 【Leetcode】3.无重复字符的最长子串

题目描述:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最...

2019-08-25 20:16:11 150

原创 【c++】浅拷贝、深拷贝和写时拷贝

本文将写时拷贝、浅拷贝和深拷贝进行对比。利用string类来进行解释。一、浅拷贝和深拷贝1、浅拷贝浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。浅拷贝,当类里面有指针对象时,拷贝构造和赋值运算符重载都只进行值拷贝(浅拷贝),两个对象指向同一块内存,对象销毁时该空间被释放了两次,因此程序崩溃。释放的时候原来的指针会对该内存块进行释放,当新的指针再进...

2019-08-25 20:15:30 189

原创 【c++】设计模式——观察者模式

三、Observe模式(观察者模式)Observe模式分为观察者和监听者两种角色。观察者:观察事件;并且通知对于该事件感兴趣的监听者;(也就是两件事,一是注册事件、regsitermessage;二是发布事件,handlemessage);监听者:处理事件;Observe的一个实例model/view/control(MVC)在系统开发架构设计中有着很重要的地位和意义,MVC实现了...

2019-08-20 13:42:55 231

原创 【c++】设计模式——简单工厂模式、工厂模式和抽象工厂模式

Factory模式的两个最重要的功能:(1)定义创建对象的接口,封装了对象的创建;(2)使得具体化类的工作延迟到子类当中;(一)简单工厂模式简单工厂模式是需要在工厂类中做判断,从而创造相应的产品,当增加新产品时,需要修改工厂类。简单工厂模式的结构图:Factory Pattern是我们的工厂类,它里边有n多条生产线,每条生产线对应不同的类,生产不同的东西。对于用户,用户...

2019-08-20 13:40:31 273

原创 【mysql】mysql总述——存储引擎、索引、触发器、事务以及简单的SQL语句等

rhel-server-6.3-i386-dvd.isoservice mysqld startmysql -u root -pservice mysqld start 提起服务器端;mysql -u root -p 连接到mysql服务器上;一、存储引擎(重点掌握MYISAM INNODB)(一)MYISAM存储引擎:不支持外键、不支持事务;支持全文索...

2019-08-17 15:37:22 261

原创 【C++】设计模式之——单例模式

保证一个类仅有一个实例对象,并且提供一个访问它的全局访问点,并且使用静态数据成员来表达这唯一的一个对象。可以类比于windows的任务管理器,无论多少次打开,始终只显示一个窗口。一、实现单例模式需要注意的点: (1)屏蔽构造和拷贝构造函数; (2)在类中提供一个接口生成唯一的对象,不能返回类类型; (3)不能依赖对象调用;...

2019-08-12 19:48:30 211

原创 【c++】浅拷贝、深拷贝和写实拷贝技术

本文将写时拷贝、浅拷贝和深拷贝进行对比。利用string类来进行解释。一、浅拷贝和深拷贝1、浅拷贝浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。缺陷:浅拷贝,当类里面有指针对象时,拷贝构造和赋值运算符重载都只进行值拷贝(浅拷贝),两个对象指向同一块内存,对象销毁时该空间被释放了两次,因此程序崩溃。释放的时候原来的指针会对该内存块进行释放,当新的指...

2019-08-10 11:10:24 214

原创 【c++】多继承和虚继承

一、关于多继承 菱形继承:指的是B继承A,C继承A,D继承B和C。下图是菱形继承的过程,以及各类的简单的内存布局。菱形继承存在的问题:间接基类的数据会出现多份导致访问出错,并且存在内存浪费;我们可以利用虚继承来解决这一问题。二、虚继承虚继承是面向对象编程中的一种技术,是指一个指定的基类,在继承体系结构中,将其成员数据实例共享给也从这个基类型...

2019-08-08 16:24:00 373

原创 【c++】c++三大特性之——多态

c++三大特性分别为封装继承和多态,多态的本质是我们的接口复用。在多态的研究中,我一般是以动多态为主.。也就是在运行阶段才能确定函数调用。实现动多态一般采用虚函数,那实现虚函数 一般用的是virtaul关键字。同时,也包括我们的纯虚函数,虚析构等等。

2019-08-08 14:02:11 289

原创 【Linux】地址映射

一、X86体系的发展历史:首先先认识以下的寄存器:DS:数据寄存器CS:代码寄存器SS:栈寄存器IP:偏移寄存器在8086到80186的时候还没有我们的操作系统,他们属于实地址模式: DS <<4 + IP = 物理地址;DS:基地址IP:偏移地址,偏移量也称逻辑地址;16位地址的偏移:2^16=64k; 每个段大小1...

2019-08-08 10:05:50 364

原创 【Linux】 操作系统的内存管理方案

逻辑地址是在我们编译结束之后就会存在的;逻辑地址是4G虚拟地址空间上的地址;物理地址是真实加载到内存中的地址;一、内存管理的五大需求内存管理是操作系统设计中最难的方面之一。有效的内存管理在多道程序中是至关重要的。那么何为内存管理呢? 我们说细分的任务由操作系统动态完成,这就成为内存管理。简单的来说,就是操作系统为任务来进行内存划分让其执行等。 内...

2019-08-03 19:16:36 784

原创 【Linux】高性能服务器编程(四)——I/O复用之epoll

见上文poll一、Epoll——Linux下独有且Epol将用户关注的文件描述符上的事件直接由内核记录一组函数:创建:Int epoll_create(int size);//创建内核事件表; 内核事件表底层是用红黑树构建的; Size只是给内核的一个提示,告诉他需要多大的事件表;操作内核事件表:Int epoll_ctl(int epfd, ...

2019-07-31 20:17:07 208

原创 【Linux】高性能服务器编程(三)——I/O复用之poll

前篇介绍的是关于I/O复用的方式之一select。见select本文将及诶少第二种方式poll;一、poll1、函数原型Int poll(struct pollfd *fds, int nfds, int timeout);Fds:指定被监听的事件的集合;传的是数组首地址,由用户定义;大小是由nfds来确定;nfds:指定被监听事件集合fds的大小,Timeout:...

2019-07-31 17:41:21 253

原创 【Linux】高性能服务器编程(二)——I/O复用之select

见上文高性能服务器编程(一)"多进程多线程和进程池线程池“在多进程多线程和进程池和线程池进行多并发操作的时候,进程或线程给一个客户端服务时,大部分是在阻塞等待客户端处理;目标:当客户端发送来数据后,再分配线程或进程为其服务,这一次服务完成则进程或线程进入阻塞态等待下一次数据到达;所分配的进程和线程不仅仅只为一个客户端服务,而是为每一次数据服务。这种方式就称为我们的I/O复用。一、I...

2019-07-31 15:30:29 302

原创 【Linux】多进程编程——fork、僵死进程、孤儿进程、信号和进程替换

目录一、进程创建(1)fork函数(2)写时拷贝技术(3)frok之后谁先运行?(4)fork创建进程的流程,其内核实现原理(5)fork和vfork的区别(6)进程调度(后期会有一篇来详细介绍)二、僵死进程、孤儿进程和守护进程(1)僵死进程(2)孤儿进程(3)守护进程三、信号 在进程PCB中记录(1)信号概念(2)信号的响应方式(3...

2019-07-31 08:56:43 358

原创 【Linux】高性能服务器编程(一)——多进程/多线程和进程池/线程池

如何实现同一时刻能与多个客户端同时交互?我们希望是服务器与多个客户端交互以并发进行处理。在我们高性能服务器编程下有这样几种方法,一是多进程/多线程,二是进程池/线程池,三是I/O复用。目录一、多进程/多线程(一)多进程(二)多线程:启动多个线程,每个线程执行和一个客户端交互的程序;(三)两者的选择和比较1、多进程和多线程的选择2、多进程/多线程实现并发的缺陷:二、进...

2019-07-29 20:21:54 590

原创 【网络】应用层协议(二)——DNS协议

在应用层除了我们上篇说过的HTTP协议外,还有我们的DNS称为域名解析协议。那么何为域名系统,为什么要出现这个东西,它又是如何进行地址解析的呢等等,我们这篇来进行介绍。目录一、DNS域名系统 1、出现原因 2、概念二、互联网的域名结构三、域名服务器四、域名的解析过程(一)递归查询(二)迭代式一、DNS域名系统...

2019-07-28 21:19:30 490

原创 【网络】应用层以及其协议(一)——HTTP协议

在前面分别介绍了网路层和运输层的功能以及其相关的一些协议。由以往的叙述可知,数据在网络中传输的真正是应用进程。我们的运输层为应用进程提供了端到端的通信服务。但是不同的网络应用的应用进程之间,还需要不同的通信规则。因此我们还需要了解到运输层之上的应用层以及在应用层上所对应的一些协议。目录一、应用层详解二.HTTP超文本传送协议(一)了解万维网的大致工作过程(二)HTTP基础1...

2019-07-28 20:10:20 688

原创 【算法】递归和分治策略

分治策略在我们的排序算法中的快速排序、归并以及二分查找中经常用到,本文就来探讨一下分治策略。当然,与分治策略密不可分的还有我们经常用到的递归。目录一、递归基础二、分治策略基础三、来看几个递归分治的例子 1、快速排序2、求第K大(小)/最小(大)的K个数3、最接近点对问题一、递归基础一个直接或间接的调用自身的算法称为递归算法。递归的使用会让我们对...

2019-07-27 17:58:34 310

原创 【c++】c++三大特性之——继承

了解到c++的面向对象的编程思想以及它的三大特性封装、继承、多态后,本文主要讲述他的继承这一特性。目录1、了解继承2、继承的本质3、继承的内容4、继承的写法5、继承与派生的关系6、派生类(子类)的内存布局7、派生类对象的构造析构8、基类中不同访问限定符下的成员以不同继承方式继承后再派生类中的访问限定9、类与类的关系10、基类或派生类指针或引用的相互指向或...

2019-07-27 15:18:27 174

原创 【c++】函数模板

1、了解函数模板 可以说模板是产生代码的代码;函数模板: Template <typename T,……>T 函数名(T a,T B……){ 模板体;}2、函数模板的编译过程 编译定义点,模板头部; 调用点编译——模板函数;3、模板的实例化过程模板的实例化...

2019-07-27 11:22:46 276

原创 【Linux】线程基础----概念、区别于进程、线程库的使用等

目录一、了解线程二、线程的实现方式三、线程与进程的区别四、线程库的使用五、多线程的数据共享问题在前面对于进程包括其概念、创建、释放以及进程间通讯的方式等之后,我们再提到比进程还要轻量的一个执行序列就是线程。线程是轻量级的进程,换句话说线程是被进程所包含的,进程里中是存在线程的。一、了解线程 我们从两方面去理解线程:一是线程是轻量级的进...

2019-07-26 19:33:54 193

原创 【Linux】进程基础——进程的管理方式、状态以及加载等

目录1、进程2、操作系统对于进程的管理方式3、进程的创建和销毁4、五种进程状态5、以“分页”内存管理方案,进程的加载1、进程进程是运行中的程序,是一个动态的过程,是操作系统管理和分配资源的基本单单位;相对于进程我们还要了解线程的概念,线程是一种轻量级的线程等,关于线程后期进一步总结。2、操作系统对于进程的管理方式PCB:存放进程属性信息、程序计数器、程序上下文、...

2019-07-26 15:12:57 237

原创 【Linux】简述线程同步以及线程安全

一、线程同步线程之间协同工作,用于多线程访问临界资源,必须按照一定的先后顺序访问执行。线程同步的方式包括线程级的信号量、互斥锁以及条件变量1、线程级的信号量线程级的信号量有两种,一是二进制信号量,二是计数型信号量;当有多个临界资源时,采用计数型信号量。进程间同步的信号量是系统V信号量,线程间同步的信号量是POSIX,这两个信号量不可以交换使用。头文件:#include<sem...

2019-07-26 09:49:28 220

空空如也

空空如也

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

TA关注的人

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