自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 XXL-JOB

XXL-JOB的运行原理和架构如图::我们的服务引入一个XXL-JOB的依赖,就可以通过配置创建一个执行器。负责与XXL-JOB调度中心交互,执行本地任务。:一个独立服务,负责管理执行器、管理任务、任务执行的调度、任务结果和日志收集。部署调度中心如果要自己部署,分为两步:运行初始化SQL,创建数据库表利用Docker命令,创建并运行容器说明:xxl_job_lock:任务调度锁表;xxl_job_group:执行器信息表,维护任务执行器信息;

2024-04-14 15:18:07 855

原创 Spring之事务底层源码解析

所以这个类的主要作用就是。

2024-04-10 12:44:45 899 1

原创 Spring之Bean生命周期源码解析

实例化自动注入Aware对象初始化。

2024-04-01 16:46:09 948

原创 部署es集群

我们会在单机上利用docker容器运行多个es实例来模拟es集群。不过生产环境推荐大家每一台服务节点仅部署一个es的实例。部署es集群可以直接使用docker-compose来完成,但这要求你的Linux虚拟机至少有的内存空间。

2024-03-22 22:20:55 321

原创 elasticsearch数据聚合

默认的拼音分词器会将每个汉字单独分为拼音,而我们希望的是每个词条形成一组拼音,需要对拼音分词器做个性化定制,形成自定义分词器。elasticsearch中分词器(analyzer)的组成包含三部分:character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符tokenizer:将文本按照一定的规则切割成词条(term)。例如keyword,就是不分词;还有ik_smarttokenizer filter:将tokenizer输出的词条做进一步处理。

2024-03-22 21:52:47 960 1

原创 elasticsearch的数据搜索

match和multi_match的区别是什么?match:根据一个字段查询multi_match:根据多个字段查询,参与查询字段越多,查询性能越差精确查询常见的有哪些?term查询:根据词条精确匹配,一般搜索keyword类型、数值类型、布尔类型、日期类型字段range查询:根据数值范围查询,可以是数值、日期的范围查询的DSL是一个大的JSON对象,包含下列属性:query:查询条件from和size:分页条件sort:排序条件highlight:高亮条件。

2024-03-22 17:23:22 1077

原创 Java HighLevel Rest Client

JavaRestClient操作elasticsearch的流程基本类似。核心是client.indices()方法来获取索引库的操作对象。索引库操作的基本步骤:初始化RestHighLevelClient创建XxxIndexRequest。XXX是Create、Get、Delete准备DSL( Create时需要,其它是无参)发送请求。调用RestHighLevelClient#indices().xxx()方法,xxx是create、exists、delete。

2024-03-22 14:50:35 779

原创 手写模拟SpringBoot核心流程

jiajiaspringboot: 手写springboot。

2024-03-21 23:18:42 1012

原创 安装elasticsearch、kibana

因为我还需要部署kibana容器,因此需要让es和kibana容器互联。

2024-03-16 18:20:28 914

原创 RabbitMQ进阶

每个RabbitTemplate只能配置一个ReturnCallback,因此需要在项目加载时配置:@Slf4j@Override// 获取RabbitTemplate// 设置ReturnCallback// 投递失败,记录日志log.info("消息发送失败,应答码{},原因{},交换机{},路由键{},消息{}",// 如果有业务需要,可以重发消息});ConfirmCallback可以在发送消息时指定,因为每个业务处理confirm成功或失败的逻辑不一定相同。// 1.消息体。

2024-03-16 15:32:05 948

原创 Spring之底层架构核心概念解析

我们还可以。

2024-03-16 03:23:56 942

原创 Spring底层核心原理解析

对于这三行代码应该,大部分同学应该都是比较熟悉,这是学习Spring的hello world。光看这三行代码,其实,也不能理解为什么需要ClassPathXmlApplicationContext和getBean()方法,随着课程的深入将会改变你此时的观念,而对于上面的这些疑问,也会随着课程深入逐步得到解决。对于这三行代码,你现在可以认为:如果你要用Spring,你就得这么写。就像你要用Mybatis,你就得写各种Mapper接口。

2024-03-16 02:58:35 661 1

原创 SpringMVC启动与请求处理流程解析

