自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 为什么说redis是单线程及redis执行过程

一.结论因为redis内部用的是文件事件处理器,文件事件处理器是单线程的,所以redis才叫单线程模型。Redis采用IO多路复用机同时制监听多个socket,将产生事件的socket压入队列中,事件分派器根据socket上的事件类型选择对应的事件处理器进行处理。二.文件时间处理器包括以下4部分:1.多个socket2.IO多路复用程序3.文件分派器4.事件处理器多个socket可能对并发产生不同的操作,每个操作对应不同的文件事件,IO多路复用程序会...

2021-06-22 20:34:27 270

原创 分库分表设计方案

一.很多项目一开始是没有分库分表的设计方案的,因为项目急于上线占领市场,从而去繁就简,也为以后埋下很多问题。很多人对分库分表,只停留在理论阶段,没有实际操作过。我就这公司的某个业务的实际操作简单说下我们处理的过程,也可能并非最优方案。背景:随着业务发展越来越迅速,我们生产的MySQL数据好几张表已经突破了千万级数据,并且保持每天50+W的数据量增加。有些业务需要对表进行关联查询或统计,产生的笛卡尔积也越来越大,一个查询需要几分钟,十分拖慢业务,造成客户投诉越来越多。现在对表的存储也迫在眉睫。二.

2021-04-15 20:13:10 306

原创 Kafka 多数据源 多生产者 多消费者

1.背景随着业务的发展,服务进行拆分,由原先的一个kafka根据业务线拆分成了多个kafka,现在底层又不支持多kafka数据源,只能自己对kafka进行二次封装2.kafka配置说明下面配置了两套kafka,主kafka为 primary: kafka_db_data1和第二个数据源kafka_db_data2,以后有第三个kafka可以按照同样的方式进行配置。kafkas: kafka: enabled: true primary: kafka_db_data.

2021-03-03 16:43:19 3470 8

原创 jvm-sandbox demo

一、前言在开始之前,我们先来模拟一下以下的场景:小李:“小明,你的接口没有返回数据,麻烦帮忙看一下?”小明:“我这边的数据也是从别人的服务器中拿到的,但是我不确定是因为逻辑处理有问题导致没有结果,还是因为我依赖的服务有问题而没有返回结果,我需要确认一下。”小明:“哎呀,线上没有日志,我需要加个日志上个线。”30 分钟之后……小明:“不好意思,日志加错地方了……稍等……”接来下隆重登场的就是本文的主角 JVM SandBox 了。基于 JVM SandBox,我们可以很容易地...

2020-07-23 17:41:13 908

原创 手写一个简单tomcat服务

1.流程图空空空2.创建一个socket3.启用线程任性直接上第二,第三代码,解决一切问题import java.io.IOException;import java.net.InetSocketAddress;import java.net.ServerSocket;import java.net.SocketException;import java.nio.channels.ServerSocketChannel;import java.nio.channels.Socke

2020-06-13 19:21:25 151

原创 记录一次解决转码问题的过程-修改springboot tomcat源码,%未转义 无法接收到参数

一.背景用java重构PHP项目,因为以前接口设计不合理,各式各样的参数满天飞。为了逐步替代程java代码,并且不影响线上业务。第一步决定参数和接口方式不变,这也导致了出现这个问题。二.问题出现同一个接口:go -> java和 客户端 -> java,Content-Type都是application/x-www-form-urlencoded,可是客户窜(安卓)对参...

2020-03-26 16:02:47 1119 1

原创 redis多数据源

