4 Kevinten10

尚未进行身份认证

我要认证

Using Java/Scala/Python/Golang at work. Research Stream and Reactive System. Follow up Artificial Intelligence & Big Data & Cloud.

等级
TA的排名 3w+

AJDK-Wisp协程

李三红在接受采访时表示:“如果没有我们的尝试,Johannes Kepler University(JKU) Linz在HotSpot TM JVM 上的协程实现,或许要在相当长的一段时间被束之高阁。Alibaba JVM的Wisp协程技术,基于JKU 的协程实现,在上面做了大量的创新性工作,包括协程调度算法,JVM锁机制改造等等。正常的Java应用可以在几乎不改任何代码的情况下,“透明”地使用协程技术,获得免费的性能午餐。目前,Wisp协程技术已经被核心电商应用所使用。通过这项技术,阿里巴巴把JVM的性.

2020-08-05 08:00:01

AJDK-AOT静态编译

很多云上的新应用不约而同地选择了 Go 语言,很大的原因是 Go 应用对运行时没有依赖,静态编译的程序启动速度快,也不需要通过 JIT 来预热。Java 静态编译技术是一种激进的 AOT 技术,通过单独的编译阶段将 Java 程序编译为本地代码,在运行时无需传统 Java 虚拟机和运行时环境,只需操作系统类库支持即可。静态编译技术实现了 Java 语言与原生 native 程序的“合体”,将原本的 Java 程序编译成为了一个自举的具有 Java 行为的原生 native 程序,由此兼有 Java .

2020-08-05 07:59:14

JDK14-G1 NUMA

NUMA-Aware Memory Allocation for G1NUMANUMA就是非统一内存访问架构(英语:non-uniform memory access,简称NUMA),是一种为多处理器的电脑设计的内存架构,内存访问时间取决于内存相对于处理器的位置。在NUMA下,处理器访问它自己的本地内存的速度比非本地内存(内存位于另一个处理器,或者是处理器之间共享的内存)快一些。如下图所示,Node0中的CPU如果访问Node0中的内存,那就是访问本地内存,如果它访问了Node1中的内存,那就是远程访问

2020-08-05 07:58:59

JDK13-CDS数据共享

引言CDS(class-data sharing)即应用间共享class-data数据信息。JDK13扩展了应用的CDS实现,可以在程序执行的时候动态的打包class信息。被归档的class包含所有加载到应用中的类,一些依赖的库类,CDS的基层(base-layer)。###3 归档Java 13 中对 Java 10 中引入的 应用程序类数据共享进行了进一步的简化、改进和扩展,即:允许在 Java 应用程序执行结束时动态进行类归档,具体能够被归档的类包括:所有已被加载,但不属于默认基层 CDS 的应

2020-08-05 07:55:54

JDK12-switch匹配

之前Java的模式匹配JavaSwitch仅支持单值匹配,只能在switch匹配语句中匹配单一值JavaSwitch仅支持int类型匹配,只能基于整型进行相等性判断byte/short/char,可以向上转为int类型而不损失精度,所以这三种基本类型可以使用switch进行匹配char 取 unicode 整型码值String/Enum,作为JDK的内置类型,编译器会分别调用 hashCode()/ordinal()方法产生int结果,从而进行匹配计算并比较 hashcode,如果

2020-08-05 07:55:06

JDK11-ZGC

前言ZGC的成绩是,无论你开了多大的堆内存(128G?2T?),硬是能保证低于10毫秒的JVM停顿。远低于最初的G1 avg:156.806ms。ZGC的目标保守的10ms,也远胜前代的G1 。与标记对象的传统算法相比,ZGC在指针上做标记,在访问指针时加入Load Barrier(读屏障),比如当对象正被GC移动,指针上的颜色就会不对,这个屏障就会先把指针更新为有效地址再返回,也就是,永远只有单个对象读取时有概率被减速,而不存在为了保持应用与GC一致而粗暴整体的Stop The World。下

2020-08-05 07:54:36

JDK10-var类型推断

var声明的可读性建议1、使用 var 声明时,可以对齐左侧变量的名称,去除冗余的信息,使得代码变的清爽。// with explicit typesNo no = new No();AmountIncrease<BigDecimal> more = new BigDecimalAmountIncrease();HorizontalConnection<LinePosition, LinePosition> jumping = new HorizontalLineP

2020-08-05 07:54:04

JDK9-JPMS模块化

