JAVASE
文章平均质量分 82
JAVASE相关,多线程相关
Ewen Seong
trouble and chance comes together
展开
-
JAVASE-14 静态代理与动态代理
本文主题内容是代理:包括静态代理和动态代理,其中动态代理是重点,该部分包括JDK代理和CGLIB代理,以案例的方式进行介绍。原创 2022-08-28 00:16:44 · 4323 阅读 · 0 评论 -
IO系列-1 IO底层机制
背景: 最近接手了一个以Netty+Protobuf作为底层通讯框架的项目,由于对IO通信机制和Netty的陌生,一时难以理解项目的架构设计。强烈的好奇心迫使我恶补NIO和Netty相关的知识,并对项目的架构设计深入地进行了剖析,有那么一瞬间一切豁然开朗,感受到世界的美好。 前言: IO系列模块用于总结IO相关的内容,包括IO机制、BIO、NIO、Netty以及基于NIO开源框架的源码解析等内容。本文是IO系列的第一篇,重点介绍IO底层的相关内容,会涉及到Linux底层的一些概念,如虚拟内存机制、系统调用、原创 2021-10-22 23:03:20 · 4693 阅读 · 0 评论 -
多线程系列-6 ReentrantLock源码
背景: 在并发场景下,为了保证线程安全,需要进行加锁操作。相对于Synchronized,更推荐使用Lock;无论是效率还是使用方式上,Lock都优于Synchronized,本文重点介绍JUC里的Lock的使用方式,并结合源码介绍一下实现原理。[与Synchronized相比-相同点,不同点]【优缺点】 一、使用方式 【介绍使用方式】 二、源码介绍 下面进入ReentrantLock原码分析,ReentrantLock实现了Lock接口。 1.lock public interface Lock {原创 2021-06-18 00:13:48 · 977 阅读 · 0 评论 -
JAVASE-12 异常机制
1.基类Throwable Error和Exception都继承与Throwable extends Throwable的类都可以进行抛出和捕获(针对自定义而言,如OutOfMemoryError等无法捕获)。Error是程序无法处理的错误,只能重启jvm来解决,如OutOfMemoryError或StackOverflowError。 Exception是程序可以处理的异常,分为checkException和RuntimeException; 异常如果没有捕获,会一直往上传递,直达调用链顶部,并抛出异常,原创 2021-03-15 22:58:10 · 394 阅读 · 2 评论 -
JVM-3 类加载机制(上)
最近写SDK代码遇到SPI,这其中涉及到类加载器的概念,又重新温习了一下, 考虑到类加载器一直没有系统地梳理一边,趁热总结一下。 1.引言 我们开发的java代码被javac编译为class文件后,需要加载到jvm内存里,才可以发挥作用。 这个加载有点像读的概念:虚拟机是个运行的程序,不断地读取class文件,然后输出对应的操作。 说到底,虚拟机就是一个由c/c++写出来的软件,在不同的平台上有不同的实现,但功能都相同–符合jvm规范。 通过jvm约定规范了class文件的结构,即不同的虚拟机实现都可以读懂原创 2021-03-07 22:25:25 · 448 阅读 · 3 评论 -
JAVASE-16 SPI
JAVASE-16 SPI 最近写业务代码的时候,遇到了SPI的概念,是个遗漏的知识点,总结一下 1.SPI概念 SPI 是英文Service Provider Interface的缩写, 即服务提供商接口。 以jdbc为例,在jdk中提供了jdbc的接口类,不同厂商分别提供对应的实现类,如:mysql-jdbc,oralce-jdbc,sqlserver-jdbc等。 JDBC的接口类是java的基础类库,是由引导类加载器加载进jvm的;实现类是在运行时从厂家的jar包中加载得到的,因此至少是通过系统类加原创 2021-03-07 01:01:38 · 509 阅读 · 0 评论