
java
文章平均质量分 66
b9x_
只怕失望
展开
-
Feign - 理解使用
最近在整合项目的RPC调用,对Feign有了更多对一些理解Feign它是一个声明式WebService客户端.,它支持多种注解,Feign自带注解以及JAX-RS标准的注解.Feign也支持可拔插式的编码器和解码器.即我们可以自定义编码器、解码器、错误处理器;Spring Cloud是对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters....原创 2020-01-08 20:54:20 · 438 阅读 · 0 评论 -
lombak引发的对equals和hashcode方法理解
覆盖equals时请遵守通用约定:自反性(reflexive)。对于任何非null的引用值x,x.equals(x)必须返回true。 对称性(symmetric)。对于任何非null的引用值x和y,当且仅当y.equals(x)返回true时,x.equals(y)必须返回true。 传递性(transitive)。对于任何非null的引用值x、...原创 2019-12-17 11:08:28 · 283 阅读 · 0 评论 -
Feign - 基础使用
关于FeignFeign通过注解声明的方式简单化的实现了Http的相关调用,使我在以http方式调用远程接口时更加简单,代码也更加简洁,只需要创建接口,增加相关的注解就可以了。使用引入相关包 <dependency> <groupId>org.springframework.cloud</groupId...原创 2019-11-22 12:22:25 · 206 阅读 · 0 评论 -
单测 - JUnit搭配PowerMock单测实践
为什么单测要使用Mock工具单元测试是要遵守可重复执行,故测试用例不应该依赖外部环境以及下游服务,避免不必要的问题;Mock工具就是为了满足这一需求的,它可以帮我们mock(模仿)出外部依赖对象,这样我们的测试用例不依赖于下游服务的状态,同时可以自主控制方法的返回值,或者执行特定行为甚至返回异常。为什么单测要使用PowerMock首先,PowerMock就是Mock的一种实现工具库...原创 2019-11-05 17:35:06 · 405 阅读 · 0 评论 -
单测 - 需要知道的点
1、好的单元测试必须遵守AIR原则。说明:单元测试在线上运行时,感觉像空气(AIR) —样并不存在,但在测试质量的保障上,却是非常关键的。好的单元测试宏观上来说,具有自动化、独立性、可重复执行的特点。A: Automatic(自动化):不需要人为手动检查通过结果l:lndependent(独立性)单测中使用的数据不应该依赖于运行环境,所需的数据应该是测试用例的一部分 单测中调用...原创 2019-11-05 11:51:25 · 448 阅读 · 0 评论 -
Druid - 源码浅析(2) 获取连接
获取连接 getConnection(); public DruidPooledConnection getConnection() throws SQLException { return getConnection(maxWait); } public DruidPooledConnection getConnection(long maxWa...原创 2018-12-20 16:53:54 · 487 阅读 · 0 评论 -
Java - 函数式编程(2):常用的流操作
流操作: 即stream接口针对于集合类提供的操作。集合类.stream()集合获取到stream(流),随之进行自己想要的操作。filter():按照一定条件过滤集合的元素 。 list.stream().filter(x -> x > 5); 像filter()这类返回值为Stream的方法,它其实只是刻画出了stream,并没有产生新的集合,也就是按照规则构造出Stre...原创 2018-12-24 10:40:52 · 322 阅读 · 1 评论 -
Druid - SpringBoot配置数据库连接池druid
关于Druid DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池,是目前最好的连接池。 yml文件配置 spring: datasource: type: com.alibaba.druid.pool....原创 2018-12-19 12:27:04 · 494 阅读 · 0 评论 -
Java - 高效解析Execl
这里的场景是将execl放在项目下,启动项目时对其解析,加载到内存中使用。pom: <dependency> <groupId>com.monitorjbl</groupId> <artifactId>xlsx-streamer</artifactId> ...原创 2019-02-15 10:46:43 · 802 阅读 · 0 评论 -
Druid - 源码浅析(1) - 初始化
实现类DruidDataSource: 一些重要变量: private volatile DruidConnectionHolder[] connections; //存连接的数组,不一定会满 private int poolingCount = 0; /...原创 2018-12-20 14:35:20 · 588 阅读 · 0 评论 -
Druid - 源码分析与学习
找BUG时不得不接触到Druid源码。单看源码还是很吃力,结合下面的文章努力理解一些。原文:https://blog.csdn.net/herriman/article/details/51759479转载 2018-12-19 16:14:04 · 230 阅读 · 0 评论 -
java - 中转上传文件(有坑)
遇到一个问题,我们的服务只做代理功能,有时候需要转发文件,又不能把文件先保存下来后再读取文件上传到第三方服务器,这时候就要直接发送流文件。restTemplate(亲测有效,很费劲才找到的): class MultipartInputStreamFileResource extends InputStreamResource { private final String fi...原创 2018-12-05 16:38:14 · 1480 阅读 · 1 评论 -
Java多线程与并发 - 了解“monitor”
转载来源: http://www.programcreek.com/2011/12/monitors-java-synchronization-mechanism/http://ifeve.com/monitors-java-synchronization-mechanism/监视器是操作系统实现同步的重要基础概念,同样它也用在JAVA的线程同步中,这篇文章用一种类推的思想解释监视器”转载 2018-02-06 21:15:09 · 382 阅读 · 0 评论 -
Java多线程与并发 - Synchronized的使用与原理
Synchronized的使用普通同步方法:锁是当前实例对象 //锁住的是当前类实例 public synchronized int getNext(){ return value++; }静态同步方法:锁是当前类的Class对象//锁住的时当前Class对象public synchronized static int get原创 2018-02-06 22:09:46 · 246 阅读 · 0 评论 -
设计模式 - java代码实现单例模式
常见的单例模式的实现有五种,其中一种是饿汉式,四种是懒汉式。1.饿汉式:不存在线程安全问题。但不管使不使都会占用内存空间,造成内存利用率降低。package com.zx.singleton;public class Singleton1 { private Singleton1(){}; private static Singleton1 instance原创 2018-02-07 21:28:02 · 311 阅读 · 0 评论 -
java多线程与并发 - Condition(条件)
关于ConditionCondition即条件,JDK描述:条件(也称为条件队列 或条件变量)为线程提供了一个含义,以便在某个状态条件现在可能为 true 的另一个线程通知它之前,一直挂起该线程(即让其“等待”)。因为访问此共享状态信息发生在不同的线程中,所以它必须受保护,因此要将某种形式的锁与该条件相关联。等待提供一个条件的主要属性是:以原子方式释放相关的锁,并挂起当前线程,就像 Obje...原创 2018-02-14 21:17:57 · 629 阅读 · 0 评论 -
java多线程与并发 - volatile的作用及原理
一.volatile的作用当一个变量加上 volatile关键字 之后,就具备了可见性,但不能具备原子性可以防止指令重排序,在一定程度上保证指令有序性。也就是指令重排序时不能把后面的指令重排序到内存屏障之前的位置,而对volatile关键字修饰的变量的操作就相当与一个内存屏障。二.volatile的使用使用volatile时必须具备以下2个条件:1. 对变量的写操作不依...原创 2018-02-08 08:17:43 · 172 阅读 · 0 评论 -
Java - 线程池参数
ThreadPoolExecutorThreadPoolExecutor是线程池的真正实现,他通过构造方法的一系列参数(不同的构造方法),来构成不同配置的线程池。 构造方法参数 corePoolSize 核心线程数,默认情况下核心线程会一直存活,即使处于闲置状态也不会受存keepAliveTime限制。除非将allowCoreThreadTimeOut设置为true。有任务来...原创 2018-07-18 20:06:55 · 849 阅读 · 0 评论 -
Java - 函数式编程(1): lambda表达式入门
关于lambda表达式 Lambda 是Jdk8推出的一个新特性,允许把函数作为一个方法的参数(函数作为参数传递进方法中)。 Lambda表达式只支持函数式接口 也就是只有一个抽象方法的接口。用来实现接口 使用 Lambda 表达式可以使代码变的更加简洁紧凑,同时其实是在要求我们想的更多,写的更少。基础表达式写法(...原创 2018-09-05 11:32:54 · 672 阅读 · 0 评论 -
Java - 使用RestTemplate代理Http请求
使用RestTemplate代理Http请求(请求方式不限),下面对POST请求的Body进行了封装。HttpEntity:请求实体。封装Body还可以用MultiValueMap。public ResponseEntity<byte[]> proxy(String prefix, HttpEntity<String> httpEntity, HttpServl...原创 2018-11-15 11:15:47 · 4015 阅读 · 0 评论 -
java多线程与并发 - 自己实现一个简单的锁(实现Lock接口)
package com.zx.lock;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;public class MyLock implements Lock { //要维护1.当前是否有锁...原创 2018-02-11 11:57:54 · 380 阅读 · 0 评论