自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分布式系统常见问题

高并发,可扩展,高可用。主从切换负载均衡调度算法可扩展注册中心集群 注册中心和服务端长连接Redis和Memcach有什么区别Redis支持持久化。集群中每个实例之间互相感知。而MC通过客户端进行路由。kafka和rocketmq区别,设计思想。3.spring cloud 和dubbo和service mesh思想4.如何保证高并发服务的高可用。分布式缓存搭...

2019-11-18 15:32:43 413

原创 ROCKETMQ(消息消费,待完善)

问题:常用配置参数消费流程消费短如何负载均衡,消息拉取选择哪个ProcessQueue呢拉取消息流控顺序消息实现超时消息如何高可用 每20秒rebalance一次如果拉取后,消费失败了会怎么样,应该怎么操作。 重新消费,那重新消费多少次呢。通过maxConsumeRetryTimes可以控制消费进度管理,偏移量校正消息过滤。拉取请求一个队列一个PullRequest...

2019-11-18 15:30:46 505

原创 ROCKETMQ消息存储(待完善)

文章目录一、接受到消息存储流程二、文件组织与内存映射。一、接受到消息存储流程无论是Commitlog还是ConsumeQUeue还是IndexFile,都是固定长度,写满后创建新文件,文件名第一条消息对应的全局物理偏移量。校验消息。如果是延迟消息,将原消息主题和消息队列iD存到消息属性properties中,然后用延迟消息主题,队列ID替换原消息主题。获取当前的commitLog物理文...

2019-11-18 15:30:25 311

原创 RocketMQ用法及原理解析(Producer篇)

文章目录一、基本用法二、消息发送原理2.1 生产者启动2.2 查找主题路由信息2.2.1 几个关键的元数据:2.2.2 查找过程2.3 选择消息队列(MessageQueue)2.4 发送消息三、关键源码3.1 启动源码3.2 查找主题路由元素3.3 选择消息队列一、基本用法基本用法主要有同步发送,异步发送和指定队列发送,具体见下。这里主要介绍// 1. 创建生产者对象,指定生产者group...

2019-10-12 10:11:04 2591

原创 各种源码中的责任链模式浅析

文章目录一、 AOP中的责任链二、Spring MVC中拦截器链三、 Servlet中的Filter四、Mybatis插件中的拦截器链五、 Netty中的ChannelPipeline一、 AOP中的责任链AOP中的责任链是将所有元素封装到一个链条对象中记录,然后调用该链条对象的invoke方法,同时将链条传给链条节点,这样链条节点就可以控制链条是否继续往下走了。首先看JdkDynamic...

2019-08-05 20:24:04 380 1

原创 JAVA queue

Queue基本功能 FIFOadd对应remove,element, 在队列尾部新增元素,队列头部取出、查看元素,失败时抛出异常offer对应poll,peek 失败时返回null,ArrayQueue非线程安全有容量大小,基于数组.数组长度为容量+1,tail指针的位置不存储元素。不会扩容原理:通过向右移动head和tail索引来新增删除数据。初始化都为0。 无论移动head还是t...

2019-05-23 19:30:18 280

原创 Spring事务原理深入解析(AOP,Threadlocal, 隔离级别,传播级别)

文章目录一、摘要二、基础知识介绍2.1 JDBC2.1.1 简单示例2.1.2 JDBC事务存在的问题:2.1.2 Spring事务解决该问题的方式2.2 AOP设计思想2.2.1 代理模式2.2.2 静态代理2.2.3 动态代理2.2.4 为什么使用AOP2.2.5 AOP会使用哪种代理2.2.6 AOP代码编写关键对象及AOP执行流程2.3 ThreadLocal实现原理2.4 Mysql存储...

2019-05-20 20:23:43 4566 4

原创 Spring-Boot启动流程

文章目录一、创建SpringApplication对象二、启动,run三、refresh修改容器四、refresh之:执行BeanFactoryPostProcessor来扩展功能4.1 执行BeanDefinitionRegistryPostProcessors4.2 执行BeanFactoryPostProcessors类4.3 扫描Bean并注册的流程五、refresh之:注册BeanPos...

2019-04-24 18:05:02 451

原创 Spring AOP源码解析:三:代理对象的执行,各种Advice的执行流程

Spring AOP源码解析:三:代理对象的执行,各种Advice的执行流程名词介绍通用执行流程每种Advisor的执行流程名词介绍Advice: 即用来增强被代理对象功能的一个方法。比如第一章我们讲的:AspectJAroundAdvice对应@Around,AspectJMethodBeforeAdvice对应@Before,AspectJAfterAdvice 对应@After,...

2019-04-15 20:53:05 638

原创 InndoDb逻辑存储结构及内存&磁盘结构

InndoDb逻辑存储结构及内存&磁盘结构表空间及文件系统表空间每个表一个表空间undo 表空间段区页行索引索引结构聚集索引索引primary key非聚族索引secondary keyDoublewrite Buffer 两次写Redo Logundo log磁盘管理磁盘IO预读Read-Ahead分区分区类型分区与分表的区别内存结构Buffer PoolChange Buffermys...

