- 博客(604)
- 资源 (14)
- 收藏
- 关注
原创 MySQL实战:监控
报警阈值:threads_connected / max_connections > 0.8。Innodb_buffer_pool_read_requests:从缓存池中读取的次数。Innodb_buffer_pool_reads:从物理磁盘读取的次数。qps = (queries2- queries1) / 时间间隔。周期性的连接数据库并执行select @@version。使用pt-deadlock-logger工具。查看最近一次死锁信息。
2024-03-17 20:55:42
800
原创 面试官:如何保证缓存和数据库的一致性?
针对这种不一致的情况,我们可以对更新数据库和缓存的操作加一个分布式锁,这样就能保证数据的一致性。基于内存缓存利用率的角度,我们一般不会采用同步更新的操作,因为有可能更新完的缓存并不一定会马上读取,导致缓存中缓存了大量无用的数据,降低缓存命中率。为了保证缓存和数据库的实时一致,我们不能用定时任务来更新缓存,我们要同时更新数据库和缓存,对应的方案有如下两种。从上图看,还是会存在数据不一致的情况,但是在实际中这个问题出现的概率并不高,因为要满足如下3个条件。除了并发的情况,我们还需要考虑异常的情况。
2024-03-09 21:46:55
307
原创 MySQL实战:问题排查
MySQL在选取索引时,会参考索引的基数,基数是MySQL估算的,反映这个字段有多少种取值,估算的策略为选取几个页算出取值的平均值,再乘以页数,即为基数。count(索引字段):可以使用覆盖索引但依然要取出数据判空。count(1):不需要取出数据,但需要判断1是否为null。count(*):经过专门优化,不需要判空,理论最快。count(非索引字段):无法使用覆盖索引,最慢。使用force index可以强制使用索引。重新统计索引信息,会重新计算索引的基数。
2024-03-08 16:49:24
522
原创 Kafka 线上问题
事情的起因是专员在 ze app 上查不到订单了,而订单数据是从 mysql 的 order_search_info 查询的,order_search_info 表的数据是从 oracel 的 BZ_ORDER_INFO 表同步过来的,查不到说明同步有问题。每消费一次订单表的数据,就会新创建一个线程池,核心线程数为10,不断创建线程导致内存和CPU不断飙升,消息不能正常消费,后续消费消息改成使用一个固定的现成池后,消息正常消费。首先看日志,有如下两种情况。而 CPU 持续飙升的容器,消费的是订单表的数据。
2024-01-17 16:02:33
918
原创 前缀和与差分:区间查询和修改
我们先来了解一下前缀和的概念,一个长度为 n 的数组 a[0]~a[n-1],它的前缀和 sum[i] 等于 a[0]~a[i] 的和。利用递推,可以在 O(n) 时间内求得所有前缀和:sum[i] = sum[i-1] + a[i]题目来源:LeetCode 1009。题目来源:LeetCode 209。思路:前缀和 + 二分。
2024-01-08 14:29:03
495
原创 双指针:反向扫描和同向扫描
题目描述:给定一个长度为n的数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组。把同向扫描的 i, j 指针称为‘快慢指针’,快慢指针主要用来解决链表中的问题,比如判断链表是否有环。同向扫描:i 和 j 方向相同,都从头到尾,速度不同,让 j 跑在 i 前面。反向扫描:i 和 j 方向相反,i 从头到尾,j 从尾到头,在中间相会。
2024-01-07 18:13:24
597
原创 ElasticSearch 聚合统计
按照某个字段的范围进行聚合,from提供区间下界(包括),to提供区间上界(不包括)桶聚合:将文档分成不同的桶,桶的划分可以根据字段的值,范围,日期间隔。管道聚合:把桶聚集统计的结果作为输入来继续做聚集统计。度量聚合:求字段的平均值,最小值,最大值,总和等。聚集被命名为 avg_age。按照某个字段的值进行聚合。
2023-12-26 17:07:45
757
原创 ElasticSearch 原理分析
MySQLIndexTableDocumentRowFieldColumnMappingSchemaQuery DSLSQL去重 distinctreindex数据迁移。
2023-12-26 16:17:29
660
原创 ElasticSearch 文档操作
批量操作对json有严格的要求,每个json串不能换行,只能放在同一行,相邻的json串之间必须要有换行。每个操作必须是一对json串(delete语法除外)
2023-12-26 15:37:50
849
原创 ElasticSearch 文本分析
自定义分析器可以用到的参数如下参数名解释type分析器类型,对于自定义分析器,可以使用custom 或忽略此参数tokenizer内置的或定制的分词器,必须的可选的内置的或定制的字符过滤器数组filter可选的内置的或定制的分词过滤器数组。
2023-12-26 10:37:09
619
原创 ElasticSearch 查询数据
terms query 和 term query 基本一样,terms query 允许在参数中传递多个查询词。Exists query 用于查询某个字段不为空的数据。如下所示,查询 age 不为空的 数据。通过 _id 字段查询数据。
2023-12-25 15:17:20
805
原创 ElasticSearch 集群搭建
分发完成后,其他集群节点都需要修改配置文件server.properties中的 broker.id 和listeners 参数。在kafka-server-start.sh中加上export JMX_PORT=“9999”,分发到各个节点,然后重启即可。我在本地mac上启动代码调试时报了如下一个错误,拉取不到元数据,搜了一下是因为本地hosts文件没有配置域名映射的关系。执行 zk.sh start 都正常启动了,但是执行zk.sh status 显示如下。为了方便启动和关闭集群,写一个脚本zk.sh。
2023-12-19 10:18:26
1396
原创 node.js学习笔记
package-lock.json:用来记录node_modules目录下每一个包的下载信息,包括包的名字,版本号,下载地址等。初次安装包完成后,在项目文件夹下多一个叫做node_modules的文件夹和package-lock.json的配置文件。node_modules:用来存放已安装到项目中的包,require()导入第三方包时,就是从这个目录查找并加载包。输入如下内容,输出版本号,说明安装node的时候把npm也安装好了。项目包:项目中node_modules目录中包含的包,都是项目包。
2023-06-05 20:41:03
857
原创 Kafka 性能调优
至少一次(At Least Once)= ack级别设置为-1+分区副本大于等于2+ISR里应答的最小副本数量大于等于2。生产者如何提高吞吐量。
2023-04-29 11:23:01
971
原创 数学在算法中的应用:组合数学
名词介绍AR分区中的所有副本ISR与 leader 保持同步状态的副本合集,LEO每个分区中最后一条消息的下一个位置HWISR中最小的LEO即为HW,俗称高水位,消费者只能拉取到HW之前的消息。
2023-04-17 22:53:41
210
原创 Kafka 消息存储
创建topic 副本数为3 分区数位3 ./kafka-topics.sh --create --zookeeper s1:2181 --replication-factor 3 --partitions 3 --topic test # 创建topic 副本数为1 分区数位3 ./kafka-topics.sh --create --zookeeper s1:2181 --replication-factor 1 --partitions 3 --topic orders1s2s3。
2023-04-17 22:08:51
277
原创 数学在算法中的应用:数论和线性代数
Coordinator有什么作用?每个 Consumer Group 都会选择要一个 Broker 作为 Coordinator,负责监控消费组里各个消费者的心跳,以及判断是否宕机,开启rebalance如何确定Coordinator。
2023-04-16 19:22:16
313
1
原创 Kafka 消息发送
参数名描述默认值格式为host1:port1,host2:port2,…retries0acks可选值为[all, -1, 0, 1]1batch.sizebatch的大小,默认为16kb,如果batch太小,会导致频繁网络请求,吞吐量下降,如果batch太大,会导致一条消息需要等待很久才能被发送出去16klinger.ms超过linger.ms指定的时间,batch还没满,也会被发送出去,避免消息的延迟太长0限制发送出去的消息大小1m。
2023-04-16 18:21:05
1344
原创 Kafka 消息消费
[0]https://learn.lianglianglee.com/%E4%B8%93%E6%A0%8F/Kafka%E6%A0%B8%E5%BF%83%E6%8A%80%E6%9C%AF%E4%B8%8E%E5%AE%9E%E6%88%98/18%20%20Kafka%E4%B8%AD%E4%BD%8D%E7%A7%BB%E6%8F%90%E4%BA%A4%E9%82%A3%E4%BA%9B%E4%BA%8B%E5%84%BF.md[1]https://juejin.cn/post/686482881
2023-04-08 16:43:52
637
原创 并发工具类:线程池execute和submit有什么区别
使用工具类创建线程池上一节我们已经自己实现了一个线程池,本节我们看看JDK提供的线程池是如何实现的?public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, .
2022-04-09 14:34:25
1680
1
原创 并发工具类:Future获取异步执行结果
有了Runnable为什么要搞个Callable?public void run() { // 状态不是 NEW 说明任务没被执行过,或者已经被取消 if (state != NEW || !UNSAFE.compareAndSwapObject(this, runnerOffset, null, Thread.currentThread())) return; try { .
2022-04-08 22:20:37
1333
原创 并发容器:HashMap(JDK1.8)
JDK1.8源码构造函数public HashMap(int initialCapacity, float loadFactor) { if (initialCapacity < 0) throw new IllegalArgumentException("Illegal initial capacity: " + initialCapacity); if (initialCap.
2022-04-07 17:04:11
1797
原创 并发容器:ConcurrentHashMap(JDK1.8)
JDK1.8源码构造函数public ConcurrentHashMap(int initialCapacity, float loadFactor, int concurrencyLevel) { if (!(loadFactor > 0.0f) || initialCapacity < 0 || concurrencyLevel <= 0) throw new IllegalArgumentExceptio.
2022-04-07 17:00:44
1182
原创 MySQL实战:为什么选择这个执行计划?(optimizer trace)
CREATE TABLE `demo_table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `val` int(11) NOT NULL, `name` varchar(20) NOT NULL, PRIMARY KEY (`id`) USING BTREE, KEY `idx_val` (`val`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into demo_table (val, name.
2022-03-30 22:59:52
581
原创 MySQL实战:数据是如何进行存储和查询的?
MySQL数据存储和查询流程这些数据最终会持久化到文件中,那么这些数据在文件中是如何组织的?难道是一行一行追加到文件中的?其实并不是,数据其实是存到页中的,一页的大小为16k,一个表由很多页组成,这些页组成了B+树页:页是innodb磁盘管理的基本单位,innodb每个页的大小为16k区:由64个连续的页组成,每个页的大小为16kb,即每个区大约为1MB段:常见的段有数据段(B+树页节点),索引段(B+树非页节点),回滚段等参考博客...
2022-03-26 14:44:06
1743
原创 MySQL实战:MySQL有哪些锁?
并发场景最近做了一些分布式事务的项目,对事务的隔离性有了更深的认识,后续写文章聊分布式事务。今天就复盘一下单机事务的隔离性是如何实现的?隔离的本质就是控制并发,如果SQL语句就是串行执行的。那么数据库的四大特性中就不会有隔离性这个概念了,也就不会有脏读,不可重复读,幻读等各种问题了对数据库的各种并发操作,只有如下四种,写写,读读,读写和写读写-写事务A更新一条记录的时候,事务B能同时更新同一条记录吗?答案肯定是不能的,不然就会造成脏写问题,那如何避免脏写呢?答案就是加锁读-读MySQL读操.
2022-03-25 19:37:36
2043
1
原创 MySQL实战:MVCC是如何实现的?
MVCC有啥作用?对于使用InnoDB存储引擎的表来说,聚集索引记录中都包含下面2个必要的隐藏列trx_id:一个事务每次对某条聚集索引记录进行改动时,都会把该事务的事务id赋值给trx_id隐藏列roll_pointer:每次对某条聚集索引记录进行改动时,都会把旧的版本写入undo日志中。这个隐藏列就相当于一个指针,通过他找到该记录修改前的信息如果一个记录的name从貂蝉被依次改为王昭君,西施,会有如下的记录,多个记录构成了一个版本链先回顾一下隔离级别的概念,这样看后面的内容不至于发懵√ .
2022-03-25 19:30:41
425
原创 MySQL实战:根据成本选择执行计划
CREATE TABLE `demo_table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `val` int(11) NOT NULL, `name` varchar(20) NOT NULL, PRIMARY KEY (`id`) USING BTREE, KEY `idx_val` (`val`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into demo_table (val, name.
2022-03-25 18:14:35
614
原创 MySQL实战:Buffer Pool 提高页的访问速度
Buffer pool的构成如下如何知道哪个缓存页没有使用?单纯的lru链表有很多问题mysql> SHOW VARIABLES LIKE 'innodb_old_blocks_pct';+-----------------------+-------+| Variable_name | Value |+-----------------------+-------+| innodb_old_blocks_pct | 37 |+-------------..
2022-03-25 15:09:50
1896
原创 MySQL实战:group by 语句怎么优化?
参考博客[1]https://mp.weixin.qq.com/s/EybebcYX4i13r5nDRG14fg[2]https://juejin.cn/post/7053966777088213005
2022-03-24 20:46:39
369
原创 MySQL实战:order by 语句怎么优化?
介绍参考博客[1]https://mp.weixin.qq.com/s/yUrq3UfCKP91jRp9VEFT6w
2022-03-24 20:19:44
5153
mybatis-generator-core-1.3.5.jar
2019-08-15
将doc文件批量转为docx文件,用python将doc文件批量转为docx文件
2017-12-28
Spring MVC学习指南
2017-10-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人