java学习
来自火星的猫
这个作者很懒,什么都没留下…
展开
-
java类加载过程
原创 2020-07-22 09:54:32 · 113 阅读 · 0 评论 -
JVM_11 运行时数据区 - 方法区
目录1. 堆、栈、方法区的交互关系2. 方法区的理解3.设置方法区大小与OOM方法区OOM4.方法区的内部结构类型信息域信息(成员变量)方法信息永久代为什么要被元空间替换1. 堆、栈、方法区的交互关系运行时数据区结构图堆、栈、方法区的交互关系2. 方法区的理解《Java虚拟机规范》中明确说明:‘尽管所有的方法区在逻辑上属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。’但对于HotSpotJVM而言,方法区还有一个别名叫做Non-he原创 2020-07-15 15:59:28 · 338 阅读 · 0 评论 -
JVM _10 运行时数据区 - 堆
目录1.核心概述堆的细分内存结构2.设置堆内存大小与OOM3.年轻代与老年代5.Minor GC、Major GC、Full GC6.堆空间分代思想7.内存分配策略8.为对象分配内存:TLAB(线程私有缓存区域)9.小结堆空间的参数设置1.核心概述一个进程对应一个jvm实例,一个运行时数据区,又包含多个线程,这些线程共享了方法区和堆,每个线程包含了程序计数器、本地方法栈和虚拟机栈。一个jvm实例只存在一个堆内存,堆也是java内存管理的核心区域 Java堆.原创 2020-07-13 22:18:53 · 257 阅读 · 0 评论 -
JVM_09 本地方法栈
本地方法栈1.Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理本地方法(一般非Java实现的方法)的调用2.本地方法栈,也是线程私有的。3.允许被实现成固定或者是可动态拓展的内存大小。(和Java虚拟机栈在内存溢出方面情况是相同的)如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一个StackOverFlowError异常。如果本地方法栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应.原创 2020-07-12 18:39:10 · 92 阅读 · 0 评论 -
JVM_08 本地方法接口
本地方法接口在讲Java虚拟机运行时数据区中本地方法栈之前,我们先来说说运行时数据区之外的一个叫本地方法接口的东西简称JNI(Java Native Interface)简单来讲,一个Native Method就是一个java调用非java代码的接口,一个Native Method 是这样一个java方法:该方法的底层实现由非Java语言实现,比如C。这个特征并非java特有,很多其他的编程语言都有这一机制,比如在C++ 中,你可以用extern “C” 告知C++ 编译器去调用一个C的函数.原创 2020-07-12 18:36:14 · 222 阅读 · 0 评论 -
JVM_07 栈帧
栈帧的内部结构每个栈帧中存储着1.局部变量表(Local Variables)2.操作数栈(Operand Stack)(或表达式栈)3.动态链接(Dynamic Linking)(或执行"运行时常量池"的方法引用)----深入理解Java多态特性必读!!4.方法返回地址(Return Adress)(或方法正常退出或者异常退出的定义)5.一些附加信息其中部分参考书目上,称方法返回地址、动态链接、附加信息为帧数据区局部变量表(Local Varia...原创 2020-07-09 18:01:24 · 522 阅读 · 0 评论 -
JVM_06 虚拟机栈
虚拟机栈的背景由于跨平台性的设计,java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。根据栈设计的优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。内存中的堆与栈栈是运行时的单位,而堆是存储的单位1.栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储的问题,即数据怎么放、放在哪儿。2.一般来讲,对象主要都是放在堆空间的,是运行时数据区比较大的一块3.栈空间存放 基本数据类型的局部变量,以及原创 2020-07-09 17:55:16 · 128 阅读 · 0 评论 -
JVM_05程序计数器
JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。一个线程对应一个JVM Stack。JVM Stack 中包含一组Stack Frame。当 JVM 调用一个 Java 方法时,它从对应类的类型信息中得到此方法的局部变量区和操作数栈的大小,并据此分配栈帧内存,然后压入 JVM 栈中。在活动线程中,只有..原创 2020-07-08 17:57:04 · 89 阅读 · 0 评论 -
JVM_04运行时数据区
目录Java内存空间Java内存分区介绍Java中的线程与进程Java线程JVM系统线程分类Java内存空间内存是非常重要的系统资源,是硬盘和cpu的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了JAVA在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的jvm对于内存的划分方式和管理机制存在着部分差异(对于Hotspot主要指方法区)JDK8的元数据区+JIT编译产物 就是JDK8以前的方法区Java内存分区介绍.原创 2020-07-08 17:53:45 · 73 阅读 · 0 评论 -
JVM_03 双亲委派机制
Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将她的class文件加载到内存生成的class对象。而且加载某个类的class文件时,java虚拟机采用的是双亲委派模式,即把请求交由父类处理,它是一种任务委派 模式双亲委派机制工作原理代码示例如图,虽然我们自定义了一个java.lang包下的String尝试覆盖核心类库中的String,但是由于双亲委派机制,启动加载器会加载java核心类库的String类(BootStrap启动类加...原创 2020-07-05 11:15:33 · 171 阅读 · 1 评论 -
JVM_02 类加载子系统
JVM细节版架构图-----------------------------------------------------------类加载子系统作用1.类加载子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识即16进制CA TE BA BE;2.加载后的Class类信息存放于一块成为方法区的内存空间。除了类信息之外,方法区还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)...原创 2020-07-05 11:09:30 · 149 阅读 · 0 评论 -
JVM学习笔记)_01简介
学习宋红康老师的jvm课程的笔记计算机系统当中JVM所处的位置JVM是运行在操作系统之上的,并没有和硬件有直接的交互Java一次编译,到处运行古今JVM SUN Classic Exact VM HotSpot VM :HotSpot指热点代码探测技术 BEA JRockit:(BEA 已被Oracle收购) 专注于服务端应用,世界最快的jvm之一 IBM J9 Taobao JVM: 目前已经在淘宝、天猫上线,替换了Orac.原创 2020-07-04 16:10:43 · 145 阅读 · 1 评论 -
maven的pom文件出错
在使用maven下载jar包时会经常发生,很多原因导致下载失败。Could not transfer artifact org.springframework:spring-tx:jar:4.0.0.RELEASE from/to aliMaven (http://maven.aliyun.com/nexus/content/groups/public).......很长错误,pom文件报错:大致意思就是内容大概就是xxxxxxx jar包出问题之类的,下载的不完整,找不到相应的jar包。解..原创 2020-05-20 15:19:29 · 534 阅读 · 0 评论 -
了解AOP
(这是为学spring boot aop打下基础,让我们先认识一下java的aop)AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部...原创 2019-11-10 15:41:35 · 326 阅读 · 0 评论 -
CSS学习笔记01
1.《html页面引入CSS》------------------------------外部引入:<link rel="stylesheet" type="text/css" href="css.css" />注释:(text/css ->文本/css,即css文本)。。REL属性用于定义连接的文件和HTML文档之间的关系,只有 rel 属性的 "styl...原创 2018-09-15 14:41:57 · 115 阅读 · 0 评论 -
CSS技巧(一):清除浮动
浮动的清除:摘自其他博客的 ,偶然看到,写的很好 https://www.cnblogs.com/ForEvErNoME/p/3383539.html html中的标签缩写的英文是什么?ul是unordered lists的缩写 (无序列表)li是list item的缩写 (列表项目)ol是ordered lists的缩写(有序列表)dl是definition...原创 2018-09-15 10:57:06 · 205 阅读 · 0 评论 -
HTML学习01笔记
1 单词: meta(变换) charset(字符集n,比如UTF-8)2注释: <!-- 注释-->3标签: 01 标题:<h1> 标题1<h1> <h1> 标题2<h1> 总共6个h6 02 分割线:<hr/> ...原创 2018-09-14 15:49:07 · 87 阅读 · 0 评论 -
学习RESTful
1什么是restful :(百度的) RESTful(RESTful Web Services)一种架构风格,表述性状态转移,它不是一个软件,也不是一个标准,而是一种思想,不依赖于任何通信协议,但是开发时要成功映射到某协议时也需要遵循其标准,但不包含对通信协议的更改特征: 1.通过url地址来标识资源,系统中的每个对象或资源都可以通过其url地址来获取 2.统一...原创 2020-02-06 16:50:07 · 159 阅读 · 0 评论 -
spring mvc 初认识
Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web 框架,即使用了MVC架构模式的思想,将web 层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发.Spring Web MVC作用:非常简单的设计出干净的Web 层和薄薄的Web 层;提供强大的约定大于配置的契约式编程支持;支持灵活的URL到...原创 2019-11-25 21:10:12 · 94 阅读 · 0 评论 -
spring编程式事务
编程式事务:需要编写代码控制事务在哪里开始,哪里提交,哪里回滚。public class StuCardServiceImpl implements StuCardService{ private StuCardDao scDao; private TransactionTemplate transactionTemplate; /** * 转账支付,当金额不足时,抛出...原创 2019-11-23 16:30:09 · 198 阅读 · 0 评论 -
spring jdbc 01连接MySQL数据库
JdbcTemplate 简介 为了使 JDBC 更加易于使用, Spring 在 JDBC API 上定义了一个抽象层, 以此建立一个 JDBC 存取框架. 作为 Spring JDBC 框架的核心, JDBC 模板的设计目的是为不同类型的 JDBC 操作提供模板方法. 每个模板方法都能控制整个过程, 并允许覆盖过程中的特定任务. 通过这种方式, 可以在尽可...原创 2019-11-16 16:14:52 · 126 阅读 · 0 评论 -
Java入门基础
今天学习了入门级的Java,写了第一个Java程序。也从中明白了一些道理,因为是入门,我感觉这些道理对现在的我们很重要。万事开头难,可是明白了一些道理也就不会轻易放弃了。 一,一定要实事求是,会即会,不会的话不要装懂。毕竟在兴唐这里老师也是十分的负责任的。若是装懂,越往后学就会更加吃力。二,问题不一定是坏事,出的问题越多的话,你学的也就越多。在计算机领域中谁也不是万能的,只...原创 2018-03-18 23:00:13 · 100 阅读 · 0 评论 -
java数据类型和运算符
今天复习前几天所学的知识,有关java最基础的东西。也就是数据结构和运算符。首先是java标识符。Java标识符有如下命名规则: 1、标识符由字母、数字、 “_”、 “$”组成,且首字母不能是数字; 2、不能把Java关键字作为标识符; 3、标识符没有长度限制; 4、标识符对大小写敏感。 5、不能包含空格。 ja...原创 2018-03-31 15:23:48 · 116 阅读 · 0 评论 -
java控制流程
最近学了java的分支语句,if和switch的分支语句。if包括单分支,多分支,双分支,嵌套分支。嵌套if——一个分支结构中包含另一个完整分支结构,当有多个条件时分别判断多个条件可以提高程序可读性。if若是去掉大括号{},则只对第一行代码有效。要注意else不能单独使用。 switch分支语句, switch(表达式){case 常量1: ;break;case 常量2...原创 2018-04-06 22:01:21 · 423 阅读 · 0 评论 -
java 知识细点
一 类和对象的区别: 1,类是一个抽象的概念,它不存在于现实中的时间/空间里,类只是为所有的对象定义了抽象的属性与行为。就好像“Person(人)”这个类,它虽然可以包含很多个体,但它本身不存在于现实世界上。 2,对象是类的一个具体。它是一个实实在在存在的东西。 3,类是一个静态的概念,类本身不携带任何数据。当没有为类创建任何对象时,类本身不存在于内存空间中。 4,对象是一个动态的...原创 2018-04-23 22:01:05 · 102 阅读 · 0 评论 -
java 插入排序
有点迷,刚开始。 用数组对数字进行排序(升序)。 public class ArraySort{ public static void main(String []args){ int array[]={1,3,1,64,61,6146,4,64,61,31}; int i; for(i=1;i<array.length;i++){ int willSo...原创 2018-05-01 22:02:54 · 65 阅读 · 0 评论 -
折半查找法
折半查找法(half-interval search) 的优点是 比较次数少,查找速度快,平均性能好; 其缺点是 要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。public class half-interval search{ //折半法查找一个数是否在有序列表中 public st...原创 2018-05-02 11:52:55 · 607 阅读 · 0 评论 -
抽象类和接口
一 抽象类 abstract修饰类和方法:①修饰的类称之为抽象类 ②修饰的方法称之为抽象方法,抽象方法只有声明部分,没有具体的方法体。 一个abstract类只关心子类就有什么样的功能,功能的具体行为由子类实现。抽象类不能直接实例化,即不能用new 来创建抽象类的对象。 抽象类可以没有抽象方法,但是一旦类中包含abstract的方法,则这个类一定是抽象类,...原创 2018-05-20 17:11:38 · 93 阅读 · 0 评论 -
接口和类的区别
抽象类和接口的对比参数抽象类接口默认的方法实现它可以有默认的方法实现接口完全是抽象的。它根本不存在方法的实现实现子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现构造器抽象类可以有构造器接口不能有构造器与正常Java类的区别除了你不能实例化抽象类之外,它和普通J...转载 2018-05-20 17:17:45 · 5215 阅读 · 0 评论 -
java 继承和多态
继承:①是一种基于已有的类来创建新类的机制。由继承而得到的类叫做子类,被继承的类叫做父类。java中一个父类只允许有一个父类,语法格式:class<子类>extends<父类>。Object类是所有类的直接或间接父类。②继承的优点,子类可以继承父类的某些成员变量和方法,提高了代码的重用性。③如果类被final修饰,则不能被继承。java中一些已有的类诸如(Void,Stri...原创 2018-05-15 09:21:29 · 102 阅读 · 0 评论 -
抽象类和接口的区别
这个比较好理解一些:默认方法:Java8以前版本中规定,接口中所定义的方法只能是抽象方法,从Java8开始,接口中可以添加一个或多个由default关键字修饰的非抽象方法,该方法又称为扩展方法,该默认方法将由接口实现类创建的对象来调用,如下例 静态方法同样,从Java8开始,接口中可以添加一个或多个由static关键字修饰的非抽象方法,该方法将由接口或其实现类直接调用。...原创 2018-05-26 15:15:53 · 104 阅读 · 0 评论 -
intanceof 运算符
一 instanceof运算符用于判断该运算符前面引用类型变量指向的对象是否是后面类,或者其子类、接口实现类创建的对象。如果是则返回true,否则返回false,其使用格式如下: 引用类型变量 instanceof (类、抽象类或接口)二 instanceof运算符用于强制类型转换之前检查对象的真实类型以避免类型转换异常,从而提高代码健壮性。interface IMammal...原创 2018-05-26 15:44:02 · 1556 阅读 · 0 评论 -
java中的异常处理(1)
Java语言将程序运行过程中所发生的不正常严重错误称为异常,对异常的处理称为异常处理。会中断正在运行的程序 异常分类:Throwable有两个直接子类,Error类和Exception类。①Error : 指合理的应用程序在执行过程中发生的严重问题。当程序发生这种严重错误时,通常的做法是通知用户并中止程序的执行 ②Exception:异常可分为运行时异常(...原创 2018-07-30 20:11:00 · 138 阅读 · 0 评论 -
Java异常处理(2)关于throw ,throws
关键字throwthrow用于抛出具体异常类的对象,一般用于方法体中。throw关键字一般用在方法体中,也可以用在代码块中,但如果代码块中抛出的异常对象是由 检查时异常 创建的,则必须使用try-catch进行处理。使用throw抛出异常对象如果没有try-catch捕获该异常对象,则该抛出异常对象语句执行后其所在方法结束执行。throws关键字throws用于声明方法可能抛出...原创 2018-07-30 20:53:18 · 427 阅读 · 0 评论 -
系统的重装
这是大一下学期,此时刚开学,兴唐也已经开课了。我们也要开始正式学习Java。虽说我是计算机专业的,担心现在的我却是一个计算机方面的小白。各方面都不懂,真的可以说是白手起家了。 万事开头难,现在的我处于一个比较难说的状态。已经开学上课快一周了,学校也安排了C语言学习课程,重要的是老师讲的飞快,丝毫没有顾忌我们的感受。不过也正常谁让我没有预习呢。而现在呢压力也有一点小小的大,...原创 2018-03-15 23:00:03 · 265 阅读 · 0 评论