- 博客(379)
- 资源 (1)
- 收藏
- 关注
原创 MySQL递归查询所有子集
如果您需要执行递归查询,建议您使用 MySQL 版本 8.0 或更高版本,并使用 CONNECT BY 和 START WITH 语法。请注意,MySQL 8.0 版本中,CONNECT BY 语法要求启用递归公用表表达式(Recursive Common Table Expression,RCTE)。在 MySQL 数据库中,WITH RECURSIVE 是递归查询的一种语法。相反,MySQL 提供了另一种递归查询的方法,即使用 CONNECT BY 和 START WITH 语法。
2023-09-05 07:21:13
176
原创 CHAR与VARCHAR如何选择
例如,CHAR非常适合存储密码的MD5值,因为这是一个定长的值。对于经常变更的数据,CHAR也比VARCHAR更好,因为定长的CHAR类型不容易产生碎片。例如用CHAR( 1)来存储只有Y和N的值,如果采用单字节字符集只需要一个字节,但是VARCHAR(1)却需要两个字节,因为还有一个记录长度的额外字节。事实证明有很大的优势。更长的列会消耗更多的内存,因为MySQL通常会分配固定大小的内存块来保存内部值。另外,使用VARCHAR(5)和VARCHAR(200)存储'hello'在磁盘空间上开销是一样的。
2023-09-05 07:16:27
35
原创 详谈限流、降级与熔断的区别
限流一般是在被调时生效降级是用户所享有的服务变差了熔断是在主调生效,也有一部分熔断设计是在被调生效的限流和熔断都会带来降级。
2023-09-01 00:15:00
177
原创 详谈Java中抽象类和接口的区别和使用场景
抽象类和接口都是实现多态的重要手段,但在使用时需要注意它们之间的区别和应用场景。通常情况下,如果需要定义一组相关的方法并提供默认实现,使用抽象类;如果需要定义一组行为或能力,但不需要默认实现,使用接口。总体来说,抽象类更适合用于一些有共同代码和状态的类层次结构,而接口更适合用于定义规范、实现多态以及解耦不同的类。在实际项目中,可以根据具体需求来选择抽象类和接口。抽象类和接口是 Java 中两种不同的抽象机制,它们都用于定义类的结构,但在一些方面有不同的使用场景。
2023-08-30 10:25:42
65
原创 Java中PrintStream用法
在 PrintStream 中定义的构造方法中可以清楚的发现有一个构造方法可以直接接收 OutputStream 类的实例,这是因为与 OutputStream 相比起来,PrintStream 可以更加方便的输出数据。不过需要注意的是,PrintStream 并不是线程安全,而且效率也不是很高,所以可以考虑使用线程安全的替代类,如 java.util.logging.Logger 或第三方的日志框架。在实际开发中,PrintStream 也常用于日志记录、简单的输出格式控制等。
2023-08-29 18:17:03
115
原创 罗技M720删除蓝牙连接后,蓝牙搜索列表找不到设备
因误删蓝牙鼠标(罗技M720)设备,再次添加蓝牙设备时蓝牙列表找不到设备(罗技M720)。2、按住显示屏下方的切换按钮 3 秒钟(所选通道上的 LED 将开始快速闪烁)找不到设备或连接不上的问题有很多种,具体情况要具体分析,仅供参考。3、此时再打开蓝牙列表就可以发现鼠标了。1、确保 M720 已开启。
2023-08-28 14:15:34
163
原创 Kafka 什么速度那么快
Kafka 采用了批量发送消息的方式,通过将多条消息按照分区进行分组,然后每次发送一个消息集合,看似很平常的一个手段,其实它大大提升了 Kafka 的吞吐量。
2023-08-18 09:01:32
1212
原创 Kafka中的 ISR 机制
ISR 机制的存在是 kafka 为了平衡可靠性和可用性,不指定提供高可靠或者高可用的服务,而是将决定权交给了使用者,让使用者通过参数来控制,到底要实现什么程度的高可靠与高可用。
2023-08-17 09:33:10
1057
原创 Kafka 消息发送和消费流程
Producer 端发送消息给 Broker 端Broker 将消息进行并持久化数据Consumer 端从 Broker 将消息拉取并进行消费。
2023-08-16 18:54:51
856
原创 Kafka如何保证消息⼀定能被消费
大多数MQ系统都提供了消息的确认机制,消费者在成功消费一条消息后,向MQ确认消费完成,MQ才会将消息标记为已消费。在将消息存入MQ时,可以选择持久化消息,确保即使MQ发生故障,消息也不会丢失。消息持久化通常会涉及将消息写入持久化存储,如磁盘文件或数据库。消息队列(MQ)作为一种异步通信机制,可以提供一些机制来尽量保证消息的可靠性,但并不能百分之百地保证消息一定能被消费或存储到数据库中。如果消息消费失败,消费者可以实现重试策略,尝试重新消费失败的消息,直到成功为止。这样可以保证消息最终被处理。
2023-08-16 18:54:31
1367
原创 自定义对象池
实现一个对象池时,你需要考虑几个关键方面:对象的创建、对象的管理、对象的重用、线程安全等。在实际应用中,你可能需要根据需求进行更复杂的实现,例如对象的生命周期管理、超时处理等。来管理对象池中的对象。这样可以避免频繁地创建和销毁对象,提高系统性能和资源利用率。这是一个简单的对象池示例,使用了。
2023-08-09 11:37:07
73
原创 MySQL 中的 distinct 和 group by 哪个效率更高?
在需要去除重复值而不需要聚合的情况下,可以使用 DISTINCT 来代替简单的 GROUP BY,以避免不必要的聚合操作,从而提高性能。因为它仅仅关注去除重复值,而不需要对数据进行聚合操作。在需要分组和聚合数据的情况下,GROUP BY 是更合适的选择。最终的选择应该根据你的具体业务需求和性能测试结果来决定,而且性能上的差异还取决于查询的复杂性、表的大小、索引的使用等因素。
2023-08-02 15:35:29
559
原创 Spring容器中的ThreadPoolTaskExecutor是否需要手动关闭
当容器或应用程序关闭时,Spring 会自动关闭所有的 ThreadPoolTaskExecutor Bean,同时调用 ThreadPoolTaskExecutor 的 shutdown() 方法来停止线程池的运行。这样,线程池中的线程会被正确地停止,线程池资源也会被释放。在使用 ThreadPoolTaskExecutor 作为 Spring Bean 注册到容器中后,Spring 会负责在应用程序关闭时,自动关闭所有注册的线程池,所以不需要手动关闭。
2023-07-28 11:18:24
442
原创 双亲委派作用
双亲委派机制保证了类加载的安全性和一致性,并避免了类的冲突和重复加载问题。它是 Java ClassLoader 的一个重要特性,为 Java 类的加载提供了一种高效而稳定的机制。双亲委派是 Java ClassLoader 的一种加载机制,它的作用是保证 Java 类的加载安全性和避免类的重复加载,同时实现类加载的层级结构。无论是在学习 Java 过程中还是在背涨薪秘诀时都会提到双亲委派,这里面说的最多的就是类加载机制,但却很少谈及其作用,经多方面参考,总结一下。
2023-07-28 10:31:18
69
原创 并发编程中锁的优化
在 Java 并发编程中,锁是一种常用的同步机制,用于控制对共享资源的访问。使用锁可以确保多个线程之间的互斥访问,避免数据竞争和并发问题。然而,锁的使用可能会带来一定的性能开销,特别是在高并发场景下。
2023-07-27 17:05:36
102
原创 集合中的⽆序性和不可重复性的含义
⽆序性不等于随机性 ,⽆序性是指存储的数据在底层数组中并⾮按照数组索引的顺序添加 ,⽽是根据数据的哈希值决定的。不可重复性是指添加的元素按照 equals()判断时 ,返回 false,需要同时重写 equals()⽅法和 HashCode()⽅法。
2023-07-26 11:31:13
68
原创 有哪些集合是线程不安全的?怎么解决呢?
我们常⽤的 Arraylist, LinkedList , Hashmap , HashSet , TreeSet , TreeMap , PriorityQueue 都不是线程安全的。解决办法很简单,可以使⽤线程安全的集合来代替。
2023-07-26 11:20:11
88
原创 MySQL调优总结
选择 合适的字段属性:类型、⻓长度、是否允许NULL等;尽量量把字段设为not null。 要尽量量避免全表扫描,⾸首先应考虑在 where 及 order by 涉及的列列上建⽴立索引。 应尽量量避免在 where ⼦子句句中对字段进⾏行行 null 值判断、使⽤用!= 或 <> 操作符,否则将导致引擎放弃使⽤用索引⽽而进⾏行行全表扫描 应尽量量避免在 where ⼦子句句中使⽤用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使⽤用索引⽽而进⾏行行全表扫描 i
2023-07-25 15:37:40
81
原创 MySQL插入数据时如果存在就更新,不存在就插入
需要注意的是这里的 id 字段被定义为 PRIMARY KEY,即唯一键,所以在插入时会检查唯一键冲突。如果您的表没有唯一键或没有设置合适的唯一约束,"INSERT INTO ... ON DUPLICATE KEY UPDATE" 将不会生效。想要插入一行数据,如果该数据的 id 已经存在于表中,则更新字段;如果 id 在表中不存在,则插入一行新数据。该语法在插入新行时检查是否存在唯一键冲突,如果冲突,则执行更新操作;如果没有冲突,则执行插入操作。
2023-07-20 09:52:39
913
原创 MySQL快速创建临时表
"CREATE TABLE IF NOT EXISTS" 是用于创建表的语法,如果表已经存在,则不会再次创建,而是直接忽略创建操作。如果 "orders_2022" 表不存在的情况下才会执行创建操作,并且其结构与 "orders" 表相同。"CREATE TABLE IF NOT EXISTS" 该语句在使用时,确保数据库用户具有足够的权限来执行表的创建操作。
2023-07-12 10:39:30
77
原创 SpringBoot动态控制指定的控制器类生效
使用一个属性值或变量来控制 SpringBoot 中指定 @RestController 注解标注的类生效。
2023-06-07 12:30:00
477
原创 ELK日志采集系统搭建
现在的系统大多比较复杂,一个服务的背后可能就是一个集群的机器在运行,各种访问日志、应用日志、错误日志量随着访问量和时间会越来越多,运维人员就无法很好的去管理日志,开发人员排查问题,需要到服务器上查日志,极为不方便。逐台登陆机器去查看日志特别费力,且效率慢。
2023-05-31 23:00:00
924
原创 Logstash技术栈总结
Logstash 是一个可以传输和处理你的日志、事务或其他数据的功能强大的工具,可与各种部署集成。它提供了大量插件,可帮助你解析,丰富,转换和缓冲来自各种来源的数据。
2023-05-31 20:00:00
628
原创 Filebeat技术栈总结
filebeat 是一个轻量型日志采集器,本质上是一个 agent。不依赖于任何应用,可以安装在任何节点上,可单独使用 Filebeat 并根据配置读取对应位置的日志进行上报和搜集。filebeat 内置了常用的 output 组件,例如 kafka、ElasticSearch、redis 等,也可以输出到 console 和 file。可以利用现有的 output 组件,将日志进行上报。也可以自定义 output 组件,让 Filebeat 将日志转发到我们想要的地方。
2023-05-31 15:39:57
577
原创 Windows删除文件时一直提示:文件或文件夹下在使用
重启能解决 95% 的问题。程序关闭了,删除时一直提示正在使用,导致无法删除。2、在资源监视器中关闭程序,先打开任务管理器。找到占用的程序,右击结束掉就可以了。
2023-04-22 15:02:30
185
1
原创 SublimeText打开带空格路径的文件异常解决方法
Sublime text4 添加到右键菜单打开文件的时候,打开带空格路径的文件时会打开多个窗口,且文件中没有信息。把路径用双引号扩起来。
2023-04-20 09:34:15
98
原创 SpringBoot + Redis 实现防刷限流
添加自定义AccessLimit注解,使用注解方式实现接口的限流操作。使用 AccessLimit。
2023-04-17 14:01:12
131
原创 MySQL中order by 的坑
按照 create_at 排序可能在内存中完成,也可能需要使用外部排序,取决于排序所需的内存和参数 sort_buffer_size。sort_buffer_size 是 mysql 为排序开辟的内存。如果排序数据量小于 sort_buffer_size,排序会在内存中完成。如果数据量过大,内存放不下,则会利用磁盘临时文件排序。
2023-04-13 17:15:40
411
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人