自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(214)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 Java实现Excel导入和导出,看这一篇就够了(珍藏版)

前言最近抽了两天时间,把Java实现表格的相关操作进行了封装,本次封装是基于POI的二次开发,最终使用只需要调用一个工具类中的方法,就能满足业务中绝大部门的导入和导出需求。环境准备1. Maven 依赖本次工具类的封装主要依赖于阿里巴巴的JSON包,以及表格处理的POI包,所以我们需要导入这两个库的依赖包,另外,我们还需要文件上传的相关包,毕竟我们在浏览器页面,做Excel导入时,是上传的Excel文件。<!-- 文件上传 --><dependency>

2021-12-20 19:01:30 49613 261

原创 Java常用技术:Httpclient 实现网络请求 + Jsoup 解析网页(案例实战)

【前言】你是否也曾羡慕过有些 phython 大神有着如下的神操作:他们就轻轻的执行一串代码,就能循环的抓取很多自己想要的数据。其实不用太羡慕他们,因为不光 phython 能实现,我们用 Java 同样也能够轻松实现。闲话不多说,下面我们直接开始实战:【1】创建项目(1.1)我们用 IDEA(Eclipse同理) 创建一个全新的maven工程,我这里取名工程名 zyqok,各位随意。(1.2)在 pom.xml 里面加上<dependencies>.

2020-08-07 17:57:48 2474 18

原创 一看就懂:阿里云 OSS

【前言】在如今的互联网行业中,华为、百度、腾讯、阿里等大公司逐渐傲视群雄,规模越来越大。这些大佬公司深知互联网行业的各种弊端,逐渐延伸出很多服务,专门给了广大中小公司提供便利。比如,你的公司开发一个系统,要用到人脸识别技术。一般公司是不会自己去开发一套的,那个耗时又费力。但这些服务,这些大佬公司早就开发好了,你只需要付点费用,调用他们相关接口就可以实现了。像这样的服务还有很多,...

2019-09-29 16:40:15 51323 43

原创 网站开发:从写代码到公网访问整个流程(CSDN征文活动第一期获奖文章)

【获奖感言】2019年7月18日感谢CSDN给了我这个殊荣,让我这篇文章在CSDN征文活动第一期的获奖!当初并未想过获得这个荣誉,只是想好好总结,从而帮助更多的朋友!谢谢CSDN! !谢谢所有点赞朋友的支持!!获奖名单出处:https://blog.csdn.net/blogdevteam/article/details/94545970-------------------...

2019-07-08 18:03:21 5903 25

原创 Springboot项目搭建(前端到数据库,超详细)

下面详细谈谈我的第一个springboot项目搭建,希望会给还在摸索的同学一点帮助。项目说明:开发环境:Eclipse 4.42框架:Springboot工具:Maven前端:Html、Thymeleaf后台:Hibernate数据库:Mysql为什么要搭建Springboot项目?教科书式的阐述这里就不说了,我就总结为两个词语 “简单、方便”。为了更...

2019-02-11 14:40:32 121807 182

原创 Java 对象深拷贝工具类

我们在Java编码中,有时候可能会经常遇到对象拷贝的场景。比如(1)当我们更新一个对象的时候,如果要记录对象属性的前后变化,那么在更新对象之前,我们应该首先将对象拷贝暂存起来,且这个时候的拷贝一定是深拷贝(内存地址不同的两个对象),因为Java存在对象引用,将一个对象赋值给另外一个对象,他是浅拷贝的(两个不同变量名,但实际内存地址一样的两个对象)的话,也就是说当我们去更新完成属性值的时候,其实是设置的同一个对象,那么这个时候就会导致更新前后无变化的情况。............

2022-07-19 16:12:11 1338 6

原创 Java 解析 zip 压缩包,并获取文件内容

页面上传一个源码压缩包,后端将压缩包解压,并获取每个文件中的内容。(1)首先定义一个与解压文件对应的实体类。(2)接下来就是解压的工具类了。工具类中提供了两个解压的方式:方式一:本地文件 File 进行解压。方式二:上传文件 MultipartFile 进行解压。我们以上传压缩包解析为例,通过 Postman 进行接口测试,解析的结果如下。...

2022-07-13 10:07:13 1114 3

