自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

日有寸进

世上只有一种英雄主义,就是在认清生活真相之后依然热爱生活。

原创 结合 Mybatis 的 logging 包源码理解适配器模式、代理模式
原力计划

适配器模式 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁,将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 Target:目标角色,期待得到的接口. Adaptee:适配者角色,被适配的接口. Ad...

2020-04-30 21:49:05 121 0

原创 Mybatis 多对多关联查询的两种方式:嵌套结果与嵌套查询

先决条件 多对多需要一种中间表建立连接关系 多对多关系是由两个一对多关系组成的,一对多可以也可以用两种方式实现 嵌套结果 Mapper 接口 List<TUser> selectUserRole(); Mapper XML配置 <select id="select...

2020-04-29 22:02:37 562 0

原创 Mybatis 的一级缓存与二级缓存

String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); //创建 SqlSessionFactory SqlSessi...

2020-04-29 20:44:45 131 0

原创 Mybatis 一对多关联查询的两种方式:嵌套结果与嵌套查询

嵌套结果 Mapper 接口 List<TUser> selectUserJobs1(); 返回结果会将查出来的表根据<id>合并 Mapper XML配置 <resultMap id="BaseResultMap" type="TUs...

2020-04-29 18:18:24 395 0

原创 Mybatis 一对一关联查询的两种方式:嵌套结果与嵌套查询

嵌套结果 Mapper 接口 List<TUser> selectUserPosition1(); Mapper xml文件 <resultMap id="BaseResultMap" type="TUser"> <id c...

2020-04-29 17:01:25 490 0

原创 Mybatis 使用 foreach 标签实现批量操作

拼装 in 条件 入参为数组或者列表 Mapper 接口 List<TUser> selectForeach4In(String[] names); Mapper xml文件 <select id="selectForeach4In" resultMap=&...

2020-04-26 10:39:16 89 0

原创 有关 ThreadLocal 的都在这里了

ThreadLocal辨析 与Synchonized的比较 ThreadLocal和Synchonized都用于解决多线程并发访问。 Synchronized:利用锁的机制,使变量或代码块在某一时该仅仅能被一个线程访问。 ThreadLocal:为每个线程都提供了变量的副本,使得每个线程在某一时...

2020-04-25 20:56:01 107 0

原创 有关“引用”、“对象”、“引用对象”的误解和看过源码说明后的理解

