- 博客(55)
- 收藏
- 关注
原创 RabbitMQ:基于DelayExchange插件实现延迟队列
因为延迟队列的需求非常多,所以RabbitMQ的官方也推出了一个插件,原生支持延迟队列效果。这个插件就是DelayExchange插件。下载插件成功后配置到mq:因为我是基于Docker安装,所以需要先查看RabbitMQ的插件目录对应的数据卷我之前设定的RabbitMQ的数据卷名称为mq-plugins得到下面结果:接下来,将插件上传到这个目录即可:最后就是安装了,需要进入MQ容器内部来执行安装。我的容器名为mq。
2023-09-16 14:41:40
462
原创 @Autowired和@Resource区别
Autowired:默认是ByType,可以使用@Qualifier指定Name,可以对构造器、方法、参数、字段使用。@Resource:默认ByName,如果找不到则ByType,只能对方法、字段使用,不能用于构造器。@Autowired是Spring提供的,@Resource是JSR-250提供的。总结:基本上@Resource可以完全替代@Autowired。
2023-09-14 15:05:40
298
原创 KafkaStream:Springboot中集成
2、在application.yml中配置上面配置类需要的参数。使用生产者发送消息可以看到控制台接收成功。3、新增配置类,创建KStream对象,进行聚合。1、在kafka-demo中创建配置类。4、启动kafka-demo服务测试。
2023-08-13 10:14:24
1191
原创 KafkaStream:基本使用
KafkasSream提供了一个非常简单轻量的Library,它可以非常方便的嵌入到java程序中,也可以任何方式打包部署。kafkaStream:提供了对存储在kafka中的数据进行流式处理和分析的功能。引入kafkaStream依赖。消费者和生产者类代码参考。1、新建工程kafka-demo。3、启动消费者类和流式处理类监听消息。使用生产者类发送消息。
2023-08-13 09:54:32
1435
原创 Mongodb:业务应用(2)
1、创建controller。1、实现controller。保存搜索记录数据参考上篇。2、service实现类。2、service实现类。
2023-08-11 15:51:56
688
原创 Mongodb:业务应用(1)
Async是 Spring 框架提供的注解,用于将方法标记为异步执行的方法。它的作用是告诉 Spring 框架在调用被注解的方法时,将其放入线程池中异步执行,而不是阻塞等待方法的完成。1、在搜索服务的service层新增搜索历史保存方法insert。在文章搜索服务中实现保存搜索记录到mongdb。3、在文章搜索方法search中异步调用上面实现的保存记录方法。并在搜索时查询出mongdb保存的数据。查看数据库mongdb中的数据成功添加。1、安装mongodb依赖。2、创建数据库对应实体类。
2023-08-11 14:58:36
956
原创 mongodb:环境搭建
自动故障转移是副本集的概念,MongoDB能检测主节点是否存活,当失活时能自动提升从节点为主节点,达到故障转移。(3)数据模型因为是面向对象的,所以可以表示丰富的、有层级的数据结构,比如博客系统中能把“评论”直接怼到“文章“的文档中,而不必像myqsl一样创建三张表来描述这样的关系。(1)MongoDB提出的是文档、集合的概念,使用BSON(类JSON)作为其数据模型结构,其结构是面向对象的而不是二维表,存储一个用户在MongoDB中是这样子的。①在项目中创建mongo-demo工程。
2023-08-10 21:23:27
942
原创 ElasticSearch:项目实战(2)
在service层文章新增成功后,将数据通过kafka消息同步发送到搜索服务。创建SyncArticleListener普通类来接收文章服务发送过来的数据。新增文章审核通过后同步数据到es索引库。1、文章服务中添加消息发送方法。2、搜索服务中实现消息接收。
2023-08-10 20:51:44
1178
原创 ElasticSearch:项目实战(1)
为了加快检索的效率,在查询的时候不会直接从数据库中查询文章,需要在elasticsearch中进行高速检索。③在工程config中创建配置类ElasticSearchConfig用来操作es。文章列表展示与home展示一样,当用户点击某一篇文章,可查看文章详情。④在工程pojo中创建实体类SearchArticleVo。⑤在工程mapper中创建方法用来查询对应的数据库字段。1、使用postman往虚拟机es中创建索引和映射。①创建es-init工程,pom文件如下。⑥在gateway网关中配置当前项目。
2023-08-10 17:26:17
1783
原创 ElasticSearch:环境搭建步骤
ik分词器链接:https://pan.baidu.com/s/1InTANWCUxugDRWI4vwxPZQ?因为在创建elasticsearch容器的时候,映射了目录,所以可以在宿主机上进行配置ik中文分词器。上传到服务器上,放到对应目录(plugins)解压。把准备好的ik分词器文件。4、postman测试。3、配置中文分词器ik。
2023-08-09 20:36:11
1136
原创 Kafka:springboot集成kafka收发消息
4、component中实现接收类HelloListener。思路:在传递消息时,将对象转为json字符串,在接收时再解析。1、springboot中引入kafka依赖。3、controller实现消息发送接口。2、配置application.yml。1、controller实现发送。2、component实现接收类。浏览器访问该接口并查看控制台。kafka环境搭建参考。
2023-08-09 17:46:12
1498
原创 Kafka:安装和配置
broker:已发布的消息保存在一组服务器中,称为kafka集群,集群中的每一个服务器都是一个代理(broker),消费者(consumer)可以订阅一个或者多个主题(topic),并从broker中拉取数据,从而消费这些已发布的信息。生产者发送消息,多个消费者订阅同一个主题,只能有一个消费者收到消息(一对一)topic:Kafka将消息分门别类,每一个消息称为一个主题(topic)生产者发送消息,多个消费者订阅同一个主题,所有消费者都能收到消息(一对多)①创建kafka-demo工程并引入依赖。
2023-08-09 16:44:40
1514
原创 springboot:统一参数校验(JSR303校验)
6、如果校验出错Spring会抛出MethodArgumentNotValidException异常,我们需要在统一异常处理器中捕获异常,解析出异常信息。4、可以看到上面接口使用WmNewsDto模型对象接收参数,所以进入WmNewsDto类,在属性上添加校验规则。2、在引入的validation依赖包下有很多这样的校验注解,直接使用注解定义校验规则即可。1、在项目父工程添加spring-boot-starter-validation的依赖。3、现在对下面业务中的文章发布功能做参数校验。
2023-08-06 16:22:35
233
原创 MinIO:微服务中上传图片流程
1、在nacos中配置minio参数。封装minio上传工具。获取用户id的前置工作。2、controller层。
2023-08-06 09:30:53
1244
原创 微服务:从header中获取用户存入当前线程
1、从网关gateway工程filter中解析token携带的当前用户信息并添加到header中。2、在utils工程下创建一个线程工具类WmThreadLocalUtil。3、在业务项目中创建拦截器 WmTokenInterceptor。4、在业务工程中创建配置类WebMvcConfig并实现请求拦截。得到header中的用户信息并存入当前线程。filter完整代码。
2023-08-05 21:31:13
1258
原创 Minio:基本使用
MinIO兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。由于采用Golang语言实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。MinIO是基于Apache License v2.0开源协议的对象存储服务,可以作为云存储的解决方案来存储海量的图片,视频,文件等数据。4、创建测试类MinIOTest上传文件。2、点击右下角 + 号创建一个桶。
2023-08-05 10:42:11
372
原创 Freemarker:生成HTML文本文件
2、在test下创建测试类 FreemarkerTest。1、修改application.yml配置文件。
2023-08-05 09:58:15
598
原创 Freemarker:基本使用
简介:freemarker是一款模板引擎,即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等),它不是面向最终用户的,而是一个java类库,是一款程序员可以嵌入他们所开发产品的组件。在templates下创建模板文件 01-basic.ftl(内容如下) ,模板中的插值表达式最终会被freemarker替换成具体的数据。5、创建Controller类,向Map中添加name,最后返回模板数据。1、创建freemarker-demo模块。
2023-08-05 09:37:39
99
原创 swagger使用
ApiModelProperty:用对象接收参数时,描述对象的一个字段。@ApiOperation:描述一个类的一个方法,或者说一个接口。@ApiImplicitParams:多个请求参数的描述信息。@Api:修饰整个类,描述Controller的作用。@ApiResponse:HTTP响应其中1个描述。@ApiResponses:HTTP响应整体描述。@ApiImplicitParam:一个请求参数。@ApiError :发生错误返回的信息。@ApiParam:单个参数的描述信息。
2023-08-03 20:01:39
118
原创 虚拟机中docker安装nacos
-restart=always 开机启动。MODE=standalone 单机版。-p 8848:8848 映射端口。-d 创建一个守护式容器在后台运行。
2023-08-03 08:30:20
168
原创 CompletableFuture:实现并发执行
可以看到下面高亮部分的代码是依次查询了不同的mapper。当a查询结束才会执行b查询,以此类推,存在查询效率问题。//使用工具类获取username。/*当天时间区间*/
2023-07-31 18:25:09
151
原创 基于kaptcha实现图形验证码功能
这里我配置了两种类型的验证码 math 数字计算 和 char 字符验证。# 验证码类型 math 数组计算 char 字符验证。这里我使用math类型。1、引入kaptcha插件依赖。2、实现kaptcha配置类。# 获取ip地址开关。
2023-07-29 09:34:28
276
原创 Springboot实现导出报表功能
在前端点击导出后打开文件数据已存在。3、订单查询类的service实现类。1、准备好报表模板并引入到项目中。4、这里省去mapper层的查询。2、实现controller。3、service实现类。
2023-07-23 10:29:56
750
原创 Springboot 开启定时任务
EnableTransactionManagement //开启注解方式的事务管理。log.info("定时任务开始 {}", new Date());@EnableScheduling //开启定时任务的注解。1、导入maven坐标 spring-context。@EnableCaching //开启缓存的注解。实际上在项目创建时已近自动引入。/*定时任务,每隔5秒触发一次*/3、实现定时任务,每隔5秒打印一次时间。2、在启动类添加开启定时任务的注解。/*自定义定时任务类*/
2023-07-22 09:29:19
60
原创 Spring Cache基本使用
Cacheable : 在方法执行前,先判断缓存中是否有数据,如果有,则返回缓存数据,如果没有数据,调用方法将返回值放到缓存中。springCache是一个框架,实现了基于注解的缓存功能,只需要简单的加一个注解,就可以实现缓存。@EnableTransactionManagement //开启注解方式的事务管理。@EnableCaching :开启缓存注解功能,通常加在实现类上。@CachePut :将方法的返回值放到缓存中。@EnableCaching //开启缓存的注解。/*修改售卖状态*/
2023-07-20 20:03:10
54
原创 Springboot实现微信小程序登录
/ 如果有私有声明,一定要先设置这个自己创建的私有的声明,这个是给builder的claim赋值,一旦写在标准的声明赋值之后,就是覆盖了那些标准的声明的。//商户API证书的证书序列号。//退款成功的回调地址。//支付成功的回调地址。// 指定签名的时候使用的签名算法,也就是header那部分。// 设置签名使用的签名算法和签名使用的秘钥。//小程序的appid。
2023-07-19 18:11:27
2305
1
原创 HttpClient:入门案例
System.out.println("响应码为:" + statusCode);System.out.println("服务器返回状态码为:" + code);System.out.println("响应数据为:" + body);System.out.println("获取到的数据为" + s);//创建 HttpClient 对象。/*发送HttpClientGet请求*/// 创建httpclient对象。//获取服务返回状态码。//获取服务器返回数据。//指定请求编码方式。
2023-07-19 11:35:10
45
原创 Redis:导入Spring Data Redis
redisTemplate.opsForValue().set("city","北京");database: ${sky.redis.database} #0号数据库。password: ${sky.redis.password} #密码。port: ${sky.redis.port} #端口号。host: ${sky.redis.host} #地址。/*查询key是否存在,返回布尔类型的值*//*合并两个集合的查询值,去掉重复的值*//*遍历所有的key,查看类型*//*查询两个集合的共同值*/
2023-07-19 09:39:56
266
原创 SpringBoot原理
在sprigboot提供大量常见的起步依赖,例如spring-boot-starter-web中就集成了所有web开发中常见的依赖,我们只需要引入这一个依赖,其他的依赖都会通过mave的依赖传递自动传递过来,所谓maven的依赖传递可以理解为A依赖,依赖了B,B依赖了C,那么引入依赖A后,依赖B和C也会自动引入。SpringBoot的自动配置就是当spring容器启动后,一些配置类,bean对象就会自动存入到IOC容器中,不需要我们手动去声明,从而简化了开发,省去了繁琐的配置操作。
2023-07-13 19:06:26
75
1
原创 ES: RestClient基本查询
request.source().query(QueryBuilders.matchQuery("all","如家"));request.source().query(QueryBuilders.matchQuery("all","如家"));//根据字段名获取高亮结果。//1、准备request。//1、准备request。//1、准备request。//1、准备request。//2.2 排序sort。//4.1 获取总条数。//4、结果解析方法。//4、结果解析方法。//4、结果解析方法。
2023-07-10 16:02:15
104
1
原创 Elasticsearch:索引表以及文档的增删改查
/2、请求参数、MAPPING_TEMPLATE是静态常量字符串,内容是创建索引库的DSL语句。//2、准备参数,每两个参数为一对 key value。//引入RestHighLevelClient对象。//引入RestHighLevelClient对象。//2、准备参数,添加多个request。//1、创建requst对象。//1、创建requst对象。//1、创建requst对象。//1、准备requst对象。//1、创建requst对象。//1、创建requst对象。//1、创建requst对象。
2023-07-10 14:31:15
93
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人