随笔分类 -  java

摘要:记得去年学习Spring MVC的时候自己学着写了一个小小的框架,用了一个AppContext来表示应用上下文,每个请求都应该有各自独立的AppContext,里面可以存储一些数据,比如数据库连接Connection等,此时考虑数据库的事务问题,即在一个线程内,一个事务的多个操作拿到的是一个Conn 阅读全文
posted @ 2023-11-07 15:07 mingshan 阅读(17) 评论(0) 推荐(0) 编辑
摘要:在JDK9中,包含了一个叫Variable Handles的新功能,下面是该功能的描述: Define a standard means to invoke the equivalents of various java.util.concurrent.atomic and sun.misc.Uns 阅读全文
posted @ 2023-11-07 14:46 mingshan 阅读(63) 评论(0) 推荐(0) 编辑
摘要:在Java中,我们想在程序运行时调用其方法,可以用JDK提供的反射相关API来实现,代码如下: Class clazz = Demo.class; Method method = clazz.getMethod("studyHard", new Class[]{String.class}); Dem 阅读全文
posted @ 2023-11-07 14:45 mingshan 阅读(80) 评论(0) 推荐(0) 编辑
摘要:反射是Java语言中一个比较重要的特性,它允许对正在运行的Java进行观测,甚至动态修改程序,即在运行态,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性。 反射API介绍 获取Class对象 通常来说,使用反射API的第一步是获取Class对象,在J 阅读全文
posted @ 2023-11-07 14:38 mingshan 阅读(46) 评论(0) 推荐(0) 编辑
摘要:Channel介绍 Channel? 我们在使用Buffer的时候,需要往Buffer中放数据,再从Buffer中取数据,那么在NIO体系中,与Buffer交互是什么呢,没错,就是Channel。所有的NIO的I/O操作都是从Channel 开始的,读操作的时候将Channel中的数据填充到Buff 阅读全文
posted @ 2023-11-06 08:48 mingshan 阅读(18) 评论(0) 推荐(0) 编辑
摘要:Selector是Java NIO中实现多路复用的关键,用于检查一个或多个NIO Channel 的状态是否处于可连接、可接收、可读、可写状态。单个单线程通过Selector来管理多个Channel,减少线程上下文切花能带来的开销。 Selector是一个抽象类,具体是通过SelectorProvi 阅读全文
posted @ 2023-11-06 08:47 mingshan 阅读(14) 评论(0) 推荐(0) 编辑
摘要:Buffer?我们很容易想到缓冲区的概念,在NIO中,它是直接和Channel打交道的缓冲区,通常场景或是从Buffer写入Channel,或是从Channel读入Buffer。Buffer是一个抽象类,Java提供如下图的实现类,我是直接在Eclipse截出来的_ 其实核心是ByteBuffer, 阅读全文
posted @ 2023-11-06 08:46 mingshan 阅读(19) 评论(0) 推荐(0) 编辑
摘要:平时接触动态代理比较多,例如Spring等框架如何使用了动态代理经常听到,本文主要介绍JDK动态代理的基本实现原理(JDK8版本),当了解了这些实现细节后,再次使用动态代理就会十分容易和清楚,知其然也知其所以然。 动态代理Demo 先来看一下利用JDK动态代理写的Demo,下面会根据这个Demo进行 阅读全文
posted @ 2023-11-02 10:22 mingshan 阅读(371) 评论(0) 推荐(0) 编辑
摘要:Java虚拟机定义了程序执行期间使用的各种运行时数据区域。如下图所示: 在Java虚拟机规范的描述中,虚拟机栈、本地方法栈和程序计数器是线程私有的,而像堆、方法区(Jdk8之前)、元空间(JDK8之后)属于所有线程共享区域。除了程序计数器外,虚拟机内存的其他几个运行时区域都有可能发生OutOfMem 阅读全文
posted @ 2023-11-02 10:19 mingshan 阅读(38) 评论(0) 推荐(0) 编辑
摘要:经过对JDK动态代理实现原理的解析,我们会对动态代理的实现流程有个根本的认识,具体分析过程参考JDK动态代理实现原理这篇文章,这里就不多谈了。这篇文章主要思考如何去实现一个简易的动态代理,以便加深对其的理解。 模仿着JDK动态代理,我们需要一个代理Proxy类,一个InvocationHandler 阅读全文
posted @ 2023-11-01 15:05 mingshan 阅读(32) 评论(0) 推荐(0) 编辑
摘要:了解到CompletableFuture的基础用法之后,我们不禁好奇,以前的Future模式不支持如此好用的异步编程,CompletableFuture是如何做到的呢?这就需要我们去阅读源码了,通过源码我们才能了解到其设计思想和实现方式,我们分析下supplyAsync 和 thenApplyAsy 阅读全文
posted @ 2023-11-01 15:03 mingshan 阅读(27) 评论(0) 推荐(0) 编辑
摘要:在JDK 1.5之后Java提供了并发包(java.util.concurrent),加强对并发的支持。该包下的类大量使用 CAS(Compare and Swap)来实现原子操作、锁优化等。在java.util.concurrent.atomic包中,提供了对基本类型的原子封装,比如AtomicI 阅读全文
posted @ 2023-11-01 15:02 mingshan 阅读(10) 评论(0) 推荐(0) 编辑
摘要:Callable 在Java中我们知道创建一个线程可以继承Thread类或者实现Runnable接口,JDK1.5之后在java.util.concurrent提供了Callable接口,该接口设计类似Runnable接口,不过Callable接口可以返回任务执行的结果,并且在执行任务过程中可能会抛 阅读全文
posted @ 2023-11-01 15:00 mingshan 阅读(55) 评论(0) 推荐(0) 编辑
摘要:用过Spring推出的Reactor框架的同学可能会感叹异步编程的便利,不过Reactor对于异步编程的初学者来说有点复杂了,看其源码也不是那么容易,那么JDK有没有对异步编程相关的支持呢?Future想必大家都很熟悉(不了解的同学请查看Callable&Future及FutureTask实现分析( 阅读全文
posted @ 2023-10-31 16:56 mingshan 阅读(65) 评论(0) 推荐(0) 编辑
摘要:title: GC都有哪些? tags: [JVM, GC] author: Mingshan categories: [JVM, GC] date: 2020-03-11 相信把Java当做生产力工具的同学肯定对gc比较熟悉的,JVM团队在这块下了很多的功夫创造了很多垃圾收集器,不过有些垃圾收集器 阅读全文
posted @ 2023-10-30 15:02 mingshan 阅读(35) 评论(0) 推荐(0) 编辑
摘要:Arthas 是Alibaba开源的Java诊断工具,可以查看Java进程的一些信息,例如运行情况、JVM相关参数、线程等信息,采用命令行交互模式,在Linux用着十分方便。 安装 在Linux系统中,首先创建一个文件下,然后在该文件下执行如下命令: curl -L https://alibaba. 阅读全文
posted @ 2023-10-30 15:01 mingshan 阅读(378) 评论(0) 推荐(0) 编辑
摘要:数据在计算机中都是以01的形态进行存储,位运算可以直接对01进行操作,其效率自然很高,在Java源码中是很常见的。这里总结位运算的概念以及常见的操作,后续遇到会补充。 位运算符 位运算是需要使用位运算符的,位运算符有如下几种(本表以java语言中的位运算为标准): 含义 符号 简述 按位与 a & 阅读全文
posted @ 2023-10-30 08:45 mingshan 阅读(14) 评论(0) 推荐(0) 编辑
摘要:我们在使用ReentrantLock进行加锁和释放锁时可能会有好奇,这种加锁释放锁的操作和synchronized有什么区别,所以就会去翻源码,一翻源码才发现这里面的知识别有洞天,因为涉及到并发编程最基础最难理解的部分,其中AbstractQueuedSynchronizer这个类是java.uti 阅读全文
posted @ 2023-10-28 08:52 mingshan 阅读(17) 评论(0) 推荐(0) 编辑
摘要:上篇文章AQS源码分析-独占模式分析了AQS的结构以及独占模式下资源的获取与释放流程,啰嗦了AQS的基本结构和独占模式。这篇文章主要是探讨下AQS在共享模式下资源的获取与释放,同时比较下两种模式的差异(本文基于JDK11版本)。 流程分析 - 获取资源 这篇文章以CountDownLatch为例,和 阅读全文
posted @ 2023-10-28 08:51 mingshan 阅读(19) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示