Java架构
Amos zhu
当浮躁的心静不下,不妨写些东西或者看会书
展开
-
基于Feign的局部请求拦截
由于项目的要求,不能对所有基于Feign的进行拦截,需要对不同的Feign请求进行不同的拦截,经过资料的收集整理以及SpringCloud中对于Feign的集成的源码的阅读,解决了针对Feign请求的局部拦截本项目中SpringCloud的版本是Camden.SR6版本背景说明在既有的项目上进行二次开发,服务A需要请求服务B同时需要将服务A中请求的消息头相关信息传送给服务B,但是由于既有...原创 2020-02-21 11:06:07 · 4408 阅读 · 1 评论 -
Java并发编程——AtomicReference,解决并发修改多个属性
说到CAS理论,在java中我们第一个就想到了atomic类,一般常见的有AtomicInteger、AtomicBoolean等java.util.concurrent包下面的类,但是这个只能并发修改一个属性,如果我需要对多个属性同时进行并发修改,并且保证原子性呢?AtomicReference 了解下?AtomicReference也是java.util.concurrent包下的类,...原创 2019-09-11 11:00:34 · 1810 阅读 · 0 评论 -
Java内存溢出——OutOfMemoryError体验——JProfiler安装
在实际的开发过程中,我们经常遇到java.lang.OutOfMemoryError异常,那么如何定位是程序的哪里出现这个异常的呢?本博文将体验OutOfMemoryError的定位本博文体验的软件环境JDK版本IDEJava 1.8.0.144_x64IDEA 2019.1编写OutOfMemoryError的代码 public class Tes...原创 2019-09-10 11:55:05 · 640 阅读 · 0 评论 -
SpringBoot+Redis+MemCache+Nginx+Lua实现三级缓存架构(四)——Nginx+Redis+Cache实现三级缓存架构
前几篇博文我们介绍了三级缓存架构的内容,并且实现了基于Nginx的定向请求分发的功能,那么接下来我们依次来编写Nginx缓存,redis缓存和Tomcat堆缓存的代码实现参考之前的博文SpringBoot+Redis+MemCache+Nginx+Lua实现三级缓存架构(一)——三级缓存架构体系SpringBoot+Redis+MemCache+Nginx+Lua实现三级缓存架构(二)...原创 2019-09-05 18:52:38 · 402 阅读 · 0 评论 -
SpringBoot+Redis+MemCache+Nginx+Lua实现三级缓存架构(三)——Nginx+Lua实现定向请求分发
上篇博文我们已经基于OpenResty搭建了Nginx+Lua的运行环境,并且编写了工程小Demo,本博文将基于上篇博文的环境来继续实现Nginx+Lua是实现定向请求分发参考之前的博文SpringBoot+Redis+MemCache+Nginx+Lua实现三级缓存架构(一)——三级缓存架构体系SpringBoot+Redis+MemCache+Nginx+Lua实现三级缓存架构(二...原创 2019-08-27 20:31:39 · 398 阅读 · 0 评论 -
SpringBoot+Redis+MemCache+Nginx+Lua实现三级缓存架构(一)——三级缓存架构体系
最近在学习整理软件架构中的三级缓存架构,使用SpringBoot+Redis+MemCache+Nginx+Lua来实现该架构体系,来提高系统的并发访问能力,该三级缓存架构主要适用于对请求并发量比较高的数据变动不是很大的业务场景三级缓存架构在博文开始的时候,这里我们需要了解下本博文说的三级缓存架构是什么?首先确定一点,本博文中的三级缓存不是我们学硬件时的三级缓存,而是在软件开发过程中,在...原创 2019-08-23 15:50:14 · 1350 阅读 · 0 评论 -
缓存与数据库双写一致性的解决方案——附上代码解决方案
传统企业中为了解决高并发大流量的问题,通常使用缓存+数据库的方式来支撑高QPS的访问,虽然能解决读QPS的问题,但是同时也引入了新的问题,例如:缓存与数据库的数据不一致的情况;本博文参考网上相关的博文,详细的整理下缓存数据库数据一致性的问题,并且给出基于Java的代码解决方案关于缓存数据库数据一致性的解决方案,网上有很多,但是大都是偏向理论的,且大多数使用分布式锁来实现的,分布式锁也是一种解...原创 2019-08-19 19:24:19 · 4417 阅读 · 2 评论 -
RabbitMQ 面试那点事儿(二)
本博文接上篇《RabbitMQ面试那点事儿》,再梳理下RabbitMQ关于面试的一些知识点,本博文包含了RabbitMQ集群和高可用方面的知识1. 如何保证RabbitMQ的消息的顺序性对于这个问题,我查阅很多网上的资料,大体来说主流的解决方案有两种:一种是使用单线程消费来保证消息的顺序性对消息进行编号,消费者处理时根据编号来判断顺序乍一看,觉得两种方案没有什么问题,但是深入了解...原创 2019-07-25 23:26:01 · 185 阅读 · 0 评论 -
必备技能——使用线程池来初始化缓冲队列
在我们的业务场景中,经常会遇到一些需要在系统启动时就需要手动缓存一下线程,方便我们去使用已有的线程去处理一些业务,降低系统资源的消耗等,今天我们就来讲解下Java开发必备技能,使用线程池初始化缓冲队列ServletListenerRegistrationBean我们用来演示的项目是基于SpringBoot框架,在框架中我们需要向web容器中注册监听器,可以使用ServletListener...原创 2019-07-16 22:12:04 · 685 阅读 · 1 评论 -
SpringBoot整合RabbitMQ——RabbitMQ进阶
title: SpringBoot整合RabbitMQ——RabbitMQ进阶date: 2019-07-06 21:20:35tags:rabbitMQSpringBootcategories:rabbitMQrabbitMQ如何保证如果消息发送失败,保证其消息不丢失、怎么设置消息过期时间以及死信队列是如何在消息消费失败时保证消息不丢失的、如何使用过期时间来实现延迟队列以及...原创 2019-07-06 21:24:56 · 711 阅读 · 0 评论 -
SpringBoot整合RabbitMQ——消息的发送和接收
上篇博文我们整理了RabbitMQ的交换机、队列以及路由绑定等相关知识,并且了解了RabbitMQ是如何发送消息给队列的,以及重要的RoutingKey等重要知识点,这篇博文我们来重点了解下RabbitMQ是如何发送消息,消费消息的,本片博文我们还是以代码为主,简要说明为辅,同时对消息的发送和接收功能进行简单的封装,可以作为一个jar包给第三方进行使用。本博文是在上一篇博文《SpringBo...原创 2019-07-03 21:03:28 · 6827 阅读 · 7 评论