- 博客(1413)
- 资源 (6)
- 收藏
- 关注
原创 第三方集成站点带token访问SpringSecurity应用站点自动登录方案
近期有个WEB项目需要改造。业主找第三方搞了一个集成站点,将多个应用站点的链接集中放在一个导航页面。由于进入集成站点时已经登录过了,业主要求点击这些应用站点的链接时就不必再登录。以前做过类似项目,用的是单点登录。大家都用同一个登录系统,一次登录,到处同行,不亦快哉。不过也有一些缺点,一是单点登录比较复杂,不好搞。之前我们用过一个开源的单点登录系统cas,代码一大堆,部署也很复杂,然后每个使用它的应用都要有个客户端,总之非常复杂。出了问题也不知道是哪里的毛病。
2024-03-01 17:45:06 1018 1
原创 修改centos7的dns解决docker拉取镜像超时问题
发觉里面的地址设为114.114.114.114。114我有点印象,估计是中国电信的。网上文章说改为8.8.8.8。据说114用于国内,8888(发发发发)用于国外。但我两个都不用,我改为180.76.76.76,这个是百度的公共DNS服务器。近期在一台centos7的服务器上部署系统,拉取docker镜像时总是超时,如图所示。网上有教程说,可以修改操纵系统的dns地址,试了一下,果然搞定。忽如一夜春风来,两行白鹭上西天。
2024-03-01 11:28:41 412
原创 利用nginx内部访问特性实现静态资源授权访问
在nginx中,将静态资源设为internal;然后将前端的静态资源地址改为指向后端,在后端的响应头部中写上静态资源地址。近期客户对我们项目做安全性测评,暴露出一些安全性问题,其中一个是有些静态页面(*.html)无须授权即可直接访问,里面的信息一览无遗,不安全。这些静态页面都是arcgis地图页面,依赖arcgis for js,没有办法做成一般意义上的动态页面。或者说,该项目是个老项目,目前只处于维护阶段,大规模改头换面不现实。
2024-02-23 19:33:43 1304 1
原创 nacos用作注册中心
但是微服务不是这么玩的,十月革命一声炮响,送来了nacos。所有的微服务都在nacos上注册,由nacos记录微服务的IP信息,当有请求时,nacos将请求分配至对应的微服务。这一切,对上层应用都是透明的,我们无须关心微服务的物理地址和处理烦琐的跳转,只要所有微服务都注册于同一个nacos,且用同一个命名空间,不管微服务安装在哪台服务器,网络相通的情况下,就能访问到想要的微服务。nacos除了用作配置中心,即可以将配置信息由配置文件转移到nacos上,更便于修改和维护外,更重要的,是用作微服务的注册中心。
2024-02-19 16:18:17 409
原创 我的2023
到2023年,五一回来,风云突变,一口气干掉了至少30%,连HR都撵走了。然后一路迁延,淋漓不尽,又断断续续开了一些,再加上看不到希望,自己走的,目前只有一半人了。人走了,原本的工作就分到剩下的人头上,后者原本就忙不过来,现在更加是喘口气都没时间。加上中途接手,半生不熟,硬着头皮赶鸭子上架,其中艰难,可想而知。我今年过了生日,就50岁了。下半年开始频繁出差,6、7、8、9、10、11都在东奔西走,周末加班,996,997,甚至907。这是一个资质平庸,见识短浅,胸无大痣,耽于安乐,蹉跎岁月的程序员的故事。
2024-02-02 17:44:12 417
原创 将nacos从1.3升级到2.3
这个非常重要。所谓的备份,首先是指把nacos的配置全部导出来,异机保存,下载到本地。同时不要删除现有的docker容器,可以将其停止,这样不影响新创建的容器使用现有的端口。不过,容器名不能重复。比如现有容器名为nacos,那么新创建的容器可以叫ncos230。
2024-01-26 11:30:45 1221
原创 docker-compose初探
我一直直接使用docker命令来创建容器,没有怎么用过docker-compose。也不知道docker-compose和docker有什么区别,docker-compose有什么好处。现在我约略认为,docker-compose是一个简化docker命令的工具,或者说,它是能将docker各种繁琐的命令集成到配置文件的工具,所谓compose也者,就是组合的意思吧。
2024-01-25 18:58:38 434
原创 下载nacos 2.3 for arm64
客户组织安全测试,我们系统测出了好几个高危问题,其中大部分是关于nacos的。原先的nacos版本太低了,是1.3的。现在(2024.01)已经是2.3了,应该装个新的。我们使用docker安装nacos,原本很简单的,只有一个小小的问题,就是服务器的CPU是arm64架构的。现在一般政府项目都是这样,国产化,信创,CPU必定是arm架构。因此,nacos也需要下载支持arm64的镜像。还有一个问题是,服务器不在互联网上,怎么下载?思路:1)在能上网的服务器上下载支持arm64的镜像。
2024-01-25 18:25:55 622
原创 vue3项目中typescript如何export引入(imported)的interface
引入接口后,不能原封不动地直接export出去。typescript支持面向对象语言中常见的接口(interface)、类(class)等。但我近几天发现,一个interface,通过import引入后,如果直接再export出去,是不行的。语法没有错,但运行时似乎出问题。比如,我写一个组件timeline,文件结构如下图所示。为规范其他模块调用,我在_type.ts中定义了一个接口,是关于数据类型的。
2024-01-25 17:06:05 676
原创 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 600
原创 vue项目使用typescript创建抽象类及其使用
如题,可以在vue项目使用typescript创建抽象类,然后使用这个抽象类。通过TypeScript,可以在前端应用抽象类了。抽象类的好处,可以同时满足继承和多态,好处多多。
2024-01-11 18:41:15 544
原创 创建EasyCodeMybatisCodeHelperPro模板文件用于将数据库表生成前端json文件
现在的前端,越来越像后端。当我听到我同事说这些名为*.data.ts的json格式文件,是通过工具自动导出来时,我感到震惊,50岁的心灵遭到暴击,内心一阵被时代抛弃的恐慌。前端的话,我复制了其中的实体类模板,改名为:vue.json.vm,然后稍为改改里面的内容,即可得到前端模板。在intellij idea中,通过插件EasyCodeMybatisCodeHelperPro,从现有的模板文件中选择一个复制粘贴,然后稍为修改,即可得到一个合适的模板文件。模板里的普通正文,会输出到导出文件里。
2024-01-09 18:41:19 640
原创 采用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 589
原创 java项目应用MQTT传输数据
近期做的一个项目需要传输数据给第三方。根据协定,采用MQTT进行数据的发送和订阅。一般来说,不通系统进行数据对接,一般采用RESTFul接口,走http。mqtt的话,顾名思义,就是一个消息队列。相比RESTFul接口,MQTT方式也许有个好处就是,数据传输给对方后,对方可以收到一个提醒。这个提醒来自于消息队列,不用自己搞。利用这个提醒,也许可以做点啥。除此之外,我不知道还有什么更多的好处。MQTT的要素:1)broker,经纪人,即代理地址,如:tcp://10.0.2.18:1883。
2023-12-28 19:09:25 923
原创 项目应用多级缓存示例
事实证明,这种多级缓存机制下,前端展示数据非常迅速,及时。虽然前端和WEB后端之间没有使用websocket进行数据传输,而是使用了最笨的定期获取,但丝毫没有影响前端的用户体验。2)WEB后端设置一个定时器,每2秒读一次redids的1号库,处理后写入redis的2号库。3)前端虽有多个组件,但不是每一个组件都向后端请求,而是统一请求一次,存入前端缓存,然后全部组件都从前端缓存中读取,对性能是一个保障。2)后端定期处理原始数据,将结果缓存,当前端请求时,返回缓存中的该结果,减少重复劳动,提高了性能。
2023-12-22 18:00:11 620
原创 windows下mysql8修改my.ini设置datadir后无法启动问题
mysql默认数据库文件在安装目录下。创建数据库的时候,并不能指定数据文件存放位置。这就很扯。它只能通过修改mysql.ini来更改数据文件存放目录,而且是一刀切的,没有办法做到数据文件和日志文件分开存放。假如服务器有多个盘,就不能利用磁盘不同IO的优势。但是,既然是服务器,通常会做阵列的吧,做了阵列,就无所谓哪个盘了。我这次要说的,是修改mysql.ini后,mysql无法启动的问题。我遇到的是2个原因:一个是mysql.ini修改后字符编码被改变,导致mysql无法识别;
2023-12-12 09:28:09 1072
原创 mysql分别在windows和linux下的备份策略
mysql数据库该怎么备份呢?数据库备份有几个概念:全量备份、增量备份、差异备份。当然啦,数据库备份又有冷备份和热备份,即物理备份和逻辑备份之分。冷备份就是将mysql停了,然后直接拷贝它的数据文件,简单粗暴。问题是,数据库怎可轻易停止或重启?所以我们通常说的备份都是指热备份,即逻辑备份。逻辑备份包括全量备份、增量备份、差异备份。全量备份就是整个库备份。增量备份是将上一次全量备份或增量备份后的变化备份。差异备份是将上次全量备份后的变化备份。所以增量备份和差异备份有重叠。
2023-12-11 10:42:16 338
原创 oracle12c的job没有自动执行,手动运行提示任务1%正在运行问题
有个oracle12c上的job,提交到dbms_job,不知道什么时候开始,停下来了,没有自动运行。手动关闭这个job,重新打开,不行;删除JOB,重新创建,也不行。手动运行,可以,但提示“任务1%正在运行”。该job运行一个存储过程。手动运行该存储过程,也没有问题。反正就是不会自动执行,也不知道这个1%是什么意思,是怎么来的。在网上寻寻觅觅,也没有找到这个“任务1%正在运行”问题的解决办法。有的文章说是重启(不知道是重启数据库还是重启服务器,估计是重启服务器,彻底一些);
2023-12-06 10:11:26 280
原创 vue3使用provider+ inject直接将参数由祖宗传送给孙子
如题。在vue项目中,如果祖宗想将参数传递给孙子甚至更小一辈的组件,是一件麻烦事。可以通过爷爷-儿子-孙子-曾孙这样的链条,一辈辈地传承下去,但未免太繁琐、太蠢了些;也可以通过store间接传送,但如何触发孙子们去获取是个问题。第三种方法是通过provider和inject方式。老祖宗provider,后代inject。在以下示例中,祖宗页面将一个json对象传给孙辈。其中,祖宗provider一个函数,函数返回一个json对象state。
2023-11-23 22:24:04 575
原创 nginx中将指定文件夹设置为虚拟目录
话说,我们系统有照相机和摄像头,可以产生照片和视频。通过nginx将照片和视频所在文件夹映射为虚拟目录,外部即可访问。,如果指定的图片不存在,则以“/photo/nophoto.jpg”代替。是照片和视频所在文件夹,后面一定要带个斜杠。如何映射(或曰,转发)呢?记得目录后面要加个斜杠“/"。
2023-11-21 19:36:31 545
原创 spring boot项目未将resource目录标志为资源目录导致配置文件无效因而运行报错问题
将程序代码发给同事,我自己能跑,他不能跑,提示无法构造redis对象。redis的链接写在配置文件里,其实是可以连接的。同事的操作系统是win11,我是win10,然后大家的idea版本也不一样,他就认为是操作系统或者idea的问题,一顿操作猛如虎。由于我在配置文件还指定了系统端口10080,但系统运行后,我观察到输出信息里,仍然为8080,感觉配置文件根本没有生效。最后发现是因为配置文件所在目录resources没有mark Directory as resources root。能编译,但不能运行。
2023-11-21 19:13:28 794
原创 使用spring boot的程序主线程中异步访问外部接口
主线程中有2个定时器,其中刷新设备数据每2秒1次,检查外部接口每10秒1次。可是由于外部接口访问超时,导致刷新设备数据受到影响,不能按时触发。之所以要在主线程中另开新线程,是因为外部接口不可控,无法预测。如果对方不在线,因而无法访问,只有靠超时抛出异常。如果这部分代码在主线程中运行,则会造成堵塞。
2023-10-25 18:14:06 764
原创 批处理文件中运行指定路径下的exe文件
如图所示,假设有 F:\数据采集和控制模拟程序\2022\SmlData/ChangeValue.exe,现在在上一层目录中设置批处理文件,运行这个exe文件,该如何写呢?其中,cd /d 是改变工作目录,默认是 c:/windows/system32,%~dp0是本批处理文件所在路径。
2023-10-25 13:44:17 1248
原创 java中使用redis2个库并支持Redis哈希表
一个redis实例,默认包含16个库,序号从0到15。在redis命令行中,可以用select 序号来切换。我最近在做的一个项目中,需要使用redis的2个库。一个是由其他子系统写入,web后端(java)只读取;数据读出来,处理后,再写入另一个redis库,供WEB前端请求。同时,对Redis的操作支持哈希表。即运行过程中,可以修改哈希类型的键值。比如该值是一个Hash类型,赋值的时候,如果不存在指定元素,则添加;否则更新。这样做的好处是,该键值的元素,可由不同的步骤产生。
2023-09-26 16:50:38 382
原创 vue3项目发布后修改配置文件仍然生效
使用json,并且要用ajax来加载;应用过程中也有一些注意的问题。有关“vue3项目发布后修改配置文件仍然生效”问题,之前做过一篇笔记。但事实上,那篇笔记的步骤,只解决了项目发布后,配置文件没有被压缩,仍然可见可编辑的问题;但配置文件编辑保存后,并没有生效,也就是说,改了也是白改,一点意义都没有。那篇笔记中,配置文件是js文件,使用import的方式。结果项目发布后,估计打包程序做了处理,直接将里面的内容读出来,内联到每个使用它的组件中去了,所以后面再改配置文件不会起作用。
2023-09-23 19:02:48 698
原创 spring boot项目使用mybatis连接失败问题
我在一个Spring Boot项目中,加入数据库访问功能,使用mybatis。结果项目无法启动。以往没有出现过这种问题。不过,以前的项目,都是将现有项目拷贝过来,修修改改,数据库能访问就行,不会太多关注。
2023-09-12 09:14:00 593
原创 vue3 async await
await者,等待异步操作完成也。上面例子中,getStructApi是一个promise,第二个,如果一个方法,包含了await关键词,则该方法在声明时要加上 async 关键词。意思就是死活等它完成,等到一个结果为止。
2023-09-04 20:03:09 610
原创 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 341
原创 程序员能否转型为项目经理
其次是刚参与进来的时候,完全懵逼,人是陌生的,工作内容也是陌生的,面对的都是集团里的人,全都不认识,这总那总的;如果你能够习惯90%的工作内容是与人沟通,在领导、组员和客户各式人等中周旋、协调,忍受各种质询、催促、投诉,接受周末开会,晚上突然来一个电话让你明天坐飞机到外地开会,那你可以考虑做项目经理。6月的时候,负责的一个小项目驻场开发,猛搞2周,终于告一段落,稍为可以喘息一下了,结果又让负责一个新的项目。直至现在,此项目还由于沟通等各种原因,不断出现惊喜,让人一愣一愣的,持续刷新我的底线和认知。
2023-08-31 19:40:11 252
原创 vue中的nextTick的作用
今天我忽然有点明白了。这是一个跟前面语句有关的方法。意思是,等前面的都执行完了,再执行nextTick里面的方法。比如说,页面上有一块内容,正常情况下是隐藏的,满足条件下才显示。这里用了v-if来控制。结果就是new1的方法没有被调用。为啥,因为隐藏内容尚未展示完毕。加上nextTick就可以,意思我想应该是,等待前面的语句执行完,才触发nextTick里面的方法。由以上2段代码可知,某个事件触发下,首先显示隐藏内容,然后调用其中的某个部件的方法。
2023-08-29 20:51:35 755 1
原创 mybatis批量插入报错Parameter ‘id‘ not found. Available parameters are [entities, param1]
看了以下参考文章,修改后问题解决。但作者没有说明是什么原因。mapper文件代码。
2023-08-17 20:21:57 375
原创 项目管理师基础之项目管理计划和项目文件
项目管理过程中,会使用并产生两大类文件:项目管理计划和项目文件。内容一般如下:整个项目生命周期需要收集、分析和转化大量的数据。从各个过程收集项目数据,并在项目团队内共享。在各个过程中所收集的数据经过结合相关背景的分析、汇总,并加工成项目信息。信息通过口头形式进行传达,或以各种格式的报告存储和分发。关于这一主题的更多信息,请参见 4.3 节。
2023-08-12 22:49:29 1614 1
原创 信息系统项目管理的计算机基础知识
软件定义网络(Software Defined Network,SDN)是一种新型网络创新架构,是网络虚拟化的一种实现方式,它可通过软件编程的形式定义和控制网络,将网络设备的控制面与数据面分离,从而实现网络流量的灵活控制,使网络更智能,为核心网络及应用的创新提供了良好的平台。信息安全系统工程就是要建造一个信息安全系统,它是整个信息系统工程的一部分,而且应该与业务应用信息系统工程同步进行,主要围绕“信息安全”内容。而这些内容,恰恰是业务应用信息系统正常运营所不能缺少的。
2023-07-31 21:41:20 982
原创 在写文档的路上
比如需求,有功能性需求,也有各种质量属性,如可靠性、安全性、保密性等要求;详细设计跟踪概要设计,概要设计跟踪需求分析,需求分析跟踪软件研制任务书。最近基本是在写文档。先是有个小项目要验收,我准备了其中绝大部分的文档,设计文档、部署文档、使用手册,还搞了个汇报PPT。然后又是一个充满压力,里面各种大佬,这总那总活蹦乱跳的项目,又是一顿猛写,从天刚蒙蒙亮,东方露出鱼肚白的时候就开始写,一直写到太阳下山,月亮冒头。这次除了要写需求说明书、概要设计、详细设计,还要写研制任务书。需求啦,设计啦,埋头苦干写文档。
2023-07-20 18:26:27 174
原创 使用VS2022编译及运行QT项目
QT是一种版本的C++。我记得以前微软有VC,visual c++,是C++没错,但它又有一些自己的类库,比如可以拖控件,方便开发桌面软件。按我的理解,VC是C++的超集;同样,QT也是C++的超集。为啥要用QT呢?QT方便做界面,尤其是那种电气设备控制软件的界面,比如带仪表盘啥的。VC太out太难用了,就被QT取代了。
2023-07-06 17:39:08 4929
原创 虚拟机上用docker + nginx跑前端并支持https和http
情况是这样,我在虚拟机上,使用docker跑前端,需要这个前端支持https,原http的话自动跳转到https。另外,前端部署使用了负载均衡,即使用了3个docker跑前端:1个入口,另外2个是前端,指向了同一份网站代码。现在https已经是标配了,http除了方便一点,没有什么好留恋的,最好的处理方式,不是同时支持两种协议,而是将http自动跳转到https。前面说到,“$server_name“ 在脚本中被赋值,但是”$host"没看到哪里有赋值,其实就是代表我们所访问的地址,无须赋值。
2023-06-30 10:45:04 1061
数字证书制作工具itisscg.exe
2018-12-11
CAS5.1.8自定义验证码源代码
2018-12-05
自动伸缩搜索框2
2017-04-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人