自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM-垃圾回收

方法区的垃圾回收虽然不如堆区频繁,但依然是JVM内存管理的重要部分,尤其是在长时间运行和高动态性的应用中。主要涉及类卸载和常量池的回收,确保内存的有效利用和防止内存泄漏。垃圾回收器的组合关系虽然很多,但是针对几个特定的版本,比较好的组合选择如下:JDK8及之前:ParNew + CMS(关注暂停时间)、Parallel Scavenge + Parallel Old (关注吞吐量)、 G1(JDK8之前不建议,较大堆并且关注暂停时间)JDK9之后:G1(默认)

2024-08-05 17:12:11 1044

原创 JVM-运行时数据区

运行时数据区是Java虚拟机(JVM)在程序运行时用于管理和存储数据的内存区域。程序计数器作用: 存储当前线程正在执行的字节码指令的地址。线程共享否,每个线程有独立的程序计数器。内存溢出不常见,程序计数器通常占用很少的内存。虚拟机栈作用: 存储每个线程的局部变量、操作栈、方法调用和返回信息。线程共享否,每个线程有独立的虚拟机栈。内存溢出可能,深度过大的方法调用会导致,或虚拟机栈空间不足会导致。本地方法栈作用: 存储本地方法的调用和数据。线程共享否,每个线程有独立的本地方法栈。内存溢出可能。

2024-08-03 15:42:09 1044

原创 JVM-类加载器和双亲委派机制

定义:自定义类加载器是由开发者定义的类加载器,用于从特定来源加载类文件。通过自定义类加载器,可以实现从文件系统、网络、数据库等非标准路径加载类文件。实现:自定义类加载器通常通过继承类并重写其方法来实现。例如,重写findClass方法来定义类的加载逻辑。加载路径:自定义类加载器可以从任何指定的路径加载类文件,这取决于自定义的实现逻辑。@Override// 检查类是否已经加载Class

2024-08-03 14:26:36 930

原创 字节码文件(Class文件)的组成

字节码文件由魔数、版本信息、常量池、访问标志、类和父类索引、接口集合、字段表、方法表和属性表组成。查看字节码可使用javap -v指令或者jclasslib软件或者阿里arthas。

2024-08-02 13:25:01 685

原创 Redis-HyperLogLog

Hyperloglog(HLL)是从Loglog算法派生的概率算法,用于确定非常大的集合的基数,而不需要存储其所有值。Redis中的HLL是基于string结构实现的,单个HLL的内存。:获取 HyperLogLog 集合中估算的唯一元素数量。:将多个 HyperLogLog 集合合并为一个。两个 HyperLogLog 集合合并到名为。:向 HyperLogLog 集合中添加元素。作为代价,其测量结果是概率性的,的 HyperLogLog 集合中。集合中估算的唯一元素数量。

2024-08-01 15:28:46 317

原创 JVM是什么?

JVM(Java 虚拟机)是一个执行 Java 字节码的虚拟化运行环境,提供内存管理、垃圾回收和跨平台支持等功能,使得 Java 程序能够在不同操作系统上运行而无需修改。

2024-07-31 14:11:30 535

原创 Redis-GEO数据结构的基本用法

GEOSEARCH:在指定范围内搜索member,并按照与指定点之间的距离排序后返回。GEORADIUS:指定圆心、半径,找到该圆内包含的所有member,并按照与圆心之间的距离排序后返回。GEOADD:添加一个地理空间信息,包含:经度(longitude)、纬度(latitude)、值(member)GEOSEARCHSTORE:与GEOSEARCH功能一致,不过可以把结果存储到一个指定的key。GEODIST:计算指定的两个点之间的距离并返回。GEOPOS:返回指定member的坐标。

2024-07-30 18:00:00 134

原创 Redis-消息队列

字面意思就是存放消息的队列。最简单的消息队列模型包括3个角色:消息队列:存储和管理消息,也被称为消息代理(Message Broker)生产者:发送消息到消息队列消费者:从消息队列获取消息并处理消息使用队列的好处在于。

