自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

有梦想的小新人的博客

记录学习编程生活

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

原创 C++之STL非线性容器

文章目录1. priority_queue1. priority_queue定义:在优先队列中,元素赋予优先级,具有优先级最高先出的特征。例如:priority_queue<type,container,function>。其中type:数据类型;container:实现优先队列的底层容器,例如vector,deque,但不能用list; function:元素之间的比较形式。后面两个参数可以省略,一旦省略,默认是大根推常见成员函数:bool empty() const;、int si

2021-09-05 18:43:27 673

原创 C++之STL线性容器

文章目录1. 线性容器1.1 vector容器1.1.1 容器特性1.1.2 vector容器的初始化1.1.3 访问元素1.1.4 插入元素1.1.5 删除元素1.1.6 容器迭代器1.1.7 容器的大小与判断1.1.8 其他函数1.1.9 emplace操作1.1.10 vector其他特性1.1.11 相关面试题1.用==或者!=比较两个数组、vector对象是否相等2.vector实现内存的管理1.2 list容器1.2.1 插入元素1.2.2 删除元素1.2.3 查找元素1.2.4 访问元素1.2

2021-09-05 18:40:39 434

原创 LeetCode之买卖股票的最佳时机序列

文章目录1.买卖股票的最佳时机I2.买卖股票的最佳时机II3.买卖股票的最佳时机III4.1.买卖股票的最佳时机I题目链接2.买卖股票的最佳时机II题目链接3.买卖股票的最佳时机III题目链接4.

2021-04-07 10:28:20 643

原创 Leetcode之打家劫舍序列

