自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Netty启动流程

NioEventLoopGroup:事件处理组,负责管理child线程NioEventLoop:单线程事件处理器,可NioEventLoopGroup管理,默认通过ThreadPerTaskExecutor初始化线程,延迟初始化NioEventLoop是真实的工作线程,它的run方法诠释了netty事件工作流程,内部默认采用LinkedBlockingQueue为存储队列初始化流程:ServerBootstrap.bind()是一切的开始ServerBootstrap.initAndRegis

2020-06-23 19:00:27 351

转载 动手实现lombok

转发自:https://juejin.im/post/5e8140afe51d4546cc26aa6d

2020-03-30 17:09:13 512

原创 springcloud全面使用HTTP2.0通信

项目地址:https://github.com/tshch1989/demo-springcloud-http2http2.0传输带宽占用小,端点间维护链路少,性能相较于http1.1有较大提升其次,springcloud的grpc通信组件底层也是使用http2.0,其性能可见一斑。HTTP2.0简要说明:1.二进制传输2.多路复用3.头部压缩4.服务器push...

2020-01-09 17:39:20 2374

原创 springboot 自定义actuator信息

springboot 自定义actuator信息依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> <...

2020-01-03 17:16:23 2160 2

原创 排序算法学习笔记

排序算法学习笔记插入排序时间复杂度:O(N^2),空间:O(N)描述:向一个已经排序的串中插入值。public static void sort(int[] arr){ int length = arr.length; int j = 0; for (int p = 1; p < length; p++) { int tmp = arr[p]; for (j = p; ...

2019-12-30 10:04:01 90

原创 架构有感

探讨一般设计需要考虑的问题不讨论业务流程,仅讨论应用一般应具有哪些特性,以满足生产上多变的环境高性能追求单机的极致性能是节约成本的根本高并发应用如何应对高强度并发访问?设计初始就应给出解决方案。高可用保证服务的稳定性,是留住客户的根本。动态扩展业务增长快,如何应对?监控(服务器,应用,业务)优秀的服务监控是对系统问题及时发现以及进一步优化应用的基础链路追踪分布式环境中,更...

2019-12-27 15:11:04 68

原创 基础记录

WebService三要素:SOAP:简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息WSDL:是为描述Web服务发布的XML格式,WSDL描述Web服务的公共接口。这是一个基于XML的关于如何与Web服务通讯和使用的服务描述;也就是描述与目录中列出的Web服务进行交互时需要绑定的协议...

2019-12-20 10:09:17 157

原创 spring-cloud-config动态配置更新原理解读

###spring-cloud-config动态配置更新原理解读首先需要动态刷新的类都加了注解RefreshScope看一下源码:/** * Convenience annotation to put a <code>@Bean</code> definition in * {@link org.springframework.cloud.context.scope...

2019-12-19 17:22:22 1034

原创 linux shell 编程

linux shell 编程shell脚本示例:#!/bin/bash# notedatels#!指定了该脚本的执行程序是bash基本内容:基本输出echo Hello worldecho "let's go"输出全局变量echo $HOME echo $PATH输出局部变量my_var=my_variable echo $my_var...

2019-12-18 16:21:45 125

原创 redis调试起步

redis调试起步1.下载redis源码并安装wget http://download.redis.io/releases/redis-5.0.7.tar.gztar xzf redis-5.0.7.tar.gzmv redis-5.0.7 redismake MALLOC=libc CFLAGS="-g -O0"make install2.使用gdb调试gdb redis-ser...

2019-12-16 19:48:16 236

原创 java Stream使用记录

java Stream使用记录java中Stream本质上是把计算封装成一个任务,放到ForkJoin的commonPool中执行.那么就看一下stream是扩展ForkJoin的结构:Object (java.lang) ForkJoinTask (java.util.concurrent) CountedCompleter (java.util.concurrent) Abs...

2019-10-28 10:51:40 140

原创 Mybatis SQL日志打印自定义

Mybatis SQL日志打印自定义大家都知道可以通过在配置文件中配置<settings> <setting name="logImpl" value="org.apache.ibatis.logging.stdout.StdOutImpl"/></settings>打印配置到控制台.有时候我们仅仅想打印sql日志,那应该怎么实现呢?有的人用...

2019-09-12 16:45:58 925

原创 @Scheduled笔记

@Scheduled笔记spring提供的定时任务注解,使用方便,简记一下具体实现1.首先要在项目中添加@EnableScheduling注解,启用一下2.在需要执行的方法上添加@Scheduled注解完成以上两步,任务就配置好了.接下来看一下,spring对@Scheduled的处理流程类:ScheduledAnnotationBeanPostProcessor核心编码是:pub...

2019-09-12 15:19:16 91

原创 Filter简记

最近好多功能都是用Filter实现的,突然想到自己还没看过Filter运行的源码,今天记录一下,以tomcat源码实现为例.org.apache.catalina.core.ApplicationFilterChain是javax.servlet.FilterChain的一个具体实现.看一下主要执行过程,doFilter(ServletRequest request, ServletRes...

2019-09-04 11:29:35 283

原创 activiti运行分析

activiti运行分析1.初始化配置分析1.1核心组件-命令执行器CommandExecutoractiviti整体设计使用命令模式,每一步操作都是一个命令,每一个命令都通过CommandExecutor执行.看一下它的初始化过程:protected CommandInterceptor initInterceptorChain(List<CommandInterceptor&g...

2019-08-23 17:00:47 319

原创 activiti实践

activiti实践本实例是完整源码,能够满足大多业务需求了.流程图如下:<definitions id="definitions" targetNamespace="test-namespace" xmlns:activiti="http://activiti.org/bpmn" xmlns="http:/...

2019-08-23 11:50:57 173

原创 activiti工作流常用组件

activiti工作流常用组件1.事件1.1 timer事件定义定时事件定义2011-03-11T12:13:14时间段定义P10D循环定义R3/PT10H1.2 error事件定义1.3 信号时间定义//信号定义 抛出信号事件 信号事件定义 捕获信号事件<intermediateCatchEvent id="catch...

2019-08-23 11:37:49 1484

原创 从DispatcherServlet说自定义访问处理

从DispatcherServlet说自定义访问处理DispatcherServlet是springMvc处理请求的核心逻辑,简单描述一下处理流程,首先需要在web.xml中配置该Servlet的服务路径,默认是/*所有路径,这样web请求就从Servlet容器把控制权流转到DispatcherServlet,看一下DispatcherServlet的核心方法:protected void...

2019-08-19 20:21:55 321

原创 spring-容器启动流程

AbstractApplicationContext是对ApplicationContext的第一个实现:看一下他的几个核心结构:/** BeanFactoryPostProcessor列表,在bean的创建过程中可以对bean进行进一步的加工 */private final List<BeanFactoryPostProcessor> beanFactoryPostProces...

2019-08-06 15:14:12 320

原创 spring-BeanFactory的各项实现

咱们直接看一下AbstractBeanFactory的继承和实现结构:大体描述一下:AbstractBeanFactory功能结构主要有两部分,1.实现了BeanFactory相关的功能,2.实现了别名,单列注册以及工厂支持.BeanFactory相关接口前面已经描述过,这里不再重复,接下来看一下2)部分:1.AliasRegistry别名注册 //给指定的bean注册别名 void r...

2019-08-02 20:41:58 399

原创 spring-全量自定义-BeanFactory

BeanFactory是接入spring-bean容器的基本客户端视图。有比较复杂的实现。其中,bean的完整初始化顺序如下:具体请参照BeanFactory源码<ol> * <li>BeanNameAware's {@code setBeanName} * <li>BeanClassLoaderAware's {@code setBeanClassLoa...

2019-07-28 21:07:20 796

原创 Spring事务--this调用事务生效方案

先结合源码部分看一下执行流程,然后说一下解决方案(本列使用cglib代理,jdk动态代理类似)话不多说,先看一下代理拦截器方法:public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy) throws Throwable { Object oldProxy = n...

2019-07-17 21:34:48 2249

原创 spring-全量自定义-spring环境

属性解析接口,主要有一下核心方法:org.springframework.core.env.PropertyResolver#containsPropertyorg.springframework.core.env.PropertyResolver#getProperty(java.lang.String)org.springframework.core.env.PropertyResolv...

2019-07-13 18:46:23 159

原创 spring-全量自定义-类型安全转换系统

类型安全转换系统包含四个个核心接口:Converter, //简单转换器接口GenericConverter, //通用转换器接口ConversionService, //转换服务ConverterRegistry //转换器注册他们之间的逻辑关系:通过ConverterRegistry向...

2019-07-13 16:10:35 103

原创 spring-全量自定义-PropertySources

PropertySources:持有一个或多个PropertySoucrce对象(如果对PropertySource不熟悉,建议看一下上一篇文章)来看一下定义:public interface PropertySources extends Iterable<PropertySource<?>>该接口实现了Iterable接口,那么也就是该资源是可迭代,可forea...

2019-07-13 13:21:53 573

原创 Spring-全量自定义-PropertySource

PropertySource:属性资源,以name/value形式存储protected final String name; //属性名字protected final T source; //属性资源配合属性解析器使用的接口:public boolean containsProperty(String name) {//判断该资源是否含有指定名称的key return (getP...

2019-07-13 12:55:04 632

原创 rocketmq-broker解读

1.broker启动流程2.broker各项服务3.broker接收消息分发消息流程4.请求处理器介绍5.部分问题思考1.broker启动流程1.启动的代码调用顺序BrokerStartup->main0->createBrokerController(args)->BrokerController.start()2.createBrokerController展...

2019-07-07 21:56:35 357

原创 rocketmq精读

rocketmq简单使用1.项目介绍2.结构组件及工作流程3.基本使用4.各种功能5.可靠性优先6.吞吐量优先7.其它1.项目介绍rocketmq是由阿里开源的Apache中间件顶级项目.经历过多次阿里双十一生产验证.项目地址: http://rocketmq.apache.org/2.结构组件Producer:消息生产者Consumer:消息消费者Broker:消息暂...

2019-07-06 16:36:14 199

原创 kafka简记

专注于吞吐量的mq.组成:1.zookeeper 集群化2.broker 集群化3.producer4.consumer消息发送流程:消息–>写入到按分区的缓存–>sender任务执行–>批量发送(合并请求提高吞吐量)生产者使用模式:1.多线程单个生产者,使用简单2.多线程多生产者消费者模式:1.多消费者模式可自动ack2.全局消费者,多work模式,手...

2019-07-04 19:55:28 95

原创 rocketmq简记

rocketmq服务组成:1.nameserver broker 注册等,多节点2.broker 消息接收和分发,持久化等,多节点,主从模式保证可用性;模式同步master和异步master,在同步master情况下,slave节点保存成功后,给客户端返回成功.硬盘刷新方式有同步刷新和异步刷新,在同步刷新模式下,当消息写入硬盘后,返回成功.3.producer 生产者:3.1 同步发送模式...

2019-07-04 19:29:12 84

原创 ThreadLocal简析

相信熟悉多线程的小伙伴,都熟悉这个对象的吧,今天咱们就来看一下他的内部构造以及和Thread的关系吧.一切从set开始…public void set(T value) { Thread t = Thread.currentThread();//获取当前线程的id ThreadLocalMap map = getMap(t);//从线程中获取当前的map ...

2019-06-21 21:53:19 90

翻译 ThreadPoolExecutor记录

基本工作流程:当一个任务提交时,如果当前启动的线程数小于核心线程数量,则启动新的线程处理任务,即使其他线程时空闲状态.当大于核心线程数量且小于最大线程数量,并且当队列满了时创建新线程进行处理.线程池工作线程创建:工作线程创建使用的ThreadFactory.如果没有特殊定义,使用DefaultThreadFactory工厂进行创建,默认工厂创建的线程有相同的ThreadGroup,非守护型,...

2019-06-13 14:43:27 116

原创 简易记录@Aspect

简单写一下切面实现:@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.METHOD,ElementType.TYPE})public @interface MyPointcut {}注解切点@Aspect@Componentpublic class MyAdvice { @Pointcut("@annotat...

2019-06-11 11:07:40 107

原创 深入spring注解@Conditional

@Conditional基于条件判断是否注入bean,在springboot中有大量的自定义条件注解,ConditionalOnBean,ConditionalOnClass,ConditionalOnCloudPlatform等等。下面我们就自己定义一个类似的注解,并看看他是怎么工作的吧。1.定义一个注解@Retention(RetentionPolicy.RUNTIME)@Target...

2019-06-10 21:52:38 1249

原创 实践课:实现一个简易版的springboot中的@EnableConfigurationProperties自动注入组件

1.如何在spring中,为bean初始化属性???答:spring中的BeanPostProcessor能够完成对bean的初始化加工.2.我应该从哪里获取到我在配置文件中配置的属性呢?答:可以在Environment对象的属性中获取,我们可以通过ApplicationContextAware让spring给我注入context,进一步获取该对象.现在我们已经可以完成对一个bean进行属...

2019-06-10 17:53:06 448

原创 springboot自动配置实现初探

结合源码探究springboot如何实现自动配置1。@SpringBootApplication一切从这里开始@SpringBootApplicationpublic class Demo2Application {public static void main(String[] args) {SpringApplication.run(Demo2Application.class, a...

2019-06-08 20:04:37 213

原创 springboot初识

springboot 项目构建(基于idea,gradle)1.按下图springio初始化一个springboot项目2.选择应用组件

2019-06-08 19:29:45 98

原创 MyBatis技术初探

初始化String resource = “org/mybatis/example/mybatis-config.xml”;InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()....

2019-06-04 14:44:46 109

原创 冬夜读书示子聿

冬夜读书示子聿(南宋)陆游古人学问无遗力,少壮工夫老始成。纸上得来终觉浅,绝知此事要躬行。

2019-06-04 10:38:07 1131

空空如也

空空如也

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

TA关注的人

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