2024-07-29 18:00:00 633

原创 Redis-分布式锁

基于Redis的分布式锁实现思路:利用set nx ex获取锁,并设置过期时间,保存线程标示释放锁时先判断线程标示是否与自己一致,一致则删除锁特性:利用set nx满足互斥性利用set ex保证故障时锁依然能释放,避免死锁,提高安全性利用Redis集群保证高可用和高并发特性利用lua脚本确保一致性分布式锁-redission重入问题。

2024-07-28 18:00:00 1424

原创 Redis-缓存

缓存穿透产生的原因是什么?用户请求的数据在缓存中和数据库中都不存在,不断发起这样的请求,给数据库带来巨大压力缓存穿透的解决方案有哪些?缓存null值布隆过滤增强id的复杂度,避免被猜测id规律做好数据的基础格式校验加强用户权限校验做好热点参数的限流。

2024-07-27 16:48:53 704

原创 Elasticsearch-DSL查询-RestClient查询-数据聚合 --学习笔记

aggs代表聚合,与query同级,此时query的作用是?限定聚合的的文档范围聚合必须的三要素:聚合名称聚合类型聚合字段聚合可配置属性有:size:指定聚合结果数量order:指定聚合结果排序方式field:指定聚合字段。

2024-07-22 18:00:00 570

原创 Elasticsearch-RestAPI --学习笔记

JavaRestClient操作elasticsearch的流程基本类似。核心是方法来获取索引库的操作对象。索引库操作的基本步骤:初始化创建XxxIndexRequest。XXX是CreateGetDelete准备请求参数(Create时需要,其它是无参,可以省略)发送请求。调用方法,xxx是createexistsdelete。

2024-07-21 18:00:00 711

原创 Elasticsearch-索引库操作、文档操作 --学习笔记

Index就类似数据库表Mapping映射就类似表的结构。我们要向es中存储数据,必须先创建Index和Mappingtype:字段数据类型,常见的简单类型有:text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)longintegershortbytedoublefloatbooleandate:是否创建索引,默认为:使用哪种分词器properties:该字段的子字段。

2024-07-20 18:00:00 739

原创 Elasticsearch介绍、安装以及IK分词器 --学习笔记

Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎。它允许你以极快的速度存储、搜索和分析大量数据。Elasticsearch 基于 Apache Lucene 构建,提供了一个分布式、多租户能力的全文搜索引擎,带有 HTTP web 接口和无模式 JSON 文档。这意味着你可以用 Elasticsearch 存储、搜索、分析的数据种类非常广泛,几乎可以适用于任何类型的用例。

2024-07-19 18:00:00 2770

原创 MQ - RabbitMQ - 消息的可靠性 --学习笔记

消息队列(MQ)的生产者重试机制是指当生产者尝试将消息发送到消息队列中时,如果因为某些原因(如网络问题、队列不可用或其他任何导致消息发送失败的问题)导致消息未能成功发送,那么生产者会根据预设的策略尝试重新发送消息的过程。生产者确认机制是一种确保消息从生产者安全达到消息队列的方法,尤其是在使用像RabbitMQ这样的消息中间件时,这种机制尤为重要。生产者确认(Publisher Confirms)也被视为是一种可靠性保障,使得生产者在发送消息后可以知晓该消息是否已被消息队列成功接收。

2024-07-18 13:07:59 987

原创 MQ - RabbitMQ、SpringAMQP --学习笔记

我们开发业务功能的时候,肯定不会在控制台收发消息,而是应该基于编程的方式。由于RabbitMQ采用了AMQP协议,因此它具备跨语言的特性。任何语言只要遵循AMQP协议收发消息,都可以与RabbitMQ交互。并且RabbitMQ官方也提供了各种不同语言的客户端。但是,RabbitMQ官方提供的Java客户端编码相对复杂,一般生产环境下我们更多会结合Spring来使用。而Spring的官方刚好基于RabbitMQ提供了这样一套消息收发的模板工具:SpringAMQP。

2024-06-28 18:00:00 879

原创 Seata --分布式事务 学习笔记

