自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小识的博客

放弃很容易,但坚持一定很酷

  • 博客(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 628

原创 面试官:如何保证缓存和数据库的一致性?

针对这种不一致的情况,我们可以对更新数据库和缓存的操作加一个分布式锁,这样就能保证数据的一致性。基于内存缓存利用率的角度,我们一般不会采用同步更新的操作,因为有可能更新完的缓存并不一定会马上读取,导致缓存中缓存了大量无用的数据,降低缓存命中率。为了保证缓存和数据库的实时一致,我们不能用定时任务来更新缓存,我们要同时更新数据库和缓存,对应的方案有如下两种。从上图看,还是会存在数据不一致的情况,但是在实际中这个问题出现的概率并不高,因为要满足如下3个条件。除了并发的情况,我们还需要考虑异常的情况。

2024-03-09 21:46:55 64

原创 MySQL实战:问题排查

MySQL在选取索引时,会参考索引的基数,基数是MySQL估算的,反映这个字段有多少种取值,估算的策略为选取几个页算出取值的平均值,再乘以页数,即为基数。count(索引字段):可以使用覆盖索引但依然要取出数据判空。count(1):不需要取出数据,但需要判断1是否为null。count(*):经过专门优化,不需要判空,理论最快。count(非索引字段):无法使用覆盖索引,最慢。使用force index可以强制使用索引。重新统计索引信息,会重新计算索引的基数。

2024-03-08 16:49:24 392

原创 项目架构梳理

【代码】项目架构梳理。

2024-02-17 20:48:05 184 1

原创 Netty基本组件

编码器解码器

2024-02-17 13:23:36 188

原创 Kafka 线上问题

事情的起因是专员在 ze app 上查不到订单了,而订单数据是从 mysql 的 order_search_info 查询的,order_search_info 表的数据是从 oracel 的 BZ_ORDER_INFO 表同步过来的,查不到说明同步有问题。每消费一次订单表的数据,就会新创建一个线程池,核心线程数为10,不断创建线程导致内存和CPU不断飙升,消息不能正常消费,后续消费消息改成使用一个固定的现成池后,消息正常消费。首先看日志,有如下两种情况。而 CPU 持续飙升的容器,消费的是订单表的数据。

2024-01-17 16:02:33 680

原创 分治法:分而治之

排序算法中的快速排序,归并排序都用了分治思想。题目地址:LeetCode 215。题目地址:LeetCode 50。

2024-01-08 15:02:28 421

原创 前缀和与差分:区间查询和修改

我们先来了解一下前缀和的概念,一个长度为 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 389

原创 双指针:反向扫描和同向扫描

题目描述:给定一个长度为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 417

原创 ElasticSearch 性能优化

byte < short < integer < long官网性能优化建议。

2024-01-04 16:37:53 570

原创 ElasticSearch 聚合统计

按照某个字段的范围进行聚合,from提供区间下界(包括),to提供区间上界(不包括)桶聚合:将文档分成不同的桶,桶的划分可以根据字段的值,范围,日期间隔。管道聚合:把桶聚集统计的结果作为输入来继续做聚集统计。度量聚合:求字段的平均值,最小值,最大值,总和等。聚集被命名为 avg_age。按照某个字段的值进行聚合。

2023-12-26 17:07:45 551

原创 ElasticSearch 原理分析

MySQLIndexTableDocumentRowFieldColumnMappingSchemaQuery DSLSQL去重 distinctreindex数据迁移。

2023-12-26 16:17:29 601

原创 ElasticSearch 文档操作

批量操作对json有严格的要求,每个json串不能换行,只能放在同一行,相邻的json串之间必须要有换行。每个操作必须是一对json串(delete语法除外)

2023-12-26 15:37:50 798

原创 ElasticSearch 文本分析

自定义分析器可以用到的参数如下参数名解释type分析器类型,对于自定义分析器,可以使用custom 或忽略此参数tokenizer内置的或定制的分词器,必须的可选的内置的或定制的字符过滤器数组filter可选的内置的或定制的分词过滤器数组。

2023-12-26 10:37:09 544

原创 ElasticSearch 查询数据

terms query 和 term query 基本一样,terms query 允许在参数中传递多个查询词。Exists query 用于查询某个字段不为空的数据。如下所示,查询 age 不为空的 数据。通过 _id 字段查询数据。

2023-12-25 15:17:20 523

原创 ElasticSearch 索引操作

布尔类型:可选值为 true 或 false。对象类型:一个 json 对象。

2023-12-22 17:57:19 478

原创 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 1136

原创 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 779

原创 Kafka 性能调优

至少一次(At Least Once)= ack级别设置为-1+分区副本大于等于2+ISR里应答的最小副本数量大于等于2。生产者如何提高吞吐量。

2023-04-29 11:23:01 889

原创 数学在算法中的应用:组合数学

名词介绍AR分区中的所有副本ISR与 leader 保持同步状态的副本合集,LEO每个分区中最后一条消息的下一个位置HWISR中最小的LEO即为HW,俗称高水位,消费者只能拉取到HW之前的消息。

2023-04-17 22:53:41 115

原创 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 133

原创 数学在算法中的应用:数论和线性代数

Coordinator有什么作用?每个 Consumer Group 都会选择要一个 Broker 作为 Coordinator,负责监控消费组里各个消费者的心跳,以及判断是否宕机,开启rebalance如何确定Coordinator。

2023-04-16 19:22:16 215 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 631

原创 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 203

原创 Kafka 源码阅读

1]

