- 博客(19)
- 收藏
- 关注
原创 【3-3】springcloud
来自:https://mynamelancelot.github.io/spring-cloud/spring-cloud-gateway.html#cors。gateway注重的是动态的服务路由和服务发现。并且拥有更加灵活的扩展方式,比如自定义拦截器。
2025-03-03 17:13:31
273
原创 【3-3】mybatis
当param1为null的时候,分页参数没有被清楚,如果这个线程再次执行查询,就可能会出现不应出现的分页功能。一对多查询的时候,如果总是查多那部分,就会反复调用查询。association 一对一关联查询的延迟加载。collection 一对多查询的延迟加载。
2025-03-03 12:17:22
264
原创 【2-28】springMVC
Posthandle执行时机:在目标方法执行完之后,会return modelandview,返回给前端处理器,在返回给前端处理器之前,先走posthanle方法,也就是把modelandview给posthandle方法。多个拦截器执行顺序:当没有返回false:preHandle按配置顺序执行,posthandle和afteracomletion按配置的倒序执行。主要还是将前端控制器和处理器解耦,处理器有很多类型,有注解形式的,有接口形式的,前端控制器不用管处理器是什么类型的,统一交给适配器调用即可。
2025-02-28 16:00:42
274
原创 【2-27】spring
遍历beanDefinition,执行BeanFactoryPostProcessor接口(这个接口可以修改bean的一些元数据信息,比如修改属性值,修改@scope属性)还没有注入属性,这时候属性值都是null,比如userService,有属性userDao,这时候userDao是null。bean的元数据信息封装成beanDefinition,保存到map当中。每个bean都会执行的,不是只有实现了这个接口的bean才执行。销毁的时候就看有没有配置相关的destroy方法。也是每个bean都执行的。
2025-02-27 17:51:21
375
原创 【2-25】MQ
来自:https://xiaolincoding.com/os/8_network_system/hash.html#%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E8%99%9A%E6%8B%9F%E8%8A%82%E7%82%B9%E6%8F%90%E9%AB%98%E5%9D%87%E8%A1%A1%E5%BA%A6。指的是第三步,拉取消息的时候,采用的是长轮询的机制,在broker端没有消息的时候,不是立刻断开连接,而是等待一会,直到有消息或超时。
2025-02-25 23:39:57
889
原创 【2-24】mysql
来自:https://xiaolincoding.com/mysql/log/how_update.html#%E4%B8%BA%E4%BB%80%E4%B9%88%E9%9C%80%E8%A6%81-redo-log。
2025-02-24 16:21:17
1035
原创 【2-21】并发编程
lock锁的用法,lock,trylock,lockinterruptly。重量级锁wait set里的线程在执行notifyAll后会怎样。一个可以wait在不同的集合当中,一个只wait在一个集合。线程池shutdown和shutdownnow的区别。轻量级锁,线程会在自己的栈帧当中创建锁记录。lock锁和synchonized的区别。一个可以是公平锁,一个只能是非公平锁。调用线程会阻塞,等待目标线程执行完。线程池最大线程数包括队列中的任务么。线程池的队列可以换成普通队列么。抛异常会重置中断标志位么。
2025-02-21 17:42:26
769
原创 2-19 dubbo准备
隐藏一些接口调用的实现细节,主要是为了实现调用远程服务像调用自己的方法一样,还可以做一些增强操作,比如负载均衡、集群容错,调用的监控这些。来自:https://mp.weixin.qq.com/s/9oDy1OPcfDaEhKD4eNUdOA。来自:https://zhuanlan.zhihu.com/p/227919569。dubbo提供了多种集群容错策略,用于处理服务提供者的故障。
2025-02-19 19:59:51
646
原创 【2-17 java的IO网络模型】
使用选择器selector,一个线程就可以管理多个客户端连接,在内核内存就绪的时候,利用cpu将内核缓冲区数据复制进应用缓冲区,这个时候cpu是阻塞的,但是执行速度非常快,大概1G/s。java的NIO,很类似于普通网络模型当中的IO多路复用,采用单线程轮询就绪事件,并用不同的事件处理器处理不同的事件。数据从网络进入内核缓冲区和内核缓冲区到应用缓冲区的复制都是不阻塞的,并且都是通过回调机制实现的。优点:IO模型简单,线程可以专注于一个连接,在单机并发连接小于1000的时候性能较好。AIO(也叫NIO2)
2025-02-17 22:49:32
192
原创 【高并发思路】
第二点是假设A线程写,先删除了缓存,同时B线程读,发现缓存没有,然后读数据库(写操作通常慢于读操作,所以A还没写数据库),读完数据库(旧值)后更新缓存(旧值),然后A写数据库(新值),这就出现了不一致。3)防止主从同步延迟,从库还没更新,A线程写,写主库,canel监听主库,删除缓存,此时B线程读从库,从库还没更新,更新缓存,又出现了不一致的情况,此时缓存的是旧的数据。首先缓存过期,A线程读,去读数据库,B线程写,A读完(旧值)还没更新缓存的时候,B写数据库,然后删除缓存,然后A再更新,这就不一致了。
2024-10-04 14:05:48
375
原创 缓存知识记录
将这些key统一管理,放进公共缓存,查询的时候,先查正 常缓存,没有再查这个公共缓存,再没有再穿透到db,db中没有,回种到公共缓存。答:定期重建布隆过滤器(比如每四个小时,执行一个任务调度,生成一个布隆过滤器);base时间很难一下就设置的非常完美,需要借助经验和工具逐步把过期时间设置的完美。比如要考虑的有:缓存的更新频率;原理:就是一个二进制数组,不存在的一定不存在,存在的不一定存在。缺点是,大量没用的key占用缓存,会导致正常的缓存命中率下降。1、设置DB开关,对部分的读请求关闭,降级处理。
2024-10-04 14:05:22
281
原创 【调优实践】
执行顺序不同,占有锁的时间就不同,执行顺序1时先锁定订单的间隙锁,再锁定库存的锁,执行顺序2是先锁定库存锁,再锁定订单的间隙锁,然后在事务提交后同时释放。一个用索引了,一个全表扫描了,原因是虽然索引是顺序存储的,但是回表查询对应的主键却是随机存储的,mysql规定当范围查询达到20%以上后,考虑使用全表扫描,反而比索引的效率要高。当扩容到8时,只有12会迁移到第五张表中。如果扩容到6张表的话,此时哈希值为4的数据会迁移到第五张表,哈希值为8的需要迁移到第三张表,只有哈希值为12的不需要迁移。
2024-10-04 14:04:52
1073
原创 【从0开始学架构】
从业务角度:erp的采购模块、发票模块、商品模块从物理部署角度:nginx;mysql;web服务器从开发规范角度:MVC框架:model、view、controller。
2024-08-25 15:15:27
1602
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