![](https://img-blog.csdnimg.cn/4b17ce209d6d488ab758cbe0b3190248.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java中间件&服务框架
文章平均质量分 60
springcloud,gateway,nacos,eureka,ribbon,redis,seata,docker
雾喔
一个积极向上的00后,喜欢折腾一些有趣的东西。
展开
-
Redis实现热点数据排行榜或游戏积分排行榜
综上所述,Redis的Sorted Set非常适合用于实现排行榜功能。它提供了丰富的命令操作,可以轻松地实现数据的增删改查和排名统计等需求。原创 2024-05-20 21:52:49 · 671 阅读 · 0 评论 -
缓存降级
缓存降级的关键是要提前设计好降级策略,并在代码中实现相应的逻辑。同时,还要定期测试和验证这些降级策略的有效性,确保在Redis缓存出现问题时,系统能够平滑地进行降级,保证业务的正常运行。原创 2024-05-20 21:12:48 · 593 阅读 · 0 评论 -
假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀开头的,如果将它们全部找出来?
我们可以使用 keys 命令和 scan 命令,但是会发现使用 scan 更好。原创 2024-05-20 18:19:47 · 336 阅读 · 0 评论 -
Redis的延时队列
/ 处理任务enqueue(String task, long delay): 将任务添加到延时队列中,延迟时间为 delay 毫秒。getReadyTasks(): 获取当前应该被处理的任务集合。dequeue(String task): 从延时队列中删除指定的任务。processReadyTasks(): 处理当前应该被处理的所有任务。原创 2024-05-19 11:29:06 · 796 阅读 · 0 评论 -
Redis定期删除过期数据
以上对于redis的过期数据进行定期删除是使用了@Scheduled(fixedDelay = 60000)注解,这是Spring 框架提供的注解,用于定义定期执行的任务。这行代码获取了 Redis 中所有的键(key),keys("*") 方法会返回一个 Set 类型的集合,其中包含了所有的键。其中:if (template.getExpire(key)原创 2024-05-18 21:01:03 · 929 阅读 · 0 评论 -
Hystrix服务熔断
当某个微服务不可用或者响应时间太长时, 会进行服务降级,进而熔断该节点微服务的调用,快速返回“就是当某个服务熔断之后,服务器将不再被调用,此时客户端可以自己准备一个本地的fallback。一段时间后,Hystrix会尝试恢复正常的调用,如果调用成功,则重新关闭熔断器。通过以上步骤,当被标记的服务方法发生故障或超时时,Hystrix将会拦截该请求并执行备选的熔断处理方法(即。回调,返回一个缺省值。这样做,虽然水平下降,但好歹可用,比直接挂掉强。会监 控微服务间调用的状况,当失败的调用到一定阈值,缺省是5。原创 2024-05-13 21:39:40 · 726 阅读 · 0 评论 -
MQ
比如下单流程,A服务—>B服务,总的耗时是A耗时时间+B耗时时间,而改为A—>mq---->B后,A发送mq后立刻返回,不需要等待B,A与B之间从同步改为了异步,当B是个外部服务且比较耗时时,可考虑。还是上边的例子,A服务中硬编码调用B服务,如果还有其他,C服务、D服务等,都要硬编码,代码耦合。大体看了下,常见的mq实现,rabbitmq、kafak、rocketmq至少支持1w/s+的tps,但数据库就没有这么大的处理能力了,还是下单流程,订单数据可以先存到mq中,立刻返回,可以慢慢消费消息落到数据库。原创 2024-03-30 17:11:50 · 676 阅读 · 0 评论 -
Nginx-记
这是Nginx可以快速发展的强大动力。近日总结:昨天正经爬了一次山,跟着驴友留下的路标直达山顶,一路上危险的要死,我一度以为这是我最后一次看世界,甚至内心在和妈妈道别呜呜呜,快到达山顶的部分是最危险的部分,两侧就是悬崖,而且那风也大的离谱,感觉要把我从峭壁上吹下去,甚至我们在悬崖上爬来爬去,好几次我都是跪着过去的......我们的客户端在进行翻墙操作的时候,我们使用的正是正向代理,通过正向代理的方式,在我们的客户端运行一个软件,将我们的HTTP请求转发到其他不同的服务器端,实现请求的分发。原创 2024-03-29 19:47:10 · 699 阅读 · 0 评论 -
SpringCloud-记
微服务架构就是将单体的应用程序分成多个应用程序,这多个应用程序就成为微服务,每个微服务运行在自己的进程中,并使用轻量级的机制通信。这些服务围绕业务能力来划分,并通过自动化部署机制来独立部署。这些服务可以使用不同的编程语言,不同数据库,以保证最低限度的集中式管理。原创 2024-03-23 15:57:39 · 749 阅读 · 0 评论 -
SpringBoot-记
此种方式的特点是作用范围广,系统的任何变动包括配置文件修改、方法名称变化都能覆盖,但是后遗症也非常明显,它是采用文件变化后重启的策略来实现了,主要是节省了我们手动点击重启的时间,提高了实效性,在体验上回稍差。Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,使开发者能快速上手。spring-boot-starter-web启动器自动依赖其他组件,简化了maven的配置。原创 2024-03-20 20:24:03 · 718 阅读 · 0 评论 -
前后端分离SpringSecurity实战
图片来源:三更草堂 (【SpringSecurity框架教程-Spring Security+JWT实现项目级前端分离认证授权-B站最通俗易懂的Spring Security课程-哔哩哔哩】username默认是user,密码在控制台。当然,前后端分离的时候是不需要那个登陆页的。新建一个测试的controller。登陆进去后就可以访问到。原创 2024-02-25 17:42:04 · 311 阅读 · 0 评论 -
docker部署微服务
【代码】docker部署微服务。原创 2023-11-23 21:01:02 · 1424 阅读 · 1 评论 -
minio安装与上传文件
代码中还有一个问题,就是我使用@Value来调用yml中已经配置好了的bucketName, 但是却调用不成功,所以我是直接在逻辑代码处赋值桶的名字的。如果用的是其他目录,则需要更改一下上面启动命令,将启动命令中的目录改为你自己的目录。之后调用接口的时候会直接返回一个路径,用那个路径就可以访问到自己上传的那个文件了。需要本地访问的话需要改为public,不然会没有权限查看上传文件。需要翻墙,可以先在本地下载,然后上传到服务器。账号密码都是:minioadmin。进入miniomulu。原创 2023-10-18 22:47:14 · 774 阅读 · 0 评论 -
quartz中jdbc.initialize-schema
never:从不进行初始化,也就是不清空数据库。embedded:只初始化内存数据库(默认值)always:每次都清空数据库进行初始化。原创 2023-10-17 21:48:30 · 683 阅读 · 0 评论 -
idea创建包时无法分层
就可以看到已经分层成功了。原创 2023-09-21 20:20:18 · 619 阅读 · 0 评论 -
OAuth2.0
OAuth2.0 详解 - 知乎OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方 应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容。OAuth在全世界得到广泛应用,目前的版本是2.0版。对于用户相关的 OpenAPI (例如获取用户信息,动态同步,照片,日志,分享等),为了保护用户数据的安全和隐私,第三方网站访问用户数据前都需要显式的向用户征求授权。原创 2023-09-20 17:35:35 · 84 阅读 · 0 评论 -
接口性能优化
3.使用缓存,把要查的数据,提前放好到缓存里面,需要时,直接查缓存,而避免去查数据库或者计算的过程。10.数据太大,先用文件的方式暂存,之后再异步下载文件,慢慢保存到数据库。18.机器问题(fullGC,线程打满,太多IO资源没关闭等等)5.池化思想,使用线程池,重复利用线程,避免不必要的耗时。2.异步执行,降低接口耗时,可以使用线程池或消息队列。4.提前初始化到缓存,避免一些复杂的计算的耗时。8.锁粒度避免过粗,影响接口性能。7.远程调用由串行改为并行。17.合理的线程池设计。11.SQL添加索引。原创 2023-09-18 20:11:49 · 244 阅读 · 0 评论 -
gitlab-runner安装和部署项目
在项目根目录新建一个文件.gitlab-ci.yml。提交上去就可以看到已经自动触发部署了。输入 gitlab 的访问地址。runner 描述,随便填。原创 2023-08-29 22:14:07 · 2318 阅读 · 1 评论 -
spring小记
Resource 可以根据类型注入 可以根据名称注入(是javax里的resourse)@Qualifier 根据属性名称注入,需要和@AutoWired一起使用。<1>IOC:控制反转,把创建的对象过程交给Spring进行管理。建议使用@AutoWired和@Qualifier。<2>AOP:面向切面,不修改源代码进行功能增强。Spring是轻量级的开源的javaEE框架。<3>方便程序的测试。<4>方便和其他框架进行整合。<1>方便解耦,简化开发。<6>降低API开发难度。<5>方便进行事物操作。原创 2023-08-28 17:10:50 · 346 阅读 · 0 评论 -
Mybatis小记
1.搭建实验数据库2.导入MyBatis相关jar包3.编写MyBatis核心配置文件4.编写MyBatis工具类5.创建实体类、6.编写Mapper接口类7.编写Mapper.xml配置文件8.编写测试类对象传参只引用需要的属性就可以,其余属性也不需要引用;但是#{}必须是属性名对应,没有map灵活Map传递参数,直接在sql中取出key即可【parameterType=“map”】原创 2023-08-28 17:08:58 · 762 阅读 · 0 评论 -
yml基本语法与支持的数据格式
双引号圈住时不会转义字符串中的特殊字符。数组名:[元素1,元素2,元素3]单引号圈住时会转义字符串中的特殊字符。字符串不用使用双引号或单引号圈起来。3、空格的个数不重要,只要相同层级的元素左对齐即可。1、对象:键值对的集合(key:value)2、缩进不允许使用tab只能使用空格。1、yml文件以缩进代表层级关系。5、数据格式为,名称:(空格)值。2、数组:一组按顺序排列的值。原创 2023-08-28 16:47:47 · 691 阅读 · 0 评论 -
http请求方式&&过滤器与拦截器的区别
1.过滤器:所谓过滤器顾名思义是⽤来过滤的,在Java web中,你传⼊的request,response提前过滤掉⼀些信息,或者提前设置⼀些参数,然后再传⼊servlet或者struts的action进⾏业务逻辑,⽐如过滤掉⾮法url(不是login.do的地址请求,如果⽤户没有登陆都过滤掉),或者在传⼊servlet或者struts的action前统⼀设置字符集,或者去除掉⼀些⾮法字符(聊天室经常⽤到的,⼀些骂⼈的话)。原创 2023-08-28 16:45:30 · 149 阅读 · 0 评论 -
在服务器上搭建Jenkins
近年来,在软件开发领域,git作为版本管理工具已经被广泛应用。而gitlab则是一个基于git的代码托管平台,提供了代码仓库、issue跟踪、CI/CD等功能,被越来越多的企业和团队所使用。原创 2023-08-26 17:17:17 · 1545 阅读 · 0 评论 -
在服务器上搭建gitlab
目录1.在服务器上下载gitlab2.编辑站点位置3.重载配置4.访问gitlab5.卸载gitlab最终效果展示:官方文档:安装部署GitLab服务2.编辑站点位置注意:一步一步的进去这个文件将里面的ip地址改一下,加上端口号。4.访问gitlab就是刚刚修改的站点位置。之后需要输入一下密码,输入两遍。清理命令停止gitlab卸载gitlab查看进程杀掉守护进程清理残余文件原创 2023-08-26 17:13:16 · 1076 阅读 · 2 评论 -
在服务器上搭建gitlab
最终效果展示:官方文档:安装部署GitLab服务2.编辑站点位置注意:一步一步的进去这个文件将里面的ip地址改一下,加上端口号。4.访问gitlab就是刚刚修改的站点位置。之后需要输入一下密码,输入两遍。原创 2023-08-06 16:02:57 · 1019 阅读 · 0 评论 -
mybatis-plus中的@Select注解里面写sql语句的in
比葫芦画瓢就成,注意ids的集合为String类型。原创 2023-08-01 20:46:10 · 1493 阅读 · 0 评论 -
异步实现邮件发送
Async 注解可以添加到类上,表示该类里面的所有方法都是异步执行,也可以添加到方法上,表示该方法异步执行。原创 2023-08-01 18:25:00 · 499 阅读 · 0 评论 -
mybatis固定代码
mybatis固定代码首先是pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://m原创 2022-03-24 09:13:55 · 116 阅读 · 0 评论 -
浅聊一下Lambda表达式
概念:Lambda表达式是JDK8的一个新特性,可以取代大部分的匿名内部类写出更优雅的Java代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。原创 2022-10-06 19:57:28 · 536 阅读 · 0 评论 -
提交到远程仓库
离提交项目还有半个月不到的时间,说说我是怎么把本地项目提交到远程仓库的吧首先,连接远程仓库地址点击右上角这个符号,commit这里1处是必须要写的拉取远程仓库(更新)推送项目就完成啦,如果大家有什么建议欢迎在评论区提出...原创 2022-04-23 21:37:49 · 390 阅读 · 2 评论 -
foreach,Thymeleaf相关jar包的下载,spring,数据库的概念
foreachjava里面的for循环的格式: for(String s : arr)是什么意思NaNfor的循环语句for(String s : args)这个格式是foreach的形式,表示取出数组args[]中的每一个元素,就是循环一次就依次取出一个元素赋值给s,直到取完为止java中的foreach也是用for表示具体语法分两种:第一种-数组for(type var : arr) {//循环体}示例(这里以List为例):Listlist = new ArrayList();for(Stri原创 2022-04-02 20:35:42 · 4929 阅读 · 0 评论 -
MybatisPlus实现乐观锁(实战)
更新时,version + 1,如果where语句中的version版本不对,则更新失败。一,首先在数据库里加上一个字段VERSION,默认值为0.之后在test里面进行模拟修改测试冲突就好啦。1.取出记录时,获取当前version。四,新建一个config包。三,添加mapper。原创 2022-09-15 16:30:17 · 942 阅读 · 1 评论 -
自己的工具类和分页查询
【代码】自己的工具类。原创 2022-11-18 15:39:35 · 260 阅读 · 0 评论 -
关于我写的循环遍历
这个是service层,调用的dao层的方法可以望名生义。主要遍历这样的数据。原创 2022-08-01 10:42:38 · 120 阅读 · 0 评论 -
创建springboot项目时改为国内网站
总结:今天进行了蓝桥杯 的竞赛,说一说我的感悟,还是练得不够,其实有挺多熟悉的题,可是还是没做出来,还是征战明年的蓝桥杯吧,还有就是,电脑的问题,我自己的电脑不能用,只能借的小伙伴的电脑,操作不太熟练,...原创 2022-04-09 21:11:10 · 939 阅读 · 4 评论 -
浅聊一下Stream流
下面的内容写的可能比较混乱stream流中的filter方法://过滤stream流中的limit方法://限制输出数据数量从下面可以看到skip指定类型是long,所以不能指定跳过某一个String。原创 2022-10-13 21:53:26 · 2394 阅读 · 0 评论 -
springboot+springdata jpa后端接口实现
springboot+springdata jpa提供接口原创 2022-07-22 15:55:23 · 10717 阅读 · 0 评论 -
springmvc固定代码
src/main/resources/springmvc-servlet.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframewor原创 2022-03-24 09:40:53 · 90 阅读 · 0 评论 -
浅浅的计算机网络知识
先面向百度搭建理解框架。原创 2022-12-01 17:07:48 · 1900 阅读 · 0 评论 -
springboot+springdata jpa+thymeleaf项目实战
thymeleaf实现分页,之前我在网上也找了相关教程,但是不知道咋回事都没什么效果,于是我就使用limit自己写了一个分页。原本我想要的效果是局部更新,但是经询问前端孩子之后,我决定放弃局部更新转为多写几个页面。...原创 2022-07-16 22:12:12 · 880 阅读 · 5 评论