- 博客(11)
- 收藏
- 关注
原创 关于ThreadPoolExecutor使用SynchronousQueue的运行细节
因此情况应该是,插入任务2的时候由于线程池无空闲没有进行消费,offer返回false,于是执行addWorker方式提交任务(而没有经过队列),插入任务3的时候由于线程无空闲没有进行消费,offer返回false,并且addWorker也失败(因为达到了最大线程数),因此执行拒绝策略。有一个场景,核心线程数1,最大线程数2,使用SynchronousQueue,先后提交3个任务。称任务i为第i个提交的任务。
2024-07-14 16:32:11 379
原创 Spring Bean初始化流程
首先:然后对于每个Bean:主要流程来自StackOverflow一个问题,提问者发出的几张图片:具体的调用顺序来自:
2024-02-22 11:18:38 398 1
原创 MySQL中UPDATE语句存在意料之外的返回affected rows为0的情况,所以返回值也很重要!
根据测试,这种情况下丢失的Update语句会返回affected rows为0(即使重新Select可以看到满足Update条件的数据行数不为0)。
2023-11-02 21:50:35 1757
原创 MySQL5.7从JSON数组提取行的办法
MySQL 5.7 引入了原生JSON支持,但是对于MySQL一直以来缺少的不定数量列转行的能力还是没有得到满足。MySQL8.0引入了如JSON_TABLE()等函数支持JSON数组转行,但是在5.7中只能通过比较曲折的办法实现(即无法通过纯SQL实现)根据最大长度(使用UNION ALL)构造一个序号表,这一步需要借助代码拼接SQL(比如MyBatis框架可以使用。如果数量不确定则需要先实时计算出来(注意性能损耗)。如果最大序号比较固定,可以直接创建一个永久表保存序号提高效率。
2023-10-31 18:00:11 1071 1
原创 Java堆外内存管理和OOM-Killer
我层遇到过一个问题,在Docker中限制容器以1G内存运行Spring项目,将堆空间调整为800MB,项目启动失败,检查日志发现没有输出,检查系统日志时才发现触发了OOMKiller。原因可能是堆外空间不足,将堆空间调整为600MB,项目正常启动。由于这个问题涉及到的知识比较多,同时资料也相对比较零散,这里将查到的相关知识汇总在一起方便查看。
2023-09-10 17:14:34 402 1
原创 virtualBox centOS 7配置桥接模式成功经验
换成网卡的IP地址和子网前缀长度,一般是24)。参考:https://access.redhat.com/solutions/7002283。如果等很久然后失败,根据提示检查系统日志。则退出来执行命令启用网卡的ipv4(esc、:wq 保存。
2023-09-09 13:30:11 871
原创 高性能MySQL(第四版)读书笔记(自用)
仅记录个人知识盲区和个人认为有用的内容,从“Schema设计”这一章往后才开始仔细记录了笔记,因此之前的内容比较零散。由于阅读时间有限,跳过了部分章节(“备份与恢复”、“云上的MySQL”、“MySQL合规性”)
2023-08-14 09:48:46 150
原创 我对面向对象的理解
SmallTalk之父对面向对象的理解:一个个微型电脑,它们之间相互发送消息。一般又认为,方法调用是发送消息的一种形式。这些关于面向对象的讨论只谈论对象的行为,不解释对象的创建和销毁(销毁在Java里大多不用自己处理),但要讨论实际的设计,又得关注三个方面:创建、结构、行为(这是我总结的,分别对应三类设计模式)。“一个个微型电脑”,其实这个比喻隐含了这些对象是比较稳定的东西的意思,但很多对象是比另一些对象更昙花一现的,比如Request对象之于Handler一样。于是我倾向于这样理解:在面向对象程
2021-04-16 12:05:02 72
原创 SQL子句执行顺序及Having的误用
(部分)子句执行顺序:from->where筛选->group by分组(默认分一组)->对分组执行聚集函数->having筛选->select->order by->limit误用:leetcode 剑指offer176:第二高的薪水我的题解(错误答案):select Salary as SecondHighestSalaryfrom Employeehaving Salary < max(Salary)order by Sa
2021-03-31 16:08:09 122
原创 记一个Spring代理public变量的问题
前天遇到一个很奇怪的问题,在Service的PostConstruct里修改了公有成员变量的值,但获取的时候还是初始值。服务类定义大概是这样的:@Service@Slf4jpublic class PaymentService{ public int payDurationSec; @PostConstruct public void init(){ log.info("初始化前值:{}", payDurationSec); payDurationSec = 900; log.
2021-02-06 18:34:17 229
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人