11 2019 档案
深入理解java虚拟机(15):编译器介绍
摘要:前端编译器,把java文件变成class文件字节码,sun的javac,Eclipse JDT中的编译插件ECJ。 JIT,just it time Hotswap的c1,c2把字节码转换成机器码,及时编译器。 AOT编译器:GCJ,JET把java文件变成机器码,静态提前编译器。 虚拟机团队把设计 阅读全文
posted @ 2019-11-29 17:57 清浊 阅读(629) 评论(0) 推荐(0)
深入理解java虚拟机(14):手写动态生成一个代理类
摘要:通过java动态生成一个代理类的代码如下 package aop.proxyutil;import javax.tools.JavaCompiler;import javax.tools.StandardJavaFileManager;import javax.tools.ToolProvider; 阅读全文
posted @ 2019-11-27 16:14 清浊 阅读(277) 评论(0) 推荐(0)
深入理解java虚拟机(13):类加载系统案例-OSGI灵活的类加载架构
摘要:OSGI灵活的类加载器架构,它制定了一个基于java语言的动态模块化规范。它的每一个模块都是以jar的格式进行封装(称为bundle)。一个bundle可以申明它所依赖的package,通过import导入,也可以导出发布 package.OSGI,Bunlde之间的依赖关系从传统的上层依赖于底层转 阅读全文
posted @ 2019-11-27 12:56 清浊 阅读(193) 评论(0) 推荐(0)
深入理解java虚拟机(12):类加载系统案例-tomcat类加载器架构
摘要:class文件格式与执行引擎这部分,用户程序可以影响的不多,class文件格式,以及如何存储,类型何时加载,何时连接以及虚拟机如何执行字节码指令等都由虚拟机直接控制的行为。能通过程序控制的只有字节码的生成和类加载器这两部分功能。 1、案例一:tomcat正统的类加载器架构 web服务器都有如下类加载 阅读全文
posted @ 2019-11-27 09:57 清浊 阅读(207) 评论(0) 推荐(0)
深入理解java虚拟机(11):基于栈的字节码解释执行引擎
摘要:1、解释执行 编译过程如下 2、基于栈的指令集和基于寄存器的指令集 java编译器输出的指令流,基本是一种基于栈的指令集架构,指令流中的大部分指令都是零地址,依赖于操作数工作。与之相对的是基于寄存器的指令集,也就是目前pc支持的指令集。两者的不同,举例如下: 1+1基于栈的指令集iconst_1,i 阅读全文
posted @ 2019-11-26 09:44 清浊 阅读(280) 评论(0) 推荐(0)
英语学习(3):句法实战
摘要:Finding enough time in the week to both carveout meaningful home experiences and alsocomplete high-priority work assignments seems to leaveboth domain 阅读全文
posted @ 2019-11-24 21:33 清浊 阅读(447) 评论(0) 推荐(0)
英语学习(2):句法和词法
摘要:词法名词变复数动词变第三人称辅音+y-》y变i+es形容词变比较级和最高级序数词和基数词互换主语从句-句子放在主语的位置做主语he is right What you said is right动词过去式一定是谓语,所以有谓语就是一定是一个句子。rigth是表语,表达对主语或者宾语的补充宾语从句,整 阅读全文
posted @ 2019-11-24 20:45 清浊 阅读(796) 评论(0) 推荐(0)
深入理解java虚拟机(10):方法调用
摘要:方法调用不等于方法执行,方法调用阶段的唯一任务就是确定被调用的方法的版本。class文件编译期间不包含传统程序的连接过程,因此方法不是实际内存运行的入口地址,这个特性给java带来了动态扩展的能力,也使java的方法调用过程变得更加复杂,需要在类加载期间甚至运行期间才能确定目标方法的引用。 1、解析 阅读全文
posted @ 2019-11-24 11:32 清浊 阅读(361) 评论(0) 推荐(0)
深入理解java虚拟机(9):字节码执行引擎介绍-栈帧
摘要:在不同的java虚拟机里面,执行引擎在执行java代码时可能会解释执行(通过解释器进行执行)也可能会编译执行(通过即时编译器产生本地代码进行执行),也可能两者兼备,甚至还可能包含几个级别不同的编译器执行引擎。 栈帧是虚拟机进行方法调用和方法运行的数据结构,是虚拟机运行时虚拟机栈的栈元素,存储了方法的 阅读全文
posted @ 2019-11-24 07:34 清浊 阅读(321) 评论(0) 推荐(0)
深入理解java虚拟机(8):类加载器
摘要:1、虚拟机将类加载阶段通过一个类的限定名来获取描述该类的二进制文件流的动作放到java虚拟机以外,以便让应用程序决定去如何获取所需的类,实现这个动作的类被称为类加载器。对于任意一个类需要有它的类加载器和这个类本身一同确立其在java虚拟机中的唯一性,每一个类加载器都有一个独立的类名称空间,两个类相等 阅读全文
posted @ 2019-11-23 23:37 清浊 阅读(271) 评论(0) 推荐(0)
英语学习(1):句子成分
摘要:1、主语 名词或者代词性质,典型的主谓宾结构。出现一下四种情况,就是典型的主谓宾结构。Be动词、动词的原形、动词的第三人称单数、动词过去式。 it is at night that the airfield comes to lifeis be动词airfield第三人称单数两个句子典型的一个主句从 阅读全文
posted @ 2019-11-23 22:24 清浊 阅读(379) 评论(0) 推荐(0)
深入理解java虚拟机(7):类的加载机制
摘要:虚拟机把类文件加载到内存,并对数据进行效验,解析和初始化,最终形成java虚拟机可以直接执行的java类型,这就是虚拟机的类加载机制。java在运行期间进行类的加载、连接和初始化,这就造就了java的可以动态扩展。 类的生命周期: 加载,验证,准备,解析,初始化,使用,卸载。初始化的五种情况:1、n 阅读全文
posted @ 2019-11-21 14:07 清浊 阅读(156) 评论(0) 推荐(0)
深入理解java虚拟机(6):运算指令简介
摘要:运算和算术指令用于对两个操作数栈上的值进行特定运算,并把结果重新存入操作数栈 4、类型转换指令 5、对象创建和访问指令 6、操作数栈管理指令 7、控制转移指令 8、方法调用和返回指令 9、异常指令处理 java虚拟机异常处理是采用异常表实现的 10、同步指令 java虚拟机可以支持方法一级和方法内部 阅读全文
posted @ 2019-11-20 20:49 清浊 阅读(184) 评论(0) 推荐(0)
深入理解java虚拟机(5):字节码指令简介
摘要:java虚拟机的指令由一个字节构成,由于class文件格式放弃了编译后代码的操作数长度对齐,所以虚拟机处理超过一个字节数据的时候不得不在运行时重建具体数据的结构。java虚拟机的执行模型如下 大部分与数据相关的字节码指令,他们的操作码助记符中都有特殊字符来表明他们是为哪类数据服务的,i表示int,f 阅读全文
posted @ 2019-11-20 20:28 清浊 阅读(237) 评论(0) 推荐(0)
深入理解java虚拟机(4):属性表的介绍
摘要:9.StackTable属性 它是一个变长的属性,位于code属性的属性表中。这个属性会在虚拟机类加载的字节码验证阶段被新的类型检查验证器使用,目的是代替以前比较消耗性能的基于数据流分析的类型推导器。 10、signature属性 为了弥补这个弥补泛型缺陷而增设的,会记录泛型擦除之前的类型, 11、 阅读全文
posted @ 2019-11-20 17:51 清浊 阅读(198) 评论(0) 推荐(0)
深入理解java虚拟机(3):属性表的介绍
摘要:1、code属性表 Code属性出现在方法表的属性集合中,它的结构如下 code是用于存储字节码指令的一系列字节码,一个字节码是一个字节,因此最多定义了256条指令,目前java虚拟机已经定义了 200多条指令,code_length 有4个字节理论可以存储2的32次方减一条指令,实际超过65536 阅读全文
posted @ 2019-11-20 17:31 清浊 阅读(822) 评论(0) 推荐(0)
深入理解java虚拟机(2):class文件认识-类索引,父类索引 和接口索引集合
摘要:类索引和父类索引都是一个u2的数据,接口索引集合十一组u2类型的数据集合,class由这三个数据项确定继承关系。 接第一篇文章里面部分常量池内容,这一块就是类索引和父类索引 在类,父类和接口索引集合后面是字段表,字段表的结构如下 其中name_index,descriptor_index这两个描述的 阅读全文
posted @ 2019-11-20 13:40 清浊 阅读(260) 评论(0) 推荐(0)
深入理解java虚拟机(1):class文件的认识
摘要:根据java虚拟机规范决定,class文件只有两种数据类型:无符号数和表。无符号是主要采用u1、u2、u4、u8来表示一个字节、两个字节、四个字节、八个字节。表是由多个无符号数或者其他表作为数据项构成的复合数据类型。class文件标准。 下面以一个class文件的二进制格式来进行讲解 首先第一个CA 阅读全文
posted @ 2019-11-20 09:44 清浊 阅读(230) 评论(0) 推荐(0)
从零开始开发区块链(2):区块链开发中的密码学知识
摘要:手写区块链中会采用各种密码学知识 对称加密-加密秘钥和解密秘钥是同一个,缺点是秘钥无法被安全传递,常用的对称加密算法有 DES,3DES(TripleDES),AES 非对称加密-公钥加密,私钥解密 公钥由私钥生成,私钥可以推导出公钥,公钥无法推导出私钥。优点:解决秘钥传输中的安全行问题。 常用算法 阅读全文
posted @ 2019-11-12 15:42 清浊 阅读(627) 评论(0) 推荐(0)
从零开始开发区块链(1):区块的内容和区块的生成
摘要:区块链是什么 分布式账本系统,由一个个区块相互连接组成。 每一个区块是由 区块头和区块体构成 区块头有index(索引),当前区块hash值,前一区块hash值,时间搓,工作量正面(一个随机数) 区块体主要用来存储我们需要存储的信息 package com.fj.blockchainmy.model 阅读全文
posted @ 2019-11-12 14:12 清浊 阅读(1364) 评论(0) 推荐(0)
mysql存储引擎
摘要:MyISAM 使用场景 非事务类型 只读类应用 空间类应用 Innodb Innodb使用表空间来存储数据 innodb_file_per_table on表示对立表空间 独立表空间可以通过optimize table来收缩系统文件 off表示系统表空间 无法简单收缩文件大小 支持行级锁,行级锁可以 阅读全文
posted @ 2019-11-11 22:14 清浊 阅读(176) 评论(0) 推荐(0)
影响mysql性能的因素
摘要:1、硬件 内存:相同品牌、颗粒、频率、电压、效验技术和型号单条容量尽可能大。 硬盘:寻道,移动磁头到磁盘表面上的正确位置,传输 等待磁盘旋转,使得所需的数据移动到磁头的下方,等待磁盘旋转过去,所有所需数据都被磁头读出来。 磁盘阵列也会影响 raid1 raid 5 raid5的写性能慢,随机读性能快 阅读全文
posted @ 2019-11-11 20:00 清浊 阅读(587) 评论(0) 推荐(0)
mysql事务
摘要:mysql事务是数据库系统区别于其他文件系统的重要特性之一,事务是一组具有原子性sql的语句,或是一个独立工作的单元。 事务具有以下几点特性: 原子性,隔离性,可持久性,一致性 事务隔离性的四个级别 1、未提交读 2、已提交读,一个事务中可以读到其他事务已经提交的数据。 3、可重复读,就是一个事务中 阅读全文
posted @ 2019-11-11 19:29 清浊 阅读(125) 评论(0) 推荐(0)
mysql索引一
摘要:首先mysql选择B+Tree作为存储数据结构,左闭合区间的B+Tree 一平衡二叉树一个节点存储数据太少,树的高度太大会导致需要需要搜索多次才能找到要查找的值。 B+Tree有一下几个有点 非叶子节点不存储data,只存储key,可以增大度,所以索引的值越小越好 叶子节点不存储指针 顺序访问指针, 阅读全文
posted @ 2019-11-08 22:06 清浊 阅读(134) 评论(0) 推荐(0)
Mybatis源码解析三:MappedStatement如何执行sql操作
摘要:首先我们找到DefaultSqlSession这个类,mybatis所有的数据库操作最后都会由这类进行实际数据库操作,后面我们会介绍是怎么调用到这个类里面的方法的 我们以下面这个方法为例: @Overridepublic <E> List<E> selectList(String statement 阅读全文
posted @ 2019-11-05 22:32 清浊 阅读(2711) 评论(0) 推荐(0)
mybatis源码解析二:mybatis是如何解析接口和xml然后生成一个Statement
摘要:首先我们先看一段spring的源码 public class Test { public static void main(String[] args){ AnnotationConfigApplicationContext annotationConfigApplicationContext = 阅读全文
posted @ 2019-11-05 20:18 清浊 阅读(392) 评论(1) 推荐(0)
mybatis源码解析一
摘要:首先我们写一个简单spring和mybatis集成的代码如下 public class Test { public static void main(String[] args){ AnnotationConfigApplicationContext annotationConfigApplicat 阅读全文
posted @ 2019-11-05 12:49 清浊 阅读(548) 评论(0) 推荐(0)
mybatis与spring结合
摘要:首先要理解spring的五大扩展点 1、BeanPostProcessor,可以管理一个Bean的初始化,对一个Bean生成代理就是在这个阶段执行。 2、BeanDefinitionRegistryPostProcessor,可以将一个自己的Bean注册到Spring容器中,mybatis扫描到ma 阅读全文
posted @ 2019-11-03 22:14 清浊 阅读(280) 评论(0) 推荐(0)
spring5日志系统
摘要:1、jcl jcl底层依赖于log4j和jul,如果有log4j就使用log4j记录日志,没有就是用jul spring5底层日志系统依赖的是spring-jcl,和传统的jcl(common-logging.jar)有区别,首先是尝试加log4j2里面的一个ExtendedLogger,然后尝试加 阅读全文
posted @ 2019-11-03 16:12 清浊 阅读(899) 评论(0) 推荐(0)