随笔分类 - java学习随笔
摘要:关于synchronized https://wiki.openjdk.java.net/display/HotSpot/Synchronization 其作为java 原语级别的同步工具,其通过字节码提升技术 当其作用在代码块上时通过monitorEnter和monitorExit命令实现锁的操作
阅读全文
摘要:关于reentrantLock 中 fair 和 unfair体现 对于 reentrantLock 其核心实际是利用AbstractQueueSynchronizer (AQS); 对于reentrant就是通过判断当前线程是否相等作为可重入条件 AQS 实际就是一个双向链表组成的队列,对于队列中
阅读全文
摘要:SPI : service provider interface, 其实际是java提供的一套用于被第三方实现或扩展的API 其体现了 java 基于接口编程的思想, 可以搭配策略模式以及配置文件实现自定义扩展 例如 :数据库驱动,日志,spring,以及dubbo/druid等 关于SPI 相关配
阅读全文
摘要:对于所谓序列化操作实际就是将要传输的数据转换为字节流或ByteBuffer https://en.wikipedia.org/wiki/Serialization 维基百科对于序列化的定义 可以参考java 中 ObjectOutputStream/ObjectInputStream 对于 java
阅读全文
摘要:对于 简单的 no block io ,实际还是建立的 server <-> client 的连接关系; 一般我们所了解到或听到的模型 一般都会 搭配 "多路复用"的概念; 对于多路复用实际就是 利用了 Selector(选择器)相关实现复用的目的; https://en.wikipedia.org
阅读全文
摘要:根据 java.nio.channels.Channel 的规范定义 中 存在一个定义 称为 network io 对于 network, 在 java 1.7 中增加了一个新的接口 java.nio.channels.NetworkChannel,其定义规范了网络相关api 这里我们重点看一下 其
阅读全文
摘要:对于 从jdk 1.7 开始引入新的 文件系统 称为 nio; 和之前io的不同点在于 存在新的api java.nio.file.Path 以及新的文件系统 java.nio.file.FileSystem 新的工具类: java.nio.file.Files 以及 java.nio.filePa
阅读全文
摘要:对于 try-with-resources 语法结构 since jdk7,其利用 java.lang.AutoCloseable 接口定义, 对于实现当前接口中close方法的 concrete(实现(非抽象)) 类达到自动释放资源的目的 对于try-with-resources 语法使用要求其中
阅读全文
摘要:简单设计思路: 文件变化实际就是 基于 java.io.File#lastModified (最新更新时间); PS:对于不同的操作系统底层对于文件变更可能会有不同的更新策略, 例如 mac下对于子目录下的变更并不会更新所有父级目录更新时间,对于目录的变更时间只针对于直接子级,对于间接子级的变更是不
阅读全文
摘要:对于 java.io.DataInputStream和DataOutputStream 一般利用当前操作可以实现对象深度拷贝; 但这其中利用到了 Serializable 对于 DataInputStream#readObject 和 DataOurputStream#writeObject 在操作
阅读全文
摘要:对于字符流和字节流的区别在于对于字节流是为了程序或机器直接使用的数据, 而字符流是为了满足人来使用的数据; 对于java 语言 是使用 unicode 编码规范,根据不同的字符集来转换为对应的字符 对于字符流实际都是基于 Reader/Writer进行实现 直接实现 文件:java.io.FileR
阅读全文
摘要:对于程序而言,其使用字节流来操作 输出/输入 8位 的字节数据; 对于 java中所有的字节流操作实际都是基于 Input/OutputStream 直接实现 : 文件:java.io.FileInput/OutputStream 数组:java.io.ByteArrayInput/OutputSt
阅读全文
摘要:对于cglib 的字节码提升技术 本质是通过构建一个新的对象,当前对象是属于被代理对象的子类,通过组装新的对象的字节码利用 java.lang.ClassLoader#defineClass(java.lang.String, byte[], int, int, java.security.Prot
阅读全文
摘要:JDK 原生动态代理 对于 JDK 动态代理 实际是 利用了 java.lang.reflect.Proxy#newProxyInstance 来获得动态代理对象 对于得到的动态代理对象结果 分析 getClass -> com.sun.proxy.$Proxy0 getSuperClass ->
阅读全文
摘要:从java 1.7开始之后, java并不在提供原生的 apt 工具, 而是提供了丰富的 API来进行支持 对于APT和 reflect 的主要区别在于, 对于 reflect 是属于运行时增强,而 APT是在编译时增强, 相对比而言, 前端编译时增强对性能损耗最小,因为对于用户而言是无感知的;
阅读全文
摘要:property java beans specification 7 properties Properties are discrete, named attributes of a Java Bean that can affect its appearance or its behaviou
阅读全文
摘要:/* * Copyright (c) 2020, guoxing, Co,. Ltd. All Rights Reserved */ package com.xingguo.java.beans.properties; import java.beans.*; import java.io.Seri
阅读全文
摘要:java beans specification 9 customization When a user is composing an application in an application builder we want to allow them tocustomize the appea
阅读全文
摘要:java beans specification introspection overview 8.1 At runtime and in the builder environment we need to be able to figure out which properties,events
阅读全文
摘要:/* * Copyright (c) 2020, guoxing, Co,. Ltd. All Rights Reserved */ package com.xingguo.reflection.application; import lombok.extern.slf4j.Slf4j; impor
阅读全文