自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关键字查找:mysql全文索引

3.重启 MySQL 服务。

2025-03-30 15:16:56 73

原创 C++/SDL游戏开发(零)- 前期准备工作

4.调试 → 环境,在里面写上PATH=(dll文件的路径)。也可以直接把dll文件放在项目文件目录下,就不需要在这里添加新路径了。1.找到项目属性,C/C++ → 常规 → 附加包含目录,在这里加上SDL文件们的根目录。至此前期配置完毕,可以试着include一下SDL.h看看有没有配置成功。2.链接器 → 常规 → 附加库目录,在这里面写上lib文件的路径。3.链接器→输入→附加依赖项,在里面写上如图所示的dll。

2025-03-23 13:25:52 216

原创 在使用Feign调用其他服务时报错Cannot construct instance of `xxxx`

请确认你调用的服务的返回值在本服务里是否同样存在。

2025-03-08 15:53:15 165

原创 给一个单体项目加装Feign

4.编写Feign客户端。

2025-02-13 20:59:06 131

原创 在云聊室项目中的前后端中,定义的一套前后端逻辑

用户在完成登陆后,会获得token和userinfo的会话信息。

2024-11-24 23:47:41 265

原创 单体项目中,如何完成事务?

问题背景: 在使用springboot+netty编写狼人杀服务端时,随着业务逻辑复杂度加深,逐渐需要考虑事务性。首先想到的就是@Transactional,但它主要用于处理数据库的事务操作,那如果我需要处理非数据库操作的逻辑呢?解决方法:在询问csdn和若干大佬之后,想到如下方法解决:使用try-catch+唯一标识+@Transactional如果有一个方法A,里面有一个数据库操作a和非数据库操作b、c,可以为b和c建立两个唯一标识,用于代表是否成

2024-11-06 17:48:33 249

原创 Netty学习笔记

1.channel:相当于socket,和socket相比是非阻塞式的和一个线程组成一个整体,对channel进行轮询,对事件进行监听和派发3.buffer:数据缓存区,在内存中通过减少系统调用次数来提高传输速度。

2024-10-10 15:41:40 447

原创 Java网络通信—TCP

1.客户端2.服务端

2024-10-01 22:43:07 528

原创 Java网络通信—UDP

使用udp通信,需要三个东西:数据本体、通道、数据包装工具。

2024-09-27 22:03:10 563

原创 线程安全/线程池笔记

线程安全问题一般出现在并发度比较高的环境中,如存钱取钱问题等,解决该类问题一般有几种办法。

2024-09-22 19:24:43 293

原创 IO流笔记

Java中的IO操作大体能分成两种:输出流和输入流,根据使用的流的方式,又可分为字符流和字节流。

2024-09-22 16:18:36 371

原创 mysql笔记—sql性能分析

表示 SELECT 的类型,常见的取值有SIMPLE(简单表,即不使用表连接或者子查询)、PRIMARY(主查询,即外层的查询)、UNION(UNION中的第二个或者后面的查询语句)、SUBOUERY(SELECT/WHERE之后包含了子查询)等。表示连接类型,性能由好到差的连接类型为NULL、system、const(主键等唯一索引)、eq_ref、ref(非唯一索引)、range、index(全索引扫描)、all(全表扫描)用了覆盖索引,也就是说,查询所需的数据可以直接从索引中获取。

2024-09-20 23:58:11 407

原创 Java集合笔记

1、如果希望记住元素的添加顺序,需要存储重复的元素,又要频繁的根据索引查询数据?用集合(有序、可重复、有索引),底层基于数组的。(常用)2、如果希望记住元素的添加顺序,且增删首尾数据的情况较多?用LinkedList集合(有序、可重复、有索引),底层基于双链表实现的。3.如果不在意元素顺序,也没有重复元素需要存储,只希望增删改查都快?用集合(无序,不重复,无索引),底层基于哈希表实现的。(常用)4.如果希望记住元素的添加顺序,也没有重复元素需要存储,且希望增删改查都快?

2024-09-18 10:05:06 446

原创 redis底层—通信协议RESP

2024-09-17 10:01:35 122

原创 redis底层—网络模型

