自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ReentrantLock源码

公平锁和非公平锁释放锁的流程一样,调用sync中的tryRelease方法。NonfairSync非公平锁中,Sync中的默认实现。FairSync公平锁中。默认构造使用非公平锁。

2024-07-21 21:23:14 163

原创 AQS源码

假设A、B、C三个线程,A线程持有锁,B线程先来获取锁,然后C线程获取锁。

2024-07-21 21:22:29 374

原创 synchronized详解

如果在一个循环内部使用synchronized,频繁的获取/释放锁消耗资源。锁膨胀就是将synchronized放到循环体外部,这样就获取/释放一次锁。可以理解为一个临界资源,在同一时间只能有一个线程操作它,实现线程之间互斥的效果。在synchronized修饰的代码块中,如果不存在操作临界资源的情况,触发锁消除,即synchronized无效。在jdk1.6之前,线程在获取不到锁后,立即挂起线程。在创建对象作为锁的时候,会在栈中生成对象的引用,引用指向堆空间,有关锁的内容。

2024-07-15 21:21:52 301

原创 并发编程-锁的分类

假设A线程持有锁,B线程正在等待锁,这个时候C线程来了。

2024-07-15 21:19:33 222

原创 SpringSecurity在SpringBoot中的自动装配

约定大于配置,这里的内容就相当于在web.xml配置文件中配置springSecurityFilterChain的过程由spring自动实现.spring自动注入DelegatingFilterProxy对象,这样就可以将security中的过滤器切到spring中,在请求的时候会被DelegatingFilterProxyRegistrationBean拦截,然后去执行security中的过滤器链。注册逻辑在父类DynamicRegistrationBean中。

2024-07-07 15:57:46 202

原创 SpringSecurity初始化过程

