learn and grow up

learn and grow up

学无止境

快速切换服务bean配置或依赖的简单框架实现样例
写在前面​ 为了满足项目SrpingBoot服务部署的时候可以不修改代码而快速切换服务内部配置如:数据源、rpc等配置,所以独自为项目开发了一套动态修改bean配置或者依赖的微服务,这里做个简单记录 正文 假如有如下需求: 动态配置的结构如下,想要按照配置的方案切换某个功能的存储方式,只需要改动配置文件并重启服务即可完成。 首先分析需要动态配合元数据结构,如下: 那么可以根据上面的思路来写代码,具体代码(因时间关系,未完全版)如下 首先是配置:application.yml 使用方法如下: 一步一步往下: /**EnableModuleConfig...
基础向-从三元运算符和字节码看java包装类的坑
写在前面​ 之前经常看资料说不推荐滥用三元运算,刚好之前研究了字节码,那么我从字节码的角度看看三元运算为什么会有坑 正文​ 直接上示例代码: 123456789101112public class HelloWord { public static void main(String[] args) throws InterruptedException { Integer a = 1; Integer b = 2; Integer c = null; Integer e = a; B...
总结es的一些规范
写在前面​ 在日常工作中总结了一些关于es的规范,特别写下来、记下来 正文 预估index的整体磁盘容量,一般大概为:源数据*3.4。1、主要包含: 副本数量:至少1个副本 索引开销:通常比源数据大10%(_all参数等未计算)。 操作系统预留:默认操作系统会保留5%的文件系统供您处理关键流程、系统恢复以及磁盘碎片等 Elasticsearch内部开销:段合并、日志等内部操作,预留20%。 安全阈值:通常至少预留15%的安全阈值。 换算下来:i. 磁盘总大小 = 源数据 (1 + 副本数量) 索引开销 /(1 - Linux预留空间)/(1 - Elasticsearch开销)/(...
深入探讨innodb中exists、in、join查询之间的区别和使用场景
写在前面​ 前几天生产上出现了一条慢sql,执行时长长达150多秒,经过一天多的分析,找出来sql写法的问题及解决方法,并且在深入研究下,延伸出来很多知识点,特意记录下。 ​ 本文篇幅较长,需要耐心看下来~ 正文​ 话不多说直接进入主题,慢sql如下:(做了部分脱敏处理) 12345678910111213141516171819202122232425262728293031323334SELECT st.state state, di.created_time creatTime FROM d_table di, iiap_device_state st WHER...
快速在linux排查java中cpu飙升线程或代码位置的方法
写在前面​ 上周linux生产上flink任务出现了cpu飙升的情况,找到了一套快速实时定位耗费cpu代码的方法,最终找到出现bug的代码位置,并紧急修复了bug。虽然比较简单,还是需要记录下,以防不时之需。 正文 示例代码如下: 运行后,使用top命令看到cpu飙升,并得到pid 拿着pid在使用top -h -p pid或者ps -mp pid -o THREAD,tid,time或者ps -Lfp pid 将需要的线程ID转换为16进制格式 printf “%x\n” tid 打印线程的堆栈信息 到了这一步具体看堆栈的日志来定位问题了 jstack pid |...
clickHouse中的采样浅谈
写在前面​ 最近在使用flink+clickhouse进行业务数据计算和报表统计,但是由于生产的计算结果数过于庞大,前端组件无法一次性接收和展示,而业务需要一次性查出三个月的统计结果的报表进行分析(曲线图),所以在综合考虑后,就引出了ck的采样查询即sample语法,也就是按照特定分组对组内数据进行抽采样后再进行统计,这样就减少了的统计结果,使得前端报表组件得以使用,虽然损失了一定区间内的数据,但是由于是曲线图,所以大体上展示符合真实线条。 ​ 由于是第一次接触这种抽象的数据计算,网上又没多少资料,自己手工模拟了不少数据,找到了一定方法和规律,所以特意写出来记一下。 正文​ ...
在mac的clion中快速调试openjdk
写在前面​ 之前写过在mac中调试openjdk,使用的工具是xcode。 ​ 但是这个xcode使用起来太过麻烦,有不少不人性化的设计,所以现在决定使用clion来编译和调试java,所以把过程中需要注意的实现记录下,以便后续参考 正文 下载并按照指引激活clion:https://sx.gxkjbg.com/201904/tools/JetBrains.CLion.2019.macOS_jb51.zip 和idea类似,导入Hotspot:new make project from source,选择:OPENJDK_HOME/src/hotspot 如果想要即时bu...
flink中function注意事项
写在前面​ 最近在使用flink进行业务数据的实时计算以展示报表,在开发自测过程中遇到一个NPE,刚接触flink的我是一头雾水,硬啃了一早上源码,才找到问题,发现是flink序列,特此记录下 正文 问题如下: 分析: 通过debug分析,最初new的实例和最终sink的function不是一个实例。 那么猜测是实例被替换或者拷贝,那么先查阅代码发现sinkMQ线程初始化如下: 可以看到这里的实例已经是被”替换“过的了,那么我们继续跟踪源代码,发现org.apache.flink.streaming.runtime.tasks.StreamTask#oper...
mysql诡异死锁系列二之高并发删除下的死锁二
写在前面​ 前面分析的明白了,那现在我们就来复现下上文中的错误 正文 废话不多说,直接上代码: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869@Testpublic void webPushTest() throws InterruptedException { AtomicBoolean atomicBoolean=new AtomicBoolean(t...
mysql诡异死锁系列二之高并发删除下的死锁一
写在前面​ 之前就用了四篇文章分析了特定场景下GAP锁导致的死锁问题,现生产运行环境的又出现了一次死锁,这次死锁更加诡异,日志如下: ​ 经过长时间排查和查阅资料,终于在本地复现了问题、找到根本原因 正文 第一次拿到这个日志,我是懵逼的额,这和之前遇到的死锁日志完全不同, 123456789101112131415161718192021222324252627282930313233343536373839404142LATEST DETECTED DEADLOCK------------------------2020-11-18 09:34:42 0x7ff...
avatar
styytNOTstop
Knowledge has no limit.
FRIENDS
liwei