- 博客(218)
- 资源 (21)
- 问答 (1)
- 收藏
- 关注
原创 Java8 Optional常用方法使用场景
Optional 是 Java 8 的新特性,专治空指针异常(NullPointerException, 简称 NPE)问题,它是一个容器类,里面只存储一个元素(这点不同于 Conllection)。为方便用户通过 Lambda 表达式调用 Optional 的方法,部分方法(如:filter、ifPresent、map、orElseGet)需传入函数式接口(如:Predicate、Consumer、Function、Supplier)参数。
2024-05-21 14:37:08 261
原创 java模拟windows排序,包含数字和中文字符串
java模拟windows排序,包含数字和中文字符串,打印结果跟期望结果不一样 ,期望的结果应该是大的数字在后面。
2024-05-16 16:59:07 219
转载 Spring中的PathMatcher路径匹配器
PathMatcher是Spring的一个概念模型接口,该接口抽象建模了概念"路径匹配器",一个"路径匹配器"是一个用于路径匹配的工具。位于 Spring-core 包中 util 包下。
2024-05-13 14:28:08 27
原创 Mybatis-Plus实体类继承Model的使用
使用实体类操作CRUD的使用方法跟BaseMapper里面的方法一样,BaseMapper里面有的方法,Model类里面都有。然后,我们需要创建一个实体类,并让它继承Model类。
2024-04-26 17:28:14 297
原创 Spring Boot集成Redisson实现延迟队列
Redisson的的RDelayedQueue是基于Redis实现的,而Redis本身并不保证数据的持久性。如果Redis服务器宕机,那么所有在RDelayedQueue中的数据都会丢失。因此,我们需要在应用层面进行持久化设计,例如定期将RDelayedQueue中的数据持久化到数据库。在设计延迟任务时,我们应该根据实际需求来合理设置延迟时间,避免设置过长的延迟时间导致内存占用过高。
2024-04-25 17:52:11 653 2
原创 Spring Boot整合Redisson的两种方式
Redis是一个开源的内存数据库,支持多种数据类型,如字符串、哈希、列表、集合和有序集合等,常用于缓存、消息队列、计数器、分布式锁和搜索等应用场景。Redisson则是一个基于Redis实现的Java驻内存数据网格,提供了一系列分布式的Java常用对象和多种锁机制,以及分布式服务,使开发者能更集中于处理业务逻辑。Redisson不支持字符串操作、排序、事务、管道、分区等Redis特性,但Redisson 提供了许多其他功能,如分布式闭锁、分布式计数器、分布式信号量等。
2024-04-24 17:17:04 875 1
原创 Spring Boot实现接口签名验证
一个用于生成签名,另一个用于验证签名。生成签名的方法通常将请求参数按照特定规则计算出一个签名值。常见的签名算法有HMAC-SHA1、HMAC-SHA256等。验证签名的方法则是对接收到的请求参数进行同样的处理,并计算出一个签名值,然后与请求中携带的签名值进行比对。/*** 获取签名* @param secretKey 密钥* @param data 需要签名的数据* @return 签名*/try {/*** 验证签名* @param secretKey 密钥。
2024-04-23 14:44:44 915 1
原创 mybatis实体中时间类型LocalDateTime,查询的时候报错
Spring boot集成mybatis实体中时间类型LocalDateTime,查询的时候报错。
2024-04-12 10:35:12 308
原创 Spring Boot中@Value注入静态变量
这时候打印发现是空的, 通过上例可以看出,使用@Value注解修饰静态属性,启动项目时不会报错,但是也不会给该静态属性设置值。
2024-04-11 18:02:40 371
原创 Spring Boot中@KafkaListener使用${}动态指定topic
在Spring Kafka中,我们可以使用${}来引用Spring的属性配置。这样我们就可以在不同的环境中重新配置topic名称,而不需要修改代码。
2024-04-11 17:54:08 519
原创 Spring Boot项目启动时执行指定的方法
缺点:如果@PostConstruct方法内的逻辑处理时间较长,就会增加SpringBoot应用初始化Bean的时间,进而增加应用启动的时间。因为只有在Bean初始化完成后,SpringBoot应用才会打开端口提供服务,所以在此之前,应用不可访问。建议:轻量的逻辑可放在Bean的@PostConstruct方法中,耗时长的逻辑如果放在@PostConstruct方法中,可使用@Async异步方法。优点: 项目已经初始化完毕,才会执行方法,所以不用等这个方法执行完,就可以正常提供服务了。
2024-04-10 14:00:53 342
原创 Word文档如何设置单选框、复选框、下拉框
Office办公软件Word文档,会遇到设置单选框、复选框或下拉框的情况,我们可以使用word开发工具来实现,也可以插入一个圆圈代表单选框,插入一个正方形代表复选框。
2024-04-09 09:40:14 1224
原创 Apache James数据库存储用户信息的密码加密问题
集成java mail直接用明文帐号密码连接就行了,因为james会自己去加密验证,其他软件通过pop3配置,密码也是用明文就行了。// SMTP服务器地址// 用户名// 密码@Override});try {
2024-03-22 18:18:12 1215
原创 MyEclipse打开文件跳转到notepad打开问题
然后依次打开Software→Microsoft →windows→CurrentVersion→Explorer→FileExts,在FileExts节点下找到要删除的文件后缀,右键删除。win+R快捷键在运行窗口输入regedit。输入text找到Text Editor。把Text Editor 设为默认值。在其子节点找到要取消的文件后缀后右击删除。这里我们可以看到是没有*.md文件的。
2024-03-22 10:29:13 279
原创 spring boot切面execution表达式添加多个包路径
在Spring Boot中,如果你想为多个包中的方法创建一个切面,你可以在@Pointcut注解中使用||操作符来指定多个包。
2024-03-18 17:22:41 873 1
原创 SpringBoot项目如何打包成war包,并部署在tomcat上运行
正常情况下,我们开发 SpringBoot 项目,由于内置了Tomcat,所以项目可以直接启动,部署到服务器的时候,直接打成 jar 包,就可以运行了。有时我们会需要打包成 war 包,放入外置的 Tomcat 中进行运行,或者使用工具idea直接启动,便于开发调试。
2024-03-18 15:15:14 1931
原创 SpringBoot集成Jasypt实现敏感信息加密
在服务中不可避免的需要使用到一些秘钥(数据库、redis等)开发和测试环境还好,但生产如果采用明文配置将会有安全问题,jasypt是一个通用的加解密库,可以使用它。在Spring Boot中使用Jasypt加密和解密敏感数据非常简单,只需要在Spring Boot应用程序中添加Jasypt依赖项,并在应用程序配置文件中指定加密和解密密钥即可。
2024-03-18 11:40:26 302
原创 idea配置自定义注释模版和其他模板
第一种类创建完后头部自动生成注释模板打开idea,选择 Settings--> Editor--> File and Code Templates,选择需要添加的文件,如下图所示:大家可以选择需要注释的文件类型添加模板/*** TODO 添加描述*/第二种动态模板,使用快捷键自动生成注释模板打开idea,选择 Settings--> Editor--> Live Templates,创建一个模板分组,如下图所示:我这里创建的分组名称是MyGroup,后面的动态模板都放到这个分组里面。
2024-03-13 16:38:54 729
原创 SpringBoot拦截器获取token用户对象优雅地传递到Controller层
抛出的异常需要自己捕捉,返回/*** Token拦截器*/@Component@Slf4j/*** 存储用户信息*/@Override// 从header中获取token// 如果参数中不存在token,则报错throw new RuntimeException("请求头缺少token参数");try {// TODO 根据token获取用户信息// ......log.error("获取用户信息失败:", e);
2024-03-12 18:07:36 785
原创 Spring使用RestTemplate返回的嵌套实体对象为空,转换json报错
Spring Boot项目使用RestTemplate调用接口,使用嵌套实体对象接收的返回结果使用RestTemplate调用接口。
2024-03-05 16:07:44 524
原创 MySQL jdbc url连接常用参数说明
参数名称参数说明useUnicode是否使用Unicode字符集当useUnicode设置为true时,指定字符编码。比如可设置为UTF-8或gbkuseSSLMySQL在高版本需要指明是否进行SSL连接 在mysql连接字符串url中加入ssl=true或者false即可设置时区例如:serverTimezone=GMT%2B8(中国时区)或serverTimezone=Asia/Shanghai(中国时区)
2024-03-04 10:45:39 268
原创 SpringBoot过滤器的使用
在springboot 启动类添加该注解@ServletComponentScan,也可以写包的具体地址,传参数@ServletComponentScan("com.test.demo.filter")完成之后启动项目,访问接口:localhost:8080/test/testFilter,观察控制台运行结果。定义一个TestFilter 实现Filter接口,重写里面的三个方法。定义一个TestFilter 实现Filter接口,重写里面的三个方法。过滤器的运行等级,数字越小,越先执行。
2024-01-22 16:10:05 493
原创 SpringBoot解决Slow HTTP慢速攻击漏洞
Web应用在处理HTTP请求之前都要先接收完所有的HTTP头部,因为HTTP头部中包含了一些Web应用可能用到的重要的信息。攻击者利用这点,发起一个HTTP请求,一直不停的发送HTTP头部,消耗服务器的连接和内存资源。抓包数据可见,攻击客户端与服务器建立TCP连接后,每10秒才向服务器发送一个HTTP头部,而Web服务器在没接收到2个连续的\r\n时,会认为客户端没有发送完头部,而持续的等等客户端发送数据。如果恶意攻击者客户端持续建立这样的连接,那么服务器上可用的连接将一点一点被占满,从而导致拒绝服务。这种
2024-01-19 14:11:20 1172
原创 Spring集成MyBatis与MyBatis-Plus添加分页插件
MyBatis-Plus3.4.0版本之前添加分页插件,使用配置PaginationInterceptor。从3.4.0版本开始,之后使用配置MybatisPlusInterceptor。
2024-01-18 16:19:55 818
原创 java stream distinct根据list某个字段去重
java stream distinct根据list某个字段去重根据学生的name去重,原理:1、首先使用Stream API对list进行转换成流,使用toCollection方法将流中的元素放入一个TreeSet集合中,通过TreeSet实现对name字段去重;2、然后使用collectingAndThen方法将TreeSet集合转换成ArrayList集合;用普通的list对象来操作需要分为两步操作,这里我们使用了Stream API提供的collect
2024-01-16 17:53:04 2441 1
原创 Windows定时重启Tomcat
最近项目的Tomcat隔一段时间就假死,最后想到的解决方式就是:每天凌晨1点重启tomact。使用Windows系统的计划任务程序,可以在这里设置定时执行的.bat批处理文件(将你要定时执行的cmd命令放在这里),这样就可以实现让电脑在某个时刻做你想让它干的事。
2023-12-28 16:53:44 766
原创 James使用Mailet接收外网邮件通知提醒
即他们都有 类似的生命周期,Mailet的简单可编程接口可以用来做一些邮件处理,比如反垃圾邮件,检查邮件病毒以及邮件博客等等,利用移动设备可发送email的功能,可以做到手机通过mail发送信息到邮件服务器交给Mailet处理,形成移动博客的模型。Mailet的运行需要mailet-2.3.jar和mailet-api-2.3.jar两个包的支持,James本身就有这两个包,可不作修改,但在开发的时候还是需要开发者自己将这两个包导入到工程的Build path中或配置到系统环境变量中。
2023-12-20 15:39:18 1076
原创 Swagger页面报错Resolver error at definitions
从错误提示可以看出,是由map引起的原因,具体是因为swagger配置没有默认添加map的复杂结构引起的,需要手动添加。找到swagger配置类,在Docket方法里添加mapRule即可,Map的类型就按报错的标题格式添加。打开swagger页面报错Resolver error at definitions。
2023-12-08 15:20:52 374
原创 Swagger提示请确保swagger资源接口正确
原因是JSON格式非法,一般出现此情况时,是因为后端在给属性赋予了exmpale属性时,赋值了json字符串导致。把属性中的example去掉,或者把单引号替换成转义后的双引号。
2023-12-08 14:36:10 777
原创 java mail集成james判断邮件是否发送成功
java mail集成james邮件服务器,发送邮件时需要判断邮件是否发送成功。我们会发现JavaMail给用户发送邮件,但是调用Transport类的sendMessage方法发送的邮件是没有返回值的,所以判断不了。但是我们可以用另一个解决方案,就是采用“系统退信”的方式来达到目的,我们会发现163、qq等邮件发送失败就会“系统退信”。
2023-11-30 18:26:08 575
原创 SpringBoot参数校验@Validated和@Valid的使用
实体类参数:参数上必须加上@Valid,类上@Validated可加可不加;非实体的参数:类上必须加上@Validated;推荐都加上,如果类上 @Validated不加,万一后期改造添加新参数,可能会忘记注解@Validated。
2023-11-27 16:03:28 380
原创 Spring Boot集成kafka的相关配置
额外依赖只需要这一个,kafka-client 不是springboot 的东西,那是原生的 kafka 客户端, kafka-test也不需要,是用代码控制broker的东西。
2023-10-12 15:55:23 1226
原创 Spring Boot集成redis集群拓扑动态刷新
可以很方便的基于它来实现自己的对象池,比如 DBCP 和 Jedis 他们的内部对象池的实现就是依赖于 commons-pool2。springboot2.0-2.3版本默认使用lettuce,默认不支持属性配置集群拓扑刷新。使用lettuce,需要增加配置类,需要手动开启刷新。springboot2.3之后版本默认使用lettuce,默认支持属性配置开启集群拓扑刷新,其解决方案:属性配置开启即可。springboot1.x之前版本默认使用jedis,无需手动开启动态刷新。
2023-09-27 15:40:08 1519
原创 Excel表格批量生成sql插入语句
输入上面的公式,表名是test,字段值都加了单引号,int类型可以把单引号去除,A2表示第一列的第二行,第一行是标题所以从第二行开始。此时已经生成一条sql语句,然后将D2的公式复制到所有行的D列(就是用鼠标点住D2单元格的右下角一直拖拽下去)
2023-09-25 09:22:41 1634
原创 MyEclipse报错javax/persistence/EntityManagerFactory
【代码】MyEclipse报错javax/persistence/EntityManagerFactory。
2023-09-15 17:32:22 388
spring cloud链路zipkin servlet方式自定义参数
2020-04-24
spring cloud整合zipkin添加自定义参数
2020-04-24
spring cloud整合zipkin汉化包
2020-04-23
Spring Cloud注册中心Eureka汉化包
2020-04-23
logstash-input-mongodb离线包
2020-04-09
springboot整合elasticsearch完整代码
2020-04-03
spring cloud整合MQTT简单示例
2018-04-24
java项目多数据源配置
2018-01-25
JQuery DataTables示例,包含分页、拖拽、导出
2016-10-12
Dbutils项目实例
2014-05-05
jsp仿百度、谷歌分页解决分页太多,始终显示一部分的页码
2014-03-07
Spring Boot集成Redisson实现延迟队列
2024-04-26
Spring Boot实现接口签名验证
2024-04-23
SpringBoot集成Jasypt实现敏感信息加密
2024-03-18
james-2.3.2邮件服务器(集成mysql)
2023-12-01
Spring+MyBatis使用collection标签的两种使用方法
2023-09-06
SpringBoot ApplicationListener观察者模式示例
2023-08-31
Spring Boot集成Druid实现多数据源的两种方式
2023-04-12
SpringBoot集成WebSocket进行前后端通信
2023-04-10
SpringBoot文件分片上传.zip
2022-10-31
redis分布式锁,解决死锁问题
2022-10-17
Spring Boot获取节假日万年历API免费接口
2022-09-12
SpringBoot基础配置框架demo
2022-07-01
Springboot配置XSS过滤器XssFilter.zip
2021-12-31
Java多个文件根据URL下载后打包zip导出.zip
2021-04-16
james邮件服务器更改inbox路径
2021-06-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人