- 博客(11)
- 收藏
- 关注
原创 Gateway 谓词工厂
这个时间段路由谓词呢,实际就是 前时刻 后时刻 两个路由谓词的综合,其配置需要设置两个时间点,当请求时间在这两个时间点之间,则会触发路由,反之则不进行路由。与后路径谓词工厂一样,一样是支持一个时间点设置,当当前请求时间小于设置的路由时间时,才会将请求进行路由。请求头谓词呢,即是要求当前HTTP请求必须携带定义的请求头才会触发路由。即只接受设置的某一网段类的请求,当请求来自于某一网段时,才会触发路由。可以设置一个时间点,当系统时间大于设置时间点时才会将请求进行路由。有gateway路由谓词设置的参数请求。
2023-07-15 17:24:11
188
1
原创 如何限制进入系统的请求在1w以内,限流的设计方案是什么?
限流是服务降级的一种手段,顾名思义,通过限制系统的流量,从而实现保护系统的目的。合理的限流配置,需要了解系统的吞吐量,所以,限流一般需要结合和来进行。当外部请求接近或者达到系统的最大阈值时,触发限流,采取其他的手段进行降级,保护系统不被压垮。常见的降级策略包括等。Java 的线程池是开发中一个小的功能点,但是见微知著,也可以引申到系统的设计和架构上,将知识进行合理地迁移复用。限流方案中有一点非常关键,那就是,具体有不同的实现策略,下面进行简单分析。
2023-06-25 20:33:47
229
原创 JVM最多能创建多少个java对象,如何扩展堆、栈的大小
另外,值得注意的是,JVM 通过内存分代策略来管理对象内存,即将内存分为新生代和老年代两个部分,分别对不同年龄段的对象采用不同的垃圾回收机制。然而,在实际场景中,JVM 能够创建的 Java 对象数量要远远小于这个限制,主要是因为 JVM 需要在堆内存中为每个对象分配内存空间,而堆内存空间是有限的,同时还要考虑到对象存储和回收的成本等因素。如果设置过大,则会增加内存的消耗和垃圾回收的频率。需要注意,扩展堆的大小并不是没有代价的,过大的堆内存会影响垃圾回收的效率,可能导致长时间的暂停或无法充分利用 CPU。
2023-06-20 21:24:15
387
原创 Redis内存满了 会发生什么
在 Redis 的运行内存达到了某个阀值,就会触发,这个阀值就是我们设置的最大运行内存,此值在 Redis 的配置文件中可以找到,配置项为 maxmemory。
2023-06-15 09:18:00
411
1
原创 Redis的持久化策略:RDB、AOF
因为是异步,所以也会有新的请求发送给主进程,在重写的过程中主进程处理的改写请求为了保持数据的一致性也会将这段时间的命令缓存进另一个缓冲区(aof_rewrite_buf),等到重写完毕再将该部分的缓存写入AOF文件。快照机制会将 Redis 的内存状态作为一个整体写入到磁盘上的 RDB 文件中,因此,在进行 RDB 持久化时,需要阻塞 Redis 服务器进程的所有线程,避免在保存过程中修改了数据而导致 RDB 文件出现错误。RDB 持久化操作是在另一个子进程中进行的,对主进程的影响较小,可以保持高性能。
2023-06-13 21:09:14
145
1
原创 Redis 和Mysql 之间的区别
3.MySQL数据存储是存储在表中,查找数据时要先对表进行全局扫描或者根据索引查找,这涉及到磁盘的查找,磁盘查找如果是按条点查找可能会快点,但是顺序查找就比较慢;4.Redis是单线程的多路复用IO,单线程避免了线程切换的开销,而多路复用IO避免了IO等待的开销,在多核处理器下提高处理器的使用效率可以对数据进行分区,然后每个处理器处理不同的数据。2.Redis存储的是k-v格式的数据。时间复杂度是O(1),常数阶,而MySQL引擎的底层实现是B+Tree,时间复杂度是O(logn),对数阶。
2023-06-12 21:21:21
778
原创 SpringBoot 自带缓存的相关注解
更新操作,前端会把id+实体传递到后端使用,我们就直接指定方法的返回值从新存进缓存时的key=“#id” , 如果前端只是给了实体,我们就使用 key=“#实体.id” 获取key. 同时,他的执行时机是目标方法结束后执行, 所以也可以使用 key=“#result.id” , 拿出返回值的id。@EnableCaching是由spring框架提供的,springboot框架对该注解进行了继承,该注解需要配置在类上(在SpringBoot中,通常配置在项目启动类上),用于开启基于注解的缓存支持。
2023-06-09 23:26:55
219
原创 Linux 的常用命令
将指令1输出(结果)作为指令2的输入,指令2再对指令1的结果进行处理,指令2输出结果作为指令3的输入,指令3在对指令2的结果进行处理。可以查看/etc/sudo.conf文件的后几行 (适用于只关心最新日志内容的场景下使用)7、运行级别6:系统正常关闭并重启,默认运行级别不能设置为6,否则无法正常启动。1、运行级别0:系统停机状态,系统默认运行级别不能设为0,否则无法正常启动。list 列出目录,在Linux系统当中, ls 命令可能是最常被运行的。使用less查看/etc/sudo.conf文件,
2023-06-08 21:31:35
63
原创 Spring 框架中常见的九种设计模式
source 接口是具体资源访问策略的抽象,也是所有资源访问类所实现的接口。定位并打开资源,返回资源对应的输入流。每次调用都返回新的输入流。调用者必须负责关闭输入流。返回 Resource 所指向的资源是否存在。返回资源文件是否打开,如果资源文件不能多次读取,每次读取结束应该显式关闭,以防止资源泄漏。返回资源的描述信息,通常用于资源处理出错时输出该信息,通常是全限定文件名或实际 URL。返回资源对应的 File 对象。返回资源对应的 URL 对象。
2023-06-07 20:49:07
289
1
原创 了解PO、POJO、DTO、VO、之间区别
PO 是“Persistent Object”的缩写,意为“持久化对象”。它通常用于表示数据库中的一条记录,即一组相关的数据。PO 是由 ORM(对象关系映射)框架生成或手动创建的 Java 对象,它们通常具有与数据库中的表相同的字段和数据类型。在 Java 开发中,PO 常常被用作 DAO(数据访问对象)层的数据模型,以及和数据库交互的对象。PO 对象中的字段与数据库中的列相对应,每一行数据对应一个 PO 对象,PO 对象中的字段值就是对应列的值。
2023-06-06 20:47:10
730
1
原创 如何手动构建springboot项目
8、在resources 包下 新建一个application.yml。7、在com.wnhz.springboot下新建需要用到的包。6、将main类 修改 成springboot 启动类。9、在application.yml种引入需要的配置。1、首先新建一个普通的maven项目。2、在pom 内 引入父类依赖。5、创建一个main 类。
2023-06-05 20:32:19
582
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人