自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 问答 (1)
  • 收藏
  • 关注

原创 java多态解析

2. 父类如果通过this.a可以访问你新增的属性,那也可以修改,重写赋值,比如this.a = new Object,但是你并不知道,即使这是一个私有属性,其他类还是悄悄改变了它,出问题你甚至都没办法查找具体原因,这种情况是不是很可怕。从字节码层面来说,对于属性的访问是编译期确定的,也就是引用是哪个类,this.field就是那个类,而方法调用是invokevirtual,运行期才会确定,这里会有一个方法链,一直向上找。多态,面向对象的三大特性之一,多态的三个条件:继承,方法重写和父类引用指向子类对象。

2023-06-14 12:04:55 988

原创 将博客搬至CSDN

开源中国的博客体验不太好,总是报敏感词,但是没有提示,搬家至: https://blog.csdn.net/u010002517?type=blog ...

2023-05-20 19:25:00 91

原创 ThreadLocal怎么才能导致内存溢出

在早期的JDK版本中,ThreadLocal的内部结构是一个Map,其中每一个线程实例作为Key,线程在“线程本地变量”中绑定的值为Value(本地值)。早期版本中的Map结构,其拥有者为ThreadLocal实例,每一个ThreadLocal实例拥有一个Map实例。在JDK 8版本中,ThreadLocal的内部结构发生了演进,虽然还是使用了Map结构,但是Map结构的拥有者已经发生了变化,其拥有者为Thread(线程)实例,每一个Thread实例拥有一个Map实例。

2023-05-20 19:23:59 113 1

原创 Hive中的复杂类型(array/map/struct/json)

Hive不仅支持基本类型,还支持比较复杂的类型,同时配套了一些函数,灵活运用这些复杂类型的字段,可以更好的设计离线表 更加详细内容可以见: ...

2022-10-21 20:43:00 503

原创 译文-jdk默认hashCode方法的实现[How does the default hashCode() work?]

原文链接: How does the default hashCode() work? 译文: ...

2021-05-13 20:22:00 34

原创 听歌识曲的实现(shazam)

续上篇 音频分析 ,本篇会写一个完整的音乐识别方案,亲测好用,代码注释清晰,赶快来看看吧。 ...

2021-03-26 21:16:00 302

原创 依赖quartz做一个靠谱的定时任务系统(续)

上文其实提到了一个问题,就是使用SchedulerFactoryBean配置quartz的时候,遇到了waitForJobsToCompleteOnShutdown属性没有起作用的问题,后来经过仔细分析,发现其实是因为 暴露了FactoryBean中创建的那...

2021-03-21 22:10:00 116

原创 依赖quartz做一个靠谱的定时任务系统

前言 前不久将一个quartz的单点系统改为拥有多个节点的系统,使用的方案也是quartz scheduler(mysql)的方案,因为确实简单好用,本文主要记录一些功能实现和踩的坑,重点是谈谈如何编写任务,如何中断恢复,以及避...

2021-03-21 19:34:00 71

原创 容器如何做隔离?tomcat类加载分析

最近在使用公司的RPC框架,突然想到一个问题,公司的RPC框架本质上是个容器,可以部署多个服务,框架本身要用到netty实现网络传输,而部署的服务也要用netty,比如某些服务使用了redisson,就需要用netty。那么问题来了,如何实现隔离呢?tomcat也是大家日常使用最多的Servlet容器,tomcat下可以部署很多...

2021-03-02 16:49:00 62

原创 音频分析-音频知识与短时傅里叶转换

一切的源头就是 Shazam ,这个使用了好多年的app,最早功能机时代就用过它,当时觉得好神奇,amazing,虽然不是计算机专业的,但不妨...

2021-01-28 14:23:00 88

原创 SpringWeb参数校验,好混乱

参数校验是日常工作里写的比较多的且十分无聊的工作,虽然spring/springboot整合了hibernate validator,可是具体到以下常见的场景,用着还是很不爽,本文尝试提出一个较为合适的套路,来适配百分之80的常见场景。 ...

2021-01-05 21:50:00 44

原创 分布式锁:redis与zk(redisson VS curator)

分布式锁用redis和zk来实现,是常见的做法,下面简单列一下两方的优缺点: redis版本应该是4.0以上,redisson版本3.14.0 ...

