- 博客(36)
- 资源 (2)
- 收藏
- 关注

原创 MySQL 的 InnoDB 缓冲池里有什么?--InnoDB存储梳理(二)
它是InnoDB存储引擎的一个缓存池页的信息表,用于显示 InnoDB 缓冲池中各页的信息,是一个临时表,没有主键,生产上别随便用。查询这个表的数量1280个数据,算一下,InnoDB的一页是 16k,1280 * 16k = 20480k;刚好就我们配置的 20M;在MySQL启动的时候,它就会把配置的所有的缓存池空间分成页,放到这个数据表里面。
2024-08-08 19:03:37
1145
2
原创 怎么用长连接监听数据变化的?
在分布式系统中,配置和数据的动态更新是很重要,特别是在微服务架构下,要保证数据的实时性和一致性,能实时同步是很关键的。短轮询(定期请求服务器获取数据)或者使用到的时候再去查方式存在延迟高、请求冗余等一些问题,而长连接技术能够非常高效地监听数据变化,提高系统的实时性。下面我写了一个简单的demo来演示长连接的实时监听:我在一个窗口启动了监听连接,并在另一个窗口修改了value值,观察监听窗口,可以看到能实时打印出变化后的值。代码结构很简单,只有两个类,下面已贴出源码,感兴趣的可以直接拿去试试。
2025-03-03 21:15:01
194
原创 MySQL 主从同步配置及操作步骤
主从同步是一种常见的数据复制技术,它通过将主库的数据同步到一个或多个从数据库中来保证数据的一致性。从库通过读取主库的 binlog 文件来获取更新并进行同步。MySQL5.7当主库提交事务时,它会将变更记录写入binlog文件。一个dump线程负责监听这些binlog文件的变更,当文件发生更新时,dump线程会推送更新事件给从库。从库接收到这些更新事件后,通过 I/O 线程将其写入中继日志(relay log),然后通过SQL线程执行这些更新操作。
2025-02-27 14:37:50
1161
原创 怎么手动分析 InnoDB 数据存储和索引结构
最近和一些小伙伴一起在研究MySQL相关的理论知识,看磁盘存储的信息其实可以自己手动实践一下的,这个其实很简单,但有些小伙伴没有这方面的知识,不知道怎么上手。我这里写一篇简单的教程,我使用的是8.0.23版本。
2025-02-23 19:28:18
570
原创 MySQL 中的索引数量是否越多越好?
不是越多越好,我们要根据实际需要来增加索引。InnoDB 中每创建一个索引,就会多维护一个B+树结构。索引的目的是为我们带来查询效率上的提高。如果不是频繁使用的查询字段,没有必要创建索引。
2025-02-22 18:02:03
452
原创 B+树作为数据库索引结构的优势对比
MySQL作为数据库,它的功能就是做数据存储和数据查找;使用B+树作为索引结构是为了实现高效的查找、插入和删除操作。B+树的查找、插入、删除的复杂度都为 O(log n),它是一个多叉树的结构,能兼顾各种操作的效率的数据结构。如果使用平衡二叉树或者红黑树,树的高度就会涨的很快,查询的次数就会变多了,不利于查找,磁盘的I/O次数就会变多。范围查找很快,B+树的叶子节点是使用双向链表链接起来的,找到要查找的范围,顺序读取就可以了。
2025-02-20 20:23:26
392
原创 MySQL 的存储引擎简介
使用可以查看安装的MySQL的引擎相关信息MySQL的引擎不止这么多,这只是安装的这个版本有的引擎。可以看到,只有InnoDB支持事务,其他的引擎都是不支持事务的。
2025-02-19 19:58:36
391
原创 Docker安装私有镜像仓库
通过以上步骤,你可以轻松搭建一个私有的Docker镜像仓库。这不仅节省了传输镜像包的时间,还避免了在服务器上重复打包的麻烦。未来如果需要支持HTTPS访问或其他高级功能,可以进一步研究相关配置。
2025-02-13 09:12:06
249
原创 刷算法题还是有好处的
记得我第一次看的时候,尽管看到别人分析源码觉得它非常精妙,但自己理解时就感到十分吃力,基本没看懂。许多人认为刷题没有实际用途,但我现在意识到,正是这些练习帮助我们在理解复杂源码时比那些没有类似经历的人更加得心应手。这种多次判断和循环的逻辑在算法题中非常常见,比如二叉树的非递归遍历方法,就需要一定的逻辑想象力来理解和掌握。这个方法的执行逻辑时,我是挺懵的,不太理解怎么执行过去的。一段非递归的后序遍历的代码,虽然行数不多,但对于没有算法基础的人来说,理解起来应该是比较吃力的。第一次看的时候,在理解。
2025-02-12 11:45:02
255
原创 Kafka 基于SASL/SCRAM动态认证部署,kafka加账号密码登录部署
其实挺简单的几个配置文件,问大模型一直没说到点上,绕晕了。SASL/SCRAM的认证涉及到要先在zookeeper上创建好认证信息,最后慢慢捋下来,其实就这么几个配置和命令。
2024-09-14 15:12:21
842
1
原创 前端Vue使用AES的GCM模式加密
写了个新的前端项目,公司要求,账号密码这些必须是加密传输的;后端使用了GCM模式加密,前端是复制的一个以前项目的代码,原来是有写加密的,使用的是CryptoJS组件CTR模式加密的,但是这个组件里面没有GCM加密模式,找了半天,发现浏览器其实是自带加密的组件的,使用这个组件就可以使用GCM模式加密,代码贴在下面,顺便java代码也贴出来了。CryptoJS看点进源码里面看了下只支持这几种模式去官网看了下,也是说支持这几种,估计是浏览器都支持了,所以CryptoJS也就没有再更新了吧。
2024-08-29 15:08:39
2123
原创 InnoDB什么时候使用插入缓冲 insert buffer 了,怎么验证 -- InnoDB存储梳理(四)
上一次的ibuf_index页的LSN号也是原来的,新加载进来的二级索引页的LSN比他的要大,确实没用,直接加载出来写进去了。表空间被载入的详细信息,我们找到这几个页号,后面把所有的索引信息,找出来,然后再insert一条change buffer 里面没有的索引数据,再看看各个表的变化。再次查询表空间加载进来的信息,有二级索引信息被加载进来了,而且多了一个IBUF_INDEX类型的页,就是使用了插入缓冲 insert buffer。第一次查询表空间中加载进来的页面,没有索引信息。查询表空间的页面信息。
2024-08-10 16:34:50
310
原创 MySQL源码编译启动debug--InnoDB存储梳理(一)
对于没有C语言基础的同学来说,想看看源码,在搞定编辑器做debug的时候就被劝退了,发生点啥完全,看不懂不知道从哪里入手去做debug;点击 debug 的按钮,他就会自动编译了,编译完成会启动mysqld,mysqld 编译后产生的位置在 cmake-build-debug/sql 下面。这个时候应该会启动失败,没有对应的 data 目录,看看打印的报错日志,看看指定的 data 目录在哪,创建建一个这个目录,再执行。编译的时候有些文件引用 #include ,会引用这里,导致报错;
2024-08-06 17:02:01
438
原创 大模型简介
大模型,全称「大语言模型」,英文「Large Language Model」,缩写「LLM」。是具有大量参数和复杂结构的机器学习模型。大模型通常具有数亿到数千亿个参数,在大量的文本或其他数据上进行训练,这些数据包括网络上的文章、书籍、对话等,以便模型能够学习广泛的知识和语言模式。
2024-07-08 17:37:53
418
原创 线程安全和非线程安全之我见
非线程安全就是在多线程环境下,如果在不加任何同步措施的情况下,每次执行的结果不一定一致,产生了资源竞争。所以线程安全和非线程安全就是有没有对会产生竞争的资源做加锁的处理,对竞争资源加锁的方式有很多种,线程安全就是在多线程环境下,对数据的操作是一致的,就是不管我执行多少次,返回的结果是一样的。是线程安全的但是性能要差一些;其实很简单,打开源码一看就知道了,拿一个。只是最基础的,可以继续研究下什么样的加锁更好。是非线程安全的,但是性能好要块一些;的方法基本都加上了这个关键字。
2024-03-21 09:35:01
259
1
原创 解决内网拉取企微会话存档代理问题的一种办法
客户的服务都是内网的,不能直接访问外网;访问外网的话需要走kong网关才能出去。会话存档官网说可以使用socket5http方式拉取会话存档;我这边尝试了直接使用kong网关的ip和端口配置进去,是访问不了的我后面就又尝试了使用nginxsquid做正向代理的方式使用http方式访问,也是没有成功;这两种做代理服务器为什么不能成功,没有理解;有知道的朋友可以告诉我一下,有成功使用这两个做代理服务器拉取消息成功的朋友可以分享下经验。搞一个socket5。
2023-09-27 17:33:28
1597
原创 MySQL数据库的回滚rollback是怎么做到的?
中创建这个数据的副本,InnoDB的一致性非锁定读,就是读取数据的副本,解释上面那句话就是,因为如果这个事务在 undo log 里面记录了一个被修改的行数据的副本,其他事务可能也用到了,就不能直接删除,需要确认这个数据没有被引用,才能删除,在purge线程中删除。它存放在共享表空间中的回滚段中,这是《InnoDB》书里面说记录 undo log 的时候也要写 redo log 的原因,因为它是在这个文件里面保存的。我了解的差不多就这么多了,如果有错误,请留言批评指正!这说明开启了事务,会在一个。
2023-09-07 18:34:22
1376
原创 Hyperf初体验-JsonRpc的使用
Hyperf 官方写 JsonRpc 的使用 Demo 还是比较清晰的,但是作为一个新手,刚使用的时候,还是不是很明白,这里给初次接触的同学,写一个更精细化的 Demo 。很简单的 Demo ,在官方的例子基础上写的。已经理解 JsonRpc 怎么交互,怎么写代码的兄弟们,就不用继续看了。首先使用下面命令,创建两个hyperf的项目composer create-project hyperf/hyperf-skeleton hyperf1composer create-project hyperf/h
2020-11-27 20:31:31
1998
3
原创 Mac下源码安装PHP的pkg-config相关的问题
如果你的软件啥的都是使用brew安装的,有以下报错的话,这里应该可以解决你的问题No package ‘openssl’ foundNo package ‘icu-uc’ foundNo package ‘icu-io’ foundNo package ‘icu-i18n’ foundNo package ‘oniguruma’ found…如果存在报错的话,首先看看你是否安装这个软件brew info openssl看打印出来的信息,我们应该能很清楚的知道我们有没有安装。如果bre
2020-11-27 15:30:38
1773
原创 sentry9.1.2安装的问题
前言这两天,因为服务器磁盘占满;想扩容连个扩容软件都不能下载;也不知道怎么操作好,想来直接删除了sentry相关的数据,腾出磁盘空间;删除了空间之后,sentry就不能使用了;然后就直接重装;安装好了最新版的sentry,发现php的sentry的compose包需要跟随更新;而且php的版本也要升级到7.2以上;线上的环境不能瞎处理;所以只好重新再安装旧版的sentry了。安装进入git...
2020-02-22 20:51:26
2097
3
原创 Linux 软件&工具安装记录
Ftp安装# 安装命令yum install -y vsftpd# 启用ftpsystemctl start vsftpd# 增加ftp用户useradd -s /sbin/nologin -d /home/qiezilife qiezilife# 修改配置
2020-01-09 16:12:19
205
原创 在 Console 中输出树形结构
前言在console代码中输出一个树形的结构,如下图int[] arr = new int[]{2, 7, 4, 20, 11, 16, 8, 13, 17, 19, 3, 56, 68, 29, 18};int len = arr.length;int ceng = (int) Math.sqrt(len) + 1;for (int i = 0; i <= ceng; i+...
2019-09-24 20:40:44
1051
原创 基础算法学习(一)
前言代码逻辑能力不行,咱就先背句式,看着套吧交换的基本句式type a = 0, b = 1;type tmp = a;a = b;b = tmp;迭代的基本句式(链表反转)type cur = head;type prev = null;while (cur != null) { type tmp = cur.next; cur.next = prev;...
2019-09-04 21:45:50
227
原创 任务错误解决记录
文章目录前言walle (1.0)检测时的问题解决walle & opcache后记前言平时工作中遇到的一些问题的排查和记录walle (1.0)walle一个web部署系统工具,配置简单、功能完善、界面流畅、开箱即用!支持git、svn版本管理,支持各种web代码发布,PHP,Python,JAVA等代码的发布、回滚,可以通过web来一键完成。1.0版本的官方文档:http:/...
2019-06-03 15:46:30
1150
原创 Laravel 服务容器的具体实现
文章目录前言容器的定义Laravel容器的解释服务容器几种绑定的方式容器注册容器注入后记前言容器的定义容器,字面上理解就是装东西的东西。常见的变量、对象属性等都可以算是容器。一个容器能够装什么,全部取决于你对该容器的定义。当然,有这样一种容器,它存放的不是文本、数值,而是对象、对象的描述(类、接口)或者是提供对象的回调,通过这种容器,我们得以实现许多高级的功能,其中最常提到的,就是 “解耦”...
2019-04-10 12:56:39
1099
原创 项目代码设计准则
1、数据库设计数据主表系统一开始设计的时候需要考虑主表需要那些字段,不能所有的字段都堆上去,一般主表建议不超过20个字段,如果一定要的话,可以加上从表,把各个东西一定要抽象好2、代码层次设计代码封装在写一个业务功能函数时,可以找一找系统中是否有类似的实现:如果有,看是否满足当前的业务需要,如果不能满足,看是否可以在函数上加上当前的业务逻辑,如果不能,重新写一个兼容所有...
2019-04-03 15:44:12
282
原创 redis使用过的一些命令的整理
前言首先百度抄一段Redis的概念:Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API下面一些命令都是我自己在实际的项目中使用过的命令,以及应用的场景,想要学习命令的可以去这里看看Redis的连接连接命令redis-cli -h 127.0.0.1 -p 6379 -a "password"re...
2019-04-03 11:01:45
234
原创 springboot扫描出controller的资源路径uri
以下代码为测试代码,扫描出controller包中的所有requestMapping的资源URIimport io.swagger.annotations.ApiOperation;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annota...
2019-02-14 16:15:32
4141
原创 springboot+vue 权限管理系统
权限管理系统demohttp://permission.yuanjy.com前端github地址:https://github.com/yjysanshu/vue--authority后端github地址:https://github.com/yjysanshu/springboot-authority简介该权限管理项目是前后端分离形式的,登录鉴权是基于token验证的,后端记录...
2019-01-24 10:37:13
9832
7
转载 gitlab 在服务器上的搭建
gitlab 在服务器上的搭建1、首先安装一些相关的依赖yum -y install policycoreutils openssh-server openssh-clients postfixpolicycoreutils : 不知道干嘛用的openssh-server openssh-clients: 允许远程连接工具来连接服务器的东西postfix: 发送邮件的东西,需...
2018-11-05 16:27:26
242
原创 Vue页面打印,解决退出页面失效的问题
VUE页面打印 在使用vue开发的时候,涉及到页面的打印功能,页面的按钮可能需要多次打印,可能取消之后重新操作,在使用对 document.body.innerHTML 重新赋值的方法可能导致打印之后需要重新刷新页面,很不安逸,对其重新改造了下打印的代码/** * 打印页面数据 * @param {String} content * @param {*} w ...
2018-05-08 17:57:48
6656
6
原创 在空Linux服务器上搭建java、tomcat、LNMP服务
搭建nginx一般空的云服务器上,C、C++的编译器什么的都是没有的,需要我们去安装,不过也简单,就几条命令:安装 gcc-c++ 编译器 yum install gcc-c++安装一些依赖 yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum install -y openss...
2018-03-12 21:08:19
1422
原创 在服务器上建立Git仓库
在服务器上建立Git仓库1、执行下面命令建立git仓库,会创建一个projectname.git的目录:git init --bare projectname.git2、执行命令,修改git的用户权限:chown -R git:git projectname.git3、执行命令,获取远程仓库:git clone git@ip:/dir/projectname...
2018-01-23 18:36:44
1751
1
原创 npm更换国内镜像
查看npm的配置更换镜像三种方式查看npm的配置npm config list metrics-registry = “https://registry.npmjs.org/”npm config get globalconfig /usr/local/etc/npmrcnpm config ls -l ; cli configs long = true metrics-
2017-12-28 19:10:51
8583
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人