- 博客(99)
- 收藏
- 关注
转载 @Transactional 注解
当把@Transactional 注解放在类上时,表示所有该类的public方法都配置相同的事务属性信息。作用于方法:当类配置了@Transactional,方法也配置了@Transactional,方法的事务会覆盖类的事务配置信息。作用于接口:不推荐这种使用方法,因为一旦标注在Interface上并且配置了Spring AOP 使用CGLib动态代理,将会导致@Transactional注解失效。} }
2023-06-02 17:04:58 221
转载 接口重复请求问题处理方案
上面的问题其实已经是一个很不错的解决方案了,但是实际投入使用的时候可能发现有些问题:某些请求用户短时间内重复的点击了(例如1000毫秒发送了三次请求),但绕过了上面的去重判断(不同的KEY值)。原因是这些请求参数的字段里面,是带时间字段的,这个字段标记用户请求的时间,服务端可以借此丢弃掉一些老的请求(例如5秒前)。对于一些用户请求,在某些情况下是可能重复发送的,如果是查询类操作并无大碍,但其中有些是涉及写入操作的,一旦重复了,可能会导致很严重的后果,例如交易的接口如果重复请求可能会重复下单。
2023-06-02 10:32:44 768
原创 Java ThreadLocal详解
多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性。ThreadLocal 是除了加锁这种同步方式之外的一种规避多线程访问出现不安全的方法,当我们在创建一个变量后,如果每个线程对其进行访问的时候,访问的都是线程自己的变量,这样刘不会存在线程不安全问题。
2023-03-30 21:35:53 119
转载 数据库事务Read Committed (读已提交)和Repeatable Read(可重复读)到底什么区别?
事务Read Committed (读已提交)和Repeatable Read(可重复读)的区别
2023-02-07 09:22:22 759
原创 在java中加了synchronized(lock)中,调用lock.wait和直接调用wait的区别?
在java中加了synchronized(lock)中,调用lock.wait和直接调用wait的区别
2022-09-09 16:11:24 442
转载 Chrome浏览器同一窗口每次请求sessionId不同问题的一种解决办法分享
Chrome浏览器同一窗口每次请求sessionId不同问题的一种解决方法
2022-02-16 15:46:30 3269
转载 Spring中Bean的生命周期
Spring启动,查找并加载需要被Spring管理的bean,进行Bean的实例Bean实例化后对将Bean的引入和值注入到Bean的属性中如果Bean实现了BeanNameAware接口的话,Spring将Bean的Id传递给setBeanName()方法如果Bean实现了BeanFactoryAware接口的话,Spring将调用setBeanFactory()方法,将BeanFactory容器实例传入如果Bean实现了ApplicationContextAware接口的话,..
2021-11-13 15:47:07 60
原创 使用线程池的好处
**降低资源消耗。**通过重复利用已创建的线程降低线程创建和销毁造成的消耗。**提高响应速度。**当任务到达时,任务可以不需要的等到线程创建就能立即执行。**提高线程的可管理性。**线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。...
2021-11-07 21:15:12 676
转载 HTTP2的优点
HTTP2的优点1 多路复用2 二进制分帧3 首部压缩4 服务推送HTTP 2.0使用HTTP2.o测试便可看出HTTP2.0比之前的协议在性能上有很大的提升。下面总结了HTTP2.0协议的几个特性。1. 多路复用 (Multiplexing)多路复用允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。在 HTTP/1.1 协议中浏览器客户端在同一时间,针对同一域名下的请求有一定数量限制。超过限制数目的请求会被阻塞。这也是为何一些站点会有多个静态资源 CDN 域名的原因之一,拿
2021-11-06 09:54:41 1047
原创 Java中变量未初始化问题
今天遇到一个Java变量未初始化就使用的问题,后详细了解后才明白。Java中只有类成员变量才会默认初始化值。Int类型默认值为0,你定义的是方法内的局部变量,需要初始化才能进行运算。例子:public class Main { int var1 = 1; int var2; // 类成员变量 public static void main(String[] args) { int var3 = 3; Main main = new Main
2021-11-02 17:26:37 4273
转载 java程序的入口函数和初始化顺序
java程序中的入口就是main函数,jvm在运行程序的时候,会首先查找main()方法。其中public表明任何类或对象都可以访问这个方法。static表明了次方法中的代码是存储在静态存储区的,只要类被加载,就可以使用该方法而不需要实例化对象进行访问。一、 main方法的的其他写法1 由于static和public没有先后顺序关系static public void main(String[] args)2 也可以将main定义为finalpublic static final void mai
2021-11-02 17:15:33 1774
转载 Java创建对象的四种方式
1. new2. clone3. 通过反射newInstance4. 反序列化5. String s = “abc”(这个是比较特殊的)以String类为例String string = null;Class class1 = String.class;// 该方法最为安全可靠,程序性能更高。Class class2 = string.getClass();Class class3 = Class.forName(“java.lang.String”);// 可能抛出ClassNotFou
2021-11-02 17:12:01 8701 2
Maven: Unable to import maven project解决方案.pdf
2023-04-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人