- 博客(427)
- 资源 (6)
- 收藏
- 关注
原创 Centos7安装配置Node22+版本后执行node -v 命令报错
在开发智能体平台MCP的过程中,遇到了在服务器上安装Node.js 20+版本的问题,由于CentOS 7的内置库与高版本Node.js不兼容,导致了一系列编译和依赖错误。为了解决这些问题,作者通过升级GCC、Make工具链,更新libstdc++.so.6和glibc库,最终成功在服务器上安装了Node.js 20.19.1版本。此外,作者还分享了如何设置软连接和更改npm镜像源,以便更高效地进行开发和部署。这一过程不仅解决了技术难题,也展示了面对复杂问题时的解决思路和方法。
2025-05-17 10:37:19
552
原创 shell比较两个字符串是否相等
在Unix Shell中比较两个字符串是否相等时,通常使用单个等号(=),并且等号两边需要各有一个空格。为了防止变量为空时表达式报错,可以在变量后添加一个非空字符(如x),这样即使变量为空,表达式也不会出错。此外,Shell中还有多种比较操作符,如-eq(等于)、-ne(不等于)、-gt(大于)、-ge(大于等于)、-lt(小于)、-le(小于等于)等,用于整数比较。对于字符串比较,可以使用=或==,但要注意在[[]]和[]中==的行为不同。在[[]]中,==支持模式匹配,而在[]中则进行字符匹配。
2025-05-16 17:10:04
294
原创 shell脚本中[]、[[]]、-n、-z 的含义解析
在脚本编写中,[]和[[]]的使用有显著区别。首先,在判断变量是否为空时,[]需要变量加双引号,如[-z "$pid"],而[[]]则不需要,如[[ -z $pid ]]。其次,[[]]不支持-a(并且)和-o(或者)参数,应使用&&和||进行多条件判断,如[[ 5 -lt 3 || 3 -gt 6 ]]。而[]可以在内部使用-a和-o,如[ 5 -lt 3 -o 3 -gt 2 ],但&&和||只能在[]外部使用。最后,正则表达式判断必须使用[[]],如
2025-05-16 17:08:10
394
原创 Jenkins的流水线执行shell脚本执行jar命令后项目未启动未输出日志问题处理
在Jenkins流水线中配置启动脚本时,可能会遇到服务未启动且nohup日志无输出的情况。这通常是因为Jenkins在执行完脚本后自动终止了相关进程。为解决此问题,可以在启动脚本执行jar命令前加入变量
2025-05-16 15:46:38
470
原创 解决 Nginx 部署,无法访问 Swagger 文档样式丢失的问题
同事在访问通过Nginx部署的项目的Swagger文档时遇到问题,尽管在路由转发规则中加入了swagger-ui.html,但仍无法访问。通常在内网开发时,可以直接通过后端项目的IP和端口访问Swagger文档,但当前只有Nginx所在服务器可通过外网访问。解决方法是无需改动Nginx的其他配置,只需在配置中添加特定的location规则,以处理Swagger页面及其相关请求的转发。这一问题的关键在于Swagger页面不仅是一个静态页面,还涉及其他请求,若Nginx配置未正确处理这些请求,则无法显示文档页面
2025-05-14 11:23:49
222
原创 SpringBoot配置文件密码加密与解密的操作代码
我们在SpringBoot项目当中,会把数据库的用户名密码等配置直接放在yaml或者properties文件中,这样维护数据库的密码等敏感信息显然是有一定风险的,如果相关的配置文件被有心之人拿到,必然会给项目造成一定的安全风险;所以为了避免明文密码被直接看到,我们有必要给这些敏感信息做一层加密处理,也就是说,我们的配置文件中配置的都是加密后的密码,在真正需要获取密码的时候再解密出来,这样的话就能很大程度上降低密码被泄漏的风险。
2025-05-08 16:36:45
36
原创 java之Integer、Double自动拆装箱比较,踩坑值int和Integer比较之空指针异常
2.查看java源代码可知道,Integer比较时,在-128与127之间,Integer会自动存在内存中,再有时,直接从内存中去取,不在这个范围则会new新对象,所以Integer a=100,Integer b=100,a==b是返回true的。1.Integer是int的封装类,int与Integer比较时,Integer会自动拆箱,如果都有相同的值(比如100)无论怎么比,int与Integer都相等。装箱的过程会创建对应的对象,这个会消耗内存,所以装箱的过程会增加内存的消耗,影响性能。
2025-04-30 14:32:07
187
原创 聊聊spring-boot-data-redis使用过程中的困惑(序列化,反序列化,Jackson, JavaType, TypeReference)
参考地址(讲的很全很清楚):和通义灵码聊聊spring-boot-data-redis使用过程中的困惑(序列化,反序列化,Jackson, JavaType, TypeReference) - 掘金
2025-04-28 10:05:43
97
原创 使用npm install或cnpm install报错解决
1.从git上拉了一个新vue项目npm install 报错如下。2.阿里云镜像证书过期,报错如下。
2025-04-25 11:57:24
446
原创 使用git将两个分支的代码同步为一样
但是最终可以提交上去,可能会提示无法合并两个不相干的历史,需要在命令后加上 --allow-unrelated-histories。由于我的项目有两个分支 master和dev,已经将两个分支都推到了新的git远程仓库。我在master分支上修改了文件,并删除了几个文件,然后在master提交到了远程。于是我使用 --allow-unrelated-histories 将两个分支合并。由于git地址变更,需要将旧的git地址变更为新的git地址,但又想保留历史记录。变更本地仓库git地址。
2025-04-24 13:59:41
438
原创 rebase和merge的区别
git rebase和git merge是Git中两种不同的分支合并策略,核心区别在于提交历史的处理方式:merge保留原始分支结构并生成合并提交,而rebase重写提交历史使其线性化。
2025-04-19 14:21:06
608
原创 List、Set集合通过Stream流求和
并且此处需要返回的count 是integer类型 如果是bigdecimal 参考 对单个属性求和 中的bigdecimal 即可。解决办法“转为map 遍历赋值 下边json处理使用的事hutool 的json处理。自定义分组规则 u.getCity() + "|" + u.getSex()单个bigdecimal属性的话直接 用map get 出来求和即可。案例:将员工按薪资是否高于8000分为两部分;此处为 将每个对象中多个属性求乘积以后再求和。先根据时间分组,然后根据时间排序取最大。
2025-04-12 17:48:37
468
原创 nginx配置gitlab:公司主域名占用了80和443端口,使用nginx在当前服务器给另一个服务gitlab配置子域名使用80端口,使用子域名访问这个服务gitlab
所以有了下面的需求:使用nginx在当前服务器给另一个服务gitlab配置子域名【xxx.abc.com】使用80端口,使用子域名【xxx.abc.com】访问这个服务gitlab,配置后能够在浏览器输入http://xxx.abc.com就能打开gitlab这个服务的页面。公司网站主域名【abc.com】占用了80和443端口,现在这台服务器中搭建了一个服务,比如说gitlab,它自带了nginx,配置起来更为麻烦,由于没有80和443端口,所以不能使用主域名做这个服务的地址。1-2. 修改配置如下。
2025-03-19 15:01:55
387
原创 nginx配置转发到另一个网站或另一台服务器的服务
X-Forwarded-Proto:指示请求使用的协议(HTTP 或 HTTPS)。以下是一个基本的 Nginx 请求转发配置示例,它会监听服务器的某个端口,并将请求转发到指定的目标服务器。X-Forwarded-For:记录请求经过的代理服务器 IP 地址链。X-Real-IP:获取客户端的真实 IP 地址,并传递给后端服务器。Host:保留客户端请求中的主机头。
2025-03-15 16:10:33
1604
原创 @EnableDiscoveryClient和@EnableEurekaClient springboot3.x
③注意:从Spring Cloud Edgware开始,@EnableDiscoveryClient 或@EnableEurekaClient 可省略。只需加上相关依赖,并进行相应配置,即可将微服务注册到服务发现组件上。②差别: @EnableEurekaClient只适用于Eureka作为注册中心,@EnableDiscoveryClient 可以是其他注册中心(zookeeper,consul…注册到Eureka Server(或其他服务发现组件,例如Zookeeper、Consul等)的步骤。
2025-03-08 11:31:40
310
转载 [JWT]Springboot Vue前后端分离项目登录认证(不使用SpringSecurity)
将result.data也就是token存储到pinia状态管理器中,并持久化(1天)。这是在前端进行的处理,用户如果在未登录的状态下访问需要授权的页面,则会跳转到登录页面。扩展:普通用户访问需要管理员权限的页面(/admin开头的路由)时,跳转到首页。比较这两个验证码是否一致。用户在已登录的情况下,访问/login登录页面,会跳转到/首页。只需将2.2判断密码是否正确,修改为判断验证码是否正确即可。之后的每次请求,都应该在请求头中携带token。除此之外,还应该存储当前用户信息到Pinia中。
2025-02-11 12:48:08
62
转载 每次git提交都让我输账号密码
这个问题通常是因为Git每次与远程仓库交互时都要求验证,而你没有提供持久的身份验证信息。解决方法:1.使用凭据缓存:
2025-02-11 12:43:30
1772
原创 gitlab个别服务无法启动可能原因
当在使用 GitLab 时遇到 Puma 服务不断重启的问题,这通常是由于配置错误、资源限制、依赖问题或其他运行时错误引起的。
2025-02-06 09:55:57
1204
原创 LINUX 排查磁盘空间和内存占用的常用方法
日志文件经常会积累大量数据,尤其是 /var/log 目录下。输出会显示每个挂载点的总容量、已用容量、剩余容量及使用百分比,找出使用率最高的文件系统。可以通过 find 查找大文件(例如超过 100MB 的文件),以便进一步排查。这里可以指定不同的路径和大小(如 +1G 表示 1GB 以上),定位较大的文件。运行 df -h 可以快速了解磁盘使用情况,显示每个挂载点的使用百分比。这会按大小显示文件和目录,方便你定位空间占用大的文件或目录。# 查找根目录下的前十个占用空间最大的文件和文件夹。
2025-01-22 11:09:23
881
原创 Swagger中@ApiIgnore注解的使用详解
由于架构革新,进入了前后端分离,服务端只需提供RESTful API的时代。而构建RESTful API会考虑到多终端的问题,这样就需要面对多个开发人员甚至多个开发团队。为了减少与其他团队对接的沟通成本,我们通常会写好对应的API接口文档。从最早开始的word文档,到后续的showdoc,都能减少很多沟通成本,但随之带来的问题也比较麻烦。在开发期间接口会因业务的变更频繁而变动,如果需要实时更新接口文档,这是一个费时费力的工作。为了解决上面的问题,Swagger应运而生。
2025-01-21 18:06:32
277
原创 SpringCloud之@FeignClient()注解的使用详解
是 Spring Cloud 中用于声明一个 Feign 客户端的注解。由于SpringCloud采用分布式微服务架构,难免在各个子模块下存在模块方法互相调用的情况。比如订单服务要调用库存服务的方法,@FeignClient()注解就是为了解决这个问题的。Feign 是一个声明式的 Web Service 客户端,它的目的是让编写 HTTP 客户端变得更简单。通过 Feign,只需要创建一个接口,并使用注解来描述请求,就可以直接执行 HTTP 请求了。
2025-01-21 17:52:02
1151
原创 如何在Nginx服务器上配置访问静态文件目录并提供文件下载功能
通过以上步骤,您已成功在Nginx服务器上配置了一个静态文件目录,使得用户可以通过Web界面方便地访问和下载所需的文档资料。
2025-01-20 14:51:56
1631
原创 解决 IntelliJ IDEA Maven 项目 JDK 版本自动变为 1.5 的问题
通过上述方法,你可以有效地解决 IntelliJ IDEA 中 Maven 项目 JDK 版本自动变为 1.5 的问题。解决 IntelliJ IDEA Maven 项目 JDK 版本自动变为 1.5 的问题_idea中jdk总是变为1.5-CSDN博客。
2025-01-17 09:04:33
370
原创 springcloud中的Feign调用
SpringCloud中Feign默认配置类是FeignClientsConfiguration,我们可以通过@FeignClient的属性自定义配置,自定义配置的优先级会比FeignClientsConfiguration高。
2025-01-16 16:47:29
801
原创 Docker中运行redis报错误: Failed opening the RDB file root (in server root dir /etc/cron.d) for saving: Per
此处的密码长度最好比较长,比如10位以上,因为redis的速度太快了,通过暴力破解的可能性高于通常的http方式.通过redis-cli进入redis客户端,然后通过config设置密码(直到重启前有效).下面部分不影响,但是是更安全的做法.redis3.2后可用.这样就能避免别人轻易访问redis-server.如上则表示有密码,而你是未授权访问的.如果能看到正常的返回值,就说明成功了.如果结果如上,则表明当前没有密码.
2025-01-16 13:42:53
257
原创 关于jwt和security
JSON Web Token(缩写 JWT) 目前最流行、最常见的跨域认证解决方案,前端后端都需要会使用的东西-腾讯云开发者社区-腾讯云SpringBoot整合Security安全框架、控制权限让我们一起来看看Security吧!我想每个写项目的人,都肯定 - 掘金
2025-01-16 09:56:13
215
原创 java项目什么情况下需要用安全框架
Keycloak:由Red Hat支持的开源身份和访问管理解决方案,支持单点登录(SSO)、多因素身份验证等,适用于需要高度可扩展性和支持多种标准的场景4。防止常见安全威胁:安全框架可以帮助预防常见的安全威胁,如跨站请求伪造(CSRF)、会话固定攻击等,保护应用免受这些攻击的影响。保护用户数据和隐私:当项目涉及到用户数据的收集、存储和传输时,使用安全框架可以确保数据的安全性,防止未经授权的访问和泄露。集成其他安全组件:安全框架通常与加密、会话管理等安全组件集成,提供全面的安全解决方案。
2025-01-14 12:37:46
170
转载 JAVA WEB 过滤器(Filter)中向容器 Spring 注入 bean
如果直接使用 @Autoware 获取 bean 会直接使该 bean 为 null,这是因为这种配置过滤器的方法无法在过滤器中使用 Spring bean,因为 Filter 比 bean 先加载,也就是 Spring 会先加载 Filter 指定的类到 Container 中,这样 Filter 中注入的 Spring bean 就为 null 了。这时候就是由 spring 管理 filter 的生命周期,这样就可以在 init() 和 destory() 使用 spring bean 了。
2025-01-10 13:58:53
99
转载 Linux cp命令直接覆盖不提示的方法
今天在做项目的时候需要在linux上拷贝A项目中upload目录下所有的资源到B项目中的uoload目录下,所以我就打算使用【cp】命令拷贝过去,拷贝的时候我加了【-f】参数了,但还是一个个的询问我是否覆盖目标文件。所以今天就记录下这个问题。
2025-01-09 09:15:58
1635
原创 mybatis报错The content of elements must consist of well-formed character data or markup.
【代码】mybatis报错The content of elements must consist of well-formed character data or markup.
2025-01-07 17:57:50
144
原创 Unknown column ‘sh.shopName‘ in ‘where clause
这个错误的意思是**没有找到这个字段名。**我把代码翻来覆去的看,怎么看都是对的。这个时候,我看网上的大佬说,直接把sql语句放mysql运行一下看可以吗。1.这里sh.shopName外层不能加 ` 或者改为 sh.`shopName`。最后我是直接人裂开,表的 id字段 在建表的时候,多加了一个空格,完全看不出错误。大家遇上这样的错误,率先去看一下数据表的表名是不是一样的。这个错误是我目前遇到最让人抓狂的错误。如果不可以跑出来,就是表的问题。如果可以跑出来,就是代码问题。再不然就是拼接出现了问题。
2025-01-07 15:58:50
53
原创 通过Xshell远程连接wsl2
此时本机电脑已经可以用xshell连接了,但是局域网中的其他电脑还是不能连接的。但是想要在其他的计算机上访问, 第一是需要系统开放端口,第二就是要进行端口转发。安装步骤正常确认就可以,最后可以选择later跳过登录。允许连接, 默认都选上, 下一步填个名字 完成。防火墙->高级设置->入站规则->新建规则。选择tcp 特定本地端口 2222。四、防火墙设置开放2222端口。三、在Xshell中链接电脑。二、Ubuntu里配置ip。1.查看是否已经安装SSH。一、 下载XShell。
2025-01-01 11:57:44
787
原创 idea中使用git pull或push报错fatal:unable to access “https://xxxxxxx“的一种解决方法
2、执行 git config --global --unset http.proxy和git config --global --unset https.proxy 取消当前代理。执行git config --global https.proxy http://127.0.0.1:1080。执行git config --global http.proxy http://127.0.0.1:1080。1、执行 git config --global http.proxy 查询当前代理。
2024-12-20 13:50:12
743
原创 Git进阶:本地或远程仓库如何回滚到之前的某个commit
在Git的使用过程中,我们经常会遇到需要回滚到之前某个commit的情况。无论是为了修复错误、撤销更改,还是为了重新组织代码,回滚到特定commit都是一个非常有用的技能。本文将介绍几种常用的回滚方法,帮助读者更好地掌握Git版本控制。
2024-12-19 17:15:34
4633
原创 git把主分支的代码推到其他分支
确保你已经在你想要接收主分支代码的分支上。这里是一个命令示例,假设你想要将主分支代码合并到名为。确保在合并之前解决可能出现的任何冲突。
2024-12-19 15:47:23
817
转载 浅析JWT中token过期后解析报错ExpiredJwtException的解决及过期之后如何进行后续业务处理
保存在redis中的 key 是用户名, 但是我需要把 jwt token 转化后从 claims 中取出这个用户名,一开始我直接转化,进行debug的时候发现如果token超时了,jwt 没有返回转化结果, 而是直接抛出了异常,我查看JWT所有的转化方法,发现Jwt所有的转化最终处理都是parse(claimJws)这个方法,而这个方法正是我一开始用的解析方法。原本是调用jwtUtil(jwt的工具类),传入一个token,判断是否过期,然而却莫名其妙得抛异常了,而业务中还需要根据是否过期进行后续逻辑!
2024-12-10 17:51:37
1347
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人