- 博客(70)
- 收藏
- 关注
原创 mvcc1
什么是mvcc?mvcc又称多版本并发控制,主要为了提高数据库的并发性能。目的:主要处理的是读请求,在读写的时候,不用去竞争锁,提高读的性能。读请求:**快照读(主要读请求是快照读)**与当前读(非当前读 如update)四大特性:原子性:undo log持久性 redo log 已经提交的但未被持久化到磁盘上的一致性隔离性mvcc组成:undo log 版本链 readview版本链中含有trx_id(事务id) 与 roll_pointer(回滚指针)rea
2021-10-07 16:47:18 417 2
原创 innodb锁机制
innodb中的锁机制原理解析1.共享锁S锁,读锁,多个事务共享一把锁,都能访问到数据,只读,不可修改。A在读,B可读,但是不可写。select * from count where id = 1 lock on share mode;2.排他锁X锁,写锁,不能与其他锁并存。只有当获取排他锁的事务处理完后,其他操作方可进行。updata 自动加排他锁 -语句后加for updateinnodb行锁?锁的是什么?行锁就是给索引项加锁 ,否则就是表锁。3.意向共享锁IS: 表示事务准备给
2021-09-17 00:18:17 320
原创 hash--
哈希哈希概念实现机制哈希冲突解决哈希冲突方法闭散列与开散列闭散列开散列开散列的增容问题对比开散列与闭散列比较测试代码哈希概念哈希是C++11的产物,是为了提高查找效率所提出的一种关联式容器。底层结构:链表+(指针)数组哈希是一种高效用来搜索的数据结构,与传统的查找方式进行比较,发现传统的方式都需要进行元素的比较,性能高低取决于元素的比较次数。让元素在查找时不进行比较,或者减少比较次数。顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。
2021-09-01 04:39:23 386
原创 智能指针11
智能指针智能指针存在的必要性智能指针的使用及原理C++98中的智能指针C++11中的智能指针C++11中unique_ptr指针C'++11中的shared_ptrshared_ptr循环引用所引发的问题。如何解决shared_ptr所造成的循环调用所引起的内存泄露的问题智能指针存在的必要性malloc出来的空间,没有进行释放,存在内存泄漏的问题。异常安全问题。如果在malloc和free之间如果存在抛异常,那么还是有内存 泄漏。这种问题就叫异常安全智能指针的使用及原理RAII
2021-08-29 23:48:24 274
原创 map与set
map-setmap、set简介常见接口使用map构造map的insert操作map中的元素访问的操作map中的删除操作map中的find操作setset构造map、set简介常见接口使用map构造void testmap1(){ map<string, string> m1; map<string, string>m2{ {"apple","苹果"},{"orange","橘子"} }; cout << m1.size() << e
2021-08-29 01:04:57 190
原创 输入URL后发生了什么?
在浏览器中输入URL并回车后都发生了什么?一、解析URLURL(Universal Resource Locator):统一资源定位符。俗称网页地址或者网址。URL用来表示某个资源的地址。(通过俗称就能看出来)URL主要由以下几个部分组成:• a.传输协议• b.服务器• c.域名• d.端口• e.虚拟目录• f.文件名• g.锚• h.参数现在来讨论URL解析,当在浏览器中输入URL后,浏览器首先对拿到的URL进行识别,抽取出域名字段。二、DNS解析DNS解析(域名解析),
2021-08-28 02:07:30 282
原创 基于Huffman编码的文件压缩项目
文件压缩文件压缩概念及目的设计思路了解Huffman树选取的数据结构构建Huffman选取的数据结构保存字符及对应的编码文件压缩的类及对应方法构建Huffman树以及对应编码规则获取每个字符对应的压缩码书写压缩文件解码效果图文件压缩概念及目的概念:文件压缩是指在不丢失有用信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率,或着按照一定的算法对文件中数据进行重新组织,减少数据的冗余和存储的空间的一种技术方法目的:紧缩数据存储容量,减少存储空间可以提高数据传输的速度,减少带宽占用量,
2021-08-15 14:28:05 377 3
原创 面经啊啊啊啊啊啊
面经C++对面向对象的理解。面向对象的三大特性讲一下多态指针与引用区别友元函数与友元类单继承、多继承、虚拟继承区别public、protected、private区别STL中迭代器失效什么是迭代器?STL六大组件static关键字const关键字extern"C"C++内存分布struct 和class区别vector与list区别智能指针操作系统进程、线程概念?区别?死锁静态链接与动态链接的区别进程间通信的方式,各自有什么特点?共享内存可以在不同的进程间通信吗?socket是怎么样进行进程间通信的?Lin
2021-08-13 16:41:51 490 2
原创 linux 网络编程 ---高级I/O
高级I/O什么是高级I/OI/O分类阻塞I/O与非阻塞I/O同步I/O与异步I/O什么是高级I/OI/O分类阻塞I/O与非阻塞I/O同步I/O与异步I/O
2021-08-10 00:51:38 299
原创 Linux网络编程----网络接口层(数据链路层+物理层)
目录以太网协议--局域网中工作局域网的争用问题解决局域网的争用问题--交换机以太网帧格式跨网络传输认识MAC地址对比理解IP与MAC地址ARP协议ARP协议格式ARP协议作用ARP请求与ARP应答ARP请求ARP 应答查看ARP 和MAC地址对应的映射关系DNS(域名解析)ICMP--工作在网络层的协议ping命令有端口号吗?以太网协议–局域网中工作局域网的争用问题碰撞域:因为以太网同一时刻只允许一个人进行网络通信,所以整个局域网可视为一个碰撞域。详细看这个解决局域网的争用问题–交换机工作原
2021-08-09 23:27:56 999 1
原创 Linux网络编程 -ip
目录ip报头如何做到报头与有效载荷的分离?TTL(8位生存时间)存在合理性?路由查找的本质集线器作用?IP分片问题与组装问题为什么要分片如何分片如何组装分片丢失怎么办网段划分---子网掩码--CIDR技术路由器功能特殊ip私网IP与公网IPNAT(Network Address Translator)技术路由ip报头->4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4.->4位头部长度(header length): IP头部的长度是多少个32bit,
2021-08-09 16:29:01 320
原创 Linux网络编程 传输层 TCP/UDP
目录如何标识一个通信端口号范围划分常见知名端口号进程与端口号常见网络命令查看当前主机的连接情况查看I/O情况查看cpu情况查看内存查看进程pid短连接与长连接问题UDPUDP特点UDP缓冲区常见UDP的应用层协议TCPTCP传输的可靠性序号和确认序号同时存在的原因?TCP中的接收缓冲区和发送缓冲区TCP首部的16位窗口大小流量控制6个标志位16位紧急指针超时重传机制三次握手四次挥手常用抓包命令滑动窗口流量控制拥塞控制/拥塞窗口延迟应答机制捎带应答小结相关面试如何理解TCP面向字节流二、如何解决粘包问题三、T
2021-08-09 00:39:33 445
原创 面试---算法面试
算法二叉树二叉树的遍历(前序、中序、后序、层序)递归版本非递归版本二叉树的常见oj二叉树的右视图N叉树的层序遍历反转二叉树对称二叉树子树问题二叉树二叉树的遍历(前序、中序、后序、层序)递归版本前序//递归版本class Solution {public: void traver_binarytree(TreeNode*root,vector<int >&result) { if(root==nullptr) {
2021-08-07 18:00:00 222 1
原创 C++多态
一、多态的概念?通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态二、多态的条件?三、什么是重写?派生类中有一个跟基类完全相同的虚函数(即派生类虚函数与基类虚函数的返回值类型、函数名字、参数列表完全相同),称子类的虚函数重写了基类的虚函数条件:1.基类的成员函数必须是虚函数2.子类的成员函数可以不加virtual关键字,但一般建议加上3.基类和子类的虚函数原型必须一致,(返回值类型,函数名字,参数列表),有两个例外,返回值为类型指针或引用时可以,第二个
2021-08-06 16:15:21 204
原创 C++继承
继承继承概念基类和派生类对象赋值转换同名隐藏子类构造与析构基类中友元与static变量继承派生类的默认成员函数菱形继承面试总结继承概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。使用关键字class时默认的继承方式是private,使用struct时默认的继
2021-08-04 23:36:28 193
原创 C++模板进阶
模板进阶目标非类型模板参数模板的特化概念模板的编译函数模板的特化类模板化全特化偏特化--重点模板分离编译什么是分离编译模板分离所带来的优点普通.h文件实例化模板所造成问题解决方法首先介绍一下.hpp与.h区别解决方案--将头文件由.hpp替换掉.h模板优缺点目标非类型模板参数类模板的特化类模板特化的应用之类型萃取模板的分离编译非类型模板参数模板参数分类类型形参与非类型形参。类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。非类型形参,就是用一个常量作为
2021-08-02 00:07:52 173
原创 Linux 网络编程 --套接字编程
套接字编程认识端口号端口号与进程号的对应关系socket理解网络字节序UDP实现二级目录三级目录认识端口号端口号(port)是传输层协议的内容.端口号是一个2字节16位的整数;端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程来处理;IP地址 + 端口号能够标识网络上的某一台主机的某一个进程;端口号与进程号的对应关系1)一个进程可以绑定多个端口号2)一个端口号只可以被一个进程绑定注:若是进程先绑定一个端口号,而后在fork一个子进程,这样的话就能够是实现多个进程绑定
2021-08-01 09:16:14 266
原创 Linux网络编程--初篇--初识计算机网络
初识计算机网络计算机网络定义与功能计算机网络定义计算机网络功能计算机网络分层OSI参考模型TCP/IP 体系结构标准分层的意义计算机网络所要关注的几大问题理解数据的传输局域网技术--局域网内传输局域网概念局域网特点局域网分层局域网中的一些问题介质访问控制CSMA/CD(基于冲突检测的载波监听多路访问技术)争用期与最短帧长概念二进制指数退避算法(随机延迟后重发)跨网络传输扩展知识公网ip与局域网ip(内网)计算机网络定义与功能计算机网络定义计算机网络就是将分散在不同地理位置上的具有自主处理能力的多台计算
2021-07-24 17:33:40 410 12
原创 Linux系统编程 多线程
多线程初识线程线程的概念线程的优缺点优点缺点了解pid(轻量级线程号)与tgid(线程组id)进程与线程概念解释同一所属组下多线程之间共享与独立的空间进程与线程的对比多进程与多线程对比线程控制线程的创建线程终止线程等待线程分离线程安全锁的本质加锁的时机加锁的接口加锁所带来的弊端死锁死锁的概念线程产生的必要条件避免死锁线程同步接口说明基于同步实现生产者与消费者模型POSIX信号量接口说明基于环形队列实现线程池初识线程线程的概念在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“
2021-07-23 14:26:42 324 3
原创 容器适配器---queue、stack、priority_queue
什么是配接器配接器(adapters)在STL组件的灵活组合运用功能上,扮演者轴承、转换器的角色。Adapter这个概念,事实上是一种设计模式。在设计模式中对adapter样式的定义如下:将一个class接口转化为另一个class接口,使原本接口不兼容而不能合作的classes,可以一起运作。使用1.应用于容器 container adapters , 比如stack和queue,其实就是一个适配器,他们通过修饰deque的接口而成就出的另一个容器风貌。2.应用于迭代器iterator adapte
2021-07-18 04:10:55 437 7
原创 Linux系统编程--信号篇
信号初识信号生活上的信号技术层面上的信号信号的分类信号的常见处理方式了解信号的几大步骤信号的产生初识信号生活上的信号你在网上买了很多件商品,再等待不同商品快递的到来。但即便快递没有到来,你也知道快递来临时,你该怎么处理快递。也就是你能“识别快递”(操作系统可以根据你发出的信号你选择不同的动作)当快递员到了你楼下,你也收到快递到来的通知,但是你正在打游戏,需5min之后才能去取快递。那么在在这5min之内,你并没有下去去取快递,但是你是知道有快递到来了。也就是取快递的行为并不是一定要立即执行,可以理解
2021-07-17 15:55:06 1123 11
原创 剑指offer 04 二维数组的查找 05 替换空格
二维数组的查找class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { int size1=matrix.size();//行数 if(size1==0) { return false; } int
2021-07-15 14:58:08 108 6
原创 剑指offer 1.实现赋值运算符函数 2.数组中重复的数字
1.实现赋值运算符函数注意事项:1.必须将引用作为返回值。目的:实现连续赋值2.传入的参数为常量引用 目的:省去了一次构造、保护了原有数据3.确保释放自身原本占有的内存。目的:避免内存泄露4.判断传入的参数与自身是不是一个实例。如果是的话,就直接return *this。//1.首先将引用作为返回值 2.传入参数为常量引用CMyString&CMyString::operator=(const CMyString &str){ //4.判断传入的参数与自身是不
2021-07-15 13:27:46 110 1
原创 一文带你认识STL序列式容器--list
list什么是listlist的使用构造函数接口list相关迭代器使用容量相关的操作测试链表的修改操作链表的一些其他操作list中的赋值运算符list中的迭代器失效问题vector与list区别(重点)什么是listlist是序列式容器中的一种,底层是一个带头结点的双向循环链表。list的使用头文件#include常用接口介绍构造函数接口构造方式作用无参构造list<类型>name构建一个只含头结点的双向循环链表list<类型>name(s
2021-07-14 18:31:28 208 7
原创 STL--线性容器 -vector
vector什么是vector探究vector的一些常用函数构造函数赋值运算符的重载迭代器使用容量相关的函数及PJ版本下的扩容机制元素获取vector类对象修改探究vector种迭代器失效的问题模拟实现vector什么是vectorvector的介绍vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,
2021-07-11 22:58:46 188 5
原创 STL--线性容器 string
STL线性容器--stringstring介绍string类的大小构造函数赋值运算符的重载测试string下的迭代器测试容量与大小获取元素string类的修改测试string下的operation探究SGI版本下的深浅拷贝问题三级目录string介绍在C++下为按照类的方式动态管理字符串。底层:是一种顺序表的结构,元素是char类型的字符string提出的意义:1.string不用担心内存越界的问题。用字符数组的话你还要担心越界的问题,但用string类不用担心这个问题,原因是底层提供相应的扩容机
2021-07-11 12:02:12 144 2
原创 STL 第一篇 初识STL
STL什么是STLSTL组成--六大组件组件一:容器容器分类组件二:空间配置器(alloctor)组件三--算法组件4--迭代器什么是迭代器常见的迭代器组件五---仿函数 另名:函数对象什么是仿函数仿函数的示例组件六 ---- 配接器(适配器)什么是配接器使用什么是STLSTL,本质上为一个程序库。目的:为了复用性的提升为了建立数据结构和算法的一套标准,并且降低其间的耦合关系,以提升自身的独立性、弹性、交互性操作(相互合作性),STL得以诞生。STL价值:一方面。就低层次而言,STL带给我们一套
2021-07-09 21:39:38 1761 3
原创 Linux系统编程 --进程间通信 -共享内存
进程间通信--共享内存共享内存概念共享内存的本质。共享内存的描述与组织共享内存概念共享内存区是最快的IPC(进程间通信)形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。与管道区别:1.管道的本质是一个文件,其进程间通信依赖I/O进行操作。而共享内存本质是多个进程共享一份内存,通过读写端不同来达到进程通信的目的。2.管道在创建默认情况下读端为阻塞模式,而共享内存不会这样。共享内存的本质。共享内存的
2021-07-05 13:51:24 1162 25
原创 Linux系统编程--进程间通信 ---管道篇
进程间通信进程间通信进程间通信的定义进程间通信的目的进程间通信的发展。进程间通信的分类进程通信的方式及原理介绍管道匿名管道进程间通信进程间通信的定义进程间通信就是在不同进程之间传播或交换信息进程间通信的目的数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一
2021-07-04 23:00:29 338 24
原创 Linux系统编程---进程I/O
进程I/OC语言下的文件接口使用调用fwrite()函数--写入函数fread()读取文件Linux 下的文件操作打开文件write函数文件描述符。如何理解Linux下一切皆文件文件描述符的分配规则重定向普通重定向追加重定向重定向的本质缓冲区为什么要引入缓冲区?缓冲区归属常见的缓冲方式理解文件系统理解目录软硬链接软链接软链接文件的特性软链接的使用软链接的使用注意硬链接硬链接的使用理解ll命令C语言下的文件接口使用C语言文件描述示例:这里实验两个。调用fwrite()函数–写入函数 1#incl
2021-06-27 14:58:00 660 39
原创 随笔--类和对象初阶问题总结(面试)
类和对象初阶必会知识点面向对象与面向过程的区别面向对象的三大特性封装继承多态const关键字const修饰普通变量const修饰类成员和类成员函数区分初始化与赋值const修饰成员变量面向对象与面向过程的区别C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成,面向对象是把构成问题
2021-06-22 12:28:40 277 6
原创 Linux系统编程篇--进程控制篇
进程控制篇了解fork()函数什么是子进程fork()基本用途fork()失败原因了解写时拷贝概念两种方式进程退出进程退出情况查看进程退出码进程常见的退出方法回调函数exit()函数和_exit()函数区别刷新缓冲区进程等待进程等待的必要性进程等待,wait()函数waitpid()根据进程退出码判断进程退出情况?进程替换替换函数execlexeclpexelceexecveexecvexecvp六个替换函数的关系替换原理进程替换的常见使用场景了解fork()函数在linux中fork函数时非常重要的函
2021-06-21 00:17:24 1024 45
原创 Linux地址空间
Linux地址空间进程地址空间进程地址空间是内存地址吗?什么是地址空间地址空间提出的原因?地址空间是怎么工作的?接下来深刻理解一下什么是进程地址空间的三种映射页表映射段表映射段页式内存管理进程地址空间进程地址空间是内存地址吗?#include<iostream> #include<unistd.h>using namespace std;int g_val=100; int main() { cout<<"this is my proce
2021-06-20 14:02:56 715 51
原创 C++初阶模板
C++模板模板为什么要提出模板这个概念模板的分类函数模板函数模板概念函数模板格式函数实例化的原理函数模板的实例化隐式实例化--让编译器去推演出函数参数及返回值类型显式实例化模板参数的匹配原则函数模板的重载类模板根据类模板实现一下顺序表利用数组来初始化一个顺序表模板什么是模板?模板就类似于去浇筑东西的一个摸具,你需要什么东西,只要根据需要的不同去选择不同的浇筑材质即可。为什么要提出模板这个概念其实很好理解,就是为了"偷懒",就类似于工人去雕琢一个东西一样,没有模板的话雕琢起来是很慢的,但是有了模板,可
2021-06-18 22:43:10 235 4
原创 C/C++内存管理
C++内存管理C/C++内存分布C语言内存开辟(堆上)的三大函数面试题:malloc、calloc、realloc区别探究realloc底层实现。C++内存开辟与释放函数内存开辟函数new与new[]函数newnew[]内存释放函数c语言内存管理与C++内存管理的区别在使用的时候必须对应使用C/C++内存分布示例图:栈区(stack):由编译器自动分配与释放,存放为运行时函数分配的局部变量、函数参数、返回数据、返回地址等。其操作类似于数据结构中的栈。堆区(heap):一般由程序员自动分配,如果程序
2021-06-17 02:18:02 457 12
原创 C++类和对象中
类和对象认识类中的6个默认成员函数构造函数编译器会自动调用构造函数构造函数是可以进行重载的如果没有显式的给出构造函数,则编译器会自动生成一个函数作为默认构造函数无参构造函数与全缺省构造函数不能同时存在探究编译器默认给出的构造函数到底有没有用构造函数的调用顺序默认析构函数认识类中的6个默认成员函数构造函数目的:主要为对象 完成初始化的操作,不负责给对象开辟空间。构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员都有 一个合适的初始值,并且在对象的生命周期内
2021-06-16 15:57:29 225 5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人