自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

攻城狮

攻城遭雷劈

  • 博客(38)
  • 收藏
  • 关注

原创 基于Spring Boot 动态主从数据库路由

本文简单的介绍一下基于Spring boot框架动态连接多数据源的实现,在配置文件中添加多个数据源,采用主从配置的方式,配置zjsz、cloud两个数据库。项目的目录结构:application.properties核心主要是dynamic和aop目录1.首先配置数据源信息,在spring5.x之后开始默认使用HikariCP来做数据源@Configurationp...

2018-10-13 15:55:03 2067

原创 docker部署Nexus

1.首选安装docker使用命令,拉取最新版本镜像docker pull sonatype/nexus3启动镜像,端口进行映射操作。docker run -d --name nexus3 --restart=always -p 8081:8081 -p 8082:8082 -p 8083:8083 -p 8084:8084 -p 8085:8085 sonatype/nex...

2018-09-16 11:14:03 7649

原创 Thread和Runnable区别

Thread本身是实现了Runnable接口的类。一个类只能有一个父类,但是却能实现多个接口,因此Runnable具有更好的扩展性。重写Thread类的run方法和实现Runnable的run方法不同点就是Thread的run方法不可以共享,就是说A线程不能把B线程的run方法当做自己的执行单元。而Runnable可以。记住一点:创建线程只有一种方式构造Thread类,而实现线程执行单元有2...

2018-08-06 23:33:54 854

原创 手写实现线程池,思路与ExecutorService一致

