![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 65
左直拳
程序猿
展开
-
自己动手写一个滑动验证码组件(后端为Spring Boot项目)
近期参加的项目,主管丢给我一个任务,说要支持滑动验证码。我身为50岁的软件攻城狮,当时正背着双手,好像一个受训的保安似的,中规中矩地参加每日站会,心想滑动验证码在今时今日已经是标配了,司空见惯,想必网上一搜一大把,岂非手到擒来。so easy,妈妈再也不用担心我的工作与学习。孰料在网上寻寻觅觅点点击击,结果就是凄凄惨惨戚戚。好像提的最多的就是AJ-Captcha,但居然貌似下线了,文档打不开,demo也不见。还有一个声称可能是最好的滑动验证码,但好像很复杂,并且日本少女漫画风,跟我有代沟。原创 2024-07-13 19:34:40 · 1036 阅读 · 2 评论 -
Spring Boot项目的控制器貌似只能get不能post问题
我这2天新建了一个Spring Boot项目测试,在控制器上写了两个接口,一个是支持Get方式访问,另一个支持Post方式访问,发现Get可以,而Post不行。前端Post后,报403,找不到这个方法。原创 2024-07-13 17:33:19 · 608 阅读 · 0 评论 -
mybatis批量插入时提示Parameter id not found问题
这个问题我已经遇过好几次了。总是不记得,每次都要折腾搜索一轮,有必要记录一下。原创 2024-07-11 21:12:52 · 397 阅读 · 0 评论 -
spring boot由于mapper文件中对象类型使用短名称无法注册bean而自动注入失败问题
前几天项目组准备使用若依框架,但编译其后台(spring cloud项目),死活运行不了,总是提示mybatis对象无法注入。无法注入的原因,是没有相应的bean,既无法构造对应的mybatis对象。后来同事告诉我,是因为mapper.xml里的对象类型使用了简写,而配置文件缺乏相应配置项的缘故。详细如下:SysConfigMapper.xml,可见其中的type只写了一个简短的类名,而不是完整的,带有包名的类名。对比我们平时习惯的写法:对于mapper中数据对象类型使用简短名称的做法,配置文件需要将原创 2024-05-16 20:37:59 · 338 阅读 · 0 评论 -
spring boot多模块项目中父项目与子项目的连接
中,写的应该是子项目的artifactId。当然,为了保持一致性,一般artifactId会和项目名称保持一致。但事实证明,不一致也不会报错。例如上图,ruoyi-file是项目名称,但该项目的artifactId是ruoyi-modules-file。正是通过这种方式,使得父项目的配置,可以被子项目所继承。中的值,是不是子项目的啥东东?artifactId?答案是项目名称,而不是artifactId。而我一直以为父项目的pom.xml的。原创 2024-05-16 20:13:43 · 464 阅读 · 0 评论 -
spring boot项目使用mybatis连接失败问题
我在一个Spring Boot项目中,加入数据库访问功能,使用mybatis。结果项目无法启动。以往没有出现过这种问题。不过,以前的项目,都是将现有项目拷贝过来,修修改改,数据库能访问就行,不会太多关注。原创 2023-09-12 09:14:00 · 1084 阅读 · 0 评论 -
spring boot中的标注@Component、@Service等
让我告诉你什么叫水货。原创 2024-04-18 18:46:13 · 1360 阅读 · 0 评论 -
spring cloud项目微服务间互相调用使用自定义标注进行鉴权方案
上面代码中用到这个自定义类。原创 2024-03-22 19:18:05 · 1344 阅读 · 0 评论 -
第三方集成站点带token访问SpringSecurity应用站点自动登录方案
近期有个WEB项目需要改造。业主找第三方搞了一个集成站点,将多个应用站点的链接集中放在一个导航页面。由于进入集成站点时已经登录过了,业主要求点击这些应用站点的链接时就不必再登录。以前做过类似项目,用的是单点登录。大家都用同一个登录系统,一次登录,到处同行,不亦快哉。不过也有一些缺点,一是单点登录比较复杂,不好搞。之前我们用过一个开源的单点登录系统cas,代码一大堆,部署也很复杂,然后每个使用它的应用都要有个客户端,总之非常复杂。出了问题也不知道是哪里的毛病。原创 2024-03-01 17:45:06 · 1173 阅读 · 1 评论 -
利用nginx内部访问特性实现静态资源授权访问
在nginx中,将静态资源设为internal;然后将前端的静态资源地址改为指向后端,在后端的响应头部中写上静态资源地址。近期客户对我们项目做安全性测评,暴露出一些安全性问题,其中一个是有些静态页面(*.html)无须授权即可直接访问,里面的信息一览无遗,不安全。这些静态页面都是arcgis地图页面,依赖arcgis for js,没有办法做成一般意义上的动态页面。或者说,该项目是个老项目,目前只处于维护阶段,大规模改头换面不现实。原创 2024-02-23 19:33:43 · 2107 阅读 · 3 评论 -
java程序读取并控制串口设备
监听串口,接收它们发过来的数据,进行处理。原创 2024-01-31 20:12:53 · 1673 阅读 · 0 评论 -
Intellij idea安装easy code后无法打开问题
我不知道他是怎么删的。我的intellij idea原本有一个EasyCodeMybatisCodeHelperPro插件,用得好地地,结果有天傻傻的安装了另一个插件easy code后,重启idea就打不开了。先把C:\Program Files\JetBrains\IntelliJ IDEA 2021.1.1\plugins\platform-images移除,得以打开idea,然后卸载easy code。你启动的时候,发现重复不加载该插件不就好了吗,现在软件都打不开,那怎么卸载嘛!原创 2024-01-15 16:59:09 · 847 阅读 · 0 评论 -
采用intellij idea作为IDE的java项目由于*.iml文件导致无法编译问题
从git上将spring boot项目下载,用intellij idea打开,结果无法编译,提示“程序包com.fasterxml.jackson.core不存在”。查看pom.xml,确实是没有显示依赖,但“External Libraries”里确实是有这个com.fasterxml.jackson.core。而且,同样的代码,其他同事一点问题没有。后来将项目中所有的iml文件删除,然后idea重新打开项目、编译,问题解决。.idea存放项目的配置信息,包括历史记录,版本控制信息等。原创 2024-01-02 18:18:12 · 799 阅读 · 0 评论 -
java项目应用MQTT传输数据
近期做的一个项目需要传输数据给第三方。根据协定,采用MQTT进行数据的发送和订阅。一般来说,不通系统进行数据对接,一般采用RESTFul接口,走http。mqtt的话,顾名思义,就是一个消息队列。相比RESTFul接口,MQTT方式也许有个好处就是,数据传输给对方后,对方可以收到一个提醒。这个提醒来自于消息队列,不用自己搞。利用这个提醒,也许可以做点啥。除此之外,我不知道还有什么更多的好处。MQTT的要素:1)broker,经纪人,即代理地址,如:tcp://10.0.2.18:1883。原创 2023-12-28 19:09:25 · 1812 阅读 · 0 评论 -
spring boot项目未将resource目录标志为资源目录导致配置文件无效因而运行报错问题
将程序代码发给同事,我自己能跑,他不能跑,提示无法构造redis对象。redis的链接写在配置文件里,其实是可以连接的。同事的操作系统是win11,我是win10,然后大家的idea版本也不一样,他就认为是操作系统或者idea的问题,一顿操作猛如虎。由于我在配置文件还指定了系统端口10080,但系统运行后,我观察到输出信息里,仍然为8080,感觉配置文件根本没有生效。最后发现是因为配置文件所在目录resources没有mark Directory as resources root。能编译,但不能运行。原创 2023-11-21 19:13:28 · 918 阅读 · 4 评论 -
使用spring boot的程序主线程中异步访问外部接口
主线程中有2个定时器,其中刷新设备数据每2秒1次,检查外部接口每10秒1次。可是由于外部接口访问超时,导致刷新设备数据受到影响,不能按时触发。之所以要在主线程中另开新线程,是因为外部接口不可控,无法预测。如果对方不在线,因而无法访问,只有靠超时抛出异常。如果这部分代码在主线程中运行,则会造成堵塞。原创 2023-10-25 18:14:06 · 805 阅读 · 0 评论 -
java中使用redis2个库并支持Redis哈希表
一个redis实例,默认包含16个库,序号从0到15。在redis命令行中,可以用select 序号来切换。我最近在做的一个项目中,需要使用redis的2个库。一个是由其他子系统写入,web后端(java)只读取;数据读出来,处理后,再写入另一个redis库,供WEB前端请求。同时,对Redis的操作支持哈希表。即运行过程中,可以修改哈希类型的键值。比如该值是一个Hash类型,赋值的时候,如果不存在指定元素,则添加;否则更新。这样做的好处是,该键值的元素,可由不同的步骤产生。原创 2023-09-26 16:50:38 · 465 阅读 · 0 评论 -
mybatis中找不到字段问题org.apache.ibatis.binding.BindingException: Parameter ‘id‘ not found
有两个参数,power和pageable。EasyCodeMybatisCodeHelper生成的代码中,只为分页加了对象p前缀(pageable.),却没有为字段加上对象前缀(power.),令人困惑。使用EasyCodeMybatisCodeHelper生成代码,调用其中的queryAllByLimit时报错了,说找不到参数“id"。如果参数只有一个对象,则无须显式写对象名;不过,如果只有一个参数,就无须加前缀。原创 2023-09-02 09:24:55 · 395 阅读 · 0 评论 -
mybatis批量插入报错Parameter ‘id‘ not found. Available parameters are [entities, param1]
看了以下参考文章,修改后问题解决。但作者没有说明是什么原因。mapper文件代码。原创 2023-08-17 20:21:57 · 481 阅读 · 0 评论 -
web访问存储在政务网内部华为云中的对象
某项目运行在政务网,涉及的照片、视频等数据存储在内部华为云。同时该项目也可以在互联网访问。这样子的话,照片、视频就有个安全性问题。抛开保密性不谈,一个视频动辄几个G,如果它的链接在互联网上长久有效,想播放就能播放,哪里有这么多带宽消耗得起。老实说,华为云在这方面处理得还可以,尽管对开发者不够友好。主要是帮助文档说得不清不楚,说一点漏一点,又缺乏示例,只能靠程序员苦苦探寻。不过,几乎所有得帮助文档都这个鬼样。原创 2023-06-02 14:04:08 · 536 阅读 · 0 评论 -
视频国标GB28181及一个相关平台的应用
wvp-GB28181-pro开源,免费,国产。在开发环境测试,效果不错。云端录像因为持续运行时间还不太长,目前只有几天,可靠性未知。WEB页面播放大华摄像头视频解决方案国标GB28181介绍7*24不间断录像wvp-GB28181-pro的docker镜像。原创 2023-05-12 09:02:13 · 2568 阅读 · 0 评论 -
Spring Boot Aop初接触
AOP(面向切面编程),或多或少都听过一点。名字比较怪,切面,不容易理解,但其中真正含义,无非就是旁路控制,非侵入式编码之类。比如我想加个操作日志功能,利用AOP,无须每个操作都加一个记录功能,只需写一个,就惠泽全部。这个是怎么做到的呢?也没有太玄妙的东西,原理类似于过滤器、拦截器,在底层和全局性的地方做了处理,各个业务功能都流经这些关卡。原创 2023-03-28 18:31:12 · 777 阅读 · 0 评论 -
java对时间取整点和加减时间
我发觉java对日期的操作特别繁琐,没有c#那么方便。不过我用的还是java1.8,也许高版本已经改善。下面的代码,给出对时间取整点(即抹去分钟),和加上若干小时。原创 2023-03-17 14:52:45 · 596 阅读 · 0 评论 -
基于springboot的restful接口的请求地址含有特殊字符被项目自带tomcat拦截问题
可以发现,地址后面的参数中,含有多个"filter[]",里面有一对方框。结果请求的时候,根本无法到达控制器。浏览器直接显示:HTTP Status 400 – Bad Request。写了拦截器、过滤器,想着将请求拦截下来,修改参数名。但请求也根本未到达这一层。估计是自带的tomcat版本是9,会拦截掉特殊字符。原创 2023-02-24 17:34:48 · 650 阅读 · 0 评论 -
ndf5文件转换为nc文件
客户有一批hdf5格式(.h5)的数据文件,希望能转换为nc文件*(.nc)。在转换前,我顺带了解了一下啥是hdf5和nc。原创 2023-02-15 18:16:32 · 730 阅读 · 1 评论 -
intellij idea中拷贝代码并添加为module
intellij idea中,将一份现成的子系统代码,拷贝、加入现有项目,会有一个如何识别、集成的问题。即代码粘贴到现有项目中以后,系统并不能识别,并不能顺利地成为现有代码的一部分(module)。2)也可以右击右上角的齿轮,选"Project Structure",将该子系统添加为module。1)在idea右侧的maven中,添加该子系统。原创 2022-12-22 15:52:10 · 711 阅读 · 1 评论 -
读取jwt里负载的信息
众所周知,JWT 的三个部分依次如下:Header(头部) ,元数据描述 Payload(负载) ,传输的数据 Signature(签名),Header + Payload的签名写成一行,就是下面的样子所谓读取jwt负载的信息,就是读取payload里的信息。原创 2022-11-24 09:29:37 · 2535 阅读 · 0 评论 -
使用java编写的命令行工具实现按下ctrl+c退出
前文再续,书接上一回,上一篇文章介绍了我,本文则介绍如何实现按下ctrl + c退出这个命令行。代码其实并不复杂。只是调试的时候被坑。原因是代码没什么问题,但在idea调试的时候,不起作用;发布出来运行,才有效果。搞来搞去,浪费了不少时间。原创 2022-11-21 18:53:47 · 1489 阅读 · 0 评论 -
使用java编写一个调用第三方可执行文件的windows命令行工具
客户有一批数据需要使用一个叫wodASC.exe的程序来处理。该程序是个命令行工具,好像是用fortran写的,比较坑,后面不能带参数,只能在运行它之后,输入待处理的文件名称,选转换字段,有点繁琐,并且每次只能处理一个文件。数据文件非常多,估计好几千个,靠人工处理,几乎不可能。原创 2022-11-21 18:36:20 · 658 阅读 · 0 评论 -
使用maven发布spring boot项目的脚本
注意指定项目需要在pom.xml中登记,路径中每一个节点需要在不同级别的pom.xml中登记。比如,上述语句中,plactform需要在当前级别的./pom.xml中登记。使用maven发布spring boot项目,失败!-am:项目依赖的项目也同样被发布。否则,会报找不到相关项目的错误。-pl:发布指定项目。原创 2022-11-14 18:11:17 · 342 阅读 · 0 评论 -
maven3.8.6的仓库镜像配置导致发布失败
什么“Failed to read artifact descriptor for 。。。”什么“Failed to collect dependencies 。。。”原创 2022-11-10 16:10:32 · 724 阅读 · 0 评论 -
spring boot项目中使用nacos作为配置中心
利用nacos作为配置中心,好处不言而喻,配置外置了,与程序解耦,并且nacos还提供了友好的管理界面。spring boot的卖点之一,就是与之前的spring相比,所谓约定重于配置,配置文件大大简化。现在使用nacos这种外置配置中心,是更加向前了一步。具体应用步骤:1、pom.xml中引入nacos支持包2、pom.xml中指向nacos3、配置文件中使用nacos配置项如此,即可使用nacos中的配置,修改啥的都很方便,根本不用远程服务器。原创 2022-11-10 15:04:21 · 4278 阅读 · 0 评论 -
微服务架构项目open-cloud的认证方式及单点登录应用
上次说道,我目前在做的一个项目,用的是基于一个叫open-cloud的微服务框架。该框架基于SpringCloud,认证使用oAuth2。见。虽然这个框架是几年前出来的,目前已经没有维护了,但对于我来说,仍然是学习的对象。原创 2022-11-08 18:48:17 · 806 阅读 · 0 评论 -
基于Spring Boot的程序的配置读取方案
基于Spring Boot的程序的配置读取,可以有2种方案。一是基础的,读取项目配置文件;二是读取外置的配置信息,比如利用nacos的配置管理服务,将配置写到nacos,程序运行时从nacos读取。方案一方便快捷,方案二配置与程序解耦,修改十分方便。各有所长。............原创 2022-06-20 19:08:39 · 1044 阅读 · 0 评论 -
SpringBoot采用jwt作为REST API安全机制的应用示例
对外提供数据接口,安全性是必须考虑的问题。JWT无需存储客户端状态,也无须预先分配api_key、secrity_key,仅需校验数据签名,检查时间戳,就能保证请求的身份信息的完整性和防止重放攻击;而对于客户端来说,也没有跨域问题,不失为一种轻量的REST API安全机制。......原创 2022-06-15 18:57:00 · 1023 阅读 · 1 评论 -
postman测试提交json数据到数据接口
postman测试post方式提交json数据到服务器接口原创 2022-06-15 14:09:18 · 2194 阅读 · 0 评论 -
docker中的java程序运行ffmpeg拉流
差点就放弃了。搞这些东西没有什么意义。有个java项目,需要开启ffmpeg拉流,然后想将这个程序部署在docker。不料颇多波折。幸而最后成功,差点就放弃了。记录如下。一、基本情况1、我们写了个视频拉流控制程序,依赖JDK1.8。运行过程中,需要启动操作系统的ffmpeg进行拉流。2、部署环境是统信欧拉版(UOS Euler) + docker。统信欧拉版是基于华为的OpenEuler(其前身是华为的服务器操作系统EulerOs),是将OpenEuler的内核 + 统信的桌面操作模块DDE。“统原创 2022-03-28 18:28:47 · 3721 阅读 · 13 评论 -
springboot中依赖对象实例化问题
一个问题,暴露出不少问题。然后解决这些问题。一、问题描述有个SpringBoot项目,启动的时候,读取某对象的属性报错,因为该对象为null。这个对象使用了@Autowired注解,看上去,是对象实例化的顺序问题。即A里面使用了B,B由容器负责实例化,但A使用B的时候,B却还没来得及注入。二、问题解决1、A等B实例化之后再使用B使用@PostConstruct注解,比如:@Servicepublic class AImpl implements A { @Autowired原创 2022-03-24 17:40:54 · 1531 阅读 · 0 评论 -
tomcat内存不足报GC overhead limit exceeded和外部无法访问10080端口问题
还不是很了解jvm。。。一、内存不足今天捣鼓了一下tomcat(tomcat8,windows版),服务是启动了,但等待了很长时间都无法访问。查看tomcat的报错日志,提示 GC overhead limit exceeded,超出GC开销限制。服务器本身内存是够的,有32G之多,作为一台开发服务器,已经是豪华配置了。可能没有配置JVM参数,还是默认值,可能只有一、二百兆。因为tomcat里面挂了几个巨无霸应用,所以内存就不够了。根据网上文章的提示,修改tomcat的运行参数。1、打开tomca原创 2022-03-10 19:18:31 · 3520 阅读 · 0 评论 -
微服务部署
自己动手,丰衣足食。看上去很琐碎繁杂,其实动手部署一次就好。现在计算机软件开发,发展出新花样。其中有前后端分离,和微服务。其实这2样东东,对软件产品本身并没有什么帮助,软件产品中应用了这些架构,并不会比没有应用它们的产品更优秀。甚至,还会有一些反作用。比如,前后端分离,数据只能通过请求获取,服务器处理并直接输出这种模式就没有了(websocket除外)。异步操作在数据量大的情况下体验比较好,如果只有一丁点数据,其实直接输出效果更佳。与前后端分离相伴生的单页面应用,加大了编码的复杂性,需要考虑以往WEB开原创 2021-12-21 20:58:07 · 1048 阅读 · 0 评论