- 博客(35)
- 收藏
- 关注
原创 导出excel带水印
需要一些前置知识(一些基本知识)导出excel带水印:前置知识1 BufferedImage和ImageIO导出excel带水印:前置知识2 Graphics2D用法导出excel带水印:前置知识3 ByteArrayOutputStream导出excel带水印:前置知识4 BigExcelWriter导出excel带水印:前置知识5 POI包前端代码就不贴,直接看页面开始看后端代码搜索类NjryTaskInfoQueryCriteriapackage com.njry.sjzl.b
2024-05-20 16:34:58 697
原创 导出excel带水印:前置知识5 POI包
即“讨厌的电子表格格式”HSSF 是 POI 的子项目,用于处理 Excel 97-2003 格式(.xls 文件)。它允许您读取、创建和修改 Excel 文档,包括工作簿、工作表、单元格、公式等。:XSSF 是 POI 的子项目,用于处理 Excel 2007及更高版本的 XLSX 格式(基于XML的文件格式)。它支持读取和写入 XLSX 文件,并提供了对新 Excel 特性的支持。:HWPF 是 POI 的子项目,用于处理 Word 97-2003 格式的文档(.doc 文件)。
2024-05-20 16:27:20 815
原创 导出excel带水印:前置知识4 BigExcelWriter
参考地址BigExcelWriter(ExcelWriter的升级版)详解说起BigExcelWriter不得不说一下他的父亲ExcelWriterExcel 写入器ExcelWriter用于通过POI将数据写出到Excel,此对象可完成以下两个功能编辑已存在的Excel,可写出原Excel文件,也可写出到其它地方(到文件或到流)新建一个空的Excel工作簿,完成数据填充后写出(到文件或到流)对于大量数据输出,采用ExcelWriter容易引起内存溢出,因此有了BigExcelWriter。
2024-05-20 16:26:40 815
原创 导出excel带水印:前置知识3 ByteArrayOutputStream
在网络传输中我们往往要传输很多变量,我们可以利用ByteArrayOutputStream把所有的变量收集到一起,然后一次性把数据发送出去。如上所示,ByteArrayOutputStream把内存中的数据读到字节数组中,而ByteArrayInputStream又把字节数组中的字节以流的形式读出,实现了对同一个字节数组的操作.ByteArrayOutputStream: 可以捕获内存缓冲区的数据,转换成字节数组。先看ByteArrayOutputStream类源码。一个简单例子(初窥法门)
2024-05-20 16:25:52 258
原创 导出excel带水印:前置知识1 BufferedImage和ImageIO
项目用到创建画笔对象(开始 Graphics2D 的使用)// 获取图片的宽高// 图片裁剪// 创建画笔对象。
2024-05-20 16:23:29 119
原创 HSSFWorkbook apache.poi设置行高和获取行高
poi中的行高单位和excel的行高单位是不一样得,excel中的行高单位是pt(point,磅)而poi中的行高单位是twips(缇)dpi(或ppi)表示分辨率,即pixel(dot) per inch,每英寸的像素(点)数。导入excel中行高最多为409pt,也就是409*20= 8180twips。pt是绝对长度,表示point(磅),是印刷行业常用单位,等于1/72英寸。px是相对长度,表示pixel(像素),是屏幕上显示数据的最基本的点。此外,px和pt,twips的换算公式是。
2024-05-16 15:35:48 301
原创 poi低版本工具类换成poi5.2导出excel表头
之前写的低版本poi 3.8工具是可以用,但是在导出的时候出现问题所以还是得用高版本工具,原来低版本链接poi低版本导入excel表头问题在处理Excel文件时,您可能已经使用了Apache POI库。然而,在使用过程中,您可能会遇到一个常见的错误:java.lang.NoSuchFieldError:Factory。这个错误通常意味着在运行时环境中存在类路径问题或不同版本的POI库冲突解决办法我把之前低版本poi 3.8 兼容删除,把里面工具类都换成5.2最新的工具类ExcelColorHe
2024-05-11 19:13:50 760
原创 用户登录后端:登录密码解密后用PasswordEncoder验证密码是否正确
这只是用户登录处理简单处理,重头戏是Security认证流程用户登录:断点看流程认证。
2024-05-11 14:28:48 324
原创 用户登录后端:验签
前端请求拦截器工具类 cryptomd5Util.jsconst crypto = require('crypto')const publicKey = 'xxxx'export function encryptedHmacMd5Data(appid, data, timestamp) { const hmac = crypto.createHmac('md5', publicKey) let params = data if (typeof data === 'object') {
2024-05-10 20:39:25 942
原创 PasswordEncoder详解
PasswordEncoder是一个密码解析器Spring Security封装了如bcrypt, PBKDF2, scrypt, Argon2等主流适应性单向加密方法( adaptive one-way functions),用以进行密码存储和校验。
2024-05-10 11:46:29 641 1
原创 JAVA POI 把execl树形结构转成多叉树结构返回JSON字符串给前端
好文章原文复制(我只是传播者),直接去看原文(我至今还不会使用,写死的实现了)
2024-05-09 20:01:52 219
原创 poi低版本导入excel表头
参考引入低版本的poi不和原来项目高版本冲突定义两个实体类HeaderCell和HeaderRegionpackage com.njry.domain.vo;import lombok.Data;/** * @description 标题的单元格属性 * @author 大佬 * @date 2015-10-16 */@Datapublic class HeaderCell { private int rowIndex; //
2024-05-09 19:27:14 452
原创 最佳解决Maven同一依赖多版本共存问题,重复依赖(同一个jar包,多个版本)-maven-shade-plugin
如果配置了maven_home 和java_home可以任意打开cmd执行(我的是在apache-maven的bin下执行的)-Dfile=D:\mavenrepository/maven-shade.jar 是指定重新生成的jar(放的位置)找到这个文件看看是不是在自己项目的本地仓储中(我的就不一致,手动移动到本地仓储)参照原文链接生成的文件(下面是我放的位置)然后就可以在项目pom中引入,例如我的。执行指令后看log最后生成的位置。
2024-05-09 09:15:41 437
原创 row_number 实际基本应用
之前错误的是根据username修改,发现之前所有锁记录都修改了,我们只需要修改当前锁时间。项目用户登录锁可以锁多次,只想修改超过当前时间的锁截止时间。先使用row_number看看效果。当前表数据(存在相同用户锁)开始使用row_number。最终修改最新一条锁的指定时间。
2024-05-06 13:53:30 288
原创 Row number 函数用法
综上所述,这段代码的用途是在每个由username定义的分区中,为每行分配一个唯一的序列号,而且这个序列号是按照lock_date_end进行排序的。如果你有一个包含多个username值的表,这个查询将返回每个username值对应的行的序列号,且每个username内部的行是按照lock_date_end排序的。需要注意的是,这里的排序不会影响ROW_NUMBER()分配的序列号,它仅仅是分区内部行的顺序。ROW_NUMBER(): 这是一个窗口函数,用于分配一个唯一的序列号给每个窗口内的行。
2024-05-06 10:25:28 292
原创 orcale使用递归(测试)
在看基本例子时候我就迷糊了让我们解释一下这个查询:START WITH parent_id = :your_parent_id:这个子句指定了起始节点的条件。:your_parent_id 是你要查询的起始节点的值。CONNECT BY PRIOR child_id = parent_id:这个子句建立了父子节点之间的连接关系。它告诉数据库如何递归地沿着父子关系遍历数据。在这个例子中,它指定了子节点的 child_id 等于父节点的 parent_id。看完gtp的解释更迷糊了表结构。
2024-04-29 21:28:23 333
原创 @TableField(fill = FieldFill.INSERT)
TableField 注解表示该字段是数据库字段,支持的属性包括:value、exist、el、condition、update、insertStrategy、updateStrategy、whereStrategy、fill。@TableField(fill = FieldFill.INSERT) 是 MyBatis-Plus 中的注解,用于设置实体类中对应的字段在插入时需要自动填充。为了在插入数据时自动填充这个字段,你需要实现一个字段填充的拦截器MetaObjectHandler。
2024-04-25 21:21:04 543 1
原创 SpringBoot统一参数校验
在日常的开发中参数校验是非常重要的一个环节,严格参数校验会减少很多出bug的概率,增加接口的安全性。也会减少对接时不必要的沟通。比如说:在对接的时候前端动不动就甩个截图过来说接口有问题,你检查了半天发现前端传递的参数有问题。针对以上:今天给大家分享一下SpringBoot如何实现统一参数校验。
2024-04-25 15:49:41 912 1
原创 oracle中的数据类型:varchar2(byte)和varchar2(char)
当数据库字符集为 AL32UTF8 时,一个汉字是一个字符,一个汉字占3个字节,varchar2(2 byte) 一个汉字也不能存,varchar2(2 char) 能存2个汉字。当数据库字符集为 ZHS16GBK时,一个汉字是一个字符,一个汉字占2个字节,varchar2(2 byte) 能存1个汉字,varchar2(2 char) 能存2个汉字。如果该参数的值为 byte ,则 varchar2(2) 等同于 varchar2(2 byte),这是默认情况。
2024-04-25 15:31:04 327 1
原创 Java反射中method.isBridge() 桥接方法
桥接方法是 JDK 1.5 引入泛型后,为了使Java的泛型方法生成的字节码和 1.5 版本前的字节码相兼容,由编译器自动生成的方法。我们可以通过Method.isBridge()方法来判断一个方法是否是桥接方法。因为泛型是在1.5引入的,为了向前兼容,所以会在编译时去掉泛型(泛型擦除)。那么SuperClass接口中的method方法的参数在虚拟机中只能是Object。这怎么回事,其实虚拟机自动实现了一个方法。这个void method(Object s) 就是桥接方法。
2024-04-25 10:28:22 225 1
原创 用户登录1.请求接口2.登录成功数据处理
在login.vue文件引用加密工具加密前端入参(utils下的rsaEncrypt.js)前端入参(login.vue)登录成功的数据前端入参(store用到的@/utils/auth)登录成功数据处理( token,user,roles,loadMenus)router处理(用token,loadMenus)登录成功后就会跳转(router下面的router.js一开始写死的基本路由)通过有没有token,用户角色是否存在,是不是第一次加载去动态加载菜单和基本写的router融
2024-04-24 11:23:06 338
原创 JSON_CONTAINS的报错
前端筛选传入label的uuid构成的数组,例如:[“157D55CD26D043DEBE0E2A336A6E588D”,“199B4DA365BD4125ABC43562C281F6C0”],,里面uuid都是32位,一个任务可以有多个标签,后台怕逗号分割存不下多个标签的uuid,所以任务表。我后台mapper.xml代码(where后面只是单单加了labelList筛选处理)后端要在sql中遍历循环 json中判断任务表。的label是否包含这些多选的标签,自己写死数据测试一下(方法好用)
2024-03-19 17:15:13 135
原创 测试@Transactional(rollbackFor = Exception.class)是否有效
再次把controller上面@Transactiona去除再重复上面步骤。放行debug,控制台一堆报错,看不懂。直接去sql验证数据还在不在。在数据库中检验是否有前端写得的任务id。项目里添加事务的controller层。前端写死一个任务id。
2024-03-14 14:12:16 188
原创 mysql的EXISTS理论
当子查询返回的结果集较小,且主查询表中的字段和子查询表中的字段相同时,使用 where in 可以提高查询效率;当子查询返回的结果集较大,或者主查询表和子查询表中的字段不一致时,建议使用 exists。使用场景的区别也很明显。在这个查询中,子查询返回了所有与顾客相关联的订单ID,主查询将返回匹配的客户ID和名称。EXISTS的作用是检查子查询返回的结果是否存在,如果存在,返回主查询中指定的列。在SQL中,EXISTS的主要用途是检查子查询是否返回结果,从而帮助我们编写更加高效的查询语句。
2024-03-11 16:21:42 494
原创 left join 后面on的条件筛选关联有必要多个吗
ON条件是生成临时表时使用的条件(仅在关联右表查询时对右表筛选起作用,无论条件是否为真都会返回左表所有记录)WHERE条件是生成临时表后使用的条件(对生成的临时表再次进行条件过滤,此时条件筛选对全表有效,条件不为真就会过滤掉既然始终left jioin返回左表全部值,我多右表条件筛选还有啥用啊left join 后面on的条件筛选关联有必要多个吗。
2024-03-11 14:51:06 219 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人