自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Liarboy

一条迈向梦想的道路

  • 博客(16)
  • 收藏
  • 关注

原创 Java NIO - IO多路复用

提供了非阻塞调用的方式,从操作系统层面解决了阻塞问题。将 socket 是否就绪检查逻辑下沉到操作系统层面,避免大量系统调用。告诉你有事件就绪,但是没告诉你具体是哪个 FD。epoll 直接将 fd 集合维护在内核中,通过红黑树来高效管理 fd 集合,同时维护一个就绪列表,当 fd 就绪后会添加到就绪列表中,当应用空间调用 epoll_wait 获取就绪事件时,内核直接判断就绪列表即可知道是否有事件就绪。

2022-09-28 09:31:09 3125 1

原创 Java NIO - 基础详解

Standard IO是对字节流的读写,在进行IO之前,首先创建一个流对象,流对象进行读写操作都是按字节 ,一个字节一个字节的来读或写。而NIO把IO抽象成块,类似磁盘的读写,每次IO操作的单位都是一个块,块被读入内存之后就是一个byte[],NIO一次可以读或写多个字节。

2022-09-23 09:43:01 1519 1

原创 Java IO- 源码解析: OutputStream

上一篇文章说了InputStream。JDK1.0中就有了这传统的IO字节流,也就是 InputStream 和 OutputStream。梳理下两者的核心:InputStream中有几个 read() 方法和 OutputStream中有几个 write() 方法。它们是一一对应的,而核心的是read()和write()方法。它们都没实现,所有本质调用是各自实现类实现的该两个方法。read() 和 write() ,对应着系统的Input和Output,即系统的输出输入。

2022-09-22 13:25:59 1709

原创 Java IO - 源码解析: InputStream

InputStream是一个抽象类,即表示所有字节输入流实现类的基类。它的作用就是抽象地表示所有从不同数据源产生输入的类,例如常见的FileInputStream、FilterInputStream等。二者,注意它是属于字节流部分,而不是字符流(java.io中Reader\Writer,下面会讲到)。4) 一个其他种类的流组成的序列化 (在分布式系统中常见)1) 字节数组(不代表String类,但可以转换)借用客官你们发财的小手,给个鼓励吧。5) 管道(多线程环境中的数据源)2) String对象。

2022-09-21 10:22:05 2308 1

原创 Java IO - 分类

IO:输入/输出(Input/Output)流:是一个种抽象的概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输。IO中的流就相当与我们日常生活中的管道,我们通过管道来把水引到用户,通过管道把石油输送到大罐.同样,我们利用流来从硬盘的文件中读数据到你的程序中,利用流来写数据到硬盘的文件IO流就是用来处理设备间数据传输问题的常见的应用:文件复制;文件上传;文件下载。

2022-09-20 10:54:52 2244 1

原创 Java 基础 - 反射

注解是插入你代码中的一种注释或者说是一种元数据(meta data)。这些注解信息可以在编译期使用预编译工具进行处理(),也可以在运行期使用Java反射机制进行处理。}在TheClass类定义的上面有一个的注解。注解的定义与接口的定义相似,下面是}在interface前面的@符号表名这是一个注解,一旦你定义了一个注解之后你就可以将其应用到你的代码中,就像之前我们的那个例子那样。在注解定义中的两个指示和,说明了这个注解该如何使用。表示这个注解可以在运行期通过反射访问。

2022-09-15 16:28:49 3917

原创 Java 基础 - 异常

// ...}try、catch和finally都不能单独使用,只能是try-catch、try-finally或者try-catch-finally。try语句块监控代码,出现异常就停止执行下面的代码,然后将异常移交给catch语句块来处理。finally语句块中的代码一定会被执行,常用于回收资源。throws:声明一个异常,告知方法调用者。throw :抛出一个异常,至于该异常被捕获还是继续抛出都与它无关。Java编程思想一书中,对异常的总结。在恰当的级别处理问题。