select模式存在的三个问题:能监听的FD最大不超过1024每次select都需要把所有要监听的FD都拷贝到内核空间每次都要遍历所有FD来判断就绪状态poll模式的问题:poll利用链表解决了select中监听FD上限的问题,但依然要遍历所有FD,如果监听较多,性能会下降epoll模式中如何解决这些问题的?1.基于epoll实例中的红黑树保存要监听的FD,理论上无上限,而且增删改查效率都非常高,性能不会随监听的FD数量增多而下降。

2024-09-09 15:18:44 667

原创 redis底层—数据结构

1.获取字符串长度的时间复杂度为0(1)3.减少内存分配次数。

2024-09-09 13:29:33 473

原创 Redis分布式锁

【代码】Redis分布式锁。

2024-09-09 12:07:21 340

原创 Redis命令行客户端操作

Redis 是一个开源的内存数据结构存储系统,常用于缓存、消息队列、实时分析等场景。Redis 提供了丰富的命令行工具(redis-cli)来操作数据。

2024-09-08 16:43:15 1605

原创 mysql笔记—进阶

2.innodb存储引擎InnoDB是一种兼顾高可靠性和高性能的通用存储引擎在 MySOL 5.5 之后,InnoDB是默认的 MySOL 存储引擎。特点:DML操作遵循ACID模型,支持;,提高并发访问性能;FOREIGN KEY约束,保证数据的完整性和正确性;

2024-09-08 14:57:58 466

原创 mysql笔记—基础

DDL(数据库对象操作)、DML(增删改)、DQL(查询)、DCL(用户和权限操作)

2024-09-07 18:48:01 464

原创 简单理解Java中继承类和实现接口的区别

实现接口是当前类需要用到接口的所有抽象方法,同时自己可能还需要新增新的方法。继承类是当子类需要用到父类的方法,同时自己可能还需要新增新的方法时使用;

2024-09-05 23:11:48 294

原创 seata中TCC的使用

【代码】seata中TCC的使用。

2024-08-15 12:56:12 143

原创 部署及使用seata

​ Bean,以及pom中包含了必要的依赖,特别是数据库驱动和 Spring Data 相关的依赖。这个问题是因为在nacos里注册的网段是内网,而外部服务无法访问。​ Bean 时遇到了问题,确保。这个错误信息表明在创建。

2024-08-15 11:52:52 817

原创 关于前端如何上传文件/服务器如何接受并保存

【代码】关于前端如何上传文件/服务器如何接受并保存。

2024-08-07 21:53:28 351

原创 一个关于线程问题的案例:在线投票系统

4. **线程通信(wait/notify)**:在`monitorVoteResult`方法中使用`wait`和`notifyAll`来实现投票结果的实时更新和通知。3. **并发集合(ConcurrentHashMap)**:使用`ConcurrentHashMap`来记录已经投票的用户,保证高效且线程安全。2. **同步机制(synchronized)**:在`notifyVoteResult`方法中使用同步块来确保投票结果的通知是线程安全的。4. **统计投票结果**:实时统计当前的投票结果。

2024-07-29 16:54:18 357

原创 TCP的三次握手和四次挥手

2.服务端接收FN后,向客户端发送ACK,表示我接收到了断开连接的请求,客户端你可以不发数据了,不过服务端这边可能还有数据正在处理。3.服务端处理完所有数据后,向客户端发送FIN,表示服务端现在可以断开连接。4.客户端收到服务端的FIN,向服务端发送ACK,表示客户端也会断开连接了。TCP协议是7层网络协议中的传输层协议,负责数据的可靠传输。3.客户端接收到SYN_ACK后,再给服务端发送一个ACK。2.服务端接收到SYN后,给客户端发送一个SYN_ACK。1.客户端向服务端发送一个SYN。

2024-07-23 16:17:33 383

原创 消息队列有哪些作用?消息队列如何保证消息可靠传输?

6.broker要等待消费者真正确认消费到了消息时才删除掉消息,这里通常就是消费端ack机制,消费者接收到一条消息后,如5.果确认没问题了,就可以给broker发送一个ack,broker接收到ack后才会删除消息。2.首先要确保消息不多发,这个不常出现,也比较难控制,因为如果出现了多发,很大的原因是生产者自己的原因,如果要避免出现问题,就需要在消费端做控制。4.消息不能少,意思就是消息不能丢失,生产者发送的消息,消费者一定要能消费到,对于这个问题,就要考虑两个方面。

