![](https://img-blog.csdnimg.cn/20190917153204580.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
文章平均质量分 81
离离原上草,一岁一枯荣。
野火烧不尽,春风吹又生。
Hey 锡瑞
这个作者很懒,什么都没留下…
展开
-
Mockito单元测试详解
(注意: @RunWith(MockitoJUnitRunner.class) 不能和 @RunWith(SpringRunner.class) 同时使用,而一般都需要 @RunWith(SpringRunner.class) 提供spring容器环境,所以很少用这个注解)SpringBoot默认的Mock框架是Mockito,和junit一样,只需要依赖spring-boot-starter-test就可以了。测试的时候需用调用B服务,但是B服务没写 好,这是可以先Mock一个B服务。原创 2022-10-25 16:44:24 · 4680 阅读 · 0 评论 -
深入理解ThreadLocal看这一篇就够了
一、ThreadLocal是什么从名字我们就可以看到ThreadLocal叫做线程变量,意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。(以下均基于jdk1.8)作用(线程安全):(1)在进行对象跨层传递的时候,使用ThreadLocal可以避免多次传递,打破层次间的约束。(2)线程间数据隔离(3)进行事务操作,用于存储线程事务信息。(4)数据库连接,原创 2021-03-22 11:39:27 · 1011 阅读 · 2 评论 -
Google工具包Guava——聊聊代码校验Preconditions
一、Preconditions工具类介绍Preconditions是guava提供的用于进行代码校验的工具类,其中提供了许多重要的静态校验方法,用来简化我们工作或开发中对代码的校验或预处理。所有的14个静态方法,如下:(1)checkArgument(boolean expression):用来校验表达式是否为真,一般用作方法中校验参数(2)checkArgument(boolean expression, @Nullable Object errorMessage):校验表达式是否为真,转载 2021-01-20 21:30:50 · 985 阅读 · 0 评论 -
Java系列6:Google工具包Guava的使用(看这一篇就够了)
一、Guava工具包(1)使用前引入maven依赖<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>19.0</version> </dependency>二、集合2.1、创建集合原创 2020-08-08 15:55:00 · 12306 阅读 · 0 评论 -
个人日常编码规范(二)
1、不要随便从其他项目复制代码,只添加自己需要的:例如要调用一个服务的时候,刚好在另外一个项目有该服务的Invoker代码,直接把整个类复制到了自己服务!!!里面有10个方法,而自己只会用到1个2、发布测试环境用qa分支,发布预发布环境用pre分支,发布线上只能用master3、每个迭代,在发布预发布之前,pre都删除后重新从master拉取;修复bug也直接在pre上修复;预发布测试通过,直接将pre分支合并到master4、在发布系统上设置服务触发自动构建的分支,qa、pre、master原创 2020-06-11 21:34:24 · 306 阅读 · 0 评论 -
个人日常编码规范(一)
代码优化:奇偶判断 不要在常量与变量中出现易混淆字符 不要让常量变成了变量 三元表达式的类型务必一致 建议显式的声明UID switch使用注意 用整数类型处理货币 注意边界问题 基本类型转换时尽量避免隐式的类型转换 警惕包装类型的NULL值 警惕包装类型的比较 建议工具类不可实例化 警惕对象的潜拷贝 建议覆写实体类的toString方法 合理使用String、StringBuffer、StringBuilder 注意字符串的位置 明确场景下为集合指定初始容量 使用..原创 2020-06-11 19:17:11 · 384 阅读 · 0 评论 -
数据库规范
一、运维准则(1)数据修改:研发、运营人员不能直接修改现网数据库,只能通过管理系统等业务系统进行修改; (2)脚本部署:版本上线包含数据库脚本,必须运维人员与开发人员进行部署,运营任玉环不能进行部署; (3)版本审核:所有上线版本包含数据库脚本,必须研发先内部进行邮件审批,然后发给运维人员进行审批; (4)版本测试:发布包必须经过测试人员测试,并经过压力测试,由测试人员提供,不接受开发人...原创 2020-05-06 02:23:26 · 1449 阅读 · 1 评论 -
阿里巴巴开发规范
一、编程规范1.1、命名风格(1)不能以下划线或者美元符号开始和结束; (2)不能使用拼音和英文混合方式,不能直接中文方式; (3)类名使用UpperCamelCase风格,但是DO/BO/DTO/VO/AO/PO/UID除外: 正解:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion 反例:macroPolo / ...原创 2020-05-04 00:45:27 · 20981 阅读 · 0 评论 -
JAVA8——Optional
一、Optionl用法详解Optional:这是一个可以为null的容器对象。(1)of:为非null的值创建一个Optional,of方法通过工厂方法创建Optional类,建对象时传入的参数不能为null//调用工厂方法创建Optional实例Optional<String> name = Optional.of("Sanaulla");//传入参数为null...转载 2020-04-20 00:03:39 · 408 阅读 · 0 评论 -
JAVA8——Stream
(1)Spring事务(1):TransactionTemplate 和@transactionTemplate 的原理和使用(2)深入学习JAVA8:Optional(3)Spring中ApplicationContext的事件机制翻译 2020-04-16 17:30:15 · 402 阅读 · 0 评论 -
Java系列5:计算机网络——TCP/IP、HTTP
一、OSI与TCP/IP各层的结构与功能,都有哪些协议?OSI的7层协议和TCP/IP的四层协议的优点折中出了——五层协议体系结构1.1、应用层作用:进程间通信的规则,不同的网络应用需要不同的应用层协议有两个应用层协议需要了解:域名系统DNS:以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.例如:...原创 2020-02-25 18:02:40 · 500 阅读 · 0 评论 -
Java系列4:事务——深入了解声明式事务、编程式事务、分布式事务
一、理论基础1.1、编程式事务和声明式事务(基于AOP,@Transactional)区别编程式事务允许用户在代码中精确定义事务的边界,而声明式事务(基于AOP)有助于用户将操作与事务规则进行解耦。简单地说,编程式事务侵入到了业务代码里面,但是提供了更加详细的事务管理;而声明式事务由于基于AOP,所以既能起到事务管理的作用,又可以不影响业务代码的具体实现。(编程式事务相对于声明式事...原创 2020-02-02 19:49:32 · 859 阅读 · 0 评论 -
递归树:获取父目录下的所有子目录
任务调度方式有Thread、Timertask、线程池、quartz、SpringBoot内置的schedul,注意都不是分布式下使用的,分布式应该使用XXL-Job,下面抽几个常用的的概括一下。注意:这些代码平时开发时不用写,直接用就行了。基本一样的,理解起来也没啥难度一、TimerTask实现定时调度这个一般客户端开发用的比较多,平时不常用/** * 使用TimerTask...原创 2019-12-29 19:36:30 · 455 阅读 · 0 评论 -
Java系列2:集合——深入解剖HashMap底层原理
一、HashMap底层原理要分为JDK1.8和之前的版本讲解。我将从三个方面来介绍,分别是底层数据结构、存储结构、源码1.1、HashMap原理(1)从底层数据结构来说,JDK1.8之前底层是数组+链表(散列链表),1.8之后链表到达阈值长度就会变成红黑树存储;(2)从存储结构来说,内部包含了一个Entry类型的数组table,Entry存储着键值对,数组中每一个位置被当成一个...原创 2019-12-25 11:53:01 · 716 阅读 · 7 评论 -
区分认证、授权、Cookie、Session、Token、JWT、OAuth 2.0
一、区分认证、授权、Cookie、Session、Token、JWT、OAuth 2.01.1、认证和授权通俗理解:认证:(你是谁)验证身份的凭据(比如用户名、密码),通过这个凭据系统知道你就是你权限:(你有权干什么)发生在认证之后,掌管访问系统的权限1.2、什么是Cookie?Cookie的作用?什么是Cookie:Cookie是某些网站为了辨别用户身份而存储在用户本地上...翻译 2019-12-19 16:51:46 · 709 阅读 · 0 评论 -
深入理解Java
类加载机制是指在Java程序运行时,将类的字节码加载到内存中,并转换为类的对象的过程,类加载机制是Java虚拟机(JVM)的重要组成部分,它负责加载、链接和初始化类。(1)加载:JVM通过类加载器将类的字节码文件加载到内存中(2)链接:JVM会对加载的类进行验证、准备和解析三个步骤(3)初始化:JVM会执行类的初始化代码,包括执行静态变量的赋值和静态代码块的执行等。类初始化时会按照父类-子类的层次逐个初始化,且在整个过程中会进行线程安全的控制。原创 2018-11-04 13:52:39 · 575 阅读 · 0 评论 -
Java中的反射机制
一、反射机制基本概念什么是反射:通俗地说就是根据给出的类名(字符串方式)来动态生成对象,让对象生成时才决定是是哪种对象。1.1、反射机制概念(1)什么是反射机制就是正在运行,动态获取这个类的所有信息。(2)反射机制的作用 反编译:.class-->.java; 通过反射机制访问java对象的属性,方法,构造方法等。(3)反射机制的应用场景Jdbc 加...翻译 2019-11-28 11:07:48 · 194 阅读 · 0 评论 -
枚举enum差不多所有用法在这了
用法一:常量在JDK1.5之前,定义常量都是:public static final....。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法:public enum Color { RED, GREEN, BLANK, YELLOW }用法二:switchJDK1.6之前的switch语句只支持int,char,enum类型...转载 2018-10-17 15:42:54 · 270 阅读 · 0 评论 -
Java系列3:java8新特性(2)
1.只能输入0-9的数字和小数点和-号数字+两位小数:^[1-9]\d+\.[0-9]{1,2}|0\.[0-9]{1,2}|[1-9]\d+|0$ 整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$只能输入数字:"^[0-9]*$"。只能输入n位的数字:"^\d{n}$"。只能输入至少n位的数字:"^\d{n,}$"。只能输入m~n位的数字:。"^\d{m,n}$...原创 2019-05-14 16:55:40 · 453 阅读 · 0 评论 -
Java系列3:java8新特性
一、lambda函数遍历集合1.1、java8中foreach + lambda函数式编程(1)普通for循环 @Test public void forTest() { List<Point> points = Arrays.asList(new Point(1, 2), new Point(2, 3)); System.o...原创 2018-09-10 15:56:01 · 645 阅读 · 0 评论 -
webservice的几种调用方式
1、基本概念1.1什么是Web Services? 举个例子,如果我们要在自己的程序里面展示天气预报,那怎么弄?正确的做法是我们发送一个请求到一个系统,他会给我们返回来天气情况。这个就是一个webservicewebService定义:即Web服务,它是一种跨编程语言和跨操作系统平台的远程调用技术1.2.Web Services 平台元素SOAP:简易对象访问协议,s...转载 2018-10-15 22:52:43 · 19043 阅读 · 5 评论 -
获取XML节点工具类 XmlGetNodeUtil
public class XmlGetNodeUtil { public static void main(String[] args) { // 创建一个DocumentBuilderFactory的对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // 创建一个DocumentBuild...翻译 2018-12-07 19:24:27 · 887 阅读 · 0 评论 -
Java系列2:集合
一、集合关系图1.1、集合框架底层数据结构总结Collection(1)ListArrayList:Object数组 Vection:Object数组 LinkedList:双向链表(JDK1.6为循环链表,JDK1.7取消了循环)(2)SetHashSet(无序,唯一):基于HashMap实现,底层采用HashMap来保存元素 LinkedHashSet:继承自...原创 2018-12-07 19:27:19 · 442 阅读 · 0 评论 -
Java系列1:字符串
一、StringUtils工具类是maven项目先添加依赖:<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.4</version></de...原创 2019-05-30 10:22:20 · 700 阅读 · 2 评论