自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【HTTP】总结 Cookie 和 Session 的区别与联系

cookie 与 session1. Cookie 和 session概念1.1 什么是cookie1.2 cookie的创建1.3 cookie 的分类1.4 什么是session2. cookie 和 session 的区别3. 为什么需要cookie 和session4. cookie 和 session 的配合5. 如果浏览器中止了cookie,如何保障整个机制的正常运转?1. Cookie 和 session概念1.1 什么是cookiecookie是服务器发给用户浏览器,并保存在用户浏览器

2020-08-29 16:06:17 250

原创 死锁发生的条件 以及 如何避免

死锁什么是死锁死锁的4个必要条件死锁的避免1. 预防死锁2. 设置加锁顺序3. 支持定时的锁(超时放弃)4. 死锁避免的算法5. 死锁恢复什么是死锁当两个或者两个以上的进程,因为争夺资源而造成相互等待的状态,由于存在一种环路的依赖关系而永远的等待下去。经典描述:“哲学家进餐问题”:死锁:每个人都立即抓住自己左边的筷子,然后等待自己右边的筷子空出来,但同时又不放下已经拿到的筷子,形成一种相互等待的状态。饥饿:哲学家们都同时想吃饭,同时拿起左手边筷子,但是发现右边没有筷子,于是哲学家又同时放下左手边筷

2020-08-28 17:00:46 776

原创 【HTTP】 各协议版本介绍(面试:各版本的区别!)

