自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Do more,Know more,Be more

内存虽快,但不持久

原创 线上服务启动卡死,堆栈分析

背景 服务启动时候会从mysql加载数据到es中,测试环境正常,线上异常卡住,不动。 查看堆栈信息 关键点 "elasticsearch[_client_][generic][T#5]" #843 daemon prio=5 os_prio=0 tid=0x00007fb3e...

2020-06-19 18:12:43 43 0

原创 Idea 多线程断点被跳过

多线程调试时候出现 解决 在,打断点的时候,将ALL选为Thread

2020-06-19 16:32:43 55 0

原创 Establishing SSL connection without server identity verification is not recommended

报错 SpringBoot启动时报错: Wed Jun 17 10:13:14 CST 2020 WARN: Establishing SSL connection without server's identity verification is not recommended. Ac...

2020-06-17 10:19:24 99 0

原创 kryo反序列化问题 com.esotericsoftware.kryo.KryoException: Encountered unregistered class ID: 48

报错 2020-06-12 18:33:29.211 ERROR 229109 --- [nioEventLoopGroup-4-33] 76 :失败,com.esotericsoftware.kryo.KryoException: Encountered unregistered class...

2020-06-16 11:04:51 73 0

原创 @postconstruct VS @eventListener 以及 dubbo服务暴露(2)
原力计划

接上一篇继续分析 报错截图: 源码分析 DefaultSingletonBeanRegistry.getSingleton()源码如下,可以看到这个方法需要对singletonObjects加锁 调用处源码: 在一个bean里面,直接是一个用@postConstruct 注解修饰的初始化方法中...

2020-06-07 14:34:07 42 0

原创 @postconstruct VS @eventListener 以及 dubbo服务暴露(1)
原力计划

看标题,你可能并太可能知道我想要说什么,但是肯定和这3个关键字有关系。 这一切都要从线上一个服务的报错开始: 背景 线上报错表现:服务启动时候一个定时任务卡住了,进而导致服务起不来。 当时这个足足卡了有5分钟多,可见并不是任务执行时间久(平时也就最多30s) 分析 连忙相办法找运维同学把线上该服务...

2020-06-07 12:17:04 94 0

原创 redis key的删除策略及LRU的实现

Redis过期key是怎么样清理的? (1)惰性清除 在访问key时,如果发现key已经过期,那么会将key删除。 (2)定时清理 Redis配置项hz定义了serverCron任务的执行周期,默认每次清理时间为25ms,每次清理会依次遍历所有DB,从db随机取出20个key,如果过期就删除,如果...

2020-06-04 19:35:09 41 0

原创 通过取余或者murmur3 hash的简单分流算法