2023-04-08 15:39:24 106

原创 并发工具类:CompletionService有什么用?

2022-04-09 17:15:53 743

原创 并发工具类:线程池execute和submit有什么区别

使用工具类创建线程池上一节我们已经自己实现了一个线程池,本节我们看看JDK提供的线程池是如何实现的?public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, .

2022-04-09 14:34:25 1559 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 1242

原创 并发容器: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 1715

原创 并发容器: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 1111

原创 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 542

原创 MySQL实战:数据是如何进行存储和查询的?

MySQL数据存储和查询流程这些数据最终会持久化到文件中,那么这些数据在文件中是如何组织的?难道是一行一行追加到文件中的?其实并不是,数据其实是存到页中的,一页的大小为16k,一个表由很多页组成,这些页组成了B+树页:页是innodb磁盘管理的基本单位,innodb每个页的大小为16k区:由64个连续的页组成,每个页的大小为16kb,即每个区大约为1MB段:常见的段有数据段(B+树页节点),索引段(B+树非页节点),回滚段等参考博客...

2022-03-26 14:44:06 1463

原创 MySQL实战:SQL调优案例实战

介绍参考博客[1]

2022-03-26 14:10:08 1550 1

原创 MySQL实战:MySQL有哪些锁?

并发场景最近做了一些分布式事务的项目,对事务的隔离性有了更深的认识,后续写文章聊分布式事务。今天就复盘一下单机事务的隔离性是如何实现的?隔离的本质就是控制并发,如果SQL语句就是串行执行的。那么数据库的四大特性中就不会有隔离性这个概念了,也就不会有脏读,不可重复读,幻读等各种问题了对数据库的各种并发操作,只有如下四种,写写,读读,读写和写读写-写事务A更新一条记录的时候,事务B能同时更新同一条记录吗?答案肯定是不能的,不然就会造成脏写问题,那如何避免脏写呢?答案就是加锁读-读MySQL读操.

2022-03-25 19:37:36 1914 1

原创 MySQL实战:MVCC是如何实现的?

