自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 awk你学废了吗

/hahaha/‘ test.log // 匹配第一列不含hahaha的行。awk -F “,” ‘$1~/hahaha/‘ test.log // 匹配第一列含hahaha的行。对字符串s进行截取,从第i位开始,截取n个字符串,如果n没有指定则一直截取到字符串s的末尾位置。/hahaha/‘ test.log //匹配无hahaha的行。index(str1,str2):返回str2在str1中的第一次出现的位置。awk ‘/hahaha/‘ test.log //匹配有hahaha的行。

2023-03-17 10:43:06 688

原创 第八章 InnoDB存储引擎——备份与恢复

InnoDB存储引擎冷备的文件通常比逻辑文件大很多,因为表空间中存放着很多其他的数据,如undo段,插入缓冲等信息。日志备份:对mysql数据库二进制日志备份,通过对一个完全备份进行二进制日志重做完成数据库的恢复工作。从服务器(slave)把主服务器的二进制日志复制到自己的中继日志(relaylog)中。从服务器重做中继日志中的日志,把更改应用到自己的数据库上,以达到数据的最终一致性。复制对备份很有帮助,但是从服务器不是备份,不能完全代替备份。增量备份:在上次完全备份的基础上,对于更改的数据进行备份。

2023-03-16 09:00:58 207

原创 第七章 InnoDB存储引擎——事务

在对数据库进行修改时,InnoDB存储引擎不但会产生redo,还会产生一定量的undo,若事务语句失败,或请求回滚,则利用undo信息回滚到修改之前的样子。XA事务允许不同数据库之间的分布式事务(不一定非是MySQL数据库),只要参与在全局事务中的每个节点都支持XA事务。重做日志缓冲、重做日志文件都是一512字节的块的方式进行保存的,称之为重做日志块(redo log block)。由于重做日志块的大小和磁盘扇区大小一致,均为512字节,因此重做日志的写入可以保证原子性,不需要两次写技术。

2023-03-16 08:58:17 200

原创 第六章 InnoDB存储引擎——锁

这种锁其实是采用一种特殊的表锁机制,为了提高插入的性能,锁不是在一个事务完成后才释放,而是在完成对自增长值插入的SQL语句后立即释放。lock的对象是事务,用来锁定的是数据库中的对象,如表、页、行。解决死锁问题最简单的一种方法是超时:即当两个事务互相等待时,当一个等待时间超过设置的某一阈值时,其中一个事务进行回滚,另一个等待的事务就能继续进行。Phantom Problem是指:在同一事务下,连续执行两次同样的SQL语句可能导致不同的结果,第二次的SQL语句可能会返回之前不存在的行。

2023-03-15 12:10:50 122

原创 第五章 InnoDB存储引擎——索引与算法

每张表中可以有多个辅助索引,当通过辅助索引来寻找数据时,InnoDB存储引擎会便利辅助索引并通过叶级别的指针获得指向主键索引的主键,然后再通过主键索引来找到一个完整的行记录。聚集索引(clusteredindex)就是按照每张表的主键构造一棵B+树,同时叶子节点中存放的即为整张表的行记录数据,也将聚集索引的叶子节点称为数据页。因为插入总是顺序的,从中间分裂后,分裂后的页将不再有数据插入。数据页上存放的是完整的每行的记录,而在非数据页的索引页中,存放的仅仅是键值及指向数据页的偏移量,而不是一个完整的行记录。

2023-03-15 12:10:00 96

原创 第三章 InnoDB存储引擎——文件

独立表空间:用户通过设置innodb_file_per_table参数,可将每个机遇innoDB存储引擎的表产生一个独立表空间。命名规则:表名.ibd。log_throttle_queries_not_using_indexes:每分钟允许记录到slowlog的且未使用索引的SQL语句次数。log_queries_not_using_indexes:设置为On时,如果查询语句没有使用索引则也会被记录。Mysql中的每个表都会对应一个表结构文件用于记录该表的表结构定义,表结构文件以.frm为文件后缀名。

2023-03-15 12:07:54 215

原创 第四章 InnoDB存储引擎——表

此时就会存在行溢出。InnoDB存储引擎是面向列的,数据按行进行存放,每个页最多允许存放16KB/2-200行,即7992行记录。页是InnoDB存储引擎磁盘管理的最小单位,每个页的默认大小为16KB,支持配置(4、8、16KB)InnoDB存储引擎的数据都存放在数据页中,但当发生行溢出时,数据则存放在未压缩的二进制大对象页。在InnoDB存储引擎中,采用根据主键顺序组织存放的这种存放方式的表,称为索引组织表。表空间时innoDB存储引擎逻辑存储结构的最高层,所有数据都存放在表空间中。

2023-03-15 12:07:09 73

