自定义博客皮肤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 219

原创 Java框架-SpringMVC学习笔记

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

2020-09-27 13:10:17 81

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

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

2020-09-21 22:24:38 88

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

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

2020-09-19 15:12:18 94

原创 布隆过滤器

布隆过滤器(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 133

原创 二叉树的前中后序非递归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 141

原创 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 439

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

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

2020-05-01 08:12:42 282

空空如也

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

TA关注的人

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