
Java
文章平均质量分 53
爱编程的Loren
一往无前,愈挫愈勇!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
SpringBoot外挂配置文件覆盖jar包配置
SpringBoot3.3.x动态配置覆盖方案:在不重新打包发版情况下,可通过两种方式修改application-xxx.properties/yml配置。方式1要求在jar包同级config目录放置配置文件,执行时指定profile;方式2允许任意路径配置,但需同时放置原始application.properties文件,并通过--spring.config.location指定路径。两种方式均需在启动命令中激活对应profile,实现运行时配置覆盖。原创 2025-06-28 17:16:41 · 228 阅读 · 0 评论 -
绘制Wafer热力图
本文提供了两种实现半导体YMS系统中热力图绘制的方法:Python版本和Java版本。Python实现使用matplotlib库,通过极坐标网格插值和径向基函数(RBF)生成等高线图,并支持数据缩放以适应圆形区域。Java实现参照Python版本逻辑,使用AWT图形库和自定义插值算法,生成带颜色映射的热力图,包含数据点标记和颜色图例。两种方法都支持将结果保存为图片文件。此外,还介绍了通过Java调用Python脚本的实现方式,便于系统集成。两种实现均采用蓝-黄-红颜色渐变方案,并自动调整Y轴缩放比例以确保所原创 2025-06-20 21:07:38 · 199 阅读 · 0 评论 -
绘制热力图
本文实现了一个圆形热力图绘制工具MapContourUtil,主要包含以下内容: 核心类MapContourUtil提供热力图生成功能,支持: 双线性插值算法绘制平滑热力图 HSB颜色空间映射数值到颜色 数据点标记和数值标签显示 圆形边界处理 定义相关数据模型: DrawMapImageParameter:绘图参数配置 CircularHeatMapTemp:热力图临时数据 WaferMap:晶圆图配置 MapImageData:坐标数据点 实现特点: 使用Java AWT进行图形绘制 支持高质量抗锯齿渲染原创 2025-06-20 21:06:05 · 230 阅读 · 0 评论 -
绘制散点图
摘要:该文本描述了一个用于绘制半导体晶圆散点图(SiteMap)的Java实现方案。主要包含三个部分:1)核心绘图类MapSiteUtil,提供晶圆图形绘制、单元填充、文本标注和凹槽标识等功能;2)相关实体类,包括DieOffset(单元偏移)、ColorResultBo(颜色结果)、WaferMap(晶圆参数)等数据结构;3)单元测试类MapSiteUtilTest,模拟生成测试数据并验证绘图功能。该方案支持自定义晶圆直径、单元尺寸、颜色映射和坐标偏移等参数,输出带测量点标记的晶圆图像,是半导体行业常用的原创 2025-06-20 21:04:22 · 316 阅读 · 0 评论 -
JfreeChart绘制各种图形demo
本文介绍了使用Java和JFreeChart库生成多种图表并保存为图片的方法。基于JDK 21和Spring Boot 3.3.3环境,通过JFreeChart 1.5.3实现了六种常见图表:柱状图/条形图、气泡图、折线图、3D饼图、时间序列图和XY折线图。每个示例均包含完整代码,涵盖数据集创建、图表配置(包括中文字体支持)、样式设置(颜色、标签等)以及PNG/JPEG图片保存功能。特别处理了中文显示问题,使用宋体确保图表标题、图例和坐标轴标签正常显示。所有图表生成后均输出保存路径,便于快速验证结果。原创 2025-06-20 21:02:29 · 287 阅读 · 0 评论 -
MybatisPlus的lambda与xml组合查询
本文介绍了在复杂业务场景下,结合LambdaQueryWrapper与XML实现MyBatis-Plus组合查询的开发步骤。首先,搭建了JDK21、SpringBoot3.3.3、MyBatis-Plus、MySQL5.8的开发环境,并提供了Maven依赖配置。其次,通过创建用户表t_user并插入测试数据,演示了表结构与数据初始化。接着,配置了多数据源信息,并定义了实体类、入参对象、Mapper接口及XML映射文件,展示了如何通过LambdaQueryWrapper与XML动态组合查询条件。最后,编写了S原创 2025-05-09 20:45:13 · 455 阅读 · 0 评论 -
每日简报定时推送到企业微信功能开发
本文介绍了如何通过Java代码实现从聚合数据平台获取新闻简报,并通过企业微信机器人发送消息的功能。首先,引入Hutool工具库的核心依赖,并编写JuHeApiService类,通过HTTP请求从聚合数据平台获取简报数据。接着,编写ChartService类,调用企业微信机器人的Webhook接口,将获取到的简报内容发送到企业微信群。此外,还提供了日期格式化和数字位数计算等工具类。最后,通过QiYeWechartServiceImpl类将获取到的简报数据格式化后,调用企业微信机器人接口发送消息。整个过程展示了原创 2025-05-09 20:25:01 · 381 阅读 · 0 评论 -
自定义Mybatis-generate(二)
2,需要自动生成 controller层、service层、mapper接口、mapper.xml、实体类、自定义扩展类等。4,mybatis-generate 本身的模板及模板参数固定,无法扩展到更多自定义类,需要更改源码实现。3,连接的数据库是 gauss db。1,SpringBoot项目。5,自动生成单元测试类等操作。controller单元测试类。service.ftl 接口。自定义用于导入导出实体类。原创 2024-07-03 14:12:04 · 595 阅读 · 0 评论 -
自定义Mybatis-generate(一)
在 resources目录下创建 templates目录,然后再下面创建 模板 controller.java.ftl、file.java.ftl、mapper.java.ftl、mapper.xml.ftl、service.java.ftl、serviceImpl.java.ftl、test.java.ftl。2,需要自动生成 controller层、service层、mapper接口、mapper.xml、实体类、自定义扩展类等。3,连接的数据库是 gauss db。5,自动生成单元测试类等操作。原创 2024-07-03 11:47:40 · 445 阅读 · 0 评论 -
日志记录功能
1,可记录页面操作模块、按钮的日志记录。自定义 controller/service层方法注解。OperationLogMapper 的相关代码这里略。4,需要考虑到扩展性及个性化定制。2,记录详细的指定操作数据日志。3,记录的数据可能需要查询表。实体对象OperationLog。controller层使用案例。Mapper层自定义注解。mapper层切面实现。mapper层使用案例。原创 2024-06-25 11:18:47 · 787 阅读 · 2 评论 -
大文件下载功能需求
注:这里采用分块传输(Http1.1以上版本支持),禁止一次性读取到内存导致内存溢出,需要进行流式读取并且边读边向客户端(浏览器)进行输出。以上即完成了大文件下载功能,这时候还需要考虑并发读取数量的限制,这里采用信号量+拦截器来进行实现。1,大文件(5G、10G等)下载时,内存溢出、超时等问题。4,前后端对于大文件下载的瓶颈点(如浏览器内存限制等)1,支持大文件(5G、10G等)下载 且页面不蹦。2,在资源紧张时如何进行大文件下载。3,并发下载时的并发数量限制。二,对于大文件下载需要考虑的点。原创 2024-06-21 11:37:10 · 578 阅读 · 0 评论 -
日期时间工具类
【代码】日期时间工具类。原创 2024-06-11 17:03:04 · 677 阅读 · 0 评论 -
knife4j实战
knife4j是基于swagger二次开发的框架,提供了丰富的页面管理,增强了原有的wagger功能。原创 2024-03-03 09:24:52 · 508 阅读 · 0 评论 -
运维随录实战(2)之k8s部署应用
对于需要供外部服务或客户端访问的系统一般需要配置绑定域名,即需要在Ingress中绑定。进行设置需要发布的分支为受保护分支。原创 2024-03-04 21:50:48 · 792 阅读 · 0 评论 -
react.js学习demo
需要引入三个js包:browser.min.js、react.js、react-dom.js-----demo1<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Hello React</title>原创 2018-03-06 20:39:44 · 421 阅读 · 0 评论 -
分布式ID选型对比(4)
特点: 百度Uid generator是基于雪花算法实现,不同点在于其workId是动态的,即不同机器生成的workId不同,将主键ID作为wrokId,在项目启动时完成workId的生成及获取.遗憾的是 目前百度的这个开源算法已经停止了维护!一, 创建表: worker_node(在项目启动时初始化生成workId)入口类: DefaultUidGenerator。配置类: UidGeneratorConfig。二, 创建Model及Exmple、Dao。接口: UidGenerator。原创 2024-03-02 14:52:29 · 550 阅读 · 0 评论 -
高性能通信之Netty
一, 同步IO(BIO)模型的架构。一般针对性能不高的情况下可以使用.二,异步IO(NIO)模型的架构。原创 2024-03-02 20:42:05 · 440 阅读 · 0 评论 -
maven学习之从搭建maven环境到在项目中如何使用maven
----------maven环境搭建及简单命令使用1,maven下载地址:maven.apache.org到达该页面找到左侧download,然后下载Binary zip archive对应的zip包。2,配置maven环境变量。 找到环境变量(这里设置系统变量,用户变量同理,这里略),比如我下载的maven解压在"D:\DevelopmentRoot\apache-mave原创 2017-12-17 21:27:29 · 466 阅读 · 0 评论 -
分布式ID选型对比(2)
三, resources目录下编写自动生成代码配置文件: generatorConfig.xml。4, resources/mybatis目录下建: IdGeneratorMapper.xml。特点: 相较于数据库自增,扩展性更好,但缺点是每次取ID都需要加锁,性能较低.3, controller层: GenerateIdController。2, dao层接口: IdGeneratorMapper。1, 对象 IdGenerator。原创 2024-03-02 14:35:38 · 686 阅读 · 0 评论 -
SpringBoot+Jwt+Redis
登录认证授权流程原创 2024-03-02 18:23:29 · 732 阅读 · 0 评论 -
Java-加密解密总结
常见加密算法1、DES(Data Encryption Standard):对称算法,数据加密标准,速度较快,适用于加密大量数据的场合; 2、3DES(Triple DES):是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高;3、RC2和RC4:对称算法,用变长密钥对大量数据进行加密,比 DES 快;4、IDEA(International Data Enc原创 2018-01-27 13:53:34 · 1309 阅读 · 0 评论 -
分布式ID选型对比(3)
Leaf的snowflake模式依赖于ZooKeeper,不同于原始snowflake算法也主要是在workId的生成上,Leaf中workId是基于ZooKeeper的顺序Id来生成的,每个应用在使用Leaf-snowflake时,启动时都会都在Zookeeper中生成一个顺序Id,相当于一台机器对应一个顺序节点,也就是一个workId。基于号段模式原理实现的与Leaf如出一辙,每个服务获取一个号段(1000,2000]、(2000,3000]、(3000,4000]重复Http方式的(2)(3)操作。原创 2024-03-02 14:46:35 · 1111 阅读 · 0 评论 -
flyway实战
四, 在resources目录下创建db.migration目录并在该目录下创建sql文件, V1.0.1__init.sql。启动项目后,会生成一张表: flyway_schema_history。flyway是一款用来管理数据库版本的工具框架。三, flyway配置参数。类似的其他sql文件同理。原创 2024-03-02 21:16:43 · 564 阅读 · 0 评论 -
分布式ID选型对比(1)
可以实现自己的ID生成中心,即TynyId-server,由该项目提供获取ID的方法供调用,但该方式比较耗IO,性能会有所下降。可以实现自己的ID生成中心,即leaf-server,由该项目提供获取ID的方法供调用,但该方式比较耗IO,性能会有所下降。特点: 对于高并发的系统,如果做了分库分表就不适合了,且数据库数量达到500万时就容易出现瓶颈,仅适合小数据量的系统.高(本地生成,(无网络开销,需要自己实现)高(本地生成,(无网络开销,需要自己实现)依赖数据库,需要频繁更新数据库maxId。原创 2024-03-02 14:31:14 · 1314 阅读 · 0 评论 -
异步编程实战之r2dbc
五, 编写DataSourceConfig。controller模板。四, 编写入口生成主类。二, 数据库连接配置。原创 2024-03-03 09:38:19 · 1188 阅读 · 0 评论 -
POI 实现Excel 导入、导出功能
【代码】POI 实现Excel 导入、导出功能。原创 2024-06-04 15:38:56 · 1067 阅读 · 0 评论 -
指定目录匹配文件并批量导入
1,需要从某个目录以某种正则表达式匹配到所有文件。3,上传完成后需要返回上传的地址。2,将这些文件批量上传。3,编写上传文件接口。原创 2024-05-28 20:24:19 · 355 阅读 · 0 评论 -
Spring AOP 切面按照一定规则切片并行查询Mapper并返回
有时候我们在查询mapper层时,有时候可能由于入参数据过大或者查询的范围较大,导致查询性能较慢,此时 我们需要将原本的查询按照一定规则将查询范围进行切面,然后分片查询,最后将查询结果进行组装合并。3,编写核心切面处理类。4,编写切片规则实现类。2,定义切片规则接口。原创 2024-05-28 11:22:22 · 615 阅读 · 0 评论 -
Spring AOP实现Mapper层查询返回重新赋值
针对查询返回的数据,在数据库层处理可能会影响到性能,在考虑性能及维护方便的情况下,采用AOP实现。5,在mapper指定接口方法上使用。2,定义公共业务处理接口。3,编写AOP核心实现。4,编写业务处理实现。原创 2024-05-23 14:19:34 · 567 阅读 · 0 评论 -
Spring Aop 实现对mapper层入参进行重新赋值
需要对mapper查询的入参的某个属性值进行特殊处理后查询。3,定义切面 MapperRequestDataAspect。不影响原来业务且方便扩展维护。6,在对应mapper层的对应方法加添加使用。4,定义指定业务指定入参处理逻辑。2,定义动态处理指定业务的接口。原创 2024-05-23 10:31:49 · 527 阅读 · 1 评论 -
SpringBoot Validation自定义注解之校验指定最小整数
1,引入核心关键依赖。原创 2024-05-21 10:23:42 · 908 阅读 · 0 评论 -
SpringBoot+Mock Mvc测试web接口增删改查、导入导出
使用Mock Mvc单元测试web接口的增删改查、导入、导出功能,涵盖登录 token header赋值等全流程。3,编写单元测试核心类。2,编写登录抽象父类。原创 2024-05-14 17:26:23 · 506 阅读 · 0 评论 -
Spring+Mybatis-plus 实现 Gauss DB数据库代码生成
3,在idea 右上角 plugins-> mybatis-generator-> mybatis-generator:generator 双击执行,即可在指定配置中生成代码。使用的gauss db数据库(类似oracle语法),需要根据指定表生成entity、dao等代码。2,在resources目录下 mybatis-plus 的配置文件 mybatis-generator.xml。原创 2024-05-13 16:25:26 · 2332 阅读 · 0 评论 -
Spring AOP切面实现为mapper层指定方法入参字段赋值
有时候我们在进行某些操作时,可能需要额外进行复制操作,而这些字段往往不是由前端/客户端填写输入的,而是由后端给与,类似于 登陆者、创建时间、更新时间等字段,这时,可以借助AOP指定mapper层(也可改为其它层)进行默认值赋予。原创 2024-05-13 10:05:45 · 588 阅读 · 0 评论 -
Spring JdbcTemplate实现自定义动态sql拼接功能
sql 需要能满足支持动态拼接,包含 查询字段、查询表、关联表、查询条件、关联表的查询条件、排序、分组、去重等。11,核心类之 BasicConditionQueryCriteria(入参)7,核心类之 PredicateCondition。8,核心类之 PropertyCondition。10,核心类之 ExecutionSql。9,核心类之 SqlBuilder。6,核心类之 Condition。2,创建项目并引入 pom依赖。4,核心类之 Column。5,核心类之 Table。原创 2024-05-06 16:50:11 · 1546 阅读 · 0 评论 -
Spring JdbcTemplate使用临时表+事务会话管理实现数据新增、查询及自动清除功能
由于某些情况下当查询过滤参数过大时,执行sql由于参数过大而报错,此时 需要使用临时表的方式,即 当参数超过某个阀值(如 1000,可调整)新增一张临时表,将原表 与 该临时表进行inner join 达到条件筛选过滤的目的(当然,除了这种方式,还可以考虑 将参数进行切片后分批次查询组装)。注意:要想实现 插入数据 与 查询 在同一个会话中实现,这里采用最简单的实现方式:事务 来实现,即 方法上加上注解 @Transactional 即可。4,编写 dao 层接口代码。2,引入需要的pom依赖。原创 2024-05-06 10:58:26 · 720 阅读 · 0 评论 -
ThreadLocal
1, ThreadLocal是线程局部变量,每个线程都含有一个独立的局部变量副本ThreadLocalMap,该副本随着线程消息而被垃圾回收器回收.2, 为了保证线程安全,空间换时间,保证线程间隔离.3, 每个ThreadLocal只能保存一个变量。原创 2024-03-02 18:21:50 · 425 阅读 · 0 评论 -
Java设置模式之:Composite组合模式
1,定义一个接口,作为组合的枢纽进行传递package com.org.composite;//定义接口:用来指定说明要完成那些行为动作public interface Component { public void doSomething(); } 2,定义一个实现类,作为树形结构的最低端,实际操作的也是该对象package com.org.compos原创 2018-01-06 14:17:15 · 756 阅读 · 0 评论 -
Java绘制验证码完整demo
----1,引入servlet的jar包,搭建好开发环境(eclipse+JDK等)----2,编写主页面(输入用户、密码、验证码的页面index_demo_10.jsp)<%@page import="com.util.JSPUtils"%><%@page import="java.util.ArrayList"%><%@page import="java.util...原创 2018-03-16 19:59:55 · 444 阅读 · 1 评论 -
输出指定文件
2,虽然一些工具 如 postman也可以使用,但是作为单元测试来说,如果入参很大时,手写每个参数不是很方便,快速根据页面的情况拷贝,效率会更高。1,一般我们的做web开发时,可能需要快速做接口类的入参开发测试,每次模拟接口测试的数据可以重复利用。System.out.println("文件不存在!String content = "我是文件内容!原创 2019-05-27 09:56:46 · 229 阅读 · 1 评论