2024-07-23 16:16:22 374

原创 Redis和mysql如何保持数据一致?

3.延时双删,步骤是:先删除Redis缓存数据,再更新Mysql,延迟几百毫秒再删除Redis缓存数据,这样就算在更新Mysq时,有其他线程读了Mysal,把老数据读到了Redis中,那么也会被删除掉,从而把数据保持一致。下性能较低,而且仍然会出现数据不一致的问题,比如线程1删除了Redis 缓存数据,正在更新Mysql,此时另外一个查询再查询,那么就会把Mysql中老数据又查到Redis中。1.先更新Mysql,再更新Redis,如果更新Redis失败,可能仍然不一致。

2024-07-22 17:18:33 722

原创 Redis主从复制的核心原理

否则,redis的服务就被中断了。为了保证主从库的数据一致性,主库会在内存中用专门的replication buffer,记录RDB文件生成收到的所有写操作。4.最后,也就是第三个阶段,主库会把第二阶段执行过程中新收到的写命令,再发送给从库。具体的操作是,当主库完成RDB文件发送后,就会把此时replocation buffer中修改操作发送给从库,从库再执行这些操作。5. 后续主库和从库都可以处理客户端读操作,写操作只能交给主库处理,主库接收到写操作后,还会将写操作发送给从库,实现增量同步。

2024-07-21 15:49:07 263

原创 Redis有哪些数据结构?分别有哪些典型的应用场景?分布式锁的底层?

1.字符串:可以用来做最简单的数据,可以缓存某个简单的字符串,也可以缓存某个json格式的字符串,Redis分布式锁的实现就利用了这种数据结构,还包括可以实现计数器、Session共享、分布式ID。3.列表:Redis的列表通过命令的组合,既可以当做栈,也可以当做队列来使用,可以用来缓存类似微信公众号、微博等消息流数据。

2024-07-21 13:58:26 182

原创 Netty的高性能体现在哪些方面

4.串行化处理读写:避免使用锁带来的性能开销。即消息的处理尽可能再同一个线程内完成,期间不进行线程切换,这样就避免了多线程竞争和同步锁。但是,通过调整NIO线程池的线程参数,可以同时启动多个串行化的线程并行运行,这种局部无锁化的串行线程设计相比一个队里-多个工作线程模型性能更优。6.高效并发编程的体现:volatile的大量、正确使用;3.内存池设计,申请的内存可以重用,主要指直接内存。2.内存零拷贝,尽量减少不必要的内存拷贝,实现了更高效率的传输。1.NIO模型,用最少的资源做更多的事情。

2024-07-21 13:44:48 331

原创 Netty的线程模型是怎么样的

服务端启动时,通常会创建两个NioEventLoopGroup实例,对应了两个独立的Reactor线程池,bossGroup负责处理客户端的连接请求,workerGroup负责处理I/0相关的操作,执行系统Task、定时任务Task等。用户可根据服务端引导类ServerBootstrap配置参数选择Reactor线程模型,进而最大限度地满足用户的定制化需求。Netty同时支持Reactor单线程模型、Reactor多线程模型和Reactor主从多线程模型,用户可根据启动参数配置在这三种模型之间切换。

2024-07-20 17:14:36 261

原创 Netty是什么?和Tomcat有什么区别?特点是什么?

Tomcat是一个Web服务器,是一个servlet容器,基本上Tomcat内部只会运行Servlet程序,并处理HTTP请求,而Netty封装的是底层IO模型,关注的是网络数据的传输,而不关心具体的协议,可定制性更高。Netty是一个基于NIO的异步网络通信框架,性能高,封装了原生NIO编码的复杂度,开发者可以直接使用Netty来开发高效率的各种网络服务器,并且编码简单。1.异步、NIO的网络通信框架。3.高扩展,高定制性。

2024-07-20 17:03:57 141

原创 BIO、NIO、AIO分别是什么

1.BIO:同步阻塞IO,使用BIO读取数据时,线程会阻塞住,并且需要线程主动去查询是否有数据可读,并且需要处理完一个Socket之后才能处理下一个Socket。3.AIO:也叫做NIO 2.0,异步非阻塞IO,使用AIO读取数据时,线程不会阻塞,并且当有数据可读时会通知给线程,不需要线程主动去查询。2.NIO:同步非阻塞IO,使用NIO读取数据时,线程不会阻塞,但需要线程主动的去查询是否有IO事件。

