Enum使用 Enum使用统一枚举的操作,枚举类实现该接口 123456789101112131415161718192021222324252627282930import java.util.Arrays;import java.util.Optional;/** * 枚举操作接口 * @author: yecao */public interface EnumOperate { Integ 2023-01-06 后端 java高阶
filter和interceptor Filter和Interceptor的使用Filter和Interceptor的不同点 Filter是Servlet的,它主要用于对用户的请求进行预处理,也可以对ServletResponse进行后置处理. Interceptor拦截器,在AOP中用于某个方法或字段被访问前,进行拦截,然后在之前或者之后做一些拦截操作,比如日志。 从前两点就可以看出来,Filter和Interceptor的作用时机 2022-12-28 后端 java高阶
RestTemplate RestTemplate的使用配置1234567891011121314151617181920212223242526272829303132@Configurationpublic class RestTemplateConfig {// @Value("${emq.username}")// private String user 2022-12-07 后端 java高阶
wait和notify wait和notify Object的wait方法会导致当前线程进入阻塞,直到有其他线程调用notify或者notifyAll将其唤醒,或者阻塞时间到达timeout而自动唤醒 调用notify唤醒线程时不同的JVM实现是不同的, 官方的JVM是按照进入wait set的顺序进行唤醒的(将线程从wait set中进行弹出),如果是notifyAll则是将wait set中所有的唤醒 唤醒过后 2022-11-09 后端
构造者模式 构造者模式可以解决什么问题可以一定程度上保证原子性,原理是在中间加了一层,相比之前一个一个set可以防止在set过程中被其他线程拿去使用,但是这时候它并不是完整的所有会存在问题。 代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748package io.quarkivers 2022-11-09 后端 后端
深入理解Java内存模型 深入理解Java内存模型背景知识处理器 2 GHz Intel Core i5 现在的CPU基本是多核的,而且CPU 运算速度远比主存(内存)读写速度快,并且速度相差了几个数量级。所以CPU 大部分时间都在等数据从主存读取,运算完数据写回内存。 所以现代计算机在CPU和主存之间加了一层读写速度尽可能接近CPU运算速率的高速缓存来做缓冲。而且CPU还有内置的寄存器存放一些计算结果。如果cpu每次需要 2022-11-09 后端 后端框架
OS--线程 线程详解线程 在传统的操作系统中,每个进程都有一个地址空间和一个控制线程。事实上,这是大部分进程的定义。 不过,在许多情况下,经常存在同一地址空间中运行多个控制线程的情形,这些线程就像是分离的进程。 线程的使用或许这个疑问也是你的疑问,为什么要在进程的基础上再创建一个线程的概念,准确的说,这其实是进程模型和线程模型的讨论,回答这个问题,可能需要分三步来回答:•多线程之间会共享同一块地址空间和所有 2022-11-09 后端 java高阶
基于事件驱动发送email、短信 基于事件驱动发送email、短信发送邮件就发送邮件呗,为什么说是基于事件驱动呢?因为发送邮件是一个相对耗时的操作,我们基于事件驱动可以异步解耦, 同时通过@Async做一步操作降低接口的耦合性和响应时间。 spring事件驱动组成spring事件驱动由3个部分组成 1、ApplicationEvent:表示事件本身,自定义事件需要继承该类。用来定义事件 2、ApplicationEventPubl 2022-11-09 后端 java高阶
最强分布式工具Redisson 最强分布式工具Redisson什么是Redisson?一个基于Redis实现的分布式工具,有基本分布式对象和高级又抽象的分布式服务,为每个试图再造分布式轮子的程序员带来了大部分分布式问题的解决办法。 Redisson和Jedis、Lettuce有什么区别? Redisson和它俩的区别就像一个用鼠标操作图形化界面,一个用命令行操作文件。Redisson是更高层的抽象,Jedis和Lettuce是R 2022-11-05 java高阶
引用 强、弱引用强引用就是我们经常使用的引用,其写法如下 1StringBuffer buffer = new StringBuffer(); 这句话的意思是: 通过new StringBuffer创建了一个对象并在内存中开辟了一段存储空间 创建一个StringBuffer创建一个变量buffer并且指向new StringBuffer 我们可以通过buffer来使用new 的 StringBuff 2022-10-14 后端 后端