- 博客(134)
- 资源 (1)
- 收藏
- 关注
原创 BeanPostProcessor和BeanFactoryPostProcessor
实现接口BeanFactoryPostProcessor可以在实例化前作操作,根据业务修改配置。BeanPostProcessor和BeanFactoryPostProcessor都是Spring初始化bean的时候提供的拓展点,也叫做后置处理器。BeanFactoryPostProcessor在bean实例化前被调用,BeanPostProcessor在实例化后被调用。实现接口BeanPostProcessor可以在实例化之后,初始化前后添加自定义逻辑。
2023-09-08 14:17:29
283
1
原创 Error和Exception的区别
error和exception都继承Throwable。error一般无法处理,编码时的异常,问题很严重。exceptiion指程序本身可以处理的异常。
2023-09-07 13:09:52
218
原创 MP消息堆积怎么处理
2.如果topic中管道的数量大于消费者的数量,先对消费者扩容,多个消费者可以消费堆积的消息。3.加一个临时的topic,把堆积的消息丢到临时topic,在启动临时消费者去消费堆积的消息。mq消息堆积一般由于消费者消费不及时导致。
2023-09-07 11:30:16
81
原创 static和final的作用
被final修饰的类不能被继承,被final修饰的方法不能被重写。被final修饰的变量必须初始化,初始化之后不能修改。静态修饰符,用来修饰成员变量,成员方法。修饰类,修饰成员变量,局部变量。
2023-09-07 11:23:51
121
原创 Resource和Autowired的区别
2.Resource是Java自带的;Autowired是Spring的,默认依赖对象一定要存在,如果要允许空值,可以设置required为false。3.Resource默认通过name查找,Autowired默认根据type查找,也可以加上Qualifier注解根据name查找。1.Resource和Autowired都能作用在字段或者setter方法上。
2023-09-07 11:13:21
294
原创 分库分表相关的
结合rdis的rehash场景,用一个游标index确定数据迁移,index是旧数据,index之后是新数据,要更新的数据如果在index之前就插入在分库分表中,如过大于index就在旧库中操作。单表数据量太大,按照一定规则,把数据存到不同的表中,但是这些表还在同一个库。单个数据库到达瓶颈,把业务表垂直拆分,比如用户表和订单表放在不同的数据库。在分库分表时,同时有新数据不断插入和增删改查,如何不停机迁移数据?把单张表的数据切分到多个服务器。表中列字段过多,把不常用的数据较大的字段拆分到其他表。
2023-09-07 11:07:12
80
原创 数据库分析工具explain
eq_ref:主键索引(primary key)或者非空唯一索引(unique not null)等值扫描。2.select_type:查询类型,有三种,simple简单查询,primary,subquery等。index:索引树扫描 * ALL:全表扫描(full table scan)system:系统表,少量数据,往往不需要进行磁盘IO。5.possible_key:推荐走的索引。7.key_len:索引里使用的字节数。ref:非主键非唯一索引等值扫描。6.key:实际走的索引。
2023-09-07 10:37:34
363
1
原创 排查OOM导致的CPU飙高
加参数 HeapDumpOnOutOfMemory 在发生OOM时打印堆快照文件,后缀hport。jstack pid | grep 线程16进制 -C10 --color。用jdk自带工具jvisualVM查看对快照文件。把线程pid转换为对应的16进制数字。找到占用CPu高的进程号pid。查看堆栈信息,发现gc过多导致。一.查询占用CPU最高的进程。二.查询占用CPU最高的线程。三.查询线程的堆栈信息。
2023-09-05 20:21:58
146
原创 Http和Https的区别
Http是明文传输,Https是SSL加密传输。Http端口是80,Https是443。Https协议需要用到CA证书。
2023-09-05 20:03:51
63
原创 浏览器输入www.baidu.com发生了什么
递归搜索:浏览器向DNS服务器发送域名,DNS服务器从根域名开始搜索,从com出发到baidu的域名服务器,查到和域名对应的ip地址。否则向上一级DNS服务器查询,直到DNS根服务器。如果DNS失败,浏览器提示域名找不到或者DNS错误。查找浏览器本地缓存,如果浏览器由本地缓存且未过期则返回结果。4.服务器通过HTTP响应把首页的html文件发送给浏览器。6.浏览器首页解析html文件并展现给用户。3.浏览器发送HTTP请求(三次握手)2.浏览器和服务端建立TCP连接。5.TCP释放连接(四次挥手)
2023-03-15 10:13:49
191
原创 Java线程池优化思路
一般用数组型任务队列ArrayBlockingQueue和链表型队列LinkedBlockingQueue,ArrayBlockingQueue的读锁和写锁公用一把锁,而LinkedBlockingQueue的读锁和写锁是分开的,因此LinkedBlockingQueue效率更高。根据服务器配置调整核心线程数,最大线程数和阻塞队列的大小。当线程池的线程阻塞,会导致线程池效率变低,可以使用非阻塞IO,比如NIO和AIO等。抛弃队列最前面的任务,重新提交被拒绝的任务:适用于处理速率蛮,提交速率快的场景。
2023-03-09 20:26:32
505
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人