分布式事务就像是一家连锁店的多个分店同时参与一项促销活动,要确保所有分店的促销结果一致,即要么全部成功,要么全部撤销。在软件系统中,当多个独立的服务需要协同完成一项任务时,涉及到的数据更新必须保证要么都成功,要么都失败,确保整个系统的数据一致性。Seata 就像是那个确保连锁店各分店促销一致性的协调者,它帮助构成微服务架构的各个服务保持事务一致,确保即使在不同服务间进行数据操作时,也能保证要么所有服务的操作都提交,要么都回滚,防止数据不一致的情况发生。维护全局和分支事务的状态,协调全局事务提交或回滚。

2024-06-27 18:00:00 965

原创 Sentinel --学习笔记

Sentinel是阿里巴巴开源的一款服务保护框架,旨在保障分布式系统的稳定性和高可用性。可以想象它就像是分布式系统中的交通警察,它的职责是监控系统流量和请求,确保在高峰时段或者遇到意外情况时,系统能够平稳运行,不会因为过载而崩溃。

2024-06-26 16:06:28 882 1

原创 nacos配置管理 --学习笔记

微服务共享的配置可以统一交给Nacos保存和管理,在Nacos控制台修改配置后,Nacos会将配置变更推送给相关的微服务,并且无需重启即可生效,实现配置热更新。网关的路由同样是配置,因此同样可以基于这个功能实现动态路由功能,无需重启网关即可修改路由配置。

2024-06-09 18:00:00 1130

原创 网关路由 --学习笔记

Component@Override// 编写过滤器逻辑System.out.println("未登录,无法访问");// 放行// 拦截@Override// 过滤器执行顺序,值越小,优先级越高return 0;@Component//AntPath匹配器@Override//1、获取request//2、判断是否需要做登录拦截//放行//3、获取tokenif(headers!= null &&!

2024-06-08 18:00:00 945

原创 OpenFeign --学习笔记

OpenFeign可以想象成一座连接客户端(服务器)和服务器之间的桥梁。在微服务架构中,各个服务之间像小岛屿一样分布在网络上,它们需要相互通信才能协同工作。但是,这些岛屿之间并没有现成的桥梁,这就需要一种工具来建立联系。当把项目拆成微服务时,服务之间需要互相调用的时候就很不方便,每个服务都拆成了一个独立的个体,这个时候再想去调用其它服务的话就可以用到OpenFeign,采用在线请求的方式,通过网络而不是再通过本地去调用其它服务。OpenFeign就像是一个建桥专家。

2024-06-07 15:21:57 479

原创 Nacos注册中心 --学习笔记

想象一下一个繁忙的购物中心,里面有很多商店,每个商店都在某个位置提供不同的商品或服务。这个购物中心有一个信息台,人们可以在这里查询任何商店的位置和提供的服务。等到有新的商店开张,或者现有商店搬走,信息台的信息也会随之更新,确保顾客总能找到他们想要的东西。现在,如果我们把这个购物中心比作微服务架构,那么Nacos注册中心就是那个提供最新信息的信息台。每个微服务启动时,都会向Nacos注册中心“报到”。当有微服务下线或更新时,注册中心也会实时更新这些信息。

2024-06-05 18:00:00 2322

原创 RestTemplate --学习笔记

想象一下你在一家快餐店点餐。你告诉服务员你想要的食物,服务员在系统中输入你的订单,然后厨房根据这个订单做餐。等待一会儿后,你拿到你的食物,整个过程既直接又高效。在 Java 的世界里,就像是你的收银员。当你的应用想要从另一个应用(厨房)获取数据时(比如点餐),你只需告诉你需要什么(发出 HTTP 请求),会帮你处理这个请求,然后将其他应用的回应(做好的食物)交回给你。简单来说,是 Spring 提供的一个用于发送 HTTP 请求和获取 HTTP 回应的工具,使得和其他服务或 API 交互变得简单方便。

2024-06-04 18:00:00 697

原创 什么是SpringCloud? --学习笔记

