- 博客(21)
- 资源 (2)
- 收藏
- 关注
原创 Spring系列(四) 循环依赖那些事
随着我们代码中更多服务的出现与依赖关系的耦合,bean与bean之间的交互往往会涉及很多对其他类的依赖。我们通常用简单的Autowired、提供对应依赖对象的setter方法以及构造器中传入需要引用的其他对象,spring就可以完美的做好依赖关系自动装配。那么本节就来分析下spring中是如何完成bean之间这些依赖的自动查找与注入关于这个话题,最重要的是spring中用到的三级缓存。但spring中的循环依赖情况分很多种,会进行不同场景的依次分析。本片先介绍最简单的单例对象间的注解依赖方式包括字段上.
2021-08-22 14:51:08
330
1
原创 Dubbo系列(二)服务发布注册原理
前言DubboBootstrapApplicationListener extends OnceApplicationContextEventListener只触发一次容器事件监听的执行避免事件传播,适合用于容器初始化完成和关闭等。@SPI(DirectEventDispatcher.NAME)EventDispatcher默认采用DirectEventDispatcher实现类发布事件,直接使用单线程Executor DIRECT_EXECUTOR = Runnable::runEventL
2021-07-31 22:09:55
1779
原创 Dubbo系列(一) 从SPI开始看ExtensionLoader
ExtensionLoader的原理SPIjava中的SPISPI(Service Provider Interface)是java中一种服务发现机制,通过在classpath下的META-INF/services下指定一接口全路径名的文件中指定具体实现类(可配置多个),通过ServiceLoader进行动态可替换的服务方式调用。测试类package com.example.spi;import java.util.ServiceLoader;public class SpiMain {
2021-07-04 17:40:58
1334
1
原创 Spring系列(三) 从refresh看createBean源码解析
createBean解析spring当中单例bean的创建原理,其中涉及到了非常多阶段及各种处理器的调用启动代码通过注解配置类AppConfig启动一个容器,其中添加了一个自定义的beanFactoryPostProcessor, 注意:这个类是直接添加到beanFactoryPostProcessors中的,没有被spring当成bean放到单例map中 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationC
2021-06-28 20:19:11
231
原创 Java8 函数式编程
JDK 8 函数式编程用法概览jdk 8中新增了lambda和接口默认实现方式,简化了编程,让我们可以转换为新的函数式编程,更多关注于业务逻辑@FunctionalInterface 编译时期检验了接口只有唯一方法合法性,可以有多个默认实现方法@FunctionalInterfaceinterface INumberFunction{ int doubleNum(int num); default void printNum(int num){ System.out
2020-08-15 21:29:29
277
原创 Elasticsearch 6.8源码构建
Elasticsearch源码构建从elasticsearch github下载源码从github上下载clone下来或zip包git clone https://github.com/xiamoy/elasticsearch.gitgit checkout 6.8选择自己需要的分支,这里用了6.8的分支[因为集成了plugin x-pack很多特性], 对应的版本其实为6.8.11Gradle 环境准备及构建本地构建需要用gradle,在下载来的代码里可以看到具体需要的gradle、java
2020-07-26 12:10:47
1020
原创 Spring IOC笔记之Autowire 注入方式
Spring IOC 一些常见容易忽略的问题,包括autowire/resource 注入,类型定义,循环依赖等,会后续不断补充。Autowire注入五种模式1.no默认,如果没找到在调用依赖对象时会抛NullPointerException2.byType根据bean class类型在容器中找到唯一一个对应的给目标对象注入当所注入的类型在容器中只有唯一对象时,较为简单不需要关注属性名或setter方法,以下分析多实现情况场景1 annotation @Autowired example:D
2020-06-26 20:12:38
1084
原创 Spring系列(二) AnnotationConfigApplicationContext
AnnotationConfigApplicationContext创建一个AnnotationConfigApplicationContext的方式及区别构造传入注解配置类,一步式解析 扫描 创建spring 容器AnnotationConfigApplicationContext context =new AnnotationConfigApplicationContext(AopConfig.class); 如果有自定义的BeanDefinitionRegistryPost
2020-05-09 20:03:07
1175
原创 spring系列(一)基本组件
spring系列(一)基本组件类级别注解@Component:通用注解组件,可被继承扩展为不同层次使用的专用组件.当某一个类在不属于其他典型层次中可作为选择使用@Controller: 控制层,所注解的为Controller类型与最前端用户数据交互,在web 中广泛与RequestMapping等结合使用@Service: 服务层,所注解的为一般业务类(如xxxServiceI...
2020-03-22 17:45:48
367
原创 Docker 部署Sonarqube
Docker 部署Sonarqube官方image 仓库:docker hubdocker search sonarqbedocker search mysqldocker search postgresSonarqube与MySQL部署Sonarqube与MySQL兼容问题:参考: sonarqube与mysqlsonarqube7.9后不再支持mysql,建议换成Postg...
2020-01-18 19:46:56
1322
原创 Docker安装及配置
windows 10安装不同操作系统有对应的docker 安装包,对应自己的系统去下载。win7/win8: 下载 docker toolbox,可以从阿里云镜像下载,或者官方地址下载最新win 10/MAC: 下载docker desktop, 从docker官方网站下载.(注意:需要登录才能下载,你要有docker账号)更多版本可参照:Docker安装这里以win10 为例,如果...
2020-01-18 12:04:04
410
转载 Idea 2018.02 ultimate破解安装
Idea 2018 ultimate破解安装下载Idea安装破解功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入俗话说...
2019-03-30 11:34:40
1002
原创 Gradle整合jetty的第一个HelloWorld工程
Jetty是一个开源的Servlet容器和应用服务器,与tomact服务器有着相同的作用,可部署自己的web应用。现在gradle的使用越来越多,不需要手动导入jar包进行配置。通过配置所需的依赖项和一些编译运行的jar包即可完美运行。Gradle工程配置jetty运行环境,启动jetty服务器的第一个HelloWorld工程
2017-09-24 13:05:08
2850
原创 浅谈js中事件preventDefault()和addEventListener()
js的事件相关函数使用preventDefault()和addEventListener()
2017-05-15 17:19:01
6212
原创 实现如下页面布局。核心区域左侧自适应,右侧固定宽度 200px
原题目:牛客网-阿里巴巴2016前端开发工程师笔试(一):10题 要求自适应,那一开始就不能把左侧content的宽度给设死了。尝试了几次一开始思维定式就先从左至右写吧,于是 .content { height: 400px; margin: 0; margin-right: 210px;
2017-04-27 23:43:16
1867
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人