- 博客(63)
- 资源 (1)
- 收藏
- 关注
原创 国标码流总结
在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL)。其中,前者负责有效表示视频数据的内容,而后者则负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输。因此我们平时的每帧数据就是一个NAL单元(SPS与PPS除外)。在实际的H264数据帧中,往往帧前面带有00 00 00 01分隔符,一般来说编码器编出的首帧数据为PPS与SPS,接着为I帧……
2022-08-21 20:41:13
1240
原创 MySQL日志
文章目录一:错误日志二:查询日志三:二进制日志四:慢查询日志五:redo log 和 undo log2.1、redo log2.2、undo logmysql> show variables like 'log_%'; # 全局变量 设置&状态 show variables & show status+----------------------------------------+-------------------+| Variable_name
2021-09-21 16:58:09
361
原创 MySQL优化
文章目录一:SQL和索引优化二:、应用优化2.1、连接池2.2、增加cache缓存层三:MySQL Server优化3.1、MySQL查询缓存3.2、索引和数据缓存2.3、MySQL线程缓存3.3、并发连接数量和超时时间一:SQL和索引优化二:、应用优化除了优化SQL和索引,很多时候,在实际生产环境中,由于数据库服务器本身的性能局限,就必须要对上层的应用来进行一些优化,使得上层应用访问数据库的压力能够减到最小。2.1、连接池应用上一般访问数据库,都是先和MySQL Server创建连接,然后发送
2021-09-21 11:47:32
208
原创 MySQL事务
文章目录一:MySQL事务概念二:ACID特新三:事务并发存在的问题四:事务的隔离级别五:MySQL事务的处理命令一:MySQL事务概念一个事务是由一条或者多条对数据库操作的SQL语句所组成的一个不可分割的单元,只有当事务中的所有操作都正常执行完了,整个事务才会被提交给数据库;如果有部分事务处理失败,那么事务就要回退到最初的状态,因此,事务要么全部执行成功,要么全部失败。所以记住事务的几个基本概念,如下:1、事务是一组SQL语句的执行,要么全部成功,要么全部失败,不能出现部分成功,部分失败的结果。保
2021-09-19 17:10:43
106
原创 MySQL索引
文章目录一:MySQL索引二:索引分类一:MySQL索引当表中的数据量到达几十万甚至上百万的时候,SQL查询所花费的时间会很长,导致业务超时出错,此时就需要用索引来加速SQL查询。由于索引也是需要存储成索引文件的,因此对索引的使用也会涉及磁盘I/O操作。如果索引创建过多,使用不当,会造成SQL查询时,进行大量无用的磁盘I/O操作,降低了SQL的查询效率,适得其反,因此掌握良好的索引创建原则非常重要!二:索引分类索引是创建在表上的,是对数据库表中一列或者多列的值进行排序的一种结果。索引的核心是提高查
2021-09-18 16:25:07
97
原创 MySQL存储引擎
文章目录一:MySQL存储引擎1.1、各存储引擎区别一:MySQL存储引擎1.1、MyISAM 不支持事务、也不支持外键,索引采用非聚集索引,其优势是访问的速度快,对事务完整性没有要求,以 SELECT、INSERT 为主的应用基本上都可以使用这个存储引擎来创建表。MyISAM的表在磁盘上存储成 3 个文件,其文件名都和表名相同,扩展名分别是:.frm(存储表定义).MYD(MYData,存储数据).MYI (MYIndex,存储索引)1.2、InnoDB 存储引擎提供了具有提交、回滚和崩溃恢复
2021-09-16 16:49:47
90
原创 MySQL数据库基础
文章目录一:MySQL数据类型二:MySQL 数据类型、运算符和常用函数三:Mysql完整性约束详解(字段唯一,非空,主键primary key,外键foreign key,自增长auto_increment)四:MySQL 数据库表与表的关系 及 MySQL 数据库的设计规范一:MySQL数据类型MySQL数据类型详解二:MySQL 数据类型、运算符和常用函数MySQL 数据类型、运算符和常用函数三:Mysql完整性约束详解(字段唯一,非空,主键primary key,外键foreign key
2021-09-14 19:15:16
112
原创 c++高级知识总结------01
文章目录一:对象应用优化二:添加带右值引用参数的拷贝构造和赋值函数三:通过自定义vector和string来理解move和forward一:对象应用优化1.1、c++编译器对于对象的构造的优化:用临时对象生成新对象的时候,临时对象就不产生了,直接构造新对象就可以了例:Test t1 = Test(20); //与Test t1(20)没有区别1.2、示例:Test t1 = Test(20);t1 = Test(30);//该语句会调用t1.operator=(const Test&
2021-06-24 19:57:07
152
2
原创 c++基础知识总结------06
文章目录1、vector向量容器c++ STL (standard template libaray)标准模板库一:标准容器1.顺序容器vectordequelist2.容器适配器stackqueuepriority_queue3.关联容器无序关联容器 链式哈希表 增删查O(1)unordered_setunordered_multisetunordered_mapunordered_multimap有序关联容器 红黑树 增删查O(log2n),2
2021-06-24 14:06:31
148
1
原创 vector、deque、list之间的区别
文章目录1、vector和deque之间的区别2、vector和list之间的区别1、vector和deque之间的区别1.1、底层数据结构不同:vector是动态数组,内存是连续的,2倍的方式进行扩容;deque是动态开辟的二维数组空间,第二维是固定长度的数组空间,扩容的时候(第一维的数组进行2倍扩容),deque底层内存是不连续的,但每一个第二维是连续的1.2、前中后插入元素的时间复杂度:中间和末尾插入数据都是O(1),但是在前面进行插入元素,deque是O(1),vector是O(n)。1.3
2021-06-23 15:09:28
498
原创 c++基础知识总结------05
文章目录1、继承的本质和原理1.继承的本质和原理2.派生类的构造过程3.重载、覆盖、隐藏4.静态绑定和动态绑定5.多态 vfptr和vftable6.抽象类的设计原理7.多重继承以及问题8.虚基类 vbptr和vbtable9.RTTI10.c++四种类型强转11.继承多态常见笔试面试题分享1、继承的本质和原理继承和虚函数...
2021-06-18 21:23:33
106
原创 c++基础知识总结------04
文章目录1、复数类CComplex2、string类型3、string字符串对象的迭代器iterator的实现4、容器的迭代器失效问题1、复数类CComplex理解运算符重载:#include<iostream>#include<ostream>using namespace std;class CComplex{public: CComplex(int r = 0, int i = 0) :mreal(r),mimage(i) { } //指导编译
2021-06-17 19:49:48
152
原创 c++基础知识总结------03
文章目录1、c++函数模板2、实现c++STL向量容器vector3、理解容器空间配置器的重要性1、c++函数模板模板的意义:对类型也可以进行参数化1.函数的模板:是不进行编译的,因为类型含不知道2.模板的实例化:函数调用点进行实例化3.模板函数:是要被编译器所编译的示例:#include<iostream>using namespace std;template<typename T>bool compare(T a, T b) //compare 是一
2021-06-15 22:15:28
142
2
原创 c++基础知识总结------02
文章目录1、类和对象、this指针1、类和对象、this指针1.1\将具有相同结构、操作,并遵守相同约束规则的对象聚合成一组,这组对象集合就称为类。它是把许多对象进行抽象。class 类名 {private: (可缺省)私有数据成员和函数成员protected:保护段public:公有数据成员和函数成员};1.2、访问属性1.21、public属性为public的成员,不仅该可以在该成员所属类的内部进行访问,而且可以在类外通过类的对象来访问。1.22、private属性为
2021-06-15 16:28:27
159
原创 c++基础知识总结------01
文章目录1、形参带默认值的函数2、inline内联函数和普通函数3、函数重载4、const的使用1、形参带默认值的函数例:int sum(int a,int b = 20){ return a+b;}int main(){ int a = 10; int ret = sum(a); return 0;}1.给默认值的时候,从右往左给,因为压栈的时候是从右向左。2.注意调用效率的问题,如果没给默认值,给的是变量,则需要到变量的内存中去取值,然后放到寄存
2021-06-11 16:11:34
142
原创 进程的虚拟地址空间
文章目录一:虚拟地址空间1.1、保留区不可访问1.2、.test 与 .rodata1.3、.data1.4、.bss1.5、.Heap1.6、内存映射段(共享库)1.7、栈空间1.8、命令行参数、环境变量1.9、内核空间二:代码示例一:虚拟地址空间进程地址空间需要隔离,防止恶意的程序修改其它程序的内存数据,因此计算机中引入虚拟地址空间。1.1、保留区不可访问128M大小,保留区即为受保护的地址,大小为0~4K,位于虚拟地址空间的最低部分,未赋予物理地址(不会与内存地址相对应,因此其不会放任何内
2021-06-05 14:48:20
593
原创 Linux之CMake的使用
文章目录CMake简介CMake的安装CMake的使用CMake常用的预定义变量CMake简介使用简单方便,可以跨平台,构建项目编译环境。尤其比直接写Makefile简单(在构建大型工程编译时,需要写大量的文件依赖关系),可以通过简单的CMake生成负责的Makefile文件。CMake的安装ubantu上直接执行sudo apt install cmake,安装完成,可以通过cmake -version查看其版本:dzg@dzg-virtual-machine:~/桌面/test$ cmake
2021-05-30 21:07:59
778
原创 c++算法《打家劫舍》与《机器人路径》与《0、1背包》
文章目录一:打家劫舍一:打家劫舍题目描述:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)偷窃到的最高金额 = 1 + 3 = 4
2021-04-29 19:09:48
216
原创 c++算法和数据结构之《LCS》
文章目录动态规划求解最长公共子序列的结构动态规划求解最长公共子序列的结构分析规律:设X=<x1,x2,x3,x4…,xm>,Y=<y1,y2,y3,y4…,yn>为两个序列,Z=<z1,z2,z3,z4…,zk>是他们的任意公共子序列经过分析,我们可以知道:1、如果xm = yn,则zk = xm = yn 且 Zk-1是Xm-1和Yn-1的一个LCS2、如果xm != yn 且 zk != xm,则Z是Xm-1和Y的一个LCS3、如果xm != yn 且
2021-04-24 10:52:05
423
原创 c++算法和数据结构之《归并排序》
文章目录归并排序1、思路(单步合并)2、递归归并算法3、非递归归并算法归并排序和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为时间复杂度始终都是O(n log n)。代价是需要额外的内存空间。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。归并排序是一种稳定的排序方法。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路
2021-04-22 21:54:33
176
原创 c++算法和数据结构之《BST树》
文章目录一: BST树定义与特征1、BST树的结构设计2、创建一个节点3、BST树的插入一: BST树定义与特征BST树,及二叉搜索树(Binary Serch Tree),又叫二叉搜索树或二叉排序树。它可以是一棵空树,也可以是具有以下特征的一棵二叉树。①BST树上不存在键值相等的节点②若他的左子树不空,则左子树上所有节点的值均小于它的根节点的值③若他的右子树不空,则右子树上所有节点的值均大于它的根节点的值④任何一个节点的左子树或者右子树都是一棵BST树⑤对BST树进行中序遍历,就可以得到一个
2021-04-12 11:40:59
461
原创 C++算法和数据结构之《二叉树》
文章目录一:树的定义二:二叉树的定义:1、**二叉树的结构设计**2、创建一个节点3、返回所找值的下标3、前序遍历二叉树4、中序遍历二叉树5、后序遍历二叉树一:树的定义树是由 n (n>= 0)个结点组成的有限集合。 如果 n = 0,称为空树;如果 n > 0,则① 有一个特定的称之为根(root)的结点,它只有直接后继,但没有直接前驱;②除根以外的其它结点划分为 m (m >= 0)个互不相交的有限集合 T0, T1, …, Tm-1,每个集合又是一棵树,并且称之为根的子树(
2021-04-05 16:00:57
294
原创 C++算法和数据结构之《二分查找、斐波那契、快排》
文章目录一:二分查找二:斐波那契一:二分查找二分查找要求所查找的顺序表必须是有序的。定义left为顺序表最左端元素位置,right为顺序表右端元素位置。定义mid = (left + right) / 2,即顺序表的中间位置,然后用所查找的值与mid所在位置处的值比较,由于列表有序,若所查找的值比mid小,则只需在表的前半部分查找,否则只需在表的后半部分查找(若第一次比较就发现两值相等则直接返回当前值所在的位置),以此类推,直至查找到所寻找的值或确定所查找的值不在该列表内为止(即查找失败)。代码:
2021-03-22 11:03:05
266
原创 linux堆区内存与文件操作总结
文章目录一:从进程的视角看堆区内存申请与释放的有关问题1、 堆区的物理空间分配:2、一个进程能够申请的堆区空间有什么限制:3、父进程fork之前申请的堆区空间,子进程是否释放?4、父子进程对于fork之前打开的文件描述符是否共享?二:文件操作一:从进程的视角看堆区内存申请与释放的有关问题1、 堆区的物理空间分配:malloc只是在虚拟地址内存上分配内存,并没有分配真实的物理地址空间,物理空间的分配是在使用的时候。2、一个进程能够申请的堆区空间有什么限制:如果交换分区没有开启,则malloc能够申请
2021-03-14 13:56:33
289
原创 linux之僵死进程
文章目录1、僵死进程概念2、僵死进程的处理1、僵死进程概念(1) 僵死进程概念:父进程未结束,子进程结束了,而且父进程没有处理子进程的结束(父进程没有获取子进程的退出码)(2)孤儿进程:父进程结束,子进程未结束,那么子进程就是一个孤儿进程,孤儿进程会被系统的init进程接管。2、僵死进程的处理在父进程中调用系统方法注:1、系统调用执行流程①将系统调用号保存到eax寄存器中②触发Ox80中断,系统内核执行中断处理程序③根据eax中的系统调用号调用对应的内核方法sys_xxxx④通过ea
2021-03-13 22:51:41
188
原创 linux之进程复制(fork)
文章目录1、printf 函数输出问题2、主函数参数介绍3、复制进程 fork3.1、fork之后父子进程数据上的关系1、printf 函数输出问题printf 函数并不会直接将数据输出到屏幕,而是先放到缓冲区中,只有一下三种情况满足,才会输出到屏幕。(1) 缓冲区满(2) 强制刷新缓冲区 fflush(3) 程序结束时注意如果加上 \n 后,换行符会刷新缓冲区,将 hello 输出,printf 数据缓冲区被洗。fflush(stdout) 和 \n 效果相同。这是为什么呢? 这是由【设
2021-03-13 16:01:19
373
原创 linux静态库与动态库的生成和使用
文章目录1.静态库的生成与使用2.共享库的生成与使用3、静态库和共享库的区别1.静态库的生成与使用一:首先创建两个.c文件,add.c,max.c,一个.h文件(foo.h),然后将.c文件编译成.o文件二:使用 ar 命令将第一步编译的所有”.o”文件生成静态库,其中:◼ c 是创建库◼ r 是将方法添加到库中◼ v 显示过程三:使用:◼ -L 指定库的存储路径◼ -l 指定库的名称(不需要前面的‘lib’和扩展名‘.a’)2.共享库的生成与使用前面操作跟上述一样,使用
2021-03-11 18:26:11
169
原创 c++之生产者与消费者
文章目录生产者与消费者生产者与消费者#include<semaphore>#include<iostream>#include<chrono>#include<thread>#include<deque>#include<mutex>using namespace std;class Queue{public: Queue() :qu() {} ~Queue() {} void put(int val)
2021-03-08 09:57:16
178
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人