- 博客(12)
- 收藏
- 关注
原创 使用Lua+Redis+OpenResty进行多级缓存优化
总体分为三个步骤:缓存预热服务器启动后,先用Lua脚本从MySQL数据库中查询轮播图数据,保存到Redis中,为后续的查询做准备定时更新MySQL中的轮播图数据有可能被更新,需要每隔一段时间调用Lua脚本,将MySQL中的轮播图数据读取出来,保存到Redis进行同步缓存读取最后需要通过Lua读取Redis中的缓存数据,返回给前端页面,完成轮播图的显示先在OpenResty服务器中使用Lua读取MySQL中的轮播图数据,保存到Redis中作为缓存,后面直接查询缓存,提升性能。
2023-08-05 17:02:19 312 1
原创 OpenFeign
之前微服务之间调用使用的RestTemplate,调用比较复杂,URL需要拼接,使用不太方便Feign是SpringCloud提供的声明式的HTTP客户端,只用编写接口,就能够通过http请求实现服务的调用OpenFeign是Feign的扩展,能够支持SpringMVC的注解总的来说,OpenFeign提供了一种方便、优雅的方式来编写和调用HTTP API,使得构建和管理微服务之间的通信变得更加简单和高效。它在Spring Cloud中被广泛使用,成为构建云原生应用程序的重要工具之一。
2023-07-31 18:58:03 85 1
原创 理解CAP理论:在分布式系统中做出权衡
CAP理论是分布式系统理论中的一个核心原则,它由计算机科学家Eric Brewer在2000年提出。CAP代表了三个关键属性:一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)。CAP理论指出,在一个分布式系统中,无法同时满足这三个属性,我们只能在这些属性之间进行取舍。一致性(Consistency):一致性意味着在分布式系统中的所有节点上访问数据的视图是一致的。简单来说,当一个节点更新了数据,其他节点应该立即看到这个变化。
2023-07-29 11:28:12 244
原创 Spring Cloud(一)
SpringCloud中一些组件是Netflix(网飞)公司开源的,其中有:Eureka、Ribbon、Hystrix、Zuul、ConfigSpringCloud和SpringBoot版本兼容才可以使用修改父项目pom--固定SpringCloud依赖版本-->
2023-07-27 19:19:52 78 1
原创 Redis高级
简单来说:对于概念上来说,就是数据保存到硬盘系统重启可恢复,对于开发人员来说,就是对象保存到数据库。深入一点就是持久化是将程序数据在持久状态和瞬时状态间转换的机制。持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。JDBC就是一种持久化机制。文件IO也是一种持久化机制。
2023-07-25 19:04:55 50
原创 Redis
Redis作为一个高性能的键值存储数据库,具有出色的性能和灵活的数据结构。它在诸多场景中展现出独特的优势,如缓存层、会话存储、实时应用程序和统计数据等。通过充分了解Redis的特性和应用,我们可以更好地利用它来构建高效、可扩展的应用程序。希望通过本文的介绍,读者能对Redis有更深入的理解,并能正确使用它来满足不同的需求。
2023-07-24 19:17:57 50
原创 深入了解Java中的ConcurrentHashMap
ConcurrentHashMap是Java中ConcurrentMap接口的实现类,它提供了线程安全的哈希表操作。与Hashtable和同步的HashMap相比,ConcurrentHashMap在性能上有较大的优势。ConcurrentHashMap的设计目标是提供高并发性能。它的内部结构采用了分段锁的机制,将整个哈希表分割为多个子表,每个子表都有自己的锁。这种设计使得多个线程可以同时访问不同的子表,从而提高并发度。ConcurrentHashMap是Java多线程环境下的线程安全哈希表实现。
2023-07-23 18:48:55 518 1
原创 CountDownLatch
CountDownLatch是一个同步工具类,它通过一个计数器来实现的,初始值为线程的数量。每当一个线程完成了自己的任务,计数器的值就相应得减1。当计数器到达0时,表示所有的线程都已执行完毕,然后在等待的线程就可以恢复执行任务。CountDownLatch是一个强大的多线程同步工具,它可以帮助我们控制线程的执行顺序和同步。通过正确地使用CountDownLatch,我们可以实现复杂的线程协作,提高程序的性能和可靠性。
2023-07-23 18:46:44 43
原创 ThreadLocal
在多线程编程中,共享变量的并发访问常常会导致线程安全性问题。为了解决这个问题,Java提供了一个ThreadLocal类,它允许我们在多线程环境下创建局部变量。本文将深入解析ThreadLocal的概念、用法和原理,帮助读者更好地理解在多线程编程中如何管理局部变量。ThreadLocal的工作原理:每个Thread对象内部都有一个ThreadLocalMap类型的成员变量threadLocals,该变量用于存储每个ThreadLocal对象和其对应的值。
2023-07-23 18:37:17 40
原创 了解拒绝策略:保护系统免受过载的利器
拒绝策略是指在系统面临资源过载时,为了保护系统的稳定性和可用性而拒绝新的请求或任务的一种策略。拒绝策略允许系统在负载激增的情况下,优雅地处理请求,减少对系统的影响。在当今高速发展的数字时代,系统的稳定性和可靠性成为了企业和服务提供商的关键关注点。当系统负载突然增加时,为了保护系统不崩溃或发生故障,拒绝策略成为了必不可少的工具。本文将解释什么是拒绝策略,为何它们重要,以及常见的拒绝策略类型。拒绝策略是保护系统免受过载影响的重要手段。在设计系统架构时,务必考虑和实施拒绝策略,以应对潜在的负载冲击和资源瓶颈。
2023-07-23 18:13:43 89
原创 深入理解阻塞队列:提高并发性能的利器
同样地,当队列已满时,生产者线程会进入等待状态,直到队列中有空位,然后唤醒生产者线程继续生产数据。一直阻塞:当阻塞队列满时,如果生产者线程往队列里put元素,队列会一直阻塞生产者线程,直到拿到数据,或者响应中断退出。当队列空时,消费者线程试图从队列里take元素,队列也会阻塞消费者线程,直到队列可用。阻塞队列是一种特殊的队列,它支持在队列为空时等待队列非空,或者在队列已满时等待队列非满。超时退出:当阻塞队列满时,队列会阻塞生产者线程一段时间,如果超过一定的时间,生产者线程就会退出。阻塞队列的常见应用场景。
2023-07-22 14:40:01 119 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人