原创 第二章 InnoDB存储引擎——架构

2)Flush_LRU_List Checkpoint:在Page Cleaner线程中,检查LRU list是否有指定个数的可用空闲页,若没有则将LRU列表尾端的页移除,如果这些页是脏页,则进行Checkpoint。3)有空闲页则分为2个4kb空闲页,放入4kb的unzip_LRU列表管理,若无空闲页,则申请1个16KB的空闲页,分为1个8KB,2个4KB的页,分别存储的对应的unzip_LRU列表当中。16k的页使用LRU list管理,非16k的页使用unzip_LRU list管理。

2023-03-15 12:07:04 77

原创 第一章 MySQL体系结构和存储引擎

数据库实例是程序,是位于用户与操作系统之间的一层数据管理软件,用户对数据库数据的任何操作,包括数据库定义、数据查询、数据维护、数据库运行控制等都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道。包含复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。InnoDB:支持事务、行锁定、支持外键、支持非锁定读,通过MVCC实现高并发、实现了标准的4种隔离级别、聚集索引。Maria:可以看作是MyISAM的后续版本,支持缓存数据和索引、行级别锁、支持MVCC、支持事务和非事务安全选项。

2023-03-15 12:02:44 37

原创 Redis源码解析——持久化机制

对Redis持久化机制的分析

2023-01-16 15:03:48 93

原创 Redis主从复制总结

对Redis主从同步流程进行相关梳理总结

2023-01-10 14:16:48 117

原创 Redis设计与实现——数据结构

总结Redis实现所使用的相关数据结构

2023-01-04 09:10:50 290

原创 TCP相关总结

TCP协议

2022-12-29 22:57:58 1187

原创 【现代C++语言核心特性】第六章 右值引用

右值引用

2022-11-07 13:29:40 421

原创 【现代C++语言核心特性】第五章 函数返回类型后置

返回类型后置

2022-11-07 13:25:05 183

原创 【现代C++语言核心特性】第四章 decltype说明符

decltype说明符

2022-11-07 13:20:23 507

原创 【现代C++语言核心特性】第三章 auto占位符(C++11 ~ C++17)

auto占位符

2022-11-07 13:14:00 311

原创 kafka流水账

kafka瞎记

2022-07-12 19:01:15 379

原创 golang基于代码注释生成swagger API文档并自动同步到yAPI

该功能参考github开源项目gin-swagger,github地址如下:https://github.com/swaggo/gin-swagger生成swagger文档编写代码注释代码注释的字段参考:https://swaggo.github.io/swaggo.io/declarative_comments_format/代码注释分为两种:General API Info API OperationGeneral API info 的注释需要放在main函数的前面编写,主要是对

2021-08-03 16:40:17 1976

原创 Golang学习笔记——context包

说明Context上下文用于控制函数调用链,所有进入服务的请求需要创建Context,调用其他服务需要接受一个Context,Context需要在函数调用链中进行传播。使用WithCancel,WithDeadline,WithTimeout,WithVaule,可以从一个Context上派生出子Context,并得到CancelFunc。调用CancelFunc可以关闭子Context及其派生出来的Context。使用Context的程序需要遵循如下原则:1.不要将Context存储在结构当中,

2021-07-15 20:37:45 420

原创 Golang学习笔记-error包

常见用法 errors包 包含了常见的error构造及解析判断方法 func As(err error, target interface{}) bool 查找与目标匹配的 err 链中的第一个错误,如果是,则将目标设置为该错误值并返回 true。否则,它返回 false。 func Is(err, target error) bool 报告err中是否包含target error。 如果err与target相等或者err实现了Is(bool)方法使得当调用er..

2021-07-15 20:33:13 275

原创 Golang学习笔记-sync包

sync包使用 Cond:实现了条件变量,用于等待gorouting或者声明事件的发生。Cond在第一次使用后不可以被拷贝 Locker:一个接口,包含Lock()和Unlock()两个方法,用于代表一个能被加锁和解锁的对象。 Map:一个协程安全的map,map[interface{}]interface{},key和value均可以是任意类型。 Mutex:互斥锁 Once:当某个action仅希望被执行1次时使用sync.Once Pool:临时对象池 RWMutex:读写互斥锁..

2021-07-15 20:32:09 182

原创 C++ 11 智能指针

智能指针在头文件<memory>中定义。共包含4种:auto_ptr、unique_ptr、share_ptr以及weak_ptr。auto_ptr在C++98中定义,在C++11中引入unique_ptr后推荐使用unique_ptr替代auto_ptr。一、unique_ptr指针指向的内存空间不与其他指针共享。但可通过移动语义将所有权转移给其他的unique_ptr。无法将一个unique_ptr赋值给另一个unique_ptrunique_ptr<Un..

