自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mistofinsult

爱xixi的阿超

  • 博客(45)
  • 收藏
  • 关注

原创 拦截、限流,针对场景详细信息(二)

/ UriKeyResolver.java(根据语义修正类名拼写)下面方法是与上一篇文章有个同样的效果,更加简洁方便。需注意,以下是两个类,使用时记得分开创建。创建获取交易路径path和用户ip的类。创建key-resolver的配置类。

2025-03-31 18:01:45 302

原创 拦截、限流,针对场景详细信息(一)

以下是一个基于的完整限流实现案例,针对同一接口前缀(如 /one/ )的IP访问频率控制:场景:用户不用登录即可访问接口,网站会有被攻击的风险。

2025-03-31 17:25:19 482

原创 @Pointcut括号内的6种方式(常见)

2025-03-25 17:43:53 434

原创 @Pointcut的表达式差异之whthin和annotation

注解的差异,这种设计差异源于。

2025-03-25 10:57:28 304

原创 Java的SpringAOP中,切面类的注解模式

System.out.println("方法开始执行: " + joinPoint.getSignature().getName());System.out.println("捕获到异常: " + ex.getMessage());System.out.println("缓存用户信息: " + user.getId());System.out.println("方法执行完成,释放资源");System.out.println("提交事务");System.out.println("开始事务");

2025-03-24 16:20:20 824

原创 Spring cloud Gateway中的GlobalFilter接口及其方法

包含请求/响应的上下文对象,可获取请求头、参数、响应体等信息。

2025-03-14 16:35:49 448

原创 GBK编码转为中文

System.out.println("解码后的中文: " + decodedStr);在 Java 中,可以通过将 GBK 编码的字符串转换为字节数组,然后再解码为中文。1. `%CD%F2%CF%F2%D1%F4` 是 GBK 编码的字符串。2. 使用 `URLDecoder.decode` 方法将其解码为中文。// 将 % 替换为标准的 URL 编码格式。3. 解码时需要指定字符集为 `GBK`。

2025-02-18 16:39:12 338

原创 Maven中的dependencyManagement和dependencies

dependencies>中的jar直接加到项目中,管理的是依赖关系(如果有父pom,子pom,则子pom中只能被动接受父类的版本);<dependencyManagement>主要管理版本,对于子类继承同一个父类是很有用的,集中管理依赖版本不添加依赖关系,对于其中定义的版本,子pom不一定要继承父pom所定义的版本。

2025-01-13 15:02:08 330

原创 Redis的持久化

4. 顺序:redis内存满了(100W)AOF=100w ->LRU后(内存50w,AOF=100w)->继续写操作(内存100w)AOF=150w ->AOF过大创建新的小AOF(基于redis内存中的最新的100w创建)后删除大的AOF。4. 适合灾难级别的紧急数据恢复,比如不小心用了flushall清空数据,只要rewrite操作还没有发生,可以把复制一个AOF文件,最后一条flushall命令删掉,再把AOF放回去,就可以通过恢复机制,自动恢复所有数据。AOF存放的是指令日志文件,需要全部执行。

2025-01-13 14:22:24 536

原创 Redis面试问题

意思是至少有一个slave,数据复制和同步不能超过10s,这样master和slave失去连接后拒绝写请求,避免了数据丢失。2. slave priority相同,看offset,offset越大表示复制的数据越多,优先级越高。* 惰性删除 访问这个key的时候,Redis检查是否设置了过期时间且过期了,那么不会给返回任何数据。* 故障转移,failover主备切换,m故障时,自动检测,某个s自动切换为m叫主备切换。* m做冷备份时,id变换,s同步时会发现id不一样,触发全量同步保持数据一致。

2025-01-07 15:18:06 526

原创 缓存常见问题

1. 缓存穿透:访问一个不存在的缓存2. 缓存击穿:大批用户访问热点数据的时候,热点数据缓存失效,大量访问数据库3. 缓存雪崩:大批量缓存全部失效。

2025-01-07 15:04:11 593

原创 常用的消息中间件(ActiveMQ、RabbitMQ、RocketMQ、Kafka)面试精华

高可用:假设一个topic有三个partition,在topic中写三条消息,每条消息存在不同的partition中,每个partition有自己的副本,选出leader和follower,leader宕机后,在follower中选出leader。生产者给kafka发送消息都有一个offset 在kafka中是有序的,消费者也是按照顺序消费的,消费者按顺序消费到哪个offset,zookeeper有记录,kafka可以从zookeeper中读取消费到那个位置了。多个系统调用主系统可选择是否订阅。

2024-12-17 12:05:48 630

原创 throw和throws的区别?

throw:throw在方法体内部,表示提出异常,由方法体内部的语句处理; throw是具体向外理出异常的动作,所以它抛出的是一个异常实例。throws:throws 在方法声明后面,表示如果抛出异常,由该方法的调用者来进行异常的处理。表示出现异常的可能性,并不一定会发生这种异常。

2024-05-14 15:44:09 331

原创 error和exception的区别?

