![](https://img-blog.csdnimg.cn/20181228004111682.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
JAVA/JVM/JDK并发源码
文章平均质量分 90
主要是本人看过JAVA/JVM/并发书后的总结
燕双嘤
程序辅导,毕业设计,课程作业,比赛代打等,17724838277
展开
-
JVM:双亲委派,内存溢出,垃圾回收,调优
双亲委派机制的意义主要是保护一些基本类不受影响。比如常用的 String类, 其全限定名是 java.lang.String,只是 java.lang 这个包下的类在使用的时候,可以不用 import 而直接使用。像这种基本类 按照双亲委派机制 都应该从 rt.jar 里去获取,而不应该从自定义加载器里去获取某个开发人员自己写的 java.lang.String,毕竟开发人员自己写的 java.lang.String 可能有很多 bug,通过这种方式,无论如何大家使用的都是 rt.jar 里的 java.l原创 2019-06-21 18:00:48 · 1185 阅读 · 0 评论 -
JVM:内存区域,对象创建,对象死亡
对于从事C、C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高全力的“皇帝”,又是从事最基础工作的劳动人民——既拥有每一个对象的“所有权”,又担负着每一个对象声明从开始到终结的维护责任。对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄露和内存溢出的问题,看起来由虚拟机管理内存一切都很美好。不过,也正是因为Java程序员把控制内存的权利交给了Java虚拟机,一旦出现内存泄露和溢出方面的问题,如果不了解虚.原创 2021-06-18 15:48:06 · 425 阅读 · 1 评论 -
Java:设计模式
模式是一条由三部分组成的通用规则:它代表了一个特定环境、一类问题和一个解决方案之间的关系。每一个模式描述了一个不断重复发生的问题,以及该问题解决方案的核心设计。软件领域的设计模式定义:设计模式是对处于特定环境下,经常出现的某类软件开发问题的,一种相对成熟的设计方案。由来:有资深的软件设计师,它们积累了足够的经验,这些经验让他们快速、优雅地解决软件开发中的大量重复问题。而设计模式的最终目标就是帮助人们利用软件设计师的集体经验,从而设计出更加优秀的软件。设计模式通产分为三类:创建型:创建对象时.原创 2021-02-19 21:16:59 · 328 阅读 · 0 评论 -
JAVA:JDBC数据库编程
1,JDBC概述JDBC(Java Database Connectivity,Java数据库连接),提供了一种与平台无关的用于执行SQL语句的标准Java API,可以方便地实现多种关系型数据库的统一操作,它由一组用Java语言编写的类和接口组成。在实际开发中可以直接使用JDBC进行各个数据库的连接与操作,而且可以方便地向数据库中发送各种SQL命令。JDBC的核心是为用户提供Java API类库,让用户能够创建数据库连接、执行SQL语句、检索结果集、访问数据库元数据等。JDBC的主要操作原创 2018-08-16 13:03:32 · 3461 阅读 · 0 评论 -
Java:网络编程
1,Java对网络通信的支持1.1,InetAddressInetAddress类主要表示IP地址,这个类有两个子类:Inet4Address、Inet6Address,一个用于表示IPV4,一个表示IPV6。方法 描述 public static InetAddress getByName(String host) throws UnknownHostException 通过主机名称得到InetAddress对象 public static InetAddress get原创 2021-01-05 16:29:02 · 234 阅读 · 0 评论 -
Java:IO(NIO、字符集、文件锁、NIO2(AIO))
BufferedReader读取输入流中的数据时,如果没有读到数据,程序将在此处阻塞该线程(使用InputStream的read()方法从流中读取数据时,如果数据源中没有数据,它也会阻塞该线程),也就是说输入流、输出流都是都是阻塞式的输入、输出。不仅如此,传统的输入流、输出流都是通过字节的移动来处理的(即使不直接去处理字节流,但底层的实现还是依赖于字节处理),也就是说,面向流的输入/输出系统一次只能处理一个字节,因此面向流的输入/输出系统通常效率不高。从JDK1.4开始,Java提供了一系列改进的输入.原创 2021-08-04 18:03:27 · 281 阅读 · 0 评论 -
Java:IO(System类、数据操作流、合并流、压缩流、序列化)
5,System类对IO的支持System类的常量 描述 public static final PrintStream out 对应系统标准输出,一般是显示器 public static final PrintStream err 错误信息输出 public static final InputStream in 对应着标准输入,一般是键盘 System类的三个常量不符合命名规则是因为,这些都是Java历史发展的原因。5.1,System.outS原创 2020-12-25 09:01:15 · 253 阅读 · 0 评论 -
Java:IO(File、RandomAccessFile、字节流和字符流、其他流)
1,操作文件类(File)在整个io包中,唯一与文件本身相关的类就是File类。使用File类可以进行创建或删除文件等常用操作,如果要使用一个File类,则必须向File类的构造方法中传递一个文件路径。public File(String pathname)...原创 2020-12-22 17:50:02 · 221 阅读 · 0 评论 -
Java:多线程(同步死锁、锁&原子变量、线程通信、线程池)
5,同步和死锁5.1,线程同步(1)同步方法:即有synchronized关键字修饰的方法,由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。需要注意,synchronized关键字也可以修饰静态方法,此时如果调用该静态方法,将会锁住整类。public synchronized void test(){ ......}(2)同步代码块:即有synchronized关键字修饰的语句块,被该关原创 2020-12-16 18:06:03 · 975 阅读 · 0 评论 -
Java:多线程(进程线程、线程状态、创建线程、线程操作)
1,线程概述1.1,进程和线程进程:是程序的一次动态执行过程,它需要经历从代码加载、代码执行道执行完毕的一个完整过程,这个过程也是进程本身从产生、发展到最终消亡的过程。多进程操作系统能同时运行多个线程,由于CPU具备分时机制,所以每个进程都能循环获得自己的CPU时间片。线程:是比进程更小的执行单位,线程是在进程的基础之上进行的进一步划分。所谓多线程是指一个在执行过程中可以产生多个更小的程序单元,这些更小的单位称为线程。几乎所有的操作系统都支持进程的概念,所有运行中的任务通常对应一个进程原创 2020-12-15 13:00:48 · 635 阅读 · 0 评论 -
Java:类集
类集:就是一个动态的对象数组,是对一些实现好的数据结构的包装,这样在使用时会非常方便,而且最重要的是类集框架本身不受对象数组长度的限制。类集的特性:(1)这种框架是高性能的,对基本类集(动态数组、链接表、树和散列表)的实现是高效率的。所以一般很少需要人工对这些"数据引擎"编写代码。(2)框架必须允许实现不同类型的类集以相同的方式和高度互操作方式工作。(3)类集必须是容易扩展和修改的。为了实现这一目标,类集框架被设计成包含了一组标准接口。常用的接口有:Collection、List、Set、Ma.原创 2020-12-27 13:33:34 · 520 阅读 · 0 评论 -
Java:异常处理、包、访问控制权限
1,异常处理异常是导致程序中断运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失,所以在程序的设计中要考虑各种异常的发生,并正确地做好相应的处理,这样才能保证程序的正常地执行。为什么需要异常:在没有异常处理的语言中如果要回避异常,就必须使用大量的判断语句,配合所想到的错误状况来捕捉程序中所有可能发生的错误。但是这样也未必能捕捉到所有的错误,而且这样做势必导致程序运行效率的降低。Java的异常处理机制恰好改进了这一点。它具有易于使用、可自定义异常、处原创 2020-12-13 15:30:37 · 610 阅读 · 1 评论 -
Java:面向对象(多态、instanceof、Object、对象克隆,包装类)
5,对象的多态性在Java中主要有两种体现形式:(1)方法的重载和重写。(2)对象的多态性。5.1,方法的重载(覆盖)和重写(覆写)https://shao12138.blog.csdn.net/article/details/110431228#t55.2,对象的多态性(1)向上转型:子类对象➡父类对象,程序会自动完成,父类 父类对象 = 子类实例。class A{ public void fun(){ System.out.println("H原创 2020-12-12 12:55:03 · 323 阅读 · 0 评论 -
Java:面向对象(继承、this&super&final、抽象类、接口)
1,继承1.1,继承的基本概念Java的继承通过extends关键字来实现,实现继承的类被称为子类,被继承的类被称为父类,有的也称为基类、超类。父类和子类的关系,是一种一般和特殊的关系。子类只能从父类继承成员变量、方法和内部类(包括内部接口、枚举),不能获得构造器和初始化块。在Java中只允许单继承,不能使用多继承。即一个子类只能继承一个父类。但是允许多层继承,即一个子类可以有一个父类,一个父类还可以有一个父类。class Person{ private String na.原创 2020-12-08 09:13:32 · 518 阅读 · 0 评论 -
Java:面向对象(static、代码块、构造方法私有化、内部类)
1,static关键字static:使用static声明的属性,此属性为全局属性(静态属性),static声明的属性是所有对象共享的。1.1,static声明属性class Person{ static String name; private int age; public Person(String name,int age) { this.setName(name); this.age = age; } publ原创 2020-12-05 16:23:58 · 622 阅读 · 0 评论 -
Java:面向对象(基本概念、垃圾回收、类与对象、封装构造)
1,基本概念“面向过程”和“面向对象”例如:现在有两位师傅“面向过程”和“面向对象”要设计一个首饰盒。(1)面向过程:用户提出哪些要求,师傅就针对用户的要求进行制作,直接制作出一个完整的整体,本身也不准备好做首饰盒的所需要的工具,而是需要什么再单独拿什么。(2)面向对象:针对用户提出的要求进行分析,并将分析的结果设计成一张完整的图纸,与需求的用户确认,然后将一切的准备工作全部处理完之后再分块制作,最后将各个小的部分组装在一起。面向对象要比面向过程更能适应用户的变化,而一旦用户有变化之.原创 2020-12-02 12:53:55 · 560 阅读 · 0 评论 -
Java:数组方法、引用传递、变量类型、Lambda表达式
1,数组定义及使用1.1,定义数组Java中的数组也是一种基本数据类型,它本身是一种引用类型。例如,int[]就是一种数据类型,与int类型、String类型类似,一样可以使用该类型来定义变量,也可以使用该类型进行类型转换等。使用int[]类型来定义变量、进行类型转换时与使用其他普通类型没有任何却别。int[]类型是一种引用类型,创建int[]类型的对象也就是创建数组,需要使用创建数组的语法。Java语言支持两种语法格式来定义数组:int[] score;int score[];对原创 2020-12-01 14:58:13 · 1376 阅读 · 0 评论 -
Java:简介、关键字、数据类型、String、运算符、流程控制
1,Java的特性封装性:把对象的属性和行为看成一个密不可分的整体,将这两者“封装”在一个不可分割的独立单位(即对象)中。继承性:在Java程序设计中,已有的类可以是Java开发环境所提供的一批最基本的程序——类库,用户开发的程序类是继承这些已有的类。这样,现在类所描述过的属性及行为,即已定义的变量和方法,在继承产生的类中完全可以使用。根据继承机制,派生类继承超类的所有成员,并相应地增加了自己的一些新的成员。面向对象程序设计中的继承机制大大增加了程序代码的可复用性,提高的软件开发效率,降低了程序产原创 2020-12-01 10:05:40 · 904 阅读 · 0 评论 -
Java:反射(基本概念,动态代理)
1,Class类的定义在正常的情况下,需要先有一个类的完整路径引入之后才可以按照固定的格式产生实例化对象,但是在Java中也允许通过一个实例化对象找到一个类的完整信息,那么这就是Class类的功能。class X{}public class Main { public static void main(String[] args) { X x = new X(); System.out.println(x.getClass().getName());原创 2021-02-05 15:42:56 · 443 阅读 · 0 评论 -
Java:常用类库
String 字符串常量、StringBuffer 字符串变量(线程安全)、StringBuilder 字符串变量(非线程安全)String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变 的,直至这个对象被销毁。StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过 StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改原创 2020-12-19 15:38:19 · 388 阅读 · 2 评论 -
Java:枚举
1,枚举对于大部分面向对象编程来说,类和接口是完全够用的,但是一些特殊情况下,这些方法就不适合。例如:想定义一个Color类,它只能有Red,Green,Blue3个值,其他的任何值都是非法的,如果采用传统的构造是极其麻烦的,另外还有一些不安全的问题。引入枚举(Enum)就能避免这些问题。1.1,使用简单程序完成枚举的功能使用类完成枚举的功能package Test;public class Color { public static final Color RED =原创 2021-01-30 20:53:23 · 136 阅读 · 0 评论 -
Java:泛型
1,为什么要使用泛型现在需要设计一个可以表示出坐标点的类,坐标由X和Y组成,坐标的表示方法有3中:(1)整数表示:x=10,y=20;(2)小数表示:x=10.5,y=20.6;(3)字符串表示:x="东经180度",y="北纬210度"首先想到必须建立一个Point,在类中有两个属性分别用来表示x坐标和y坐标,但是x和y中所保存的数据类型会有3种(int、float、String),而要想使用一个类型可以同时接收3种类型数据,则只能使用Object,因为Object类可以接受任何类型的原创 2020-12-18 09:02:55 · 312 阅读 · 0 评论 -
Java:各个版本特性(7~20)
switch语句的字符串支持:可以在switch语句中使用字符串作为条件表达式。try-with-resources语句:可以在try语句中使用资源(如文件、网络连接等),在代码块结束后自动关闭资源。泛型实例化类型自动推断:可以省略泛型实例化类型的定义,编译器会自动推断类型。原创 2019-03-06 19:24:57 · 5199 阅读 · 0 评论