2020-12-22 14:52:00 61

原创 redisson+spring aop实现限流

redisson的限流原理(后面还有新版本方案) RRateLimiter limiter = redisson.getRateLimiter("myLimiter");// one permit per 2 secondslimiter.trySetRate...

2020-12-18 18:00:00 77

原创 Spring Controller的private方法在AOP场景下的Null异常

先说结论再分析原因: 如果Controller存在AOP切面等动态代理行为,并且Controller注入了service bean,那么如果方法是private修饰,该方法在调用service时会报空指针异常,改为public/...

2020-11-09 18:06:00 215

原创 Apache Arrow,消除序列化与反序列化的损耗,GC友好的框架

大家有没有想过一个问题,RPC的实现分两部分,序列化与反序列化协议和传输协议,其中传输协议可以用TCP/UDP/HTTP等,序列化与反序列化协议可以用JSON/XML/ProtoBuf/hessian等等,那么能不能消除序列化与反序列化的损耗呢?有没有一个大一统的协议,跨语言跨平台,一个数据...

2020-09-18 19:34:00 166

原创 ScheduledThreadPoolExecutor分析与线程池防坑

Java线程池使用不当会导致很多线上问题,常见的有: 线程池默认使用无界队列,任务过多时,JVM OOM ...

2020-09-10 17:13:00 128

原创 mybatis当传入数据类型为Int时并且值为0时,会判断为空字符串

一个小bug,不过可以调一下mybatis的逻辑,首先加日志打印一下mybatis的日志 log4j2.xml,日志输出有点儿多 ...

2020-06-19 19:43:00 51

原创 搭建一个zookeeper源码调试环境

搭建一个多节点的zookeeper源码调试环境,来一步一步跟调源码,下面是步骤 apache官网下载源码包,同时下载二进制包,用来连接启动的集群测试 ...

2020-05-27 14:56:00 43

原创 windows下用mobaxterm代替mtputty

不知道有没有人跟我一样,无法忍受mtputty的tab+alt无效的情况,反正我是受够了,哈哈,改用mobaxterm,会好一些。 注意点: ...

2020-04-26 14:19:00 50

原创 mysql5.7中文全文索引配置和使用

如果有全文索引的需求,大部分人会想到使用Elasticsearch,的确,它是一个很好的方案,当数据量并不多时,比如量级十万左右,需要检索的字段并不多,需求并没那么多,是否可以用mysql实现呢?简单总结优缺点如下: | 方案 | 优点 | 缺点 | | :------------ | :------------ | :----...

2020-04-20 17:30:00 74

原创 关于实时性与垃圾回收的思考

展望未来,垃圾回收会从语言中消失吗? 我觉得不会,虽然无GC的语言更快更省电效率更高,不影响吞吐量,但GC很难从语言中消失,除非机器比程序员贵很多,写着爽是对一门语言最高的肯定。科技以人为本。 ...

2020-04-15 15:18:00 29

原创 windows下idea执行maven compile中文乱码问题简单分析

网上有很多说出了解决办法的文章,却没有分析原因,解决方法是idea的settings VM Options中加入-...

2020-03-31 11:45:00 124

原创 spring data jpa基于版本号与时间戳的乐观锁