实现了Controller接口的Bean对象实现了HttpRequestHandler接口的Bean对象添加了@RequestMapping注解的方法一个HandlerFunction对象@Override@Override@Component@[email protected]();HandlerMapping负责去寻找Handler,并且保存路径和Handler之间的映射关系。

2024-03-16 02:18:37 1169

原创 c++实现数组

提供对应的拷贝构造函数以及operator=防止浅拷贝问题;可以对内置数据类型以及自定义数据类型的数据进行存储;提供尾插法和尾删法对数组中的数据进行增加和删除;可以获取数组中当前元素个数和数组的容量。可以通过下标的方式访问数组中的元素;构造函数中可以传入数组的容量;将数组中的数据存储到堆区;

2024-03-14 18:01:50 124

原创 c++指针的定义和使用

特点:指针的指向可以修改,但是指针指向的值不可以修改;指针前加*代表解引用,找到指针指向的内存中的数据。在32位操作系统下,指针是占4个字节的空间大小。特点:指针的指向不可以改,指针指向的值可以改;特点:指针的指向和指针指向的值都不可以修改。可以通过解引用的方式找到指针指向的内存。3、const即修饰指针,又修饰常量。:指针变量指向内存中编号为0的空间。:空指针指向的内存是不可以访问的。1、const修饰指针:常量指针。2、const修饰常量:指针常量。:指针变量指向的非法的内存空间。

2024-03-13 15:17:03 394

原创 Docker MySQL 报 2059 错误:认证插件 ‘caching_sha2_password‘ 无法加载

使用docker部署的mysql8.0.29再使用Navicat连接myslq报错Authentication plugin ‘xxxxxxx’ cannot be loaded:XXXXXX (无法加载身份验证插件)原因:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。docker exec -it 容器名称 bash。2、选择mysql数据库。解决办法:更改加密规则。

2024-03-09 16:11:16 475

原创 RabbitMQ

基本消息队列的消息发送流程:建立connection创建channel利用channel声明队列利用channel向队列发送消息基本消息队列的消息接收流程:建立connection创建channel利用channel声明队列定义consumer的消费行为handleDelivery()利用channel将消费者与队列绑定Work模型的使用:多个消费者绑定到一个队列,同一条消息只会被一个消费者处理通过设置prefetch来控制消费者预取的消息数量。

2024-03-08 01:58:40 1136

原创 Docker实用篇

数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了常见的镜像在DockerHub就能找到,但是我们自己写的项目就必须自己构建镜像了。而要自定义镜像,就必须先了解镜像的结构才行。

2024-03-07 22:12:52 1053

原创 CentOS安装Docker

Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。

2024-03-07 18:08:53 473

原创 Linux安装

方式概述场景物理机安装直接将操作系统安装到服务器硬件上企业开发中,我们使用的服务器基本都是采用这种方式虚拟机安装通过虚拟机软件安装我们在学习阶段,没有自己服务器,而我们又需要学Linux,就可以安装在虚拟机上虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能、运行在完全隔离环境中的完整计算机系统。常用虚拟机软件:VMWareVirtualBoxQemu那么我们就可以在课程中将Linux操作系统安装在虚拟机中,我们课上选择的虚拟机软件是VMware。

2024-03-06 15:18:41 980

原创 Gateway服务网关

过滤器的作用是什么?① 对路由的请求或响应做加工处理,比如添加请求头② 配置在路由下的过滤器只对当前路由的请求生效defaultFilters的作用是什么?① 对所有路由都生效的过滤器需求:定义全局过滤器,拦截请求,判断请求的参数是否满足下面条件:参数中是否有authorization,authorization参数值是否为admin如果同时满足则放行,否则拦截实现:在gateway中定义一个过滤器@Order(-1)@Component@Override// 1.获取请求参数。

2024-03-06 01:22:16 1012

原创 Feign远程调用

使用Feign的步骤:① 引入依赖② 添加@EnableFeignClients注解③ 编写FeignClient接口④ 使用FeignClient中定义的方法代替RestTemplate类型作用说明修改日志级别包含四种不同的级别:NONE、BASIC、HEADERS、FULL响应结果的解析器http远程调用的结果做解析,例如解析json字符串为java对象请求参数编码将请求参数编码,便于通过http请求发送支持的注解格式默认是SpringMVC的注解失败重试机制。

