java
文章平均质量分 84
栋幺栋幺-
没事早点睡,有空多赚钱,平时勤读书
展开
-
synchronized的锁升级和锁膨胀
本文将将讲解java中synchronized从偏向锁逐步走到轻量级锁、自旋锁再到重量级锁的过程,以及java8中的锁降级优化。 偏向锁 偏向**第一个**拿到锁的线程。 即第一个拿到锁的线程,锁会在对象头Mark Word中通过CAS**记录线程ID**,该线程以后每次拿锁时都**不需要进行CAS**(指轻量级锁)。 如果该线程正在执行同步代码块时有其他线程在**竞争**(指其他线程尝试CAS让Mark Work设置自己的线程ID),会**被升级**为轻量级锁。原创 2022-11-20 22:17:57 · 404 阅读 · 0 评论 -
java中final和finally和finalize的区别
final、finally、finalize傻傻分不清楚,今天让你彻底弄清楚 基础概念区分 final 修饰符 1. 将类声明为final,意味着它不能再派生新的子类,不能作为父类被继承。final类中的所有成员方法都会被隐式地指定为final方法。 (因此一个类不能及被声明为abstract,又被声明为final的。) 2. 将方法声明为final,只能使用,不能被子类方法重写。 3. 将变量声明为final,必须在声明时给定初值。如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改原创 2022-11-20 22:17:00 · 214 阅读 · 0 评论 -
java中的异常和处理
简介 Throwable类是Java异常类型的顶层父类,一个对象只有是 Throwable 类的(直接或者间接)实例,他才是一个异常对象,才能被异常处理机制识别。JDK中内建了一些常用的异常类,我们也可以自定义异常。 Java标准库内建了一些通用的异常,这些类以Throwable为顶层父类。 Throwable又派生出Error类和Exception类。 **错误:** Error类以及他的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,Error很少出现。因此,程序员应该关注Ex原创 2022-11-20 22:15:42 · 122 阅读 · 0 评论 -
java序列化
含义、意义使用场景 序列化:将对象写入到IO流中 反序列化:从IO流中恢复对象 意义:序列化机制允许将实现序列化的Java对象转换位字节序列,这些字节序列可以保存在磁盘上,或通过网络传输,以达到以后恢复成原来的对象。序列化机制使得对象可以脱离程序的运行而独立存在。 使用场景:所有可在网络上传输的对象都必须是可序列化的,比如RMI(remote method invoke,即远程方法调用),传入的参数或返回的对象都是可序列化的,否则会出错;所有需要保存到磁盘的java对象都必须是可序列化的。通常建议:原创 2022-11-17 13:10:35 · 1730 阅读 · 0 评论 -
java接口和抽象类的区别
接口是like关系,指b像a的问题;抽象类是is关系,指b是a的关系。当然他们内部还有很多不一样。 抽象类 我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的。**如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它**,那么这样的类我们称它为抽象类。 抽象类是**用来捕捉子类的通用特性的 。它不能被实例化**,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。原创 2022-11-17 13:10:05 · 600 阅读 · 0 评论 -
java反射机制
Java反射机制的定义 Java反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 用一句话总结就是反射可以实现在运行时可以知道任意一个类的属性和方法。俗称”超级工具箱“。 --- 反射都用于哪些场景 1. 用于代码编辑工具中,如Eclipse或者idea,我们在代码编写的时候,是不是经常自动的给我们各种提示呢,这就是用到了反射的原因。原创 2022-11-17 13:08:54 · 162 阅读 · 0 评论 -
java动态代理简介
动态代理可以理解为,本来应该自己做的事情,却交给别人代为处理,这个过程就叫做动态代理。 动态代理的使用场景 动态代理被广为人知的使用场景是 Spring 中的面向切面编程(AOP)。 例如,依赖注入 @Autowired 和事务注解 @Transactional 等,都是利用动态代理实现的。 动态代理还可以封装一些 RPC 调用,也可以通过代理实现一个全局拦截器等。 动态代理和反射的关系 JDK 原生提供的动态代理就是通过反射实现的,但动态代理的实现方式还可以是 ASM(一个短小精悍的字节码操作原创 2022-11-17 13:08:02 · 445 阅读 · 0 评论 -
java的static关键字及类加载顺序
Java中static可以修饰类、变量、方法甚至可以构成静态块,让我们来了解下它们各自的使用以及加载顺序吧。 基本用法 static关键字修饰类 java里面用static修饰内部类,普通类是不允许声明为静态的,只有内部类才可以。 ```java public class StaticTest { //static关键字修饰内部类 public static class InnerClass{ InnerClass(){原创 2022-11-17 13:07:23 · 1175 阅读 · 0 评论 -
java的equals和hashCode和等于号的区别
==,equals,hashCode经常会用到,如果不知道它的规则,岂不是容易出现隐藏的bug么? 基础概念 == 运算符,用于比较两个变量是否相等。 如果作用于基本数据类型,则直接比较其存储的“值”是否相等; 如果作用于引用类型的变量,则比较的是所指向的对象的地址 equals Object 的实例方法,比较两个对象的content是否相同。 默认Object类的equals方法是比较两个对象的地址,跟==的结果一样。原创 2022-11-17 13:06:48 · 176 阅读 · 0 评论 -
ConcurrentHashMap的transfer阅读
[TOC] 流程图 ![concurrentHashMap#transfer](https://img-blog.csdnimg.cn/60ea534ce2044077ac6fb4919bbdcf9c.jpg) `ConcurrenthashMap` 的 `transfer` 主要是用于扩容重组阶段,当内部数组的容量值超过阈值时,将触发扩容重组, `transfer` 是该过程的主要实现。 相关概念 1. `ConcurrentHashMap` 中,使用一个字段复用了多种功能,如:阈值控制、内部原创 2022-11-17 13:05:23 · 568 阅读 · 0 评论 -
SSM整合时报错org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectio...原创 2018-01-28 15:18:24 · 34181 阅读 · 5 评论 -
SpringSecurity入门01(含源码)
SpringSecurity源码浅析,环境:SpringBoot 2.1 + Mybatis + Spring Security 5.0原创 2019-04-10 14:41:59 · 682 阅读 · 0 评论 -
如何读取jar包外的properties和log4j.properties等配置文件
一般在项目中使用properties配置文件的时候都将相关的properties文件放在src目录下,在将该app打包生成jar后,相应的properties配置文件生...一般在项目中使用properties配置文件的时候都将相关的properties文件放在src目录下,在将该app打包生成jar后,相应的properties配置文件生成在jar包中,这样的话要修改配置文件又要重新打jar包,...原创 2018-05-05 15:32:15 · 2425 阅读 · 0 评论 -
SSM高级整合项目实战
SSM-CRUD ssm:SpringMVC+Spring+MyBatis : Create(创建)Retrieve(查询)Update(更新)Delete(删除)ps:此项目笔者写了很详细的备注,便于理解,已更新,换为HTML静态页,相关自己的js在 /src/webapp/静态主/js/index.crud.js源码下载地址原创 2018-03-14 21:14:50 · 15384 阅读 · 2 评论