JPMS:Java Platform Module System现在JAVA应用主流为基于MAVEN进行系统模块的划分,但MAVEN等工具本质仍然是基于整体JAR文件的模块化,最终生成的镜像文件包含了引用的所有JAR包的完整内容,并没有能力对JAR中的内容进行更精细化的操作。模块化之前的问题:Java运行环境的膨胀和臃肿。每次JVM启动的时候,至少会有30~60MB的内存加载,主要原因是JVM需要加载rt.jar,不管其中的类是否被classloader加载,第一步整个jar都会被JVM加载到内存当

2020-08-05 07:53:28

Java-Spring开发技巧

设计模式=> 状态模式context实现state,并通过管理实现类重载方法数据结构=> DTO数据结构应具备多种字段的of创建功能可使用内部类维护值枚举=> 緩存術redis map分段锁=> 使用init标志位标识初始化,而非某字段为空if (!init) { init();}工具类=> check intStringUtils::isNumeric=> hashObjects.hashArrays.hashCo

2020-08-05 07:51:19

物联网-大气质量检测系统

Air - Atmospheric monitoring system. A typical iot application solutions. . 涵盖物联网设备及相关服务器. 完整的物联网应用场景的数据通信流程. Air - A Typical Iot Application Solutions IntroductionAir - 大气质量检测系统。由物联网STM3...

2018-12-12 22:22:24

Java并发之基础知识

同一进程的所有线程彼此独立运行共享进程的内存地址空间访问相同的变量并在同一堆上分配对象线程安全性单语句不一定有原子性,可能包含多个操作 例value++ 1. 读取value 2. value+1 3. 写入value线程安全守则不在线程之间共享状态变量将状态变量修改为不可变的变量在访问状态变量时进行同步servlet线程安全性它既不包含任何...

2018-09-17 10:17:22

疑难问题解析总纲

Java。。。TODO

2018-09-14 17:40:47

Maven项目管理

下载,配置maven环境变量设置:M2_HOME 系统路径设置:Path若使用idea,其内置有maven,可使用maven本身目录结构maven * bin * boot * conf * libmaven项目目录结构TODO...

2018-09-14 17:31:50

Junit单元测试

开发环境:IDEA 插件1:Junit4 插件2:JunitGenerator 自动生成Junit模板关于:单元测试代码不会出现在最终产品当中目录结构(maven)project src main javaresourcestest javaresourcesjunit运行流程static @BeforeClass ,加载初始配置信息@B...

2018-09-14 11:00:12

volatile非线程安全解析

Java内存模型java使用的是共享变量模型,如下图所示 线程1要读取线程2修改后的值必须要线程2写回到内存,线程1再读取。Jvm又是如何读取主存变量到线程中的呢? 内存间的相互操作lock 将对象变成线程独占的状态unlock 将线程独占状态的对象的锁释放出来read 从主内存读数据load 将从主内存读取的数据写入工作内存use 工作内存使用对象...

2018-09-14 10:13:36

JVM之线程并发

GitHub-理解JVM系列:https://github.com/kevinten10/Effective-Java一、Java内存模型与线程处理器内存模型Java内存模型Java内存模型所有变量都存储在主内存中工作内存中保存了使用变量的主内存副本拷贝(拷贝引用,字段,并非对象的全部)线程对变量的所有操作都在工作内存,不能直接对主内存操作不...

2018-09-14 10:08:44

JVM之代码优化

一、早期(编译器)优化1. 前期编译器:javac.java => .class2. 后端运行期编译器:JIT字节码 => 机器码3. 静态提前编译器:AOT*.java => 机器码1. javac编译器1.1 解析与填充符号表词法语法分析: 源代码的字符流 ==> 标记token集合如 int a = b + 2; ⇒ i...

2018-09-13 10:55:10

JVM与操作系统

在了解jvm的结构之前,我们有必要先来了解一下操作系统的内存基本结构:操作系统中的jvm为什么jvm的内存是分布在操作系统的堆中呢??因为操作系统的栈是操作系统管理的,它随时会被回收,所以如果jvm放在栈中,那java的一个null对象就很难确定会被谁回收了,那gc的存在就一点意义都没有了,而要对栈做到自动释放也是jvm需要考虑的,所以放在堆中就最合适不过了。 操作系统+jvm...

2018-09-12 22:16:00

JVM之类加载机制

一、类文件结构Java虚拟机不和包括Java在内的所有编程语言绑定,它只和”class文件”这种特定的二进制文件格式所关联class文件中包含了Java虚拟机指令集和符号集以及若干其他辅助信息Java:*.java => javac => ↘jruby:.rb => jrubyc => → 字节码 .class =...

2018-09-12 15:33:36

深入理解Java总纲

深入理解JVM内存模型,JVM的类加载机制,JVM优化等方面的知识GitHub: https://github.com/kevinten10/T-JDKDirectoryJVM内存模型

2018-09-11 20:34:41

查看更多

勋章 我的勋章
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。