自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 精讲java中的CAS

CAS(Compare And Swap)指比较并交换。CAS算法CAS(V, E, N)包含3个参数,V表示要更新的变量,E表示预期的值,N表示新值。在且仅在V值等于 E值时,才会将V值设为 N,如果 V值和 E值不同,则说明已经有其他线程做了更新,当前线程什么都不做。最后,CAS返回当前V的真实值。CAS并发原语体现在JAVA语言中就是sun.misc.Unsafe类中的各个方法。调用UnSafe类中的CAS方法,JVM会帮我们实现出CAS汇编指令。这是一种完全依赖于硬件的功能,通过它实现了原子操作。

2023-09-14 16:07:26 364

原创 AQS锁原理

AQS是juc包下lock接口的底层实现原理,其维护了一个维护了一个类型的变量state用来表示锁的状态,并且底层维护了一个双向队列用来阻塞竞争锁的线程,提供了独占式和共享式的资源获取方式,有公平与非公平锁的实现原理。

2023-09-14 11:14:22 399

原创 Java 类加载机制

本文章将解释java的类加载机制。类是在运行期间第一次使用时,被类加载器动态加载至JVM。JVM不会一次性加载所有类。因为如果一次性加载,那么会占用很多的内存。

2023-09-11 18:44:08 924

原创 详解TCP/IP的三次握手和四次挥手

本文章讲解TCP/IP协议的三次握手和四次挥手的流程以及面试题。

2023-09-04 18:39:55 1645

原创 为什么使用Nacos而不是Eureka(Nacos和Eureka的区别)

为什么如今微服务注册中心用Nacos相对比用Eureka的多了?本文章将介绍他们之间的区别和优缺点。

2023-08-26 12:52:21 4084

原创 RocketMQ

消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。对于消息中间件,常见的角色大致也就有Producer(生产者)、Consumer(消费者)例如:寄快递。

2023-08-23 19:35:56 394

原创 MySQL 事务

任何一种数据库,都会拥有各种各样的日志,用来记录数据库的运行情况、日常操作、错误信息等,MySQL 也不例外。例如,当用户 root 登录到 MySQL 服务器,就会在日志文件里记录该用户的登录时间、执行操作等。

2023-08-22 21:09:29 1828

原创 分布式核心知识

关于分布式核心知识详解。

2023-08-21 21:29:36 2372 1

原创 Redis之持久化机制

官方推荐两个都启用,如果对数据不敏感,可以选单独用RDB,不建议单独用 AOF,因为可能会出现Bug;如果只是做纯内存缓存,可以都不用;

2023-08-20 14:32:22 522

原创 SpringBoot整合Shiro实现登录认证,鉴权授权

近期对Springboot框架的学习中,为了更好的学习理解Springsecurity中间件,先学习了一下“老派”的shiro安全框架,本文章将通过注解的方式实现基础的用户认证和角色授权案例

2023-08-17 21:21:39 835

原创 Redis工具类(可直接复制使用)

Redis工具类代码,封装了Redis的基本操作

2023-08-15 19:03:08 394 1

原创 Redis之删除策略

Redis各种删除策略

2023-08-14 19:46:19 2376

原创 Redis之缓存雪崩、缓存击穿、缓存穿透问题

简单理解缓存雪崩和缓存击穿的区别就是雪崩是多个key失效或者Redis宕机,而缓存击穿是一个被高并发访问的key失效导致给数据库造成巨大压力,而缓存穿透指的是一个在redis和数据库都不存在的数据被高并发访问而导致给数据库造成压力。

2023-08-11 21:25:37 716

原创 Redis为什么这么快?

Redis为什么这么快?内存存储:Redis是使用内存存储,没有磁盘IO上的开销。数据是存在内存中的,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1).单线程实现(Redis6.0以前):Redis使用单个线程处理请求,避免了多个线程之间切换和锁资源争夺的开销。注意:单线程是指的是在核心网络模型中,网络请求模块使用一个线程来处理,即一个线程处理所有网络请求。非阻塞IO:Redis使用多路复用IO技术,将epoll作为I/O多路复用技术的实现,再加上Redis自身的事件

2023-08-10 20:46:57 175

原创 SpringMVC基础(面试必问)

本文章将简单介绍SpringMVC的工作流程。

2023-08-09 22:27:41 952

原创 SpringBoot基础之注册Servlet三大组件

SpringBoot默认是以jar包的方式运行嵌入式Servlet容器来启动应用,没有web.xml文件,所以Spring提供以下Bean来注册三大组件。注册自定义Servlet注册自定义Filter注册自定义Listener除了以上的方法也可以使用传统的@WebFilter…实现注册,但是这样只能注册声明自己创建的类,在将来我们会用到很多框架提供的类,就无法使用传统的注解注册,所以推荐使用以上配置类的方式注册Servlet。

2023-08-09 21:39:23 857

原创 SpringBoot整合Mybatis-Plus

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window) 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作。

2023-08-08 23:54:33 9886

原创 算法基础之插入排序