主要定义一个线程池应该具备的基本操作和方法public interface ThreadPool { /** * 提交任务到线程池 * * @param runnable */ void execute(Runnable runnable); /** * 关闭线程池 */ void shutdo...

2018-07-25 00:31:06 5156 2

原创 JIT—即时编译

JIT—即时编译介绍在Java的编译体系中,一个Java的源代码文件变成计算机可执行的机器指令的过程中,需要经过两段编译,第一段是把.java文件转换成.class文件。第二段编译是把.class转换成机器指令的过程。 javac指令 将java源码变为 java字节码的静态编译过程。java字节码编译为 本地机器码的过程,并且因为这个过程是在程序运行时期完成的所以称之为即时编...

2018-07-23 14:44:22 2326

原创 docker安装git

1.安装docker此处主要参考了docker安装 2.拉取git镜像docker pull gitlab/gitlab-ce:latest3.创建docker container (将宿主机SSH端口改为其他端口,让出22端口) docker run \ --publish 443:443 --publish 80:80 --publish 22:22 \...

2018-07-21 18:13:22 31036 7

原创 Spring Boot2.0 SpringApplication分析

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters = { @Filter(type = FilterType.CU...

2018-07-20 14:14:36 355

原创 docker中部署Nginx及静态页面

首先我们要在运行容器的时候设置映射端口80设置容器的端口映射docker run -p/-P ....小写的p可以指定某些端口需要映射大写的P则是全部端口都需要进行映射示例:指定容器端口 映射到宿主机端口随机分配 docker run -p 80 -it centos /bin/bash指定容器端口 映射到宿主机端口的指定8080 docker run -p 8...

2018-07-20 00:30:31 4684

原创 docker入门基础命令(一)

启动新容器,按照全球惯例。首先入门 hello world先设置一下国内docker仓库镜像,按照对国外访问的尿性。卡死你!curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://ac66da8f.m.daocloud.iosystemctl restart docker启动容器docker...

2018-07-20 00:07:47 328

原创 centos7 docker安装

docker官方介绍使用yum进行安装docker如果使用yum install docker默认安装的是centos集成的docker,版本比较老。所以这里直接使用rpm包下载docker rpmwget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.03.1.ce-...

2018-07-19 23:15:50 1471

原创 centos7上修改docker加速镜像

从docker hub拉取镜像贼慢,换个国内的。daocloud镜像市场:https://hub.daocloud.io/(推荐)先查看一下自己的镜像,使用命令:daocloud镜像市场上查询想要拉取的镜像,然后取镜像的命令docker pull 镜像名字  使用的是centos7.2和docker18.03首先在http://www.daocloud.io/进行注...

2018-07-18 00:59:27 561

原创 新生代一个Survivor区会怎么样

The Garbage-First (G1) garbage collector is fully supported in Oracle JDK 7 update 4 and later releases. The G1 collector is a server-style garbage collector, targeted for multi-processor machines with large memories. It meets garbage collection (GC) pause

2018-07-14 17:47:06 444 1

原创 Spring-Mybatis XML配置连接 MapperScannerConfigurer

这章讲我们常用xml配置方式<!-- 扫描dao --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.test.dao"> </property> 进入Mapp

2018-07-14 16:32:50 1014

原创 Spring-Mybatis 注解连接器 MapperScannerRegistrar

使用Mybatis和spring集成常用2种方式,一种是xml配置。另一种就是注解,这一章我们从注解说起。@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(MapperScannerRegistrar.class)public @interface MapperScan {我们不在x...

2018-07-14 16:16:30 5748

原创 SpringBoot2.0 ZipKin示例

Zipkin是一种分布式跟踪系统。它有助于收集解决微服务架构中延迟问题所需的时序数据。它管理这些数据的收集和查找。Zipkin的设计基于 Google Dapper论文。应用程序用于向Zipkin报告时间数据。Zipkin用户界面还提供了一个依赖关系图,显示每个应用程序有多少跟踪请求。如果您正在解决延迟问题或错误问题,则可以根据应用程序,跟踪长度,注释或时间戳过滤或排序所有跟踪。选择跟踪后,您可以...

2018-07-03 23:41:14 17135 1

原创 Spring Boot打包方式

1 部署到外部Tomcat中  注意标红部分<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="htt

2018-07-01 12:41:27 607

原创 Jenkins+Maven+Git 自动化构建

准备环境 JDK1.8、Maven3.5.4、jenkins-2.121、Git。关于JDK安装和环境变量不讲了,自行百度一下。下载Jenkins,采用rpm安装rpm -ih jenkins-2.121.1-1.1.noarch.rpm修改vi /etc/init.d/jenkins,把自己的JDK路径加到后面。使用service jenkins start 启动。安装Gityum instal...

2018-06-30 12:56:32 16058

原创 Mybatis源码动态代理调用

解析xml讲完之后,我们开始讲调用了。因为mybatis实际使用了动态代理,不过这里的动态代理没有实现类。有关这块设计模式可以找一下看看。public class Test { public static void main(String[] args) throws IOException { String resource = "mybatis-config.xml"...

2018-06-29 16:18:03 1008 1

原创 Mybatis之Xml解析说明

开局一张图,后面全靠编。Mybatis结构图:在这张图里面,我们看到configuration在整个Mybatis里面到处都有,跟黄金一样成为必不可少的元素。这张是整个流程结构的图,从网上找的。入口在SqlSessionFactoryBuilder#build方法://代码从这里开始执行public SqlSessionFactory build(InputStream inputStream,...

2018-06-29 14:38:32 2237 3

原创 Mybatis源码分析准备

直接使用上示例代码mybatis-config.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config...

2018-06-29 10:53:02 240

原创 Spring 事务(一)

事物自定义标签<tx:annotation-driven/>那我们就从这个标签入手,那一定会在spring-tx项目中。从resources\META-INF\spring.handlers里面查看会转向到TxNamespaceHandler类。public class TxNamespaceHandler extends NamespaceHandlerSupport { ...

2018-06-28 16:04:53 445

原创 Java SPI

SPI是什么SPI,该机制的理解是为接口寻找服务实现类。比如Mysql,在java中并没有对Mysql、Oracle驱动实现。只提供了一个java.sql.Driver接口,来让数据库厂商各自实现。大家不妨看看Mysql驱动的源码。自定义实现:当服务的提供者,提供了服务接口的一种实现之后,在jar包的META-INF/services/目录里同时创建一个以服务接口命名的文件。该文件...

2018-06-27 10:07:36 116

原创 并发机制原理

本章节三问,大家带着问题来看。 1.volatile知道是什么东西,但它原理是什么?能吹牛不是!2.synchronize同步锁原理3.原子操作到底怎么玩的?解答:1.volatile原理在多处理器开发中保证了共享变量的“可见性”,比如当一个线程修改共享变量int a=0,另外一个线程立刻能读到这个值被修改为a=1。使用恰当的话,可以避免上下文切换哦。好处大大的!第一步...

2018-06-26 23:22:20 2488

原创 并发编程的开端

并发编程的开端本章节四问,大家带着问题来看。因为我们叫程序员,不是码农。1.为什么出现并发编程,目的是什么?2.多线程的使用场景?3.多线程有时比单线程慢4.死锁是什么鬼?解答:1.并发编程并发编程说白就是让程序运行得更快,但并不是开启多个线程就快。比如查询10条数据库记录,你开10个线程来处理。是不是傻!如果通过多线程执行任务让程序更快,我们要考虑很多。比如:...

2018-06-26 21:48:53 205

原创 Spring AOP 代理

AspectJAwareAdvisorAutoProxyCreator是BeanPostProcessor接口的实现类postProcessBeforeInitialization方法实现在父类AbstractAutoProxyCreator中,在每个Bean初始化之后,如果需要,调用AspectJAwareAdvisorAutoProxyCreator中的postProcessBeforeIni...

2018-06-26 14:10:39 160

原创 Spring AOP 解析

这里不提供AOP的示例了,直接怼源码。 <bean id="testtImpl" class="org.test.aop.TestImpl" /> <bean id="timeHandler" class="org.test.aop.TimeHandler" />    //启用了强制CGLIB代理 <aop:config proxy-t

2018-06-26 10:53:09 196

原创 JVM运行时数据区域

JVM运行时数据区域Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如图所示。1)程序计数器​ 它可以看作是当前线程所执行的字节码的行号指示器。如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是Native方法,这个计数器值则为空(Undefined)。此内存区域是唯一一个在Java虚拟机规范中没有规定任何O...

2018-06-25 17:27:01 124

原创 spring boot 2.0 入门

spring boot 特征1)创建独立的Spring应用程序2)直接嵌入Tomcat,Jetty或Undertow(无需部署WAR文件)3)提供斟酌的'starter'依赖关系来简化您的构建配置4)尽可能自动配置Spring和第三方库5)提供生产就绪功能,如指标,运行状况检查和外部配置6)绝对不会生成代码,并且不需要XML配置使用 Spring Boot 有什么好处之前的 SSM 项目,搭建过程...