2024-03-06 01:09:25 613

原创 Nacos集群搭建

官方给出的Nacos集群图:其中包含3个nacos节点,然后一个负载均衡器代理3个Nacos。这里负载均衡器可以使用nginx。我们计划的集群结构:三个nacos节点的地址:(由于没有这么多服务器就使用自己的电脑,但是切记一定要改端口)此处的IP是你自己服务的IP。

2024-03-06 00:56:46 819

原创 Nacos配置管理

Nacos除了可以做注册中心,同样可以做配置管理来使用。

2024-03-03 23:40:55 537

原创 Nacos

在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码:如图:1.4.1.版本的Nacos,安装包 链接:https://pan.baidu.com/s/1jvmhPBkZqFfGNaGjNhibYQ?pwd=o29b提取码:o29b。

2024-03-03 20:01:05 1048

原创 Eureka注册中心

SpringCloudRibbon的底层采用了一个拦截器,拦截了RestTemplate发出的请求,对地址做了修改。用一幅图来总结一下:基本流程如下:拦截我们的RestTemplate请求RibbonLoadBalancerClient会从请求url中获取服务名称,也就是user-serviceDynamicServerListLoadBalancer根据user-service到eureka拉取服务列表eureka返回列表,localhost:8081、localhost:8082。

2024-03-03 14:01:07 994

原创 SpringBoot原理

SpringBoot的自动配置就是当Spring容器启动后,一些配置类、bean对象就自动存入到了IOC容器中,不需要我们手动去声明,从而简化了开发,省去了繁琐的配置操作。比如:我们要进行事务管理、要进行AOP程序的开发,此时就不需要我们再去手动的声明这些bean对象了,我们直接使用就可以从而大大的简化程序的开发,省去了繁琐的配置操作。

2024-02-28 16:02:16 734

原创 springboot 配置优先级

在SpringBoot项目当中,我们要想配置一个属性,可以通过这三种方式当中的任意一种来配置都可以,那么如果项目中同时存在这三种配置文件,且都配置了同一个属性,如:Tomcat端口号,到底哪一份配置文件生效呢?在SpringBoot项目当中,常见的属性配置方式有5种, 3种配置文件,加上2种外部属性的配置(Java系统属性、命令行参数)。优先级: 命令行参数 > 系统属性参数 > properties参数 > yml参数 > yaml参数。Java系统属性配置 (格式: -Dkey=value)

2024-02-28 11:55:37 341

原创 AOP详解

1、AOP英文全称:Aspect Oriented Programming(面向切面编程、面向方面编程),其实说白了,面向切面编程就是面向特定方法编程。2、AOP的作用:在程序运行期间在不修改源代码的基础上对已有方法进行增强(无侵入性: 解耦)。AOP的优势:(1)减少重复代码(2)提高开发效率(3)维护方便。

2024-02-28 11:05:44 802

原创 JWT登录

由于我用的jdk11遇到的问题java.lang.ClassNotFoundException:javax.xml.bind.DatatypeConverter。拦截范围不同:过滤器Filter会拦截所有资源,而Interceptor只会拦截Spring环境中的资源;接口规范不同:过滤器需要实现Filter接口,而拦截器需要实现HandlerInterceptor接口;登录Interceptor拦截器进行拦截判断是否有令牌。上面代码就是编写的jwt生成和解析的工具类。

2024-02-27 22:09:38 265

原创 SSRF靶场实战

SSRF(curl)

2024-02-25 17:15:39 184

原创 CSRF靶场实战

后台没做 CSRF token,同时也是通过 GET 请求来提交修改信息,我们拿到这个,修改一下,然后让 allen 点击就好,我们构造的 URL 中把地址 add 改为 hacker。

2024-02-25 16:11:21 668

原创 xss靶场实战(xss-labs-master靶场)

,使用链接标签中的javascript:伪协议来执行 JS 代码,点击插入的链接便会弹窗。修改 url 地址中的name=<script>alert(1)

2024-02-25 13:17:45 1086

原创 Spring面试题总结

