- 博客(9)
- 资源 (1)
- 收藏
- 关注
原创 更新缓存时,是先清缓存还是先更新数据库?
更新缓存时,是先清缓存还是先更新数据库?先清缓存?先清除缓存,再更新数据库的方式显然是不行的,可能存在数据永远不正确的情况。先更新数据库?先更新数据库再清缓存的方式,虽然可能会存在少数的错误数据的情况,但是相对来说,后续的查询可以得到更新的值。最后,要解决这种缓存不一致的情况,可以选择加锁的方式,将线程A的操作放入锁中,使其作为原子操作,线程B的操作也加入锁。
2022-05-31 23:07:00
989
1
原创 JAVA并发编程-基础知识
第四章 JAVA并发编程4.1 并发编程基础知识4.1.1 优缺点优点:充分利用多核CPU的计算能力。缺点:会出现内存泄漏、上下文切换、线程安全、死锁等问题。4.1.2并发编程三要素1 可见性,一个线程对共享变量的修改,另一个线程能够立刻看到。(synchronized,volatile)2 有序性,程序执行的顺序按照代码的先后顺序执行。(处理器可能会对指令进行重排序)3 原子性,原子,即一个不可再被分割的颗粒。原子性指的是一个或多个操作要么全部执行成功要么全部执行失败。出现线程
2022-05-28 20:17:00
123
原创 报错:Failed to configure a DataSource: ‘url‘ attribute is not
Description:Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.Reason: Failed to determine a suitable driver classAction:Consider the following:If you want an embedded database (H2, HSQL o
2021-09-01 11:18:53
226
原创 Java8流库
1 从迭代到流的操作处理集合时,我们通常会用迭代遍历他的元素再进行某项运算,如求和、统计、获取元素等。当使用stream流时,我们不必扫描整个代码去查找或者过滤操作,方法名就可以直接告诉我们其代码完成什么操作。而且,循环需要非常详细地制定操作的顺序,而流却能够以其想要的任何方式来调用这些操作。简单来说,流遵循了“想做什么而非怎么做”的原则。同时,仅将stream改为parallelStream就可以让流库以并行的方式进行过滤和技术。1.1 流和集合的差异1 流并不存储元素,这些元素可能存储在底层的
2021-08-27 15:26:48
195
原创 Spring学习
1 Spring简介Spring是一个分层的Java SE/EE应用full-stack轻量级开源框架,以 IOC(Inverse Of Control 控制反转)和AOP(Aspect Oriented Programming 面向切面编程)为内核,提供了表现层和持久层以及业务层事务管理等众多的企业级应用技术,还能整合众多开源框架和类库。优势: 方便解耦,简化开发 AOP的支持 声明式事务的支持 方便程序的测试 方便集成各种优秀框架 降低JavaEE API的使用难度2 IOC容器原
2021-08-24 23:33:59
81
原创 Java泛型
1 什么是泛型java推出泛型前,程序员可以构建一个object类型的集合,但是在使用时需要明确知道每个元素的类型,否则容易造成ClassCastException。Java泛型时JDK5中引入的一个新特性,泛型的本质就是参数化类型,也就是所操作的数据类型被指定为一个参数。泛型的好处是,类型安全,消除了类型的强制转换。2 泛型类、接口2.1 泛型类2.1.1 泛型类的定义语法class 类名<泛型标识,泛型标识,...>{ private 泛型标识 变量名; ......
2021-08-22 23:54:45
136
原创 PowerMock--Mock静态方法
1 PowerMock使用的前提条件第一步 导入依赖 <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito2</artifactId> </dependency> <dependency> <groupId>org.powermock<
2021-08-18 10:34:59
13078
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人