一般是指与虚拟机相关的问题,如:系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢出等。这类错误将会导致应用程序中断,仅靠程序本身无法恢复和预防;Exception 类:分为运行时异常和受检查的异常。运行时异常:【如空指针异常、指定的类找不到、数组越界、方法传递参数错误、数据类型转换错误]可以编译通过,但是一运行就停止了,程序不会自己处理;

2024-05-14 15:41:13 443

原创 Integer和int的区别?

Integer 和 int 的区别?

2024-05-14 15:19:31 212

原创 网络错误码大全

网络错误码是指在网络通信过程中出现的各种错误代码。这些是一些常见的网络错误码,具体的错误码可以根据具体的网络请求情况而定。

2024-05-06 23:30:12 480

原创 Java缓存问题

描述:缓存穿透是指查询请求直接穿透缓存,到达数据库进行查询,导致缓存失去了缓存数据的作用。- 解决方案:采用缓存更新策略,如缓存预加载、缓存刷新等,确保缓存数据与数据库数据的一致性。- 描述:缓存污染是指缓存中存储了错误或不一致的数据,导致后续访问缓存时得到错误的结果。- 解决方案:确保缓存的正确性,对于更新操作,确保先删除或更新缓存,再进行数据库操作。- 解决方案:设置合理的缓存键,确保缓存键的唯一性和有效性,避免缓存穿透。- 解决方案:设置合理的缓存键,确保缓存键的唯一性和有效性,避免缓存穿透。

2024-05-06 23:23:59 572 2

原创 Java GC原理

Java垃圾回收(,简称)是Java虚拟机(JVM)的一个重要功能,它负责自动管理内存,回收不再被程序使用的对象所占用的内存空间。深入了解Java GC的原理,对于编写高效、稳定的Java应用程序具有重要意义。

2024-04-30 17:15:36 451 1

原创 SQL中distinct的用法

在SQL(结构化查询语言)中,关键字用于返回唯一不同的值。当你使用语句从一个或多个列中选择数据时,如果这些列包含重复的值,关键字可以帮助你去除结果集中的重复行,只返回不同的值。下面是几个使用。

2024-04-28 11:08:36 821

原创 IntelliJ IDEA 常用快捷键

是一款功能丰富的集成开发环境,拥有大量的快捷键来提高开发效率。由于版本更新可能会带来快捷键的变化,以下列出一些常用的IntelliJ IDEA 快捷键。

2024-04-28 11:02:23 1768

原创 存储过程详解及案例

存储过程是一种预先编译的SQL语句集合,被存储在数据库服务器中,并且可以被多次调用。存储过程可以接收参数、执行SQL语句、进行条件判断和循环等复杂操作,然后返回结果。通过存储过程,可以提高数据库的性能、简化开发、减少网络传输量,并且提高数据的安全性。在这个例子中,存储过程名为GetUserInformation,接收一个参数@UserName,然后在Users表中根据传入的用户名查询对应的用户信息。这样就会返回用户Alice在数据库中的UserId、UserName和Email信息。

2024-04-25 16:25:25 220

原创 如何理解三次握手四次挥手

连接的建立和断开过程分别被称为。

2024-04-25 16:19:29 781

原创 Get和Post请求的区别

GET请求适合用于查询数据、无副作用的操作,安全、幂等的操作。POST请求适合用于更新数据、涉及修改服务器状态的操作。根据具体的需求和场景选择合适的请求方法能够更好地保证代码的可靠性和安全性。

2024-04-24 10:50:36 529

原创 Java中finally和final区别

在Java编程语言中,和是两个不同的关键字,它们用于不同的目的,但可能会在代码中混淆。

2024-04-24 10:25:52 651

原创 Java如何匹配字符串中的中文字符

String input = "你好,世界!方法把字符串 "世界" 编译成了一个模式,然后创建了一个 Matcher对象。方法会在输入的字符串 input 中查找是否存在符合模式的匹配项。//查找并打印输入中的所有中文字符。//用输入和模式创建一个匹配器。//编译一个正则表达式。在这个例子中,我使用。来执行实际的匹配操作。

2024-04-22 21:26:50 788

原创 枚举类的name方法及示例

在Java中,枚举类可以使用方法来获取枚举常量的名称。例如,假设我们有一个枚举类DayOfWeek表示一周的每一天:代码如下:我们可以通过调用方法来获取每个枚举常量的名称:代码如下:// 输出MONDAY方法返回的是枚举常量的名称字符串。

2024-04-22 21:05:13 578 1

原创 java中的@Retention注解

在Java中,``是注解的一个属性,它用于指定注解的生命周期。一个注解可以有多个`@Retention`属性,分别代表它在程序生命周期的不同阶段被使用。

2024-04-18 17:20:35 748 1

原创 java注解用法和作用

是一种,用于在编译时提供有关代码的额外信息。注解通常用于标记类、方法、变量等元素,以便在运行时或编译时执行特定的操作。

2024-04-18 17:11:54 596 1

原创 stream.map用法

在Java中,``是一个非常常用的方法,它用于将一个流中的每个元素映射(转换)为新的元素。这个方法接收一个函数作为参数,该函数定义了如何将原始元素转换为新的元素。

2024-04-11 15:49:16 1160 1