想象一下,你要建一个现代化城市,这个城市由很多小区组成,每个小区承担着不同的职能,比如居住、购物、娱乐、教育等。在这个比喻中,现代化城市就像是一个大型软件系统,而每个小区就是系统中的一个小服务,它们共同组成了一个复杂的服务网络。它帮助开发人员专注于各自的服务功能实现,而不用过多担心服务之间的通信问题、服务的注册与发现、配置管理等复杂的系统级问题。链路追踪就像是安装在城市中的监控摄像头,记录下请求的完整路径,帮助我们了解请求的全貌,方便出问题时能快速定位问题所在。

2024-06-03 18:00:00 392

原创 Docker安装与使用 --学习笔记

Docker本身包含一个后台服务,我们可以利用Docker命令告诉Docker服务,帮助我们快速部署指定的应用。Docker服务部署应用时,首先要去搜索并下载应用对应的镜像,然后根据镜像创建并允许容器,应用就部署完成了。图示:所以使用docker部署软件确实是非常的实用方便,那么刚才执行的命令真正的意思到底是什么呢?

2024-06-02 18:00:00 954

原创 Apache POI --学习笔记

Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。一般情况下,POI 都是用于操作 Excel 文件。

2024-06-01 18:00:00 358

原创 WebSocket --学习笔记

WebSocket 是基于 TCP 的一种新的。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建的连接, 并进行数据传输。想象一下平时我们使用的聊天软件,当你发送一条信息后,通常不需要刷新页面,对方就能准时收到消息;同样地,当对方回复时,你也能立即看到新消息。这种实时且双向的数据交换就是WebSocket实现的效果。与传统的HTTP请求不同,HTTP请求通常是单向的,客户端发送一个请求到服务器,服务器返回一个响应,结束这次通信;

2024-05-31 18:00:00 241

原创 Spring Task --学习笔记

是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。定时任务框架定时自动执行某段Java代码。

2024-05-30 18:00:00 405

原创 Spring Cache --学习笔记

Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。Spring Cache 提供了一层抽象,底层可以切换不同的缓存实现,例如:EHCacheCaffeineRedis(常用)

2024-05-29 18:00:00 453

原创 HttpClient --学习笔记

HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient的作用有俩个:简单的说,可以将HttpClient理解为一个虚拟的网络客户端,可以在java程序中模拟发送Http请求和接收响应,也就是在程序中模拟平常正常用浏览器上网发送请求给服务器这一行为。发送HTTP请求。

2024-05-24 18:00:00 396

原创 Redis --学习笔记

一个基于内存的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件基于内存存储,读写性能高适合存储热点数据(热点商品、资讯、新闻)企业应用广泛Redis默认端口号为6379Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。它存储的value类型比较丰富,也被称为结构化的NoSql数据库。NoSql(Not Only SQL),不仅仅是SQL,泛指非关系型数据库。

2024-05-23 17:06:58 820

原创 ThreadLocal --学习笔记

ThreadLocal 并不是一个Thread,而是Thread的局部变量, ThreadLocal为每个线程提供单独一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问。总得来说,你可以通过ThreadLocal在线程的某一处存储数据,并在之后需要的地方取出数据。public void set(T value) 设置当前线程的线程局部变量的值。public T get() 返回当前线程所对应的线程局部变量的值。如上Long也可以是其它类型。

2024-05-16 12:00:00 169

原创 Swagger --学习笔记

Swagger是API设计工具集,用于帮助开发者设计、构建和文档化RESTful Web服务。它通过标准化的格式来描述API接口,使得创建、维护和使用API变得更加清晰和简便,同时提供工具支持API的交互式文档、编辑器以及代码的自动生成Spring已经将Swagger纳入自身的标准,建立了Spring-swagger项目,现在叫Springfox。通过在项目中引入Springfox ,即可非常简单快捷的使用Swagger。

2024-05-15 12:00:00 411

原创 nginx反向代理和负载均衡 --学习笔记

