![](https://img-blog.csdnimg.cn/3069232b72714d21aa273edbd407a04d.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
编程课堂
帮助别人,快乐自己,可能困扰你的技术难点,曾经我也深陷其中,希望在这里你可以找到答案
展开
-
Java 读取多层级循环xml
问题:在项目开发中对接银行接口,由于银行接口使用的技术比较古老,接口返回的数据为xml格式。xml数据多层嵌套存在多个标签循环,类似与java中的List对象集合。下面的方法就是对多相同xml标签进行读取,并转为List对象集合。原创 2022-09-06 16:57:24 · 1943 阅读 · 0 评论 -
Java 使用XmlUtil解析Xml
引言:在日常编码中,我们接触最多的除了JSON外,就是XML格式了,一般而言,我们首先想到的是引入Dom4j包,却不知JDK已经封装有XML解析和构建工具:w3c dom。但是由于这个API操作比较繁琐,因此Hutool中提供了XmlUtil简化XML的创建、读和写的过程。...原创 2022-06-27 18:41:22 · 3130 阅读 · 0 评论 -
Java Post请求参数格式为XML
在对接接口时,接口的请求参数为XML格式,响应结果也为XML,下面介绍两种请求方法:原创 2022-06-27 18:22:11 · 4444 阅读 · 2 评论 -
Java Post请求工具类
public static String send(String url, Map headers, Object params) { try { if (params instanceof Map) return sendMap(url, headers, (Map)params); else return原创 2022-06-01 10:50:26 · 1583 阅读 · 0 评论 -
Java Get请求工具类
/** * 发送get请求;不带请求头和请求参数 * @param url 请求地址 */ public static String doGet(String url) throws Exception { return doGet(url, null, null); }原创 2022-06-01 10:44:46 · 853 阅读 · 0 评论 -
Java 批量下载图片并压缩为Zip
问题:在开发项目中,遇到前端传递多个图片URL到后端,实现图片的批量下载并压缩为Zip。业务代码:Controller@PostMapping("/batchDownload")public void batchDownload(@RequestBody PassportDTO passportDTO, HttpServletResponse response) { passportService.batchDownload(passportDTO, response);}Ser原创 2022-05-31 17:56:02 · 2310 阅读 · 6 评论 -
java.lang.NoSuchMethodError:: okhttp3.RequestBody.create(Ljava/lang/String;Lokhttp3/MediaType;)Lokht
解决办法: 在pom.xml中加入如下两个依赖<dependency> <groupId>org.web3j</groupId> <artifactId>core</artifactId> <version>5.0.0</version></dependency><dependency> <groupId>com.squareup.okhttp3&l原创 2022-04-25 19:47:26 · 5863 阅读 · 4 评论 -
Java 对象所有字符串属性去空格
序言:在开发Excel数据导入的时候,将导入的数据映射到List泛型集合中时,发现对象的字符串属性有很多空格,数据不规范,保存到数据库不好,需要对这些数据进行去空格操作,下面是具体的操作。ObjectUtil工具类import java.util.*;import java.lang.reflect.Field;public class ObjectUtil { /** * 对象字符串属性去空格 */ public static void objectToTrim.原创 2022-04-05 16:05:25 · 3254 阅读 · 2 评论 -
Java 判断对象是否所有属性为空
序言:在开发Excel数据导入的时候,后台拿到Excel中的数据并接收到List泛型集合中,发现有很多对象的属性全部为null,想通过代码将这些无效的数据给过滤掉,下面是过滤的具体操作。ObjectUtil工具类import java.util.*;import java.lang.reflect.Field;public class ObjectUtil { /** * 判断该对象是否所有属性为空 * 返回ture表示所有属性为null,返回false表示不是所有.原创 2022-04-05 15:57:28 · 12048 阅读 · 2 评论 -
Java 序列化对象为json字符串,属性首字母大写,并按照属性首字母排序
1、创建类import lombok.Data;import lombok.NoArgsConstructor;import lombok.AllArgsConstructor;import com.fasterxml.jackson.annotation.JsonProperty;import com.fasterxml.jackson.annotation.JsonPropertyOrder;@Data@NoArgsConstructor@AllArgsConstructor@Js原创 2022-03-13 17:02:52 · 5378 阅读 · 0 评论 -
Java 解析XML
XML<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://xxx.xxx.org/xxx/xxx/"> <soapenv:Body> <ns:getBasicPersonInfoResponse xmlns:ns="http://www.xxx.com/xsd"> <ns:return>{"co原创 2022-02-08 10:44:02 · 583 阅读 · 0 评论 -
Java 视频转码(转为MPEG-4格式)
问题:原视频的编码格式为H265,在小程序上面无法播放,需要转为MPEG-4格式。1、引入相关依赖<dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv</artifactId> <version>1.4.1</version></dependency><dependency> <groupId>.原创 2021-10-12 16:56:02 · 2939 阅读 · 4 评论 -
Java 读写Excel
前言:本篇博客读写Excel使用的是EasyExcel,EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。详细了解和使用请参考:官方文档一、Excel示例二、代码实现1、引入依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.7</.原创 2021-09-27 15:51:33 · 196 阅读 · 0 评论 -
Java 过滤接口返回数据值为null字段
方法一:在类字段上加注解import com.fasterxml.jackson.annotation.JsonInclude;@JsonInclude(JsonInclude.Include.NON_NULL)private String name;方法二:在配置文件中处理spring: jackson: default-property-inclusion: non_null原创 2021-08-25 17:45:44 · 1199 阅读 · 0 评论 -
Java 分页工具类PageUtil
核心代码:import lombok.Data;import java.util.List;import java.util.ArrayList;import java.io.Serializable;@Datapublic class PageUtil<T> implements Serializable { private static final long serialVersionUID = -8741766802354222579L; // 每页显示多少条记录原创 2021-08-13 17:11:04 · 1488 阅读 · 2 评论 -
Java 自定义注解实现后台获取当前登陆的用户信息
为什么需要在后台使用注解保存用户信息?用户在前端页面进行一系列的操作,在请求后端接口时可能需要携带当前用户信息参数,这样的话前端也许要保存用户信息,不安全。在后端使用注解保存当前用户信息,安全方便。1、核心代码1.1、注解类import java.lang.annotation.Target;import java.lang.annotation.Retention;import java.lang.annotation.Documented;import java.lang.annota原创 2021-06-08 17:32:49 · 1626 阅读 · 0 评论 -
Java 图片转Base64字符串
核心代码:/** * 图片转Base64字符串 */public String imgToBase64String(String imgFile) { InputStream inputStream; byte[] data = null; // 读取图片字节数组 try { inputStream = new FileInputStream(imgFile); data = new byte[inputStream.available原创 2021-06-08 16:20:35 · 1096 阅读 · 0 评论 -
Java File读取文件内容中文乱码
1、业务代码:import java.io.File;import java.io.FileReader;import java.io.BufferedReader;public class Application { public static void main(String[] args) throws Exception { File file = new File("F:/test.txt"); BufferedReader reader = ne原创 2021-05-22 10:51:40 · 1826 阅读 · 0 评论 -
Java Stream流sorted方法对List集合进行排序
1、测试数据@Data@NoArgsConstructor@AllArgsConstructorpublic class User { private int id; private int age; private String name; private BigDecimal money;}private static List<User> getList() { List<User> users = new ArrayLis原创 2021-04-27 11:22:28 · 3876 阅读 · 4 评论 -
Java List集合Stream流按条件分组获取每组最大值
核心代码:根据stationIdC对数据分组,通过对每组timestamp进行比较,获取每组timestamp最大的那条记录,返回结果为Map。Map<String, AtstationDTO> latestStations = stations.parallelStream().collect(Collectors.toMap(Atstation::getStationIdC, Function.identity(), (c1, c2) -> c1.getTimestamp() &g原创 2021-04-22 13:49:23 · 9300 阅读 · 0 评论 -
Jackson 序列化java对象为json字符串并写入文件
1、创建java对象import lombok.Data;@Datapublic class RequestResult { private int code; private String message; private Object data;}2、准备数据RequestResult(code=200, message=查询成功, data=[{id=1, name=张三}, {id=2, name=李四}, {id=3, name=王五}])3、序列化ja原创 2021-04-17 18:26:51 · 843 阅读 · 0 评论 -
Jackson 反序列化json字符串为java对象
1、创建user.json文件{ "code": 200, "message": "查询成功", "data": [ { "id": 1, "name": "张三" }, { "id": 2, "name": "李四" }, { "id": 3, "name": "王五" } ]}2、创建java对象import lombok.Data;@Datapublic class RequestResult { privat原创 2021-04-17 18:03:26 · 331 阅读 · 0 评论 -
Java Object转long
1、方法一:原创 2021-04-17 16:58:26 · 4349 阅读 · 0 评论 -
Java 使用FileUtils.copyFile复制文件
1、FileUtils.copyFile方法copyFile方法有多种重载形式,下面截图只是其中比较简单的一种,详细见官方文档2、业务代码:private File copyFile(Long baseTime, int orgId, int typeId, String sourcePath, String fileName) throws IOException { String time = DateUtils.convertDateToString(DateUtils.timesta原创 2021-04-16 10:12:08 · 8619 阅读 · 0 评论 -
Java List集合Stream流多字段分组获取字段值和
说明:实际业务开发中,从数据库中获取所有站点降水数据,需要对站点降水进行累加,需要根据站点进行分组,然后将分组之后的降水进行累加。下面的方法就是使用Stream流进行站点分组,获取分组之后降水累加。1、业务代码:public List<AtstationDTO> getTimeRangeRainfall(Long startTime, Long endTime) { List<AtstationDTO> rainfalls = new ArrayList<>.原创 2021-04-08 18:34:32 · 3843 阅读 · 0 评论 -
Java DateUtil工具类(持续更新中...)
引言:开发中需要对Date日期进行一系列操作,每次单独写会造成代码冗余,DateUtil工具类中封装了一些常用的方法,例如:增加几个月,增加几天、增加几小时等等。遇到对Date的相关操作,直接调用即可,代码方便简洁。DateUtil工具类public class DateUtil { /** * 获取当前系统时间 */ public static Date now() { return new Date(); } /** .原创 2021-04-06 18:18:09 · 2344 阅读 · 2 评论 -
Java String数组转int数组
方法:String[] authorities = ["1", "2", "3"];int[] authorityIds = Arrays.stream(authorities).mapToInt(Integer::parseInt).toArray();原创 2021-03-19 13:31:33 · 1968 阅读 · 0 评论 -
前端获取后端的BigDecimal类型字段数值,丢失精度处理
1、问题:前端请求后端接口获取BigDecimal类型字段数值时丢失精度,例如:5999.00变成5999、5999.50变成5999.5。2、解决方法:在字段上添加 @JsonFormat(shape = JsonFormat.Shape.STRING)注解,在序列化数据时会以String类型返回。@JsonFormat(shape = JsonFormat.Shape.STRING)private BigDecimal price;3、返回数据区别:不加注解:前端在渲染数据时,丢失精度。原创 2021-03-05 17:02:27 · 5005 阅读 · 0 评论 -
Java File类根据文件修改时间删除文件
主要代码:import java.io.File;import java.util.Date;import java.io.IOException;public class Application { public static void main(String[] args) throws IOException { File directory = new File("E:\\Test"); // 获取该目录下的所有文件 File[] f原创 2020-11-29 14:24:32 · 783 阅读 · 0 评论 -
Java 读取文件全部内容
主要代码:import java.io.File;import java.io.IOException;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.InputStreamReader;import java.nio.charset.StandardCharsets;public class Application { public static void main(String原创 2020-10-24 17:06:40 · 7775 阅读 · 0 评论 -
Java 实现日期的格式化,月份和天不足两位时补上0
问题:在java开发中,有时候我们单独获取日期的月份和天数是一个int类型的整数,小于10的时候,是一位数,而我们需要的是两位数,例如:01、02、03、04、05…代码:import java.util.Date;import java.util.Calendar;import java.text.SimpleDateFormat;import org.apache.commons.lang3.StringUtils;public class Application { publ.原创 2020-10-04 15:07:08 · 11929 阅读 · 4 评论 -
Java Poi-tl操作Word文档,插入文本和图片
前言:poi-tl(poi template language)是Word模板引擎,基于Microsoft Word模板和数据生成新的文档。详细使用见:官方文档1、pom.xml引入依赖<dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.8.2</version><.原创 2020-10-04 14:11:14 · 5140 阅读 · 19 评论 -
Java 创建线程安全的List<T>泛型集合
问题:在多线程的环境下,List集合数据发生丢失,具体原因不知道和是否List集合不是线程安全有关系,但是在使用Collections.synchronizedList(List「T」 list)创建线程安全的集合之后,数据丢失现象没有了。创建一个线程安全的集合:List<User> users = Collections.synchronizedList(new ArrayList<>());...原创 2020-09-19 21:28:07 · 489 阅读 · 0 评论 -
Java List集合Stream流的使用(常用方法)
引言:Java stream流在对集合的操作中提供了很多非常好用的方法,下面的这些方法是在开发中比较常用的,可以实现对集合数据的过滤、查找、求和等等。1、按条件查找,找到了返回一个对象,反之返回null// 查找id为6的用户信息User user = getUsers().stream().filter(p -> p.getId() == 6).findAny().orElse(null);System.out.println(user != null ? user.toString().原创 2020-09-19 16:02:12 · 8284 阅读 · 0 评论 -
Java BigDecimal比较大小
比较方法:BigDecimal类提供compareTo()方法来比较两个数的大小,例如:a = b返回0,a < b返回-1,a > b返回1,通过这三种比较返回的结果,我们还可以比较a != b、a >= b和a<= b这三种情况。示例代码:import java.math.BigDecimal;public class Application { public static void main(String[] args) { BigDeci.原创 2020-09-12 15:05:10 · 31184 阅读 · 0 评论 -
Java 实体对象转Map
为了满足项目的参数传递,需要将实体对象转成map以满足业务需求,下面是实体对象转map的工具类。ObjectToMap.javaimport java.util.Map;import java.util.HashMap;import java.lang.reflect.Field;public class ObjectToMap { public static Map<String, String> convert(Object object) throws Except.原创 2020-08-23 15:30:23 · 1880 阅读 · 0 评论 -
aspose将word转pdf时乱码,或者出现小方框问题
问题:spring boot项目中aspose word转pdf在本地windows上可以正常转换,但是spring boot项目部署到linux服务器上运行时,aspose word转pdf出现问题,转成之后的pdf出现乱码,有很多小方块。解决办法:1、linux安装中文字体【转载】2、具体解决操作【转载】...原创 2020-08-15 15:49:46 · 2646 阅读 · 0 评论 -
Java word转pdf方法
1、引入破解版Aspose Word 18.10 jar若不是破解版的Jar包,word转成pdf之后,pdf中会有水印。可以自己在网上找破解的Jar包资源。lib:存放Jar包的位置。source:存放许可文件,格式为xml。2、在项目resource文件夹下添加license.xml许可文件<License> <Data> <Products> <Product>Aspose.Total for Java</Pro原创 2020-08-09 19:41:04 · 2238 阅读 · 2 评论 -
Java String类型转Timestamp类型
代码:public class Application { public static void main(String[] args) throws Exception { String time = "2020-01-02 23:45:32"; Timestamp date = Timestamp.valueOf(time); System.out.println(date instanceof Timestamp); Syste原创 2020-07-26 16:31:12 · 2303 阅读 · 0 评论 -
Java执行cmd命令
1、需求:在项目开发中,遇到了需要使用java程序,调用python文件生成图片,直接使用python指令在cmd中,运行.py文件,可以生成图片。于是就想到了,在java程序中,执行python指令生成图片。2、方法:在这里做一个测试,通常我们可以在cmd中,使用javac来编译java源文件,生成.class字节码文件。现在我们在java程序中,来编译这个java源文件,让它生成.class文件。import java.io.*;import java.util.List;import ja原创 2020-07-19 10:48:30 · 362 阅读 · 3 评论