- 博客(15)
- 收藏
- 关注
原创 JVM007_运行时栈帧结构
运行时栈帧结构 执行引擎是JVM的核心组件之一。 所有Java虚拟机的执行引擎输入输出都是一致的:输入的是字节码二进制流,处理过程是字节码解析执行的等效过程,输出的是执行结果。 JVM以方法作为作基本的执行单元。“栈帧”是用于支持虚拟机进行方法调用和方法执行背后的数据结构。这里的方法调用指的是确定调用那一个方法,也是JVM运行时数据区中栈的栈元素。栈帧存储的内容主要有:局部变量表,操作数栈,动态连接和方法返回地址信息等。 局部变量表 局部变量表是一组变量的存储空间。用以存储方法参数和方法内的局部变量。在编
2021-04-15 23:35:44
191
原创 JVM006_类加载的过程
类加载 类加载时机 类加载的过程 新术语 **类加载器:**简单的理解为将类转换为二进制流的类或接口。 数组的元素类型:数组去掉所有维度的类型。 **数组的组件类型:**数组去掉一个维度的类型。 基本块: 按照控制流拆分的代码块。 1. 加载 加载是类加载过程的一个阶段。加载阶段主要完成三件事情: 根据类的全限定名,获取定义此类的二进制字节流。 将这个二进制字节流所代表的静态存储结构转换为方法区的运行时数据结构。 在内存中生成一个代表该类的java.lang.Class对象,作为访问方法区中该类各种数据
2021-04-06 00:05:32
165
原创 JVM005_synchronized、同步指令、管程、MESA
synchronized、同步指令、管程、MESA synchronized是Java的一个关键词,可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,保证了原子性、可见性、有序性。 **临界资源:**一次只能被一个线程访问的资源。 **临界区:**访问临界资源的那段代码。 synchronized的应用 synchronized可以修饰: 静态方法,锁定的是当前类的Class对象,进入同步代码前需要先获得当前类的锁。 public class Test{ public synchr
2021-04-01 00:47:36
186
1
原创 JVM004_字节码指令简介
字节码指令简介 Java虚拟机指令由操作码(Opcode)和跟随其后的零至多个操作数(Operand)组成。 操作码:一个字节长度的,代表某种特定操作含义的数字。 操作数:操作码需要的参数。 字节码与数据类型 opcode byte short int long float double char reference Tstore istore lstore fstore dstore astore Tinc iinc Taload baload sa
2021-03-31 01:05:45
158
原创 JVM003_属性表
属性表 预备知识 javac -g Xxx.java 在生成class文件的时候生成所有调试信息 javap -v Xxx.class 输出附加信息 属性表结构 类型 名称 数量 备注 u2 attribute_name_index 1 属性名称索引,指向一个CONSTANT_Utf8_info型常量的索引 u4 attribute_length 1 该属性表的长度 u1 info attribute_length 属性值 Code属性表 Code属性表结构释义 a
2021-03-30 00:16:26
305
1
原创 Oracle查询表|注释|字段|字段注释
当前用户 所有用户 DBA 备注 user_tables all_tables dba_tables 表 user_tab_comments all_tab_comments dba_tab_comments 表注释 user_tab_columns all_tab_columns dba_tab_columns 表字段 user_col_comments all_col_comments dba_col_comments 字段注释 user_objects all_obje...
2021-03-24 11:19:24
209
原创 JVM001_类文件结构
无关性的基石 实现语言无关性的基础是虚拟机和字节码存储格式。Java虚拟机不与任何语言绑定(包括Java),它只与‘Class文件’这种特定的二进制文件格式所关联。Class文件中包含了Java虚拟机指令集、符号表以及其它辅助信息。出于安全考虑,《Java虚拟机规范》要求在Class文件中必须应用许多强制性的语法和结构化约束,但图灵完备的字节码格。 Class类文件的结构 Class文件是一组以8个字节为基础的二进制流,各项数据项目严格按照顺序紧凑的排列在文件中,中间没有任务分隔符。当遇到需要占用8个字节以
2021-03-18 00:26:41
305
4
原创 2021年3月15日_读书|总结笔记目录
欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示; 增加了 图片
2021-03-15 23:49:46
120
原创 Java类加载顺序
对于一个类初始化顺序为: 1.1 静态成员变量或静态代码块初始化(静态代码块也可以看成是一个成员变量) 1.2 成员变量 1.3 构造函数初始化 package com.laibaocen.javacode.test03; public class Being { private String name; private String order; Being(){ ...
2018-12-10 00:36:27
268
原创 Enum的简单使用
package cn.silica.vo; /** * @author laibaocen */ public enum Separator { /** * 枚举值 大写 * 如果只有枚举值,那么最后一个枚举值后可以不加分号 */ SEMICOLON(0,";","分号"),COLON(1,":","冒号"),CONNECTIVE (2,"-",...
2018-07-04 23:54:56
188
原创 Oracle中start with xx connect by prior 语句解析
Oracle中start with xx connect by prior 语句解析 Oracle这种的start with语句主要对B型树的数据进行递归查询.可以指定数据树上的任一节点,然后查找到它所有的子节点或者父节点. 现在有如下图的数据:我们先想数据库插入数据,这里用到oracle的批量插入写法# 1 建表 CREATE TABLE START_WITH ( sub_levels VA...
2018-05-24 01:21:24
549
原创 MySql主从同步最小配置
MySql主从同步最小配置MySql配置文件配置window: my.ini centos: my.cnf主数据库配置 #配置数据库的唯一标识符,一般1位主库,从库为ip地址最后一位 server-id = 1 #启用二进制日志,对应mysql-bin.xxxxx文件 log-bin = mysql-bin #需要同步的数据库名 binlog-do-db=test1 #不需要同步的数据库...
2018-04-15 22:59:08
218
原创 ZXing生成二维码
pom.xml<!-- https://mvnrepository.com/artifact/com.google.zxing/core --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId&...
2018-04-08 23:11:36
181
原创 Spring jndi连接数据库
Spring jndi连接数据库 JNDI 即Java命名目录接口 Java Naming Dictory InterfaceSpring.xml配置文件<bean name="dbsource1" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="jndi" value="java:c...
2018-04-02 23:39:08
459
原创 Maven配置_01
1 下载相应的Maven--->地址:http://maven.apache.org/download.cgi 2 将下载的压缩包解压到自己指定的文件夹 C:\OS\apache-maven-3.5.2 3 配置环境变量 3.1 此电脑-->鼠标右键-->属性-->高级系统设置-->环境变量 3.2 用户变量或者系统变量中选择 新建 输入变量名:M2_HOME 输入变量值:Maven的解
2017-12-18 19:42:39
191
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