
Java
文章平均质量分 67
左直拳
程序猿
展开
-
前后端分离项目集成单点登录项目CAS5.18
之前我在项目中使用过CAS作为单点登录服务,不过那些项目,不管是asp.net MVC项目,还是java的spring boot项目,是前后端不分的,只要使用CAS的客户端(对于asp.net mvc项目来说,cas的客户端就是DotNetCasClient.dll,而java项目,cas客户端就是一些java包),然后配置一下就好了。现在普遍前后端分离,该如何使用CAS呢?原创 2024-12-31 20:17:31 · 1088 阅读 · 0 评论 -
mybatis往数据库里插入记录后自动返回记录ID
最典型的,是插入一条记录,为了得到记录的ID(主键,自增字段),然后又查找了一遍,并且这个查找,因为现在还不知道ID,所以又结合了过滤条件。几十万记录的表里查找,不说大海捞针,也是沙堆里淘宝,”千淘万漉虽辛苦,吹尽狂沙始到金“,服了。近期维护一个接手项目,因为找bug,重构其中一个业务处理逻辑,其中包括性能优化。其实,就算性能与bug无关,按照我的秉性,也会忍不住半夜起来优化一下。但是,以前搞.NET的时候,插入记录,系统会自动刷新实体类,为里面的主键ID赋值,根本不需要自己去查找。原创 2024-12-18 11:50:08 · 349 阅读 · 0 评论 -
多模块的spring boot项目发布指定模块的脚本
我有一个多模块的Spring Boot项目,里面有基础模块,有业务模块,业务模块依赖一些基础模块。发布的时候,如果单独将某个模块发布,一般会报错。所以我都是整个项目,无论多少个模块,不管3721,全部发布一遍。这样做成功是成功了,但时间比较长,要几分钟才能发布完。次数一多,浪费的时间就很可观了。原创 2024-12-17 17:31:56 · 853 阅读 · 0 评论 -
web编程之SSE初探
SSE(Server Sent Events),是一种服务器向浏览器发送消息的技术,基于http协议。WebSocket大家耳熟能详,是WEB中一种客户端和服务器采用长连接,可长时间保持通信通道的技术,不过它是双向的,服务器可以向客户端推送消息,客户端也同样可以向服务器发送消息。而SSE则是单向的,只能是服务器向客户端发送消息。原创 2024-12-17 16:46:03 · 1031 阅读 · 0 评论 -
java访问华为网管软件iMaster NCE的北向接口时传递参数问题
上一篇文章介绍了利用《》的一般性步骤,这里详细介绍其中一个读取性能数据的示例。原因是读取华为网管软件北向接口,完全找不到可供参考的例子。如果不需要传递什么参数,就能获取到结果,比如获取全部网元数据,这种相对还比较简单。但如果需要指定参数,比如读取指定网元的性能数据,如何传递参数就是个大问题。我上周尝试去读取NCE软件的性能接口时,反复向NCE软件请求,结果总是返回冷冰冰的报错信息:“Object type error”,说是传递参数不对,后来才知道,要将网元信息完整的传过去才可以。原创 2024-11-07 15:48:19 · 998 阅读 · 0 评论 -
java访问华为网管软件iMaster NCE的北向接口
NCE的XML接口感觉就是异常繁琐,数据类型非常多,传参、返回值都非常复杂。如果是http接口的话,参数全部是json,结构简单明了。而且,利用XML传数据,少量数据还好,大批量数据就不行,XML相比json,实在笨重,传输量太大了。华为这个nce软件,叫网管软件,它接管了整个局域网,然后在上面做各种逻辑划分和管理。不过,它加载需要一段时间。比如我们项目,设备通电以后,20分钟后网络才能访问。再上面做一些更改,比如用户解锁,要约2个小时才生效。原创 2024-10-31 19:56:20 · 1495 阅读 · 0 评论 -
Spring Boot项目使用多线程执行定时任务
我在一个Spring Boot项目中,采用定时器执行一些操作,比如10秒就发送一次数据。这些操作有2个,如下所示。我就想,虽然这两个操作各自指定了时间频率,但如果其中一个操作非常耗时,会不会影响其他操作呢?答案是会。怎么办呢?AI告诉我,引入多线程。原创 2024-10-10 11:44:16 · 969 阅读 · 0 评论 -
windows下安装rabbitMQ并开通管理界面和允许远程访问
如题,在windows下安装一个rabbitMQ server;然后用浏览器访问其管理界面;由于rabbitMQ的默认账号guest默认只能本机访问,因此需要设置允许其他机器远程访问。这跟mysql的思路很像,默认只能本地访问,要远程访问需要另外设置,并且应该是新增一个账号来支持远程。这种做法一下子看上去很奇怪,数据库、消息队列天然就是要大家共同使用的,只能本机使用有什么意义?但细想好像又没有什么毛病,虽然有点不方便,但安全意识是有了。以下是我初次在项目中使用rabbitMQ的一点记录。原创 2024-09-29 16:19:32 · 1822 阅读 · 0 评论 -
设置spring boot禁止日志输出到控制台
我们一个Spring Boot项目,使用了org.slf4j.Logger.info记录日志。结果运行的时候,系统除了将日志记录到日志文件,还将日志打印到控制台。由于日志太多太密集,屏幕不停地滚动,令人目不暇接,加上乱码,简直不知所谓。为啥日志还会自动输出到控制台呢?我一向孤陋寡闻,好奇去问AI。原创 2024-09-14 16:38:00 · 2183 阅读 · 0 评论 -
自己动手写一个滑动验证码组件(后端为Spring Boot项目)
近期参加的项目,主管丢给我一个任务,说要支持滑动验证码。我身为50岁的软件攻城狮,当时正背着双手,好像一个受训的保安似的,中规中矩地参加每日站会,心想滑动验证码在今时今日已经是标配了,司空见惯,想必网上一搜一大把,岂非手到擒来。so easy,妈妈再也不用担心我的工作与学习。孰料在网上寻寻觅觅点点击击,结果就是凄凄惨惨戚戚。好像提的最多的就是AJ-Captcha,但居然貌似下线了,文档打不开,demo也不见。还有一个声称可能是最好的滑动验证码,但好像很复杂,并且日本少女漫画风,跟我有代沟。原创 2024-07-13 19:34:40 · 1309 阅读 · 2 评论 -
Spring Boot项目的控制器貌似只能get不能post问题
我这2天新建了一个Spring Boot项目测试,在控制器上写了两个接口,一个是支持Get方式访问,另一个支持Post方式访问,发现Get可以,而Post不行。前端Post后,报403,找不到这个方法。原创 2024-07-13 17:33:19 · 952 阅读 · 0 评论 -
mybatis批量插入时提示Parameter id not found问题
这个问题我已经遇过好几次了。总是不记得,每次都要折腾搜索一轮,有必要记录一下。原创 2024-07-11 21:12:52 · 663 阅读 · 0 评论 -
spring boot由于mapper文件中对象类型使用短名称无法注册bean而自动注入失败问题
前几天项目组准备使用若依框架,但编译其后台(spring cloud项目),死活运行不了,总是提示mybatis对象无法注入。无法注入的原因,是没有相应的bean,既无法构造对应的mybatis对象。后来同事告诉我,是因为mapper.xml里的对象类型使用了简写,而配置文件缺乏相应配置项的缘故。详细如下:SysConfigMapper.xml,可见其中的type只写了一个简短的类名,而不是完整的,带有包名的类名。对比我们平时习惯的写法:对于mapper中数据对象类型使用简短名称的做法,配置文件需要将原创 2024-05-16 20:37:59 · 482 阅读 · 0 评论 -
spring boot多模块项目中父项目与子项目的连接
中,写的应该是子项目的artifactId。当然,为了保持一致性,一般artifactId会和项目名称保持一致。但事实证明,不一致也不会报错。例如上图,ruoyi-file是项目名称,但该项目的artifactId是ruoyi-modules-file。正是通过这种方式,使得父项目的配置,可以被子项目所继承。中的值,是不是子项目的啥东东?artifactId?答案是项目名称,而不是artifactId。而我一直以为父项目的pom.xml的。原创 2024-05-16 20:13:43 · 621 阅读 · 0 评论 -
spring boot项目使用mybatis连接失败问题
我在一个Spring Boot项目中,加入数据库访问功能,使用mybatis。结果项目无法启动。以往没有出现过这种问题。不过,以前的项目,都是将现有项目拷贝过来,修修改改,数据库能访问就行,不会太多关注。原创 2023-09-12 09:14:00 · 1286 阅读 · 0 评论 -
spring boot中的标注@Component、@Service等
让我告诉你什么叫水货。原创 2024-04-18 18:46:13 · 1970 阅读 · 0 评论 -
spring cloud项目微服务间互相调用使用自定义标注进行鉴权方案
上面代码中用到这个自定义类。原创 2024-03-22 19:18:05 · 1688 阅读 · 0 评论 -
第三方集成站点带token访问SpringSecurity应用站点自动登录方案
近期有个WEB项目需要改造。业主找第三方搞了一个集成站点,将多个应用站点的链接集中放在一个导航页面。由于进入集成站点时已经登录过了,业主要求点击这些应用站点的链接时就不必再登录。以前做过类似项目,用的是单点登录。大家都用同一个登录系统,一次登录,到处同行,不亦快哉。不过也有一些缺点,一是单点登录比较复杂,不好搞。之前我们用过一个开源的单点登录系统cas,代码一大堆,部署也很复杂,然后每个使用它的应用都要有个客户端,总之非常复杂。出了问题也不知道是哪里的毛病。原创 2024-03-01 17:45:06 · 1287 阅读 · 1 评论 -
利用nginx内部访问特性实现静态资源授权访问
在nginx中,将静态资源设为internal;然后将前端的静态资源地址改为指向后端,在后端的响应头部中写上静态资源地址。近期客户对我们项目做安全性测评,暴露出一些安全性问题,其中一个是有些静态页面(*.html)无须授权即可直接访问,里面的信息一览无遗,不安全。这些静态页面都是arcgis地图页面,依赖arcgis for js,没有办法做成一般意义上的动态页面。或者说,该项目是个老项目,目前只处于维护阶段,大规模改头换面不现实。原创 2024-02-23 19:33:43 · 2535 阅读 · 3 评论 -
java程序读取并控制串口设备
监听串口,接收它们发过来的数据,进行处理。原创 2024-01-31 20:12:53 · 2596 阅读 · 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 · 1276 阅读 · 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 · 1045 阅读 · 0 评论 -
java项目应用MQTT传输数据
近期做的一个项目需要传输数据给第三方。根据协定,采用MQTT进行数据的发送和订阅。一般来说,不通系统进行数据对接,一般采用RESTFul接口,走http。mqtt的话,顾名思义,就是一个消息队列。相比RESTFul接口,MQTT方式也许有个好处就是,数据传输给对方后,对方可以收到一个提醒。这个提醒来自于消息队列,不用自己搞。利用这个提醒,也许可以做点啥。除此之外,我不知道还有什么更多的好处。MQTT的要素:1)broker,经纪人,即代理地址,如:tcp://10.0.2.18:1883。原创 2023-12-28 19:09:25 · 2475 阅读 · 0 评论 -
spring boot项目未将resource目录标志为资源目录导致配置文件无效因而运行报错问题
将程序代码发给同事,我自己能跑,他不能跑,提示无法构造redis对象。redis的链接写在配置文件里,其实是可以连接的。同事的操作系统是win11,我是win10,然后大家的idea版本也不一样,他就认为是操作系统或者idea的问题,一顿操作猛如虎。由于我在配置文件还指定了系统端口10080,但系统运行后,我观察到输出信息里,仍然为8080,感觉配置文件根本没有生效。最后发现是因为配置文件所在目录resources没有mark Directory as resources root。能编译,但不能运行。原创 2023-11-21 19:13:28 · 1188 阅读 · 4 评论 -
使用spring boot的程序主线程中异步访问外部接口
主线程中有2个定时器,其中刷新设备数据每2秒1次,检查外部接口每10秒1次。可是由于外部接口访问超时,导致刷新设备数据受到影响,不能按时触发。之所以要在主线程中另开新线程,是因为外部接口不可控,无法预测。如果对方不在线,因而无法访问,只有靠超时抛出异常。如果这部分代码在主线程中运行,则会造成堵塞。原创 2023-10-25 18:14:06 · 898 阅读 · 0 评论 -
java中使用redis2个库并支持Redis哈希表
一个redis实例,默认包含16个库,序号从0到15。在redis命令行中,可以用select 序号来切换。我最近在做的一个项目中,需要使用redis的2个库。一个是由其他子系统写入,web后端(java)只读取;数据读出来,处理后,再写入另一个redis库,供WEB前端请求。同时,对Redis的操作支持哈希表。即运行过程中,可以修改哈希类型的键值。比如该值是一个Hash类型,赋值的时候,如果不存在指定元素,则添加;否则更新。这样做的好处是,该键值的元素,可由不同的步骤产生。原创 2023-09-26 16:50:38 · 527 阅读 · 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 · 485 阅读 · 0 评论 -
mybatis批量插入报错Parameter ‘id‘ not found. Available parameters are [entities, param1]
看了以下参考文章,修改后问题解决。但作者没有说明是什么原因。mapper文件代码。原创 2023-08-17 20:21:57 · 604 阅读 · 0 评论 -
web访问存储在政务网内部华为云中的对象
某项目运行在政务网,涉及的照片、视频等数据存储在内部华为云。同时该项目也可以在互联网访问。这样子的话,照片、视频就有个安全性问题。抛开保密性不谈,一个视频动辄几个G,如果它的链接在互联网上长久有效,想播放就能播放,哪里有这么多带宽消耗得起。老实说,华为云在这方面处理得还可以,尽管对开发者不够友好。主要是帮助文档说得不清不楚,说一点漏一点,又缺乏示例,只能靠程序员苦苦探寻。不过,几乎所有得帮助文档都这个鬼样。原创 2023-06-02 14:04:08 · 630 阅读 · 0 评论 -
视频国标GB28181及一个相关平台的应用
wvp-GB28181-pro开源,免费,国产。在开发环境测试,效果不错。云端录像因为持续运行时间还不太长,目前只有几天,可靠性未知。WEB页面播放大华摄像头视频解决方案国标GB28181介绍7*24不间断录像wvp-GB28181-pro的docker镜像。原创 2023-05-12 09:02:13 · 3110 阅读 · 0 评论 -
Spring Boot Aop初接触
AOP(面向切面编程),或多或少都听过一点。名字比较怪,切面,不容易理解,但其中真正含义,无非就是旁路控制,非侵入式编码之类。比如我想加个操作日志功能,利用AOP,无须每个操作都加一个记录功能,只需写一个,就惠泽全部。这个是怎么做到的呢?也没有太玄妙的东西,原理类似于过滤器、拦截器,在底层和全局性的地方做了处理,各个业务功能都流经这些关卡。原创 2023-03-28 18:31:12 · 831 阅读 · 0 评论 -
java对时间取整点和加减时间
我发觉java对日期的操作特别繁琐,没有c#那么方便。不过我用的还是java1.8,也许高版本已经改善。下面的代码,给出对时间取整点(即抹去分钟),和加上若干小时。原创 2023-03-17 14:52:45 · 744 阅读 · 0 评论 -
基于springboot的restful接口的请求地址含有特殊字符被项目自带tomcat拦截问题
可以发现,地址后面的参数中,含有多个"filter[]",里面有一对方框。结果请求的时候,根本无法到达控制器。浏览器直接显示:HTTP Status 400 – Bad Request。写了拦截器、过滤器,想着将请求拦截下来,修改参数名。但请求也根本未到达这一层。估计是自带的tomcat版本是9,会拦截掉特殊字符。原创 2023-02-24 17:34:48 · 713 阅读 · 0 评论 -
ndf5文件转换为nc文件
客户有一批hdf5格式(.h5)的数据文件,希望能转换为nc文件*(.nc)。在转换前,我顺带了解了一下啥是hdf5和nc。原创 2023-02-15 18:16:32 · 1100 阅读 · 1 评论 -
intellij idea中拷贝代码并添加为module
intellij idea中,将一份现成的子系统代码,拷贝、加入现有项目,会有一个如何识别、集成的问题。即代码粘贴到现有项目中以后,系统并不能识别,并不能顺利地成为现有代码的一部分(module)。2)也可以右击右上角的齿轮,选"Project Structure",将该子系统添加为module。1)在idea右侧的maven中,添加该子系统。原创 2022-12-22 15:52:10 · 815 阅读 · 1 评论 -
读取jwt里负载的信息
众所周知,JWT 的三个部分依次如下:Header(头部) ,元数据描述 Payload(负载) ,传输的数据 Signature(签名),Header + Payload的签名写成一行,就是下面的样子所谓读取jwt负载的信息,就是读取payload里的信息。原创 2022-11-24 09:29:37 · 2822 阅读 · 0 评论 -
使用java编写的命令行工具实现按下ctrl+c退出
前文再续,书接上一回,上一篇文章介绍了我,本文则介绍如何实现按下ctrl + c退出这个命令行。代码其实并不复杂。只是调试的时候被坑。原因是代码没什么问题,但在idea调试的时候,不起作用;发布出来运行,才有效果。搞来搞去,浪费了不少时间。原创 2022-11-21 18:53:47 · 1765 阅读 · 0 评论 -
使用java编写一个调用第三方可执行文件的windows命令行工具
客户有一批数据需要使用一个叫wodASC.exe的程序来处理。该程序是个命令行工具,好像是用fortran写的,比较坑,后面不能带参数,只能在运行它之后,输入待处理的文件名称,选转换字段,有点繁琐,并且每次只能处理一个文件。数据文件非常多,估计好几千个,靠人工处理,几乎不可能。原创 2022-11-21 18:36:20 · 721 阅读 · 0 评论 -
使用maven发布spring boot项目的脚本
注意指定项目需要在pom.xml中登记,路径中每一个节点需要在不同级别的pom.xml中登记。比如,上述语句中,plactform需要在当前级别的./pom.xml中登记。使用maven发布spring boot项目,失败!-am:项目依赖的项目也同样被发布。否则,会报找不到相关项目的错误。-pl:发布指定项目。原创 2022-11-14 18:11:17 · 373 阅读 · 0 评论 -
maven3.8.6的仓库镜像配置导致发布失败
什么“Failed to read artifact descriptor for 。。。”什么“Failed to collect dependencies 。。。”原创 2022-11-10 16:10:32 · 809 阅读 · 0 评论