原创 创建表时如何创建主键

在创建数据库表时,)是一个非常重要的概念,它用于唯一地标识表中的每一行(记录)。创建主键的步骤通常如下:1.:主键可以是表中的一个字段或者多个字段的组合,用以确保每一行数据的唯一性。通常,我们会选择那些不包含重复值的字段作为主键,例如,一个人的身份证号、商品的条形码等。2.:在创建表的时候,通过指定该字段(或字段组合)为主键来创建。在不同的数据库管理系统中,如MySQL、SQL Server、Oracle等,设置主键的语法可能略有不同,但基本概念是一致的。

2024-04-11 14:44:04 1753 1

原创 单点登录详解

简称SSO)是一种身份验证和访问控制机制,允许用户使用一组凭据(例如用户名和密码)登录到一个中心身份提供者,然后在不需要再次输入凭据的情况下访问多个应用程序或服务。1. 用户通过凭据在一个中心身份提供者(例如身份验证服务器)上进行身份验证。2. 成功验证后,中心身份提供者会颁发一个令牌(称为身份令牌)给用户。3. 用户访问其他应用程序或服务时,这些应用程序会将用户重定向到中心身份提供者以进行身份验证。4. 中心身份提供者检查用户的令牌并验证其身份。

2024-04-10 17:54:32 417 1

原创 枚举类name()方法

枚举常量的名称与它们声明时的名称一样,不会受到重命名或其他因素的影响。返回的是枚举常量的名称字符串。// 输出MONDAY。

2024-04-10 17:43:59 927 1

原创 堆和栈的区别

堆(Heap)和栈(Stack)是程序在运行时用于存储数据的两个内存区域,它们在Java虚拟机(JVM)中起着不同的作用。- **栈**:由JVM自动管理。内存分配和清理的速度快,因为它遵循先进后出(FILO)的原则,生命周期通常与方法调用相关联。- **堆**:也由JVM管理,但相比之下更加灵活。堆内存分配和清理是由垃圾回收器(Garbage Collector, GC)动态管理的,这意味着在运行时可以动态地分配内存空间。

2024-03-22 15:47:20 343 1

原创 oracle的nvl和nvl2区别

NVL函数接受两个参数:要检查的表达式和替代值。如果表达式的结果为NULL,NVL函数将返回替代值。相比之下,NVL函数在处理空值时更简单,而NVL2函数提供了更多的控制选项,可以根据需要选择适当的处理方式。NVL2函数是Oracle 12c版本中引入的新函数,它与NVL函数类似,但提供了更多的灵活性。Oracle中的NVL和NVL2都是用于处理空值(NULL)的函数,但它们在使用上有一些区别。替代值和空值指示符。如果表达式的结果为指定的空值指示符,NVL2函数将返回替代值。

2024-03-05 20:32:42 3213 1

原创 冒泡排序详解

●比较相邻的元素。如果第一个比第二个大,就交换它们两个;●对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;●针对所有的元素重复以上的步骤,除了最后一个;●重复步骤1~3,直到排序完成。例子:需要给五个数字[8,2,6,5,1]排序(小->大)

2024-01-30 21:58:18 431 1

原创 计算机基础-6校验码-码距

若一个编码系统有四种编码分别为:0000,0011,1100,1111,此编码系统中0000与1111的码距为4;0000与0011的码距为2,是此编码系统的最小码距。因此该编码系统的码距为2。就是整个编码系统中任意(所有)两个码字的最小距离。e个误码,要求最小码距应该满足:d >= e+1。t个误码,要求最小码距应该满足:d>=2t+1。

2024-01-17 10:54:10 820

原创 计算机基础-5-存储器

由左到右:寄存器->Cache->主存->磁盘。

2024-01-11 14:40:45 367 1

原创 map.containsKey()--判断是否包含指定的键名

1、判断群组:一个群组中是否有重复的数据(某个字段重复)2、其他场景后续更新。方案:使用map限制。

2023-12-21 20:54:37 492

原创 筛选去重数据思路

for循环只能使用for(;:)循环,增强for再使用的过程中不允许集合对象对集合元素个数进行修改,因为逻辑中涉及对集合元素个数修改!2、从B集合中比较出与A集合重复的数据并从集合B中删除。3、拼接B和c集合,看你的需要来分谁去拼接谁。1、创建新集合C对重复的数据进行存储。同时存入一个新建集合c中。

2023-12-21 20:45:15 503

原创 Oracle分页三种有效方法

OFFSET 0 代表从0后面的一位开始计算也就是1 ,sql的0 和 10取得的结果就是1~10。where判断条件中的1和10大家可以用占位符传入自己想要展示的数据的区间。对TQ_QUERY表的 TQ_COLUMN列进行排序,取出1~10的数据返回。首先是在原表的数据中加入临时字段ROWNUM,相当于按数据顺序排上编号。场景:更适用于查询大量数据且有重复的数据,当然也可以查其它类型的数据。该方法适用于直接查询某个范围区间的数据。场景:查询主键不重复的所有数据。场景:各种不同的分页场景。

2023-12-17 13:06:18 3457 3

空空如也

空空如也

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

TA关注的人

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