因为代码简单,所有没有太多注释,请谅解一.基础配置类主要用于加载redis配置@Configuration@ConfigurationProperties(prefix = "spring.multiple-redis")public class RedisConfig { private String primary; private Map<Stri...

2019-12-07 17:42:01 500

转载 转:https://mp.weixin.qq.com/s/O_D_FVRIIII1wqq4jGZqHA

非常伟大震撼人心的演讲,希望每个人每天看一遍传送门:https://mp.weixin.qq.com/s/O_D_FVRIIII1wqq4jGZqHA

2019-12-05 16:14:36 8000

原创 关于架构心得-mybatis多个数据源使用start包

前言:最近新搭建了一个项目,用到了多个数据源,并且需要动态切换,所以写了一个切换数据源的starter包。spring-boot-starter-multiple-data-source以读写分离两个数据源举例一.数据源配置配置多个数据源spring: datasource: master: jdbc-url: jdbc:my...

2019-09-04 11:37:25 274 1

原创 高并发场景下的请求合并

一.在项目中,我们经常用到如下方式进行接口调用:有多少请求访问,就会调用多少次第三方接口或数据库,这样的情况在高并发场景下很容易出现线程被打满,返回结果慢。为了优化这个接口,后台可以将相同的请求进行合并,然后调用批量的查询接口。请求合并:下面上代码:已查询数据库举例1.创建请求类:@Data@Builder@AllArgsConstructor@...

2019-08-26 18:29:03 570

原创 关于java架构心得

开端,对以前的知识进行整理,将文档体系化,将以前搭建框架的经验分享给大家一,对外开放jar包1.开放全局异常捕获好处:在业务代码中,不需要关注返回值,不用关心返回客户端格式,事务内部需要要特殊关注回滚,2.例子:提供两个文件,BussException异常类,ExceptionInterceptor异常拦截器2.1BussException代码:返回给客户端统一格...

2019-06-03 20:04:54 7904 7

原创 Dubbo源码分析(一)------dubbo加载流程

1.dubbo加载流程第一步解析:在dubbo的jar包下,spring启动时会默认加载/MATE-INF/spring.handler文件,该文件下有这么一段内容:http\://code.alibabatech.com/schema/dubbo=com.alibaba.dubbo.config.spring.schema.DubboNamespaceHandler这个Dubb...

2019-05-31 16:29:01 857

原创 MyBatis源码分析(二)-----具体SQL执行逻辑源码分析

直接看获取SQL时调用的方法首先看入口-->org.apache.ibatis.session.defaults.DefaultSqlSession#getMapper继续深入可以看到调用的mapperRegistry.getMapper(type,sqlSession)这个函数,在MapperRegistry这个类中,getMapper的实现:可以看到如下代码是通过动...

2019-05-04 22:44:33 335

原创 MyBatis源码分析(一)-----解析数据源

概论:mybatis主要分分为三个步骤第一步:解析数据源第二步:获取执行sql语句第三步:执行操作一.创建SqlSessionFactory对象首先介绍SqlSessionFactoryBuilder类,根据名称可得知是用来创建SqlSessionFactory对象的,1.1创建SqlSessionFactory对象首先第一步调用SqlSessionFac...

2019-04-22 18:16:36 410

原创 ReentrantLock源码解析——一篇文章搞定ReentrantLock

一.概述想要看懂ReentrantLock源码必须知道两个知识点1.CAS,既比较并交换,是解决多线程并发情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作——内存位置(V),预期原值(A)和新值。进行操作时,如果内存位置的值和预期原值一样,则更新为新值,否则不做操作。2.AbstractQueuedSynchronizer简称AQS:AQS是一个FIFO等待队列的阻塞锁和相关...

2019-03-18 19:11:06 376

原创 SpringCloud对Feign的Ribbon重试机制分析

FeignClient 重试机制分析feign重试代码分析第一步:SynchronousMethodHandler首先看下该类的代理方法,invoke因为主要分析重试机制算法,所以不再分析executeAndDecode中的业务逻辑,重试机制的算法在continueOrPropagate方法中,接下来代码:在正式进入continueOrPropagate代码前,需要Re...

2019-01-22 16:19:22 1056

原创 Spring IOC 原理

1.SpringIOC体系如下图所示:BeanFactorySpringIOC是一个典型的工厂类,它定义了IOC容器的基本规范,IOC容器实际上就是一个ConcurrentHashMap。BeanFactory有三个子类和最终实现子类:DefaultListableBeanFactory这个子类实现了所有的接口,每个接口都有他的使用场合,比如他的继承体系中的三个类Lista...

2019-01-16 18:15:21 256

空空如也

空空如也

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

TA关注的人

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