基于版本号 创建表 CREATE TABLE `test_optimistic_lock...

2020-03-08 21:26:00 49

原创 fastjson报NoSuchMethodError诡异

一个神奇的bug,2017年的一个工程A依赖fastjson1.2.7编译出了一个jar包,fastjson中有一个类SerializeConfig,这个类继承了一个put(Object k,Object v)的方法,所以编译出的jar包字节码里写的方法签名就是descriptor: (Ljava/lang/Object;Lja...

2020-01-04 23:32:00 278

原创 OPTIONS请求Cors,坑爹的配置

一个上传文件的请求,在请求之前,浏览器先发了一个OPTIONS请求,结果一直返回403forbidden,搞得都怀疑人生了,看tomcat的access日志,确实是tomcat处理的,但是把断点打到处理请求最前端的位置,依然进不去,后来发现web.xml中有这样的配置 ...

2019-12-11 21:15:00 18

原创 基于zookeeper/curator的一个任务分片方案

假如现在有一个表,表里记录的是一些延迟消息,也就是在未来某时刻需要发送出去的消息,表的记录数不定,如果很多,那么需要多台机器来执行,如果很少,那么一两台就够了,这时候需要一个领导选举/任务分片的工作,下面是一个方案,使用curator来实现。 上代码: ...

2019-11-18 10:19:00 45

原创 antlr4起飞

把那些隐隐约约的东西说清楚写下来,还是挺不容易的。 idea安装插件 ...

2019-11-01 14:18:00 21

原创 String split如何保留分隔符

String split方法很常用,比如"1,2,3,4,5".split(",")返回["1","2","3","4","5"],如果想保留分隔符呢?答案是利用正则表达式的环视功能。 (?=X) X, via zero-wid...

2019-11-01 11:04:00 77

原创 问题:Illegal access: this web application instance has been stopped already. Could not load 分析...

问题描述 此问题出现在tomcat停止时,大概想想就知道,tomcat卸载了应用,但是现在有一些线程没有停止,继续执行代码,执行代码就需要加载类,加载类就要调用WebAppClassLoader,可是此时web应用已经卸载了,加...

2019-09-02 17:14:00 345

原创 jdbc&mysql中emoji和sql_mode问题详细分析

同事遇到的一个小问题,就是emoji保存出错,深究一下,发现还是有搞头的,记录一下。 问题描述 ...

2019-08-19 18:29:00 66

原创 一个求90分位数的算法优化

题目 给定文件,每个文件中有一行逗号分隔的数据,请找出该数据流中tp90 line,即第90百分位数。即按顺序处于第90%位置的数。 ...

2019-08-12 20:14:00 216

原创 远端服务重启导致httpclient连接池卡死的问题

从锁说起吧,内置锁synchroinzed和jucl(java.util.concurrent.locks)lock还是有很大区别的,一个很重要的区别就是使用jstack导出线程dump,使用synchronized命令可以很容易看到锁被哪个线程持有,但是jucl lock缺不行。 ...

2019-05-27 20:07:00 72

原创 httpcomponents httpclient连接池实现与测试

在windows环境下,使用Process Explorer查看连接数和连接状态。 package http.connectionPool;import org.apache.http.HeaderElement;import org.apache.http...

2019-05-24 10:34:00 56

原创 springboot mybatis读写分离的一个实现方案

首先考虑使用缓存来处理,如果缓存不够用,再使用读写分离来实现 application.yml配置两个数据源 #默认使用配置spring: profiles:...

2019-05-17 19:58:00 34

原创 为什么说JDBC驱动类加载破坏了双亲委派机制

大家都知道jdk的类加载机制是双亲委派机制,当我们需要加载一个类的时候,比如如下几种情况 new一个类的对象 ...

2019-05-05 18:34:00 25

原创 java Date转为mysql datetime毫秒数四舍五入 精度丢失的问题

mysql的datetime类型不是时间戳,所以精度只到秒,java.util.Date是一个毫秒数时间,所以java.util.Date到mysql datetime,必然会面临精度丢失。 如果场景比较严格,这会导致问题,比如,一个方法里刚刚insert了一条数据,提交事务之后,通过sql查询却查不到。 ...

2019-04-01 13:52:00 183

原创 java 读写锁 简单分析及java8改进

读锁优先级高还是写锁优先级高? AQS是什么? ReentrantReadWriteLock ...

2019-02-15 18:07:00 25

原创 斐波那契堆的理解,节点mark属性和势函数

斐波那契堆 看了好多博客,都是照搬算法导论的内容,没有自己的理解,比如为什么有mark属性,势函数的作用,以及为什么叫斐波那契堆,下面说说鄙人的理解。 ...

2018-11-13 11:58:00 32

原创 dubbo序列化的问题,丢失属性

发现dubbo序列化丢失了属性,下面验证一下。 移步 here ...

2018-11-02 13:27:00 41

原创 记录一次线上GC问题和原因分析,FullGC到一定次数就停止FullGC

症状 启动之后,Full GC频繁,Young GC几乎没有,由于GC频繁,cpu使用率过高,触发报警,大概一个小时之后,也可能是几个小时之后,也可能是几十分钟之后,Full GC停止,稳定在一个数字,然后一切正常。 ...

2018-11-01 20:34:00 54

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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