java高级特性
诸葛子房_
先后就职于京东和BAT,在大数据领域有多年工作经验;
Apache Griffin&&Apache Zeppelin Contributor,dataCompare和dataService作者
展开
-
在高并发环境下,再次认识java 锁
线上部署的应用,偶尔会出现,数据读取出来为空的情况,但是通过打印日志,发现数据确实是存在的。日志文件: 对应代码:tagId2NameMap 是通过一个定时任务去更新的,即:updateTagIdMapping 函数,本来 tagId2NameMap 是HashMap,以为是不安全的原因导致的,改为ConcurrentHashMap(1)改为ConcurrentHashMap,还是会出现一样的问题增加日志,发现是在发生updateTagIdMapping 更新时间和 getTagName 函数时间非常接近的原创 2022-06-21 20:21:59 · 225 阅读 · 0 评论 -
这些mini 版源码-----值得一读
minhbasepierre94/minibase: An embedded KV storage engine for learning HBase (github.com)minFlink手写一个 Mini Flink 分布式集群 - 云+社区 - 腾讯云 (tencent.com)通过制作一个迷你flink来学习flink源码 - 知乎 (zhihu.com)minRedis(3条消息) 仿照Redis开发的一个Mini-Redis数据库_深藏的是波光粼粼的博客-CSDN博客_原创 2022-03-24 18:11:27 · 2637 阅读 · 0 评论 -
HashMap 死锁全网没有一个可以复现的demo
今天写这篇文章着实有些无奈,很多文章都是分析Hashmap 死锁问题,包括著名的:左耳朵耗子疫苗:Java HashMap的死循环 | 酷 壳 - CoolShell这篇文章开头描述了问题,但是并没有给复现,我自己多番测试也暂时还没有复现,而网上都是各种copy 文章,这也许就是技术的无奈吧。...原创 2021-12-09 15:33:10 · 259 阅读 · 0 评论 -
java 并发编程CAS
参考:(2条消息) AtomicBoolean介绍与使用与compareAndSet原理_帅性而为1号的博客-CSDN博客原创 2021-12-01 16:18:21 · 292 阅读 · 0 评论 -
Java Thread dump和Head dump 文件分析
Java Thread dump 文件分析一次线上Flink 背压情况分析之重新认识java dump 文件_诸葛子房的博客-CSDN博客Java Head dump 文件分析java dump文件分析_诸葛子房的博客-CSDN博客一次生产 CPU 100% 排查优化实践 | crossoverJie's Blog强如 Disruptor 也发生内存溢出? | crossoverJie's Blog...原创 2021-11-26 14:41:46 · 3433 阅读 · 0 评论 -
一次线上Flink 背压情况分析之重新认识java dump 文件
1.背压情况发送端情况满,可以看背压图以及看flink 任务 back pressure 是否high2.解决问题thread dump 分析3.Thread dump 文件关键信息可以看到对应的行数代码分析可能出现异常原因:countDownLatch 没有为04.java 异常分析head dump:JVM 内存信息 jmapThread dump:线程信息 jstackJVM Heap dump和Thread dump - 简书 (ji...原创 2021-11-26 14:35:38 · 2736 阅读 · 1 评论 -
java 主线程破获子线程异常
1.子线程代码package com.vince.xq.kafka.thread;public class ThreadOne implements Runnable { private int i; public ThreadOne(int i) { this.i = i; } @Override public void run() { int x = 10 / 0; System.out.printl原创 2021-11-01 16:41:28 · 142 阅读 · 0 评论 -
java 多线程基础
1.继承Runnable接口package com.vince.xq.kafka.thread;public class ThreadOne implements Runnable { private int i; public ThreadOne(int i) { this.i=i; } @Override public void run() { try { Thread.sleep(1000);原创 2021-11-01 16:27:50 · 1487 阅读 · 1 评论 -
java 并发之ThreadPoolExecutor
1.ThreadPoolExecutor 参数详解(1条消息) java并发编程实践——王宝令(极客时间)学习笔记_诸葛子房的博客-CSDN博客_java并发编程实战2.ThreadPoolExecutor excute和submit 区别execute只能提交Runnable类型的任务,无返回值。submit既可以提交Runnable类型的任务,也可以提交Callable类型的任务,会有一个类型为Future的返回值,但当任务类型为Runnable时,返回值为null。execu.原创 2021-11-01 16:08:48 · 181 阅读 · 0 评论 -
java Proxy 解析---spring aop
1.接口public interface IAccountService { int getInt(int i); int getInt2(int i);}2.实现public class AccountServiceImpl implements IAccountService { public int getInt(int i) { ret...原创 2020-01-07 16:32:15 · 164 阅读 · 0 评论 -
java并发编程实践——王宝令(极客时间)学习笔记
java并发编程实践——王宝令(极客时间)学习笔记1、并发分工:如何高效地拆解任务并分配给线程同步:线程之间如何协作互斥:保证同一时刻只允许一个线程访问共享资源Fork/Join 框架就是一种分工模式,CountDownLatch 就是一种典型的同步方式,而可重入锁则是一种互斥手段。2、可见性、原子性、有序性(1)可见性:缓存导致(2)原子性:线程...原创 2019-03-02 18:11:00 · 3656 阅读 · 0 评论 -
java 悲观锁、乐观锁
本文讲解CAS机制,主要是因为最近准备面试题,发现这个问题在面试中出现的频率非常的高,因此把自己学习过程中的一些理解记录下来,希望能对大家也有帮助。什么是悲观锁、乐观锁?在java语言里,总有一些名词看语义跟本不明白是啥玩意儿,也就总有部分面试官拿着这样的词来忽悠面试者,以此来找优越感,其实理解清楚了,这些词也就唬不住人了。synchronized是悲观锁,这种线程一旦得到锁,其他需要锁的...原创 2019-12-05 18:28:35 · 112 阅读 · 0 评论 -
java 代理模式
https://blog.csdn.net/litianxiang_kaola/article/details/85335700java 反射https://blog.csdn.net/litianxiang_kaola/article/details/78634822java 注解https://blog.csdn.net/litianxiang_kaola/article/de...原创 2019-11-29 17:54:39 · 201 阅读 · 0 评论 -
java 并发编程
https://segmentfault.com/a/1190000015558984原创 2019-11-28 20:54:33 · 100 阅读 · 0 评论 -
java 类加载执行的过程
JVM的定义VM(虚拟机)是用软件实现的物理机,Java的一个重要的设计理念就是编写一次,到处运行,而运行的载体,就是VM。编译器会将Java文件编译成 .class 文件,JVM会加载并执行 .class 文件。下面的图展示了JVM的整体架构。JVM 架构图JVM在是如何工作的如上图所示,JVM由三个子系统构成。类加载系统 (Class Loader Subsystem)...原创 2019-11-28 20:29:34 · 2119 阅读 · 0 评论 -
java 父类引用指向子类对象
1.父类//父类public class Father{//父类有一个打孩子方法 public void hitChild(){ }}//子类1public class Son1 extends Father{//重写父类打孩子方法 public void hitChild(){ System.out.println("为什么打我?我做错什么...原创 2019-11-27 17:05:51 · 173 阅读 · 1 评论 -
java 并发、线程池
1.ThreadThread thread=new Thread(){ @Override public void run() { System.out.println(this.getName()+ 1); }};thread.start();2.RunnableRunnable runnable = new Runnable() {...原创 2019-11-27 13:28:46 · 77 阅读 · 0 评论 -
java 反射详解
1.正常实例化类User user=new User();2.通过反射进行实例化 等于正常实例化User user =(User) Class.forName("com.xq.kafka.demo.User").newInstance();3.反射demo(1)接口public interface IUser { String getName(); ...原创 2019-11-26 12:03:12 · 106 阅读 · 0 评论