- 博客(139)
- 资源 (4)
- 收藏
- 关注
原创 【解决问题】Java2DRenderer生成图片时中文乱码 & Linux安装字体
在使用Java2DRenderer框架将html生成图片时,html中的中文文本在图片上显示框框,即出现了中文乱码。在确认使用正确的字符编码utf-8之后,并且确认了修改成unicode也同样乱码的情况下,找到了真正的原因:Linux服务器少字体。创建fontscale, 如果下面命令执行失败,需要先安装: yum install mkfontscale。清除缓存,并加载字体文件,如果下面字体执行失败,需要先安装:yum install fontconfig。查询系统中已经加载的字体。
2024-12-24 16:40:23
538
原创 【解决问题】template might not exist or might not be accessible by any of the configured Template Resolver
在SpringBoot项目中集成thymeleaf时,通过templateEngine.process("customer", context)获取邮件内容的html。项目在本地编辑器中运行正常,但是打成jar包部署到服务器后,调用方法时报错。templateEngine.process("customer", context) 这段代码需要在同步逻辑里,否则就会出现加载模板失败,也就是上面那个错误的来源。3,如果各个配置都确认是没问题了,需要检查一下代码逻辑。如果是放在多线程里执行,需要移出来。
2024-12-24 15:16:06
951
原创 【解决问题】jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable java.lang.IllegalAccess
使用JDK17版本,SpringBoot2.4.2集成oAuth2的时候遇到以下问题。2,修改选项, 添加虚拟机选项。在运行的配置里加上以下配置。
2024-11-19 10:45:44
1135
原创 【解决问题】class lombok.javac.apt.LombokProcessor (in unnamed module @0x19ec5357) cannot access class
版本过低导致,我这里没有直接设置版本,使用的默认版本,是1.18.16。在集成oAuth2的时候,mvn clean package时,报错。需要升级到1.18.24及以上即可。
2024-11-19 10:35:36
812
1
原创 【解决问题】 java.security.PrivilegedActionException: null
在SpringBoot2.4.2中整合oAuth2时出现下面这个问题。
2024-11-19 10:12:56
945
原创 【问题解决】ERR AUTH <password> called without any password configured for the default user. Are you sure
在redis的conf目录下,删除sentinel.conf文件,再重启redis,启动默认的单机模式即可。看起来是redis配置问题,想起来昨天确实是升级过redis,从3.0版本升级到6.x版本。redis.conf和sentinel.conf文件,启动时会启动sentinel模式,再去检查redis,发现在/etc/redis/conf目录下有两个配置文件。这个是gitlab不支持的,因为目前的配置是单机模式。通过以下命令查看,发现有密码,而且密码是对的。那么不是gitlab的问题。
2024-11-12 14:57:15
1021
原创 Flink输出算子
执行完之后可以去kafka后台查看,会多一个topic(flink-test),并且可以让下游消费者去消费。需要在项目的根目录下创建目录output。执行之后,数据会被写入文件。
2024-11-11 19:34:31
441
原创 netcat工具安装和使用
netcat是为Nmap项⽬编写的,是⽬前分散的Netcat版本系列的经典。它旨在成为可靠的后端⼯具,可⽴即为其他应⽤程序和⽤户提供⽹络连接。
2024-11-11 14:57:18
807
原创 基于redis实现API接口访问次数限制
日常开发中会有一个常见的需求,需要限制接口在单位时间内的访问次数,比如说某个免费的接口限制单个IP一分钟内只能访问5次。该怎么实现呢,通常大家都会想到用redis,确实通过redis可以实现这个功能,下面实现一下。/*** @date 2024/11/8 上午9:06*//*** 从请求中获取IP当获取不到时,返回null*//*** 获取请求的真实IP,优先级从高到低为:
2024-11-08 11:23:27
981
原创 SpringBoot+ClickHouse集成
前面已经完成ClickHouse的搭建,创建账号,创建数据库,保存数据库等,接下来就是在SpringBoot项目中集成ClickHouse。
2024-11-05 17:48:34
605
原创 ClickHouse创建账号和连接测试
在之前搭建ClickHouse的时候,把账户相关的去掉了,所以登录和连接的时候是不需要账号密码的,但是实际项目中,肯定是需要根据需要创建账号。
2024-11-05 15:29:19
677
原创 Flink安装和Flink CDC实现数据同步
3) 在架构方面,Apache Flink 是一个非常优秀的分布式流处理框架,因此 Flink CDC 作为Apache Flink 的一个组件具有非常灵活的水平扩展能力。5) 另外,在生态方面,这里指的是上下游存储的支持。CDC 的全称是 Change Data Capture ,在广义的概念上,只要是能捕获数据变更的技术,我们都可以称之为 CDC。实时消费日志,流处理。编写以上脚本,命名为flinkCdc2Mysql.sql,上传到flink的sql目录下,这里的sql是我新建的,你可以自己指定。
2024-11-05 10:26:48
950
原创 ClickHouse安装
一,ClickHouse介绍ClickHouse 是一个开源的列式数据库管理系统(Column-Oriented DBMS),由俄罗斯的 Yandex 公司开发。它最初是为 Yandex 的 Metrica 分析服务设计的,用于处理大规模的数据分析任务。ClickHouse 能够提供快速的数据查询性能,即使在处理非常大的数据集时也能保持高效。:ClickHouse 针对读取操作进行了优化,能够以极高的速度处理复杂的查询。:与传统的行式存储不同,列式存储可以更有效地压缩数据,并且在进行聚合查询时效率更高。
2024-11-04 18:32:40
383
原创 yum安装指定版本Redis
上面我们安装了默认的版本,注意这里的默认版本是跟着linux的版本来的,如linux是el7的话,默认redis版本可能是3.x版本;如果linux是el9的话,默认redis版本可能是5.x版本。如果我们需要安装指定的版本,比如想在el7上安装redis6.x版本的话,就需要添加redis的存储库。"requirepass foobared"改为"requirepass 你的密码如123456"只有5.0.3.5版本,如果已经满足需求,可以直接安装。1,列出可用的redis版本。查看redis的状态。
2024-11-04 14:34:11
1356
原创 【问题解决】连接mysql时报错caching_sha2_password can not load
报错信息 "caching_sha2_password can not load" 通常出现在尝试连接到使用 MySQL 8.0 或更高版本的数据库时,因为从 MySQL 8.0 开始,默认的用户密码认证插件变成了。为你的实际用户名、主机和密码。如果不限定客户端ip的话,可以把'your_host'换成'%'。2,如果你不能升级客户端库,可以将 MySQL 用户的密码认证方式改为。如果不限定客户端ip的话,可以把'your_host'换成'%'1,升级你的数据库客户端库到支持。
2024-10-28 14:39:41
3874
原创 【问题解决】Flink在linux上运行成功但是无法访问webUI界面
在搭建Flink的时候,已经在linux服务器上运行了./start-cluster.sh, 而且日志显示已经成功了。正常来说应该能通过ip:8081来访问(8081是Flink WebUI的默认端口),但是访问的时候,显示访问拒绝。然后就可以通过ip:8081端口(可以在上面修改rest.port来实现,默认是8081)来访问了。进入到Flink目录的下conf目录,vi flink-conf.yaml。改完之后保存,重启Flink。服务器上也没有开启防火墙。
2024-10-25 15:56:35
1438
原创 SpringBoot优雅下线
当我们需要部署新版本代码的时候,需要重启服务,这个时候可能会出现一些问题,比如之前服务正在处理的请求还在处理,这个时候如果强制的停止服务,会造成数据丢失或者请求失败的情况。那么就需要有一种功能,当我们发出停止指令的时候,停止接收所有外部的请求,然后处理完已经接收的正在处理的请求,之后,再停止服务。这就是优雅下线。
2024-10-17 16:03:52
869
原创 【问题解决】Error creating bean with name ‘applicationEventListener‘: Singleton bean creation not allowed
项目使用了ApplicationListener去监听SpringBoot项目的启动关闭等事件,在项目停止的时候,项目报了下面这个错误信息,虽然不影响项目的停止,但是还是希望不要出现。改成使用实现ApplicationListener 接口,监听的事件也改成ApplicationStartEvent。而不是使用@EventListener注解。
2024-10-17 15:24:31
1483
原创 Luhn算法计算校验位方法
Luhn算法,也被称为“模10”或“Mod 10”算法,常用于信用卡号、条形码序列号、国家供应商标识符(NPI)等场景中生成校验位,以验证号码的正确性。1,从校验位开始,从右往左,偶数位乘2(例如,1*2=2),然后将两位数字的个位与十位相加(例如,16:1+6=7,18:1+8=9);3,将数字的和取模10(本例中得到7),再用10去减(本例中得到3),得到校验位。1,从校验位开始,从右往左,偶数位乘2,然后将两位数字的个位与十位相加;4,取其个位数字(3),得到校验位。2,计算所有数字的和(67);
2024-08-30 15:44:46
1061
原创 对称加密的数据填充算法
在使用AES和DES等对称加密算法时,待加密的数据可能不是一个完整的数据块(比如8字节一个块,或者16字节一个块), 那么就需要进行填充(padding)。常见的填充算法包括:ISO9797_M1、ISO9797_M2和PKCS5。不同的填充算法的规则和填充字符不一样,需要明确下来,不然解密的时候就会出问题。
2024-08-15 17:13:52
816
原创 Nacos配置内容加密实现
因为项目中安全检查的要求,需要将nacos配置的内容进行加密,所以需要实现将配置内容加密处理,这里引入nacos-aes-encryption-plugin插件来完成这一需求。3.2 将项目的yml文件中的"spring.cloud.nacos.config.prefix"改为"cipher-aes-"开头,例:cipher-aes-user。-U参数表示强制更新依赖。进入Nacos控制台,配置内容正常处理,配置名以"cipher-aes-"开头,例:cipher-aes-user。
2024-08-13 15:11:10
1865
原创 Spring boot敏感参数加密配置
在项目中很多参数会被配置到配置文件中,比如说密钥,用户名,数据库连接,账号密码之类的,如果用明文配置,会有一定的安全风险。为了减小风险,增加对敏感配置数据的加密配置。# 算法识别前缀(当算法发现配置文件中的值以这前缀开始,后缀结尾时,会使用指定算法解密)// 指定秘钥,和yml配置文件中保持一致。// 指定秘钥,和yml配置文件中保持一致。* @param plaintext 明文。* @param data 加密后数据。密文用指定的前后缀包围: ENC(xxx)# 配置文件加解密配置。
2024-08-13 14:49:59
1395
原创 Spring Boot常用注解
Component注解是一个通用的注解,可以用来标注任何Spring管理的bean,像@Service,@Controller,@Repository都是@Component注解的别名。用途:@Data是一个复合注解,集成了@Getter,@Setter,@ToString,@EqualsAndHashCode,@RequiredArgsConstuctor等注解。用途:用于标识控制层组件,是@Component注解的别称,用于标识Spring MVC控制器,处理Web请求并返回视图。
2024-08-03 15:51:27
2706
2
原创 Spring Controller接口地址的骚玩法,很有用!
项目里有一个接口需要对外提供,对方的解析方式有不同的方式,一个是使用流行的json格式,另外一个却是老系统,只能用xml格式,但是接口内部的实现逻辑是完全一样的,为了适配更多调用方的需求,就需要将同样的接口数据用两种格式提供出去,总觉得哪儿不对劲儿,写了不好的代码。刚好发现Spring 5.3之后 之后出现的一个新特性——路径后缀匹配,可以支持同一个接口,根据调用方的需求,自动做转换。4,定义一个接口, 路径中使用.*来做后缀, fmt这段可以随意命名5,默认是支持json格式的,如果需要支
2024-08-02 20:22:25
412
原创 Spring实现自定义注解
具体原理网络上一大堆,但是没有看到有人用Spring去实现,其他人实现的基本上都是用了SpringBoot,没有参考意义。希望对你有帮助!
2024-08-02 17:15:51
427
1
原创 No static resource favicon.ico.问题解决
2,随便找一个图片或者图标改名成favicon.ico, 复制到上面建的这个static目录。1,在项目的resources文件夹下面建一个static目录。Spring Boot项目调用接口时报错。3,重新运行项目,问题解决。
2024-08-01 17:12:02
3787
1
原创 Base64解码时Illegal base64 character 20问题解决
其实可以看到前面我们已经做了一些替换工作,去掉多余的换行符,去掉前面的"-----BEGIN PUBLIC KEY-----",去掉后面的"-----END PUBLIC KEY-----"。一般情况下其实已经够了,不会有多余的空格。但是,如果使用Apollo或者Nacos的时候,注入到Spring容器之后的这个字符串,可能还会多一些多余的空格,需要替换掉。问题原因是待解码的字符串(publicKeyString)中包含了多余的空格字符,需要替换掉。加上.replaceAll(" ","")
2024-07-31 09:06:46
1350
原创 Hadoop安装和测试
bin 目录:存放对 Hadoop 相关服务(hdfs,yarn,mapred)进行操作的脚本。保存退出,记得也需要source一下/etc/profile,使系统重新加载一下配置文件。- etc 目录:Hadoop 的配置文件目录,存放 Hadoop 的配置文件。进到/etc/alternatives目录,再次ll找到真实引用。进到/usr/bin 使用ll命令,找到java命令真实的引用。1,在/data目录创建test目录放测试文件和输出文件。有如下图的输出,就是安装成功了。
2024-06-17 18:12:42
927
原创 SSE—实时数据推送新选择
SSE(Server-Sent Events),SSE是一种基于HTTP协议的服务器向客户端推送数据的技术。它的优点是实现简单、轻量级,对现有服务器软件兼容性好。但是,由于SSE是单向通信模型,只能由服务器向客户端推送数据,对于需要客户端向服务器发送数据的场景,SSE就无法满足需求。
2024-06-11 15:08:47
1199
原创 Arthas调优工具使用
注意:在docker或k8s的pod里也可以用,不过可能会因为重启等原因导致jar包丢了,但是可以重新下载再启动arthas。5,服务器上执行,看结果, 找耗时长的子方法。3,本地idea安装Arthas idea。6,根据结果继续执行4,5, 逐步优化。4,选定方法右键trace,生成命令。选定要绑定的Java进程ID。
2024-06-04 14:28:48
560
原创 Spring Boot 3.x集成FastDFS记录
最近在做一个课程,需要用讲一下SpringBoot 使用文件上传的功能,选择了FastDFS作为文件存储OSS。Spring Boot是最新的3.3.0版本,JDK版本是17,中间有一些坑,下面记录一下。
2024-06-04 14:18:33
1371
1
原创 spring boot 3.x版本 引入 swagger2启动时报错
級到Spring Boot 3.x之后,需要从Springfox迁移到SpringDoc,Springfox已经很久没有维护了,不兼容Spring Boot 3.x -->-- 引入1.5.22及以上版本的swagger组件,以解决example默认解析报错(NumberFormatException)的问题 -->Spring Boot版本是3.3.0。那么就针对这个修改pom引入就好了。在pom文件后面加上下面配置。
2024-05-31 10:14:06
1554
原创 idea解决“源根之外的java文件“的问题
选中模块,然后在右边选中对应的文件夹,标记为源代码(项目java代码根目录)或测试(测试代码根目录)或资源根目录(resources)或测试资源或排除的。idea编辑器打开一些老Spring项目,会出现项目结构解析不正确,最后整个项目的java文件都无法正常运行,显示“源根之外的java文件”。这里的交互有点儿奇怪,不要随便点排除的, 如果误点了,项目代码就不会展示了,可以通过点下面列表后面的x来去掉选择。打开File->项目结构。
2024-05-31 09:56:18
5868
1
原创 Spring常用注解(超全面)
EnableCaching:开启注解式的缓存支持;@Resource:由JSR-250提供 @Autowired、@Inject是默认按照类型匹配的,@Resource是按照名称匹配的,@Autowired如果需要按照名称匹配需要和@Qualifier一起使用,@Inject和@Name一起使用。@RestController 该注解为一个组合注解,相当于@Controller和@ResponseBody的组合,注解在类上,意味着,该Controller的所有方法都默认加上了@ResponseBody。
2024-05-27 20:05:16
8338
原创 Maven查看项目中的pom依赖
安装包路径:/usr/local/opr-platform/opr-platform.jar -> BOOT-INF/lib/commons-compress-1.19.jar。-- 将easyexcel中的低版本commons-compress排除掉,再导入高版本的commons-compress -->但是需要注意的是,并不是所有的升级都适用上面这种,因为可能两个版本不兼容,所以在做上面这样的升级时,需要测试一下是否兼容,功能是否正常。回到背景里提到漏洞,在找到包之后,可以用以下的方法修复。
2024-05-27 15:59:09
1507
原创 解决问题:com.alibaba.otter.canal.protocol.exception.CanalClientException: deserializer failed异常
所以canal会报错,没法儿正确的完成ack,所以batchId也不会增加,导致一致没法完成数据的同步。1.2 使用threadLocal存储batchId,保证同一个线程调用时batchId相同。在ack给canal的时候,batchId和取binlog时的batchId不一致。1.1 将获取batchId和ack用的batchId这一段放在同步代码块里。修改canal.properties。1,在消费端代码里,保证线程安全。2,在canal上配置参数。
2024-05-11 13:58:59
1875
1
原创 响应式编程Spring Reactor探索
基本思想是将所有要处理的I/O事件注册到一个中心I/O多路复用器上,同时主线程阻塞在多路复用器上,通过轮询或者边缘触发的方式来处理网络I/O事件。Reactor设计模式和响应式编程类似,它们都不主动调用某个请求的API,而是通过注册对应接口,实现事件触发执行。创建Mono,设置超时时间为60秒,将任务交给service层去处理,请求会在这儿挂着,然后可以继续接收新的请求。Spring Reactor框架是响应式编程的一个很好的实践,能帮助开发者快速完成相关的需求,能很好的实现支持背压处理。
2024-05-08 11:44:53
1084
Spring Gateway+Security+OAuth2+RBAC 实现SSO统一认证平台
2023-08-10
免费数据库实时同步工具和脚本全套
2022-08-15
云地名地址数据库
2012-05-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人