logo头像

不忘初心 方得始终

java

计算密集型 VS IO密集型

引言  在开发过程中,经常会遇到多线程的问题,解决多线程的其中一种方式就是利用线程池,其中需要开启线程的数量便成为了我们关注的焦点。JAVA中有两种并发类型:计算密集型(CUP-bound)和IO密集型(I/O-bound)。…

深入理解Spring

引言Spring在当前Java项目开发中可谓是核心,无论是SpringMVC、SpringBoot、SpringCloud都离不开Spring这个核心。自己对Spring的了解也停留在一知半解状态。…

说说Spring中的事务

引言在开发过程中,合理的使用事务是非常重要的。使用事务常常是为了维护高度的数据完整性和一致性。如果不关心数据的质量,就不必使用事务。毕竟,Java平台中的事务支持会降低性能,引发锁定问题和数据库并发性问题,而且会增加应用程序的复杂性。最近在面试中也是频频出现,在这里回顾加深一下。…

JAVA并发之锁

引言锁作为并发共享数据,保证一致性的工具,数据库中有悲观锁、乐观锁等实现。在JAVA平台同样有多种实现(如 synchronized和Lock)。这些已经写好提供的锁为开发提供了便利,让我们有了更多的选择。 …

Spring下MySQL读写分离

引言之前的文章已经说明MySQL主从/主主同步环境的搭建,接下来就是要实现在业务代码里面实现读写分离。在当前流行的SSM的框架开发的web项目下,数据库模式为主从同步的环境下编写业务代码。 …

Spring之动态代理

引言Spring主要有两大思想,一个是AOP,一个是IOC。对于Spring的核心AOP来说,动态代理机制是其核心,想要明白AOP原理,一定要了解动态代理机制。 …

Mybatis之缓存

引言Mybatis中有一级缓存和二级缓存,默认情况下一级缓存是开启的,而且是不能关闭的。一级缓存是指SqlSession级别的缓存,当在同一个SqlSession中进行相同的SQL语句查询时,第二次以后的查询不会从数据库查询,而是直接从缓存中获取,一级缓存最多缓存1024条SQL。二级缓存是指可以跨SqlSession的缓存。…

线程池之ThreadPoolExecutor

引言JAVA对于多线程的封装非常丰富,提供了多种适用于不同场景的多并发实现。但如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。这里就引入了线程池来管理线程,其中最基础、最核心的线程池要属ThreadPoolExecutor类了。…

Spring+webSocket

引言websocket 是 HTML5新增加特性之一,目的是浏览器与服务端建立全双工的通信方式,解决 HTTP请求-响应带来过多的资源消耗,同时对特殊场景应用提供了全新的实现方式,比如聊天、股票交易、游戏等对对实时性要求较高的行业领域。…