插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。(类似与打牌时自己按顺序整理牌面时。

2023-08-07 22:14:46 642

原创 cookie和session区别

cookie:是针对每个网站的信息,每个网站只能对应一个,其他网站无法访问,这个文件保存在客户端,每次您拨打相应网站,浏览器都会查找该网站的 cookies,如果有,则会将该文件发送出去。cookie:cookie的生命周期当浏览器关闭的时候就消亡了,cookie的生命周期是累计的,从创建时就开始计时,30min后cookie生命周期结束。session:session的生命周期是间隔的,从创建时开始计时如在30min内没有访问session,那么session生命周期就被销毁。

2023-08-06 20:34:42 111

原创 Spring中的循环依赖问题

一级缓存:为“Spring 的单例属性”而生 ,就是个单例池,用来存放已经初始化完成的单例 Bean;二级缓存:为“解决 AOP”而生 ,存放的是半成品的 AOP 的单例 Bean;三级缓存:为“打破循环。

2023-08-05 22:16:21 515 1

原创 Spring中Bean的“一生”(生命周期)

首先是实例化属性赋值初始化销毁这 4 个大阶段;再是初始化的具体操作,有Aware接口的依赖注入在初始化前后的前后置处理以及和 配置类加载的的初始化操作;实现接口调用destory()方法销毁以及配置类加载的销毁方法。

2023-08-05 20:30:40 533

原创 Spring框架之任务调度

【代码】Spring框架之任务调度。

2023-08-04 21:35:27 230

原创 Spring整合Mybatis(案例演示)

Spring整合Mybatis

2023-08-04 20:58:00 82

原创 Spring核心思想之AOP

AOP(Aspect-Oriented Programming: 面向切面编程):将那些与业务无关却为业务模块所共同调用的逻辑(例如事务处理、日志管理、权限控制等)封装抽取成一个可重用的模块,这个模块被命名为“切面”(Aspect),便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性;

2023-08-04 20:30:06 559

原创 Spring中常用的注解

大家应该都知道Sping的一大核心思想就是IOC控制反转,可以通过的方式管理很多bean,但是一旦管理的bean多了,配置文件就会显得很臃肿,所以spring又提供了更好的方式解决这个问题——注解。

2023-08-02 22:26:52 153

原创 Spring第一大核心思想之Ioc/DI

本文章将介绍Spring第一大核心思想-Ioc控制反转和DI依赖注入,以及它们简单的实现案例。IOCIOC,中文释义:控制反转 ),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。指将创建对象的控制权转移给Spring框架进行管理。由Spring框架根据配置文件或注解等方式,创建bean对象并管理各个bean对象之间的依赖关系。使对象之间形成松散耦合的关系,实现解耦;控制 :指的是对象创建(实例化管理)的权力反转 :控制权交给外部环境(Spring框架、IoC容器)

2023-08-01 22:16:49 191

原创 JavaWeb学习项目-聊天室

本文章将搭建一个简易的网上聊天室~

2023-07-26 22:14:13 418

原创 线程池(重点)

本文章介绍常用的线程池线程池内部维护了若干个线程,没有任务的时候,这些线程都处于等待空闲状态。如果有新的线程任务,就分配一个空闲线程执行。如果所有线程都处于忙碌状态,线程池会创建一个新线程进行处理或者放入队列(工作队列)中等待。以上就是线程池的介绍,并不推荐使用Executors工具类创建的线程池,因为这样创建出来的线程池无法给线程命名,而且不灵活,无法根据需求设定需要的参数(核心线程数,最大线程数,非核心线程存活时间,阻塞队列),所以建议使用自己创建线程,灵活使用;

2023-07-24 21:11:43 62

原创 Vector集合源码分析

本文章将分析Vector集合的源码和常用方法实现。

2023-07-21 21:43:03 793 1

原创 ReentrantLock

本文章将介绍ReentrantLock的基本性质,以及它与synchronized的区别;

2023-07-20 20:32:14 174

原创 算法基础之冒泡排序

冒泡排序

2023-07-19 20:47:30 105

原创 LinkedList双向链表源码分析(附详细图解!!)

本文章分析LinkedList源码。

2023-07-18 22:51:16 1230 1

原创 CopyOnWriteArrayList核心源码阅读及个人理解(附注释和过程解析)

本文章阅读CopyOnWriteArrayList常用方法的核心源码,解读实现过程。

2023-07-17 22:56:46 362 2

原创 HashMap源码分析

此文章探究HashMap源码,HashMap的数据结构、数组容量、其扩容的方式等。

2023-07-16 18:23:35 348 2

原创 线程池的执行流程(重点)

线程池的执行流程(重点)

2023-07-15 22:16:10 271 1

原创 为什么不推荐使用Executors创建线程池?(面试常问)

因此,为了更好地控制和管理线程池,推荐使用**ThreadPoolExecutor**类来手动创建线程池,它可以自定义线程名称,还可以根据具体的需求自己设置线程池的参数:例如核心线程数、最大线程数、队列类型、线程工厂等、以及自定义拒绝策略来处理任务无法执行的情况。

2023-07-15 19:40:10 690 2

原创 线程创建方式

线程的几种创建方式

2023-07-14 19:59:43 229 1

原创 线程的几种状态

线程在一定的条件下,状态会发生变化。

2023-07-13 21:46:04 124 1

原创 超详细Java反射总结(通俗易懂!!!)

认识反射机制的作用,用途以及常用的类和方法。

2023-07-13 10:00:00 1257 1

原创 非对称式加密(RSA算法案例)

非对称加密就是加密和解密使用不同的密钥,只有同一个公钥-私钥才能正常的加解密。特点:非对称式加密算法的安全性非常高,但是运算速度非常的慢,比对称加密要慢得多。

2023-07-11 22:34:24 662

空空如也

空空如也

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

TA关注的人

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