Java
文章平均质量分 77
Java
今天你写代码了吗??
好记性不如烂笔头!
展开
-
【Java基础】队列Queue、栈stack、常用Api
呢,答案是当然可以!!原创 2023-09-19 14:39:52 · 193 阅读 · 0 评论 -
【Java基础】深入理解反射、反射的应用(工厂模式、代理模式)
静态代理的代码在编译时就已经确定,因此代理类需要为每一个被代理类编写一个对应的代理类。这种方式的好处是简单直观,容易理解和掌握,但是当被代理的类较多时,这样如果要追加产品D,只需要新增产品D,无需修改工厂,只需要在需要D产品时,通过对工厂引入产品的全类名就可以生产产品类对象。,动态代理的优势在于可以更加灵活地动态创建代理对象,减少了重复的代理类编写,适用于代理类较多或需要动态管理代理对象的场景。正射很好理解,就不多说了,现在来讲讲反射,同样可以创建对象,调用对象的方法,等等正射能做的事,通过反射都能做。原创 2023-09-01 21:08:30 · 1274 阅读 · 0 评论 -
【Java基础】深入理解String、StringBuffer和StringBuilder的异同
但是当我们调用有参构造函数创建一个StringBuffer对象时,数组长度就不再是16了,而是根据当前对象的值来决定数组的长度,数组的长度为“当前对象的值的长+16”。如果修改的值范围超出了16个字符,会先检查StringBuffer对象的原char数组的容量能不能装下新的字符串,如果装不下则会对 char 数组进行扩容。所以不管哪一种实例化的方式,所定义的字符串都会存在 value数组中,并且该字符数组被final关键字修饰,代表一旦赋值了,就不能修改了,也就代表了。详细请参考,总结的很详细到位。原创 2023-08-19 16:34:01 · 200 阅读 · 0 评论 -
【JVM】JVM中的分代回收
在java8时,堆被分为了两份:新生代和老年代【1:2】其中:对于新生代,内部又被分为了三个区域。伊甸园区Eden,新生的对象都分配到这里幸存者区survivor(分成from和to)Eden区,from区,to区【8:1:1】原创 2023-08-12 20:36:09 · 806 阅读 · 0 评论 -
【JVM】类装载的执行过程
static变量,分配空间在准备阶段完成(设置默认值),赋值在初始化阶段完成。当不再需要某个类时,卸载它以释放内存空间。这一步会创建一个与被加载类对应的Class对象。创建java.lang.Class类的实例,表示该类型。解析类的二进制数据流为方法区内的数据结构(Java类模型),检查是否存在,不存在就会报相应不存在的错误。非静态的先new个对象实例,再通过对象调用。通过类的全名,获取类的二进制数据流。类装载总共分为7个过程,分别是。对其他类、字段、方法的。是否有对应的类和方法。静态变量,静态代码块。原创 2023-08-12 17:38:00 · 1162 阅读 · 0 评论 -
【Java并发】ThreadLocal的实现原理&源码解析
首先,获取当前线程并获取其对应的 ThreadLocalMap 对象。首先获取当前线程,然后获取当前线程的 ThreadLocalMap 对象。在GC线程扫描内存区域时,一旦发现弱引用,就会回收到弱引用相关联的对象。,并将当前 ThreadLocal 对象和值 value 存储到其中。的ThreadLocal实例,value为线程变量的副本。,可能会导致内存泄漏。因为线程结束后,对应的。,而不会影响其他线程的副本。,在ThreadLocalMap中的。,如果一个对象具有强引用,则GC并。原创 2023-08-11 15:17:46 · 128 阅读 · 0 评论 -
【Java并发】如何进行死锁诊断?
死锁(Deadlock)是指两个或多个进程(线程)在执行过程中,由于竞争资源而陷入无限等待的状态,导致它们都无法继续执行下去。简单来说,就是一种互相等待对方释放资源的情况,从而造成所有参与者都无法继续执行的僵局。原创 2023-08-10 15:51:04 · 202 阅读 · 0 评论 -
【Java并发】ReentrantLock的实现原理
synchronized关键字是一种隐式锁,即它的加锁与释放是自动的,无需我们关心。注意被ReentrantLock加锁区域必须用。,且释放锁需要在finally中来避免死锁。ReentrantLock实现了Lock接口。继续往下看Sync类是继承了AQS类(在Lock中定义了多个。例如:手动枷锁和解锁。大于0时表示加锁状态。原创 2023-08-10 13:41:41 · 84 阅读 · 0 评论 -
【Java并发】什么是AQS?
全称是 AbstractQueuedSynchronizer,即抽象队列同步器。它是构建锁或者其他同步组件的基础框架所谓抽象,其实目的就是把具体的逻辑交给子类去实现,这样就可以实现不同的特性的锁:例如:AQS常见的实现类阻塞式锁Semaphore信号量倒计时锁AQS是多线程中的队列同步器。是一种锁机制,它是做为一个基础框架使用的,像Semaphore都是基于AQS实现的.AQS其实是一个抽象类,它实现了线程挂起的逻辑,实现了线程存储机制,实现了锁的状态逻辑,实现了线程唤醒的逻辑,却只定义了。原创 2023-08-10 12:57:43 · 107 阅读 · 0 评论 -
【Java】CAS数据交换流程
自旋操作也就是从新从主内存拷贝一份i的数据到线程B的工作内存区,然后执行a–操作,此时a==100,在对比操作前的数据和主内存的数据是否相等,结果明显相等,则直接将操作后的数据更新回主内存覆盖原来的a。CAS的全称是: Compare And Swap(原创 2023-08-09 16:17:03 · 188 阅读 · 0 评论 -
【Java并发】synchronized关键字的底层原理
Java中的synchronized有偏向锁轻量级锁重量级锁三种形式,分别对应了锁只被一个线程持有不同线程交替持有锁多线程竞争锁三种情况。锁对应情况偏向锁只被一个线程持有轻量级锁不同线程交替持有锁重量级锁多线程竞争锁锁描述重量级锁底层使用的Monitor实现,里面涉及到了用户态和内核态的切换、进程的上下文切换,成本较高,性能比较低。轻量级锁线程加锁的时间是错开的(也就是没有竞争),可以使用轻量级锁来优化。轻量级修改了对象头的锁标志,相对重量级锁性能提升很多。原创 2023-08-09 13:48:05 · 84 阅读 · 0 评论 -
【Spring Security权限框架】SpringBoot整合Spring Security实现权限控制
SpringSecurity框架【详解】原创 2023-07-21 18:29:58 · 3514 阅读 · 1 评论 -
mybatis-plus逻辑删除与唯一约束冲突问题
mybatis-plus逻辑删除与唯一约束冲突问题原创 2023-07-19 13:59:23 · 851 阅读 · 0 评论 -
【Mybatis-plus】mybatis-plus代码生成器使用指南
不会覆盖自己手动新建的文件,自动跳过去创建新文件。原创 2023-07-17 17:09:06 · 300 阅读 · 0 评论 -
【SpringBoot】SpringBoot整合knife4j
前后端分离开发模式中,api文档是最好的沟通方式。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。1、及时性 (接口变更后,能够及时准确地通知相关前后端开发人员)2、规范性 (并且保证接口的规范性,如接口的地址,请求方式,参数及响应格式和错误信息)3、一致性 (接口信息一致,不会出现因开发人员拿到的文档版本不一致,而出现分歧)4、可测性 (直接在接口文档上进行测试,以方便理解业务)原创 2023-07-16 20:12:48 · 1211 阅读 · 0 评论 -
【SpringBoot】SpringBoot的静态资源文件访问问题
将favicon.ico资源放在resources包下的front文件夹下,此刻通过URL直接访问是访问不到的,因为需要访问的资源不在系统默认的文件夹下,这个时候就需要自定义访问路径。自定义静态资源访问路径有两种方式:第一种通过配置类的方式:(不推荐,因为麻烦)@Slf4j/*** 设置静态资源映射log . info("开始进行资源映射");原创 2023-07-12 20:26:35 · 2480 阅读 · 0 评论 -
【SpringBoot】Springboot实现过滤器
在上述示例中,使用了@WebFilter注解将MyFilter类标记为过滤器,并通过urlPatterns拦截全部。在Spring Boot中,过滤器是一种用于对HTTP请求进行预处理和后处理的组件。为了使Spring Boot能够扫描到自定义的过滤器类,需要在启动类上使用。的一部分,它能够在请求进入Web容器之前或返回给客户端之前进行操作。通过实现过滤器,可以对HTTP请求进行一些通用操作,如。其中若用户未登录 ,执行下列的语句:给前端响应。“/user/login”,//移动端登录。原创 2023-07-12 18:39:28 · 1446 阅读 · 0 评论 -
【SpringBoot】SpringBoot拦截器
Spring Boot中的拦截器是一种用于在处理请求之前或之后执行特定操作的组件。拦截器通常用于实现对请求进行预处理、日志记录、权限验证等功能。在Spring Boot中,可以使用接口来定义自己的拦截器,并通过配置进行注册和使用。创建一个实现了接口的拦截器类,实现其中的方法,例如preHandle用于在请求处理之前执行操作,postHandle用于在请求处理之后执行操作,用于在视图渲染之后执行操作。在Spring Boot的配置类中,通过继承并重写方法来注册拦截器。原创 2023-07-12 17:41:28 · 2351 阅读 · 0 评论 -
【SpringBoot】springboot实现全局异常捕获
异常全局处理原创 2023-07-12 14:55:03 · 5372 阅读 · 0 评论