无界

我是Oracle Java JCP会员 博客域名 https://linuxstyle.blog.csdn.net/

Java线上问题排障:Linux内核bug引发JVM死锁导致线程假死

Java本质上还是离不开操作系统,一来Java源码是用C/C++实现的,二来java进程还是需要依附于操作系统和硬件资源,有时候一些问题是操作系统级别导致的,下面的整个事件是源自一则真实的线上案例。 过程: JVM死锁导致线程不可用,然后会瞬间起N个线程,当然起再多也是不可用的,因为需要的...

2019-04-28 15:16:42

阅读数 1935

评论数 4

支撑Java框架的基础技术:泛型,反射,动态代理,cglib

以Spring为例要想看明白他的源码需要彻底理解Java的一些基础技术泛型,反射同时对于一些高级技术例如动态代理,cglib和字节码技术也需要掌握,下面就按章节来一一说清楚这些技术的核心部分,最后手写一个简单的Spring框架。 一.静态代码块和非静态代码块以及构造函数的调用顺序 静态...

2019-04-22 10:29:24

阅读数 3055

评论数 2

深入浅出Java反射原理和使用场景

反射非常重要,特别是Spring这类框架离不开反射,而反射对于初学者理解起来其实还是有一定的难度的,本帖希望把晦涩的反色用最易懂的方式给你讲明白。 先不说反射是什么先看一个问题:如果不知道对象的真实类型怎么去调用他的方法? Object obj = new Date(); 编译类型:O...

2019-04-19 16:38:56

阅读数 1908

评论数 3

Java多线程的11种创建方式以及纠正网上流传很久的一个谬误

创建线程比较传统的方式是继承Thread类和实现Runnable,也可以用内部类,Lambda表达式,线程池,FutureTask等。 经常面试会问到继承Thread类和实现Runnable的区别,然后网上会流传如下这样的说法,这是错误的。 流传很久的错误说法: 这个说法是举一个火车票售票的...

2019-04-06 21:22:58

阅读数 1133

评论数 3

异步编程原理以及Java实现

说实话多线程和异步是非常容易让人混淆的,好像产生的效果差不多,甚至有人称多线程为异步,实际上这两种技术背后的实现原理是不同的。 假设您有2个任务,不涉及任何IO(在多处理器机器上)。在这种情况下,线程优于Async。因为像单线程程序一样的Async按顺序执行你的任务。但是线程可以同时执行这两...

2019-03-30 14:16:11

阅读数 1597

评论数 1

从Jdk8到Jdk12的Java虚拟机垃圾回收(垃圾收集)相关论文和官方网站集锦

JVM架构图 《Java Program Execution Process in Detail | Working of JUST-IT-TIME Compiler (JIT) in Detail》 ---- 这张图微观画的很好:https://www.javainterviewpoi...

2019-03-24 03:00:23

阅读数 1109

评论数 2

Java12和Jdk12安装以及OpenJdk12源码

文档: JDK 12文档:https://docs.oracle.com/en/java/javase/12/ 下载: OracleJDK12下载:https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads...

2019-03-23 14:12:39

阅读数 10876

评论数 14

Java字节码研究

