Work笔记
文章平均质量分 80
在这里我会不定时记录自己在开发工作中,所积累的应对不同业务的解决办法
柚几哥哥
用科技让复杂的世界更简单
展开
-
JFreeChart 生成Word图表
JFreeChartJFreeChart是一个开源的Java图表库,专为JAVA平台设计,用于生成高质量的2D图表。JFreeChart是一个完全使用JAVA语言编写的图表绘制类库。它最初由David Gilbert创建,自2001年以来一直在持续开发和更新,目前已成为Java社区中广泛使用的图表库之一。JFreeChart是一个开源项目,遵循GNU通用公共许可证(LGPL),允许在专有应用程序中使用。通过 JFreeChart 创建图表,将图表转换为图像格式(如PNG或JPEG),然后将图像解析原创 2024-06-26 16:25:14 · 1531 阅读 · 0 评论 -
Java操作Word文档
Word文档本质上是一个遵循Open XML标准的ZIP压缩包,包含了一系列XML文件和其他资源(如图片)。因此,操作Word文档的关键在于解析和修改这些XML文件。Java开发者可以选择多种库来实现这一目标,包括但不限于Apache POI、docx4j、iText以及Spire.Doc for Java等。JFreeChart是一个开源的Java图表库,专为JAVA平台设计,用于生成高质量的2D图表。通过 JFreeChart 创建图表,将图表转换为图像格式(如PNG或JPEG),然后将图像原创 2024-06-26 16:09:23 · 3377 阅读 · 2 评论 -
SpringBoot整合阿里云短信服务
要在Spring Boot项目中整合阿里云短信服务,你需要遵循以下步骤:1. 准备工作注册阿里云账号:首先确保你有一个阿里云账号,并且已经开通了短信服务。获取AccessKey ID和AccessKey Secret:在阿里云控制台的安全管理页面创建AccessKey,这是访问阿里云API的凭证。申请短信签名和模板:在阿里云短信服务控制台申请短信签名和短信模板,签名用于标识发送者的身份,模板用于定义短信内容,需要审核通过才能使用。原创 2024-06-11 17:41:36 · 1568 阅读 · 1 评论 -
AOP实现自定义滑动窗口限流
滑动窗口算法是一种广泛应用于计算机科学和数据分析中的数据流算法,特别适用于处理具有时间序列特性的数据,如网络流量监控、速率限制、数据分析等领域。其核心思想是在一个固定大小的“窗口”内对数据进行统计分析,这个窗口会随着数据的流入而向前滑动,始终保持最新一段时间内的数据统计。要实现AOP结合滑动窗口算法来实现自定义规则的限流,我们可以在原有的基础上进一步扩展,以支持更灵活的配置和更复杂的规则。原创 2024-06-11 09:57:53 · 1186 阅读 · 0 评论 -
SpringAOP 常见应用场景
常见应用场景:日志记录、权限检查、事务管理、异常处理、性能监控、缓存、参数校验和转换、API调用统计、SLF4J、Logback、Log4j等日志框架集成、自定义注解的处理。1、AOP实现 性能监控;2、AOP实现 API调用统计;3、AOP实现 缓存;4、AOP实现自定义滑动窗口限流原创 2024-06-08 13:54:29 · 2576 阅读 · 1 评论 -
滑动窗口算法实现单位时间API限流
通过对一个时间窗口内的请求量进行限制来保障系统的正常运行。如果我们的服务资源有限、处理能力有限,就需要对调用我们服务的上游请求进行限制,以防止自身服务由于资源耗尽而停止服务。将一个时间窗口分为5份。每一份里面都有一个独立计数器c。在时间轴上的一个时间窗口内,没当请求过来的时候,就会求计数器 c1+c2+c3+c4+c5的和,当达到阀值就拒绝,没达到当前小格子里面的计数器就加1。滑动窗口算法是固定窗口算法的优化版本,主要是为了解决固定窗口中的零界值问题导致限流失败的问题。在限流中有两个概念需要了解。原创 2023-04-26 18:00:15 · 620 阅读 · 2 评论 -
Jmeter 压测 QPS
Jmeter的基本概念、Jmeter下载安装、Jmeter的目录结构、Jmeter设置中文、线程组、Jmeter创建http请求、 Jmeter设置请求头信息 、Jmeter测试方法概论、Jmeter结果树、Jmeter图形结果原创 2023-05-15 15:59:48 · 3555 阅读 · 0 评论 -
XSS跨站脚本安全漏洞防护
存储型XSS是指应用程序通过Web请求获取不可信赖的数据,并且在未检验数据是否存在XSS代码的情况下,将其存入数据库。存储型XSS可以持续攻击用户,在用户提交了包含XSS代码的数据存储到数据库后,每当用户在浏览网页查询对应数据库中的数据时,那些包含XSS代码的数据就会在服务器解析并加载,当浏览器读到XSS代码后,会当做正常的HTML和JS解析并执行,于是发生存储型XSS攻击。如果address的值是由用户提供的,且存入数据库时没有进行合理的校验,那么攻击者就可以利用上面的代码进行存储型XSS攻击。原创 2023-06-05 15:12:45 · 1866 阅读 · 0 评论 -
Arthas使用教程—— 阿里开源线上监控诊断产品
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。arthas:help 、dashboard、jvm、 jad、monitor、watch、trace、tt、redefine 、stop原创 2024-02-06 15:57:18 · 8411 阅读 · 1 评论 -
Java实现异步的4种方式
异步(Asynchronous)是指在进行多任务处理时,各个任务的执行不依赖于其他任务的完成,无需等待一个操作完成后再开始下一个操作。与之相对的是同步(Synchronous),同步操作需要按顺序执行,每个步骤必须等待前一个步骤完成才能开始。1、Future与Callable2. CompletableFuture3. Spring框架的异步支持@Async4. 使用消息队列RabbitMQ、Kafka原创 2024-05-29 13:27:48 · 10853 阅读 · 0 评论 -
布隆过滤器 Bloom Filter
1、什么是布隆过滤器?2、布隆过滤器的工作原理3、布隆过滤器的优点4、布隆过滤器的缺点5、布隆过滤器的使用场景6、布隆过滤器的数据结构7、布隆过滤器的扩容8、SpringBoot 整合 布隆过滤器缓存穿透防护、重复数据检测、垃圾邮件过滤、实时监控与报警系统、推荐系统、数据库索引优化、社交网络和互联网服务、数据分析与挖掘、网络安全原创 2024-01-12 16:40:02 · 9335 阅读 · 0 评论 -
Java实现对象存储的4种方式(本地对象存储、MINIO、阿里云OSS、FastDFS)
对象存储(Object Storage)是一种数据存储架构,它以对象(Object)为基本单位管理数据,区别于传统的文件存储(按目录层级组织)和块存储(主要用于磁盘和卷)。在对象存储中,每个对象包含数据本身、可变数量的元数据(描述数据的信息)和一个全局唯一的标识符(通常是对象的名称或键)。这种存储模型非常适合处理非结构化数据,如图片、视频、文档等。2、本地对象存储3、MINIO4、阿里云OSS5、FastDFS原创 2024-05-29 18:00:39 · 2869 阅读 · 1 评论 -
RabbitMQ解决消息丢失以及重复消费问题
RabbitMQ如何解决消息丢失问题:生产者确认机制、持久化消息、消费者ACK确认机制、集群部署、预拉取策略调整、监控与告警基于Spring AMQP框架整合ACK/NACK机制RabbitMQ 如何实现幂等性设计:业务层幂等处理、确认模式选择、死信队列与重试策略、幂等服务设计、事务与补偿机制幂等服务设计思路:通过雪花算法生成分布式唯一ID、通过枚举类,设计Message消费状态我们可以给每一个消息绑定一个分布式唯一ID,在通过Redis记录该消息的消费状态,保证每条消息只能被消费一次原创 2024-01-09 16:28:12 · 4980 阅读 · 3 评论 -
MySQL explain执行计划详解
2(id = 3)、【select id, name from t1 where address = ‘11’】:因为是在from语句中包含的子查询所以被标记为DERIVED(衍生),where address = ‘11’ 通过复合索引idx_name_email_address就能检索到,所以type为index。表示索引中使用的字节数,查询中使用的索引的长度(最大可能长度),并非实际使用长度,理论上长度越短越好。mysql对数据使用一个外部的索引排序,而不是按照表内的索引进行排序读取。原创 2023-12-26 14:03:46 · 624 阅读 · 0 评论 -
SpringBoot 参数验证的几种方式
1、为什么要进行参数验证?数据完整性与准确性、安全防护、性能优化、用户体验、代码可维护性、遵循最佳实践、减少异常处理、合规性2、验证方式:if 语句判断、Assert、Validator、自定义验证注解原创 2024-06-03 14:47:48 · 3970 阅读 · 1 评论 -
百万级数据的导出解决方案
一、传统POI的的版本优缺点比较首先我们知道POI中我们最熟悉的莫过于WorkBook这样一个接口,我们的POI版本也在更新的同时对这个几口的实现类做了更新;这个实现类是我们早期使用最多的对象,它可以操作Excel2003以前(包含2003)的所有Excel版本。在2003以前Excel的版本后缀还是.xls这个实现类现在在很多公司都可以发现还在使用,它是操作的Excel2003--Excel2007之间的版本,Excel的扩展名是.xlsx。原创 2023-01-11 14:39:34 · 3546 阅读 · 0 评论 -
word转pdf乱码问题解决
共享中的在线预览word模块会将word转为pdf后再展示, 有时候pdf会出现方块乱码, 原因是linux上少了一些个字体, 比如雅黑、宋体。0. 如果安装命令可先执行安装命令操作: yum install -y fontconfig mkfontscale。查看安装的中文字体: fc-list :lang=zh。查看安装的字体: fc-list。转载 2023-01-05 16:10:47 · 2419 阅读 · 0 评论 -
JWT实现登陆认证及Token自动续期
更新用户密码时需要重新生成新的token,并将新的token返回给前端,由前端更新保存在local storage中的token,同时更新存储在redis中的token,这样实现可以避免用户重新登陆,用户体验感不至于太差。一样的道理,要改变JWT的有效时间,就要签发新的JWT。在实际项目中,用户分为普通用户和管理员用户,只有管理员用户拥有删除用户的权限,这一块功能也是涉及token操作的,但是我太懒了,demo工程就不写了。JWT的payload使用的是base64编码的,因此在JWT中不能存储敏感数据。原创 2023-01-05 16:08:12 · 1556 阅读 · 0 评论 -
EasyExcel快速上手
*所有Excle导入都需要用统一的模板进行数据导入,且我们在程序中也需要对于导入Excle文件的格式和内容规范进行校验,同时我们还可以再导入业务逻辑中加入生成导入日志的功能,方便使用者尽快得知提交的文件中具体哪个位置的内容填写不规范,也可以使后台维护的工作人员能及时发现恶意的导入行为**思路:1、将Excle文件中我们需要的数据转换成对应的模板类泛型的Lsit集合。3、在校验的同时记录校验的过程,生成导入日志,插入日志表。(3)编写数据插入以及生成导入日志的业务层方法。(2)封装具体的数据排查业务逻辑。原创 2022-10-14 14:50:30 · 3100 阅读 · 1 评论 -
XSS攻击和跨站脚本安全漏洞防护
存储型XSS可以持续攻击用户,在用户提交了包含XSS代码的数据存储到数据库后,每当用户在浏览网页查询对应数据库中的数据时,那些包含XSS代码的数据就会在服务器解析并加载,当浏览器读到XSS代码后,会当做正常的HTML和JS解析并执行,于是发生存储型XSS攻击。**例如**:下面JSP代码片段的功能是根据一个已知用户雇员ID(id)从数据库中查询出该用户的地址,并显示在JSP页面上。如果address的值是由用户提供的,且存入数据库时没有进行合理的校验,那么攻击者就可以利用上面的代码进行存储型XSS攻击。原创 2022-09-05 16:28:32 · 3986 阅读 · 4 评论 -
MySQL 事件调度
编写sql时要注意格式要求(1)开头要写BEGIN,结尾处写END(2)每一个sql结束处需要打上分好,“;”,区分每一条sql语句,漏写时,事件无法保存(3)事件示例BEGIN--推送当天门票预测数据--添加今日数据SELECT'玉龙雪山'asjqmc,0asmrFROMWHEREscenicAreaNamein('冰川公园索道','云杉坪索道','印象丽江','牦牛坪索道','玉龙雪山景区门票')SELECT'玉龙雪山'asjqmc,..................原创 2022-07-28 16:37:51 · 1134 阅读 · 0 评论 -
mysql 查看事件状态语句和修改办法
代码】mysql查看事件状态语句和修改办法。原创 2022-07-25 11:31:42 · 2171 阅读 · 0 评论 -
mysql使用orderby 不起作用
mysql 使用order by排序的时候不起作用,原创 2022-07-21 10:50:40 · 5031 阅读 · 0 评论 -
java.io.IOException: Server returned HTTP response code: 403 for URL
403Forbidden是HTTP协议中的一个可以简单的理解为没有权限访问此站。原创 2022-07-20 14:01:50 · 12508 阅读 · 0 评论 -
Java 天气爬虫
代码】Java天气爬虫。原创 2022-07-14 19:03:26 · 930 阅读 · 0 评论 -
Linux 工作中 常用命令
可以使用 rz 命令直接上传文件find . -name “.DS_Store” -print -delete4、ll 查看该路径下的目录5、cd …/切换到项目根目录rm 文件名(功能:删除文件);rm * (功能:删除该路径下的所有文件);rm -f 文件名 (功能:删除文件,不再询问是否删除);进入项目根目录front-end-autoconfig为服务名bin/front-end-autoconfig startbin/front-end-autoconfig stop进入项目lib文件原创 2022-07-12 17:16:35 · 1368 阅读 · 0 评论 -
Linux 目录结构整理
1、Linux目录结构原创 2022-07-12 17:03:31 · 219 阅读 · 0 评论 -
Java 登录安全漏洞防护
1、暴力破解(验证码可绕)2、CORS 资源共享跨域漏洞3、存在.DS_Store 文件泄露原创 2022-07-07 11:36:37 · 2998 阅读 · 0 评论 -
MySQL 多时间类型查询数据,没有数据也要显示0
1、建立时间节点表2、分析所需要查询的表原创 2022-05-10 11:54:48 · 1385 阅读 · 0 评论 -
Java 实现数据库导出Word
1、导入依赖 <!--使用POI读取文件--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency>原创 2022-03-22 16:27:23 · 4957 阅读 · 5 评论 -
Java 实现数据库导出Excle
1、建立所需要的导出的数据库2、通过插件生成对应的实体类以及CRUD的方法/** * TbHkhb:航空航班表 * @author zyw * @since 2022-03-18 10:31:24 */@Data@ApiModel(value="航空航班表,对应表tb_hkhb",description="适用于新增和修改页面传参")public class TbHkhb extends ProBaseEntity<TbHkhb> { private s原创 2022-03-21 17:08:00 · 7582 阅读 · 1 评论 -
Java 实现天气预报
1、登录高德地图API开放平台天气查询-API文档-开发指南-Web服务 API | 高德地图API2、用户在高德地图官网申请web服务API类型KEY3、天气查询天气查询API服务地址: URL https://restapi.amap.com/v3/weather/weatherInfo?parameters 请求方式 GET parameters代表的参数包括必填参数和可选参数。...原创 2022-03-21 10:25:43 · 9788 阅读 · 10 评论 -
Java实现Excel数据导入数据库
1、根据业务需求设计数据库表2、根据数据库表设计一个Excel模板模板的每列属性必须与表字段一一对应3、环境准备我这里项目环境是基于SpringBoot单体式架构,持久层用的公司框架,内置了基于MyBatis-Plus的各种单表操作的方法。导入依赖 <!--使用POI读取文件--> <dependency> <groupId>org.apache.poi</groupId>原创 2022-03-17 18:41:44 · 21405 阅读 · 11 评论