java
文章平均质量分 95
@猿程序
Java后端的一个初学者,希望能每天进步一点点,从量变到质变。也希望能有更多的志同道合的初学者,一起进步
展开
-
Redis实现IP限流的两种方式详解
Gateway网关通过Redis实现对同一IP接口调用的限流。同时整合了lua提升限流的效率原创 2024-08-09 14:36:39 · 548 阅读 · 0 评论 -
Gateway网关设置请求头乱码
在做gateway用户认证过程中,我们将前端传过来的token字符串进行解析以后,将用户信息存入请求头往下传递的过程中,如果用户信息中存在中文,下游服务从请求头中获取到用户信息时会出现乱码。 可以在gateway设置新的请求头时进行URL编码,在下游获取请求头信息的时候,再通过URL解码。 总体来说,就是如果在gateway网关层设置了带有中文的请求头,在下游服务中获取会出现乱码。从截图可以看到,下游服务在从请求头获取带有中文的信息时,出现了乱码。通过截图可以看到,乱码问题成功得到解决。原创 2024-08-05 11:08:07 · 1837 阅读 · 0 评论 -
高级网络编程-Netty
NettyNetty核心原理Netty介绍原生NIO存在的问题NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的 NIO 程序。开发工作量和难度都非常大:例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和原创 2024-07-26 14:29:58 · 413 阅读 · 0 评论 -
java网络编程详解
Java NIO 全称java non-blocking IO ,是指 JDK 提供的新 API。从 JDK1.4 开始,Java 提供了一系列改进的输入/输出的新特性,被统称为 NIO(即 New IO),是同步非阻塞的.NIO 有三大核心部分:Channel(通道),Buffer(缓冲区), Selector(选择器)NIO是 面向缓冲区编程的。数据读取到一个缓冲区中,需要时可在缓冲区中前后移动,这就增加了处理过程中的灵活性,使用它可以提供非阻塞式的高伸缩性网络。原创 2024-07-24 11:36:51 · 692 阅读 · 0 评论 -
分布式事务-常用解决方案
分布式事务事务的概念及特性概念 事务是指一组操作被视为一个单独的工作单元,这些操作要么全部成功提交,要么全部失败回滚事务的特性原子性(Atomicity)事务是一个不可分割的工作单元,要么全部成功,要么全部失败一致性(Consistency)事务执行前后,数据库的完整性没有遭到破坏,保证数据的正确性隔离性(Solation)多个事务并发执行的时候,一个事务不会影响另一个事务的执行持久性(Durability)事务一旦提交,执行结果就是永久性的,即使系统故障,数据原创 2024-07-17 15:38:47 · 632 阅读 · 0 评论 -
线程基础知识
如果在main线程中调用了t1.join(2000),那么main线程会进入到等待状态,需要等待t1执行2s后,在恢复到就绪状态等待CPU调度。CPU在极短的时间内,反复切换执行不同的线程,看似好像是并行,但是知识CPU高速的切换。如果在main线程中调用了t1.join(),那么main线程会进入到等待状态,需要等待t1线程全部执行完毕,在恢复到就绪状态等待CPU调度。比如要处理一个网络等待的操作,开启一个线程去处理需要网络等待的任务,让当前业务线程可以继续往下执行逻辑,效率是可以得到大幅度提升的。原创 2024-07-03 06:26:40 · 735 阅读 · 0 评论 -
RabbitMQ超详细笔记
百度百科:RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。首先RabbitMQ基于AMQP协议开发,所以很多基于AMQP协议的功能RabbitMQ都是支持的,比如SpringCloud中的消息总线bus。原创 2024-07-02 08:47:08 · 685 阅读 · 0 评论