MVCC有啥作用?对于使用InnoDB存储引擎的表来说,聚集索引记录中都包含下面2个必要的隐藏列trx_id:一个事务每次对某条聚集索引记录进行改动时,都会把该事务的事务id赋值给trx_id隐藏列roll_pointer:每次对某条聚集索引记录进行改动时,都会把旧的版本写入undo日志中。这个隐藏列就相当于一个指针,通过他找到该记录修改前的信息如果一个记录的name从貂蝉被依次改为王昭君,西施,会有如下的记录,多个记录构成了一个版本链先回顾一下隔离级别的概念,这样看后面的内容不至于发懵√ .

2022-03-25 19:30:41 392

原创 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 579

原创 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 1739

原创 MySQL实战:group by 语句怎么优化?

参考博客[1]https://mp.weixin.qq.com/s/EybebcYX4i13r5nDRG14fg[2]https://juejin.cn/post/7053966777088213005

2022-03-24 20:46:39 336

原创 MySQL实战:order by 语句怎么优化?

介绍参考博客[1]https://mp.weixin.qq.com/s/yUrq3UfCKP91jRp9VEFT6w

2022-03-24 20:19:44 5000

原创 MySQL实战:explain详解(下)

explain的使用possilbe_keys针对一个表进行查询时,有哪些潜在可以使用的索引。比如你有2个索引key(x1,x2,x3)和key(x1,x2,x4),此时在where语句中要根据x1和x2进行查询,很明显2个索引都能使用,那么使用哪个索引呢?通过我们之前分享的成本优化方法,去估算使用2个索引进行查询的成本,看使用哪个索引的成本更低,就使用哪个索引,最终选择的索引就是key这个字段的值key实际使用到的索引key_len索引的长度,用于判断联合索引是否被完全使用建立如下的表.

2022-03-23 07:16:18 847

mybatis-generator-core-1.3.5.jar

支持接口和XML更名的mybatis-generator,具体使用参考 https://blog.csdn.net/zzti_erlie/article/details/99606620

2019-08-15

MongoDB权威指南第2版(书签,高清).zip

MongoDB权威指南第2版(书签,高清).zip,MongoDB权威指南第2版(书签,高清).zip

2019-05-14

Linux系统命令及Shell脚本实践指南

Linux系统命令及Shell脚本实践指南,书签,清晰,完整版

2019-04-17

Maven实战(高清完整带书签)

Maven实战高清完整带书签,Maven实战高清完整带书签,Maven实战高清完整带书签,Maven实战高清完整带书签

2018-01-09

将doc文件批量转为docx文件,用python将doc文件批量转为docx文件

用python将doc文件批量转为docx文件,用python将doc文件批量转为docx文件,

2017-12-28

Spring MVC学习指南

Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。, 本书重在讲述如何通过Spring MVC来开发基于Java的Web应用。全书共计12章,分别从Spring框架、模型2和MVC模式、Spring MVC介绍、控制器、数据绑定和表单标签库、传唤器和格式化、验证器、表达式语言、JSTL、国际化、上传文件、下载文件多个角度介绍了Spring MVC。除此之外,本书还配有丰富的示例以供读者练习和参考。, 本书是一本Spring MVC的教程,内容细致、讲解清晰,非常适合Web开发者和想要使用Spring MVC开发基于Java的Web应用的读者阅读。

2017-10-13

用Python将Word中的内容写入Excel

用Python将Word中的内容写入Excel

2017-08-28

Qt实现多语言的切换

Qt实现国际化,能切换程序的语言

2017-02-25

Qt加载字体文件删除字体文件

Qt加载自己的字体,不用系统提供的QFontComboBox

2017-02-25

Qt实现字体文件的加载和删除

Qt实现字体文件的加载和删除

2017-02-25

Qt实现语言切换

Qt实现语言切换

2017-02-23

Qt5串口助手V2.0(能记录上次打开的文件)

Qt5串口助手V2.0(能记录上次打开的文件)

2016-09-27

Qt5串口助手

用Qt5自身的类库开发的串口助手

2016-09-26

空空如也

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

TA关注的人

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