- 博客(19)
- 资源 (20)
- 收藏
- 关注
原创 异步编程原理以及Java实现
说实话多线程和异步是非常容易让人混淆的,好像产生的效果差不多,甚至有人称多线程为异步,实际上这两种技术背后的实现原理是不同的。 假设您有2个任务,不涉及任何IO(在多处理器机器上)。在这种情况下,线程优于Async。因为像单线程程序一样的Async按顺序执行你的任务。但是线程可以同时执行这两个任务。 假设您有2个任务,涉及IO(在多处理器机器上)。在这种情况下,Async和Thre...
2019-03-30 14:16:11 14594 4
原创 从Jdk8到Jdk12的Java虚拟机垃圾回收(垃圾收集)相关论文和官方网站集锦
JVM架构图《Java Program Execution Process in Detail | Working of JUST-IT-TIME Compiler (JIT) in Detail》----这张图微观画的很好:https://www.javainterviewpoint.com/java-virtual-machine-architecture-in-java/...
2019-03-24 03:00:23 6746 2
原创 Go语言源码分析CAS的实现和Java如出一辙
看了Go的源码CAS这块实现和java还是类似的。关于Java的分析参考:Java使用字节码和汇编语言同步分析volatile,synchronized的底层实现都是使用汇编指令:LOCK+CMPXCHGL原因很简单:单核肯定不能发挥Go的高并发性能,Go如果要支持多核,必然遇到并发编程数据可见性的问题,底层必然加锁。无锁并不等于没有锁,只能说无重量级的锁而已。Go语言源...
2019-03-27 20:41:02 2046
原创 Java中的ClassLoader和SPI机制
深入探讨 Java 类加载器成富是著名的Java专家,在IBM技术网站发表很多Java好文,也有著作。线程上下文类加载器线程上下文类加载器(context class loader)是从 JDK 1.2 开始引入的。类java.lang.Thread中的方法getContextClassLoader()和setContextClassLoader(ClassLoader cl)用...
2019-03-27 20:10:31 3377
原创 一个会画图的工程师
发现小谢图画的很好,虽然有些也是他引用的,但是我觉得还是很好所以这里收集下。【RocketMQ源码学习】2-Namesrv3-Remoting模块rocketmq-remoting 模块是 RocketMQ 中负责网络通信的模块,被其他所有需要网络通信的模块依赖。它是基于 Netty 实现的,避免了网络编程很多 tricky 的问题。首先来看下 RocketMQ Net...
2019-03-27 19:05:28 1326
原创 协程和Java实现
多线程的性能问题:1.同步锁。2.线程阻塞状态和可运行状态之间的切换。3.线程上下文的切换。协程,英文Coroutines,是一种比线程更加轻量级的存在。正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程。协程,又称微线程,纤程。英文名Coroutine。最大的优势就是协程极高的执行效率。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,...
2019-03-27 16:56:37 4505 1
原创 Jdk11,Jdk12的低延迟垃圾收集器ZGC
https://wiki.openjdk.java.net/display/zgc/MainZ垃圾收集器,也称为ZGC,是一种可扩展的低延迟垃圾收集器,旨在实现以下目标:暂停时间不超过10毫秒 暂停时间不会随堆或实时设置大小而增加 处理堆范围从几百M到几T字节大小一目了然,ZGC是:同时 基于区域的 压实 NUMA感知 使用彩色指针 使用负载障碍ZGC的核心是并发垃圾...
2019-03-27 11:49:12 3467
原创 stackoverflow上一个最会举例子的专家
https://stackoverflow.com/Premraj是stackoverflow上一个一个最会举例子的专家,我特意收集了他的一些有趣的举例:Java弱引用最精彩的解释https://stackoverflow.com/questions/299659/whats-the-difference-between-softreference-and-weakreference-...
2019-03-26 16:24:52 1617 1
原创 Java弱引用最精彩的解释
原文出自:https://stackoverflow.com/questions/299659/whats-the-difference-between-softreference-and-weakreference-in-java这个解释是关于弱引用最精彩的public class EmployeeVal { public EmployeeVal(String ...
2019-03-26 11:54:35 10394 4
原创 JSR 133 Java内存模型以及并发编程的最权威论文汇总
Java内存模型先看官方文档:https://docs.oracle.com/javase/specs/JSR 133:JavaTM内存模型和线程规范修订版:https://www.jcp.org/en/jsr/detail?id=133JSR:Java规范请求所有JSR的列表:https://jcp.org/en/jsr/allhttps://www.jcp.org...
2019-03-24 01:26:16 1717
原创 Java12和Jdk12安装以及OpenJdk12源码
文档:JDK 12文档:https://docs.oracle.com/en/java/javase/12/下载:OracleJDK12下载:https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.htmlcsdn上我下好的,速度较快:https://download.csdn...
2019-03-23 14:12:39 20935 15
原创 Redis源码和java jdk源码中hashcode的不同实现
一.redis实际上是使用了siphash这个比较简单,我说的简单是指redis代码比较少不像jdk一样调用C++代码调用栈非常深。先看这个rehashing.c主要就是dictKeyHash函数,需要调用dict.h头文件中定义的dictGenHashFunction#include "redis.h"#include "dict.h"void _redisAssert(...
2019-03-22 19:49:26 2210
原创 更好的Java虚拟机Zing: 更好的性能,无停顿,更快的启动
Zing虚拟机文档Understanding Java Garbage Collection(了解Java垃圾收集)首先说明这个Zing是收费的,但是他也是优秀的,我觉得我们可以研究下他的一些思想对于怎么提高JVM,以及目前的JVM有什么缺陷是非常有帮助的。中文版简介:https://cn.azul.com/Zing的优势:1)更好的性能支持 Zing 的 Falc...
2019-03-19 17:57:52 10775
原创 为什么选择RocketMQ以及Confluent公司对Kafka的分区设计的说明
《为什么选择RocketMQ》根据我们的研究,随着使用的队列和虚拟主题的增加,ActiveMQ IO模块遇到了瓶颈。我们尽力通过节流,断路器或降级解决这个问题,但效果不佳。因此,我们开始关注当时流行的消息传递解决方案Kafka。不幸的是,Kafka无法满足我们的要求,特别是在低延迟和高可靠性方面,详见此处。《如何在RocketMQ中支持更多队列?》Kafka是一个分布式流媒体平台,它源...
2019-03-19 01:27:33 2765 1
原创 Java使用字节码和汇编语言同步分析volatile,synchronized的底层实现
关于怎么查看字节码的五种方法参考本人另一篇文章《Java以及IDEA下查看字节码的五种方法》查看汇编语言汇编码说要看汇编还是很有必要的,因为有些地方比如加锁其实还是通过汇编实现的,只看字节码不能看出底层实现。其实就是利用使用hsdis与jitwatch查看JIT后的汇编码。1.首先下载hsids要查看JIT生成的汇编代码,要先装一个反汇编器:hsdis。从名字来看,即HotS...
2019-03-15 13:18:09 7418 4
原创 JDK源码研究Jstack,JMap,threaddump,dumpheap的原理
JDK最新bug和任务领取:https://bugs.openjdk.java.net/projects/JDK/issues参加OpenJDK社区:https://bugs.openjdk.java.net/projects/JDK/issuesopenjdk源码地址:https://jdk.java.net/java-se-ri/8https://download.java.n...
2019-03-13 19:53:11 1951
原创 IDEA实用插件和技巧
《解决lambda expressions are not supported at this language level的问题》《Intellij Idea 代码格式化/保存时自动格式化》一、安装google-java-formatpreferences -> plugins -> Browse repositories…搜索google-java-format...
2019-03-09 16:53:06 1050
原创 Java以及IDEA下查看字节码的五种方法
1.最本质的是cmd下#javap -v 类名说明:这是最原始的方法,效率低下,强烈不推荐使用。2.查看字节码的方法idea可以集成命令行使用javap注意需要在class文件目录下,不要在java文件目录下。#java -p class文件名即可这种方式需要每次敲命令还是不方便3.在IDEA下集成javap -v上面那种方法效率只能说还是不高,其...
2019-03-08 15:26:11 32555 2
原创 Java字节码研究
关于怎么查看字节码的五种方法参考本人另一篇文章《Java以及IDEA下查看字节码的五种方法》1.String和常连池先上代码:public class TestApp { public static void main(String[] args) { String s1 = "abc"; String s2 = new S...
2019-03-05 18:46:45 5282 2
jdk-12_windows-x64_bin.exe和安装说明
2019-03-23
Zing虚拟机文档Understanding Java Garbage Collection(了解Java垃圾收集)
2019-03-19
JDK源码 openjdk-8u40-src-b25-10_feb_2015.zip
2019-03-17
EncodingDetect.java
2016-01-30
FreeTDS-0.95版
2015-08-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人