- 博客(6)
- 收藏
- 关注
原创 设计程序时怎么选择抽象类和接口
抽象类和接口都是面向对象编程的重要概念,它们都可以用来表示某种抽象的概念,但在特定的情况下,需要根据具体的需求来选择使用哪种方式。抽象类可以包含一些具体的方法或成员变量,但同时也可以包含一些抽象方法,这些抽象方法必须由其子类去实现。抽象类一般表示“is-a”的关系,也就是说,如果一个类继承了某个抽象类,那么它可以被看作是这个抽象类的子类,同时也可以使用这个抽象类的方法和属性。接口则是一组抽象方法的集合,接口只定义了方法的签名而没有具体的实现。
2023-06-05 18:01:21 515 1
原创 TCP是怎么处理长连接、短连接
例如在基于 HTTP 协议的长轮询和 Websocket 协议中,长连接技术被广泛使用,可以在客户端和服务器之间保持长时间的连接,以实现实时数据传输和用户交互。在长连接的情况下,数据传输的速度更快,可以减少网络连接的开销,提高传输效率。在实际应用中,例如基于 HTTP 协议的长轮询和 Websocket 协议等,都是在 TCP 协议之上实现的长连接技术。在短连接的情况下,由于每次传输数据都需要建立连接,因此网络连接的开销比较大,速度相对较慢,适用于数据量小且传输频率不高的场景,如 HTTP 短连接。
2023-05-19 10:49:46 2119 1
原创 通过消息队列实现数据同步
当队列中有消息发送过来时,会触发 messageHandler 对象中的 handleMessage 方法进行消息处理,如果处理失败会触发重试机制,直至消息处理成功或达到最大重试次数后放弃处理该消息。其中,commit log 是存储所有消息的地方,consume queue 存储了每个消费者的位置信息和已消费的消息 ID,而 index 记录了特定主题或队列的索引信息,可以将消息检索到指定的 commit log 文件中,实现 RocketMQ 的高效读写操作。在发送消息时,可以指定消息的持久化级别。
2023-05-18 14:12:51 2444 1
原创 java解决redis缓存与数据库一致性问题
缓存更新服务则是一个独立的服务,通过周期性检查Redis缓存服务中的数据是否与数据库同步,并按需更新数据库中的数据。使用写-behind模式和队列:在数据发生更新时,只更新数据库中的数据,然后将需要更新到Redis的数据写入一个消息队列,异步地更新Redis中的数据,以减小更新操作对应用程序的响应时间的影响。基于消息队列的事务:使用消息队列可以实现异步消息传输,在分布式系统中,可以将Redis和数据库之间的数据更新操作放入消息队列中进行异步传输,保证在消息被处理时Redis和数据库都处于同一个事务中。
2023-05-09 13:48:55 1018 1
原创 mysql跨库查询
跨库查询,是在两台不同服务器(物理服务器)上分别安装的mysql服务器,实现跨库查询,其实现原理类似一个虚拟映射,需要用到mysql的另一个存储引擎Federated,FEDERATED存储引擎访问在远程数据库的表中的数据,而不是本地的表。(表test1在服务器A的mysql数据库,表test2在服务器B的mysql数据库)1.本地创建的表名必须在远程服务器存在,创建的字段也必须是远程表中的字段,可以比远程表的字段少,但是不能多,本地存储引擎选择。2.对本地虚拟表的结构修改,并不会修改远程表的结构。
2023-04-26 17:10:43 464 1
原创 处理分页后页面加载慢的问题,解决思路为:先查索引列再查需要的字段,问题已解决。
处理分页后页面加载慢的问题,解决思路为:先查索引列再以索引列为基础,去查需要的字段。
2022-05-16 11:11:59 202
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人