- 博客(107)
- 资源 (16)
- 收藏
- 关注
原创 SpringBoot+SeetaFace6搭建人脸识别平台
最近多个项目需要接入人脸识别功能,之前的方案是使用百度云api集成,但是后续部分项目是内网部署及使用,考虑到接入复杂程度及收费等多种因素,决定参考开源方案自己搭建,保证服务的稳定性与可靠性项目地址:https://gitee.com/code2roc/fastface。
2024-10-08 14:20:20 497 1
原创 SpringBoot使用spring.factories加载默认配置
在日常开发过程中,发布一些产品或者框架时,会遇到某些功能需要一些配置才能正常运行,这时我们需要的提供默认配置项,同时用户也能覆盖进行个性化。
2024-06-23 15:12:36 338 1
原创 Linux下制作Nginx绿色免安装包
linux下安装nginx比较繁琐,遇到内网部署环境更是麻烦,所以研究了下nginx绿色免安装版的部署包制作,开箱即用,特此记录分享,一下操作在centos8环境下安装,如果需要其他内核系统的安装(Debian/Ubuntu等),请在对应环境虚拟机下安装制作。
2024-04-29 15:34:33 501
原创 SpringBoot配置HTTPS及开发调试
在实际开发过程中,如果后端需要启用https访问,通常项目启动后配置nginx代理再配置https,前端调用时高版本的chrome还会因为证书未信任导致调用失败,通过摸索整理一套开发调试下的https方案,特此分享。
2024-04-29 15:21:52 714 2
原创 SpringBoot手动取消接口执行方案
实际开发中经常会遇到比较耗时的接口操作,但页面强制刷新或主动取消接口调用后后台还是会继续运行,特别是有大量数据库操作时会增加服务器压力,所以进行研究测试后总结了一套主动取消接口调用的解决方案。
2024-03-26 15:38:35 326 1
原创 Windows安装多个Tomcat部署项目
在实际生产环境中,经常会有一个tomcat部署多个应用程序的场景,但多个项目应用同一个基础框架时,会出现某些文件路径相同的情况导致管理混乱(例如附件,日志,缓存文件),并且更新有时需要关闭tomcat导致多个项目同时失效,本文提供同时安装多个tomcat的方案,独立部署每个项目便于管理。
2024-01-05 10:38:06 568
原创 从零开发基于ASM字节码的Java代码混淆插件XHood
因在公司负责基础框架的开发设计,所以针对框架源代码的保护工作比较重视,之前也加入了一系列保护措施例如自定义classloader加密保护,授权license保护等,但都是防君子不防小人,安全等级还比较低经过调研各类加密混淆措施后,决定自研混淆插件,自主可控,能够贴合实际情况进行定制化,达到框架升级后使用零感知,零影响。
2023-11-02 08:51:32 218
原创 SpringBoot集成微信支付JSAPIV3保姆教程
最近为一个公众号h5商城接入了微信支付功能,查找资料过程中踩了很多坑,以此文章记录一下和大家分享。
2023-09-11 16:37:23 750
原创 如何搭建虚拟专有网络访问公司内网
因为公司开发都是内网环境,以往居家办公或非公司环境,都需要进行远程到公司电脑进行办公,为了方便部门同事出差驻场开发,搭建了虚拟专有网络在实际搭建过程中使用了OpenVPN和SoftEtherVPN两种方式,做个总结记录,个人还是更推荐SoftEtherVPN,有可视化界面,配置简单以下操作中指的是拥有外网ip及端口的公司服务器,指个人的办公电脑。
2023-09-02 15:04:09 1493
原创 SpringBoot开发符合S3协议的文件存储服务
s3协议无标准说明文档,为rest风格,创建/删除/详情方法通过PUT/DELETE/HEAD表述很多方法共用一个路由,通过head参数区分(例如putObject和copyObject)参考aws的最新api文档:https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html实现以下基础功能Bucket创建Bucket删除文件上传文件删除文件下载文件分片操作(初始化/分片上传/合并)
2023-07-23 13:54:35 752
原创 基于嵌入式Tomcat的War包启动器
最近针对java项目的部署方式进行整理,jenkins/tomcat/windows工具/linux脚本/web部署平台等等发现war包通过tomcat部署比较繁琐,等待时间长,配置规则复杂对于小白很不友好,也难以接入到自定义的部署工具/平台中之前开发的Jar包部署平台是servlet开发通过嵌入式tomcat部署,借此打开思路能否基于嵌入式tomcat做一个war包启动器,通过代码的方式开启tomcat容器来部署war包。
2023-07-02 17:45:15 889
原创 Java实现AWS S3 V4 Authorization自定义验证
最近在开发文件存储服务,需要符合s3的协议标准,可以直接接入aws-sdk,本文针对sdk发出请求的鉴权信息进行重新组合再签名验证有效性,sdk版本如下
2023-06-04 16:40:03 1768
原创 从零构建可视化jar包部署平台JarManage
支持在线创建项目,上传Jar包,自动备份,配置启动参数,注册系统服务,查看启动日志等功能,具有以下优点基于servlet开发,依赖简洁,部署包10MB左右结合嵌入式tomcat一键部署,无外部容器依赖使用h2db存储数据,无外部数据库依赖适配windows/linux平台,满足多种环境具体项目经平台部署后自动注册系统服务,无需担心服务器重启系统架构图如下系统截图展示。
2023-04-01 17:52:33 1193 1
原创 SpringBoot集成SpringBootAdmin实现监控
springboot开启actuator集成spring-boot-admin实现服务可视化监控
2023-03-25 17:33:55 391
原创 基于jsplumb构建的流程设计器
流程设计器中最基础的两个元素为活动(节点)和变迁(连接),我们需要以下基础功能来配合相关接口进行工作流相关设计数据的保存/修改活动的添加/删除/移动变迁的添加/删除活动/变迁数据的全部读取根据json渲染活动与变迁相关引入依赖如下表所示名称功能jsplumb.js设计器主要依赖,用于绘制相关图形与动态操作实现jquery.jsjsplumb依赖的库jsplumb依赖的库,进行拖拽绑定实现右击菜单模板引擎渲染活动,避免字符串拼接。
2023-02-19 18:33:55 851
原创 SpringBoot访问windows共享文件
最近有项目需要开发档案打包下载功能,其中包含很多大附件,项目使用minio存储且不在同一台服务器上,为了优化速度决定使用windows共享功能进行文件传输。
2023-02-05 15:45:50 980
原创 SpringBoot动态更新yml文件
在系统运行过程中,可能由于一些配置项的简单变动需要重新打包启停项目,这对于在运行中的项目会造成数据丢失,客户操作无响应等情况发生,针对这类情况对开发框架进行升级提供yml文件实时修改更新功能。
2022-12-31 19:29:41 4611 9
原创 fastjson全局日期序列化设置导致JSONField无效
fastjson通过代码指定全局序列化返回时间格式,导致使用JSONField注解标注属性的特殊日期返回格式失效。
2022-12-17 13:38:03 592 1
原创 SpringBoot集成数据传输加密
近期在对开发框架安全策略方面进行升级优化,提供一些通用场景的解决方案,本文针对前后端数据传输加密进行简单的分享,处理流程设计如下图所示,本加密方法对原有项目兼容性较好,只需要更换封装好的加密Ajax请求方法,后端统一拦截判断是否需要解密即可生成的DES加密密钥一定是8的整数倍的位数生成RSA密钥对RSA密钥对有很多种格式,因为需要和前端算法库互联互通,这里选择的是1024位,Padding方式为PKSC1前端DES加密引入crypto.js第三方库前端RSA加密引入jsencrypt,js第三方
2022-12-04 14:50:43 1396
原创 web系统添加盲水印
为增加系统安全性,避免重要敏感信息通过截图方式泄露,对web页面增加盲水印标识,标注系统名称,登陆人,当前时间等信息,这里的盲水印指肉眼不可见的html水印。
2022-11-26 17:13:04 1063
原创 SpringBoot集成onlyoffice实现word文档编辑保存
onlyoffice为一款开源的office在线编辑组件,提供word/excel/ppt编辑保存操作。
2022-09-25 11:50:48 7122 13
原创 SpringBoot集成ffmpeg实现视频转码播放
之前构建过文件预览服务,对于视频部分前端播放组件限制只能为mp4格式,为了支持更多视频格式决定对方案进行升级,由于视频格式较多,针对每一种格式定制选择播放器不太现实,决定对视频源统一转码,转码后的格式为mp4,兼容性稳定且前后端改造工作较小。
2022-09-18 14:45:58 4736 1
原创 linux部署jar包脚本和注册开机启动
之前开发了windows部署jar包为服务的工具在实际生产环境中使用非常简单方便,公司部分项目是部署在linux系统中的,所以决定整合一个通用的jar包部署脚本,并注册为开机启动服务,为开发实施的同事提供方便,以下操作实际系统环境为centos8。...
2022-08-13 12:52:27 2700
原创 部署jar包windows服务工具
工具包含【服务名称】【jar包路径】【部署端口】【执行结果】【操作按钮】五个部分服务名称对应的就是安装后windows服务的名字jar包路径部署项目的jar文件物理路径部署端口默认为空不指定使用配置文件中端口,指定后使用自定义端口执行结果显示安装/卸载/启动/关闭服务适输出的操作日志操作按钮在进行服务操作前必须将所有配置确定输入后点击保存配置按钮安装/卸载/启动/停止四个按钮对应相关windows服务的操作服务安装后默认停止状态,需要手动启动,服务启动方式为自动。...
2022-08-06 22:47:38 2106 3
原创 knife4j通过js动态刷新全局参数
之前在为框架集成knife4j接口调试查看工具,使用了一段时间,使用体验上比较繁琐,因为接口都需要token,所以每次都要去f12查看token复制再创建全局参数,可能我只需要测试一个接口但是步骤少不了,针对此问题框架做了一些优化。...
2022-07-16 15:25:11 1204
原创 SpringBoot实现自定义路由覆盖
公司最近有一个项目二期需要对一些功能进行改造,涉及部分框架内置业务接口个性化定制,兼容老接口功能并且增加一部分新的数据返回,由于前端调用这些接口分布较多且较为零碎,修改测试成本较大,所以打算在框架层面提供路由覆盖功能,加快项目进度减少无技术含量的修改带来的系统风险...
2022-07-16 14:47:53 827 1
原创 SpringBoot整合atomikos实现跨库事务
框架之前完成了多数据源的动态切换及事务的处理,想更近一步提供一个简单的跨库事务处理功能,经过网上的搜索调研,大致有XA事务/SEGA事务/TCC事务等方案,因为业务主要涉及政府及企业且并发量不大,所以采用XA事务,虽然性能有所损失,但是可以保证数据的强一致性针对注册的数据源拷贝一份用于XA事务,使得本地事务和XA全局事务相互独立可选择的使用引入atomikos第三方组件注册XA数据源使用Druid连接池,需要使用DruidXADataSource数据源对象,再使用AtomikosDataSourceBe
2022-05-31 22:52:51 1769 1
原创 SpringBoot多数据源事务解决方案
背景之前有文章提供了springboot多数据源动态注册切换的整合方案,在后续使用过程中,发现在事务控制中有多种bug发生,决定对此问题进行分析与解决前情提要多数据源切换流程结构图如下所示,包含几个组成元素自定义的数据源配置处理,通过DruidDataSource对象动态注册到系统中自定义数据源标识注解与切面数据源切换时的上下文线程变量持有者自定义AbstractRoutingDataSource,实现数据源路由切换问题分析在Controller加入@Transiti
2022-05-01 14:06:37 6220 3
原创 SpringBoot集成mybatis拦截器修改表名
背景公司的框架是基于mysql5.7开发的,最近有一个应用项目部署在linux系统上,使用的是mysql8.0,安装时未开启大小写敏感忽略,客户又不允许重装mysql环境,导致一些框架代码和业务代码中表名使用大写的地方会出现表名找不不到的情况,所以需要进行统一处理自定义SQLAST适配器自定义ASTVisitorAdapter对表名进行修改public class MySqlExportTableAliasVisitor extends MySqlASTVisitorAdapter { @O
2022-05-01 14:03:22 4156
原创 SpringBoot集成消息队列
背景最近在对公司开发框架进行优化,框架内涉及到多处入库的日志记录,例如登录日志/操作日志/访问日志/业务执行日志,集成在业务代码中耦合度较高且占用业务操作执行时间,所以准备集成相关消息队列进行代码解耦方案规划现有的成熟消息队列组件非常多,例如RabbitMQ,ActiveMQ,Kafka等,考虑到业务并发量不高且框架已经应用于多个项目平稳运行,准备提供基于Redis的消息队列和集成ActiveMQ两种方案,Redis消息队列的好处是无需额外安装部署存量项目可平稳过度但消息无法持久化可能丢失,Activ
2022-04-23 14:24:18 2556 2
原创 SpringBoot集成knife4j
前言项目api编写有文档但是调试麻烦,需要借助postman/apipost等第三方工具,需要在开发框架中内置接口管理及调试功能增加开发便捷性pom配置说明,框架使用springboot版本为2.0.0.RELEASE <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-sta
2022-04-17 16:05:42 2307
原创 SpringBoot异步任务获取HttpServletRequest
前言在使用框架日常开发中需要在controller中进行一些异步操作减少请求时间,但是发现在使用@Anysc注解后会出现Request对象无法获取的情况,本文就此情况给出完整的解决方案原因分析@Anysc注解会开启一个新的线程,主线程的Request和子线程是不共享的,所以获取为null在使用springboot的自定带的线程共享后,代码如下,Request不为null,但是偶发的其中body/head/urlparam内容出现获取不到的情况,是因为异步任务在未执行完毕的情况下,主线程已经返回,拷
2022-04-09 15:47:58 4877 12
原创 SpringBoot自定义classloader加密保护class文件
背景最近针对公司框架进行关键业务代码进行加密处理,防止通过jd-gui等反编译工具能够轻松还原工程代码,相关混淆方案配置使用比较复杂且针对springboot项目问题较多,所以针对class文件加密再通过自定义的classloder进行解密加载,此方案并不是绝对安全,只是加大反编译的困难程度,防君子不防小人,整体加密保护流程图如下图所示maven插件加密使用自定义maven插件对编译后指定的class文件进行加密,加密后的class文件拷贝到指定路径,这里是保存到resource/coreclass
2022-02-19 18:26:52 3644 13
原创 SpringBoot自定义maven-plugin插件整合asm代码插桩
背景公司开发框架增加了web系统license授权证书校验模块,实行一台机器一个授权证书,初步方案是增加拦截器针对全局请求进行拦截校验,评估后认为校验方式单一,应该增加重要工具类,业务service实现中每个方法的进行校验,因为涉及代码量较大硬编码工作困难,故选择通过自定义maven插件在编译期间进行动态代码插桩操作项目配置新建maven项目设置打包方式<packaging>maven-plugin</packaging>增加依赖项 <!--使用doc的方式-
2022-02-19 18:25:47 1054
原创 SpringBoot在Tomcat部署war包
启动类配置继承SpringBootServletInitializer@SpringBootApplicationpublic class TestApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(TestApplication.class, args); } @Override
2022-01-16 17:02:48 1855
原创 SpringBoot整合达梦数据库
安装配置软件安装下载地址:https://www.dameng.com/view_61.html本文以x86 win64 DM8为例安装完毕后打开DM数据库配置助手创建数据库,设置字符集utf8,去除字符大小写敏感创建表空间及用户,最好是一个库对应一个用户一个表空间,创建用户时需要指定对应表空间需要对用户分配DBA操作权限数据表迁移针对现有项目或框架库需要同步迁移到达梦数据库,本文以mysql5.7为例,打开DM数据迁移工具,注意保持对象名大小写,选择表时全部取出再全选,迁移的表名
2022-01-08 15:52:43 4819 3
原创 SpringBoot整合Ehcache3
前言公司部门老项目要迁移升级java版本,需要进行缓存相关操作,原框架未支持这部分,经过调研java相关缓存方案大致分为ehcache和redis两种,redis的value最大值为500mb且超过1mb会对存取有性能影响,业务系统需要支持列表查询缓存就不可避免的涉及到大量的数据存取过滤,ehcache支持内存+磁盘缓存不用担心缓存容量问题,所以框架初步版本决定集成ehcache3,设计流程结构如下图所示缓存配置maven引用 <dependency>
2022-01-03 15:20:54 4244 3
原创 SpringBoot文件分片上传
背景最近好几个项目在运行过程中客户都提出文件上传大小的限制能否设置的大一些,用户经常需要上传好几个G的资料文件,如图纸,视频等,并且需要在上传大文件过程中进行优化实时展现进度条,进行技术评估后针对框架文件上传进行扩展升级,扩展接口支持大文件分片上传处理,减少服务器瞬时的内存压力,同一个文件上传失败后可以从成功上传分片位置进行断点续传,文件上传成功后再次上传无需等待达到秒传的效果,优化用户交互体验,具体的实现流程如下图所示文件MD5计算对于文件md5的计算我们使用spark-md5第三方库,大文件我们
2021-12-26 19:11:09 6999 4
原创 bat脚本一键配置java开发环境
背景在新电脑配置或者新人入职时需要对java开发相关环境进行配置安装,但时常会因为安装配置不到位或者操作错误导致时间的浪费,所以在空余时间收集了一系列软件的免安装版本,并且编写了相关配置脚本,让环境安装变得标准化。概览安装包目录如下如所示BaseEnv包含jdk(1.8),maven(3.2.5)ProgramEnv包含idea(2019.2)SoftEnv包含mysql(5.7),navicat(15),redis,redismanage(1.5.8)remark为安装总说明settin
2021-12-19 21:04:06 1836
原创 SpringBoot-Web应用安全策略实现
背景近期项目上线,甲方要求通过安全检测才能进行验收,故针对扫描结果对系统进行了一系列的安全加固,本文对一些常见的安全问题及防护策略进行介绍,提供对应的解决方案跨站脚本攻击XSS常发生于论坛评论等系统,现在富文本编辑器已对XSS进行了防护,但是我们任需要在后端接口进行数据过滤,常见防护策略是通过过滤器将恶意提交的脚本进行过滤与替换public class XSSFilter implements Filter { @Override public void init(FilterCo
2021-12-04 20:04:27 832
linux相关软件.rar
2021-08-08
springboot实现web系统Licence验证
2018-08-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人