当看到 Object o = new Object(); 有人说,“我们创建了一个名为 o 的对象。” 对吗? 大家常常这么说,可严格意义上并不正确。 正确的解读是:创建了一个引用 o 和一个 Object 对象,并把 o 指向(refer to)了这个 Object 对象(referent,所...

2020-04-25 19:15:17 78 0

原创 Mybatis 里的 where、set、trim 标签

动态 Sql 的辅助元素 where、set、trim 作为动态 Sql 的辅助元素,起作用是处理 sql 的封装问题 <where> 常与 <select> 搭配使用 <select id="selectIfandWhereOper" resul...

2020-04-25 10:25:41 69 0

原创 Feign 的使用

Feign 简介 Feign 是对 Hystrix 和 Ribbon 的封装,简便了代码的编写,代价是对服务的性能有一定的影响,在并发量非常高的场景下不建议使用。(用 Hystrix 的场景并发量能不高么?所以基本上就是不建议使用) 配置与使用 服务发现方 依赖配置 <dependency...

2020-04-24 13:22:06 86 0

原创 Hystrix 做服务的隔离、降级、熔断

配置 依赖配置 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix<...

2020-04-23 21:45:41 117 0

原创 Hystrix Dashboard 配置

数据监控 需要额外创建一个工程 依赖配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"...

2020-04-22 20:19:35 86 0

原创 Ribbon 搭配 eureka 使用:调用远程接口

配置 方法一:配置文件配置 eureka 客户端(服务发现方) bootstrap.properties 配置 这里,服务注册方的服务名是 micro-order #搭配eureka服务端使用,从eureka服务端获得服务地址 ribbon.eureka.enabled=true #不搭配eur...

2020-04-22 13:16:30 156 0

原创 Eureka 高可用
原力计划

架构 服务端配置 新增配置文件 application-8761.properties server.port=8761 eureka.instance.hostname=Eureka8761 #是否注册到eureka eureka.client.registerWithEureka=true ...

2020-04-20 23:01:28 228 0

原创 Eureka 用户认证

相关文章 Eureka 服务端配置 Eureka 客户端配置 使用场景 希望给 Eureka 的服务端和客户端的使用加上条件 解决思路 利用 SpringSecurity 服务端 依赖配置 <dependency> <groupId>org.springframew...

2020-04-18 11:48:07 92 0

原创 IDEA 的 RunDashboard 配置

使用场景 一个大模块下有很多小模块的 SpringBoot 项目,想启用小模块的 SpringBoot 项目,需要找到对应的文件夹下找启动类,很麻烦。 配置方法 在大模块下找到 .idea 文件夹,编辑workspace.xml ctrl + R 寻找 RunDashboard 配置,添加配置 ...

2020-04-18 11:07:37 70 0

原创 Eureka 客户端配置

结构 如图所示,eureka 模块就是 eureka 服务端,另外 2 个模块都属于 eureka 客户端,无论是服务提供方还是服务发现方。它们的配置也是相同,不同的是使用方式。 依赖配置 <?xml version="1.0" encoding="UTF-8...

2020-04-18 10:53:10 154 0

原创 Eureka 服务端配置

结构 如图所示,eureka 模块就是 eureka 服务端,另外 2 个模块都属于 eureka 客户端。 依赖配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="...

2020-04-18 09:50:46 105 0

原创 SpringBoot 源码阅读(2)@SpringBootApplication

@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan...

2020-04-13 22:39:57 68 0

原创 SpringBoot 源码阅读(1)启动类 run 方法

重点 要完成Spring容器的启动 把项目部署到tomcat 源码 类 SpringApplication public static ConfigurableApplicationContext run(Class<?>[] primarySources, String[] ar...

2020-04-13 16:08:04 125 0

原创 SpringBoot 整合 RabbitMQ(高级篇)

pom.xml 引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId...

2020-04-09 11:55:52 197 0

原创 SpringBoot 整合 RabbitMQ

步骤一 pom.xml 引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifa...

2020-04-08 09:52:09 62 0

原创 SpringBoot 整合 Actuator

步骤一 pom.xml 依赖配置 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator&...

2020-04-05 16:21:43 260 0

原创 SpringBoot 整合 swagger2

步骤一 pom.xml 依赖配置 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> &...

2020-04-05 12:27:23 37 0

原创 mybatis 逆向生成

步骤一 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId&...

2020-04-05 12:05:17 46 0

原创 SpringBoot 整合 mybatis

步骤一 pom.xml 依赖配置 <!-- 把mybatis的启动器引入 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>my...

2020-04-05 11:42:50 65 0

原创 SpringBoot 整合 druid

步骤一 pom.xml 引入依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>...

2020-04-05 11:14:54 95 0

原创 SpringBoot 整合 druid(多数据源)

步骤一 pom.xml 引入依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>...

2020-04-05 11:12:58 300 0

原创 SpringBoot 整合 redis

步骤一 pom.xml 依赖配置 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis&...

2020-04-04 17:49:25 57 0

原创 SpringBoot 整合 servlet、filter、listener

步骤一 在 SpringBoot 启动类上,打上 @ServletComponentScan(basePackages = {""}) 步骤二 类继承 HttpServlet,打上 @WebServlet(urlPatterns = "/") 类继承 F...

2020-04-04 10:25:35 46 0

原创 SpringBoot 热部署

pom.xml 配置 <!--热部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</art...

2020-04-03 20:56:39 43 0

原创 Dubbo 线程模型

两种线程 IO线程:配置在netty连接点的用于处理网络数据的线程,主要处理编解码等直接与网络数据打交道的事件。 业务线程:用于处理具体业务逻辑的线程,可以理解为自己在provider上写的代码所执行的线程环境。 Dubbo 默认采用的是长连接的方式,即默认情况下一个consumer和一个pr...

2020-04-03 19:15:12 68 0

原创 Dubbo 源码阅读(九)ProtocolFilterWrapper

Filter 调用 源码 public class ProtocolFilterWrapper implements Protocol { private final Protocol protocol; public ProtocolFilterWrapper(Protoc...

2020-04-03 11:41:18 338 0

原创 Dubbo 源码阅读(八)RegistryProtocol

RPC过程 源码 @Override @SuppressWarnings("unchecked") public <T> Invoker<T> refer(Class<T> type, URL url) throws RpcExceptio...

2020-04-02 19:57:55 162 0

原创 Dubbo 源码阅读(七)ReferenceBean<T>

服务引入的过程 源码 过长的源码省略了,看重点 afterPropertiesSet() -> getObject() @Override public Object getObject throws Exception { return get(); } 跟 get: 类 Ref...

2020-04-01 20:46:12 172 0

原创 Dubbo 源码阅读(六)ServiceBean<T>

服务暴露的过程 源码 过长的源码省略了,看重点 afterPropertiesSet() -> export() @Override public void export() { super.export(); // Publish ServiceBeanExportedE...

2020-04-01 20:46:03 52 0

原创 Dubbo 源码阅读(五)@EnableDubbo

@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented @EnableDubboConfig //解析属性文件 @DubboComponentScan //扫描@Servic...

2020-04-01 19:08:36 156 0

原创 Dubbo 源码阅读(四)injectExtension

一个实现类里需要依赖另一个 @SPI 接口的实例,怎么办? 如下示例,你需要写一个 set 方法: public class OrderServiceImpl implements OrderService { private InfoService infoService;//是dubb...

2020-04-01 10:03:59 130 0

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