热文前后端分离是如何做的
在前后端分离架构中,后端只需要负责按照约定的数据格式向前端提供可调用的 API 服务即可。前后端之间通过 HTTP 请求进行交互,前端获取到数据后,进行页面的组装和渲染,...
热文集群与负载均衡的算法与实现
什么是负载均衡呢?用户输入的流量通过负载均衡器按照某种负载均衡算法把流量均匀的分散到后端的多个服务器上,接收到请求的服务器可以独立的响应请求,达到负载分担的目的。从应用场...
热文Session 分布式方案
## 基于 nfs(net filesystem) 的 Session 共享 将共享服务器目录 mount 各服务器的本地 session 目录,session 读写受共...
热文 Spring 框架中用到了哪些设计模式
代理模式:在 AOP 和 Remoting 中被用的比较多。 单例模式:在 Spring 配置文件中定义的 Bean 默认为单例模式。 模板方法:用来解决代码重复的问题。...
热文Spring MVC 启动流程
在 web.xml 文件中给 Spring MVC 的 Servlet 配置了 load-on-startup,所以程序启动的时候会初始化 Spring MVC,在 Ht...
热文Spring MVC 运行流程
Spring MVC 将所有的请求都提交给 `DispatcherServlet`,它会委托应用系统的其他模块负责对请求进行真正的处理工作。 - `DispatcherS...
热文如何自定义注解实现功能
1. 创建自定义注解和创建一个接口相似,但是注解的 `interface` 关键字需要以 `@` 符号开头。 2. 注解方法不能带有参数; 3. 注解方法返回值类型限定为...
热文Spring 事务底层原理
由于 Spring 解决的问题是对单个数据库进行局部事务处理的,具体的实现首相用 Spring 中的 IOC 划分了事务处理单元。并且将对事务的各种配置放到了 IOC 容...
热文动态代理(CGLIB 与 JDK)
JDK 动态代理类和委托类需要都实现同一个接口。也就是说只有实现了某个接口的类可以使用 Java 动态代理机制。但是,事实上使用中并不是遇到的所有类都会给你实现一个接口。...
热文Spring AOP 实现原理
Spring AOP 中的动态代理主要有两种方式,**JDK 动态代理** 和 **CGLIB 动态代理**。JDK 动态代理通过反射来接收被代理的类,并且要求被代理的类...
热文谈谈Java Spring AOP
面向切面编程,在我们的应用中,经常需要做一些事情,但是这些事情与核心业务无关,比如,要记录所有 update 方法的执行时间时间,操作人等等信息,记录到日志, 通过 Sp...
热文Spring IOC 如何实现
Spring 中的 `org.springframework.beans` 包和 `org.springframework.context` 包构成了 Spring 框架...
热文Spring Bean 的生命周期
Spring Bean 的生命周期简单易懂。在一个 bean 实例被初始化时,需要执行一系列的初始化操作以达到可用的状态。同样的,当一个 bean 不在被调用时需要进行相...
热文Java BeanFactory 和 ApplicationContext 有什么区别
BeanFactory 可以理解为含有 bean 集合的工厂类。BeanFactory 包含了种 bean 的定义,以便在接收到客户端请求时将对应的 bean 实例化。...
热文Java 乐观锁的业务场景及实现方式
每次获取数据的时候,都不会担心数据被修改,所以每次获取数据的时候都不会进行加锁,但是在更新数据的时候需要判断该数据是否被别人修改过。如果数据被其他线程修改,则不进行数据更...
热文Java ABA 问题
CAS 会导致“ABA问题”。 CAS 算法实现一个重要前提需要取出内存中某时刻的数据,而在下时刻比较并替换,那么在这个时间差类会导致数据的变化。 比如说一个线程 o...
热文Java CAS 乐观锁
CAS 是项乐观锁技术,当多个线程尝试使用 CAS 同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失...
热文Java synchronized 与 lock 的区别
synchronized(隐式锁):在需要同步的对象中加入此控制,synchronized 可以加在方法上,也可以加在特定代码块中,括号中表示需要锁的对象。 lock(显...
热文Java synchronize 实现原理
同步代码块是使用 monitorenter 和 monitorexit 指令实现的,同步方法(在这看不出来需要看 JVM 底层实现)依靠的是方法修饰符上的 ACC_SYN...
热文Java volatile 实现原理
在 JVM 底层 volatile 是采用“内存屏障”来实现的 缓存一致性协议(MESI协议)它确保每个缓存中使用的共享变量的副本是一致的。其核心思想如下:当某个 CPU...
热文Java 线程池的几种方式与使用场景
在 Executors 类里面提供了一些静态工厂,生成一些常用的线程池。 newFixedThreadPool:创建固定大小的线程池。线程池的大小一旦达到最大值就会保持...
热文Java ThreadLocal 原理分析
ThreadLocal 提供了线程本地变量,它可以保证访问到的变量属于当前线程,每个线程都保存有一个变量副本,每个线程的变量都不同。ThreadLocal 相当于提供了一...
热文谈谈Java中 CountDownLatch 与 CyclicBarrier 区别
CountDownLatch 的作用是允许 1 或 N 个线程等待其他线程完成执行;而 CyclicBarrier 则是允许 N 个线程相互等待。 CountDownLa...
热文谈谈Java中 Exchanger 原理
当一个线程到达 exchange 调用点时,如果它的伙伴线程此前已经调用了此方法,那么它的伙伴会被调度唤醒并与之进行对象交换,然后各自返回。如果它的伙伴还没到达交换点,那...
热文谈谈Java中 Semaphore 原理
Semaphore 直译为信号。实际上 Semaphore 可以看做是一个信号的集合。不同的线程能够从 Semaphore 中获取若干个信号量。当 Semaphore 对...