在一个方法上加了@Transactional注解后,Spring会基于这个类生成一个代理对象,会将这个代理对象作为bean,当在使用这个代理对象的方法时,如果这个方法上存在@Transactional注解,那么代理逻辑会先把事务的自动提交设置为false,然后再去执行原本的业务逻辑方法,如果执行业务逻辑方法没有出现异常,那么代理逻辑中就会将事务进行提交,如果执行业务逻辑方法出现了异常,那么则会将事务进行回滚。一般情况下,在织入切面时,AOP容器会为目标对象创建动态的创建一个代理对象。

2024-02-25 00:10:00 789

原创 Mysql 8.0新特性详解

索引隐藏只是不可见,但是数据库后台还是会维护隐藏索引的,在查询时优化器不使用该索引,即使用force index,优化器也不会使用该索引,同时优化器也不会报索引不存在的错误,因为索引仍然真实存在,必要时,也可以把隐藏索引快速恢复成可见。软删除就可以使用隐藏索引,比如我们觉得某个索引没用了,删除后发现这个索引在某些时候还是有用的,于是又得把这个索引加回来,如果表数据量很大的话,这种操作耗费时间是很多的,成本很高,这时,我们可以将索引先设置为隐藏索引,等到真的确认索引没用了再删除。

2024-02-20 22:13:15 1044

原创 Innodb底层原理与Mysql日志机制深入剖析

注意:如果要恢复大量数据,比如程序员经常说的删库跑路的话题,假设我们把数据库所有数据都删除了要怎么恢复了,如果数据库之前没有备份,所有的binlog日志都在的话,就从binlog第一个文件开始逐个恢复每个binlog文件里的数据,这种一般不太可能,因为binlog日志比较大,早期的binlog文件会定期删除的,所以一般不可能用binlog文件恢复整个数据库的。之后,这个连接里面的权限判断逻辑,都将依赖于此时读到的权限。查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空。

2024-02-20 18:55:02 1212

原创 Mysql事务原理与优化

打开一个客户端B,并设置当前事务模式为serializable,更新相同的id为1的记录会被阻塞等待,更新id为2的记录可以成功,说明在串行模式下innodb的查询也会被加上行锁,如果查询的记录不存在会给这条不存在的记录加上锁(这种是间隙锁,后面会详细讲)。如果客户端A执行的是一个范围查询,那么该范围内的所有行包括每行记录所在的间隙区间范围都会被加锁。我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。

2024-02-20 14:00:19 938

原创 深入理解MySQL索引底层数据结构

原因:考虑树的高度,假如数据有100万,索引都是递增的,那么会导致树的高度非常高,红黑树查询的顺序:如查找0005号数据,会先从根节点开始查询,比根节点数字大,查询根的右节点,之后比较0004,以此类推,每次加载根节点都是一次IO操作。如果按照B-树的结构,一个页是16kB,如果数据大小就是8kB的话,那么一个页能存的数据就只有2个索引了,这样一样会导致树的深度变高,此外,索引的每个节点的数据都不重复。前缀索引:前缀索引是普通索引的一种,只基于字段的前缀进行索引。联合索引:基于表中多个字段组合创建的索引。

2024-02-19 23:07:00 400

原创 xss靶场实战

攻击最终目的是在网页中嵌入客户端恶意代码,最常用的攻击代码是JavaScript语言,但也会使用其他的脚本语言,例如:ActionScript、VBScript。,那么存在xss漏洞的网站,xss就可以用来盗取用户cookie,废掉页面,导航到恶意网站!属于web应用中计算机安全漏洞,是恶意的web访问者将脚本植入到提供给用户使用的页面中,通常是使用JavaScript编写的危险代码,当用户使用浏览器访问页面时,脚本会被执行,从而达到攻击者目的。在部分情况下,由于输入的限制,注入的恶意脚本比较短。

2024-01-29 18:37:12 1145

原创 网安文件包含漏洞

服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发者节省大量的时间。需要特别说明的是,服务器包含文件时,不管文件后缀是否是php,都会尝试当做php文件执行,如果文件内容确为php,则会正常执行并返回结果,如果不是,则会原封不动地打印文件内容,所以文件包含漏洞常常会导致。文件包含的原理:文件包含漏洞产生的原因是在通过PHP函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。

2024-01-29 13:21:02 739

空空如也

空空如也

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

TA关注的人

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