- 博客(56)
- 收藏
- 关注

原创 Java使用EasyExcel导出添加水印
当我们在Excel导出中添加水印时,我们可以采用一种方法,先将水印文字生成为图片,然后将这个图片设置为Excel的背景。这样的做法涉及到使用Java的Graphics2D来处理图片。但是需要注意的是,这种方式存在一个问题,就是在将导出的Excel再转换为PDF格式时,水印会消失。
2023-07-21 14:51:03
4912
6
原创 EasyExcel用模版导出动态表格
在工作中有这么一个需求就是导出一个表格,上面有学生的信息下面有一个表格记录学生每科的成绩,要导出这样一个表格我们要怎么做呢?其实很简单,可以用导出模版做到,Easyexcel已经有实现方法了,下面我们来一步一步的实现这个需求。
2024-04-11 17:04:57
958
1
原创 Cookie属性HttpOnly引起的漏洞解决方案
项目扫描的时候出一个漏洞,Cookie未配置HttpOnly标志。那HttpOnly是什么呢?Httponly是微软对cookie做的扩展。这个主要是解决用户的cookie可能被盗用的问题。在web应用中、JSESSIONID (Cookie)没有设置Httponly属性可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务。这里我是写一个拦截器,实现GlobalFilter,我们可以在拦截器中向Cookie中添加HttpOnly属性。
2024-03-06 10:05:07
793
原创 深入理解volatile关键字
volatile是 Java提供的一种轻量级的同步机制。Java包含两种内在的同步机制:同步块(或方法)和 volatile 变量相比于synchronized (synchronized常称为重量级)volatile是更轻量级的,因为它不会引起线程上下文的切换和调度。但是volatile变量的同步性较差,而且其使用也更容易出错。volatile会控制被修饰的变量在内存操作上主动把值刷新到主内存,JMM 会把该线程对应的CPU内存设置过期,从主内存中读取最新值。
2024-03-02 03:04:37
1073
原创 JAVA动态代理
在 Java 动态代理机制中接口和Proxy类是核心。这种JDK自带的类代理方式是非常常用的一种,也是非常简单的一种。基本会在一些中间件代码里看到例如:数据库路由组件、Redis组件等,同时我们也可以使用这样的方式应用到设计模式中。在中间件开发、设计模式中代理模式和装饰器模式等中得到应用。CGLIB不同于JDK,它的底层使用ASM字节码框架在类中修改指令码实现代理,所以这种代理方式也就不需要像JDK那样需要接口才能代理。在 CGLIB 动态代理机制中接口和Enhancer类是核心。
2024-03-01 22:02:10
890
原创 poi-tl导出复杂的动态表格
如果我们的word要导出这样一个动态表格。数据的场景是会变化的,我这个月可能有五个场景,下个月可能就只有4个场景,而且场景的顺序也是可以改变的。如果利用poi-tl模版引擎利用模版来导出表格,我们会遇到两个问题。
2024-02-20 19:39:18
2402
原创 善于利用GPT确实可以解决许多难题
在技术选型时,我选择了poi-tl这个模板引擎,因为在网上看到了很多关于它的推荐。虽然之前没有做过类似的功能,而且项目中也没有用过,但是导出Word文档的这个功能却要我自己来设计。开始的时候还算顺利,因为要么是填充数据,要么是创建简单的表格,这些我可以通过查看官方文档的示例一步步实现。这些信息在官方文档和网上都没有找到相应的文章或案例,但通过询问GPT,我成功地解决了问题。然而,使用模板导出时,我必须提前写好表格的模板。有些月份可能没有某些场景,但是我的模板中却包含了这些场景的表格模板。
2024-02-20 13:56:39
2073
原创 Map转成String,String 转换成Map
把一个map转换成json字符串后存放在Redis中,然后在redis中取出json字符串,再把字符串转变成原来的Map。这里使用是阿里巴巴fastjson。
2024-01-23 16:25:14
2270
原创 Ubuntu安装docker
默认情况下,只有root用户和docker组的用户才能运行Docker命令。我们可以将当前用户添加到docker组,以避免每次使用Docker时都需要使用sudo。进入修改添加 registry-mirrors 内容后重启 Docker.使用以下命令来设置 Docker 国内源:- 或者你可以通过。Docker在Ubuntu上依赖一些软件包。5.添加Docker软件源。11.查看docker版本。3.安装docker依赖。10.重启docker。6.安装docker。12.配置镜像加速器。
2024-01-14 16:07:07
481
原创 软件工程相关知识
概要设计将需求转化为软件的模块划分,确定模块之间的调用关系,详细设计是将模块进行细分,得到详细的数据结构和算法。适用于软件需求很明确的软件项目。
2023-12-27 14:50:00
410
原创 计算机网络
子网掩码由连续的1和0组成,连续的1表示网络地址,连续的0表示主机地址,通过0的个数可以计算出子网的容量(子网中主机的IP地址范围)。首先来看看默认的子网掩码255.255.255.0是怎么划分子网的,将该子网掩码的二进制由24个1和8个0组成,8个0表示该子网掩码划分出的子网容量为256(2的8次方),也就是说192.168.1.0-255都在同一个子网中,这256个地址中可用地址只有254个,因为规定每个子网的第一个IP地址为网段地址,最后一个IP地址为广播地址,都不可用。
2023-12-25 12:52:25
765
1
原创 计算机组成与体系结构(6分)
R 进制转十进制使用按权展开法,其具体操作方式为:将 R 进制数的每一位数值用 Rk 形示,即幂的底数是 R ,指数为 k , k 与该位和小数点之间的距离有关。当该位位于小数点左边, k 值是该位和小数点之间数码的个数,而当该位位于小数点右边, k 值是负值,其绝对值是该位和小数点之间数码的个数加1二进制转十进制10100.011×241×221×2−210100.011×241×221×2−2七进制转十进制604.014×706×7。
2023-12-25 09:33:50
1158
原创 Word添加附件(附件图标被挡住的问题)
本文主要是为了记录一下自己使用word添加附件的时候遇到的一个坑,就是添加了附件,附件图标没有展示的问题。,然后点击由文件创建然后再点击浏览本地电脑中的文件,选择需要添加的文件,当然也可以选择新建一个文件。,如果不清楚段落中最后一行的格式,附件的图标就会被文档中段落的样式给挡住。清除了样式,图标就能正常的展示出来啦。
2023-11-15 22:43:20
6663
原创 操作系统(5-7分)
PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下: P(S): ①将信号量S的值减1,即S=S-1;②如果S>0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。V(S): ①将信号量S的值加1,即S=S+1;
2023-09-19 20:34:57
170
原创 Spring Boot 自动注入失败的原因
available出现的原因可能有两种。没有加注解(@Controller、@Service、@Repository、 @Component 中的其中一个)。Application类(启动类)的路径错误,SpringBoot应用启动时,默认会自动扫描与启动类在同个包以及子包下的Bean。
2023-09-17 02:20:13
2286
原创 端口已被占用
查看被占用端口对应的PID(windows)查看被占用端口对应的PID(linux)端口号一般就在启动时打印的日志里面。就是把占用端口的程序关闭。20676对应的是PID。20676对应的是PID。
2023-09-08 18:32:52
269
原创 Java实现籍贯级联选择器
从省和市这种从属关系,我打算给前端返回一个树,省为最顶层,因为直辖市和香港澳门特别行政区的关系,把直辖市和香港澳门特别行政区也当做是树的根节点。因此数据库的设计就是要有一个当前区域代码和父区域代码来给树建立关系。
2023-08-10 16:21:04
396
原创 100天软件设计师备考计划
我计划在2023年用100天的时间考取软件设计师资格。在学习的过程中,我打算记录自己所学的知识和心得,将其整理成笔记并与他人分享,这也是对自己学习进步的一种激励。希望通过这个过程,我能够不断进步并成功通过软件设计师考试。未来充满着挑战和机遇,我会全力以赴,迎接未知的挑战!
2023-07-26 10:49:22
340
原创 CAS机制详解
CAS是一种乐观锁机制,它不会阻塞线程, 先从内存位置读取到值,然后和预期值比较。 这种机制在不阻塞其他线程的情况下避免了并发冲突,比独占锁的性能高很多。
2023-07-14 18:12:23
1127
原创 Java内存模型之JMM
JMM本身是一种抽象的概念并不真实存在它仅仅描述的是一组约定或规范,通过这组规范定义了程序中各个变量的读写访问方式并决定一个线程对共享变量的写入何时以及如何变成对另一个线程可见,关键技术点都是围绕多**线程的原子性、可见性和有序性展开**的。
2023-07-12 13:55:36
241
原创 Docker Compose基础与实战
本文介绍了用docker-compose解决了用docker部署的要多次构建容器的痛点,解决方式就是在docker-compose文件定义好项目所需要的容器和一些配置。直接用一个命令就可以构建多个容器,实现对Docker 容器集群的快速编排。介绍了一些简单的命令以及如何安装docker-compose,同时还用一个简单的部署实例来加深对docker-compose的使用。
2023-06-28 09:55:48
828
原创 Docker Network 基础
Docker网络是Docker容器之间和容器与外部网络之间的通信和连接的一种机制。在Docker中,每个容器都可以有自己的网络栈,包括网络接口、IP地址和网络配置。Docker网络提供了一种灵活且可定制的方式,**使得容器之间可以相互通信,并与主机或其他网络资源进行交互。**
2023-06-26 15:29:22
751
原创 前端时间格式问题
Caused by: java.time.format.DateTimeParseException: Text '2023-06-07T00:00:00' could not be parsed at index 10
2023-06-13 19:44:00
1850
原创 Mybatis List传参错误
当我们将一个 List 或数组作为参数传递给 MyBatis 查询语句时,**MyBatis 会将它们自动包装在一个 Map 中,以特定的键名作为键**。List 实例将会以 `list` 作为键名,而数组实例将会以 `array` 作为键名。这样做的目的是为了方便在 SQL 语句中引用集合元素。
2023-04-03 16:47:37
315
原创 java开启n个线程交替打印集合中的数据
思路:首先是要创建多个线程的方式,这里我们使用实现Runable接口的方式通过for循环批量创建线程。重点是run方法,要判断每个线程打印哪一个数据。线程切换和打印数据的过程都需要保证是一个线程在工作的。
2023-03-15 10:18:33
241
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人