文章目录1.打家劫舍序列一2.打家劫舍序列二3.打家劫舍序列三1.打家劫舍序列一题目链接思路:该题目是最基本的题目,没有太多的限制,按照基本思路解题即可。核心代码: int rob(vector<int>& nums) { if(nums.size()<=0) return 0; if(nums.size()<=2) return max(nums.front(),nums.back()); vector<int> dp

2021-04-06 16:54:45 350

原创 Leetcode之排序数组查找

文章目录1.在两个长度相等的排序数组中找到上中位数2.在两个长度不等的排序数组中找到中位数1.在两个长度相等的排序数组中找到上中位数题目链接:此题要求如果是偶数返回中间两个数中的前一个。分析:mid1=l1+(r1-l1)/2;mid2=l2+(r2-l2)/2;int offset=((r1-l1+1)&1)^1; //若数量为偶数则offset为1,否则为0;假如arr1[mid1]<arr2[mid2],那么我们要找的目标数是⼀定存在于arr1[mid1+offset]

2021-04-05 23:46:44 157

原创 数据结构之链表和跳跃表

文章目录1.链表2.跳跃表2.1 跳跃表的图示2.2 跳跃表插入与删除2.3 跳跃表总结2.4 跳跃表VS二叉排序树2.5 跳跃表VS红黑树1.链表2.跳跃表2.1 跳跃表的图示图示:基于这种方法,对于具有n个元素的链表,我们可以采取logn + 1层指针路径的形式,就可以实现在O(logn)的时间复杂度内,查找到某个目标元素,这种数据结构,我们也称之为跳跃表。跳跃表算是链表的变形,只是它具有二分查找的功能。2.2 跳跃表插入与删除随着对跳跃表进行插入/删除结点的操作,那么跳跃表结

2021-04-05 16:24:49 453

原创 数据结构之位运算

1.基本位运算符或:如果两个值有一个为1,或结果为1,否则为0;与:如果两个值都为1,与结果为1,否则为0;异或:如果两个值不同,异或结果为1,否则为0;2.位运算符的相关面试题3.位运算符的应用题目:异或的使用 解析:如果把数组所有的数字都依次异或之后,则可以消掉成对出现的次数,还有2个是单一的,异或值不为0,表现在二进制中肯定有一位是1,那么这两个数字在该位肯定有一个为1,一个为0。...

2021-04-05 12:42:27 241

原创 数据结构之滑动窗口

滑动窗口思想可以说是来自双指针的左右指针,滑动窗口通常用来求连续序列的相关问题,比如说求最长的连续不重复的子序列,生成一定数组长度中的元素最大值等等相关问题。1.最长的连续不重复子串:题目来源:找到字符串的最长无重复子串的长度求最长子串的长度,符合滑动窗口中要求的连续子序列的要求,因此我们可以使用滑动窗口来解决,数据我们可以用哈希表来表示map<int,int> mapp;#include<bits/stdc++.h>using namespace std;int mai

2021-04-05 09:59:12 450

原创 场景设计与海量数据处理

文章目录1.读取大文件1.1 java读取大文件的困难1.2 分次读取大文件1.2.1 文件字节流1.2.2 文件通道1.2.3 内存文件映射1.读取大文件1.1 java读取大文件的困难java读取文件的一般操作是将文件数据全部读取到内存中,然后再对数据进行操作。这对于小文件是没有问题的,但是对于稍大一些的文件就会抛出异常。1.2 分次读取大文件1.2.1 文件字节流对文件建立java.io.BufferedInputStream ,每次调用read方法时会接连取出文件中长度为arr

2021-04-04 09:25:04 438

原创 C++网络编程之I/O多路复用、IO模型

文章目录1.select模型1.1 select模型服务程序的流程10.相关面试题1.网络编程select、poll和epoll1.epoll的边缘触发和水平触发了解吗?分别说一下特点和区别。3.epoll两种触发方式 适用场景1.select模型1.1 select模型服务程序的流程10.相关面试题1.网络编程select、poll和epoll1.epoll的边缘触发和水平触发了解吗?分别说一下特点和区别。3.epoll两种触发方式 适用场景...

2021-04-02 22:14:49 1417

原创 数据库MySQL之事务、锁和存储引擎

文章目录1.事务1.1 事务的定义和作用1.2 事务的特性1.3 Mysql怎么保证原子性1.4 Mysql怎么保证一致性1.5 Mysql怎么保证隔离性1.6 Mysql怎么保证持久性1.7 事务的隔离级别1.8 脏读、不可重复读和幻读2.锁机制2.1 行锁之行锁、间隙锁和Next-Key锁2.2 表锁之意向锁和自增锁9.3 锁的具体实现之排它锁和共享锁9.4 乐观锁和悲观锁10.常见的存储引擎10.1 INNODB存储引擎10.2 MyISAM存储引擎10.3 MEMORY存储引擎10.4 INNOD

2021-03-29 10:12:14 534 1

原创 操作系统内存管理之分页分段管理

文章目录1.分页存储管理定义2.分页存储管理地址的转换3.页表4.基本地址变换机构5.具有快表的地址变换机构6.单级页表访问时间7.单级页表存在的问题8.两级页表8.1 两级页表原理图8.2 两级页表逻辑地址转换成物理地址8.3 两级页表访问次数分析(假设没有快表)9.反置页表9.1 反置页表引入目的9.2 反置页表实现9.3 反置页表地址转换9.4反置页表基于关联内存实现9.5反置页表基于哈希算法实现10.分段的引入目的11.分段存储管理结构12.分段存储管理地址变换机构13.分页和分段13.1 分页和分

2021-03-29 09:24:18 1889

原创 操作系统之线程管理

文章目录1.线程的基本特性1.1 线程引入的目的1.2 线程的属性1.3 线程的优缺点1.3.1 线程的优点1.3.2 线程的缺点2.线程的分类2.1 用户级线程(ULT)2.1.1 用户级线程定义2.1.2 用户级线程优点2.1.3 用户级线程缺点2.2 内核级线程(KST)2.2.1 内核级线程定义2.2.2 内核级线程优点2.2.3 内核级线程缺点2.3 轻量级线程(组合ULT、KST方式)2.3.1 多对一模型2.3.2 一对一模型2.3..3 多对多模型3.线程的上下文切换4.进程和线程的区别和联

2021-03-29 02:37:14 1847

原创 数据库Redis

文章目录1.10.相关面试题1.缓存的优势和缺点2.总数据库和站点数据库怎么保证一定能同步?3.数据库有没有备份机制?存多久?爆表怎么办?4.什么场景下使用的redis?redis除了作为缓存,还可以用来做什么?为什么redis快?sql与nosql优缺点?redis为什么是单线程?比多线程好在哪?1.10.相关面试题1.缓存的优势和缺点2.总数据库和站点数据库怎么保证一定能同步?3.数据库有没有备份机制?存多久?爆表怎么办?4.什么场景下使用的redis?redis除了作为缓存,还可以用来做什

2021-03-27 01:56:13 401

原创 数据库MySQL之总体框架、Buffer Pool

文章目录1.10.相关面试题1.mysql语法2.数据库表怎么存储的,怎么在多张表中查询数据。(多次查询或者连表查询)3.说一下几个范式。1.10.相关面试题1.mysql语法寻找某列属性中每种类型的最大值查询每个班级的平均分查询班级平均分排名前三的班。2.数据库表怎么存储的,怎么在多张表中查询数据。(多次查询或者连表查询)3.说一下几个范式。...

2021-03-27 01:54:42 452

原创 操作系统之经典进程同步问题

文章目录1.生产者和消费者问题1.1 生产者和消费者背景1.生产者和消费者问题1.1 生产者和消费者背景图示:只有缓冲区没满时,生产者才能把产品放在缓冲区,否则等待。只有

2021-03-20 21:03:39 402

原创 操作系统内存管理之动态分配

文章目录1.存储器的层次结构1.存储器的层次结构寄存器:与cpu具有相同的速度,访问速度最快。高速缓存:主要用于备份主存中常用的数据,以减少

2021-03-19 20:23:12 2084

原创 数据结构之哈希表

文章目录1.哈希表定义1.哈希表定义哈希表是根据键值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。...

2021-03-18 16:26:00 263

原创 数据结构之平衡二叉树树

文章目录1.AVL1.1 AVL树的定义1.AVL1.1 AVL树的定义

2021-03-17 00:18:26 220

原创 计算机网络之写在前面和网络层

文章目录1.分组交换和优缺点1.分组交换和优缺点定义:分组交换采用存储转发技术,把一个报文划分为几个分组后再进行传送。分组的首部非常重要,包含了目的地址和源地址等重要控制信息,这样每一个分组才能在互联网中独立地选择传输路径,并被正确地交付到分组传输的终点,最后再组合起来。优点:高效:在分组传输时动态分配带宽,对通信链路逐段占用。灵活:为每一个分组独立地选择最合适的转发路由。迅速:以分组为单位,可以不先建立连接就能向主机发送数据。可靠:分布式多路由的分组交换网,使传输鲁棒性强。缺点:分组在

2021-03-13 12:44:27 351

原创 C++之auto、decltype、typeid、initializer_list、explicit关键字

文章目录1.auto关键字2.decltype关键字1.auto关键字定义:在C++11新标准中引进了auto类型说明符,使用它能够让编译器代替我们去分析表达式所属的类型。规则1:auto一般会忽略顶层const,保留底层const,引用同样适用此规则。例如:int i=2;const int ci=i,&cr=ci;auto b=ci;//b是个整数(ci的顶层const被忽略)auto c=cr;//c是个整数(cr是ci的别名,ci本身是一个顶层const)auto d=&

2021-03-08 19:42:40 458

原创 C++之网络编程Socket

文章目录1.网络编程懂吗 select poll epoll啥的讲讲1.网络编程懂吗 select poll epoll啥的讲讲

2021-03-06 08:49:15 134

原创 操作系统之处理机调度和死锁

文章目录1.怎么解决死锁1.怎么解决死锁

2021-03-06 08:33:23 881

原创 数据结构之树的比较

文章目录1.2.红黑树查找和哈希查找的效率区别,哈希抽个图1.2.红黑树查找和哈希查找的效率区别,哈希抽个图3.场景:给1亿个字符串,要查找,怎么实现,用红黑树还是哈希

2021-03-06 00:44:01 247

原创 数据结构之B树和B+树

文章目录1.B+树和B树比较1.B+树和B树比较

2021-03-05 11:13:49 66

原创 C++11之新增特性

文章目录1.给了一个函数将其写成lambda表达式,捕获列表中&和=有什么区别,默认是什么捕获1.给了一个函数将其写成lambda表达式,捕获列表中&和=有什么区别,默认是什么捕获

2021-03-04 18:28:43 270 1

原创 操作系统内存管理之虚拟内存

文章目录1.虚拟内存的概念和好处2.刚刚说的共享和保护怎么实现的3.分段和分页的区别,为什么要分段1.虚拟内存的概念和好处(提高系统并发性、方便编程、方便共享和保护等等)2.刚刚说的共享和保护怎么实现的(分段、锁机制)3.分段和分页的区别,为什么要分段(一维地址空间和二维地址空间、对用户透明与不透明等等)...

2021-03-04 17:54:23 1543 1

原创 操作系统之写在前面

文章目录1.系统调用与函数调用的区别1.系统调用与函数调用的区别

2021-03-04 16:29:50 235 1

原创 C++之写在前面

文章目录1.c代码编译到执行的全过程1.c代码编译到执行的全过程第一次,经过预处理,源程序变为.cpp的源程序。第二次,进过编译处理,.cpp的源程序变为.s的汇编程序。第三次,经过汇编处理,.s的汇编程序变为.o的二进制程序。第四次,经过链接处理,.o的二进制程序变为.exe的可执行文件。...

2021-03-04 16:08:42 832 1

原创 数据库MySQL之索引

文章目录1.mysql事务的隔离级别有哪些1.mysql事务的隔离级别有哪些读未提交(Read uncommitted),就是一个事务可以读取另一个未提交事务的数据。读提交(Read committed),就是一个事务要等另一个事务提交后才能读取数据。重复读(Repeatable read),就是在开始读取数据时,不再允许修改操作。序列化(Serializable), 是最高的事务隔离级别。在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库

2021-03-04 10:20:03 1133 2

原创 操作系统之进程管理

文章目录1.进程和线程的区别1.进程和线程的区别

2021-03-03 22:46:39 2057 1

原创 计算机网络应用层之DNS/HTTP/HTTPS

文章目录1. DNS的解析过程1. DNS的解析过程首先浏览器会检查自己的缓存中是否存在这个域名对应的IP地址。如果有,解析结束,同时浏览器会更新域名被缓存的时间。如果浏览器没有命中域名,浏览器将会检查操作系统中对应的缓存有没有对应的这个域名。如果有,那么浏览器会首先使用这个域名对应的IP地址。此时,如果仍没有命中域名,这时会请求真正的本地域名解析器(DNS)来解析这个域名,这时的服务器一般有都会缓存到域名解析结果。如果DNS仍没有命中域名,就会直接跳到root域名服务器请求解析。root域

2021-03-03 16:13:55 470 1

原创 计算机网络运输层之TCP/UDP

推荐视频:详解三次握手和四次挥手机制1.三次握手三次握手:所谓三次握手就是TCP建立可靠的连接的过程。首先:首先客户端向服务器端发送一段TCP报文,其中:标记位SYN=1,表示“请求建立新连接”;序号为seq=x(x一般为随机的)。接着:服务器端接收到来自客户端的TCP报文之后,并返回一段TCP报文,其中:标志位SYN=1和ACK=1,表示“确认客户端的报文seq序号有效,服务器能正常接收客户端发送的数据,并同意创建新连接”(即告诉客户端,服务器收到了你的数据);序号seq=y(y一般为随机的);

2021-02-28 19:24:48 345

原创 LeetCode之整数拆分

题目链接:整数拆分分析:这道题要求是拆分为至少两个正整数的和,由此可以知道我们该整数的结果可以从这两个整数推导而来,其中这两个整数又分别可以从其他一个或者两个整数得到,以此类推,因此我们可以知道这道题目具有最小的重叠问题,符合动态规划的思想。确定dp数组以及下标的含义:dp[i]=分拆数字i,可以得到的最大乘积为dp[i]。确定递推公式:要想得到dp[i],我们可以直接拆分成两个整数,也就是j * (i - j) 直接相乘,同时我们也可以继续将i-j拆分成更多整数,也就是j*dp[i-j]。我们也可

2021-01-14 14:33:32 504

原创 LeetCode之不同的二叉搜素树

题目链接:不同的二叉搜索树声明:本文图片均来自微信公众号代码随想录分析:当n为1或者2的时候,我们是比较容易得到二叉树的种类:当n为3的时候,可以得到下列的二叉树的种类:我们细心可以发现,当3为头结点的时候,其左子树有两个节点,看这两个节点的布局,可以和n为2的时候两棵树的布局也是一样的啊;同理当2为头结点的时候,其左右子树都只有一个节点,布局和n为1的时候只有一棵树的布局也是一样的啊。由此我们可以发现了改题目存在重叠子问题,也就是发现可以通过dp[1] 和 dp[2] 来推导出来dp[3]的某种

2021-01-14 14:12:00 293

原创 C++之多态及原理

文章目录1.多态性概述2.运算符重载3.虚函数4.纯虚函数与抽象类1.多态性概述多态分类:专用多态(重载多态和强制多态)和通用多态(包含多态和参数多态)重载多态:普通函数以及类的成员函数的重载都属于重载多态。强制多态:指将一个变元的类型加以变化,以符合一个函数或者操作的要求。包含多态:类族中定义不同类中的同名成员函数的多态行为,主要是通过虚函数来实现。参数多态:与类模板相关联,在使用的时候必须赋予实际的类型才可以实例化。多态从实现的角度分类:编译时的多态和运行时的多态编译时的多态:编译过程

2020-12-12 20:35:10 772

原创 C++之继承与派生

文章目录1.类的继承与派生1.1 类的继承1.2 类的派生2.访问控制2.1公有继承2.22.31.类的继承与派生1.1 类的继承多继承和单继承:一个派生类可以同时有多个基类称为多继承: class Derived:public Base1,private Base2{};一个派生类只有一个直接基类称为单继承: class Derived:public Base1{}直接基类和间接基类:直接参与派生出某类的基类称为直接基类,基类的基类甚至更高的基类称为间接基类在类的定义中,除了要指定基类外,还

2020-12-11 23:47:35 850

原创 C++之动态内存以及智能指针

文章目录1.动态内存2.shared_ptr类1.动态内存new,在动态内存中为对象分配空间并返回一个指向该对象的指针,我们可以选择对对象进行初始化;delete,接受一个动态对象的指针,销毁该对象,并释放与之关联的内存动态内存容易出现的问题:如果忘记释放内存,就会产生内存泄漏;如果在尚有指针引用内存的情况下释放了该内存,就会产生引用非法内存的指针2.shared_ptr类shared_ptr实现共享式拥有概念。多个智能指针可以指向相同对象,该对象和其相关资源会在“最后一个引用被销毁”时候释

2020-12-09 22:56:55 953

原创 C++之友元

2020-12-09 20:30:55 89

原创 C++之函数与变量

1、new分配内存按照数据类型进行分配,malloc分配内存按照指定的大小分配;2、new返回的是指定对象的指针,而malloc返回的是void*,因此malloc的返回值一般都需要进行类型转化。3、new不仅分配一段内存,而且会调用构造函数,malloc不会。4、new分配的内存要用delete销毁,malloc要用free来销毁;delete销毁的时候会调用对象的析构函数,而free则不会。5、new是一个操作符可以重载,malloc是一个库函数。6、malloc分配的内存不够的时候,可以用r

2020-12-05 10:11:19 1434

空空如也

空空如也

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

TA关注的人

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