Java
文章平均质量分 77
一、基础知识
二、JVM原理
三、HashMap原理
四、线程
五、多线程并发
六、锁机制
七、Java异常
八、IO
九、集合
十、泛型
十一、数据库连接池
L_D_Y_K
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
十三、Java Agent
java.lang.instrument.Instrumentation是instrument包中定义的一个接口,也是这个包的核心部分,集中了其中几乎所有的功能方法,例如类定义的转换和操作等。在程序运行后加载,是不可能在主程序A中编写加载的代码,只能另写程序B,A、B程序之间的通信会用到attach机制,它可以将JVM B连接至JVM A,并发送指令给JVM A执行,JDK自带常用工具如jstack,jps等就是使用该机制来实现的。MANIFEST.MF文件用于描述Jar包的信息,例如指定入口函数等。原创 2023-08-16 17:21:22 · 565 阅读 · 0 评论 -
十四、Java SPI
大多数开发人员可能不熟悉,因为这个是针对厂商或者插件的。①、当服务提供者提供了接口的一种具体实现后,在jar包的META-INF/services目录下创建一个以“接口全限定名”为命名的文件,内容为实现类的全限定名。a、SrviceLoader只能通过遍历全部获取,也就是接口的实现类全部加载并实例化一遍,如果有扩展实现初始化很耗时,但如果没用上也加载,会很浪费资源。③、系统里抽象的各个模块,往往有很多不同的实现方案,在面向的对象的设计里,一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。原创 2023-08-16 17:27:35 · 262 阅读 · 0 评论 -
十五、函数式编程
Terminal操作的执行,才会真正开始流的遍历,并且会生成一个结果。在对一个Stream进行多次转换操作Intermediate操作,每次都对Stream的每个元素进行转换,转换操作都是lazy的,多个转换操作只会在Terminal操作的时候融合起来,一次循环完成。函数接口的抽象方法可以是从超级接口继承而来,但继承而来的方法应该是覆写等效的,这种情况,在逻辑上,代表一个方法。如果值存在,就对该值执行提供的mapping函数调用,返回一个Optional类型的值,否则就返回一个空的Optional对象。原创 2023-08-16 17:45:05 · 233 阅读 · 0 评论 -
6、Selector
6、Selector(1)、特点 Selector(选择器)用于监听多个通道的事件(比如:连接打开,数据到达)。因此,单个的线程可以监听多个数据通道。即用选择器,借助单一线程,就可对数量庞大的活动I/O通道实施监控和维护。①、Netty的IO线程NioEventLoop聚合了Selector(选择器,也叫多路复用器),可以同时并发处理成百上千个客户端连接。②、当线程从某客户端Socket通道进行读写原创 2022-08-25 10:18:33 · 653 阅读 · 0 评论 -
5、Channel
通道(Channel)用于源节点与目标节点的连接,在Java NIO中负责缓冲区中数据的传输,Channel本身不存储数据,因为需要配合缓冲区进行传输。Channel是双向的,既可以用来进行读操作,又可以用来进行写操作。NIO把缓冲区的数据写入通道,或者把通道里的数据读到缓冲区。③、在JDK1.7中的NIO.2的Files工具类的newByteChannel()②、在JDK1.7中的NIO.2针对各个通道提供了静态方法open()Java针对支持通道的类提供了getChannel()方法。原创 2022-08-25 10:14:58 · 766 阅读 · 0 评论 -
4、Buffer
①、ByteBuffer:存储字节数据到缓冲区 ②、CharBuffer:存储字符数据到缓冲区 ③、ShortBuffer ④、IntBuffer ⑤、FloatBuffer ⑥、LongBuffer ⑦、DoubleBuffer原创 2022-08-25 10:09:57 · 413 阅读 · 0 评论 -
13、序列化和反序列化
序列化和反序列化原创 2022-08-25 09:30:45 · 267 阅读 · 0 评论 -
12、关系运算符
Java关系运算符原创 2022-08-25 09:31:03 · 209 阅读 · 0 评论 -
11、float、double、BigDecimal的区别
float、double、BigDecimal的区别原创 2022-08-25 09:31:12 · 1677 阅读 · 0 评论 -
10、String、StringBuilder、StringBuffer的区别
String、StringBuilder、StringBuffer的区别原创 2022-08-25 09:31:23 · 198 阅读 · 0 评论 -
2、final和static关键字
final和static关键字原创 2022-08-25 09:31:32 · 192 阅读 · 0 评论 -
1、基本数据类型和引用类型
1、基本数据类型和引用类型原创 2022-08-25 09:31:43 · 216 阅读 · 0 评论 -
十四、Java SPI
Java SPI解析原创 2022-08-24 16:23:18 · 214 阅读 · 0 评论 -
十三、Java Agent
java agent attach机制原创 2022-08-24 16:20:07 · 2454 阅读 · 1 评论 -
Java
目录一、Java基础知识二、JVM原理三、HashMap原理原创 2021-01-05 11:01:28 · 203 阅读 · 0 评论 -
十二、Java反射机制
十二、Java反射机制 1、概念(1)、Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。本质就是JVM得到字节码文件对象(.class)之后,再通过class对象进行反编译,从而获取对象的各种信息(方法、属性、类名、构造方法、父类名、实现接口等等)。 2、编译期和运行期(1)、编译期 通过编译器进行编译,Java源码(.java) —> Java字节码(.class)。...原创 2021-01-06 14:21:14 · 174 阅读 · 0 评论 -
十一、泛型
十一、泛型 1、概述 Java泛型(generics)是JDK 5中引入的一个新特性,泛型提供了编译时类型安全监测机制,该机制允许程序员在编译时监测非法的类型。使用泛型机制编写的程序代码要比那些杂乱地使用Object变量,然后再进行强制类型转换的代码具有更好的安全性和可读性。泛型对于集合类尤其有用,例如,ArrayList就是一个无处不在的集合类。 泛型的本质是参数化类型,也就是所操作的数据类型被指定为一个参数。把类型明确的工作推迟到创建对象或调用方法的时候才去...原创 2021-01-06 14:20:45 · 258 阅读 · 0 评论 -
十、Java集合
十、集合(java.util包) Collection和Map是集合框架的根接口,List、Set、Queue继承Collection接口。 1、数组和集合的区别 数组不是面向对象的,存在明显的缺陷,集合弥补了数组的缺点,比数组更灵活更实用,而且不同的集合框架类可适用不同场合。(1)、数组能存放基本数据类型和对象,而集合类存放的都是对象的引用,而非对象本身。(2)、数组容量固定无法动态改变,集合类容量动态改变。...原创 2021-01-06 14:19:16 · 317 阅读 · 1 评论 -
九、NIO
九、NIO 1、概述 JAVA NIO有两种解释:(1)、一种是同步非阻塞的I/O模型(Non-blocking I/O),就是应用程序的线程需要不断的进行I/O系统调用,轮询数据是否已经准备好,如果没有准备好,继续轮询,直到完成系统调用为止。(2)、一种是IO多路复用模型(New I/O),已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的有效方式。NIO是一种基于通道和缓冲区的I/O方式,它可以使用Nati...原创 2021-01-06 14:18:32 · 279 阅读 · 0 评论 -
八、Java IO
八、IO 1、在Java中有输入、输出两种IO流,每种输入、输出流又分为字节流和字符流两大类。 ①、字节:每个字节(byte)有8bit组成。 ②、字符:我们可能知道代表一个汉字或者英文字母。 ③、字节与字符的关系:Java采用unicode编码,通讲,2个字节来表示一个字符。在0~127整数之间的字符映射,unicode向下兼容ASCII,也就是1个字节表示一个字符。一个中文或英文字符的unicode编码都占2个字节。...原创 2021-01-06 14:17:45 · 348 阅读 · 0 评论 -
七、Java异常
七、Java异常 1、Exception(异常) 是程序本身可以处理的异常,Exception类有一个重要的子类RuntimeException。RuntimeException类及其子类表示“JVM常用操作”引发的错误。例如,若试图使用空值对象引用、除数为零或数组越界,则分别引发运行时异常NullPointerException、ArithmeticException和ArrayIndexOutOfBoundException。 (1)、Checked E...原创 2021-01-05 11:08:53 · 186 阅读 · 0 评论 -
六、Java 锁机制
六、锁机制 1、悲观锁和乐观锁 (1)、悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。 ...原创 2021-01-05 11:11:26 · 1274 阅读 · 1 评论 -
AbstractQueuedSynchronizer部分源码解析
/* * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * *//* * * * * * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to t.原创 2021-01-05 11:12:09 · 319 阅读 · 0 评论 -
ReentrantLock部分源码解析
package java.util.concurrent.locks;import java.util.Collection;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.AbstractQueuedSynchronizer;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;/**.原创 2021-01-05 11:12:57 · 393 阅读 · 0 评论 -
五、Java多线程并发
五、多线程并发 1、Volatile 当一个共享变量被volatile修饰时,它会保证修改的值立即被更新到主内存。volatile是Java提供的一种轻量级的同步机制。Java语言包含两种内在的同步机制:同步块(或方法)和volatile变量,相比于synchronized(synchronized通常称为重量级锁),volatile更轻量级,因为它不会引起线程上下文的切换和调度。但是volatile变量的同步性较差(有时它更简单并且开销更低),而且其使用也更容易出错。...原创 2021-01-05 11:08:22 · 510 阅读 · 1 评论 -
四、Java线程
四、线程 1、创建线程的方式 (1)、继承Thread类public class ThreadDemo extends Thread {}①、Thread类常用构造方法 a、Thread():分配新的Thread对象 b、Thread(String name):分配新的Thread对象,将制定的name作为线程名 c、Thread(Runnabl...原创 2021-01-05 11:05:31 · 499 阅读 · 0 评论 -
三、HashMap原理
三、HashMap原理 1、概述 HashMap在底层数据结构上采用了数组+链表+红黑树,通过Hash算法获取元素索引保存,hash值相同且key值相等的元素视为相同,则用新值替换旧值并返回旧值。HashMap中null总是放在数组的第一个链表中,最多允许一对键值对的Key为Null,允许多对键值对的value为Null。它是非线程安全的,在排序上面是无序的。JDK1.8中元素是插在链表的尾部,而1.7中新元素是插在链表的头部。 2、参数概念 (1...原创 2021-01-05 11:04:07 · 561 阅读 · 0 评论 -
二、JVM原理
二、JVM原理 1、执行过程 首先,当一个程序启动之前,它的class会被类装载器装入方法区,执行引擎读取方法区的字节码自适应解析,然后PC寄存器(程序计数器)指向了main函数所在位置,虚拟机开始为main函数在java栈中预留一个栈帧(每个方法都对应一个栈帧),然后开始跑main函数,main函数里的代码被执行引擎映射成本地操作系统里相应的实现,然后调用本地方法接口,本地方法运行的时候,操纵系统会为本地方法分配本地方法栈,用来储存一些临时变量,然后运行本地方法,调用操作系统A...原创 2021-01-05 11:03:43 · 617 阅读 · 0 评论 -
一、Java基础知识
一、Java基础知识 (1)、基本数据类型 基本类型 大小(字节) 默认值 封装类 byte 1 (byte)0 Byte short 2 (short)0 Short char ...原创 2021-01-05 11:02:52 · 194 阅读 · 0 评论
分享