2019-04-10 21:35:17 502

原创 Spring事务实现原理及源码分析

Spring事务实现原理及源码分析流程介绍主流程关键对象介绍PlatformTransactionManager获取对应的TransactionManager事务的信息TransactionInfo当前事务状态TransactionStatus传播对象实现原理隔离级别对开始事务的影响(获取TransactionStatus)隔离级别对回滚事务的影响隔离级别对提交事务的影响流程介绍获取事务的属...

2019-04-04 17:29:05 45211 13

原创 事务隔离级别简易演示列子

事务隔离级别简易演示列子读未提交读未提交读已提交可重复读快照读与当前读快照建立在第一次执行查询语句的时候读未提交建表CREATE TABLE user (id int(11) NOT NULL,name varchar(20) DEFAULT NULL,age int(11) NOT NULL,PRIMARY KEY (id),UNIQUE KEY name (name))读未...

2019-03-17 17:39:05 248

原创 Spring AOP源码解析:二:代理对象的创建

Spring AOP源码解析:二:代理对象的创建一、代理的类型众所周知,Spring AOP代理的方式有2种,JDK的动态代理和Cglib的代理,前者必须实现接口,后者可以通过继承的方式实现。二、AOP抽象先看一段代码,AbstractAutoProxyCreator类,createProxy方法 protected Object createProxy(Class<?> b...

2019-03-12 21:46:13 580

原创 Spring AOP源码解析:一:Advisor获取流程

Spring AOP源码解析:一:Advisor获取流程一、流程介绍二、主流程源码介绍三、获取增强Advisor一、流程介绍Spring AOP 是通过BeanPostProcessor来进行处理的。每当实例化一个Bean时,会通过这个处理器来进行增强。分为三步。获取所有的增强器。1.1 获取所有的beanName,在beanFactory中所有注册的都提取出来。1.2 遍历找出所有...

2019-03-12 21:12:45 985

原创 MYSQL查询数据的同时准确地查出记录数

MYSQL查询数据的同时准确地查出记录数问题描述解决方法存在的问题问题描述生产环境中经常会出现需要查询数据的同时查询数据总数,然后根据总数来进行分页或其他操作。如果分成两个SQL会出现问题,就是查询到记录后总数也发生了变化。如查询所有状态为1的记录.select * from t1 where status = 1;select count(*) from t1 where stauts...

2019-02-15 11:12:31 2018

原创 MySql事务隔离级别

MySql事务隔离级别(解决哪些问题及实现原理)隔离级别介绍read-uncommittedread-committedrepeatable-readserializable隔离级别实现原理可重复读可重复读解决幻读问题锁介绍快照读与当前读(MVCC (Multi-Version Concurrency Control)快照读(Consistent Nonlocking Reads)当前读( Loc...

2019-02-14 20:44:41 353

原创 JAVA基础:线程池ThreadPoolExecutor及Future原理解析

JAVA基础:线程池ThreadPoolExecutor及Future原理解析线程池的作用ThreadPoolExecutor实现原理线程池的作用为了降低在处理短时间任务创建与销毁线程的代价。控制线程的数量,过多的线程会带来调度的开销以及资源的占用。一定程度上提高程序的稳定性和可维护性,防止出现意外创建过多线程的情况导致资源占用满了出现GC问题甚至导致程序崩溃。ThreadPoolE...

2019-02-14 19:38:52 2715

原创 JAVA基础:Condition原理解析

JAVA基础:Condition原理解析Condition用途Condition原理介绍await()阻塞线程signal()唤醒线程Condition源码分析await()释放锁阻塞线程signal()通知await()线程继续运行Condition用途我们知道当多个线程需要访问一个共享资源时,需要第共享资源加锁。 当一个线程释放锁时,所有等待锁的线程都会尝试去获取锁。 但是如果我们想只让部...

2019-01-18 15:07:42 1840 1

原创 AQS学习

AQS学习:初识AQSpublic final void acquire(int arg) { // 由子类重写的方法先取尝试一下能不能获取到锁 if (!tryAcquire(arg) && // 如果没有获取到锁则addWaiter再acquireQueued acquireQueued(addWaiter(Node.EXCLUSI...

2019-01-08 17:56:21 405

原创 ThreadLocal原理

JAVA基础:ThreadLocal原理解析ThreadLocal用途ThreadLocal原理看似一个容器实际的容器ThreadLocalMap弱引用引用关系图ThreadLocal用途当需要声明一个Singleton的对象,想在多个线程中使用这个声明,每个线程使用自己独立的对象时。或者需要在线程内存储一个全局变量,仅当前线程可以访问。ThreadLocal原理看似一个容器最早看到Th...

2019-01-02 20:16:29 366

空空如也

空空如也

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

TA关注的人

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