关于怎么查看字节码的五种方法参考本人另一篇文章《Java以及IDEA下查看字节码的五种方法》 1.String和常连池 先上代码: public class TestApp { public static void main(String[] args) { ...

2019-03-05 18:46:45

阅读数 2390

评论数 1

Java开发环境的搭建以及使用eclipse从头一步步创建java项目

原文:出自本人的Linux博客http://blog.csdn.net/unix21/article/details/18813173一、Java 开发环境的搭建这里主要说windows环境下怎么配置Java环境。如果是Linux环境参考本博客另一篇文章即可:Linux环境安装卸载JDK1.首先安...

2014-01-27 16:06:02

阅读数 93294

评论数 13

Oracle和JCP社区批准我为Java JCP会员

大家好,我是Oracle Java JCP会员,我是个人会员,和Google和Apple,阿里巴巴,Facebook等企业会员并列参与Java社区规范的制定,关于Java有什么建议可以向我提出,如果合理我会反馈给社区,也许你的一个idea就是下一代Java的JSR。 ...

2019-05-07 13:35:55

阅读数 1306

评论数 10

好理解的Java内存虚假共享(False Sharing)性能损耗以及解决方案

虚假共享(False Sharing)也有人翻译为伪共享 参考https://en.wikipedia.org/wiki/False_sharing 在计算机科学中,虚假共享是一种性能降低的使用模式,它可能出现在具有由高速缓存机制管理的最小资源块大小的分布式一致高速缓存的系统中。当系统参与者将...

2019-04-30 19:06:04

阅读数 1058

评论数 5

JVM设置对象直接进入年老代

1.先说明一个事情就是在jdk1.8之后已经没有永久代被元空间取代,那么元空间在哪里? 说明:元空间在本地内存,自然更不是所谓年老代等分代里。 Java PermGen去了哪里? Java虚拟机(JVM)使用其类的内部表示,包含每个类的元数据,如类层次结构信息,方法数据和信息(如字节码,堆栈...

2019-04-19 18:56:11

阅读数 1329

评论数 4

多线程并发编程需要注意虚假唤醒Spurious wakeup

虚假唤醒 Spurious wakeup 如果等待线程在没有通知被调用的情况下唤醒,则称为Spurious wakeup。 解决方案就是: 使用while条件判断,更好的方案是避免使用wait这种低级的API,而是使用高级的并发工具。 因为这些高级的并发工具都是经过无数的坑才提炼出来的...

2019-04-19 17:48:04

阅读数 675

评论数 1

合理估算线程池线程数量

参考《Java并发编程实战》 线程数量计算公式 公式:Nthread = Ncpu * Ucpu * (1+ W/C),各字段含义: Nthreads:线程数量 Ncpu:CPU的数量,Runtime.getRuntime().availableProcessors() ...

2019-04-18 15:24:15

阅读数 1524

评论数 1

Java一个线程能否结束另一个永不停止的线程

在Java中停止一个线程有三种办法: 1.正常结束执行; 2.发生异常; 3.被其他线程stop(Java官方不建议) 参考:https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/threadPrimitive...

2019-04-16 17:29:08

阅读数 1070

评论数 0

Java线程怎样映射到操作系统线程

先说多线程模型,参考经典教材《Operating System Concepts , Silberschatz ,9th edition》 中文版是《操作系统概念,第9版》 https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems...

2019-04-06 22:07:31

阅读数 755

评论数 2

小米的开源监控系统open-falcon架构设计,看完明白如何设计一个好的系统

小米的开源监控系统open-falcon架构设计,看完明白如何设计一个好的系统 小米的http://book.open-falcon.org/zh/intro/ 早期,一直在用zabbix,不过随着业务的快速发展,以及互联网公司特有的一些需求,现有的开源的监控系统在性能、扩展性、和用户的使用效...

2019-04-06 14:53:48

阅读数 683

评论数 0

transient HashMap使用目的分析

看HashSet源码有这么一句: private transient HashMap<E,Object> map; 再看HashSet的Add方法: 实际上HashSet是复用HashMap了。 而我们去看看HashMap也会发现一样使用了transi...

2019-04-01 19:27:53

阅读数 286

评论数 0

为什么Java8中HashMap链表使用红黑树而不是AVL树

在Jdk1.8版本后,Java对HashMap做了改进,在链表长度大于8的时候,将后面的数据存在红黑树中,以加快检索速度。 那么很多人就有疑问为什么是使用红黑树而不是AVL树,AVL树是完全平衡二叉树阿? 最主要的一点是: 在CurrentHashMap中是加锁了的,实际上是读写锁,如果写冲...

2019-04-01 01:51:46

阅读数 3563

评论数 2

一个会画图的工程师

发现小谢图画的很好,虽然有些也是他引用的,但是我觉得还是很好所以这里收集下。 【RocketMQ源码学习】2-Namesrv 3-Remoting模块 rocketmq-remoting 模块是 RocketMQ 中负责网络通信的模块,被其他所有需要网络通信的模块依赖。它是基于 Nett...

2019-03-27 19:05:28

阅读数 309

评论数 0

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