网站建设增城,网站建设洛阳,seo网络营销推广公司深圳,系列图标设计网站推荐文章目录 c面试准备语法c 11auto 和 decltype左值右值和移动语义 前和后 网络简述三次握手简述四次握手简述epeo select模型区别 内存程序在内存中如何分布 数据库索引失效的发生场景常用索引常用索引结构什么是ACID(数据库事务特性)mysql的锁分为哪些类别 c面试准备
语法
c … 文章目录 c面试准备语法c 11auto 和 decltype左值右值和移动语义 前和后 网络简述三次握手简述四次握手简述epeo select模型区别 内存程序在内存中如何分布 数据库索引失效的发生场景常用索引常用索引结构什么是ACID(数据库事务特性)mysql的锁分为哪些类别 c面试准备
语法
c 11
auto 和 decltype
auto为自动推导变量类型
auto a 10;decltype为推导表达式用于从已存在变量返回一个类型
auto b 2;
decltype(b) c 3;左值右值和移动语义
左值是可被取址有名字可被赋值的对象右值不可被取址或没名字。如运算表达式中间变量lambda表达式这些都是右值在有些情况比如函数返回了一个对象我们定义了一个对象用来接收这个将返回的对象。在这个过程中我们使用了一次拷贝构造和一次析构.这种情况开销会变大所以如果可以把将销毁的对象移动到新定义的变量这样就舒服多了,语法如下
class AA{public:AA():A1(5), A2(6) {}AA(AA rvalue) noexcept: A1(std::move(rvalue.A1)),A2(std::move(rvalue.A2)) {}private:int A1;int A2;};
AA AA1();
AA AA2(std::move(AA1))前和后
STL中只能使用前, 返回的是迭代对象引用否则返回一个无用且已销毁的对象针对基础类型前先加后返回后 先返回再加
网络
简述三次握手 #mermaid-svg-IOQD4lCSR0wRED0E {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-IOQD4lCSR0wRED0E .error-icon{fill:#552222;}#mermaid-svg-IOQD4lCSR0wRED0E .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-IOQD4lCSR0wRED0E .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-IOQD4lCSR0wRED0E .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-IOQD4lCSR0wRED0E .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-IOQD4lCSR0wRED0E .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-IOQD4lCSR0wRED0E .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-IOQD4lCSR0wRED0E .marker{fill:#333333;stroke:#333333;}#mermaid-svg-IOQD4lCSR0wRED0E .marker.cross{stroke:#333333;}#mermaid-svg-IOQD4lCSR0wRED0E svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-IOQD4lCSR0wRED0E .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-IOQD4lCSR0wRED0E text.actortspan{fill:black;stroke:none;}#mermaid-svg-IOQD4lCSR0wRED0E .actor-line{stroke:grey;}#mermaid-svg-IOQD4lCSR0wRED0E .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-IOQD4lCSR0wRED0E .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-IOQD4lCSR0wRED0E #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-IOQD4lCSR0wRED0E .sequenceNumber{fill:white;}#mermaid-svg-IOQD4lCSR0wRED0E #sequencenumber{fill:#333;}#mermaid-svg-IOQD4lCSR0wRED0E #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-IOQD4lCSR0wRED0E .messageText{fill:#333;stroke:#333;}#mermaid-svg-IOQD4lCSR0wRED0E .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-IOQD4lCSR0wRED0E .labelText,#mermaid-svg-IOQD4lCSR0wRED0E .labelTexttspan{fill:black;stroke:none;}#mermaid-svg-IOQD4lCSR0wRED0E .loopText,#mermaid-svg-IOQD4lCSR0wRED0E .loopTexttspan{fill:black;stroke:none;}#mermaid-svg-IOQD4lCSR0wRED0E .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-IOQD4lCSR0wRED0E .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-IOQD4lCSR0wRED0E .noteText,#mermaid-svg-IOQD4lCSR0wRED0E .noteTexttspan{fill:black;stroke:none;}#mermaid-svg-IOQD4lCSR0wRED0E .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-IOQD4lCSR0wRED0E .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-IOQD4lCSR0wRED0E .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-IOQD4lCSR0wRED0E .actorPopupMenu{position:absolute;}#mermaid-svg-IOQD4lCSR0wRED0E .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-IOQD4lCSR0wRED0E .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-IOQD4lCSR0wRED0E .actor-man circle,#mermaid-svg-IOQD4lCSR0wRED0E line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-IOQD4lCSR0wRED0E :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} client server SYN1,SEQJ 请求新建连接 客户端发送后进入SYN_SENT, 服务端收到后进入SYN_RVCD SYN1,ACK1,ackJ1,seqK 服务端应答并发送自身随机码 客户端收到后进入ESTABLISHED ACK1,ackK1 服务端发送ack应答 服务端进入ESTABLISHED状态 client server 简述四次握手 #mermaid-svg-6gFxqZ57ciJQxpj5 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6gFxqZ57ciJQxpj5 .error-icon{fill:#552222;}#mermaid-svg-6gFxqZ57ciJQxpj5 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-6gFxqZ57ciJQxpj5 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-6gFxqZ57ciJQxpj5 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-6gFxqZ57ciJQxpj5 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-6gFxqZ57ciJQxpj5 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-6gFxqZ57ciJQxpj5 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-6gFxqZ57ciJQxpj5 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-6gFxqZ57ciJQxpj5 .marker.cross{stroke:#333333;}#mermaid-svg-6gFxqZ57ciJQxpj5 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-6gFxqZ57ciJQxpj5 .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-6gFxqZ57ciJQxpj5 text.actortspan{fill:black;stroke:none;}#mermaid-svg-6gFxqZ57ciJQxpj5 .actor-line{stroke:grey;}#mermaid-svg-6gFxqZ57ciJQxpj5 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-6gFxqZ57ciJQxpj5 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-6gFxqZ57ciJQxpj5 #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-6gFxqZ57ciJQxpj5 .sequenceNumber{fill:white;}#mermaid-svg-6gFxqZ57ciJQxpj5 #sequencenumber{fill:#333;}#mermaid-svg-6gFxqZ57ciJQxpj5 #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-6gFxqZ57ciJQxpj5 .messageText{fill:#333;stroke:#333;}#mermaid-svg-6gFxqZ57ciJQxpj5 .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-6gFxqZ57ciJQxpj5 .labelText,#mermaid-svg-6gFxqZ57ciJQxpj5 .labelTexttspan{fill:black;stroke:none;}#mermaid-svg-6gFxqZ57ciJQxpj5 .loopText,#mermaid-svg-6gFxqZ57ciJQxpj5 .loopTexttspan{fill:black;stroke:none;}#mermaid-svg-6gFxqZ57ciJQxpj5 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-6gFxqZ57ciJQxpj5 .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-6gFxqZ57ciJQxpj5 .noteText,#mermaid-svg-6gFxqZ57ciJQxpj5 .noteTexttspan{fill:black;stroke:none;}#mermaid-svg-6gFxqZ57ciJQxpj5 .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-6gFxqZ57ciJQxpj5 .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-6gFxqZ57ciJQxpj5 .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-6gFxqZ57ciJQxpj5 .actorPopupMenu{position:absolute;}#mermaid-svg-6gFxqZ57ciJQxpj5 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-6gFxqZ57ciJQxpj5 .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-6gFxqZ57ciJQxpj5 .actor-man circle,#mermaid-svg-6gFxqZ57ciJQxpj5 line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-6gFxqZ57ciJQxpj5 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} client server FINM请求断开连接 客户端进入FIN_WAIT_1,服务端收到后进入CLOSE_WAIT ackM1 客户端进入FIN_WAIT_2 FINN 服务端进入LAST_ACK,客户端进入到TIMEWAIT ACK1, ackN1 等待2MSL事件后client进入到CLOSE状态 client server 简述epeo select模型区别
select 基于轮询, epeo基于io通知机制即文件描述符变化回调select 最大队列1024epeo则没有限制。但select优点是开发速度快,
poll和select类似都是轮询只是使用的fd结构体不同没有最大数量限制
内存
程序在内存中如何分布
程序一般运行在虚拟内存上通过映射程序可以看起来运行在一段连续的内存上,内存地址从低到高分别放着, 系统预留空间程序代码段data段(用来存放全局static,文本常量)bss段(存放未初始化的static)堆栈
数据库
索引失效的发生场景 使用explain SQL查看执行计划 select * from tableA where 带索引的字段条件 or 不带索引的字段条件select * from tableA where 带索引字段 like ‘%XXX’select * from tableA where 字符串字段 2222 ;这里必须用引号包起来select * from tableA where 带索引字段 - 5 6 不能在索引字段上进行计算联合索引只查索引后边的单个字段
常用索引
unique 唯一索引parimary key 主键索引index 普通索引fulltext 全文索引组合索引
常用索引结构
B tree 普通二叉树,应注意数据不能偏向太大否则一端太长会变成线性查找RBT (red-black-tree) 红黑树,接近平衡二叉树,但允许出现 max_deep - min_deep 1,所以相对调整次数更少同时兼顾索引调整速度太深了后边再学
什么是ACID(数据库事务特性)
原子性Atomicity原子性是指事务包含的所有操作要么全部成功要么全部失败回滚一致性Consistency,数据库事务必须从一个状态一起切换到另一个状态,比如交易成功,并扣款成功隔离性IsolationAB两个用户同时操作只能有一个生效后才让另一个开始编辑持久性Durability事务一旦提交对数据库的修改是要被长久保存下去的
mysql的锁分为哪些类别
按模式 悲观锁乐观锁 按范围 行锁页锁表锁全局锁 按属性 共享锁排他锁