原创 Java:获取文本字符串的每一行数据

首先,定义一个实体,实体包含行号和内容两个属性;调用下面方法即可:测试代码:测试效果:

2022-07-11 15:57:30 144

原创 Java 时间工具类(珍藏版)

肝了两天,重新整理了下时间工具类,以后我就以该时间工具类进行项目开发了,后会不定期更新功能,也欢迎留言需求,让工具类不断的完善。

2022-06-20 17:54:58 764 3

原创 手写 @Valid 字段校验器

上次给大家讲述了 Springboot 中的 @Valid 注解 和 @Validated 注解的详细用法:@Valid 和 @Validated 注解用法详解当我们用上面这两个注解的时候,需要首先在对应的字段上打上规则注解,类似如下。@Datapublic class Employee { /** 姓名 */ @NotBlank(message = "请输入名称") @Length(message = "名称不能超过个 {max} 字符", max = 10)

2022-05-07 11:26:49 246

原创 Java工具类:CompareUtils(比较对象字段值变化)

目录前言示例引入工具文件CompareUtilsCompareCompareNode前言我们在工作中,可能会在日志中记录数据的变化情况,这样可以有助于运维人员对问题排查。或者在公共处理的数据增加一个日志页面,记录每次修改的变化。比如:小王在 2022-05-05 23:58:27 时间点修改了年龄,把 28 改为了 18), 这样也可以方便用户的数据追踪,这样公共数据一旦出了问题,我们从日志进行跟踪,那么最后是谁造成的,也就一目了然。可见,展示字段值的变化..

2022-05-06 13:49:41 1993 2

原创 一看就懂:正则表达式

