随笔分类 - Java
1
摘要:Java中加锁的最简单方式就是加synchronized关键字,但它是一种重量级锁,会涉及到操作系统状态的切换影响效率,所以JDK1.6中对synchronized进行了各种优化,为了能减少获取和释放锁带来的消耗引入了偏向锁和轻量锁。 Synchronized 优化 锁升级 在Java中锁的状态一共
阅读全文
摘要:Synchronized 简介 在某些多线程场景下,如果不进行同步会导致数据不安全,为了解决线程安全的问题,引入了锁的概念。 java中常用的锁有synchronized和lock两种,本文来分析synchronized关键字的原理。 作用: 保证被Synchronized修饰的方法或代码同一时刻最
阅读全文
摘要:概述 Java 5之后新增了Lock接口,自定义类可实现Lock接口,并通过内部静态类继承AQS抽象类的方式实现独占锁、共享锁。 锁是面向使用者的,它定义了使用者与锁交互的接口,隐藏了实现细节;同步器面向的是锁的实现者,它简化了锁的实现方式,屏蔽了同步状态管理、线程的排队、等待与唤醒等底层操作。用户
阅读全文
摘要:线程池简介 线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。 线程池(Thread Pool)是一种基于池化思想管理线程的工具,它维护多个线程。在线程池中,总有几个活跃线程。当需要使用线程来执行任务时,可以从池子中随便拿一个空闲线程来用,当完成
阅读全文
摘要:Comparable和Comparator Java提供了一个用于比较的接口Comparable,实际上Java中还提供了一个接口Comparator,该接口也具有比较的功能,其更注重的是比较容器,然后对其排序。 Comparable在java.lang包中,它是排序接口,若一个类实现了Compar
阅读全文
摘要:进程和线程 进程 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。 在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。 线程
阅读全文
摘要:Spring简介 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)。 Spring 是一个开源的框架,为了解决企业应用开发的复杂性而创建的 spring是一个轻量级的控制反转(Ioc)和面向切面(AOP)的容器框架 从大小和开销两个方面而言spirng是轻量级的 通过控
阅读全文
摘要:SpringMVC 简介 Spring Web MVC 是一种使用了 MVC 架构模式思想的轻量级 Web 框架,将 web 层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,帮助我们简化日常 Web 开发的。 MVC是模型(Model)、视图(View)、控制器(Controller)的简写
阅读全文
摘要:Spring Security 从数据库加载用户名和密码 项目结构 数据库设计 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- -- Table structure for ROLE -- DROP TABLE IF EXISTS `ROLE`;
阅读全文
摘要:Spring Security中关于BCryptPasswordEncoder的使用 加密算法和hash算法的区别 加密算法是一种可逆的算法,基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码为“密文”,但在用相应的密钥进行操作之后就可以得到原来的内容。 哈希算法是一种
阅读全文
摘要:SpringBoot整合mybatis 添加依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.15</version> </dependency> <
阅读全文
摘要:Java类加载机制 类是在运行期间第一次使用时动态加载的,而不是编译时期一次性加载。因为如果在编译时期一次性加载,那么会占用很多的内存。 类的生命周期 包括以下 7 个阶段: 加载(Loading) 验证(Verification) 准备(Preparation) 解析(Resolution) 初始
阅读全文
posted @ 2021-03-31 13:22
当康
摘要:JVM内存分配与回收策略 新生代划分为三个部分:分别为Eden、Survivor from、Survivor to,大小比例为8:1:1(为了防止复制收集算法的浪费内存过大)。每次只使用Eden和其中的一块Survivor,回收时将存活的对象复制到另一块Survivor中,这样就只有10%的内存被浪
阅读全文
posted @ 2021-03-31 12:50
当康
摘要:虚拟机垃圾收集器 概览 以上是 HotSpot 虚拟机中的 7 个垃圾收集器,连线表示垃圾收集器可以配合使用。 单线程与多线程:单线程指的是垃圾收集器只使用一个线程进行收集,而多线程使用多个线程 串行与并行:串行指的是垃圾收集器与用户程序交替执行,这意味着在执行垃圾收集的时候需要停顿用户程序;并行指
阅读全文
posted @ 2021-03-30 18:03
当康
摘要:虚拟机垃圾算法 脑图 判断一个对象是否可被回收 1. 引用计数算法 给对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数 器减 1。引用计数为 0 的对象可被回收。 两个对象出现循环引用的情况下,此时引用计数器永远不为 0,导致无法对它们进行回收。 正因为循环引用的存在,因此
阅读全文
posted @ 2021-03-30 17:01
当康
摘要:Java内存区域 Java虚拟机在运行时,会把内存空间分为若干个区域:程序计数器、虚拟机栈、本地方法栈、堆内存、方法区。 JDK1.8(含)之后: 1、程序计数器 程序计数器是用来指示执行哪条指令的,每个线程都有一个独立的程序计数器,因此程序计数器是线程私有的一块空间。 由于程序计数器中存储的数据所
阅读全文
posted @ 2021-03-30 16:17
当康
摘要:SpringBoot使用Junit单元测试 pom.xml依赖 一般使用idea新建一个SpringBoot web项目时,都会自动引入此依赖。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-b
阅读全文
posted @ 2021-03-26 01:29
当康
摘要:Mac版IntelliJ的Maven配置 内置的Maven配置文件setting.xml Mac版IntelliJ(2020.3)已经内置了Maven 3.6.3版本。 自带的setting.xml文件位置: /Applications/IntelliJ IDEA.app/Contents/plug
阅读全文
posted @ 2021-03-26 00:03
当康
摘要:Spring Security Spring Security 是 Spring 家族中的一个安全管理框架,但是对比 Shiro 使用的并不多。在Spring Boot中,对 Spring Security 提供了自动化配置方案,可以零配置使用 Spring Security。 常见的安全管理技术栈
阅读全文
posted @ 2021-03-24 00:59
当康
1

浙公网安备 33010602011771号