2022-09-14 10:56:48 2055 2

原创 Java 基础 - 注解

定义自己的注解}使用注解@Override}}}}用反射接口获取注解信息try {// 获取所有methods// 遍历// 方法上是否有MyMethodAnnotation注解try {// 获取并遍历方法上的所有注解}// 获取MyMethodAnnotation对象信息}}}}}激动的心,颤抖的手借用客官你们发财的小手,给个鼓励吧​。

2022-09-13 13:06:02 2044 1

原创 Java 基础 - 泛型

这种方法可以解决开始遇到的问题,编译器知道类型参数的范围,如果传入的实例类型B是在这个范围内的话允许转换,这时只要一次类型转换就可以了,运行时会把对象当做A的实例看待。在使用泛型的时候,我们可以为传入的泛型类型实参进行上下边界的限制,如:类型实参只准传入某种类型的父类或某种类型的子类。擦除方法定义中的类型参数原则和擦除类定义中的类型参数是一样的,这里仅以擦除方法定义中的有限制类型参数为例。当类定义中的类型参数存在限制(上下界)时,在类型擦除中替换为类型参数的上界或者下界,比如形如。

2022-09-09 13:57:42 2045 3

原创 Java 基础 - 基础知识

我们希望将这两个对象当成一样的,只在集合中添加一个对象,但是因为 EqualExample 没有实现 hasCode() 方法,因此这两个对象的散列值是不同的,最终导致集合添加了两个等价的对象。因此在方法中改变指针引用的对象,那么这两个指针此时指向的是完全不同的对象,一方改变其所指向对象的内容对另一方没有影响。例如在作为网络连接参数的情况下如果 String 是可变的,那么在网络连接过程中,String 被改变,改变 String 对象的那一方以为现在连接的是其它主机,而实际情况却不一定是。

2022-09-07 11:55:40 2422 1

原创 Java 基础 - 面向对象

本文主要介绍Java OOP 面向对象基础和相关类图。@LiarBoy。

2022-09-07 10:47:07 2170

原创 Java集合

一方面,面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另一方面,使用Array存储对象方面具有一些弊端,而Java集合就像一种容器,可以动态的把多个对象的引用放入容器中。1.数组Array存储(1)数组在内存存储方面的特点①数组初始化以后,长度就确定了。②数组声明的类型,就决定了进行元素初始化的类型。(2)数组在存储数据方面的弊端①数组初始化以后,长度就不可变了,不便于拓展。

2022-09-05 14:00:07 2187 2

原创 JVM调优

目录1、性能调优2、JVM调优的基本原则3、JVM调优目标4、JVM调优的步骤5、JVM参数6、内存优化示例7、延迟优化示例8、吞吐量调优9、调优工具性能调优包含多个层次,比如:架构调优、代码调优、JVM调优、数据库调优、操作系统调优等。架构调优和代码调优是JVM调优的基础,其中架构调优是对系统影响最大的。性能调优基本上按照以下步骤进行:明确优化目标、发现性能瓶颈、性能调优、通过监控及数据统计工具获得数据、确认是否达到目标。何时进行JVM调优遇到以下情况,就需要考虑进行JVM调优了: Heap内存(

2022-08-27 09:00:00 2199

原创 GC算法 垃圾收集器

垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理,因此,我们的内存垃圾回收主要集中于 java 堆和方法区中,在程序运行期间,这部分内存的分配和使用都是动态的。...

2022-08-26 16:00:00 2241

原创 JVM内存模型和结构

在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;方法区的内存回收目标主要是针对常量池的回收和对类型的卸载,一般来说这个区域的回收“成绩”比较难以令人满意,尤其是类型的卸载,条件相当苛刻,但是回收确实是有必要的。...

2022-08-26 11:04:44 3006

原创 Java类的加载机制

1、什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。

2022-08-23 10:54:32 2521 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除