2021-07-14 15:11:32 95

原创 ubuntu 18.04 安装protobuf及protoc-gen-go

1.安装依赖apt-get install -y gcc g++ make pkg-config libtool autoconf automake2.下载protobuf源码// 下载最新源码git clone https://github.com/protocolbuffers/protobuf.git//如果下载指定release版本的,可以直接从github上下载3.编译cd protobuf./autogen.sh./configure

2021-07-14 15:11:02 1675

原创 Golang配置私有仓库依赖

有些情况下,Golang项目所使用的部分中间件上传到gitlab上的私有仓库。在go项目中需要引用这些私有仓库的代码,需进行如下配置1.配置GOPRIVATE环境变量 go env -w GOPRIVATE=gitlab.xxx.com2.gitlab上生成access token进入Gitlab—>Settings—>Access Tokens,然后创建一个personal access token,这里权限最好选择只读(read_repository)。3.git...

2021-07-14 15:09:13 2264 1

原创 基于sqlmock 进行gorm单元测试

在对数据库进行单元测试时,可以使用sqlmock模拟数据库的返回来进行测试,从而无需部署真是的数据库实例。本文记录了工作中遇到的一些场景,写得不好还请见谅sqlmock 地址:https://github.com/DATA-DOG/go-sqlmockgorm 地址:https://github.com/go-gorm/gorm1.基本使用 创建mock db, mock, err := sqlmock.New()if nil != err { t.Fat.......

2021-01-08 18:06:00 4940

转载 epoll原理

转载地址:https://www.cnblogs.com/pluser/p/epoll_principles.html设想一个场景:有100万用户同时与一个进程保持着TCP连接,而每一时刻只有几十个或几百个TCP连接是活跃的(接收TCP包),也就是说在每一时刻进程只需要处理这100万连接中的一小部分连接。那么,如何才能高效的处理这种场景呢?进程是否在每次询问操作系统收集有事件发生的TCP连接时...

2019-02-27 10:41:05 68

原创 关于类成员的构造顺序

有这么一道题,求输出class CTestClass{public: CTestClass():c(3),b(c),a(b){} int a; int b; int c;}int main(){ CTestClass a; std::cout &lt;&lt; a.a &lt;&lt; "," &lt;&lt; a.b &...

2019-02-21 17:41:27 698

转载 全局变量与静态变量的区别

(a)若程序由一个源文件构成时,全局变量与全局静态变量没有区别。(b)若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的。(c)具有外部链接的静态;可以在所有源文件里调用;除了本文件,其他文件可以通过extern的方式引用;静态全局变量的作用:(a)不必担心其它源文件使用相同变量名,彼此...

2019-02-20 12:14:03 1133

转载 [转载]C++程序内存分区

C程序一般分为1.程序段:程序段为程序代码在内存中的映射.一个程序可以在内存中多有个副本.2.初始化过的数据:在程序运行值初已经对变量进行初始化的3.未初始化过的数据:在程序运行初未对变量进行初始化的数据4.堆(stack):存储局部,临时变量,在程序块开始时自动分配内存,结束时自动释放内存.存储函数的返回指针.5.栈(heap):存储动态内存分配,需要程序员手工分配,手工释放...

2019-02-20 11:12:02 284

转载 排序算法总结——C++实现(未完善)

一、排序算法的概述排序算法种类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。算法复杂度: 二、冒泡排序1.步骤前提条件:假设数组长度为n,目...

2019-02-18 10:32:33 98

原创 哈希算法相关梳理

1.基本概念哈希也成为“散列”:任意长度的输入,经过哈希算法变换成固定长度的输出。哈希值会产生碰撞,因为固定长度的哈希值表示的范围是有限的,但输入值的范围是无限的。通过原始数据通过相同的哈希算法可以计算出相同的哈希值,但是通过哈希值无法恢复原始数据不同的哈希算法,哈希值长度不同,但相同的哈希算法,哈希值长度固定。哈希值的长度越长越安全。(出现碰撞的概率越低)2.常用的哈希算法...

2019-02-08 09:59:51 429

原创 解决远程登陆mysql提示ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

mysql版本:5.7新安装的mysql数据库,输入mysql后提示:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)解决方法:1.在/etc下找到my.cnf,然后再最后一行添加skip-grant-tables,保存l2.此时跳过了密码检查,输入mysql可以直接...

2018-09-27 23:41:32 1706

原创 mysql本地连接错误解决方法

在CentOS 7上安装Mysql,不知道怎么回事本地无法连接,输入mysql -u root -p 后提示的错误信息如下: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)经过从网上查找资料,原因为/var/lib/mhysql目录的权限问题。在终端输入指令:chown ...

2018-09-24 22:21:26 1145

空空如也

空空如也

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

TA关注的人

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