2024-07-20 17:01:26 172

原创 Spring cloud和Dubbo有哪些区别?

Spring cloud是一个微服务框架,提供了微服务领域中的很多功能组件,Dubbo一开始是一个RPC调用框架,核心是解决服务调用间的问题,Spring Cloud是一个大而全的框架,Dubbo则更侧重于服务调用,所以Dubbo所提供的功能没有SpringCloud全面,但是Dubbo的服务调用性朗比spring Cloud高,不过Spring Cloud和Dubbo并不是对立的,是可以结合起来一起使用的。

2024-07-20 16:59:49 124

原创 Spring Cloud有哪些常用组件,作用是什么

8.Spring Cloud Gateway:服务网关。10.Spring CLoud Sleuth:链路追踪。4.Spring Cloud Config:配置中心。5.Feign/OpenFeign: RPC调用。3.Consul:注册中心、配置中心。2.Nacos:注册中心、配置中心。14.Sentinel:服务熔断。15.Hystrix:服务熔断。11.Zipkin:链路追踪。13.Dubbo:RPC调用。1.Eureka:注册中心。6.Kong:服务网关。7.zuul:服务网关。

2024-07-20 16:51:20 116

原创 Zookeeper集群中节点之间数据是如何同步的

9.同时Leader节点还是将当前写请求直接发送给observer节点,observer节点收到Leader发过来的写请求后直接执行更新本地内存数据。5.Leader节点会将该写请求对应的日志发送给其他Follower节点,并等待Follower节点持久化日志成功。7.当Leader节点收到半数以上的Ack后,就会开始提交,先更新Leader节点本地的内存数据。3.集群在工作过程中,所有的写请求都会交给Leader节点来进行处理,从节点只能处理读请求。10.最后Leader节点返回客户端写请求响应成功。

2024-07-20 16:30:55 388

原创 为什么Zookeeper可以用来作为注册中心?

可以利用Zookeeper的临时节点和watch机制来实现注册中心的自动注册和发现,另外Zookeper中的数据都是存在内存中的,并且Zookeeper底层采用了nio,多线程模型,所以zookeeper的性能也是比较高的,所以可以用来作为注册中心,但是如果考虑到注册中心应该是注册可用性的话,那么Zookeeper则不太合适,因为Zookeper是CP的,它注重的是一致性,所以集群数据不一致时,集群将不可用,所以用Redis、Eureka、Nacos来作为注册中心将更合适。

2024-07-19 22:32:16 198

原创 什么是ZAB协议?

3.请求广播阶段: 当Leader节点接收到写请求时,会利用两阶段提交来广播该写请求,使得写请求像事务一样在其他节点上执行,达到节点上的数据实时一致。ZAB协议是Zookeeper用来实现一致性的原子广播协议,该协议描述了zookeeper是如何实现一致性的,分为三个阶段。1.领导者选举阶段: 从Zookeeper集群中选出一个节点作为Leader,所有的写请求都会由Leader节点来处理。但值得注意的是,Zookeeper只是尽量的在达到强一致性,实际上仍然只是最终一致性的。

2024-07-19 22:27:09 264

原创 什么是分布式事务?有哪些实现方案?

在分布式系统中,一次业务处理可能需要多个应用来实现,比如用户发送一次下单请求,就涉及到订单系统创建订单、库存系统减库存,而对于次下单,订单创建与减库存应该是要同时成功或同时失败的,但在分布式系统中,如果不做处理,就很有可能出现订单创建成功,但是减库存失败,那么解决这类问题,就需要用到分布式事务。d.一旦half消息commit了,消费者库存系统就会来消费,如果消费成功,则消息销毁,分布式事务成功结束死信队列,等待进一步处理e.如果消费失败,则根据重试策略进行重试,最后还失败则进入。

2024-07-19 21:32:26 208

ImageMagick-7.1.0-47-Q16-HDRI-x64-dll.exe

ImageMagick-7.1.0-47-Q16-HDRI-x64-dll.exe

2022-09-06

空空如也

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

TA关注的人

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