不肯过江东丶
爱你所爱 行你所行 听从你心 无问东西
展开
-
大聪明教你学Java | 深入浅出聊 Java 内存模型
Java 内存模型(Java Memory Model,JMM)是一种规范,用于描述多线程并发访问共享内存时的行为规则。它定义了线程如何与主内存、工作内存以及其他线程进行通信。Java内存模型的设计目标是在不同的硬件平台和操作系统上实现一致的多线程语义。它为我们提供了一组规则和保证,确保多线程程序的正确性和可预测性。那么今天大聪明就就跟大家一起聊一聊 Java 内存模型。原创 2023-08-24 15:03:17 · 129 阅读 · 0 评论 -
大聪明教你学Java | 为什么不能使用 BigDecimal 的 equals 方法做等值比较?
BigDecimal 是 java.math 包中提供的一种可以用来进行精确运算的类型。很多人都知道,在进行金额表示、金额计算等场景,是不能使用 double、float 等类型的,而是要使用对精度支持的更好的 BigDecimal。所以,很多支付、电商等业务中,BigDecimal 的使用非常频繁。而且不得不说这是一个非常好用的类,其内部自带了很多方法,如加,减,乘,除等运算方法都是可以直接调用的。除了需要用 BigDecimal 表示数字和进行数字运算以外,代码中还经常需要对于数字进行相等判断。原创 2021-11-30 15:00:59 · 12174 阅读 · 0 评论 -
大聪明教你学Java | 深入浅出聊 RocketMQ
在之前的博客中,大聪明给各位小伙伴分享了一下如何在 Win10 环境下搭建 RocketMQ,相信各位小伙伴都有了属于自己的一套 RocketMQ 环境。今天咱们书接上文,大聪明继续和大家深入浅出的聊一聊 RocketMQ。原创 2024-07-01 22:48:34 · 157 阅读 · 0 评论 -
大聪明教你学Java | 深入浅出聊 Kafka
在之前的博客中,大聪明给各位小伙伴分享了一下如何在 Win10 环境下搭建 Kafka,相信各位小伙伴都有了属于自己的一套 Kafka 环境。今天咱们书接上文,大聪明继续和大家深入浅出的聊一聊 Kafka。原创 2024-06-22 22:34:25 · 143 阅读 · 0 评论 -
大聪明教你学Java | 深入浅出聊 LinkedHashMap
在开发过程中,我们经常需要使用到哈希表(HashMap)来存储键值对数据。HashMap 提供了快速的插入、查找和删除操作,但是它并不保证元素的顺序。如果我们需要按照插入顺序或者访问顺序来遍历元素,那么 LinkedHashMap 就是一个很好的选择。LinkedHashMap 是 HashMap 的一个子类,它在 HashMap 的基础上增加了双向链表的功能。这个链表可以按照插入顺序或者访问顺序连接所有的元素。原创 2024-06-02 16:30:59 · 163 阅读 · 1 评论 -
大聪明教你学Java | 深入浅出聊联合索引
在关系型数据库中,索引是提高查询效率的重要工具。之前我们一起学习了聚簇索引和非聚簇索引,今天大聪明就再跟各位小伙伴分享一下关于联合索引的一些心得。原创 2024-03-15 07:00:00 · 52 阅读 · 0 评论 -
大聪明教你学Java | 深入浅出聊 Redis epoll 模型
Redis 是一款高性能的键值存储系统,被广泛应用于缓存、消息队列和数据持久化等场景,我们选择使用 Redis 的最主要的原因也是因为它非常快。我们之前讲解过 Redis 为什么这么快,在这里就不再过多赘述了,那么今天咱们继续深挖一下,一起深入浅出了聊一聊 Redis 底层中的 epoll I/O 多路复用模型。原创 2023-11-10 16:01:52 · 154 阅读 · 0 评论 -
大聪明教你学Java | 深入浅出聊 ConcurrentHashMap
ConcurrentHashMap 是 Java 中一种高效的、线程安全的哈希表实现,它在设计上采用了分段锁技术,将整个 Hash 桶进行了分段,每个分段上面都有锁存在。这种设计方式使得多个线程可以同时访问不同的分段,从而提高了并发性能。那么今天大聪明就就跟大家一起聊一聊 ConcurrentHashMap。原创 2023-09-01 17:17:11 · 158 阅读 · 0 评论 -
大聪明教你学Java | 深入浅出聊分布式锁
随着分布式技术的不断发展以及广泛运用,目前大部分应用软件都采用了分布式架构。在分布式系统中,我们常常需要协调各个模块的动作,如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,这个时候,便需要使用到分布式锁。那么今天大聪明就和大家一起深入浅出的聊一聊分布式锁。原创 2023-08-21 10:40:13 · 120 阅读 · 0 评论 -
大聪明教你学Java | 深入浅出聊聚簇索引和非聚簇索引
在关系型数据库中,索引是提高查询效率的重要工具。其中,聚簇索引和非聚簇索引是两种常见的索引类型。这两种索引类型各自有其优势和劣势,并且在不同的查询场景下表现出不同的性能。那么今天咱们就一起深入浅出的聊一聊聊聚簇索引和非聚簇索引。 🤞原创 2023-07-18 14:33:40 · 130 阅读 · 0 评论 -
大聪明教你学Java | 深入浅出聊 ThreadPoolExecutor
在《阿里巴巴 Java 开发手册》中有这么一个强制要求:“线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险”。那么今天大聪明就跟各位小伙伴来一起学习一下如何使用 ThreadPoolExecutor ~原创 2023-06-28 14:53:19 · 123 阅读 · 0 评论 -
大聪明教你学Java | 深入浅出聊 CopyOnWriteArrayList 原理
我们在之前的博客中讲到了可以使用 CopyOnWriteArrayList 来代替 ArrayList 应对多线程高并发的场景,那么今天咱们就深入了解一下 CopyOnWriteArrayList 的原理🧐原创 2023-06-16 15:49:21 · 196 阅读 · 0 评论 -
大聪明教你学Java | 如何实现订单30分钟未支付,系统自动超时关闭
在上一篇博客中,大聪明卖了一个关子,我们在实现订单30分钟未支付,系统自动超时关闭的时候,为什么选择延迟队列呢?有没有其他的实现方案呢?咱们书接上文,一起来看看有几种办法可以实现这个需求...原创 2023-06-09 16:08:37 · 660 阅读 · 0 评论 -
大聪明教你学Java | Spring Boot 整合 Redis 实现访问量统计
之前开发系统的时候客户提到了一个需求:需要统计某些页面的访问量,记得当时还纠结了一阵子,不知道怎么去实现这个功能,后来还是在大佬的带领下借助 Redis 实现了这个功能。今天又回想起了这件事,正好和大家分享一下 Spring Boot 整合 Redis 实现访问量统计的全过程。原创 2021-12-16 11:24:48 · 16742 阅读 · 4 评论 -
大聪明教你学Java | Spring Boot 使用自定义注解实现防止表单重复提交
表单重复提交是在多用户的 Web 应用中最常见且带来麻烦最多的一个问题。有很多的应用场景都会遇到表单重复提交问题,比如由于用户误操作,多次点击表单提交按钮;由于网速等原因造成页面卡顿,用户重复刷新提交页面,甚至会有黑客或恶意用户使用工具重复恶意提交表单来对网站进行攻击,所以说防止表单重复提交在 Web 应用中的重要性是极高的。今天就和大家分享一下如何利用自定义注解来实现防止表单重复提交。原创 2022-02-14 14:59:59 · 9690 阅读 · 3 评论 -
大聪明教你学Java | SpringBoot 整合 Activiti7 实现工作流
最近大聪明在开发智能办公系统(OA),其中的一个功能模块就是工作流审批。但是由于大聪明之前也没接触过工作流相关的内容,而且百度出来的内容几乎都是不完整的,也没办法直接借鉴,大聪明索性就硬着头皮一点一点去搭建代码,在经历了若干次挫折和失败后,也终于实现了工作流的相关功能。想到各位小伙伴在工作中可能也会遇到类似的问题,那么今天大聪明就跟大家分享一下 SpringBoot 整合 Activiti7 实现工作流的全过程。原创 2022-05-10 21:30:00 · 2093 阅读 · 0 评论 -
大聪明教你学Java | 策略模式的进阶实现方式
之前我们讲解过设计模式中的策略模式,相信各位小伙伴对策略模式也都有了一定的了解。不过,之前我们讲到的策略模式的实现方式是简单实现,那么在实际的开发过程中我们该如何去实现策略模式呢🧐 今天我们就以支付场景为例,讲讲策略模式的进阶实现方式。原创 2023-04-22 10:56:03 · 610 阅读 · 0 评论 -
大聪明教你学Java | 深入浅出聊 SpringBoot 中的 starter 机制
提到 SpringBoot 各位小伙伴肯定是不陌生了,我们几乎每天都在和它打交道,就是不知道各位小伙伴在使用 SpringBoot 的时候有没有注意过 pom.xml 中的 starter 依赖呢~ 今天大聪明就和大家深入浅出聊 SpringBoot 中的 starter 机制😊原创 2023-03-22 08:33:03 · 703 阅读 · 4 评论 -
大聪明教你学Java | 带你了解 Redis 的三种集群模式
Redis 的常用的集群方式主要有以下三种,分别是主从复制模式、哨兵模式、Redis-Cluster集群模式,那么今天我们就分别了解一下这三种集群模式的优点与缺点。原创 2023-03-08 18:13:26 · 569 阅读 · 0 评论 -
大聪明教你学Java | 带你学会如何给 MySQL 千万级大表增加索引
在我们的日常工作当中,经常会遇到需要修改数据库表结构的情况,比如增加字段、删除字段、修改字段类型,甚至是增加字段索引。尤其是针对千万级以上数据量的大表增加字段索引,如果处理不当就会往往会引发锁表的巨大隐患。特别是在生产环境中,一旦在变更表结构过程中,出现了长时间锁表,会导致用户产生的数据长时间无法正常变更到表中,进而导致服务功能异常,结果将是灾难性的。那么今天就来一起看看如何在不锁表的情况下完成大表增加索引的操作。原创 2023-02-14 09:24:37 · 3300 阅读 · 0 评论 -
大聪明教你学Java | 深入浅出聊 Mybatis 的一级缓存和二级缓存
在计算机的世界中,缓存无处不在,操作系统有操作系统的缓存,数据库也会有数据库的缓存,我们还可以利用中间件(例如 Redis)来充当缓存。 MyBatis 作为一款优秀的 ORM 框架,也用到了缓存,那么今天咱们就一起来聊一聊 Mybatis 的一级缓存和二级缓存。原创 2023-01-28 16:56:59 · 885 阅读 · 0 评论 -
大聪明教你学Java | 一文带你了解 CAP 理论
回想起大聪明刚毕业的时候,开发的都是单体应用,后来随着业务扩展,流量越来越大,单体应用扛不住高并发,就慢慢引入的分布式系统。分布式将业务拆分成子业务部署到不同的机器上,不同的机器节点通过网络进行通信,各个节点之间协作服务。随着时间的推移,分布式系统也越来越多,已经渐渐的替换掉了原来的单节点应用。不知道各位小伙伴在开发分布式系统的时候有没有听说过 CAP 理论呢?其实大聪明也不太了解什么是 CAP 理论,那么今天我们就一起看看分布式系统中的 CAP 理论... 🙇♂️原创 2023-01-03 21:48:36 · 992 阅读 · 0 评论 -
大聪明教你学Java | 带你了解 Redis 中 RDB 与 AOF 的区别
大聪明前两天刚写了一篇博客,同事看完博客后说:“写的不错,你在博客里提到了 Binlog 的三种模式,那你知道 Redis 里也有类似的东西嘛?” 大聪明听完同事的话以后突然愣住了😳 没错!大聪明果然还是不知道😂... 不过这再一次激起了大聪明的求知欲,我们今天就一起看看大聪明的求知之路💨原创 2022-12-30 17:16:06 · 587 阅读 · 0 评论 -
大聪明教你学Java | 带你了解 Binlog 实现 MySQL 主从同步的原理及实现方式
之前我们说过,大聪明新加入了一个智慧运输平台建设的项目组,在项目组中学习到了许多之前没有接触过的东西。这不,大聪明又发现平台的建设过程中使用了两套 MySQL 数据库,也就是我们常说的主从库,这时候大聪明有了一个新的疑问:“这个主库和从库是怎么保证数据一致的呢🤔?”。这个新的问题又激起了大聪明的求知欲,接下来我们一起看看大聪明的求知历程✍原创 2022-12-26 11:00:15 · 747 阅读 · 0 评论 -
大聪明教你学Java | 在支付模块中如何防止掉单和重复支付
最近大聪明加入了一个智慧运输平台建设的项目组(下面就简称运输平台),在运输平台中除了运输板块的功能以外,最重要的就是支付模块的功能,毕竟涉及到了金钱💴的交易,所以要尽可能的做到万无一失。关于支付模块的功能,我们经常听到两个问题“掉单”和“重复支付”,他们都是支付过程中的大问题,我们也要尽可能的避免此类问题的出现。那么今天大聪明就和大家分享一下,如何有效的在支付模块中避免出现“掉单”和“重复支付”的问题。原创 2022-09-29 11:40:27 · 2299 阅读 · 0 评论 -
大聪明教你学Java | SpringBoot 项目里如何在拦截器中获取 @RequestBody 参数
最近项目中来了一个新的需求:需要搞一个拦截器,对请求接口时传递过来的参数做一个加密处理。这个需求本身并不难,但是在实现功能的过程中却遇到了一个比较“棘手”的问题...原创 2022-08-23 09:42:02 · 3371 阅读 · 2 评论 -
大聪明教你学Java | Mysql 为何会引起锁表及其解决办法
锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。那么我们就一起看看什么是锁表。...原创 2022-08-07 10:04:07 · 2180 阅读 · 2 评论 -
大聪明教你学Java | 面试管:谈谈如何解决 RabbitMQ 消息丢失与消息积压
目前企业中最常用到的消息队列就是 RabbitMQ(主要是因为它在中小企业普及更早,经受的考验也更久,带来了一大批“回头客”),所以掌握 RabbitMQ 的相关技能就显得是比较重要了。我们在使用 RabbitMQ 的过程中比较常见的问题就是消息丢失、消息积压等等,所以此类问题也就成为了面试官们老生常谈的问题了... 今天就和大家分享一下我在工作过程中解决 RabbitMQ 消息丢失与消息积压的一点经验心得。...原创 2022-08-03 10:50:22 · 471 阅读 · 0 评论 -
大聪明教你学Java | 浅析红黑树
红黑树作为一种数据结构,它被应用得非常多,可能很多人不认识它,但其实它已经在默默为我们的代码在发光发热。就比如JDK 8中的HashMap就用到了红黑树(当hash值相同时,会转换为链表,链表长度超过8时,就转化成红黑树),那么正好借此机会,和大家分享一下大聪明在学习红黑树时的一些经验与心得。...原创 2022-06-13 10:10:27 · 268 阅读 · 1 评论 -
大聪明教你学Java | 深入浅出聊 JVM 调优
大家对 JVM 调优肯定不陌生,而且我们肯定听身边的小伙伴说过:在面试的时候,有的面试官就会抓住 JVM 调优这一个点不放手,会问很多关于 JVM 调优的问题,给我都问懵了。虽然面试官会将其作为一个面试的重点,但是大部分小伙伴在实际的开发过程中都很少优化过 JVM,所以也就不太了解关于 JVM 调优的知识。今天就和大家深入浅出聊聊 JVM,把我所掌握的知识跟大家分享一下。原创 2022-01-26 16:56:17 · 11956 阅读 · 8 评论 -
大聪明教你学Java | 面试官:谈谈你对 MySQL 存储引擎的见解
前几天大明白在面试的过程中因为没有回答出来 Tomcat 调优的问题就被面试官刷下来了,于是他利用假期恶补了一番后又去参加了一场面试,但是这次面试依然是以失败告终了,这次面试官又问了一个涉及到他知识盲区的问题:谈谈你对 MySQL 存储引擎的见解...原创 2022-05-05 14:55:02 · 910 阅读 · 0 评论 -
大聪明教你学Java | 面试官:请你说说 Redis 为什么这么快?
作为程序员的我们,工作中肯定避免不了和 Redis 打交道。除了日常工作以外,我们在面试的时候也常常会被问到一些关于 Redis 的问题,其中出场率最高的就是:请你说说 Redis 为什么这么快?我们都知道 Redis 很快,它QPS可达10万(每秒请求数),但是很多小伙伴知道 Redis 快仅仅因为它是基于内存实现的,对于其它原因倒不是很清楚,也就不能回答出面试官想听到的东西。那么今天咱们就一起总结一下 Redis 为什么会这么快。原创 2022-05-04 15:47:21 · 2261 阅读 · 0 评论 -
大聪明教你学Java | Spring 面试三连问
Spring 是一个优秀的框架,它让我们的开发工作变得更快捷更高效,从简单性、可测试性和松耦合性角度而言,绝大部分 Java 应用都可以从 Spring 中受益。不仅各位小伙伴在开发应用软件的时候离不开它,就连面试的过程中也常常出现它的身影。这不,前几天大明白去面试的时候,就被面试官来了一波 Spring 三连问,我们就一起来看看他被问到的这三个问题...原创 2022-04-27 21:39:06 · 1575 阅读 · 2 评论 -
大聪明教你学Java | 面试官:谈谈你在开发过程中用到的集合以及它的特点
Java 提供了大量优秀的集合实现供开发者使用,作为一名合格的程序员,我们必须要能够通过功能场景和性能需求选用最合适的集合,这也就要求开发者必须熟悉 Java 的常用集合类;除此之外,在我们面试的过程中也常常被问到关于集合的一些知识点,这也同样证明了集合的重要性,那么今天就给大家汇总一下我们常用到的集合以及各个集合的相关特点。原创 2022-04-27 15:51:48 · 260 阅读 · 0 评论 -
大聪明教你学Java | 面试官:谈谈你对 Tomcat 调优的看法
这几天大明白面试了一家新的公司,他面试结束后给大聪明发了一条消息:兄弟,Tomcat 的调优你了解不?大聪明看到这个问题之后,就开始从大脑中搜索答案,但是很遗憾,大聪明的大脑中并未存储相关知识😔... 但是大聪明并未放弃,便开启了求知之路。...原创 2022-04-26 21:52:41 · 738 阅读 · 0 评论 -
大聪明教你学Java | 深入浅出聊布隆过滤器(Bloom Filter)
数据结构没有什么不同,在应用程序中他们就像是可以组织数据的书架,不同的数据结构将为您提供不同的便利和好处,你需要仔细权衡自己的需求之后妥善的使用它们。布隆过滤器就是践行这句话的代表,那么今天就和大家深入浅出的聊聊布隆过滤器。原创 2022-04-01 16:59:56 · 1521 阅读 · 2 评论 -
大聪明教你学Java | 面试官:谈谈你对深拷贝和浅拷贝的理解
在面试的时候,如果面试官问对你说:请谈谈你对深拷贝和浅拷贝的理解,你会怎么回答这个问题呢?可能有很多小伙伴都不太理解深拷贝和浅拷贝的含义和区别,那么今天就和各位小伙伴分享一下我对二者的理解。原创 2022-03-31 16:38:31 · 1903 阅读 · 0 评论 -
大聪明教你学Java | Iterator 和 Iterable 的那些事
在面试的时候,如果面试官问你:Iterator 和 Iterable 有什么区别,你会怎么回答这个问题呢?要是一年前的我来回答这个问题的话,估计我直接就如鲠在喉、哑口无言了,不过现在的我还是能跟面试官聊上几句的,那么今天就和各位小伙伴分享一下我对 Iterator 和 Iterable 的理解。原创 2022-03-28 14:16:12 · 3090 阅读 · 0 评论 -
大聪明教你学Java | throw 和 throws 的区别你知道吗
我们在开发的过程会会遇到各种各样的异常,在 Java 中通常是把异常当作对象来处理。同时在开发中我们要求应用程序需要进行完整的异常处理,以给用户友好的提示,或者修正异常后可以让程序继续执行。我们都知道可以借助 try-catch 来捕获异常,那如何抛出异常呢?没错,就是借助 throw 和 throws 这两个关键字来处理,这两个关键字很像,那它们之间有什么区别呢?下面就听小弟娓娓道来⏩~原创 2022-03-25 10:10:21 · 3191 阅读 · 0 评论 -
大聪明教你学Java | 你因为 YYYY-MM-dd 被领导批过吗
不知道各位小伙伴在使用 YYYY-MM-dd 格式化时间的时候有没有被领导批过,但是我确实是被批过一次~ 可能有很多小伙伴都想不通,这么简单的时间格式化怎么还会出问题呢?各位请听我娓娓道来~原创 2022-03-23 09:47:26 · 3412 阅读 · 0 评论