案例引入在讲正则表达式前,我们不妨先从一个场景来逐渐引入。你可能有过这样的经历:我们去某些网站注册帐号,当你在设置密码的时候,网站会提示你密码的长度范围,以及对应的规则限制(如下图)。根据上图,我们将密码设置规则可以描述为两个条件:(1)长度为6-16位;(2)密码中必须包含数字,大写字母,小写字母,特殊字符(指定字符);现在假设我们不知道正则表达式,作为程序员的你,该如何去实现这样一个密码验证呢?下面是我写的一个校验方法(样本):/** * 校验用户密码是否满足..

2022-03-25 18:09:23 48560 54

原创 SVN 使用详解(创建仓库,数据提交,分支创建与合并等)

现在版本控制工具常用的有 GIT 和 SVN,今天,我们就来分享下 SVN 下如果创建分支与合并分支。首先,我们需要在我们的计算机上安装SVN的客户端(该步骤略)。创建 SVN 仓库SVN 是个版本控制工具,要想通过它来管理我们的文件,首先需要创建一个 SVN 仓库。这个 SVN 仓库类似于我们的数据库,它将保存我们管理的所有文件。这个仓库你创建在计算机本地,就叫做本地仓库;如果你创建在远程计算机或者网络上,那就叫做远程仓库。本地仓库和远程仓库的访问方式一样,无非在拉取文件时,本地仓库填写的是本

2022-01-18 17:10:26 1385

原创 Java实现在图片上添加文字(水印)

今天分享一个:通过Java代码,给图片添加文字。比如下面这个图片,我们在左下角就添加了一个文字版的水印,那么这是如何实现的呢 ?目录【1】获取原图片对象(1.1)读取本地图片(1.2)读取网络图片【2】创建画笔【3】添加文字水印(3.1)如何确定水印位置 ?【4】获取处理图片【5】源代码【1】获取原图片对象首先,第一步,肯定是要让我们的程序,拿到需要处理的图片。我们程序获取图片的方式,通常有两种,一种是通过下载到本地,从本地读取;另外一种就是通过网

2022-01-12 16:26:20 4302

原创 Springboot 集成 Elasticsearch 详解

目录集成配置步骤步骤1:加入 Maven 相关依赖步骤2:配置 elasticsearch 的主机和端口步骤3:配置 Elaseticsearch 客户端步骤4:创建文档实体步骤5:创建 controller,service, dao 层相关功能实现1. 添加文档2. 修改文档3. 根据ID查询文档4. 根据ID删除文档5. 查询所有文档6. 条件查询(单个条件)7. 条件查询(多条件)8. 分页查询(降序)9. 分页查询(升序)...

2021-12-10 16:57:24 9031 8

原创 浏览器如何截图整个滚动屏 ?

【1】将浏览器滚动条滚动到顶部。【2】按下 F12 ,打开开发者窗口(方式二:鼠标右键,点击【检查】)。【3】按下 Ctrl + Shift + P,弹出浏览器指令窗口。【4】在指令窗口中输入:Capture full size screenshot,选择对应项。【5】这时候浏览器就会触发下载整个浏览器整个长屏页面了。【6】下面是效果图。...

2021-11-11 21:08:26 6725

原创 Java 工具类:SqlFileCompareUtils(比较数据库表和字段变化)

【产生背景】我们在实际开发的过程中,通常会有开发环境、测试环境、生产环境等。在这些环境中,一般会有各自对应的数据库,由于每次新需求都是在测试环境中进行的测试,所以就会导致不同环境的数据库结构有不同。当新一版本的功能在测试环境测好后,需要将新功能更新至生产环境,此时,生产环境数据库结构就需要再一次和测试环境数据库结构保持一致,才能保证新功能正常使用。【数据库比较】当我们想知道两个数据库的有哪些变化时候,如果每张表,每个字段的去比较,当在变化很大的时候,这将会是一个很不友好的体验,不但耗时耗

2021-11-04 15:30:03 10339

原创 工具方法:一次性将对象中所有null字段,转为空字符串

当我们的 Java 对象在响应前端,或者在做数据导出的时候,我们并不希望将对象中为 null 的属性值直接返回给前端,不然显示或导出的就是一个 null ,这样对用户不是很友好。如果我们一个个字段的去处理,这样不但增加了人力,而且使得代码中逻辑冗余,显得不够优雅。于是下面我写了一个通用方法:将对象中的 String 类型属性的null 值转换为空字符串的方法,具体代码如下:/** * 把对象中的 String 类型的null字段,转换为空字符串 * * @param &lt..

2021-10-25 11:32:29 3691 1

原创 Springboot 如何确定程序的应用类型 WebApplicationType ?

Springboot 启动的时候,

2021-09-27 19:05:09 1430

原创 @Accessors 注解详解

前言 1. @Accessors 源码 2. @Accessors 属性详解 2.1 fluent 属性 2.2 chain 属性 2.3 prefix 属性前言在你的工作中,有时候可能会看到@Accessors(chain = true)这样的注解,他是 lombok 插件包中的一个注解,那么它是什么意思呢?1. @Accessors 源码我们打开@Accessors 的源码可以看到:(1)该注解主要作用是:当属性字段在生成 getter 和 setter 方法...

2021-08-30 16:12:14 21473 9

原创 Yml转properties文件工具类YmlUtils(不用引任何插件和依赖)

【诞生背景】最近在做某配置中心的时候,配置中心采用porperties格式进行配置的(如下图)。而我们工程的项目配置文件是yml格式的(如下图)。如果人为手动的一条一条,将yml文件中的配置数据,添加到配置中心,难免会消耗大量的人力和精力,况且还容易输入错误。因此,需要一个工具或插件,将 yml 文件的格式,转换为properties文件。【Convert YAML and Properties File 插件的不足】IDEA 有一个插件叫 Convert YAML and.

2021-08-24 10:59:03 4871 4

原创 Apollo + Springboot 整合(多环境版)

(1)Apollo 配置中心创建项目。(2)将对应环境的相关配置全部添加到配置中心,然后发布。(3)pom.xml 中加入依赖<dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>1.5.1</version>&l.

2021-08-20 15:19:54 1165

原创 Java 查看类图工具(手写小工具,不用引任何包和插件)

我们在进行源码学习的时候,经常要查看某个类的类图,虽然 IDEA 有自带的类图显示,但那也只是付费版,社区版的并不支持,而 Eclipse 是压根儿就没有,其实功能挺简单的,于是就自己写了一个查看类图小工具给分享给大家。先放效果图:从这效果图中,我们就很清晰的看到,ArrayList 的父类是 AbstractList,父接口有 List、RandomAccess、Cloneable、Serializable。而父类AbstractList 的父类是AbstractCollection...

2021-08-18 17:37:15 506 2

原创 @inherited 注解详解

1【问题引出】在 Springboot 项目中,通常会有一个启动类,而启动类中通常会有一个名为@SpringBootApplication 的注解(如下图所示),而此注解就是 Springboot 项目启动类的核心注解。我们打开@SpringBootApplication 注解源码,可以看到,在源码中有一个 @Inherited 的注解,那么这个注解,它的作用是什么呢?2【@inherited 源码】在了解该注解作用之前,我们不妨看看该注解的英文解释和源码定义,这样会更加有...

2021-08-17 09:27:50 5633 8

原创 Springboot 如何配置多环境配置文件?

在我们的 Springboot 项目中,通常会有一个 application.yml 或 application.properties 的文件,这是整个 Springboot 项目的核心配置文件,通常文件中包含着端口、程序名、数据源等重要信息的配置。但我们在实际开发的过程中,由于涉及多个环境,需要配置多套不同的配置。就拿数据库来说,分为测试环境配置和生成环境配置,他们的链接信息肯定是不一样的。那么,我们在实际的工作中,是如何来确保在对应环境下读取对应的配置信息呢?【方法1】一个配置文件包含多个环境

2021-08-10 16:27:43 3234

原创 Docker 配置阿里云镜像加速器

1. 登录阿里云,获取加速地址地址:https://cr.console.aliyun.com/cn-beijing/instances/mirrors打开上面地址,并授权登录(没有阿里云帐号则注册一个),复制加速器地址。2. 检查daemon.json是否存在进入你的docker所在的服务器,并进入 /etc/docker 目录,查看是否有 daemon.json文件,没有则创建该文件。相关命令:# 进入 /etc/docker 目录cd /etc/docker/# 查看列表ls#

2021-07-18 16:57:23 230 1

原创 小工具:表单参数转为json参数

package com.zyq.test;import java.io.UnsupportedEncodingException;import com.alibaba.fastjson.JSONObject;public class Test { public static String str = "trainid=76&customerid=27&coursename=222222222222222&projectname=SC9820A&type.

2021-06-28 10:33:55 476

原创 一键生成实体类建表SQL

package com.zyq.util;import java.lang.reflect.Field;import java.util.Date;import java.util.LinkedHashMap;import java.util.Map;import java.util.Objects;import com.zyq.entity.Command;import io.swagger.annotations.ApiModel;import io.swagger.annotat.

2021-06-25 08:05:43 637

原创 自定义常量注解@Desc

package com.zyq.annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/** * 通用配置注解 */@Target(ElementType.FIELD)@Retention(Retentio.

2021-06-25 07:46:16 546

原创 SpringBoot 程序启动后执行

spackage com.zyq.config;import org.springframework.boot.ApplicationArguments;import org.springframework.boot.ApplicationRunner;import org.springframework.stereotype.Component;/** * SpringBoot启动后,会执行下面 run 方法 * * @author Yuanqiang.Zhang * @si.

2021-06-10 09:14:23 465

原创 Springboot 自定义配置写法

配置类@Configuration@ConfigurationProperties("diy-config")public class DiyConfig { private String host; private String version; private String[] ips; private Developer developer; // setter、getter、toString 方法已省略}...

2021-06-07 16:46:49 192

原创 什么是稀疏数组?稀疏数组详解

【1】背景如下图所示,这里有一个 15 ×15 的棋盘,如果现在要让你通过编码的方式,让你将这盘棋局保存起来,你会怎么做呢?面对行列数据的保存,我相信大多人第一时间都会想到用二维数组进行保存。【2】普通数组保存棋盘数据比如,我们可以将棋盘进行抽象化,用一个 15 × 15 的二维数组来表示,然后用 0 表示空点,用 1 表示白子,用 2 表示黑子,于是就可以抽象为如下模样。于是,我们可以通过如下代码,将数据保存到二维数组中。/** * 将棋盘数据保存为二维数组 */.

2021-05-13 21:20:09 3042 7

原创 Eclipse 项目集成 lombok

(1)随便创建一个Maven工程,加入lombock的Maven依赖(这里以1.18.10版本举例);<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> &lt

2021-04-12 18:38:05 317 1

原创 小白学Java 第18课:多维数组

上一个课时,我们了解了数组,但上节课我们了解的数组叫做一位数组,因为他的成员只是单个维度的成员构成的,这节课,我们继续深入了解数组的高阶形式:多维数组。【1】导读我们来看下面这种情况:有6个小朋友(这里用ABCDEF表示),他们玩游戏分成了3个小组,其中A和B一组,C和D一组,E和F一组。由于ABCDEF都是单个字符,所有我们可以用 char 来表示他们的类型,我们用程序来表示他们,则可以为:// 组一char[] group1 = { 'A', 'B' };// 组二char[]

2021-02-22 10:54:54 274 7

原创 小白学Java 第17课:数组

【前言】在前面我们学习了字符串,他可以用来表示一句话,一个词语,或者一个单词,比如我们用7个String类型的变量可以分别表示出星期一到星期日:String mon = "星期一";String tue = "星期二";String wed = "星期三";String thur = "星期四";String fri = "星期五";String sat = "星期六";String sun = "星期日";但在我们实际生活中,这7个我们统称为一周,他们应该是一个整体,应该可以用一

2021-02-22 10:09:19 235

原创 小白学Java 第16课:字符串

【1】前言在以前的课时中,我们学习过8大基本数据类型,他们用来存储和表示各种对应类型的数据,但有一种数据类型,是我们之前还无法表示的,那就是字符串。比如“小白学Java”这几个字连在一起的字符串,我们该用什么类型去存储它,表示它呢?那么这里,我们就要用到字符串类型String了。字符串String类型,他就是一个万能型选手,除了可以表示字符串,他甚至还可以和大多数的数据类型相互间进行转换。因此它算是整个Java语言中,使用得最为频繁的数据类型了,所以今天这一课时也是非常重要的,大家要注意

2021-02-19 17:19:58 329 5

原创 小白学Java 第15课:方法介绍与调用

【1】main 方法在前面的课程中,我们已经知道了,所有执行的程序都是从一个 main 方法开始执行的。public static void main(String[] args) {}比如我们执行如下代码:public static void main(String[] args) { int a = 2; int b = 3; int c = a + b; System.out.println("a + b = " + c);}最后的输出结果为:假设我们现在

2021-02-19 13:18:55 326 6

原创 小白学Java 第14课:do while 循环

【相关链接】上一篇:小白学Java 第13课:while 循环下一篇:总纲:返回列表上节课我们学习了while循环,他的结构格式为:while(条件) { // 循环做事}由于程序代码是从上到下执行的,所以每次循环,都要先判断while后面小括号中的条件是否成立?如果成立,则做大括号中的循环事情;如果不成立,则不再执行循环中的事情。【1】什么是 do while 循环?所谓 do while 循环,我们从字面就不难理解,do 是“做”的意思,就是在循环的.

2021-02-19 11:04:00 277

原创 程序员必备:提升开发效率神器,强烈推荐 !!!

你还在到处找工具而头疼吗?你还在到处找资源而烦恼吗?你想打开浏览器就是下面这种开发页面吗?下面只需要1分钟,带你体验 CSDN 最新黑科技,打开浏览器就是满满的开发气息。【1】下载官方提供的浏览器插件(https://plugin.csdn.net/),选择 zip 版本【2】解压插件本地新建一个文件夹(比如我这里新建文件夹 csdn ),然后把刚刚的下载压缩包拖进去,解压到当前文件夹。【3】打开谷歌浏览器开放模式打开谷歌浏览器开放模式(chrome://exte

2020-11-03 11:47:05 8195 30

原创 一看就懂:JWT 的自述

【1】自我介绍大家好,我是JWT,但这是我的小名,我的全名叫做JSON Web Token。其实,从我的名字中大家可以看出,我通常被开发大大们拿来做 Web请求的 Token 使用。【2】我的出生背景在没有我出生之前,开发大大们在做 Web 项目的时候,通常是前后端一起写,然后将用户的数据(比如:userId)等信息存放在 session 里,这样用户每次发送请求过来,后端直接可以从 session 里取出 userId,从而知道是哪个用户发的请求了,从而进行该用户的相关操作。但..

2020-10-23 10:43:40 1098 2

考研单词5400汇总.xls

考研单词5400汇总

2021-10-18

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除