- 博客(58)
- 收藏
- 关注
原创 缓存和数据库一致性
项目的难点是如何保证缓存和数据库的一致性。无论我们是先更新数据库,后更新缓存还是先更新数据库,然后删除缓存,在并发场景之下,仍然会存在数据不一致的情况(也存在删除失败的情况,删除失败可以使用异步重试解决)。有一种解决方法是延迟双删的策略,先删除缓存,再更新数据库,然后休眠一会儿,再删除一次缓存,这样做可以提高提高数据的一致性,但是,延迟的时间是要根据业务需求决定的,需要谨慎设置,同时由于删除了两次缓存,导致性能下降。这个项目中选择的是。
2024-01-13 17:46:03
1315
2
原创 cmd运行jar包,txt文件中文乱码问题
java -Dfile.encoding=utf-8 -jar jar包名称。首先,查看我们自己新建的txt文件的编码。不需要修改cmd窗口的编码。
2023-09-22 14:56:56
621
原创 力扣HOT100.4,两个正序数组的中位数,拓展寻找第K小
前面都是使用了合并数组的方式,时间复杂度为O(m+n),而我们并未利用到这两个有序数组的。这种将两个数组通过list结合起来,引入了新的空间,执行用时和内存消耗都比较大。详细的描述可以参考leetcode原作者的解释,这里不做详细介绍(解法三)第二种合并方法是通过一个新的数组进行合并,一定程度上缩小了执行时间。解析:第一种方法,先将两个数组合并为一个升序数组,然后找中位数。合并数组 = [1,2,3] ,中位数 2。请你找出并返回这两个正序数组的。的正序(从小到大)数组。
2023-08-24 15:43:32
115
原创 e学习笔记
自定义注解中有三个元注解@Target,@Retention,@Document/*** 系统日志注解*/@Target(ElementType.METHOD) 表示只能在方法上声明@Retention 元注解 注解标记其他的注解用于指明标记的注解保留策略首先要明确生命周期长度 SOURCE < CLASS < RUNTIME ,所以前者能作用的地方后者一定也能作用。
2023-08-15 11:23:21
587
原创 volatile关键字和ThreadLocal
线程之间的共享变量存储在主内存中(Main Memory)中,每个线程都一个都有一个私有的本地内存(Local Memory),本地内存中存储了该线程以读/写共享变量的副本。所以当一个线程把主内存中的共享变量读取到自己的本地内存中,然后做了更新。在还没有把共享变量刷新的主内存的时候,另外一个线程是看不到的。没有被外部强引用的情况下,在垃圾回收的时候,key 会被清理掉,而 value 不会被清理掉。1.线程的可见性:当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。类正是为了解决这样的问题。
2023-06-26 17:39:13
535
原创 商城知识点2
配置登录拦截器,同时配置对应的·Webconfig,将登录拦截器添加到WEB配置中。添加订单页的各项数据,比如收货人信息、商品信息、价格信息等,最后提交订单。订单支付要判断用户是否登录,可以采用登录拦截器。下单失败回到订单确认页重新确认订单信息。下单成功来到支付选择页。
2023-03-24 16:50:24
107
原创 商城项目知识点
客户端访问的资源包括动态资源和静态资源,如果访问这些资源都需要通过nginx、网关,调用相应的服务,就会造成性能较差,因此,我们采用动静分离,将静态资源放在nginx,当我们访问这些静态资源时,niginx直接返回给我们。但是由于分布式项目,项目会部署在多个服务器上,当访问时,会随机访问一个,并将数据库的数据放在本地缓存中,但是如果访问另一个,则它的本地缓存中没有数据,还得再去数据库中查找。:方法A里面调用了方法B,A和B都需要加同一个锁,当调用方法A时,加锁,而B看到A加了锁,他就不需要再次加锁。
2023-03-13 11:12:48
746
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人