定义样本空间 首先定义一个样本空间,比如[0,100],也就是0到100的闭区间 [ { "percent":20 "alg":"A" }, { "percent":50 "alg&qu...

2020-06-01 19:49:28 110 0

原创 JVM 垃圾回收器 ZGC
原力计划

JAVA内存模型 JVM线程 OSThread JVM 对不同系统的线程抽象 Thread Thread 是 C++ 定义的线程基类,除了 OSThread 类,作为其他线程的基类,它包含了 OSThread 对象的指针 JavaThread: Java 层创建的线程 CompilerThr...

2020-05-28 18:06:39 73 0

原创 Java 1.8 hashMap 并发put 的问题 java.util.HashMap$Node cannot be cast to java.util.HashMap$TreeNode

报错 Caused by: java.lang.ClassCastException: java.util.HashMap$Node cannot be cast to java.util.HashMap$TreeNode at java.util.HashMap$TreeNode...

2020-05-27 10:53:38 164 0

原创 Failed to instantiate org.mybatis.spring.SqlSessionTemplate Constructor threw exception

2020-05-26 17:17:44.455 ERROR 752 --- [main] o.s.b.SpringApplication 815 : Application startup failed org.springframework.beans.fact...

2020-05-26 17:35:49 73 0

原创 All clients has disconnected from. You can graceful shutdown now., dubbo version: , current host

Dubbo 报错 2020-05-25 17:39:41.965 WARN 19812 --- [NettyServerWorker-6-1] o.a.d.r.t.AbstractServer 205 : [DUBBO] All clients has disc...

2020-05-25 17:53:03 208 2

原创 elastic search 如何将yellow 状态变为green健康状态

背景原理 green状态:每个索引的primary shard和replica shard都是active状态 yellow : 每个索引的primary shard都是active状态,但是部分replica shard不是active状态,处于不可用状态 red: 不是所有的索引的primar...

2020-05-24 13:10:30 167 0

原创 elasticsearch query里面的slop选项

slop 用过搜索引擎的都知道,输入一个query,然后会出很多联想的词条,如下面: 一般来说完全精确短语匹配 或许是过于严格了。 也许我们想要包含 “quick brown fox” 的词条也能够匹配 “quick fox,” , 尽管情形不完全相同。 我们能够通过使用 slop 参数将灵活度引...

2020-05-22 18:26:37 57 0

原创 elastic search 修改日志级别为warn
原力计划

案发现场 测试同学压测 接口,导致es疯狂超时 排查 登录es服务器,打开日志,发现全部是超时日志,再往上看发现全是debug级别的日志,而且连每条query语句都打印了出来。 .... .... ... "max_expansions" : 50, ...

2020-05-20 16:39:46 152 0

原创 如何将elastic search 的健康状态由红色red变为绿色green
原力计划

现状 查询健康状态 curl -XGET 'http://localhost:9200/_cluster/health?pretty' { “cluster_name” : “go”, “status” : “red”, “timed_out” : false, “numb...

2020-05-20 16:38:37 180 0

原创 elastic search 日志不打印问题(root用户惹的祸)

案发现场 之前测试同学启动es,用了root 没起来报错如下, java.lang.RuntimeException: can not run elasticsearch as root at org.elasticsearch.bootstrap.Bootstrap.initia...

2020-05-19 20:11:24 149 0

原创 dubbo admin 为什么会出现IP 为 127.0.0.1 的提供者

dubbo报错 2020-05-14 11:45:54.383 ERROR 11066 --- [dubbo-client-idleCheck-thread-1] o.a.d.r.e.s.h.ReconnectTimerTask 51 : [DUBBO] Fail to con...

2020-05-14 14:24:25 163 0

原创 正则表达式之Unicode 字符属性 Unicode Categories \\p{P} \\p{XXX}

字符简写式 匹配各种空白符 https://esoftmobile.com/2013/05/22/regular-expression/ \p{xxx} 匹配xxx属性的字符 [AHK_L 61+]: Unicode 字符属性. 在 ANSI 版本中不支持. \p{xx} 匹配带 xx 属...

2020-05-12 17:26:32 183 0

原创 Redis get key error

背景 程序中一直用的key,突然不可以用,于是登录到redis集群上,手动get了一下,发现如下错误 错误 (error) DENIED Redis is running in protected mode because protected mode is enabled, no bind a...

2020-04-26 16:45:04 56 0

原创 java jstack prio,tid,nid 参数含义

jstack 入参说明 从简单来说,jstack就是打印当前指定java进程中每一个线程的工作情况,但实际上远没有那么简单。这里我们首先介绍jstack命令的基本使用,在本小节中有一些jstack打印出来的关键信息不会立即进行讲解(但后文都会进行详细说明),但没有关系,因为只要不影响当前本小节的阅...

2020-04-26 14:51:49 463 0

原创 Arthas(阿尔萨斯)- 阿里开源的Java在线诊断工具(火焰图-实战篇--正则表达式 优化方法)

背景 目前 分析 因为耗时主要耗在compile编译阶段 这个阶段,在外面还是一个通过乐观锁进行竞争的,根据matcher的matcher方法 private void compile() { // Handle canonical equivalences ...

2020-04-20 11:54:12 91 0

原创 Arthas(阿尔萨斯)- 阿里开源的Java在线诊断工具(火焰图-实战篇--string format方法)

火焰图观察 发现string的 format方法的采样占比占了整个采样占比的6%+ 原因 发现了吧,就是每次请求都会执行这个方法。然后正则的匹配一般偶比较的耗时。 优化 代码优化,方向就是尽量少使用复杂的正则 使用stringbuilder配合省略号代替多参数的,进行封装下即可。类似这...

2020-04-18 17:15:15 74 0

原创 Arthas(阿尔萨斯)- 阿里开源的Java在线诊断工具(火焰图-实战篇--spring copyproperties方法)

profiler/火焰图 火焰图是基于 perf 结果产生的 SVG 图片,用来展示 CPU 的调用栈。 y 轴表示调用栈,每一层都是一个函数。调用栈越深,火焰就越高,顶部就是正在执行的函数,下方都是它的父函数。 x 轴表示抽样数,如果一个函数在 x 轴占据的宽度越宽,就表示它被抽到的次数多,即...

2020-04-17 15:16:53 92 0

原创 Arthas(阿尔萨斯)- 阿里开源的Java在线诊断工具(理论篇)

Arthas 是什么? Arthas 是 阿里在 2018 年 9 月开源的 Java 诊断工具。支持 JDK6+, 采用命令行交互模式,提供 Tab 自动补全,可以方便地定位和诊断线上程序运行问题。 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?...

2020-04-17 14:26:37 113 0

原创 protobuf 3遇到 kryo 的 Map 字段序列化问题

背景 有A ,B,C,D 四个服务 序列化关系如下,其中C服务是一个rpc服务,供很多的服务调用。 由于我是B服务和C服务的维护者,此时A服务和D服务的通信经由我,由于pb字段协议变更。我这个桥梁不得不做变动。 报错 于是这次增加了一个map字段,意味着你们有变动,放到map,我直接透传就好了。...

2020-04-10 14:42:36 161 0

原创 ElasticJob Lite Console 处于分片待调整状态,无法触发解决方案

将对应job的触发时间改成最近的,比如当前时间17:49:00,那就把Cron表达式改成下一分钟:0 50 17 * * ? ,当自动触发过一次后,状态就会变成 因为要触发过,才会让你操作 ...

2020-04-08 17:50:47 459 0

原创 embedded.AnnotationConfigEmbeddedWeb ApplicationContext@1e67b872 has been closed already

nested exception is java.lang.IllegalStateException: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWeb ApplicationContext@1e67b87...

2020-04-08 15:23:55 233 0

原创 Java 锁相关 笔记整理

用户态与内核态 JDK早期,synchronized 叫做重量级锁, 因为申请锁资源必须通过kernel, 系统调用 ;hello.asm ;write(int fd, const void *buffer, size_t nbytes) section data msg db &quo...

2020-04-05 21:34:02 57 0

原创 数据库伪哈希Hash索引的创建和使用(理论+实战)

适用场景 适用于给一个varchar类型的字段建立索引。比如说类的全路径,URL等长字符串的字段。 com.xxx.aaa.bbb.ccc.yyy.ZZZ 其中大写的ZZZ就是类名。 像这种长字符串的,建立前缀索引区分度也不大,尤其一般前缀索引只使用10个字符,那么区分度可以说非常小。 所以,这种...

2020-04-04 15:38:03 131 0

原创 redis分布式锁踩坑——续

继上次redis分布式锁踩坑后,那个坑还没踩够。 之前是因为线程挂掉,然后导致value不过期,然后我改成了原子性的setx方法。 但是由于使用的是同一个key,且value不过期,所以setx方法,是not exist的,那么永远失败,永远抢不到锁。 于是,出现了一个坑,就是永远抢不到锁,抢不到...

2020-03-31 19:25:59 61 0

原创 Guava cache loadAll failed to return a value for key

报错 loadAll failed to return a value for try { if (!keysToLoad.isEmpty()) { try { Map<K, V> newEntries = loadAll(keysT...

2020-03-31 11:52:02 73 0

原创 guava cache 踩坑 ———— 初始化load方法,不能返回null

背景 在使用guava cache 的时候,get的时候,会触发load加载。 但是如果此时load方法返回null,那么就会报错 报错 Caused by: com.google.common.cache.CacheLoader$InvalidCacheLoadException: CacheL...

2020-03-18 16:14:57 550 0

原创 基于redis实现分布式锁遇到的一个坑

背景 之前旧代码中使用redis的incr来实现分布式锁。 逻辑大概是线上诸多线程去获取inrc一个key,第一个成功的则得到返回值1。其他线程如果inc这个变量则返回2,3,4,5… 成功返回的线程,然后再对这个key设值一个过期时间30秒。代码已经在线上跑了几个月了,没啥毛病。 遇到问题 这个...

2020-03-13 19:27:11 66 0

原创 Apollo Persisted by DefaultConfig

apollo多个集群中,有一个default集群,如果default集群中和其他的集群中有个namespace是一样的,这样,apollo在使用的时候,会进行判断。 而这个m_fileProperties是从本地缓存读取的 所以,如果其他集群配置没配置,apollo会默认读取default的...

2020-03-11 17:36:29 55 0

原创 队列同步器(AQS)原理简单介绍(二)

独占式、共享式锁的获取 独占式:有且只有一个线程能获取到锁,如:ReentrantLock。 共享式:可以多个线程同时获取到锁,如:CountDownLatch 独占式 每个节点自旋观察自己的前一节点是不是Header节点,如果是,就去尝试获取锁。 独占式锁获取流程: 共享式 共享式...

2020-03-08 21:56:51 81 0

原创 队列同步器(AQS)原理简单介绍(一)

队列同步器AbstractQueuedSynchronizer,是用来构建锁或者其他同步组件的基础框架。 继承AbstractOwnableSynchronizer 用一个int成员变量表示同步状态 设置当前状态 /** * Sets the value of synchro...

2020-03-08 15:24:15 67 0

原创 CAS的优缺点

CAS,在Java并发应用中通常指CompareAndSwap或CompareAndSet,即比较并交换。 CAS是一个原子操作,它比较一个内存位置的值并且只有相等时修改这个内存位置的值为新的值,保证了新的值总是基于最新的信息计算的,如果有其他线程在这期间修改了这个值则CAS失败。CAS返回是否...

2020-03-07 22:30:46 104 0

原创 synchronized的 偏向锁、轻量级锁、重量级锁的优缺点对比以及其适应场景

锁 优点 缺点 适用场景 偏向锁 加锁和解锁不需要额外的消耗,和执行非同步方法相比仅存在纳秒级的差距 如果线程间存在锁竞争,会带来额外的所撤销的消耗 适用于只有一个线程访问同步块场景 轻量级锁 竞争的线程不会阻塞,提高了程序的响应速度 如果始终得不到锁竞争的线程,使用自旋会消耗CPU ...

2020-03-07 21:38:43 104 0

原创 No qualifying bean of type 'org.springframework.transaction.PlatformTransactionManager' available:

2020-03-05 16:30:01.380 ERROR 12216 --- [rtTask_Worker-1] i.e.l.e.h.i.DefaultJobExceptionHandler 33 : Job 'com.task' exception occur in...

2020-03-05 20:22:22 3388 0

提示
确定要删除当前文章?
取消 删除