自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 Synchronized的底层原理和锁的升级

Syncrhonized的作用方式 同步方法:锁是当前实例对象 静态同步方法:锁是类对象 同步代码块:锁是括号中的对象 实现同步的底层原理 JVM基于进入和退出Monitor对象来实现同步方法和同步代码块。同步方法经过编译后,会在常量池生成ACC_SYNCHRONIZED的标识符,通过给同步方法添加ACC_SYNCHRONIZED的标识符,实现同步。对于同步代码块,在编译后会在同步块前后添加monitorenter和monitorexit两条指令,实现同步。 锁的升级的过程 JDK1.6前synchro

2020-10-15 17:41:09 254

原创 Java框架-SpringMVC学习笔记

服务端的三层架构 服务端的三层为表现层(SpringMVC)、服务层(Spring)、持久层(MyBatis)。表现层通常负责和Client端的消息通信,如接收客户端的请求参数、返回响应结果给Client端;服务层主要负责应用程序的业务逻辑处理,如用户登录、用户注册等;持久层主要负责服务器和数据库之间的交互过程。 MVC设计模型 MVC是一种常用的web应用架构,MVC分别指Model、View、Controller。Controller主要负责接收用户的请求,然后根据请求去查询出相关的信息并将其封装到Mo

2020-09-27 13:10:17 105

原创 深入理解JVM笔记-Java的内存区域

Java内存区域 Java内存划分为5个部分,分别是程序计数器、虚拟机栈、本地方法栈、方法区、堆,其中程序计数器、虚拟机栈、本地方法栈都是线程私有的内存,而方法区和堆是线程共享的内存区域。 程序计数器中存放当前线程下一条要执行的字节码指令。虚拟机栈中存储的基本数据结构称为栈帧,每个方法被执行的时候,Java虚拟机都会创建一个栈帧用来存储局部变量表(保存函数参数、局部变量等)、操作数栈(用于存储临时变量的区域)、方法出口等信息。本地方法栈与虚拟机栈功能相同,但是用来存储本地方法的区域。方法区中存放了类的元信息

2020-09-21 22:24:38 122

原创 深入理解JVM笔记-程序的编译和优化

解析源代码,填充符号表 词法分析 首先通过词法分析,提取出源代码字符流中的关键字、运算符、变量等信息,从而生成一个标记(Token)集合,将源代码的字符流转换为一个Token集合 语法分析 词法分析结束后就会进行语法分析,该阶段操作的对象主要是Token集合,将Token集合按照程序的语法结构分类,生成一课语法树,之后编译器就不会对源代码字符流进行操作。 填充符合表 借助生成的语法树,对符号表进行填充,符号表是一组符号地址和符号信息构成的数据结构,之后符号表中的信息会在编译的各个阶段中用到。 编译期对语法

2020-09-19 15:12:18 115

原创 布隆过滤器

布隆过滤器(Bloom Filter) 应用:大样本量的黑名单系统 优点:省内存 缺点:存在失误率 布隆过滤器的构成 布隆过滤器是由一个n位的大位图和m个hash函数构成,初始位图每位都为0。查看一个url是否在黑名单中时,首先通过m个hash函数算出url的m个hash值,如果位图中对应的m位都为1,则判断url在黑名单中,否则不再。把一个url加入到黑名单中时,首先通过m个hash函数算出url的m个hash值,再将位图中对应的每位都置为1。 因此布隆过滤器非常的省内存,但是存在一定的失误率,url属于

2020-07-04 13:38:59 170

原创 二叉树的前中后序非递归Java实现

package com.quan.test; import com.quan.bean.TreeNode; import java.util.Stack; public class PrintBinaryTree { // Test public static void main(String[] args) { TreeNode root = new Tree...

2020-05-21 13:46:54 171

原创 Java基础-反射机制的作用

Java反射机制 什么是反射? 答:将一个java类的各个部分封装为其他对象的机制 反射有什么好处,为什么要使用反射? 答:一是可以解耦,提高程序的可重用性;二是方便程序在操作中使用这些对象 程序在计算机中的三个阶段 获取字节码的三种方式 通过Class.forName(“全类名”) 类名.class 对象.getClass() package com.quan.practice; import com.quan.bean.Person; public class ReflectTest {

2020-05-14 15:40:11 470

原创 Leetcode-常数时间插入、删除、等概率获取一个数

实现一个RandomPool的数据结构,包含下面三个功能 1. insert(key):将某个key加入到该结构中 2. delete(key):将某个key从该结构中删除 3. getRandom():等概率随机返回该结构中的一个元素 insert,delete,getRandom方法的时间复杂度均为O(1),RandomPool结构中没有重复元素

2020-05-01 08:12:42 319

空空如也

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

TA关注的人

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