![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
AllenLeungX
What's past is prologue.
展开
-
接口默认实现方法的打印日志
接口默认实现方法的打印日志转载 2022-08-29 17:56:22 · 1194 阅读 · 0 评论 -
log4j2 ThresholdFilter onMatch/onMismatch neutral/accept
log4j2.xml onMatch/onMismatch neutral/accept转载 2022-06-04 15:45:34 · 903 阅读 · 2 评论 -
Java程序员需要了解的阿里云的产品
ECS (Elastic Compute Service):以虚拟机的方式将一台物理机分成多台云服务器,提供可伸缩的计算服务。SLB (Server Load Balance):基于LVS和Tengine实现的4层和7层负载均衡,有动态扩容,session保持等特点。RDS (Relational Database Service);:通过云服务的方式让关系型数据库管理、操作和扩展变得更加简单。OCS (Open Cache Service):基于内部Tair,增加一层Proxy,支持海量小数据原创 2021-11-06 08:40:42 · 309 阅读 · 0 评论 -
一方库、二方库、三方库 概念
一方库:本工程中的各模块的相互依赖二方库:公司内部的依赖库,一般指公司内部的其他项目发布的jar包三方库:公司之外的开源库, 比如apache、ibm、google等发布的依赖原创 2021-10-31 07:46:44 · 2607 阅读 · 0 评论 -
Java 魔法值 概念
所谓魔法值,是指在代码中直接出现的数值,只有在这个数值记述的那部分代码中才能明确了解其含义。int [] array = new int[20]; for (int i = 0; i < 20; i++){ System.out.print(array[i]);}上述例子中,如果数组的声明与for循环相隔比较远,就很难知道 for循环里面的控制条件 i < 20 中 20 具体含义是什么。它是数组的长度呢,还是根据需求定义的界限值呢?就搞不清楚。 魔法数值使代码的可读原创 2021-10-31 07:39:40 · 1145 阅读 · 0 评论 -
1分钟看懂:java 项目中 VO 、DTO、Entity,各自是在什么情况下应用的
1、entity 里的每一个字段,与数据库相对应,2、vo 里的每一个字段,是和你前台 html 页面相对应,3、dto 这是用来转换从 entity 到 vo,或者从 vo 到 entity 的中间的东西 。举个例子:你的html页面上有三个字段,name,pass,age你的数据库表里,有两个字段,name,pass , 注意没有 age。而你的 vo 里,就应该有下面三个成员变量 ,因为对应 html 页面上三个字段 。private string name;priv原创 2021-10-24 11:26:34 · 2134 阅读 · 1 评论 -
DO,DTO,VO,POJO 你知道吗?
为什么会出现这些 O?我们知道,这些 O 不管叫什么名字,其本质都还是对象(Object),既然本质都一样,为什么非要给他们套上各种马甲?个人认为原因有三:第一,随着编程工业化的发展,需要有一套合理的体系出现。中国人喜欢造神,外国人喜欢造概念,于是 MVC、MVP、MVVM 等编程模型就出现了,为了搭配这些编程模型的使用,需要对 Object 的功能进行划分,于是我们便看到了这些层出不穷的 Object。当然这里并没有批评这些概念的意思。其二,我认为在团队协作编码中,一个好的命名方式是可以节约很多时间成原创 2021-10-24 11:23:20 · 354 阅读 · 0 评论 -
Java成员变量和局部变量
成员变量和局部变量根据定义变量位置的不同,可以将变量分为成员变量和局部变量 成员变量是在类范围内定义的变量 局部变量是在一个方法内定义的变量成员变量可以分为: 实例属性 (不用static修饰) 随着实例属性的存在而存在 类属性 (static修饰) 随着类的存在而存在成员变量无需显式初始化,系统会自动对其进行默认初始化局部变量可分为: ...原创 2021-10-21 07:22:13 · 1545 阅读 · 0 评论 -
Java public protected default private 详解
class之间的关系做一个简单的定义:对于继承自己的class,可以认为他们都是自己的子女,而对于和自己一个目录下的classes,认为都是自己的朋友。继承自己的class - 子女本包中的class - 朋友public公开;可以被所有其他类所访问。private - 本类访问私有;只能被自己访问和修改。protected - 子女、朋友可以访问保护;自身、子类及同一个包中类可以访问。friendly(default)- 几乎不用默认:同一包中的类可以访问,声明时没有加修饰符原创 2021-10-10 07:32:08 · 246 阅读 · 0 评论 -
Fat Jar 是什么意思?
在java中,通常将应用程序及其依赖jar一起打包到一个独立的jar中,就叫fat jar,它也叫uberJar。springboot的打包方式就是这样,将应用程序代码打包到BOOT-INF.classes,将依赖包打包到BOOT-INF.lib目录,以下是springboot的jar包的目录结构(目录生成命令是tree,没有的话可以自己安装哈):├── BOOT-INF│ ├── classes│ │ ├── application.properties│ │ └── co原创 2021-10-08 08:17:24 · 736 阅读 · 0 评论 -
Java中打印对象内存地址
java是获取不到对象的地址的,但是你可以获取hashcode,对象的hashcode在某种意义上就相当于对象的地址了,hashCode是用来在散列存储结构中确定对象的存储地址的。既然Java中对象内存地址不能获取到,所以这篇文章就应该变为“Java中如何获取对象的真实hashCode,而不受hashCode()方法被覆盖的影响”,接着下文:Object的hashCode()默认是返回内存地址的,但是hashCode()可以重写,所以hashCode()不能代表内存地址的不同System原创 2021-10-03 17:32:09 · 6152 阅读 · 0 评论 -
Java8 使用 stream().sorted()对List集合进行排序
集合对像定义集合对象以学生类(StudentInfo)为例,有学生的基本信息,包括:姓名,性别,年龄,身高,生日几项。使用stream().sorted()进行排序,需要该类实现Comparable接口,该接口只有一个方法需要实现,如下:public int compareTo(T o);有关compareTo方法的实现说明,请参考:Java 关于重写compareTo方法我的学生类代码如下:import java.time.LocalDate;import java.u...原创 2021-09-21 09:56:46 · 1786 阅读 · 0 评论 -
接口和抽象类有什么区别
接口和抽象类有什么区别你选择使用接口和抽象类的依据是什么?接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。抽象类是对事物本身的抽象描述,接口是对行为方式的抽象描述抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是原创 2021-09-18 07:45:23 · 241 阅读 · 0 评论 -
Windows修改Java版本不生效问题解决
windows本地装有jdk1.7和1.8两个版本,在修改JAVA_HOME的路径为1.8的安装路径后,cmd命令查看java版本,显示为所需版本1.8,当我需要用jdk1.7版本时,修改路径为1.7的:cmd命令查看,编译版本为1.7,java版本却是1.8:查资料知:原因:可能是安装oracle数据库在配置jdk路径之前,导致运行命令调用了oracle自带的jdk,从而导致这个问题。在环境变量配置中,%JAVA_HOME%\bin在C:\ProgramData\Oracle\Jav.原创 2021-09-14 11:49:20 · 1449 阅读 · 0 评论 -
Java中的 <T extends Comparable<? super T>>
Java 中类似<T extends Comparable<? super T>>这样的类型参数 (Type Parameter) 在 JDK 中或工具类方法中经常能看到。比如java.util.Collections类中的这个方法声明:public static <T extends Comparable<? super T>> void sort(List<T> list)我知道extends和super这样的关键字...原创 2021-08-15 10:29:08 · 622 阅读 · 0 评论 -
Java数组深度复制的四种方法
来源于牛客网的一道选择题:JAVA语言的下面几种数组复制方法中,哪个效率最高?A.for循环逐一复制B.System.arraycopyC.System.copyofD.使用clone方法效率:System.arraycopy > clone > Arrays.copyOf > for循环1、System.arraycopy的用法:public static void arraycopy(Object src, ...原创 2021-08-14 16:58:57 · 1925 阅读 · 0 评论 -
Arrays.binarySearch 详解
Arrays类的binarySearch()方法,可以使用二分搜索法来搜索指定的数组,以获得指定对象。该方法返回要搜索元素的索引值。binarySearch()方法提供多种重载形式,用于满足各种类型数组的查找需要。下文主要介绍两个比较重要、常用的方法:1) binarySearch(Object[] a, Object key)a: 要搜索的数组key:要搜索的值如果key在数组中,则返回搜索值的索引;否则返回-1或“-”(插入点)。插入点是索引键将要插入数组的那一点,即第一个大于该键的元.原创 2021-08-01 12:11:36 · 13668 阅读 · 4 评论 -
int数组与List互相转换
int[] data = {4, 5, 3, 6, 2, 5, 1}; // int[] 转 List<Integer> List<Integer> list1 = Arrays.stream(data).boxed().collect(Collectors.toList()); // Arrays.stream(arr) 可以替换成IntStream.of(arr)。 // 1.使用Arrays...原创 2021-07-31 17:33:41 · 8085 阅读 · 0 评论 -
Java数组的三种打印方式
1.数组的输出的三种方式一维数组:定义一个数组 int[] array = {1,2,3,4,5};(1)传统的for循环方式for(int i=0;i<array.length;i++){ System.out.println(array[i]);}(2)for each循环for(int a:array) System.out.println(a);(3)利用Array类中的toString方法调用Array.toString(a),..原创 2021-07-28 10:14:43 · 1585 阅读 · 0 评论 -
Java序列化和反序列化
遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题a,什么叫序列化和反序列化b,作用。为啥要实现这个 Serializable 接口,也就是为啥要序列化c,serialVersionUID 这个的值到底是在怎么设置的,有什么用。有的是1L,有的是一长串数字,迷惑ing。我刚刚见到这个关键字 Serializable 的时候,就有如上的这么些问题。在处理这个问题之前,你要先知道一个问题,这个比较重要。这个Serializable接口,以及相关的东西,全部都在 J原创 2021-07-21 08:59:42 · 2530 阅读 · 0 评论 -
判断两个List是否相等
最近一位同学在面试时被问到如何比较两个list是否相等?Java中的list是按自然顺序排列的。因此,如果两个list包含相同顺序的完全相同的元素,则认为它们是相等的,如果忽略元素顺序怎么样去比较两个列表?直接使用equals比较众所周知,两个列表具有完全相同的元素并且具有完全相同的顺序时,它们是相等的。因此, 如果我们业务要求两个list顺序一致,可以使用equals()方法进行相等性检查。@Testpublic void equalityCheckOfTwoLists() {原创 2021-07-17 16:50:17 · 15705 阅读 · 2 评论 -
Java中的goto
一、 Java中的goto关键字 在C/C++中,goto常被用于跳出多重循环。但goto 语句的使用往往会使程序的可读性降低,所以 Java 不允许 goto 跳转。实际上,自从“goto有害论”提出后,软件开发就不建议使用goto了,但是Java中依然保留了goto这个关键字留作备用,但这个关键字没有任何作用,只是为了将来可能的扩展,防止使用goto作为程序中的标识符。 类似地,Java中的const也只是一个不起作用的保留关键字(不具备C语言中定义常量的作用,Java中要想定义常量使...原创 2021-07-03 08:37:04 · 449 阅读 · 0 评论 -
Servlet 过滤器 Filter 常用 用法
1. 先新建一个 EncodingFilter.java :import java.io.*;import javax.servlet.*;public class EncodingFilter implements Filter {String encoding = null;FilterConfig filterConfig = null;public原创 2008-11-25 10:35:00 · 642 阅读 · 0 评论 -
源码解读 可重入锁ReentrantLock 的内部类 公平锁FairSync 和 非公平锁NonfairSync 实现原理
变量解释:public abstract class AbstractOwnableSynchronizer implements java.io.Serializable { ... /** * The current owner of exclusive mode synchronization. * 持有该锁的当前线程 */ private transi...原创 2019-05-07 08:09:24 · 459 阅读 · 0 评论 -
static静态变量使用@Value注入方式
最近使用springboot做项目时,用到static变量接收配置文件中的参数(@Value),结果发现没有获取到值。经过查找方法,最终实验得出一种解决办法,如下:@Componentpublic class CommunicationToICBC{ private static String privateKey; @Value("${third.cash.sdk.pr...转载 2019-11-29 15:45:06 · 520 阅读 · 0 评论 -
注解 @Service @Autowired @Resource 联系,区别,和解决一个接口多个实现类的冲突问题
网上资料百度搜索"@Autowired @Resource 区别"一大堆,关键是需要自己动手时间https://www.cnblogs.com/think-in-java/p/5474740.html=================================================================解决一个接口多个实现类的冲突问题实践篇注意:...原创 2019-02-05 17:33:13 · 1600 阅读 · 0 评论 -
List<String> 查找重复记录
怎么从list中找出重复数据,以及这些重复数据的个数?解决思路是:使用一个map,key用来记录list中的数据,value用来记录重复数据的个数,然后操作map来获取list中的重复数据即可,代码如下:package com.Jevin.test;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class Test03 {..原创 2021-04-17 14:48:03 · 2002 阅读 · 0 评论 -
Java 遍历Map对象 四种方法
在Java中如何遍历Map对象How to Iterate Over a Map in Java在java中遍历Map有不少的方法。我们看一下最常用的方法及其优缺点。既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等)方法一 在for-each循环中使用entries来遍历这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。Map<I.原创 2021-04-11 15:31:16 · 294 阅读 · 0 评论 -
(String) toString String.valueOf 区别
在Java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能。本文将对常用的转换方法进行一个总结。 常用的方法有(String)要转换的对象,Object#toString(),String.valueOf(Object)等。 (String) 这是标准的类型转换,将object转成String类型的值。使用这种方法时,需要注意的是类型必须能转成String类型。因此最好用instanceof做个类型检查,以判断是否可以转换。否则容易抛出CalssCastE...原创 2021-04-06 19:50:34 · 230 阅读 · 0 评论 -
IDEA Java对象set方法链式写法自动生成
第一步第二步第三步原创 2021-03-27 18:08:30 · 1625 阅读 · 0 评论 -
Lombok注解 @SneakyThrows
@SneakyThrows注解的用途得从java的异常设计体系说起。java中我们常见的2类异常。1.普通Exception类,也就是我们常说的受检异常或者Checked Exception。2.RuntimeException类,既运行时异常。前者会强制要求抛出它的方法声明throws,调用者必须显示的去处理这个异常。设计的目的是为了提醒开发者处理一些场景中必然可能存在的异常情况。比如网络异常造成IOException。但是现实,往往事与愿违。大部分情况下的异常,我们都是一路往外抛了事。(强制原创 2021-03-27 17:19:59 · 530 阅读 · 0 评论 -
Java throws 使用
在开发中,如果去调用别人写的方法时,是否能知道别人写的方法是否会发生异常?这是很难判断的。针对这种情况,Java总允许在方法的后面使用throws关键字对外声明该方法有可能发生异常,这样调用者在调用方法时,就明确地知道该方法有异常,并且必须在程序中对异常进行处理,否则编译无法通过。如下面代码package www.kangxg.jdbc; public class Example { public static void main(String[] args) { ...原创 2021-03-27 17:18:20 · 2809 阅读 · 0 评论 -
throw 和 throws 的区别
在类和方法后面用throws,直接抛出异常就要用到throw。throws就是放在类与方法后面,然后你要调用这个类与方法时,直接将类或方法抛出异常. throw就是单个语句抛出异常!throw是抛一个throws是抛多个 这两者虽然看起来只有一个s的区别,但是作用完全不一样/java处理异常方式///在java代码中如果发生异常的话,jvm会抛出异常对象,导致程序代码中断,这个时候jvm在做的操作就是:创建异常对象,然后抛出,比如:int i= 1;int j =.原创 2021-03-27 16:43:26 · 463 阅读 · 0 评论 -
Java8 将List转换为用逗号隔开的字符串的几种方法
1.使用谷歌的Joiner转换public static <T> String parseListToStr(List<T> list){ String result = Joiner.on(",").join(list); return result;}2.使用lambda表达式遍历集合public static <T> String parseListToStr2(List<T> list){ Strin原创 2021-03-14 22:46:22 · 17299 阅读 · 3 评论 -
Java 异常日志打印总结
先来做实验 try { int i = 1 / 0; } catch (Exception e) { e.printStackTrace(); log.error("异常信息: {}", e.toString()); log.error("异常信息: {}", e.getMessage()); log.error("异常信息: ", e.toString原创 2021-01-24 00:02:42 · 4242 阅读 · 0 评论 -
Spring中的JDBCTemplate使用(非常详细的配置过程)
Spring中的JDBCTemplate使用数据库准备:创建数据库创建表:Java代码:1、创建web 工程 springJdbcTemplate2、添加Spring能力 在此需要将jdbc包也同时加入3、配置上mysql的连接驱动(拷贝mysql驱动包,如果不拷贝报错很诡异)在applicationContext.转载 2013-08-27 16:49:03 · 1339 阅读 · 0 评论 -
Spring中JdbcTemplate类query方法的三种回调接口
/**作者:欧朝敬 QQ:35712069 手机:13873195792 请转载者不要更改原版内容 */ /** 使用三种Callback接口作为参数的query方法的返回值不同: 以ResultSetExtractor作为方法参数的query方法返回Object型结果,要使用查询结果,我们需要对其进行强制转型; 以RowMapper接口作为方法参数的query方法直接返回List型的转载 2013-08-27 16:04:34 · 1159 阅读 · 0 评论 -
Spring学习总结(一)——Spring实现IoC的多种方式
目录一、使用XML配置的方式实现IOC二、使用Spring注解配置IOC三、自动装配四、零配置实现IOC五、示例下载控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法,也有人认为DI只是IoC的另一种说法。没有IoC的程序中我们使用面向对象编程对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制转载 2017-03-13 16:56:46 · 261 阅读 · 0 评论 -
Spring学习总结(三)——Spring实现AOP的多种方式
目录一、基于XML配置的Spring AOP二、使用注解配置AOP三、AspectJ切点函数四、AspectJ通知注解五、零配置实现Spring IoC与AOP六、示例下载AOP(Aspect Oriented Programming)面向切面编程,通过预编译方式和运行期动态代理实现程序功能的横向多模块统一控制的一种技术。AOP是OOP的补充,是Spring框架中的一个重要内容转载 2017-03-13 16:54:28 · 245 阅读 · 0 评论 -
Exception toString getMessage 区别
Exception 的 toString() 方法和 getMessage() 方法的区别: 在开发的过程中打印错误日志时尽量使用e.toString() 方法, 因为当错误为空指针时 e.getMessage() 提示的错误信息为 null , e.toString() 方法比 e.getMessage() 方法要详细,实例如下:public class TestException { public static String str = null; ...原创 2020-11-03 22:28:18 · 1528 阅读 · 1 评论