- 博客(32)
- 收藏
- 关注
原创 mysql问题分析、解决
查看正在进行中的事务SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;杀死进程id(就是上面命令查到的trx_mysql_thread_id列)kill 线程id查看当前锁定的事务SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;查看当前等锁的事务SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;查看超过60s的长事务s.
2022-03-21 11:08:50
994
原创 mysql如何保证主备一致?
MySQL 主备的基本原理在状态 1 中,客户端的读写都直接访问节点 A,而节点 B 是 A 的备库,只是将 A 的更新都同步过来,到本地执行。这样可以保持节点 B 和 A 的数据是相同的。当需要切换的时候,就切成状态 2。这时候客户端读写访问的都是节点 B,而节点 A 是 B 的备库。在状态 1 中,虽然节点 B 没有被直接访问,但是我依然建议你把节点 B(也就是备库)设置成只读(readonly)模式。这样做,有以下几个考虑:有时候一些运营类的查询语句会被放到备库上去查,设置为只读可以防止误
2022-03-20 17:45:00
417
原创 RR隔离级别下mysql如何加锁?
RR隔离级别下update加锁结论,RC隔离级别没有gap锁不加索引锁全表(gap lock + record lock)普通索引等值更新next-key lock(前开后闭)向后面查一个不等于此值,加 gap lock唯一索引、主键next-key lock 退化为 行锁初始化sqlCREATE TABLE `t` ( `id` int(11) NOT NULL, `c` int(11) DEFAULT NULL, `d` int(11) DEFAULT NULL, PRIM
2022-03-18 17:45:00
1384
1
原创 explain常用相关字段解释
type: 使用的索引类型,const>ref>range>index>ALL 从左到右性能递减。const: 使用主键/唯一索引搜索ref: 使用普通索引搜索eq_ref: 使用唯一索引搜索range: 使用索引并且是个范围index: 全索引扫描,性能比全表扫描好ALL: 全表扫描possiblle_keys: 可能使用的索引,由mysql优化器决定key: 使用到的索引ken_len: 索引的长度和字段有关rows: 扫描的行数,不是精确的Extra:
2022-03-17 14:56:40
881
原创 windows本地安装kafka教程
windows kafka本地启动启动zk cmd 窗口不要关闭启动kafka在kafka安装目录下 “.\bin\windows\kafka-server-start.bat .\config\server.properties”cmd 窗口不要关闭创建topic在目录下 D:\JAVA\Tools\kafka_2.12-2.8.0\bin\windows执行kafka-topics.bat --create --zookeeper localhost:2181 --replica
2022-03-17 14:17:36
664
1
原创 kafka生产者相关
数据可靠性保证:为保证producer发送的数据,能可靠的发送到指定的topic,topic的每个partition收到producer发送的数据后,都需要向producer发送ack(acknowledgement确认收到),如果producer收到ack,就会进行下一轮的发送,否则重新发送数据acks 参数配置:0: producer 不等待 broker 的 ack,这一操作提供了一个最低的延迟,broker 一接收到还没有写入磁盘就已经返回,当 broker 故障时有可能丢失数据;1:
2022-03-17 14:16:55
1781
原创 kafka分区策略
分区策略分区原因:方便在集群中扩展,每个Partition可以通过调整以适应它所在的机器,而一个topic又可以有多个Partition组成,因此整个集群就可以适应任意大小的数据了;可以提高并发,因为可以以Partition为单位读写了。分区原则:我们需要将producer发送的数据封装成一个ProducerRecord对象。指明 partition 的情况下,直接将指明的值直接作为 partiton 值;没有指明 partition 值但有key的情况下,将 key 的 hash 值与
2022-03-17 14:15:30
2039
原创 kafka工作流程及文件存储机制
kafka工作流程Kafka中消息是以topic进行分类的,生产者生产消息,消费者消费消息,都是面向topic的。topic是逻辑上的概念,而partition是物理上的概念,每个partition对应于一个log文件,该log文件中存储的就是producer生产的数据。Producer生产的数据会被不断追加到该log文件末端,且每条数据都有自己的offset。消费者组中的每个消费者,都会实时记录自己消费到了哪个offset,以便出错恢复时,从上次的位置继续消费。kafka文件存储机制由于
2022-03-17 14:13:37
143
原创 kafka架构相关
kafka架构Producer : 消息生产者,就是向 kafka broker 发消息的客户端;Consumer : 消息消费者,向 kafka broker 取消息的客户端;Consumer Group (CG): 消费者组,由多个 consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。Broker : 一台 kafka 服务器就是一个 broker。一个集群
2022-03-17 14:10:31
88
原创 mysql索引介绍
InnoDB索引模型在 InnoDB 中,表都是根据主键顺序以索引的形式存放的,这种存储方式的表称为索引组织表。又因为前面我们提到的,InnoDB 使用了 B+ 树索引模型,所以数据都是存储在 B+ 树中的。每一个索引在 InnoDB 里面对应一棵 B+ 树。主键索引的叶子节点存的是整行数据。在 InnoDB 里,主键索引也被称为聚簇索引(clustered index)。非主键索引的叶子节点内容是主键的值。在 InnoDB 里,非主键索引也被称为二级索引(secondary index)。基于主
2022-03-17 13:51:41
782
原创 mysql的锁
根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。全局锁全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句表级锁MySQL 里面表级别的锁有两种:一种是表锁,一种是元数据锁(meta data lock,
2022-03-17 13:47:05
103
原创 mysql事务相关。
背景:当数据库上有多个事务同时执行的时候,就可能出现脏读(dirty read)、不可重复读(non-repeatableread)、幻读(phantomread)的问题,为了解决这些问题,就有了“隔离级别”的概念。隔离级别读未提交(read uncommitted):一个事务还没提交时,它做的变更就能被别的事务看到。读提交(read committed):事务提交之后,它做的变更才会被其他事务看到可重复读(repeatable read):一个事务执行过程中看到的数据,总是跟这个事务在启动时看到
2021-11-25 20:33:48
787
原创 mysql一条sql更新过程。
ps:查询语句的那一套流程,更新语句也是同样会走一遍mysql更新涉及到日志模块redo log(重做日志)binlog(归档日志)redo log每一次更新只更新内存,并写入redo log,如果每次更新都需要更新磁盘,涉及到随机IO,性能过差(WAL:Write-Ahead Logging),redo log写满了,会停下来下redo log,把redo log的数据刷到磁盘。redo log图解write pos 是当前记录的位置checkpoint 是当前要擦除的位置
2021-11-24 17:45:10
620
原创 mysql一条查询语句的执行流程。
mysql架构图登录mysqlmysql -hip−Pip -Pip−Pport -u$user -p查看连接mysql的线程show processlist查看mysql服务正在连接的请求最大空闲连接时间由mysql wait_timeout参数设置默认值8h查询缓存执行的sql语句和结果已key-value存在,存在缓存直接返回,不存在查询,在缓存。 ps:适用于静态表,数据基本不会变更的,db数据只要变更,会清除该表所有缓存。你可以将参数 query_cache_ty
2021-11-07 16:13:01
181
原创 gh-ost修改数据量较大表结构实战
背景:线上数据量过大,需要涉及到修改表结构,表结构修改会锁表,采用gh-ost onlineDDL安装go语言环境,gh-ost需要sudo yum install golang安装gh-ost 工具https://github.com/github/gh-ost 请使用最新稳定版本将gh-ost文件copy到/usr/loca sudo cp gh-ost /usr/locasudo ln -s /usr/local/gh-ost /usr/bin/gh-ost校验安装是否成功: gh
2021-10-14 15:28:48
640
原创 声明引用和创建对象发生了什么
背景:作为一个开发仔,根本不缺对象,天天new,天天new,突然有点好奇中间的过程是啥样的。下面创建这个Animal对象做了些啥呢?// 创建一个Animal对象Animal animal = new Animal();存在对象声明、创建与赋值3个步骤声明一个引用变量,要求java虚拟机分配空间给引用变量,并将此变量命名为animal,此引用变量固定位Animal类型(Animal animal = new Animal())。创建对象,要求java虚拟机分配堆空间给新建立的Animal对象
2021-08-26 00:16:18
129
原创 mysql索引失效问题记录
背景:在一次开发中,需要查询促销活动商品表,查询条件是sku_id,走了全表扫描没走索引,学习记录下索引失效原因。1.条件字段带函数操作--交易日志表CREATE TABLE `trade_log` ( `id` INT ( 11 ) NOT NULL, `trade_id` VARCHAR ( 32 ) DEFAULT NULL, `operator` INT ( 11 ) DEFAULT NULL, `create_time` datetime DEFAULT NULL, `update
2021-06-26 17:42:11
158
原创 记录:mysql count(*)、count(1)、count(主键 id)、count(字段)区别。
背景:之前在写sql总是比较疑惑select count(1) from t ,count(?)怎么写性能比较好,特此记录一下。对于 count(主键 id) 来说,InnoDB 引擎会遍历整张表,把每一行的 id 值都取出来,返回给 server 层。server 层拿到 id 后,判断是不可能为空的,就按行累加。对于 count(1) 来说,InnoDB 引擎遍历整张表,但不取值。server 层对于返回的每一行,放一个数字“1”进去,判断是不可能为空的,按行累加。对于 count(字段) 来说
2021-06-22 23:19:39
138
原创 记录mysql两个事务更新同一行数据
背景:当两个事务的sql更新同一行数据,以最后一次事务提交的为准(废话)。更新数据都是先读后写的,而这个读,只能读当前的值,称为“当前读”(current read)。这个时候“两阶段锁协议”就要上场了。事务 B’没提交,这个版本上的写锁还没释放。而事务 A 是当前读,必须要读最新版本,而且必须加锁,因此就被锁住了,必须等到事务 B’释放这个锁,才能继续它的当前读,然后在更新。...
2021-06-19 17:13:56
3356
原创 记录缓存穿透、缓存击穿、缓存雪崩原因以及解决方案
有效解决redis缓存穿透、缓存击穿问题1.把不存在的key存入redis中,值为null也存入(例如:id=-1,这种不存在的id,或者说是恶意伪造的id,查询数据库的结果存入redis中,此种方法不好)2.使用布隆过滤器。布隆过滤器:二进制的数组,里面存储的是(0/1)数据经过hash算法,在布隆过滤器中校验,如果查询的key经过各种hash算法都为1(只要有一个二进制不是1就不存在),则存在布隆过滤器中。说明数据存在不是恶意伪造数据,可以到redis,数据库中查询。...
2021-01-28 20:00:09
126
原创 静态工厂方法返回实例
Effective Java用静态工厂方法代替构造器记录供参考学习https://www.cnblogs.com/dyj-blog/p/8867028.html详细单列模式介绍https://www.jianshu.com/p/eb30a388c5fc
2021-01-13 22:02:29
195
原创 两个对象hashCode相等,引用地址相等吗?那么这两个对象equals一定相同吗?
注意:hashCode可以理解为对象在计算机的唯一地址。结论:两个对象equals相等,hashCode一定相等两个对象 == 相等,hashCode一定相等两个对象 == 不相等,hashCode有可能相等实体类Animalimport java.util.Objects;public class Animal { private String name; private Integer age; public Animal() { this
2020-12-15 21:30:19
1422
2
原创 细说分布式SSO单点登录
做个学习记录,方便以后查阅!1.背景随着企业的发展,产品越来越多,形成一个体系,可能需要成套的给客户使用,客户不可能每个产品都需要登录一次,过于麻烦。sso解决了这个麻烦,实现一处登录,处处登录。2.实现单点登录1.顶级域名相同实现单点登录a站点 a.test.comb站点 b.test.comc站点 c.test.com此时将cookie的domain设置为.test.com,此时访问.test.com下的站点时都会吧cookie带上2.跨域实现单点登录用户访问app系统,app
2020-11-09 23:17:56
518
原创 问题记录:上传视频功能开发出现413错误
通过nginx代理到服务器,上传视频报413错误http{ }中设置:client_max_body_size 20m;在server{ }中设置:client_max_body_size 20m;在location{ }中设置:client_max_body_size 20m;区别:http{}中控制着所有nginx收到的请求。server{}则控制该server收到的请求大小。location{}只对匹配了location 路由规则的请求生效。...
2020-10-24 17:50:51
498
原创 vue中定义方法非空判断
1.代码export const isNotNullORBlank = (...args)=> { for (var i = 0; i < args.length; i++) { var argument = args[i]; if (argument == null || argument == '' || argument == undefined) { return false; } } return true;}2.用法isNot
2020-09-04 10:37:42
2743
原创 JQuery中的text(),html()和val()区别
1.text() 设置或返回被选元素的文本内容2.html() 返回或设置被选元素的内容 (inner HTML),包括标签。3.val() 方法返回或设置被选元素的值。注意:val()是用来输出表单内的数据,可以看出div和span标签内的文本并没有被输出,H5新标签placeholder同样也没有被输出,所以这个val应该是只针对标签的value属性的...
2020-04-20 16:10:06
126
转载 span标签中显示固定长度,超出部分用省略号代替,光标放到文字上显示全部
在span中实现显示某段内容,固定其长度,多余部分用省略号代替,这样就用到html的title属性;如:title属性:其值是text,属性描述是规定元素的工具提示文本,意思就是鼠标移到元素上时显示title中的内容;以span为例实现上述功能:html:<div> <span class="basic-l left10">筛选标签:</span>...
2020-04-16 10:30:13
2879
原创 echarts饼图自定义显示默认高亮突出的部分
1.直接上代码,记录方便以后查看。//设置默认选中高亮部分 const dietHabitAnalysis = echarts.init(document.getElementById('xx')) dietHabitAnalysis.setOption(option) dietHabitAnalysis.dispatchAction({ t...
2020-03-16 15:56:57
3744
原创 记录Vue用到了elementUI的el-table数组内对象发生改变页面没有重新渲染问题的解决
标题记录Vue用到了elementUI的el-table数组内对象发生改变页面没有重新渲染问题的解决首先需要知道1.当你利用索引直接设置一个项时,例如:vm.items[indexOfItem] = newValue2.当你修改数组的长度时,例如:vm.items.length = newLength例如:data(){ return (){ tableData:[ { ...
2020-03-12 14:05:10
2909
1
原创 vue的style引入css,src和@import的区别
1.src引入<style src="@/assets/css/a.css"><style>2.@import引入<style >@import "./assets/css/a.css"; <style>两者都没有加上scoped 作用域为全局当都加上scoped 的时候,@import作用域任然是全局,src引入的作用域是局部<...
2020-02-12 16:50:59
5536
2
原创 Echarts去掉图形后面的网格线
echarts去掉图形后面的网格线xAxis : [ splitLine:{ show:false }],yAxis : [ splitLine:{ show:false }]
2020-02-07 15:28:22
1775
1
原创 vue项目使用qrcodejs2生成二维码
总结下,以后用到方便,最近做项目用到根据前端的入参生成二维码,手机访问跳到H5页面1.引入qrcodejs2cnpm install qrcodejs22.HTML!-- 二维码弹框 --><!-- 我的二维码是在弹框里,使用的话只需要给一个装二维码的元素就可以 --><el-button type="primary" @click="payOrder">...
2020-02-06 14:34:59
1428
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人