/获取标签} else {//解析自定义标签,获得能解析该标签的HandlerResolver解析器} else {springSecurity解析器SecurityNamespaceHandler/**不同的标签交给不同的解析器去解析*/http标签的解析,HttpSecurityBeanDefinitionParser//注册FilterChainProxy//拿到FilterChainProxy。

2024-07-07 15:56:30 359

原创 SpringSecurity源码分析-过滤器链是如何植入到spring中的

DelegatingFilterProxy中加载FilterChainProxy小结:通过过滤器链代理对象DelegatingFilterProxy找到真正的过滤器链FilterChainProxy,然后去一个一个的过滤器去处理请求

2024-07-07 15:55:40 337 2

原创 SpringSecurity认证逻辑源码分析

类。

2024-07-07 15:55:08 1039

原创 Spring整合SpringSecurity

自定义登录页面只需要在security配置文件中指定登录页面即可--指定登录页面或登录成功页面等,都在这个标签中可以指定--> < form-login login-page = " /login.jsp " login-processing-url = " /login " authentication-success-forward-url = " /home.jsp " />

2024-07-07 15:54:11 632

原创 Nacos架构设计

Nacos1.X架构设计Nacos2.X架构修改

2024-07-07 15:50:43 121

原创 GateWay-基本使用

api网关是只微服务架构下的统一入口,提供服务内部的服务路由中转,为客户端提供统一的服务一些与业务无关的公共逻辑可以在这里实现,比如认证、授权、监控、路由转发等。常用的网关组件有,zuul、nginx+lua、Kong等实现Ordered,GlobalFilter两个接口,重写filter,getOrder两个方法,在filter中可以实现在业务处理之前和之后做一些操作import org/**

2024-07-01 23:28:44 892

原创 Elasticsearch分词器

自定义的字符串过滤器、令牌过滤器、分词器都要定义名字过滤器、令牌过滤器可定义多个//自定义字符串过滤器},//自定义令牌过滤器"filter":{"is","in","the","a","at"},//自定义分词器?]"},//自定义分析器,将自定义字符串过滤器、自定义令牌过滤器、自定义分词器赋值给分析器"char_filter":["my_char_filter"], //字符串过滤器可定义多个。

2024-06-30 00:57:22 627

原创 Elasticsearch查询上下文和_source

在查询时候,如果不指定排序字段,默认使用相关度评分排序,评分度越高排名越靠前。和Mysql中的select指定查询的字段作用一样。结果:hits中只包含id。

2024-06-30 00:56:36 528

原创 Elasticsearch的Mapping

例子:给user索引创建两个模板,第一个模板将long类型的属性默认转换为integer类型,第二个模板将以sum_开头的字段且不以_text结尾的字段且为String类型的字段转换为keyword类型。映射模板用来解决不确定的类型或字段名索引的创建,可以理解为批量处理索引的mapping。映射参数就是在创建索引时候的mapping中可以配置什么参数,分别代表什么含义。es在增加数据的时候如果没有指定字段的类型,es会自动分配类型。在创建Mapping时候,手动创建类型。

2024-06-30 00:54:16 1066

原创 Elasticsearch的节点、集群和分片

多个节点组成ES集群,其中主节点负责管理整个集群,不存储数据,数据靠数据节点存储当主节点宕机时候,会从有master角色的集群重新选举新的主节点。

2024-06-30 00:53:42 462

原创 Elasticsearch及其相关工具的安装

传送门:https://pan.baidu.com/s/1d83Ak4kHOJHIgCC7Hhjikw 提取码:ABCE推荐使用8.12.12版本,8.14.1没有找到ik分词器。

2024-06-30 00:53:15 358

原创 【雪花算法】

【代码】【雪花算法】

2024-06-23 14:00:30 299

原创 SpringCloud-OpenFeign基础

OpenFeign是一个基于HTTP协议的RPC(远程过程调用)组件,用于简化HTTP请求和响应的处理。它通过声明式的方式定义REST API接口,并自动生成实现该接口的客户端代码,从而简化了RESTful服务的调用过程。

2024-06-22 17:11:21 589

原创 SpringCloud-nacos基础

{spring.cloud.nacos.config.file-extension},其中${spring.cloud.nacos.config.file-extension}只支持yml或者properties。可以在nacos进行分组,通过spring.cloud.nacos.config.group属性指定分组。配置的文件名应该为${spring.name} + “-” +命名空间可以指定多个配置文件。只需要配置注册中心地址即可。

2024-06-22 17:10:13 1246

原创 Spring注解-@RestControllerAdvice

使用@RestControllerAdvice注解配合@ExceptionHandler实现自定义异常处理器。

2024-06-22 17:07:27 470

原创 JVM-GC-常用调优命令和GC参数

定位问题常用命令top:查看内存/CPU占用情况top -Hp pid: 查看进程内线程情况jsp:查看java进程情况jstack 线程pid:查看进程内线程信息,一般查看线程状态,判断是否死锁。重点观察:WAITING、BLOCKED的线程,另外查看waiting on xxx,如果多个线程都在waiting on 某把锁,看哪个线程持有这把锁;jstat -gc:查看GC情况jinfo 线程pid:查看线程信息jstat -gc 线程pid 间隔时间:查看jmap -histo 线

2024-06-17 23:29:17 812

原创 JVM-GC-G1垃圾回收器

当堆内存空间达到一定的阈值,会触发MixedGC,和CMS回收步骤相似。这个阈值可以通过XX:InitiatingHeapOccupacyPercent参数设置,默认45%它是一个HashMap,记录其他Regin中的对象指向本Regin中的引用。这样不用扫描整个堆就可以知道当前谁引用了当前分区中的对象,只需要扫描RSet即可。用来记录可以被回收的card,即通过算法计算出垃圾多的card;G1的调优是尽量不要FGC。

2024-06-17 23:28:34 410

原创 JVM-GC-CMS垃圾回收器

CMS从提出概念到实际完成用了10年多的时间,在此之前没有过并发回收的垃圾回收器,因此它是一个垃圾回收器的里程碑,后来的G1也是基于CMS做的一些改进。由于CMS是并发清除的新时代,它也存留了很多问题,JDK任何版本都不会使用CMS作为默认垃圾回收器。incremental update:增量更新,关注引用的增加,如果要给黑色对象引用增加,将黑色对象标记为灰色。

2024-06-17 23:27:37 540

原创 JVM-GC-基础知识

JVM中的GC使用Root Searching寻找垃圾单独方式,并结合mark-sweep、copying、mark-compact三种清除算法形成了各有特点的垃圾回收器,且垃圾回收器的演变过程是因为内存空间的不断增大的必然原因。

2024-06-16 12:05:28 383

原创 JVM-GC-什么是垃圾

所谓垃圾其实是指,内存中没用的数据;没有任何引用指向这块内存,或者没有任何指针指向这块内存。没有的数据应该被清除,垃圾的处理其实是内存管理问题。JVM虽然不直接遵循冯诺依曼计算机体系架构,但极其相似,像是一台小型计算机。一台计算机运行程序的流程大概是这样的:操作系统先将程序加载(load)至内存中,并产生一个进程;CPU在内存中读取指令集并执行;在CPU执行期间需要用到内存中的数据,因此在CPU执行期间内存是必须的;

2024-06-16 12:04:57 451

原创 JVM-类加载

继承ClassLoader重写findClass方法在findClass方法中调用super.defineClass方法可以通过调用父类构造方法super(parent)指定父加载器可通过重写loadClass方法打破双亲委派,tomcat的热部署就是这个逻辑。

2024-06-16 12:03:41 954

原创 JVM-基础知识

全称ThreadLocal Allocation Buffer,在edne区大约占用1%的内存归线程独有空间,多线程下不必争抢堆内存空间,提高效率。

2024-06-16 01:20:25 463 1

原创 设计模式-迭代器模式Iterator(行为型)

迭代器模式属于行为型模式,用来遍历容器的一种模式。

2024-06-15 22:17:27 415

原创 设计模式-组合模式Composite(结构型)

组合模式是一种结构型模式,它可以将对象组合成树状结构,用来区分部分和整体的层次机构,又叫。

2024-06-15 17:51:17 434

原创 设计模式-代理模式Proxy(结构型)

可以发现代理类只能代理实现Pay接口的类,不够灵活。开发过程中,经常会有日志、事务等的操作是不区分业务逻辑的,可以使用动态代理。代理模式和装饰模式非常相似,只是在语义上不一样。

2024-06-11 21:52:53 520

原创 设计模式-享元模式Flyweight(结构型)

享元模式是一种结构型模式,它主要用于减少创建对象的数量,减少内存占用。通过重用现有对象的方式,如果未找到匹配对象则新建对象。线程池、数据库连接池、常量池等池化的思想就是享元模式的一种应用。最多产生五个连接对象。

2024-06-11 21:50:02 473

原创 Java中的动态代理

动态代理的时候,定义一个接口,需要代理人和被代理类实现这个接口,这样不够灵活,代理类能够代理的类只有实现这个接口的类。非常不灵活,假如被代理人的类没有实现这个接口,那么就需重新写一个代理类。对于日志、事务这些操作是不区分业务的,即不需要规定都实现某接口。因此,出现了动态代理java种的动态代理生成的方式大概有三种JDK动态代理、instrument动态代理、cglib动态代理。其中,前两种是JDK自带的,cglib是需要第三方依赖使用的。JDK动态代理和cglib动态代理的底层都是;

2024-06-11 20:23:06 693

原创 设计模式-装饰器模式Decorator(结构型)

装饰器模式是一种结构模式,通过装饰器模式可以在不改变原有类结构的情况下向一个新对象添加新功能,是现有类的包装。

2024-06-10 16:57:28 731

原创 设计模式- 责任链模式Chain of Responsibility(行为型)

责任链模式的使用有拦截器、过滤器等使用场景,如果在业务种使用不确定数量类处理,可以考虑责任链模式。

2024-06-10 16:47:36 447

原创 设计模式-中介者(调停者)模式Mediato(行为型)

在学习中介者模式的时候一直疑惑,为什么要有中介者接口?学习完后感悟:设计模式是一种思想,不应该去套公式。中介者模式的核心思想就是通过对象引用的方式实现多个同事类通过一个中介者建立联系,可以中介者中引用同事类,也可以同时类引用中介者,甚至可以用一个不用中介者接口,直接定义具体中介者实现。具体怎么实现要根据具体情况而论。设计模式是一种思想,而不是一种公式模板。

2024-06-08 18:16:58 536

原创 设计模式-外观(门面)模式Facade(结构型)

外观模式又称门面模式(结构型模式),它是一个可以屏蔽系统复杂性的设计模式。俗话说没有什么问题是加一层“介质”解决不了的,如果有那就在加一层。在开发过程中肯定封装过Utils类,我认为这就是一种门面模式;与之类似的还有一种模式叫模式(又叫调停者模式),它是用于解决”内部问题"的,即系统内多个类直接问题的;

2024-06-08 18:15:09 419

原创 Liunx环境下redis主从集群搭建(保姆级教学)02

在redis的同级目录(/opt/redis)下创建三个文件夹存放redis实例,文件夹名为7000、7001、7002。本次演示使用三个节点实例一个主节点,两个从节点:7000端口(主),7001端口(从),7002端口(从);有两种方式一种是修改配置文件(永久生效),另一种是使用命令(重启redis后失效)修改三个文件夹下的redis.conf文件内容中的端口。复制redis的配置文件到三个文件夹下。主节点负责写数据,从节点负责读数据;进入主节点7000节点,查看集群状态。启动三个redis实例。

2024-06-08 02:18:42 353 1

原创 Liunx环境下redis主从集群搭建(保姆级教学)01

因为我们没有设置redis可以后台启动,要想一直启动着服务端,那么必须开着这个窗口。在任何目录下都可以执行redis-cli --version检查redis是否安装成功,如果出现版本号,证明安装成功。第三个办法:在redis.conf配置文件中修改配置,指定它可以后台启动,这个办法往下看下一篇;解压完毕后可以看到,在/opt/redis文件夹下可以看到我们解压后的文件夹。进入创建的/opt/redis文件夹下,可以看到我们上传的安装包。进入到/opt/redis/src目录下,执行安装命令。

2024-06-08 02:13:55 357 1

原创 设计模式-策略模式Strategy(行为型)

使用策略模式定义行为的抽象,行为的具体方式由实现类实现;如果再添加其他行为的时候只需要增加策略接口的实现类,而不需要修改现有的代码,提高了代码的拓展性能,同时保证的对拓展开放对修改关闭的开闭原则;

2024-06-05 23:34:42 568

原创 设计模式-抽象工厂Abstract Factory(创建型)

抽象工厂是生产一族的产品,族的概念可根据不同的业务规则区分。扩展产品族非常困难。增加一个新的产品族需要修改抽象工厂和所有具体工厂的代码。对于新增族来说,满足开闭原则,而对于新增产品来说,不满足开闭原则。

2024-06-05 23:33:25 424

空空如也

空空如也

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

TA关注的人

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