Java
杨某不才
事无巨细
展开
-
Windows和Linux常用HASH算法使用命令
Windows和Linux常用hash算法使用命令原创 2023-02-20 15:29:13 · 1515 阅读 · 0 评论 -
[Java] Integer对象在-128~127之间的==比较
描述: Integer对象在-128~127之间的==比较,以及该范围之外的比较情况运行代码:public class Test { public static void main(String[] args) { Integer a = 5, b = 5, c = 132, d = 132; System.out.println(a == b); System.out.println(c == d); }}结果打印:a与b用==原创 2021-07-10 14:55:24 · 342 阅读 · 2 评论 -
[Java] Synchronized关键字在使用时需要注意的情况
一、不要使用常量作为锁,比如String以String为例,字符串是存在于常量池当中的,比如下面两个字符串a和b,这两个字符串的内容一样,他们的地址就会相同,String a = "abc";String b = "abc";用下面的代码来说明,定义两个字符串a和b,在main方法中创建两个线程 ,分别取名为thread1和thread2;首先,thread1线程会先执行,此时由于对象锁a是处于未被占有状态,因此thread1会直接拿到锁,并执行打印;之后,thread2线程执行,因为对象锁b原创 2021-06-19 23:49:29 · 193 阅读 · 1 评论 -
[Spring] spring源码构建教程,每步都有截图展示,清晰明了
前言此教程已在进行多次实操,每次都能构建成功,本人在教程中给出截图比较多,应该还比较清晰明了;愿想要学习spring源码的小伙伴们都能构建成功;从构建开始到成功一共有9个步骤(1-9);新建java项目并引用新构建的spring框架,此处用了3个步骤(10-12);第一步: 下载源码Github链接:https://github.com/spring-projects/spring-framework我这里下载的版本是spring 5.1.x,直接下载的源码zip包[外链图片转存失败,源站可能原创 2021-06-12 01:54:40 · 1574 阅读 · 3 评论 -
[Java] 为何用自定义的类作hashmap的key时需要重写hashcode方法和equals方法
主题: 为何用自定义的类作hashmap的key时需要重写hashcode方法和equals方法Object类的中的hashcode方法和equals方法Java中所有的类都是Object类的子类,Object中自带的hashcode方法,就是通过计算内存地址转换一个整数实现的,是一个native方法,返回值是int类型:public native int hashCode();Object中自带的equals方法,从源码中可以看出,就是将比较与被比较对象用==进行比较,用的还是比较hash值的方原创 2021-05-29 15:02:26 · 556 阅读 · 3 评论 -
[Java] @JSONField注解常用的使用场景总结
应用场景: 当我们在与前端进行交互时,前端想要的字段与我们提供的字段名不同,这时候一种解决方案是修改实体类,但如果该实体类应用的比较多,那改起来的代价太大,因此,可以使用注解@JSONField来实现替换效果,用法如下:@JSONField(name = "size_new")private int size;1. JSON内容与实体类,@JSONField常规写法JSON(与下述JSON字符串内容一致){ size: 5, weight: 10, colour: "re原创 2021-05-18 22:00:43 · 2766 阅读 · 4 评论 -
[Java] 使用stream().distinct()方式实现对List元素的去重处理
实现去重先将list转成流,使用list.stream()方法;对流实现去重,使用list.stream().distinct()方法;将去重后的list流,再转回list;方法distinct()方法: 用于过滤集合流中的所有不同元素,返回一个由给定流中的不同元素组成的流,对于有序流,保留在相遇顺序中最先出现的元素。对于无序流,没有稳定性保证。例子public static void main(String[] args) { List<String> lis原创 2021-05-10 18:11:48 · 13714 阅读 · 1 评论 -
[Java] 使用两条不同的URL请求同一个接口
描述: 该方式能够使用两条不同的URL,请求同一个接口URL1: /pathOne/requestURL2: /pathTwo/request方式一@RestController@RequestMapping("/{pathOne|pathTwo}")public class DoubleURL { @RequestMapping("/request") public String selectURL(){ return "success"; }}方原创 2021-05-06 22:34:07 · 1134 阅读 · 0 评论 -
[Java] 使用HttpClient实现文件下载
使用HttpClient实现文件下载服务端:服务端是一个SpringBoot服务,写了一个接口用于客户端请求文件,客户端携带参数(文件名fileName)使用Get方式请求;服务端获取到文件名后将与本地仓库地址E:/downloadRepository/组成绝对路径,获取文件转换成流,最后利用OutputStream对象将缓冲区的数据送到客户端;缓冲区大小也可设置为一个定值(如:1024*1024),然后再循环写入输出流对象;import org.springframework.w原创 2021-04-17 22:34:34 · 7645 阅读 · 0 评论 -
[Spring] 最简单遍历Spring Bean方式
最简单遍历Spring Bean方式描述: 采用注入ApplicationContext对象的方式,获取所有的Bean名称,并以list方式返回;实现代码import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationContext;import org.springframework.web.bind.annotation.RequestMapp原创 2021-04-15 22:24:58 · 1010 阅读 · 0 评论 -
[Spring] 如何将一个接口所有的实现类一次性注入
如何将一个接口所有的实现类一次性注入(list注入方式)上级接口: 首先需要定义一个上级接口public interface Fruit { void getName();}创建三个实现类实现类一:Appleimport com.myplus.common.Fruit;import org.springframework.stereotype.Component;@Componentpublic class Apple implements Fruit { public原创 2021-04-15 22:08:51 · 2372 阅读 · 0 评论 -
[Java] 如何将输入流转换成文件
使用场景: 之前用HttpClient做了一个文件下载模块,但是请求来的数据是流形式,因此需要将流还原成文件,于是用到以下方法;原理: 本方法原理是先用固定字节数读取输入流,再将其写入文件输出流,先读后写完成流到文件的转换,顺便研究了下arraycopy()的用法;代码: 输入流转化成文件import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStrea原创 2021-04-12 22:08:30 · 11862 阅读 · 1 评论 -
[Java] 加密压缩文件的解密操作
加密压缩文件的解密操作描述: 适用于解压加密后的.zip文件,同样也适用于未加密的.zip文件,未加密解压时,不执行setPassword(password)方法即可;参数: 方法需要三个参数,分别是.zip文件路径,解压后文件存放路径和解压密码;代码: 代码一共需要两个包,注意别导错了import org.apache.commons.lang3.StringUtils;import net.lingala.zip4j.core.ZipFile;public class UnzipDemo原创 2021-04-08 19:04:03 · 1149 阅读 · 1 评论 -
[Mybatis-Plus] 实现SpringBoot集成Mybatis-Plus
实现SpringBoot集成Mybatis-Plus项目环境MyBatis-Plus版本:3.1.2SpringBoot版本:2.1.0JDK版本:1.8完整的pom.xml文件内容<?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原创 2021-04-08 18:08:18 · 146 阅读 · 0 评论 -
[springboot] 配置日志文件输出
springboot配置日志文件输出本文是在application.properties文件中进行配置,application.yml中同样适用,仅格式有点差别;springboot版本:2.1.4.RELEASE;日志文件名称仅指定日志文件名,日志文件会生成在src同级目录下,eg:logging.file.name=app.log指定全路径+文件名(绝对路径),日志文件会生成在该路径下,eg:logging.file.name=D:/temp/app.log指定相对路径,eg:lo原创 2021-04-07 18:43:26 · 707 阅读 · 0 评论 -
[Java] Set的几种遍历方式,适用于HashSet、LinkedHashSet和TreeSet
Set的几种遍历方式介绍Java中Set是属于Collection接口下的实现分支,其实现类共有以下三种:HashSet:特点是集合中元素是不可重复的,集合中的元素无序,且与插入顺序无关,由HashMap实现,因此二者有部分特性是一致的,如初始大小为16,加载因子为7.5,元素存储在HashMap的key当中,从而也保证了集合的元素的唯一性;LinkedHashSet:特点是集合中元素是不可重复的,并且集合中元素顺序与插入时顺序一致;TreeSet:特点是集合中的元素是不可重复,并且集合中元素顺原创 2021-03-19 14:03:21 · 3623 阅读 · 0 评论 -
[Java] 遍历HashMap的几种方式总结
遍历HashMap的几种方式新建hashmapHashMap<String, String> hashMap = new HashMap<>();hashMap.put("1", "a");hashMap.put("2", "b");利用entrySet()方式遍历(最常用,效率最高)for (Map.Entry entry : hashMap.entrySet()){ System.out.println("key:" + entry.getKey() + "原创 2021-03-11 17:13:15 · 397 阅读 · 0 评论 -
[Java] Calendar工具类使用总结
Calendar工具类使用总结注意事项在使用calendar.get(Calendar.MONTH)时候需要加1,源码中的解释如下;翻译过来就是,这是一个特定于日历的值。格里高利历和朱利安历一年的第一个月是1月,也就是0,简而言之,他们的第一个月分是0不是1,所以要加个1;/** * Field number for get and set indicating the month. This is a * calendar-specific value. The first month of原创 2021-03-11 11:46:56 · 228 阅读 · 0 评论 -
[Java] 对txt文件的读写操作
**描述:**Java对txt文件的读写操作TXT文件写入操作private static void writeTxt(){ String txtPath = "D:\\test_demo\\test.txt"; File file = new File(txtPath); if (file.exists()) { file.delete(); } try{ file.crea原创 2021-03-08 15:57:44 · 316 阅读 · 0 评论 -
[Java] Spring自带md5加密方式
描述:说md5加密不是个准确的说法,因为md5设计之初是根据密码学验证消息完整性的,而且是不可逆的,无法解密;由于密码被md5计算加密后被破解的可能性很小,只能进行暴力破解,因此,基本上可以说是安全的。使用场景:比如,在设计登录接口的时候,将密码用md5加密后存入数据库,下次登录的时候再将传来的原密码进行求md5值,然后与数据库中的值进行比较就可以了。import org.springframework.util.DigestUtils;public class Learning { pub原创 2021-03-02 09:25:20 · 714 阅读 · 0 评论 -
[Java] Java获取当前系统时间
描述:都是平时常用的获取系统当前时间方式。import java.text.SimpleDateFormat;import java.time.LocalDate;import java.time.format.DateTimeFormatter;import java.util.Date;public class Test { public static void main(String[] args) { /** * 只有日期原创 2021-03-01 11:38:03 · 128 阅读 · 0 评论 -
[Java] 使用Base64加密与解密
使用Base64加密与解密描述:代码简单易懂,这种方法的加密和解码也很简单,用于安全领域下的加密可能不太适合。import java.util.Base64;public class Base64Tool { /** * 加密 * @param oriPassword * @return */ public static String encrypt(String oriPassword){ byte[] bytes = or原创 2021-02-27 16:42:17 · 354 阅读 · 0 评论 -
Git命令行设置用户名和邮箱
Git中设置用户名和邮箱今天在使用Git提交代码的时候遇到author ‘xxx‘ is not ‘Name ‘ and matches no existing author,解决方法:先获取用户名和邮箱然后再按username<email>格式填写,顺利提交。用户名和邮箱地址的作用我们每次向git库commit的时候,都会记录用户名和邮箱;用户名和邮箱地址是本地git客户端的一个变量,不随git库而改变;github的contributions统计就是按邮箱来统计的。修改密原创 2021-02-23 10:49:17 · 5011 阅读 · 1 评论 -
Mybatis-plus条件构造器QueryWrapper基本方法
好文引用官方文档原创 2021-02-02 16:28:40 · 224 阅读 · 0 评论 -
Java接口方法的三种类型
Java接口方法的三种类型接口中的方法分别有以下三种普通方法:使用default修饰的接口方法,可以拥有方法体,实现类不需要重写,可以被实现类继承,该特性是Java8以后被提出;静态方法:接口中的静态方法和普通类中的一样,静态方法不需要实例化,而接口本身就不支持实例化,从这点来看,静态方法和接口在一起似乎很配;抽象方法:这个不需要解释。例子接口ABC中有三个方法,分别是普通方法A()、静态方法B()和抽象方法C()public interface ABC { default St原创 2020-11-19 21:28:11 · 8061 阅读 · 0 评论 -
Java内部类的简单使用
Java内部类的使用定义: Java的内部类就是在一个类的内部再定义一个类,当然不是说只能创建一个内部类,而是能一个外部类中创建多个内部类,并且内部类中还可以再定义内内部类:)使用内部类的好处:可以用来实现多继承;内部类可以提供很好的封装,除了它的外部类以及它的同级类,其他类都不能访问;注意:内部类不能出现静态变量或方法;在创建内部类实例时,需要先创建外部类实例,再创建内部类实例;import com.project.demo01.Entity.Fruits; //创建了Fr原创 2020-11-17 19:31:28 · 111 阅读 · 1 评论 -
如何读取Java中properties文件的数据
如何读取Java中properties文件的数据Properties类想要读取properties文件的数据,首先需要知道Properties类(java.util.Properties),该类是Hashtable的一个子类;此外,从源代码的前几行注释可知,该properties类代表一个持久型属性集,该属性可以被保存到一个流中(inputStream,FileInputStream …),或者是从流中加载,属性列表中的每个键及其对应的值都是一个字符串:/** * The {@code Proper原创 2020-10-29 11:40:13 · 1722 阅读 · 0 评论