即naginx作为一个中转站,前端传来的动态请求先发送到nginx服务器,再由nginx服务器转发至后端使用naginx反向代理的好处:提高访问速度因为nginx本身可以进行缓存,如果访问的同一接口,并且做了数据缓存,nginx就直接可把数据返回,不需要真正地访问服务端,从而提高访问速度。进行负载均衡所谓负载均衡,就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器。保证后端服务安全。

2024-05-14 11:45:00 385

原创 springbootweb的一些知识点总结(杂项) --学习笔记

通过启动类上的@SpringBootApplication中包含的@EnableAutoConfiguration中包含的@Import({AutoConfigurationImportSelector.class})注解中指定的实现了ImportSelector接口的AutoConfigurationImportSelector实现类中的selectImports方法的返回值中包含的需要扫描的自动配置类的位置加载出相关的第三方依赖的Bean。

2024-05-13 11:45:00 795

原创 @ExceptionHandler 注解 --学习笔记

例如,如果你有两个处理方法,一个参数是异常的子类型,另一个是父类型,当抛出该子类型异常时,Spring会调用参数为子类型的处理方法。可以将其看作是Spring的一种切面编程(AOP)实践,使得可以在一个地方集中处理类似的异常而无需在每个方法中重复相同的异常处理代码。注解且匹配异常类型的方法来处理这些异常。具体来说,它允许你处理控制器内部发生的异常,避免了编写大量的try-catch块,和将异常处理逻辑与业务逻辑混在一起。添加了@ExceptionHandler注解的方法,其形参类型决定它所捕获的异常类型。

2024-05-12 11:45:00 262

原创 轻松掌握MybatisPlus --学习笔记

一个Mybatis的增强工具,简化单表操作,对Mybatis的功能有很多的增强但不改变,让开发更加的简单,高效。

2024-05-11 12:00:00 567

原创 springboot-aop-学习笔记

AOP英文全称:Aspect Oriented Programming(面向切面编程、面向方面编程),其实说白了,就是 需要 某个通用的方法时,可以创建一个模板,模板里面就有这些通用的方法,然后再把需要这些方法的方法们嵌套进去运行,很像动态代理同时需要增加一个方法,改动原来的代码很麻烦,所以直接使用一个模板来调用原来的代码,模板里面就有需要增加的方法:这么说可能还有点抽象,举个例子,现在需要给项目中逻辑层每个方法添加一个记录运行耗时的功能,如果在每个方法里面都敲上这么一段新增的代码即麻烦又显得代码臃肿,这个

2024-05-10 19:54:44 738 1

原创 拦截器Interceptor --学习笔记

是一种动态拦截方法调用的机制,类似于过滤器。拦截器是Spring框架中提供的,用来动态拦截控制器方法的执行。拦截器的作用:拦截请求,在指定方法调用前后,根据业务需要执行预先设定的代码。

2024-04-30 12:00:00 187

原创 过滤器Filter --学习笔记

使用了过滤器之后,要想访问web服务器上的资源,必须先经过滤器,过滤器处理完毕之后,才可以访问对应的资源。

2024-04-29 12:00:00 279

MySQL个人学习笔记

内容:包含MySQL大部分语句,使用方式,作用,示例等。是xmind(思维导图)文件,分类清晰,语句好找 囊括了ddl、dml、dcl、dql、函数、约束、事务、索引、各种查询语句,增删查改等等,以及一些概念性的解释和示例使用方法 适合想学习MySQL的初学者或者用来查询想使用的语句格式或者拿来复习温习也是很不错的选择,xmind文件,手机也可方便打开,随查随看随记 个人学习MySQL的一套学习笔记,记录了我所学的各种MySQL语句及其知识要点,采用思维导图的方式记录,逻辑清晰,分类准确,方便查找所需的知识点,也方便随时打开查阅,可以拿来复习、学习、或者查阅相应语句,也可以直接拿去当笔记用 可以帮助更好的理解和使用MySQL

2024-04-10

node-v20.12.0-x64.msi

最新版本

2024-04-02

logback.xml

Logback框架的核心配置文件

2024-03-27

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

TA关注的人

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