![](https://img-blog.csdnimg.cn/2020031617524337.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
文章平均质量分 85
记录关于 Java 的各种技术点以及日常 bug 解决
南独酌酒nvn
这个作者很懒,什么都没留下…
展开
-
使用EasyPoi完成复杂一对多excel表格导出功能
文章目录业务需求需求难点通过 EasyPoi 实现需求具体实现业务需求从一个简单的仓库业务说起,仓库业务,会有进库记录,会有出库记录,会有库存,客户的需求就是需要一个库存盘点单,盘点单通俗来讲:将库存中每个商品的出入库记录都统计出来,看看每个商品出过多少货物,入过多少货物,本月库存多少,上月库存多少。需求难点一个货物会出过多次货物,入过多次货物,导出的 excel 就要做成 一对多 格式的导出简单举例:啤酒:入库2次,出库3次,最终体现在 excel 中效果如下图:通过 EasyPoi 实现原创 2021-06-03 11:08:26 · 8967 阅读 · 35 评论 -
史上功能最全的Java权限认证框架
文章目录Sa-Token是什么?Sa-Token 能做什么?代码示例官网地址sa-token 使用示例SpringBoot 环境1. 创建项目2. 设置jar包依赖3. 配置文件4. 启动类5. 运行Sa-Token是什么?sa-token是一个轻量级Java权限认证框架,主要解决:登录认证、权限认证、Session会话、单点登录、OAuth2.0 等一系列权限相关问题框架针对踢人下线、自动续签、前后台分离、分布式会话……等常见业务进行N多适配,通过sa-token,你可以以一种极简的方式实现系统的原创 2021-03-12 11:12:08 · 2219 阅读 · 0 评论 -
自定义注解通过反射实现Excel的导出功能(提供项目源码)
文章目录POI 导入依赖自定义 @ExcelProperty 注解自定义 ExcelConstants 常量常用类自定义Excel操作工具类测试阶段创建导出 Excel 相关测试的实体类添加 thymeleaf 依赖添加 StudentController 控制器编写导出 excel 接口在 resources/templates 资源目录下创建index.html 文件测试效果截图重复造轮子,通过造轮子可以明白轮子是怎么形成的,会全面提升我们自身的学习能力项目源码地址:https://gitee.co原创 2021-01-19 18:26:04 · 706 阅读 · 3 评论 -
【Java 实现微信支付、Native 支付流程】,从编写代码到支付成功,一步到位!
文章目录1. 项目环境介绍2. 微信支付文档2.1 业务流程说明3. 准备信息3.1 微信公众账号如何获取?3.2 商户号如何获取?3.3 API密钥如何获取?3.4 准备工具类4. 进入开发阶段4.1 后端编写`生成微信支付二维码`的接口4.2 前端实现4.3 后端编写 `查询订单支付状态` 接口4.4 前端调用 `查询订单支付状态` 接口总结1. 项目环境介绍jdk 1.8mysql 5.7maven 3.6项目前后端分离:后端 SpringBoot 项目、前端 Vue 项目2. 微信支付原创 2020-10-17 14:30:03 · 3742 阅读 · 27 评论 -
Java 实现查看cpu信息、服务器信息、操作系统信息、jvm 信息
文章目录引入依赖获取 cpu 信息获取服务器信息formatByte 换算单位工具类获取操作系统信息获取 JVM 信息测试结果Java想要实现跨平台查看服务器信息,可以使用 OSHI 开源 jar 包实现引入依赖<dependency> <groupId>com.github.oshi</groupId> <artifactId>oshi-core</artifactId> <version>3原创 2020-09-28 22:12:01 · 1731 阅读 · 3 评论 -
Java 删除文件和文件夹
/** * 删除文件,可以是文件或文件夹 * * @param path 待删除的文件 * @return 成功与否 */ public static boolean delete(String path) { File file = new File(path); if (!file.exists()) { log.error("删除文件失败:{}文件不存在", path); .原创 2020-09-25 16:00:00 · 293 阅读 · 0 评论 -
Java 获取文件的上级目录
通过 File 对象的 getParent 方法即可实现// 通过 System.getProperty("user.dir") 方式获取到项目根目录String projectRootDirectoryPath = System.getProperty("user.dir");System.out.println("当前项目根目录为:\t" + projectRootDirectoryPath);// 通过 File 对象的 getParent() 方法获取到根目录的上级目录String par原创 2020-09-25 14:38:43 · 5097 阅读 · 0 评论 -
Java 长度不足左位补0的3种方法
文章目录通过 String.format 方式来进行左位补零操作通过 NumberFormat 方式来进行左位补零操作使用循环实现左位补零操作效果截图通过 String.format 方式来进行左位补零操作// 1为 int 类型、0代表前面要补位的字符、2代表字符串的长度、d表示参数为整数类型String s = String.format("%02d", 1);System.out.println(s);通过 NumberFormat 方式来进行左位补零操作// 首先通过 getInsta原创 2020-09-25 14:20:36 · 30841 阅读 · 1 评论 -
Java 实现文件写入
1. 通过 System.getProperty(“user.dir”) 获取到项目根目录2. 通过路径拼接,找到你要写入的文件文件找到:会覆盖原来的文件内容并写入写的内容文件未找到:直接创建一个新的文件,并写入内容3. 通过 OutputStreamWriter 对象操作4. 通过 write() 方法向文件中写入内容5. 最后释放流 String filePath = System.getProperty("user.dir"); String path = file原创 2020-09-24 14:23:18 · 1210 阅读 · 0 评论 -
Java 实现文件读取
文章目录创建测试文件读取文件的步骤1. 首先获取文件的路径2. 拼接你要读取文件的路径3. 读取文件4. 释放流创建测试文件在项目的根目录下创建一个测试文件.txt文件位置和 src 属于同级目录读取文件的步骤1. 首先获取文件的路径在任何地方都有可能读取文件,但是文件的路径又不能保证一直都在同一个位置,为了解决这种问题,我们将文件存放在项目中,跟随着项目,这样我们可以通过一种方式来实时的获取到项目的根目录。可以通过 System.getProperty("user.dir") 获取到项目原创 2020-09-24 14:10:46 · 632 阅读 · 0 评论 -
Java 中 BigDecimal 类型详解
以此文章记录自己的学习过程文章目录备注BigDecimal 的加减乘除BigDecimal 比较大小使用 BigDecimal 的注意事项备注对于不需要任何准确计算精度的数字可以直接使用 float 和 double,但是如果需要精度计算的结果,则必须使用 BigDecimal 类,而且使用 BigDecimal 类也可以进行大数的操作。BigDecimal 的加减乘除BigDecimal num1 = new BigDecimal("10");BigDecimal num2 = new B.原创 2020-08-29 10:48:34 · 1048 阅读 · 0 评论 -
Java工作中常用方法总结
文章目录copy 数组方法进制转换方法copy 数组方法Arrays.copyOfRange(T[ ] original,int from,int to)目标数组,开始位置,结束位置从 from 开始到 to 复制出一个新的数组进制转换方法int a = Integer.parseInt("ff", 16);要转换的字符串,转换的进制数可以将 ff 16进制转换为 10 进制数...原创 2020-08-08 10:49:34 · 255 阅读 · 0 评论 -
Java 实现 crc modbus 16 位校验算法
应用场景工作中因需要对采集的数据进行下 crc 校验,方法代码如下所示:/** * 查表法计算CRC16校验 * * @param data 需要计算的字节数组 */ public static String getCRC(byte[] data) { byte[] crc16_h = { (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0原创 2020-08-08 10:43:56 · 923 阅读 · 0 评论 -
JAVA如何计算字符串公式
JAVA如何计算字符串公式解决方案一:使用 commons-jexl3 jar 包解决方案二:使用 JDK 底层调用 javaScript 的运算公式 (推荐使用)解决方案一:使用 commons-jexl3 jar 包可以使用 commons-jexl3 jar包,此 jar 包提供了一些方法用于计算字符串中的公式。maven 依赖如下:<dependency> <groupId>org.apache.commons</groupId> <artifa原创 2020-08-05 18:23:44 · 8420 阅读 · 2 评论 -
Java 中一个元素在集合中如何忽略自己循环比对是否存在相同元素
Java 中一个元素在集合中如何忽略自己循环比对是否存在相同元素代码如下: /** * Java 中一个元素在集合中如何忽略自己循环比对是否存在相同元素 */ @Test public void test02() { // 1. 准备好要比较的集合 List<Integer> list = new ArrayList<>(); // 2. 可以看到集合中只有 1002 是重复存在的原创 2020-08-04 09:20:55 · 590 阅读 · 0 评论 -
Java如何实现二维码?【附源码】
文章目录步骤1步骤2工具类1 (BufferedImageLuminanceSource)工具类2 (QRCodeUtil)启动类效果截图源码奉上步骤1第一步首先创建一个普通的 Maven 项目,然后要实现二维码功能,我们肯定要使用别人提供好的 Jar 包,这里我用的是 google 提供的 jar,pom.xml 文件配置如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org原创 2020-07-04 09:27:18 · 4506 阅读 · 15 评论 -
Java中的注解
什么是注解Annotation 是从 JDK5.0 开始引进的新技术Annotation 的作用:不是程序本身,可以对程序做出解释(这点和注释(comment)没有区别),可以被其他程序(比如:编译器)读取3.Annotation 的格式:注解是以@注释名在代码中存在的,还可以添加一些参数值,例如:@SuppressWarnings(value=“unchecked”)4.Annotation 在哪里使用?可以附加在package,class,method,field 上面,相当于给他们添加了额外原创 2020-06-13 13:04:39 · 392 阅读 · 0 评论 -
多线程之线程池
线程池背景:经常创建和销毁、使用量特别大的资源,比如并发情况下的线程,对性能影响很大。思路:提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池子中。可以避免频繁的资源消耗,实现了重复利用。好处:提高响应速度(减少了创建新线程的时间),降低了资源消耗(重复利用线程池中的线程,不需要每次都创建),便于线程管理(例如常可以对其设置池子的大小,最大线程数,没有任务时线程保持多久会自动终止等等。)使用线程池...原创 2020-06-07 22:05:09 · 380 阅读 · 0 评论 -
多线程之Lock锁
Lock锁从JDK5.0开始,Java提供了更强大的线程同步机制,通过显示定义同步锁对象来实现同步。同步锁使用Lock对象充当。java.util.concurrent.locks.Lock 接口时控制多个线程对共享资源进行访问的工具。锁提供了对共享资源的独占访问。每次只能有一个线程对 Lock 对象加锁,线程开始访问共享资源前都应先获得Lock对象。ReentrantLock 类实现了...原创 2020-06-07 21:27:38 · 1109 阅读 · 0 评论 -
多线程之守护线程
守护线程 daemon线程分为用户线程和守护线程虚拟机必须确保用户线程执行完毕虚拟机不用等待守护线程执行完毕如.后台记录操作日期,监控内存,垃圾回收等待等等下面通过代码来演示一下守护线程package org.javaboy;/** * @Author: bai * @DateTime: 2020/6/7 19:06 */// 测试守护线程public class TestDaemon { public static void main(String[] args) {原创 2020-06-07 19:21:15 · 277 阅读 · 0 评论 -
多线程之线程礼让
线程礼让线程礼让的几个特点:礼让线程,让当前正在执行的线程暂停,但不阻塞将线程从运行状态转为就绪状态让cpu重新调度,礼让不一定成功!看cpu心情下面通过代码实现一下线程礼让:package org.javaboy;/** * @Author: bai * @DateTime: 2020/6/6 21:12 */public class TestYield { public static void main(String[] args) { MyYield原创 2020-06-06 21:23:29 · 714 阅读 · 0 评论 -
Java 实现冒泡排序
一句话让你记住冒泡排序外层循环 n - 1 ,内层循环 n - 1 - i升序或者降序你需要在判断的时候选择 > 或者 << 符号是降序(从大至小)> 符号是升序(从小至大) // 冒泡排序 @Test public void testMPPX() { // 首先声明一个数组 int[] nums = {1, 5, 88,...原创 2020-05-08 12:57:39 · 274 阅读 · 0 评论 -
纳尼?Java种的重载还有静态绑定这种说法?
流量如水,文章就是一个瓶子,标题是瓶口,内容是瓶身。 瓶子装水有多快依赖瓶口大小,瓶子装水有多少依赖瓶身大小。深入理解Java重载什么是重载?什么是重载?在同一个类中,如果多个方法有相同的方法名称,不同的参数类型,参数个数,参数顺序,即称为重载,比如一个类中有多个构造方法。String 类中的 valueOf 是比较著名的重载案例,它有9个方法,可以将输入的基本数据类型、数组、Obje...原创 2020-03-18 10:41:12 · 94 阅读 · 0 评论 -
UnsupportedOperationException异常是什么原因导致的呢?
流量如水,文章就是一个瓶子,标题是瓶口,内容是瓶身。 瓶子装水有多快依赖瓶口大小,瓶子装水有多少依赖瓶身大小。为什么操作集合会发生UnsupportedOperationException异常测试环境在 Eclipse 中测试的代码异常解释测试环境JDK 1.8开发工具 Eclipse在 Eclipse 中测试的代码代码解释:首先创建一个 myTest 测试类,我进行的单元测...原创 2020-03-11 22:00:49 · 4041 阅读 · 0 评论