自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (2)
  • 收藏
  • 关注

原创 Spring学习笔记1-简介

1. Spring是什么Spring是分层的Java SE/EE应用的full-stack级开发框架以IoC(Inverse Of Control)和AOP(Aspect Oriented Programming)为内核,提供了展现层Spring MVC和持久层Spring JDBC以及义务层事务管理等众多的企业级应用技术.还能整合开源世界众多注明的第三方框架和类库. 逐渐成为使用最多的Ja...

2020-03-14 17:51:44 187

原创 NIO学习笔记

1 简介Java NIO是从java 1.4版本开始引入的一个新的IO API目的—替代标准版的Java IO APINIO与原来的IO有同样的作用和目的,但是使用方式完全不同NIO支持面向缓冲区的,基于通道的操作NIO以更高效的方式进行文件的读写操作2 与IO的主要区别IOIONIO面向流(Stream Oriented)面向缓冲区(Buffer O...

2020-03-11 22:39:42 121

原创 JVM学习笔记26-G1垃圾收集器停顿预测模型和最佳实践

G1收集器突出表现出来的一点是通过一个停顿预测模型根据用户配置的停顿时间来选择Cset的大小,从而达到用户期待的应用程序暂停时间通过-XX:MaxGCPauseMillis参数来设置,这一点有点类似于Parallel Scavenge收集器.关于停顿时间的设置并不是越短越好设置的时间越短意味着每次收集的Cset越小,导致垃圾逐步积累变多,最终不得不退化成Serial GC;停顿时间设置的过...

2020-03-10 11:08:39 584

原创 JVM学习笔记25-G1垃圾收集器三色标记算法和SATB

1三色标记算法对于并发标记,我们不得不了解并发标记的三色标算法它是描述追踪式回收器的一种有效方法,利用它可以推演回收器的正确性我们将对象分成三种类型:黑色—根对象, 或者该对象与它的子对象都被扫描过(对象被标记了,且它的所有field都被标记完了)灰色—对象本身被扫描,但还没扫描完该对象中的子对象(它的field还没有被标记或标记完)白色—未被扫描对象,扫描完成所有对象之后,最终为白...

2020-03-09 23:16:42 1979 3

原创 JVM学习笔记24-G1垃圾收集器

G1收集器—Garbage First Collector1 背景吞吐量吞吐量关注的是,在一个指定的时间内最大化一个应用的工作量如下方式来衡量一个系统吞吐量的好坏在一小时内同一个事务(或者任务, 请求)完成的次数(tps)数据库一小时可以完成多少次查询对于关注吞吐量的系统,卡顿是可以接受的,因为这个系统关注长时间的大量任务的执行能力,单次快速的响应并不值得考虑响应能力...

2020-03-09 12:29:04 318

原创 JVM学习笔记23-GC相关参数

-verbose:gc–输出GC的详细信息-Xms20M --堆初始大小-Xmx20M --堆最大-Xmn10M --新生代大小-XX:+PrintGCDetails --输出gc详情-XX:SurvivorRatio=8 --设置Eden和Survivor空间比例java -XX:+PrintCommandLineFlags -version输出当前jvm...

2020-03-08 16:44:44 90

原创 JVM学习笔记22-Java内存泄露的经典原因

1. 对象定义在错误的范围(Wrong Scope)如果Foo实例对象的生命周期比较长,会导致临时性内存泄露—这里的names变量其实只有临时作用Class Foo{ private Stirng[] names; public void test(int length){ if(names == null || names.length < length){ names ...

2020-03-07 19:07:31 97

原创 JVM学习笔记20-内存结构,内存回收和空间分配担保

如下图所示

2020-03-07 13:33:29 90

原创 JVM学习笔记19-常见GC算法

1.标记-清除算法–Mark-Sweep2.标记-整理算法–Mark-Compact3.复制算法–Copying4.分代算法–Generational

2020-03-07 13:28:50 188

原创 JVM学习笔记18-垃圾判断算法

1 引用计数算法–Reference Counting给对象添加一个引用计数器,规定如下当有一个地方引用它,计数器+1当引用失效,计数器-1任何时刻计数器为0的对象就是不能再被使用的引用计数器无法解决对象循环引用的问题2 根搜索算法–Root Tracing在实际的生产语言中(Java, C#等),都是使用根搜索的算法判定对象是否存活算法的基本思路就是通过一系列的称为GC ...

2020-03-06 23:38:51 173

原创 JVM学习笔记16-基于栈的指令集与基于寄存器指令集之间的关系

基于栈的指令集的操作方法JVM执行指令时所采用的方式是基于栈的指令集基于栈的指令集主要的操作有两种入栈出栈可移植性基于站的指令集的优势在于它可以在不同平台间移植,基于寄存器的指令集是与硬件架构紧密关联的,无法平台间移植各自缺点基于站的指令集的缺点在于完成相同的操作,指令数量通常要比基于指令集数量要多指令完成区域基于栈的指令集是在内存中完成操作的...

2020-03-06 23:00:34 169

原创 JVM学习笔记15-解释执行与编译执行

1. 解释执行与编译执行现代JVM在执行Java代码的时候,通常都会将解释执行与编译执行二者结合起来进行1.1解释执行就是通过解释器来读取字节码,遇到相应的指令,就去执行该指令1.2编译执行就是通过及时编译器—JIT将字节码转换为本地机器码现代JVM会根据代码热点来生成相应的本地机器码...

2020-03-06 22:59:40 157

原创 JVM学习笔记13-静态解析和动态链接

1.静态解析有些符号引用是在类加载阶段或是第一次使用时就会转换为直接引用,这种转换叫做静态解析静态解析的四种情形:静态方法父类方法构造方法私有方法(无法被重写)以上四种方法被称作非虚方法,他们是在类加载阶段就可以将符号引用转换为直接引用2.动态链接有些符号引用则是每次运行期间转化为直接引用,这种转换叫做动态链接.这体现为Java的多态性3.相关字节码指令invokein...

2020-03-06 22:58:28 1227 2

原创 JVM学习笔记14-方法的静态和动态分派

1.6方法的静态分派代码示例如下:public class MyTest5 { public void test(Father father){ System.out.println("father"); } public void test(Son son){ System.out.println("son"); } ...

2020-03-06 22:57:19 98

原创 JDK1.8学习笔记3-Optional容器对象

Optional主要是为了避免出现NPE-NullPointerException空指针异常

2020-03-06 22:46:49 89

原创 JVM学习笔记1-JVM结束生命周期的几种情形

执行System.exit()方法程序正常执行结果程序在执行过程中遇到了异常或错误而终止由于OS错误而导致JVM进程终止

2020-03-06 22:46:17 79

原创 JVM学习笔记12-对象的结构及创建

1 对象的创建过程new 类名根据new的参数在常量池中定位一个类的符号引用如果没有找到这个符号引用.则进行类的加载,解析和初始化JVM为对象分配内存–位于堆中将分配的内存初始化为零值(不包括对象头)调用对象的<init>方法2.给对象分配内存1.指针碰撞2.空闲列表3.内存分配线程安全问题解决方案本地线程分配缓冲线程同步...

2020-03-06 22:04:57 86

原创 JVM学习笔记11-Java对象分配原理与布局

关于Java对象的创建的过程

2020-02-05 13:59:35 148

原创 JDK1.8学习笔记6-Stream流

Stream流是一系列元素支持串行和并行聚合操作

2019-10-15 22:37:18 378

原创 JDK1.8学习笔记5-默认方法

1 同时实现两个接口当两个接口的方法相同是,实现列必须重写其方法,不然编译器无法确定当前类实现的是哪个接口的方法示例public class MyClass1 implements MyInterface1, MyInterface2{ public static void main(String[] args) { MyClass1 myClass = new ...

2019-10-15 22:36:59 85

原创 JDK1.8学习笔记4-方法引用

方法引用—Method Reference是Lambda表达式的一种特殊情况,或者是Lambda表达式的语法糖

2019-10-15 22:36:47 106

原创 JDK1.8学习笔记2-函数式接口

1Function函数式接口简介1.1基本用法示例public class FunctionTest { public static void main(String[] args) { FunctionTest functionTest = new FunctionTest(); System.out.println(functionTest....

2019-10-15 22:36:21 288

原创 JDK1.8学习笔记1-Lambda表达式

Lambda表达式—是一种表示匿名函数,闭包的运算符1. 需要Lambda表达式的原因在Java中,我们无法将函数最为参数传递给一个方法,也无法声明返回一个函数的方法在JavaScript中,函数参数是一个函数,返回值是另一个函数的情况是非常常见的—JavaScript是一门非常典型的函数式语言...

2019-10-15 22:36:08 94

原创 JVM学习笔记17-JVM内存划分

栈帧-(Stack Frame)栈帧是一种用于帮助JVM执行方法调用与方法执行的数据结构栈帧本身是一种数据结构,封装如下信息方法的局部变量表,动态连接信息,方法的返回地址操作数栈等静态解析有些符号引用是在类加载阶段或是第一次使用时就会转换为直接引用,这种转换叫做静态解析动态链接有些符号引用则是每次运行期间转化为直接引用,这种转换叫做动态链接.这体现为Java的多态性...

2019-10-15 22:34:48 117

原创 JVM学习笔记10-Java字节码文件结构剖析示例

4 访问标志访问标志信息包括该Class文件是类还是接口是否被定义为public是否是abstract如是类是否被声明成final表3. Class access and property modifiers–类访问和属性修饰符标志名值说明ACC_PUBLIC0x0001声明为public,可以从其包外部访问ACC_FINAL0x0010声明为...

2019-10-15 22:34:30 88

原创 JVM学习笔记9-Java字节码文件结构剖析

使用javap -verbose命令分析一个字节码文件时,将会分析该字节码文件的魔数,版本号,常量池,类信息,类的构造方法,类中的方法信息,类变量与成员变量信息魔数所有.class文件的字节码文件的前4个字节都是魔数,魔数值为固定值—0xCAFEBABE...

2019-10-15 22:34:19 169

原创 JVM学习笔记4-类加载器

类加载器有两种类型的类加载器JVM自带的加载器根类加载器(Bootstrap)–启动类加载器扩展类加载器(Extension)系统(应用)类加载器(System)用户自定义的类加载器java.lang.ClassLoader的子类用于可以定制类的加载方法类加载器并不需要等到某个类被"首次主动使用"时再加载它JVM规范允许类加载器在预料到某个类将要被使用是...

2019-10-15 22:33:54 117

原创 JVM学习笔记8-常用指令,助记符,JVM参数

JVM参数-XX:+<option>-表示开启option选项-XX:+TraceClassLoading—输出class加载日志-XX:-<option>表示关闭option选项-XX:+HeadDumpOnOutOfMemoryError—输出内存溢出日志助记符getstatic—静态变量取值putstatic—静态变量赋值invokest...

2019-10-15 22:33:30 133

原创 JVM学习笔记7-类的卸载

       当MySample类加载,连接和初始化后,它的生命周期就开始了.       若代表MySample类的Class对象不再被引用,即不可触及时,Class对象就会结束生命周期,MySample类在方法区内的数据也会被卸载,从而结束MySampl...

2019-10-15 22:33:01 71

原创 JVM学习笔记6-上下文加载器

当前类加载器-Current ClassLoader      每个类都会使用自己的类加载器(即加载自身的类加载器)来去加载其他类(指所依赖的类)如果ClassA引用了ClassB,那么ClassA的类加载器就会去加载ClassB(前提是ClassB尚未被加载)线程上下文加载器-Context ClassLoader ...

2019-10-15 22:32:28 76

原创 JVM学习笔记5-类加载器代码示例及命名空间

public class MyTest16 extends ClassLoader{ private String classLoaderName; private final String fileExtension = ".class"; public MyTest16(String classLoaderName){ //将系统类加载器当做该类加载器...

2019-10-15 22:31:58 97

原创 JVM学习笔记3-类的加载,连接和初始化

JVM学习笔记你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心...

2019-10-15 22:31:43 152

原创 JVM学习笔记2-主动使用及代码示例

##主动使用的特点对静态字段来说,只有直接定义了该字段的类才会被初始化当一个类在初始化时,要求其父类全部都已经初始化完毕public class MyTest1 { public static void main(String[] args) { System.out.println(Child1.str1); System.out.printl...

2019-10-15 22:31:19 118

原创 JVM学习笔记21-垃圾收集器

如果说收集算法是垃圾回收的方法论,那么垃圾收集器是内存回收的具体实现主要的垃圾收集器有以下几种:Serial收集器ParNew收集器Parallel Scavenge收集器Serial Old收集器Parallel Old收集器CMS收集器G1收集器...

2019-10-15 22:30:58 155

原创 Java源码分析3-HashMap

以下内容基于JDK1.8以下内容将分为如下几个章节概述继承关系图构造函数常用方法优缺点概述继承关系图

2019-07-16 22:27:02 180

原创 Chrome浏览器返回上一页填充文本框Bug

先附上代码<html><body> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> <script > $(function () { $("#test2").before('first input:<input t...

2019-07-12 10:55:51 500

原创 Java源码分析2-LinkedList

以下内容基于JDK1.8以下内容将分为如下几个章节概述继承关系图构造函数常用方法优缺点概述List和Deque接口的双链表实现实现了所有List相关的操作接收所有类型元素,包括Null对于双向链表,所有操作都是可以预期的索引到列表中的操作将从开头或结尾遍历列表,以较接近指定索引为准非线程安全...

2019-07-11 23:22:49 78

原创 Java源码分析1-ArrayList

用大小可变数组存储数据的方式实现了List接口实现了所有List相关的操作接收所有类型元素,包括Null提供了非同步,类似Vector的方法来操作内部数组(用于存储列表)的大小

2019-07-11 23:14:00 116

复制文件到U盘

检测U盘的空间大小,并复制文件夹中的文件到U盘中,

2012-11-22

页面置换算法

模拟页面置换算法,通过随机产生序列对其用FIFO LRU LFU OPT进行置换并输出置换结果

2012-11-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除