- 博客(9)
- 收藏
- 关注
原创 解决redis缓存过期,大量请求轮流查询数据库并写入redis问题
上面代码表示的是查询最后5条数据,如果redis中存在的话就直接redis中读取,如果不存在的话就让一个线程去查询数据库并写入redis,高并发情况下,如果还没把数据写入redis中又来了请求,redis中找不到就会进入else中,这样就有很多线程都在等待拿到锁,其他线程因为拿不到锁所以等待,然后第一个线程查询完后把数据放到redis,接下来的线程就不用再去执行查询数据库并写入redis,直接走if从redis中读取。
2023-11-04 15:07:48
101
1
原创 工厂设计模式
接下来使用工厂模式,把Factory工厂类改为接口,写了一个用来创建手机的方法,AppleFactory表示专门生产苹果手机的工厂,HuaweiFactory表示专门生产华为手机的工厂,实现了Factory,这样子如果要新增新手机的话就不用去改代码了,只需要新建一个手机类去实现工厂接口就可以了,这就是可扩展性,能扩展绝不改代码。注意,苹果手机还是华为手机都要实现同一个手机接口Phone,因为Factory中的getPhone的返回值是Phone,这就是多态的思想。要加新手机就要在工厂里面加代码。
2023-11-02 14:12:37
32
1
原创 wait(),notify(),notifyAll()的使用
如果thread线程抢到锁,先输出“1”,然后调用锁的wait()方法,注意这里必须是调用锁的wait方法,就是object.wait(),注意一定要捕获异常不然报错,一旦调用了wait方法,thread线程进入等待,就会释放锁,object被释放了,然后线程thread2就会拿到object锁,开始执行,输出“2”,然后调用notifyAll()方法,表示唤醒所有以object为锁的线程,于是thread线程被唤醒执行输出“3”,notify()方法表示随机唤醒一个以object为锁的线程。
2023-10-29 12:36:57
39
1
原创 spring自动装配相关问题
Qualifier("")就是根据名字去找bean,按道理spring中有2个类型一样bean,而且也没有名字为s1的bean,但是上面代码不会报错,因为加了@Qualifier("")注解,如果不加默认用”s1“去spring找名字为”s1“的bean,但加了 @Qualifier("bean1"),表示去spring中找名字为”bean1“的bean,所以找到了就不报错了。那如果非要定义参数名字和bean名字不同的bean怎么办呢?可以在@Bean(”“)中加上你想要的名字,上面代码可以正常注入。
2023-10-25 20:40:58
34
1
原创 对list中的类按照指定规则进行排序
重写compareTo接口,这里的排序规则是按id从小到大排序,如果id一样就按score从大到小排序。类要实现Comparable<Student>接口,注意要规定泛型。
2023-10-20 12:50:38
44
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人