03 2022 档案
摘要:一、vector 只实现标准的顺序表vector容器,不涉及算法和迭代器。 核心思想就是通过new操作得到的动态数组。 new的是容量大小的空间,_size是操作的数量。 类定义如下。 #include <iostream> using namespace std; #define DEFAULT_
阅读全文
摘要:一、左值和右值 右值分为纯右值和将亡值。 纯右值是表达式、返回的临时变量值。 将亡值是右值引用,右值引用指向右值,可以获取的地址就是临时变量的地址。 右值引用使得右值重生,右值变量的声明周期和右值引用变量的一样,只要右值引用变量存在,就能使得右值变量活着。 左值引用指向左值,右值引用指向右值。左值引
阅读全文
摘要:今天终于把四相机同步采集系统的所有bug都解决了,遇到了好多问题百度都是错误的答案,下面记录一下。 (1)自定义一张图片,输入VideoWriter里面可以生成一个视频。可是换一台电脑就会出现如下错误: cv::VideoWriter::open VIDEOIO(CV_IMAGES):raise O
阅读全文
摘要:输入URL返回页面的过程:首先,DNS解析域名得到IP,然后利用IP发起TCP三次握手(浏览器会随机生成一个端口去连接服务器的web80端口),然后客户端发起HTTP请求,然后服务器响应请求,返回响应数据。浏览器解析数据,渲染呈现。 HTTP常见字段。客户端发送请求的时候,用Host字段来指定服务器
阅读全文
摘要:都是下一层给上一层提供服务的。 应用层,负责给应用程序提供统一的接口; 表示层,负责把数据转换成兼容另一个系统能识别的格式; 会话层,负责建立、管理和终止表示层实体之间的通信会话; 传输层,负责端到端的数据传输; 网络层,负责数据的路由、转发、分片; 数据链路层,负责数据的封帧和差错检测,以及 MA
阅读全文
摘要:简介:Linux系统下的C++轻量级Web服务器,接收浏览器消息并响应请求。 (1)基于epoll(非阻塞、支持ET/LT)+线程池,实现Reactor和Proactor两种事件处理模式的并发模型。 (2)使用有限状态机解析HTTP请求报文,支持解析GET和POST请求。 (3)使用SIGALRM信
阅读全文
摘要:MySQL端口号3306,redis6379 为什么redis可以是单线程? 单线程的epoll可能会被卡在数据库查询、写日志这种耗时的操作上。 redis是工作在内存上,纯内存的不需要考虑有没有数据库、日志、磁盘操作、网络操作、外界请求啥的。 redis是内存数据库、KV数据库、数据结构数据库。它
阅读全文
摘要:野指针:没有被初始化过的指针。(养成在定义指针后且在使用之前完成初始化的习惯) 悬空指针:指针最初指向的内存已经被释放的指针。(浅拷贝) 内存泄漏:程序动态分配的堆内存由于某种原因无法释放,造成内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
阅读全文
摘要:智能指针是通过类的构造函数和析构函数来实现对一个指针的管理,避免程序员申请的空间忘记释放,造成内存泄漏情况的发生。主要有auto_ptr/unique_ptr/shared_ptr/weak_ptr; unique_ptr是独占式拥有或严格拥有的,保证同一时间只有一个智能指针可以指向该对象,对于避免
阅读全文
摘要:gcc的编译(ciso) hello.c给gcc-E预处理器生成hello.i;预处理:gcc -E test.c -o test.i 或 gcc -E test.c 经过gcc-S编译器生成hello.s汇编文件;编译:gcc -S test.i -o test.s (编译器只检查程序语法、函数、
阅读全文
摘要:(一)文件和目录操作 查看目录:安装tree,sudo apt-get install tree,必须联网在线安装。 tree命令,以树状结构罗列出所有的文件。 ls -a返回全部的文件,ls -l返回它的详细信息,ls -la返回所有文件和它的详细信息。 文件类型:普通文件[-]、目录[d]、链接
阅读全文
摘要:内存对齐,是编译器采用一些对齐规则,把程序的每个数据单元安排在适当的地址。 从平台硬件原因和效率原因两个方面来回答。 首先,不是所有的硬件平台都可以访问任意内存地址上的数据,某些平台只能在一些地址处获取特定类型的数据,否则会抛出硬件异常。为了使得一个程序可以在多个平台上运行,需要进行内存对齐。 第二
阅读全文
摘要:多用户共享资源,出现并发访问的时候,需要合理控制资源的访问规则。锁就是用来实现这些访问规则的重要数据结构。 根据加锁的范围,锁可以大致分成全局锁、表级锁、行锁。 (1)全局锁就是对整个数据库实例加锁。 业务的更新不只是增删改数据DML,还有可能是加字段等修改表结构的操作DDL。 全局读锁,使用Flu
阅读全文
摘要:如果SQL查询比较慢,就会要给字段加索引。索引就像书的目录,可以提高查询效率。 索引的优点:加快查找的速度,加快分组和排序字段的速度,加快表和表之间连接的速度。 缺点:耗费空间,而且增删改的时候还要动态维护索引耗费时间。 索引的作用:数据是存在磁盘的,如果没有索引,查找的时候要把所有数据都一个一个放
阅读全文
摘要:事务是访问并更新数据库各种数据项的一个程序执行单元,可以是一条语句,也可以是一组语句。 ACID(原子性、一致性、隔离性、持久性) 原子性:其中的操作要么都做,要么都不做。undolog(rollback)要么都执行要么都不执行。 一致性:满足某个状态,数据就是一致的。不满足某个状态,数据就是不一致
阅读全文
摘要:六大组件:容器(类模板)、算法(函数模板)、迭代器(类模板,设计模式)、配置器(类模板)、配接器(容器适配器、函数配接器)、仿函数(类或类模板)。整个项目采用大多的是泛型编程的思想(模板机制)。使得多种数据类型在同一个算法或结构上都可以操作,在编译器就确定聚类数据类型。 (一)配置器 一般new都是
阅读全文
摘要:bitset结构解海量数据的问题。 位图是内存中连续二进制bit,用于对海量数据的去重和查询。char是一个字节,8个位。如果要把整数10映射到位图,需要找到第二个char数据,然后再找到第二个char的第二个bit。1G=1024M 1M=1024KBbitset存储二进制位bitset就像一个b
阅读全文
摘要:先说自己发现的点。 在图的遍历中,是得到从一个点到另一个点的所有路径,所以visited数组是为了防止在这两个点构成的环里面绕圈圈。 在图的拓扑排序中,是判断从每一个点出发有没有环,所以使用onPath数组起到和上面visited数组一样的作用判断是不是有环。但是在拓扑排序里面,有可能从A点出发刚好
阅读全文
摘要:常见OSI七层:物数网传会表应 四层:应用层(负责向用户提供一组应用程序,如HTTP/DNS/TCP);传输层(负责端到端通信,如TCP/UDP);网络层(负责网络包的封装、分片、路由、转发,比如IP/ICMP);网络接口层(负责网络包在物理网络中的传输,比如网络包的封帧、MAC寻址、差错检测,通过
阅读全文
摘要:数据库设计三大范式: (1)确保数据库表字段的原子性,即字符不可再分性。 (2)一个表必须有主键,非主键列必须完全依赖于主键,不能部分依赖。 (3)非主键必须直接依赖于主键,不能间接依赖。 bin log二进制日志,redo log重做日志(持久性),undo log回滚日志(原子性)。二进制日志会
阅读全文
摘要:设备控制器里面芯片有三种寄存器,分别是状态寄存器、命令寄存器、数据寄存器。 CPU和硬盘控制器(IO硬件)之间可以通过DMA来提高效率。 DMA能够使得设备在CPU不参与的情况下,自行完成把设备IO数据放到内存里面。 CPU对DMA控制器进行编程;DMA请求磁盘控制器把数据放到内存;磁盘控制器把数据
阅读全文
摘要:第一种:单线程(懒汉) 第二种:多线程(互斥量实现锁+懒汉) 第三种:多线程(const static+饿汉)(还要继续了解) //单线程解法 //这种解法在多线程的情况下,可能创建多个实例。 class Singleton1 { private: static Singleton1* m_pIns
阅读全文