- 博客(128)
- 收藏
- 关注
原创 Mysql锁与事务
我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题,数据库设计了事务隔离机制、锁机制、MVCC多版本并发控制隔离机制,用一整套机制来解决多事务并发问题。接下来,我们会深入讲解这些机制,让大家彻底理解数据库内部的执行原理1. 事务及...
2023-03-13 22:46:00
99
原创 Mysq数据结构图
索引的本质:索引是帮助Mysql高效获取数据的排好序的数据结构1. 索引的数据结构1.1 二叉树问题:树的深度比较深,查询一个索引会有很多的磁盘I/O1.2 红黑树平衡二叉树问题:平衡二叉树会对树进行平衡,但是当数据有100万时,2^20 = 1024 * 1024 ,此时树的高度就达到了20,也就是需要20次磁盘IO1.3Hash表对索引的key...
2023-03-09 22:55:00
89
原创 MySql索引优化实战
1.数据准备创建表CREATE TABLE `employees` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名', `age` int NOT NULL DEFAULT '0' COMMENT '年龄', `position` varchar(20...
2023-03-09 22:48:00
98
原创 jvm-内存调优
jvm-内存调优1. jvm内置命令jps 列出正在运行的jvm虚拟机进程,并显示虚拟机执行朱磊名称以及这些进程的本地虚拟机唯一ID-q : 仅输出进程id-m : 输出main方法的参数-l : 输出完整的包名(应用主类名)-v :输出jvm参数-V : 输出通过flag文件传递到JVM中的参数-Joption : 传递参数到vmjmap 用来查看内存信息、实例个数...
2023-02-23 21:22:00
91
原创 jvm-垃圾回收
jvm-垃圾回收机制1. 垃圾收集算法分代收集理论:当前虚拟机的垃圾收集都采用分代收集算法,一般将java堆分为新生代和老年代,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。在新生代中,每次收集都会有大量对象(近99%)死去,所以可以选择复制算法。只需要付出少量对象的复制成本就可以完成每次垃圾收集老年代的对象存活几率是比较高的,而且没有额外的空间对它进行分配担保,所以我...
2023-02-23 21:21:00
48
原创 jvm内存模型
jvm-内存模型1. 内存模型JVM内存参数设置堆-Xms 表示java虚拟机堆区内存初始内存分配的大小-Xmx 表示java虚拟机堆区内存可被分配的最大上限新生区-Xmn 表示java虚拟机年轻代大小方法区-XX:MaxMetaspaceSize 设置元空间的最大值,默认为-1,即不做限制,或者说只受限于本地内存大小-XX:MetaspaceSize 指定...
2023-02-23 21:18:00
52
原创 spring事务传播详解
事务失效场景注意spring 事务时通过spring aop实现的,通过this关键字调用方法时,没有通过代理类代理方法,导致事务失效Spring的默认的事务规则是遇到运行异常(RuntimeException)和程序错误(Error)才会回滚。或者指定回滚异常自己捕获异常方法定义非public方法定义为final事务挂起可以理解为方法栈,挂起即保存事务的当...
2022-09-23 17:50:00
52
原创 Mysql 获取自增主键删除的主键
SELECT message_id+1 from message_transmit_record awhere not EXISTS ( select * from message_transmit_record b where b.message_id=a.message_id+1 )AND a.message_id< (SELECT max(message_id) f...
2022-09-13 19:29:00
51
原创 redis分布式锁
1.配置类@Primary@Bean("clusterObjectRedisTemplate")public RedisTemplate<String, Object> objectTemplate(RedisConnectionFactory factory) { RedisTemplate<String, Object> template = new ...
2022-07-18 17:28:00
40
原创 Mysql大数据量分页查询优化
今天遇到了一个列表分页查询很慢的接口1. 分析列表查询语句列表查询语句关联了大约5张表,最后sql打印了limit 0,20将sql放到数据库执行,500ms,语句分析索引全部命中所以慢这里并不是列表查询慢2. 分析count(*)语句打印sql日志,可以看到count(*)的执行耗时达到了18scount()执行原理,这里可以参考 count(*)存在非聚集索引的count()...
2022-05-17 19:45:00
69
原创 Mysql区分度很差是否有必要建索引
一般而言区分度很差的字段没必要建索引,但是这种也要视情况而定。原因存储引擎底层,我们经常听到,不走索引而走全表扫描。那么底层为什么不走索引而走全表扫描。这里涉及到聚集索引和非聚集索引,对于非聚集索引值,查询的字段如果包含非索引字段,就会通过聚集索引主键从聚集索引中查询出需要查询出来的数据,也就是我们常说的回表。回表的结果就是不仅需要扫描一次索引表,还要回表查询完整数据,这里就会造成,全表...
2022-05-09 22:48:00
299
原创 Mysql count(*)与count(col)d对比
这里的知识点来源于博客总结count(col):统计某列有值的结果数,即col is not null 的值count(*): 统计表的字段数MyISAM存储引擎myisam引擎本身存储了一个特殊的字段,值是总行数count(*): 会直接读取这个特殊的值,如果添加了where条件之后,并不能读取这个值,那么和其他存储引擎类似。可参考Innodb存储引擎。count(col): 也...
2022-05-09 22:16:00
55
原创 protobuf学习详解
1.根据proto文件生成 java文件安装protoc命令下载地址:https://github.com/protocolbuffers/protobuf/releases如果想快捷使用,请配置相关的环境变量执行以下命令,可以保存为脚本一件执行protoc --proto_path=E:\github\java-interview\java-learn\src\main\...
2022-03-29 12:24:00
67
原创 go错误处理
go get 443go env -w GOPROXY=https://goproxy.cnGo:Unresolved dependencyhttps://blog.youkuaiyun.com/lvsehaiyang1993/article/details/109046094go get某工具后'xxx' 不是内部或外部命令,也不是可运行的程序 或批处理文件。解决步骤:1.确...
2022-03-08 09:56:00
60
原创 NIO多人聊天客户端
多人聊天客户端服务端public class Server { private ServerSocketChannel servSocketChannel; private Selector selector; /** * 初始化服务器 * */ public Server(){ try { se...
2022-03-05 11:21:00
57
原创 java类加载机制
1. 类加载器初始化以及加载过程类加载过程加载:在硬盘上查找并通过IO读入字节码文件,使用到类时才会加载,例如调用调用类的 main()方法,new对象,在加载阶段会在内存中生成一个代表这个类的 java.lang.Class对象,作为这个类的各种数据的入口。验证:校验字节码文件的正确性准备:给类的静态变量分配内存,并赋予默认值解析:将符号引用替换为直接引用,该阶段会把一些静态方...
2022-01-18 18:38:00
54
原创 阿里巴巴java手册-异常日志
链接:https://pan.baidu.com/s/1ZSUEdoJ7imi6LdHip2g9Qg提取码:9cfa1. 错误码强制 错误码的制定原则:快速溯源、简单易记、沟通标准化。强制 错误码不体现版本号和错误等级信息。强制 全部正常,但不得不填充错误码时返回五个零:00000。强制 错误码为字符串类型,共 5 位,分成两个部分:错误产生来源+四位数字编号。强制 编号不与公司...
2022-01-13 10:31:00
58
原创 阿里巴巴java手册-安全规约
链接:https://pan.baidu.com/s/1ZSUEdoJ7imi6LdHip2g9Qg提取码:9cfa强制 隶属于用户个人的页面或者功能必须进行权限控制校验强制 用户敏感数据禁止直接展示,必须对展示数据进行脱敏。强制 用户输入的 SQL 参数严格使用参数绑定或者 METADATA 字段值限定,防止 SQL 注入,禁止字符串拼接 SQL 访问数据库。强制 用户请求传入的任...
2022-01-13 10:30:00
53
原创 阿里巴巴java手册-单元测试
链接:https://pan.baidu.com/s/1ZSUEdoJ7imi6LdHip2g9Qg提取码:9cfa强制 好的单元测试必须遵守 AIR 原则⚫A:Automatic(自动化)⚫ I:Independent(独立性)⚫ R:Repeatable(可重复)强制 单元测试应该是全自动执行的,并且非交互式的。测试用例通常是被定期执行的,执行过程必须完全自动化才有意义。...
2022-01-13 10:29:00
50
原创 阿里巴巴java手册-编码规约
链接:https://pan.baidu.com/s/1ZSUEdoJ7imi6LdHip2g9Qg提取码:9cfa1. 命名风格强制 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束强制 所有编程相关的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式强制 类名使用 UpperCamelCase 风格,但以下情形例外:DO / BO / D...
2022-01-12 20:40:00
51
原创 阿里巴巴java手册-Mysql解读
链接:https://pan.baidu.com/s/1ZSUEdoJ7imi6LdHip2g9Qg提取码:9cfa聚集索引普通索引Mysql规约解读之前,先上图,这里是myql索引存储方式。1. 建表规约强制表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint(1 表示是,0 表示否)目的是见名知义is_delet...
2022-01-12 18:20:00
42
原创 Spring boot自定义starter
1. 原理分析1.1 spring.factories 如何被加载首先启动一个简单的springboot项目,后面依次是断点位置启动类WebApplication.java@SpringBootApplicationpublic class WebApplication { public static void main(String[] args) { S...
2022-01-12 14:19:00
38
原创 git分支管理
公司不同项目组使用不同的git分支管理项目,我们项目组采用第三张图,也是我比较倾向的,无奈各持意见。开发分支贯穿整个流程开发分支贯穿非线上分支,上线时拉取分支master永远是线上分支...
2022-01-08 15:49:00
31
原创 IDEA注释文档说明
1. IDEA注释模板使用导入文件setting.zip文件下载地址链接:https://pan.baidu.com/s/133g7UJQeLE_gebrMHg6-yw提取码:b4r9Idea导入方式路径 FIle ->Manage IDE Settings ->Import Settings使用类注释创建类时自动增加注释输入 ...
2021-12-30 19:33:00
35
原创 阿里RocketMq节约成本
阿里计费示例:计费示例假设您创建的实例在杭州地域,该实例上创建的Topic数量及消息收发数据如下:创建的Topic数量:20个每天生产的消息总数:100万条(50万普通消息+50万高级特性消息)消息的生产和投递比:1(生产的消息总数和投递的消息总数各为100万条。)每条消息平均大小:40 KB则该实例一天的消息收发费用如下:API调用费用:API调用次数为(50万+50万×5...
2021-12-29 10:50:00
62
原创 MongoDB权限
1. 说明默认情况下,MongoDB实例启动运行时是没有启用用户访问权限控制的,也就是说,在实例本机服务器上都可以随意连接到实例进行各种操作,MongoDB不会对连接客户端进行用户验证,这是非常危险的。保证安全使用新的端口,默认的27017端口如果一旦知道了ip就能连接上,不太安全设置mongodb的网络环境,最好将mongodb部署到公司服务器内网,这样外网是访问不到的。公司内部访问...
2021-12-27 15:47:00
80
原创 MongoDB常见问题
1. ERROR: child process failed, exited with 48问题:启动mongodb的时候,发现起不来,报错:child process failed, exited with error number 48然后先去/var/log/mongo/mongod.log 查看启动的日志可能原因:应该是没有正常关闭mongodb引起的,比如直接 kill -9 ...
2021-12-27 15:47:00
83
原创 MongoDB副本集
一组Mongodb复制集,就是一组mongod进程,这些进程维护同一个数据集合。复制集提供了数据冗余和高等级的可靠性,这是生产部署的基础。保证数据在生产部署时的冗余和可靠性,通过在不同的机器上保存副本来保证数据的不会因为单点损坏而丢失。能够随时应对数据丢失、机器损坏带来的风险。换一句话来说,还能提高读取能力,用户的读取服务器和写入服务器在不同的地方,而且,由不同的服务器为不同的用户提供服务...
2021-12-27 15:46:00
41
原创 MongoDB分片
1. 概念分片(sharding)是一种跨多台机器分布数据的方法, MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作的部署。分片(sharding)是指将数据拆分,将其分散存在不同的机器上的过程垂直扩展意味着增加单个服务器的容量水平扩展意味着划分系统数据集并加载多个服务器,添加其他服务器以根据需要增加容量分片集群包含组件分片(存储):每个分片包含分片数据的子集mon...
2021-12-27 15:46:00
40
原创 MongoDB安装
下载安装包wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.5.tgz解压缩tar -xvzf mongodb-linux-x86_64-rhel70-5.0.5.tgzmv mongodb-linux-x86_64-rhel70-5.0.5 mongodb5.0.5添加到系统路径v...
2021-12-27 15:45:00
31
原创 MongoDB基本命令
登录到mongo//客户端登录服务,注意,这里通过localhost登录,如果需要远程登录,必须先登录认证才行。 mongo --port 27017 //#切换到admin库 use admin数据库操作use blog #创建数据库show dbs | show databases # 查看所有的数据库db #查看当前正在使用的mongodb.dropDatabas...
2021-12-27 15:45:00
24
原创 MongoDB基本概念
MongoDB是一款非关系型数据库,说到非关系型数据库,区别于关系型数据库最显著的特征就是没有SQL语句,数据没有固定的数据类型MongoDB是一个文档数据库,记录的是一个文档,它是由字段和值对组成的数据结构。文档存在于集合中文档是MongoDB中数据的基本单元,非常类似于关系型数据库系统中的行。集合可以被看做没有模式的表单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限自...
2021-12-27 15:44:00
41
原创 Zookeeper集群部署
Zookeeper 集群模式一共有三种类型的角色Leader: 处理所有的事务请求(写请求),可以处理读请求,集群中只能有一个LeaderFollower:只能处理读请求,同时作为 Leader的候选节点,即如果Leader宕机,Follower节点 要参与到新的Leader选举中,有可能成为新的Leader节点。Observer:只能处理读请求。不能参与选举Zookeeper集群模...
2021-12-23 17:00:00
36
原创 Zookeeper Java 客户端
1.Zookeeper Java 客户端<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.5.8</version></depend...
2021-12-23 16:59:00
29
原创 ZookeeperACL权限控制
zookeeper类似于文件系统,client可以创建、更新、删除节点。但是如何做到节点的权限控制呢,zookeeper提供了access control list访问控制列表。ACL 权限可以针对节点设置相关读写等权限,保障数据安全性。permissions 可以指定不同的权限范围及角色。ACL权限控制,通过 [scheme:id:permissions] 来构成权限列表。权限模式(sc...
2021-12-22 16:56:00
45
原创 Zookeeper基本命令
创建zookeeper 节点命令create [‐s] [‐e] [‐c] [‐t ttl] path [data] [acl] #创建持久化节点 create /test‐node some‐data #创建临时节点 create -e /temp-code temp-data #创建序号节点,加参数 -s create -s /seq-code seq-data #创建容...
2021-12-22 16:55:00
47
原创 Zookeeper安装
依赖java环境,请先配好java环境获取安装包wget https://downloads.apache.org/zookeeper/stable/apache-zookeeper-3.6.3-bin.tar.gz解压tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz拷贝配置文件cd apache-zookeeper-3.6.3-bi...
2021-12-22 16:54:00
35
原创 Zookeeper数据类型
官方文档上这么解释zookeeper,它是一个分布式协调框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等核心概念文件系统数据结构+监听通知机制文件系统数据结构Zookeeper维护一个类似文件系统的数据结构(树型结构)每个子目录项都被称作为 znode(目录节...
2021-12-22 16:54:00
32
原创 Mysql 模拟自增主键
select (@i:=@i+1) No,t.* from tableName t,(select @i:=0) init
2021-12-22 14:17:00
27
原创 git回滚版本操作
刚刚不小心在测试提交了代码并推送到了远程,使用以下两个命令回滚了一个版本。亲测有效git reset --hard HEAD^ #将本地代码修改为上一个提交的代码,这个时候远程还是上一次的代码,如果做拉取操作会导致远程代码拉下来,这个时候智能强行推送当前本地分支覆盖掉远程分支git push origin HEAD --force #强推到远程...
2021-12-21 09:42:00
37
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人