2018-06-25 15:52:06 183

原创 DispatcherServlet接收请求

1:DispatcherServlet 是 SpringMVC 中的前端控制器(Front Controller),负责接收 Request并将 Request 转发给对应的处理组件.2:HanlerMapping 是 SpringMVC 中完成 url 到 Controller 映射的组件.DispatcherServlet接收 Request,然后从 HandlerMapping 查找处理 R...

2018-06-25 14:32:01 2068

原创 url 和 Controller 的对应关系

很多人对这一块比较茫然,比如在网页输入 /index/test.do就找到对了对应的Controller 类。url和Controller 关系怎么建立的。AbstractHandlerMethodMapping实现了InitializingBean接口。说明这个类会在依赖注入的初始化开始执行,也就是Init-method那个解析地方处理这个扩展点。其源码分析:在AbstractHandlerMe...

2018-06-25 10:59:21 3268 1

原创 IOC容器中常用扩展点

1.BeanPostProcessor 后置处理器的实现BeanPostProcessor 后置处理器是 Spring IOC 容器经常使用到的一个特性, 这个 Bean 后置处理器是一个监听器, 可以监听容器触发的 Bean 声明周期事件。 后置处理器向容器注册以后, 容器中管理的 Bean就具备了接收 IOC 容器事件回调的能力。BeanPostProcessor 的使用非常简单, 只需要提供...

2018-06-24 23:09:39 372

原创 基于 Annotation 的依赖注入

1.AnnotationConfigApplicationContext对注解Bean初始化:Spring中,管理注解Bean定义的容器有两个:AnnotationConfigApplicationContext和AnnotationConfigWebApplicationContex。这两个类是专门处理Spring注解方式配置的容器,直接依赖于注解作为容器配置信息来源的IOC容器。Annotat...

2018-06-24 20:02:41 2376

原创 基于 XML 的依赖注入

1.依赖注入发生的时间(1).用户第一次通过getBean方法向IOC容索要Bean时,IOC容器触发依赖注入。(2).当用户在Bean定义资源中为<bean>元素配置了lazy-init属性,即让容器在解析注册Bean定义时进行预实例化,触发依赖注入。BeanFactory接口定义了SpringIOC容器的基本功能规范,是SpringIOC容器所应遵守的最底层和最基本的编程规范。Be...

2018-06-24 19:33:29 539

原创 自定义标签源码分析

自定义标签使用自定义标签源码解析:相信了解了自定义标签的使用方法后,会对自定义标签实现过程有一个大概思路。无非是根据对应的bean获取对应的命名空间,根据命名空间解析对应的处理器,然后根据用户自定义处理器进行解析。(1)获取标签的命名空间这里获取的节点已经加载了一个xml配置,通过这个方法可以获取到标签的命名空间(2)提取自定义标签处理器有了命名空间,就可以进行NamespaceHandler的提...

2018-06-24 17:48:51 427

原创 自定义标签使用

(1)定义普通bean类public class User { private String id; private String userName; private String email; public String getId() { return id; } publi...

2018-06-24 16:42:09 237

原创 IOC容器的初始化(二)

继续上一节降到解析到<alias>元素之后的内容(12)、 BeanDefinitionParserDelegate 解析 Bean 定义资源文件中的<bean>元素: Bean 定义资源文件中的<import>和<alias>元素解析在 DefaultBeanDefinitionDocumentReader中已经完成, 对 Bean 定义资源文件中...

2018-06-24 16:16:05 234

原创 IOC容器的初始化(一)

IOC 容器的初始化包括 BeanDefinition 的 Resource 定位、载入和注册这三个基本的过程。我们以 ApplicationContext 为例讲解,ApplicationContext 系列容器也许是我们最熟悉的,因为 Web 项 目 中 使 用 的 XmlWebApplicationContext 就 属 于 这 个 继 承 体系 , 还 有ClasspathXmlAppli...

2018-06-24 15:21:51 895

原创 Spring核心容器体系结构简述

读者从spring5源码下载,并源码编译。这里推荐IntelliJ IDEA 工具进行操作1.核心容器简述https://github.com/spring-projects/spring-framework.githttps://github.com/spring-projects/spring-framework.git(1) BeanFactorySpring Bean 的创建是典型的工厂模...

2018-06-24 13:50:11 944

空空如也

空空如也

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

TA关注的人

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