- 博客(23)
- 资源 (3)
- 收藏
- 关注
原创 【JVM学习笔记07】对象实例化与访问定位
七、对象实例化与访问定位7.1 创建对象的方式new:最常见的方式、单例类中调用 getInstance 的静态类方法,XXXFactory 的静态方法Class 的 newInstance 方法:反射的方式,在 JDK 9 里面被标记为过时的方法,因为只能调用空参构造器,权限必须是 publicConstructor 的 newInstance(XXX):反射的方式,可以调用空参的,或者带参的构造器,权限没有要求使用 clone():不调用任何的构造器,但是要求当前的类实现 Cloneabl
2021-11-23 11:02:12
779
原创 【JVM学习笔记06】堆
七、堆Java堆是Java虚拟机所管理的内存中最大的一块,其唯一的目的是存放对象实例。java堆是被所有线程所共享的一块内存区域(TLAB区除外),在虚拟机启动时创建,几乎所有对象的实例都存储在堆中,所有的对象和数组都要在堆上分配内存。堆和方法区针对一个 JVM 进程来说是唯一的,也就是一个进程只有一个 JVM ,但是进程包含多个线程,他们是共享同一堆和方法区空间的,每个线程各自包含一套程序计数器、本地方法栈和虚拟机栈。一个 JVM 实例只存在一个堆内存,堆也是 Java 内存管理的核心区
2021-11-19 20:05:40
767
原创 【JVM学习笔记05】虚拟机栈
六、虚拟机栈虚拟机栈描述的是 Java 方法执行的内存模型,方法的执行的同时会创建一个栈帧用于存储方法中的局部变量表、操作数栈、动态链接、方法的出口等信息。每个方法从调用直到执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。栈也叫栈内存,主管Java程序的运行,是在线程创建时创建,它的生命期是跟随线程的生命期,线程结束栈内存也就释放,对于栈来说不存在垃圾回收问题,只要线程一结束该栈就Over,生命周期和线程一致,是线程私有的。6.1 栈帧栈中的数据都是以栈帧(Stack Frame)
2021-11-17 20:53:16
839
原创 【JVM学习笔记04】类加载子系统
五、类加载器子系统Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称为虚拟机的类加载机制。类加载器的作用是负责加载Class文件,Class文件在文件开头有特定的文件标示,将Class文件字节码内容加载到内存中,并将这些内容转换成方法区中的运行时数据结构并且类加载器只负责Class文件的加载,至于它是否可以运行,则由Execution Engine决定5.1 类的生命周期一个类型(类或接口)从被加载
2021-11-16 09:56:48
173
原创 【JVM学习笔记03】类文件结构
【该章节主要总结了比较重要的部分,没有概述全面,后续将结合实际情况再继续补充完善】四、类文件结构我们平时说的 Java 字节码,指的是用 Java 语言编译成的字节码。准确的说任何能在 JVM 平台上执行的字节码格式都是一样的。所以应该统称为:JVM 字节码。不同的编译器,可以编译出相同的字节码文件,字节码文件也可以在不同的 JVM 上运行。Java 虚拟机与 Java 语言并没有必然的联系,它只与特定的二进制文件格式— Class 文件格式所关联,Class 文件中包含了 Java 虚拟机指令.
2021-11-14 13:42:04
748
原创 【JVM学习笔记02】运行时内存区域
JVM运行时内存区域三、运行时内存区域内存是非常重要的系统资源,是硬盘和 CPU 的中间仓库及桥梁,承载着操作系统和应用程序的实时运行 JVM 内存布局规定了 Java 在运行过程中内存申请、分配、管理的策略,保证了 JVM 的高效稳定运行。不同的 JVM 对于内存的划分方式和管理机制存在着部分差异。比如HotSpot有方法区,而其他虚拟机就没有方法区这个分区。Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随
2021-11-12 21:19:49
1344
原创 【JVM学习笔记01】概述
JVM概述JVM 体系结构概览:一、概述1.1 Java:跨平台的语言Java 是目前应用最为广泛的软件开发平台之一。随着 Java 以及 Java 社区的不断壮大 Java 也早已不再是简简单单的一门计算机语言了,它更是一个平台、一种文化、一个社区。作为一个平台,Java 虚拟机扮演着举足轻重的作用Groovy、Scala、JRuby、Kotlin等都是Java平台的一部分作为一种文化,Java 几乎成为了“开源”的代名词。第三方开源软件和框架。如Tomcat、Struts,MyBat
2021-11-11 20:49:51
1148
原创 Java学废之路10——Java8新特性
JAVA8新特性速度更快代码更少——Lambda强大的Stream API便于并行最大化减少空指针异常——optional零、速度更快速度更快指的是hashMap的结构增加了红黑树。在之前的hashmap结构中,jdk采用的是数组+链表的方式进行。当发生碰撞时,会极大地降低查找的效率。所以在jdk1.8中,采用了数组+链表+红黑树的方式,前提是当发生碰撞的个数大于8时且总容量大于64时,才会将链表结构转换为红黑树,此时会造成添加元素的效率降低,但是查找和删除等的效率会大大提高:一、
2021-11-07 14:40:19
201
原创 Zookeeper03—原理
Zookeeper原理ZAB——广播与崩溃恢复,保证数据最终一致性监听器分布式锁4.1 Session会话客户端与服务端之间的连接是基于 TCP 长连接,client 端连接 server 端默认的 2181 端口,也就是 session 会话。4.1.1 会话的创建从第一次连接建立开始,客户端开始会话的生命周期,客户端向服务端的ping包请求,每个会话都可以设置一个超时时间。sessionID: 会话ID,用来唯一标识一个会话,每次客户端创建会话的时候,Zookeeper 都会为
2021-11-02 20:51:00
1061
原创 Zookeeper02—安装、命令与集群搭建
二、安装与命令[2.0 Zookeeper 安装配置 | 菜鸟教程 (runoob.com)](https://www.runoob.com/w3cnote/Zookeeper -setup.html)2.1 安装2.1.1 安装 jdk安装jdk。创建目录 /usr/local/java ,将 jdk 安装包移入并解压至该目录。配置jdk环境变量。编辑 /etc/profileJAVA_HOME=/usr/local/java/jdk1.8.0_231CLASSPATH=JAV
2021-11-02 20:47:35
1105
原创 Java学废之路09——异常、断言与日志
异常、断言和日志一、背景在程序运行期间,由于程序的错误或者环境的影响造成用户的数据丢失等,为了避免这些错误的发生,系统应该做到以下几点:向用户通告错误保存所有的工作结果允许用户以妥善的形式退出程序异常——因为错误的输入或者网络的连接出现问题等;断言——在测试期间,需要各种检测以验证程序操作的正确性。然而在测试程序时,这些检测将会浪费特别多的时间,为了方便程序的测试,略过各种铺垫性的检测程序,引入断言;日志——当程序出现错误的时候,将错误的信息记录下来,方便用户的检查。二、异常Thro
2021-11-02 16:25:43
263
原创 Java学废之路08——反射与代理
八、反射与代理8.1 反射机制当使用字符串的形式给出一个类名时,依靠什么机制来获取他的类型呢?JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用对象的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。8.1.1 简介在日常的第三方应用开发过程中,经常会遇到某个类的某个成员变量、方法或是属性是私有的或是只对系统应用开放,这时就可以利用Java的反射机制来获取所需的成员变量或是方法(public或pri
2021-11-01 15:53:03
182
原创 Java学废之路07——IO流
七、IO流对于任何程序设计语言而言,输入输出(Input/Output)系统都是非常核心的功能。程序运行需要数据,数据的获取往往需要跟外部系统进行通信,外部系统可能是文件、数据库、其他程序、网络、IO设备等等。外部系统比较复杂多变,那么我们有必要通过某种手段进行抽象、屏蔽外部的差异,从而实现更加便捷的编程。I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道。在当今这个数据大爆炸时代,I/O 问题尤其突出,很容易成为一个性
2021-10-28 20:53:36
317
原创 Java学废之路06——泛型与集合
六、泛型与集合6.1 泛型为了能够更好的学习容器,我们首先要先来学习一个概念:泛型。泛型是JDK1.5以后增加的,它可以帮助我们建立类型安全的集合。在使用了泛型的集合中,遍历时不必进行强制类型转换。JDK提供了支持泛型的编译器,将运行时的类型检查提前到了编译时执行,提高了代码可读性和安全性。泛型的本质就是“数据类型的参数化”。泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用。使用泛型编写的代码要比那些杂乱的使用Object变量,然后再进行强制类型转换的代码具有更好的安全性,可读性。6.
2021-10-27 20:10:53
295
原创 Java学废之路05——枚举类、注解与比较器
05 JAVA枚举类、注解与比较器5.1 枚举类类的对象只有有限个,确定的。当需要定义一组常量时,强烈建议使用枚举类。JDK1.5之前需要自定义枚举类JDK 1.5 新增的 enum 关键字用于定义枚举类5.1.1 属性枚举类对象的属性不应允许被改动,所以应该使用 private final 修饰枚举类的使用 private final 修饰的属性应该在构造器中为其赋值若枚举类显式的定义了带参数的构造器,则在列出枚举值时也必须对应的传入参数5.1.2 自定义枚举类私
2021-10-23 15:26:43
156
原创 Java学废之路04——接口与内部类
04 JAVA接口与内部类4.1 接口4.1.1 接口与抽象类抽象类:声明方法的存在但不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不在该类中实现这些方法。抽象类中可以没有抽象方法;接口中的方法必须是抽象方法(1.8中的增强接口除外)抽象类中可以有普通的成员变量;接口中的变量必须被初始化抽象类只能被单继承,一个类可以实现多个接口抽象类不可被实例化,即不可直接new一个抽象类。但是,可以声明一个变量为抽象
2021-10-23 15:24:58
122
原创 Java学废之路03——类
03 JAVA类多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中, 那么多个类无需再定义这些属性和行为,只要继承那个类即可。继承的出现减少了代码冗余,提高了代码的复用性继承的出现,更有利于功能的扩展继承的出现让类与类之间产生了关系,提供了多态的前提3.1 概述在 Java 中,没有类就无法做任何事情。要想使用对象,就必须首先构造对象,并指定其初始状态,然后对对象应用方法。3.1.1 概述类是构造对象的模板或蓝图。由类构造对象的过程称为创建类的实例。封装是将数据与行为组合在
2021-10-23 15:22:18
158
原创 Java学废之路02——对象
02JAVA对象2.1 概述对象的特性:行为——可以对对象施加哪些操作?对象的行为是用可调用的方法定义的。状态——当施加了方法时,对象如何响应?对象状态的改变必须通过调用方法实现。标识——如何辨别具有相同行为与状态的不同对象?每个对象都有一个唯一的标识。2.1.1 对象与对象变量在 Java 中使用构造器构造新实例。构造器是一种特殊的方法,用来构造并初始化对象。//1 对象变量Date deadline;//2 对象//该句构造了一个Date类型的对象,并且它的值是对新
2021-10-23 15:17:58
148
原创 Java学废之路01——基础
Java基础面向对象的特征:抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。通过继承,子类可以使用父类中的一些成员变量与方法,从而提高代码的复用性,提高开发效率。新类继承了原始类的特性,新类称为原
2021-10-23 15:08:19
269
原创 Zookeeper01—概述
Zookeeperzookeepepr是一个经典的分布式数据一致性解决方案。作为分布式系统的分布式协同服务,致力于为分布式应用提供一个高性能、高可用,且具有严格顺序访问控制能力的分布式协调存储服务。一、概述1.1 使用场景zookeepepr是一个经典的分布式数据一致性解决方案。作为分布式系统的分布式协同服务,致力于为分布式应用提供一个高性能、高可用,且具有严格顺序访问控制能力的分布式协调存储服务。维护配置信息分布式锁服务集群管理生成分布式唯一ID1.1.1 维护配置信息jav
2021-07-09 22:03:26
97
原创 设计模式——行为型模式
行为型模式行为型模式主要是用于描述类或者对象是怎样交互和怎样分配职责的。它涉及到算法和对象间的职责分配,不仅描述对象或者类的模式,还描述了他们之间的通信方式,它将你的注意力从控制流转移到了对象间的关系上来。行为型类模式采用继承机制在类间分派行为,而行为型对象模式使用对象复合而不是继承。它主要包括以下11种设计模式:职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式。十二、职责链模式避免请求发送者与接收者耦合在一起,让多个对象
2021-07-09 22:01:14
887
原创 设计模式——结构型模式
结构型模式结构型模式主要是用于处理类或者对象的组合,它描述了如何来类或者对象更好的组合起来,是从程序的结构上来解决模块之间的耦合问题。它主要包括适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式这个七个模式。五、适配器模式将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。5.1 前言接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题。程序提供者们修改他们的代码;系统库被修正;各种程序
2021-07-09 22:00:43
2145
原创 设计模式——设计原则与创建型模式
设计模式0、概论设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。模式的经典定义:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,我们可以无数次地重用那些已有的解决方案,无需再重复相同的工作。即模
2021-07-09 22:00:31
221
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人