HTTP协议版本HTTP1.0特点优点缺点请求报文GET和POST的区别?HTTP1.0特点优点简单HTTP基本的报文格式就是 header + body。灵活和易于扩展HTTP协议里的各类请求方法`状态码、头字段等都是可以自定义扩展的。同时 HTTP 由于是工作在应用层( OSI 第七层),则它下层可以随意变化。应用广泛和跨平台缺点无状态服务器不会去记忆 HTTP 的状态,所以不需要额外的资源来记录状态信息但是会导致它在完成有关联性的操作时会非常麻烦。例如登录->

2020-08-25 17:42:46 3420

原创 TCP协议 ---- 如何保证可靠传输(及UDP如何实现可靠)

可靠传输TCP实现可靠传输1. 数据包检验2. 对失序数据包重新排序3. 丢弃重复数据4. 确认应答机制5. 超时重传6. 三次握手、四次挥手7. 流量控制8.拥塞控制提高性能1. 滑动窗口2. 延迟应答3. 捎带应答面向字节流TCP实现可靠传输1. 数据包检验数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时 TCP 发送数据端超时后会重发数据;2. 对失序数据包重新排序既然 TCP 报文段作为 IP 数据报来传输,而 IP 数据报的到达可能会失

2020-08-15 15:41:21 830

原创 HTTP协议之基本知识

HTTP协议什么是HTTP协议HTTP协议的演变HTTP协议格式HTTP请求方法HTTP状态码2XX 请求成功3XX 重定向4XX 客户端错误5XX 服务器错误什么是HTTP协议HTTP(HyperText Transfer Protocol, 超文本传输协议)。Web使用该协议作为规范,完成客户端到服务器端一系列运作流程。Web是建立在HTTP协议上通信的。当我们在网页浏览器输入URL时,WEB是如何呈现的?Web浏览器从Web服务器获取文件资源等信息,从而显示在Web页面。这种通过发送请求获

2020-08-07 15:00:28 345

原创 【进程 & 线程】学习基础知识(概念、状态、控制、比较、调度算法)

进程 与 线程进程什么是进程什么是线程进程与线程的联系进程与线程的区别进程什么是进程进程是操作系统正在运行的一个程序,程序一旦运行就是进程。进程可以看成是程序的一个实例,是系统进行资源分配(CPU、内存)的基本单位。进程是一个动态的概念,因此它具有动态性和并发性。进程是有以下状态的:就绪态(指进程分配到除处理机以外的必需的资源的状态,进程被创建后处于就绪状态,处于就绪状态的进程可以有多个)、执行态(指进程占用处理机正在CPU上执行的状态,在单CPU系统中,每一时刻只有一个进程处于执行状态)、阻塞态(

2020-08-06 15:47:18 215

原创 内存分布 之 堆与栈的区别

堆 与 栈 内存分布区的堆与栈区别内存分布区的堆与栈区别堆与栈实际上是操作系统对进程占用的内存空间的两种管理方式,主要有如下几种区别:管理方式不同。栈由操作系统自动分配释放,无需我们手动控制;堆的申请和释放工作由程序员控制,容易产生内存泄漏;空间大小不同。每个进程拥有的栈的大小要远远小于堆的大小。理论上,程序员可申请的堆大小为虚拟内存的大小,进程栈的大小 64bits 的 Windows 默认 1MB,64bits 的 Linux 默认 10MB;生长方向不同。堆的生长方向向上,内存地

2020-08-06 09:53:12 504 1

原创 【Linux】进程状态(+僵尸进程、孤儿进程)

进程系统调用 和 库函数什么是进程描述进程---PCB组织进程僵尸进程危害处理孤儿进程系统调用 和 库函数系统调用系统调用是指运行在用户态的应用程序向操作系统内核进行某些服务的调用,系统调用给用户程序和操作系统之间提供了一个接口。系统调用运行在内核态。库函数库函数是用户或组织自己开发的,具有一定功能的函数集合,将部分系统调用进行了封装,从而形成了库,通过库文件对程序员提供功能性调用。什么是进程进程是操作系统正在运行的一个程序,程序一旦运行就是进程。进程可以看成是程序的一个实例,是系统进

2020-08-05 14:05:48 325

原创 【面试】 之 详解 进程间通信 !!

进程间通信为什么要进程间通信进程间通信的目的管道管道创建的原理优缺点消息队列工作原理优缺点共享内存优缺点信号量工作机制为什么要进程间通信进程是一个独立的资源分配单元,不同进程(这里所说的进程通常指的是用户进程)之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程的资源(例如打开的文件描述符)。但是,进程不是孤立的,不同的进程需要进行信息的交互和状态的传递等,因此需要进程间通信( IPC:Inter Processes Communication )。进程间通信的目的数据传输:一个进

2020-10-30 15:00:52 675

原创 手撕代码+++!!!

手撕数组1. 两数之和2. 第k大3. 出现次数topk4. 合并两有序数组5. 移除元素6. 数组的交集7. 旋转数组的最小数字8.变态跳台阶9. 二进制1的个数链表1. 反转链表2. 删除倒数第k个结点3. 合并两个有序链表4. 旋转链表5. 移除链表元素字符串1. 有效括号2. 字符串相加3.只反转单词4. 倒置字符串5.替换空格二叉树1. 二叉树的中序遍历2. 平衡二叉树3. 重建二叉树两个栈实现队列数组1. 两数之和class Solution {public: vector&lt

2020-10-29 14:03:44 1615

原创 【C++11】理解智能指针实现原理(+内存泄漏)

智能指针为什么用智能指针?1.1 什么是内存泄漏?1.2 内存泄漏的危害1.3 内存泄漏的分类1.4 如何避免内存泄漏为什么用智能指针?智能指针是为了解决内存泄漏的问题。1.1 什么是内存泄漏?是由于疏忽或错误导致程序未能释放已经不再使用的内存的情况。并不是指内存在物理上的消失,而是在应用程序分配某段内存后,因为设计错误,而失去了对该段内存的控制,因而造成了内存泄漏。1.2 内存泄漏的危害长期运行的程序出现内存泄漏,如操作系统、后台服务等,会导致响应越来越慢,最终卡死。1.3 内存泄漏的分类

2020-08-31 10:58:32 1137

原创 【C++】 四种强制类型转换(static_cast 与 dynamic_cast 的区别!)

强制类型转换1. static_cast2. const_cast3. reinterpret_cast4. dynamic_cast5. 为什么要需要四种类型转换?1. static_cast实现C++种内置基本数据类型之间的相互转换,不能用于两个不相关类型进行转换。例如:将整形数据转换为浮点型c语言方式int a = 8;int b = 3;double result = (double)a / (double)b;C++方式int a = 8;int b = 3;dou

2020-08-30 22:14:30 4741

原创 学习 多线程、线程池以及线程池的创建

线程池1. 单线程和多线程?1.1 多线程的优点1.2 多进程的优点1.3 如何提升多线程的效率2. 线程池2.1 什么是线程池:2.2 应用场景:2.3 优点:3. 线程池的创建1. 单线程和多线程?单线程:只是一条线程在执行任务。多线程:创建多条线程同时执行一个任务。并行:多个程序分别在不同的CPU处理机上运行,不抢占资源且可以同时运行。并发:在一个时间段内,多个程序都启动运行在同一个处理机上。1.1 多线程的优点更加高效的内存共享,多进程下内存共享不方便较轻的上下文切换,因为不用切换

2020-08-30 20:38:41 95

原创 什么是线程安全?确保线程安全的方法!生产者-消费者模型!

线程安全什么是线程安全?确保线程安全的方法互斥锁死锁什么是线程安全?线程安全就是在多执行流中,对临界资源进行争抢访问,不会造成数据的二义性或者逻辑异常。临界资源:多线程执行流共享的资源就是临界资源。临界区:每个线程内部,访问临界资源的代码。互斥:任何时刻,保证只有一个执行流访问临界资源。原子性:不会被任何调度机制打断,该操作要么完成,要么未完成。确保线程安全的方法通过同步与互斥方式实现线程安全。同步:通过条件判断实现对资源获取的合理性。互斥:通过同一时间只有一个执行流能够访问资源,实现资

2020-08-30 17:35:49 389

原创 【C++】设计模式 之 单例模式(手撕代码)

单例模式什么是单例模式饿汉模式懒汉模式什么是单例模式单例模式是常见的一种软件设计模式,单例对象的类只能实例化一个对象。该类负责创建对象,同时保证只能创建一个对象。并提供一个访问它的全局访问点,该实例被所有程序模块共享。一般应用与工具类的实现或者消耗资源的场景。特点:类构造函数私有持有自己类的引用对外获取实例的静态方法饿汉模式实例在初始化已经建好,不管你用不用,先建好再说。优点:没有线程安全的问题缺点:浪费内存空间。class singleton{public: //对外提

2020-08-29 23:14:21 653 2

原创 【C++关键字】 const 与 static 区别 (引申const 与 #define 区别)

const 与 staticstatic对普通变量和函数对成员变量和函数constconst 与 #define 的区别static对普通变量和函数变量在变量前加上关键字,被定义为一个全局静态变量或者局部静态变量。在内存中的位置:静态存储区(程序运行期间一直存在)。初始化:未被显示初始化的全局或者局部静态变量会被程序自动初始化为0。作用域:全局静态变量的作用域在声明他的文件内可见;局部静态变量的作用域在它的函数或者语句块结束的时候,随之结束。函数在返回值类型前加上关键字,就被定义

2020-08-26 15:12:05 6618

原创 【STL】 vector之 resize 和 reserve函数

vector引言resizereserve区别与联系引言在vector 中有 size() 和 capacity() 两个概念。size()是容器中实际的元素个数有多少(大小);capacity() 是容器的最大可存储空间。 resize() 改变的是元素个数的大小,reserve()改变的是存储空间。 存储空间大于等于元素个数大小。resizevoid resize (size_type n, value_type val = value_type());用来改变vector的大小(即siz

2020-08-25 18:22:16 899

原创 【C++】 理解 多态 之 静态绑定与动态绑定

静态绑定与动态绑定静态类型与动态类型静态绑定与动态绑定缺省参数与虚函数为了支持C++的多态性,才用了动态绑定与静态绑定。静态类型与动态类型对象的静态类型:对象在声明时候的类型,是在编译时期确定的。对象的动态类型:目标所指向的对象,是在运行期决定的。对象的动态类型可以更改,但是静态类型无法更改。示例:class B{}class C : public B{}class D : public B{}D* pD = new D();//pD的静态类型是它声明的类型D*,动

2020-08-25 10:14:15 3052

原创 【计算机网络】 之 数据链路层 === MAC地址、ARP协议

数据链路层MAC地址ARP协议用于两个设备(同一种数据链路节点)之间进行传递MAC地址MAC地址用来识别数据链路层中相连的节点;长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)。IP地址描述的是路途总体的 起点 和 终点;MAC地址描述的是路途上的每一个区间的起点和终点AR

2020-08-24 21:08:11 828

原创 【计算机网络】 之 网络层==== IP协议

IP协议IP概述IP数据报子网掩码网络层在复杂的环境中确定一条合适的路径。IP概述IP协议对应的是IP地址,那么IP地址是什么?IP地址(英语:IP Address, 全称:Internet Protocol Address),又译为网际协议地址、互联网协议地址。当设备连接网络,设备将被分配一个IP地址,用作标识。通过IP地址,设备间可以互相通讯,如果没有IP地址,我们将无法知道哪个设备是发送方,无法知道哪个是接收方。[2] IP地址有两个主要功能:标识设备或网络 和 寻址(英语:locatio

2020-08-24 20:46:06 200

原创 【编程题】之 (井字棋、求路径总数)

这里写目录标题1. 井字棋题目描述题目分析C++代码2. 求路径总和题目描述题目分析C++代码1. 井字棋题目描述对于一个给定的井字棋棋盘,请设计一个高效算法判断当前玩家是否获胜。给定一个二维数组board,代表当前棋盘,其中元素为1的代表是当前玩家的棋子,为0表示没有棋子,为-1代表是对方玩家的棋子。https://www.nowcoder.com/practice/e1bb714eb9924188a0d5a6df2216a3d1?tpId=8&&tqId=11055&r

2020-08-23 22:55:21 868

原创 【字符串2】(删除公共字符、合法括号序列判断、两种排序方法、密码强度等级)

字符串题集1. 删除公共字符题目描述题目分析C++代码1. 删除公共字符题目描述输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”https://www.nowcoder.com/practice/f0db4c36573d459cae44ac90b90c6212?tpId=85&&tqId=29868&rp=1&ru=/activit

2020-08-23 16:03:40 353

原创 【字符串】之 验证回文串 + 统计回文

字符串1. 验证回文串题目描述题目分析C++代码2. 统计回文题目描述题目分析C++代码1. 验证回文串题目描述给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: truehttps://leetcode-cn.com/problems/valid-palindrome/题目分析将小写字母全部转换成大写字母,设置头尾指针

2020-08-18 09:10:23 547

原创 剑指offer ====数学计算(二进制1的个数、数值整数次方、1-n的和、1出现的次数、Fibonacci)

数学计算1. 二进制中1的个数题目描述题目分析C++代码2. 数值的整数次方题目描述题目分析C++代码3. 求1-n的和题目描述题目分析C++代码2. 数值的整数次方题目描述题目分析C++代码2. 数值的整数次方题目描述题目分析C++代码1. 二进制中1的个数题目描述输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。https://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8?tpId=13&&amp

2020-08-18 08:46:30 148

原创 谈谈 TCP/IP五层模型

网络模型TCP/IP 五层模型TCP/IP 的协议TCP/IP 五层模型应用层应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如域名系统 DNS,支持万维网应用的 HTTP 协议,支持电子邮件的 SMTP 协议等等。我们把应用层交互的数据单元称为报文。运输层运输层(transport layer)的

2020-08-15 17:02:05 458

原创 TCP粘包问题 及 解决

TCP粘包什么是粘包TCP粘包是怎么产生的怎么解决拆包和粘包UDP是否会出现粘包什么是粘包如果客户端连续不断地向服务端发送数据包时,服务端接受的数据会出现两个数据包粘在一起的情况。TCP是基于字节流的,虽然应用层和TCP传输之间的数据交互是大小不等的数据块,但是TCP认为这些数据块仅仅是一串无结构的字节流,没有边界。从TCP结构的帧可以看到,在TCP的首部是没有表示数据长度的字段。基于上面两点,在使用TCP传输时,才有粘包或者拆包的现象的发生。一个数据包中包含了两个发送端发送的数据包信息,这

2020-08-15 16:23:33 210

原创 认识TCP协议 与 三次握手 、四次挥手!!

TCP协议认识TCPTCP协议格式TCP的特点三次握手为什么要三次握手四次挥手为什么要四次挥手认识TCPTCP协议顾名思义,传输控制协议,是传输层的协议。负责控制数据的传输过程,负责数据能从发送端发送到接收端。是一种面向连接、可靠传输和面向字节流的特性的协议。TCP协议格式源端口和目标端口:数据从哪来发送到哪去序列号:用来表示源端向目的端发送数据,表示在这个报文段所发送的数据的第一个字节。(TCP会对传送的每个数据流中的每一个字节都编上一个序号)确认号:期望收到对方下一个发送的数据的第一个

2020-08-15 10:55:16 109

原创 虚拟内存是什么?有什么用?

虚拟内存为什么要虚拟内存什么是虚拟内存工作原理虚拟内存的好处为什么要虚拟内存计算机的三大主件:主板、CPU、内存。程序的执行过程是,先从磁盘加载到内存,然后CPU和内存进行数据的交换和处理等实际内部操作,从而实现相应的功能。但是内存的容量十分有限,由于内存的造价较高,计算机用户升级内存容量也是一笔不小的开支。虚拟内存的出现和应用,让计算机内存容量不够的情况得到部分的解决。什么是虚拟内存计算机对内存分为物理内存和虚拟内存。物理内存是计算机中实际的内存大小,由RAM芯片组成。虚拟内存则是虚拟出来

2020-08-12 12:14:34 1914

原创 Linux入门 之 基础指令

基础指令目录指令文件指令压缩指令匹配查找进程指令网络指令环境变量IPC指令系统指令权限指令目录指令ls指令默认浏览当前文件下的所有目录信息-a 列出目录下的所有文件,包括以 . 开头的隐含文件。. 表示目录自身… 表示上一次目录-l 列出文件的详细信息。-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件-n 用

2020-08-11 21:31:30 137

原创 【数据库03】==== 表的增删改查(进阶)

增删改查进阶数据库约束NULLUNIQUE:唯一约束default:默认值约束primary key: 主键约束foreign key : 外键约束check表的设计:三大范式一对一一对多多对多新增--插入查询结果查询聚合查询聚合函数group byhaving联合查询内连接外连接自连接子查询合并查询数据库约束NOT NULL - 指示某列不能存储 NULL 值。UNIQUE - 保证某列的每行必须有唯一的值。DEFAULT - 规定没有给列赋值时的默认值。PRIMARY KEY - NOT N

2020-08-10 22:00:48 645

原创 【数据库02】==== 表的增删改查(基础)

这里写目录标题新增单行数据+全列多行数据+指定列示例查询全列查询指定列查询查询字段为表达式别名去重:DISTINCT排序:ORDER BY条件查询:WHERE案例分页查询修改删除新增单行数据+全列– 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致INSERT INTO student VALUES (100, 10000, ‘唐三藏’, NULL);INSERT INTO student VALUES (101, 10001, ‘孙悟空’, ‘11111’);多行

2020-08-10 20:13:29 118

原创 【数据库01】==== 基础介绍

数据库基础数据库的操作常用数据类型表操作数据库的操作显示当前的数据库SHOW DATABASES;创建数据库create dabase db_name;create dabase if not exists db_name2;使用数据库use 数据库名删除数据库;drop database if exists db_nama;常用数据类型数字类型数据类型大小说明对应C类型BIT[M]M指定位数默认为1二进制数,M从1-64,

2020-08-10 19:26:46 109

原创 剑指offer ==== 递归之(斐波那契、跳台阶、矩形覆盖、变态跳台阶)

算法1. 斐波那契额数列题目描述题目分析C++代码2. 跳台阶题目描述C++代码3. 矩形覆盖题目描述C++代码4.变态跳台阶题目描述题目分析C++代码1. 斐波那契额数列题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39题目分析方法三:动态规划虽然方法二可以解决此题了,但是如果想让空间继续优化,那就用动态规划,优化掉递归栈空间。方法二是从上往下递归的然后再从下往上回溯的,最后回溯的时候来合并子树从而求得

2020-08-10 17:04:09 115

原创 剑指offer ==== 栈(两个栈实现一个队列、栈的压入、弹出最小值)

剑指offer1. 两个栈实现一个队列题目描述题目分析C++ 代码2. 栈的压入、弹出序列题目描述题目分析C++代码3. 包含min函数的栈题目描述题目分析C++代码1. 两个栈实现一个队列题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6?tpId=13&&tqId=11158&rp=1&ru=

2020-08-07 15:38:17 183

原创 HTTP协议 之 HTTP与HTTPS

HTTP 与 HTTPSHTTP特性优点缺点HTTPSHTTPS 是身披 SSL 外壳的 HTTPHTTP特性优点支持客户/服务器模式。简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type(Content-Type是HTTP包中用来表示内容类型

2020-08-07 15:35:06 122

原创 内存分布 之 虚拟内存与物理内存的区别

虚拟内存 与 物理内存物理内存虚拟内存进程要访问地址的过程物理内存物理内存实际上是 CPU中能直接寻址的地址线条数。由于物理内存是有限的,例如32位平台下,寻址的大小是4G,并且是固定的。内存很快就会被分配完,于是没有得到分配资源的进程就只能等待。当一个进程执行完了以后,再将等待的进程装入内存。这种频繁的装入内存的操作是很没效率的。这就需要用到虚拟内存了。虚拟内存在那个进程创建的时候,系统都会给每个进程分配4G的内存空间,这其实是虚拟内存空间。进程得到的这4G虚拟内存,进程自身以为是一段连续的空

2020-08-06 10:29:50 259

原创 剑指offer ==== 字符串(左旋字符串、第一个不重复的字符、扑克牌顺子、替换空格、最后一个单词长度)

字符串1. 左旋字符串题目描述题目分析C++ 代码2. 字符流中第一个不重复的字符题目描述题目分析C++ 代码3. 扑克牌顺子题目描述题目分析C++ 代码4. 替换空格题目描述题目分析C++ 代码5. 最后一个单词的长度题目描述题目分析C++代码1. 左旋字符串题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,

2020-08-04 23:00:55 132

原创 剑指offer ====二叉树(二叉树深度、二叉树镜像、层次遍历、前中序遍历重建、平衡二叉树、下一个结点)

1. 二叉树的深度题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度题目分析本题目就是最简单的二叉树遍历,我们可以用递归的方法,分别对二叉树的左右子树进行遍历,找到最大路径的子树,对脚标加1。C++代码/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), l

2020-08-04 22:57:29 189

转载 C++面试题 之 实现String类

转载:https://coolshell.cn/articles/10478.htmlC++ 的一个常见面试题是让你实现一个 String 类,限于时间,不可能要求具备 std::string 的功能,但至少要求能正确管理资源。具体来说:能像 int 类型那样定义变量,并且支持赋值、复制。能用作函数的参数类型及返回类型。能用作标准库容器的元素类型,即 vector/list/deque 的 value_type。(用作 std::map 的 key_type 是更进一步的要求,本文从略)。换言之

2020-08-04 11:49:01 496

原创 【C++】STL 之 vector 与 List 对比

vector 与 list 的区别1. vector 介绍1.1 vector 迭代器失效2. list 介绍2.1 list 迭代器失效3. vector 与 list 对比1. vector 介绍vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素

2020-08-04 11:36:12 464 1

空空如也

空空如也

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

TA关注的人

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