- 博客(74)
- 收藏
- 关注
原创 Kafka 入门与实战
Override// System.out.println("分区值"+next);}else {//kafka 默认的分区策略//配置自定义分区策略/*** 发送消息是会调用该方法,可以在拦截器中做一些处理,记录日志操作* @return*/@OverrideSystem.out.println("拦截器拦截到消息:"+producerRecord.value());/*** @param recordMetadata 服务器返回的元数据信息。
2025-02-08 00:06:12
1571
原创 Skywalking 入门与实战
Skywalking 时一个开源的。它可以帮助开发者和运维人员深入了解分布式系统中各个组件之间的调用关系、性能瓶颈以及异常情况,从而提供系统级的性能优化和故障排查。
2024-07-30 23:29:41
3563
原创 Seata 入门与实战
性能相比其他事务要差一点,但能保证最严格的数据一致性。XA 模式需要设置串行化隔离级别,相当于对数据添加了读写锁。另外连接资源需要在整个事务期间保持,这样可能会导致资源锁定问题,从而影响并发事务吞吐。实现简单、无业务侵入性能差、必须实现 XA 协议、容易产生死锁。隔离级别要求高,强一致性分阶段事务模型,牺牲了一定的可用性(保证了强一致性)XA 协议是一种标准的分布式事务协议,用于实现跨多个资源管理器(如数据库)的分布式事务的一致性。
2024-07-29 17:57:21
8925
2
原创 Sentinel 入门与实战
流量控制是指对系统中的请求流量进行限制和管理,以确保系统在承受能力范围内正常运行。熔断是一种在分布式系统中处理故障和异常的策略。当某个服务或者接口发生故障或异常时,熔断机制会迅速将请求拒绝或者返回错误信息,而不是让请求一直等待或者重试,以保护系统免受故障的扩散影响。熔断的原理是通过对服务的监控和评估,根据一定的规则来判断服务的健康状况。
2024-07-26 00:48:01
1433
原创 微服务实现全链路灰度发布
/此时调用时,将request作为参数传给调用方法,在得到服务实例时通过判断请求头中的标识来返回实例});//将request 传给调用方法} else {//得到 Request 对象,[通过方法传递参数得到此对象]//从 Request 对象的 Header 中得到灰度标签//判断灰度列表不为空}else {@Bean。
2024-07-21 16:31:37
897
原创 Spring Cloud Gateway 入门与实战
Component/*** @param exchange 要执行的事件* @param chain 过滤器链*/@Override//此处使用的是相应试 HTTP}else {@Override//过滤器的执行顺序,值越小,越早执行return 0;
2024-07-16 19:02:08
1057
1
原创 Spring Cloud LoadBalancer 入门与实战
自定义负载均衡器只需要参考官方负载均衡器写就可@Autowired} else {} else {} else {} else {} else {try {if (!} else {//获取request 对象//自定义负载据衡器策略,通过ip hash后,取模获取下标//获取服务实例@Resource@Bean。
2024-07-09 23:41:50
1478
原创 OpenFeign 入门与实战
自定义重试类@Overridethrow e;try {//重试间隔时间@Override设置配置文件spring:cloud:nacos:discovery:openfeign:client:config:default: #全局配置connect-timeout: 1000 #连接超时时间read-timeout: 1000 #读取超时时间retryer: com.example.consumer.config.MyRetryer #自定义重试类。
2024-07-07 14:19:00
1116
原创 Nacos-注册中心
Nacos 注册中心的底层实现主要依赖于两个关键组件:服务注册(Service Register)和服务发现(Service Discovery)。长轮询:服务器接收到客户端的请求之后,如果没有数据更新,则连接保持一段时间,直到有数据或者超时才会返回。Nacos 配置中心是支持配置项自动刷新的,而其实现的原理是通过。由于在父节点已经添加过相关依赖,在子节点可以不用添加。
2024-06-30 22:25:57
886
原创 Nacos-配置中心
启动成功后就可以使用 http://localhost:8084/nacos 访问 Nacos 的控制台了。注:创建项目时,一定要配置国内源,不然依赖无法加载。
2024-06-26 15:57:24
1161
原创 MySQL函数
(1) 当 interval 作为一个函数是, 它被当做一个比较函数, 即 interval(), 如 interval(4,0,1,2,3,4,5,6), 则在函数中,第一个数 4 作为被比较数, 后面的0,1,2,3,4,5,6 为比较数, 然后将后面的数字依次与4进行比较, 返回小于等于4 的个数, 所以上述结果为5 , 注意,只有将4 后面的数字从小到大进行排列, interval 函数才能正常使用, 若排序混乱, 可以使用,但会影响最终结果。返回第一个取值为true的布尔表达式所对应的值。
2024-05-24 20:13:35
393
原创 Redis
它通过添加多层链表的方式,提供了一种以空间换时间的方式来加速查找。跳跃表由一个带有多层节点的链表组成,每一层都是原始链表的一个子集。最底层是一个完整的数据链表,包含所有的元素。每个更高层级都是下层级的子集,通过添加额外的指针来跳过一些元素。这些额外的指针称为 “跳跃指针”,它们允许快速访问更远的节点,从而减少了查找所需的比较次数。跳跃表的平均查找时间复杂度为 O(log n),其中 n 是元素的数量。这使得它比普通的有序链表具有更快的查找性能,并且与平衡二叉搜索树(如红黑树)相比,实现更为简单。
2024-05-24 20:13:12
954
原创 JavaScript 基础
注意,JS 中的字符串常量可以用单引号表示,也可以使用双引号表示.HTML 中推荐使用双引号,JS 中推荐使用单引号(使用双引号容易出现截断问题)
2024-05-24 20:11:42
460
原创 Git 指令
<<<<<< HEAD” ~ “=====” 之间的内容和 “=====~>>> dev1”之间的内容就是发生冲突的内容,我们可以选择保留的内容,将不需要的进行删除(正常的vim 删除操作),删除完后再进行 add、commit 和 merge 操作。将远程 origin 仓库中的 master 分支拉下来合并到本地的master 分支。合并某个stash版本,本质上和分支合并差不多,也会有合并冲突,因此当我们合并过一个之后,在我们合并第二个时需要先提交此次合并的内容,并且下次合并时可能会发生合并冲突。
2024-04-14 22:59:38
2582
原创 Redis 安装
默认安装的⽬录为/opt/rh/rh-redis5/root/usr/bin/,藏的太深了,不⽅便使⽤.我们通过符号链接(相当于快捷方式),把需要⽤到的关键内容设置到⽅便使⽤的⽬录中:1)根据可执行程序设置符号链接2)针对配置文件设置符号链接3) 启动守护进程4) 设置工作目录先创建工作目录再在配置文件中,设置工作目录5)设置日志目录先创建日志目录再在配置文件中,设置日志目录kill 进程id。
2024-03-27 21:40:27
363
原创 SpringBoot 统一功能处理
Overrideresponse.getWriter().write("当前未登录");@Override//拦截所有接口//排除接口//排除静态资源中image包下的所有资源。
2024-01-23 22:16:44
1001
原创 Spring AOP
/表明此类为一个切面@Aspect@Component//定义一个切点,这里使用AspectJ 表达式语法其中pointcut 为空方法,它不需要有方法体,此方法名就是起到一个“标识”的作用,标识下面的通知方法具体指的是哪个切点(因为切点可能会有很多个)切点表达式支持三种通配符::匹配任意字符,只匹配一个元素(包类,或方法,方法参数)..:匹配任意字符,可以匹配多个元素,在表示类时,必须和联合使用。
2024-01-22 00:51:57
1262
原创 MyBatis 查询数据库
if>标签,只适用于一个非必填的字段,如果所有要插入的属性都是非必填的属性,就考虑使用<trim>标签结合<if> 标签,对多个字段都采取动态生成的方式.在某些场景,如再添加用户的时候不确定某些字段是否会传递,为了不使数据库中对应的值为null,就需要用到下面的标签.${} 适用场景: 当业务需要传递 SQL 命令时, 只能使用 ${}, 不能使用 #{}。• keyProperty:数据库自增的id 在类对象中对应的属性名,会将数据库中的自增主键的值赋值给该属性。而#{} 是安全的,不存在SQL注入。
2024-01-15 21:27:22
1257
原创 SpringMVC
RequestMapping 是 Spring Web 应用程序中最常被用到的注解之一,它是用来注册接口的路由映射的。路由映射:所谓的路由映射指的是,当用户访问一个url 时,将用户的请求对应到程序中某个类的某个方法的过程就叫做路由映射。//写法一//写法二//写法三post 请求的 2 中写法//写法一//写法二。
2024-01-10 23:34:18
1193
原创 SpringBoot 配置文件
理论上 properties 可以和 yml 一起存在于一个项目中,当两者一起存在一个项目中时,如果配置文件中出现了同样的配置,比如 properties 和 yml 中都配置了端口号,那么这个时候会以 properties 中的配置为主,也就是。yml 是树形结构的配置文件,它的基础语法是"key: value",注意 key 和 value 之间使用英文冒号加空格的方式组成的,其中的空格不可省略。properties 可以和 .yml 共存,但实际的业务当中,我们通常只会采取一种同一的配置文件格式。
2023-12-27 23:19:48
1110
原创 Spring的使用-Bean对象的储存和获取/Bea对象的作用域与生命周期
比如 singleton 单例作用域,就表示 Bean 在整个 Spring 中只有一份,它是全局共享的,那么当其他人修改了这个值之后,那么另一个人读取到的就是被修改的值。
2023-12-26 19:56:17
1071
原创 性能测试-LoadRunner
在Load Runner 中,为了达到并发这样的机制,就引入了集合点:lr_rendezvous("rendezvous1");事务结束:lr_end_transaction("login", LR_AUTO);开启事务:lr_start_transaction("login");注意:事务必须有开始有结束,开始的事务和结束的事务的名字必须一致。重新设置好参数后点击Parameters可以添加新的参数。(1) lr_log_message("登录")设置日志打印,方便查看日志。
2023-12-19 16:29:27
872
原创 Junit+Selenium 自动化测试
标记一个测试用例忽略此条测试用例在所有用例执行前先执行在所有用例执行后再执行在每个测试用例执行前执行在每个测试用例执行后执行。
2023-12-18 19:49:40
492
原创 Spring(Spring/Springboot 的创建) 基础
一. Spring1.1 Spring是什么?Spring 指的是 Spring Frameword(Spring 框架),它是一个开源框架。Spring 是包含了众多工具方法的IoC容器。1.2 什么是容器?容器时用来容纳某种物品的装置。我们之前接触到的容器:• List/Map -> 数据存储容器• Tomcat-> Web 容器1.3 什么是IoC?IoC(Inversion of Control) 翻译成中文是“控制反转”的意思,也就是说sp
2023-12-07 13:42:22
1088
1
原创 软件测试:测试分类
验证界面内容的完整性,一致性,准确性,友好性,兼容性.比如页面内容对屏幕大小的自适应,换行,内容是否全部清晰展示.验证整个界面布局和排版是否合理,不同板块字体的设计,图片的展示是否符合需求对界面不同控件的测试,比如,对话框,文本框,滚动条,选项按钮等是否可以正常使用,有效和无效的状态是否设计合理.界面的布局和色调符合当下时事的发展.重叠,截断,文字不合理自动换行等.
2023-11-20 22:42:03
385
原创 网络原理-IP/数据链路层协议
IP协议有两个版本,IPv4和IPv6.我们通常所用的IP协议,若没有特殊说明,默认都是IPv4.IPv4数量=2^32,大约43亿左右,而TCP/IP协议规定,每个主机都需要有一个IP地址.对于全世界的计算机来说,这个数量是不够的,所以后来推出了IPv6(长度128位,是IPv4的4倍).但因为目前IPv4还广泛的使用,且可以使用其他技术(NAT机制)来解决IP地址不足的问题,所以IPv6也就没有普及.NAT机制把所有的IP地址分成两大类.
2023-11-17 12:59:23
526
原创 网络原理-UDP/TCP详解
由上图可以看出,一个UDP报文最大长度就是65535.• 16位长度,表示整个数据报(UDP首部+UDP数据)的最大长度(注意,这里的16位UDP长度只是一个标识这个数据报长度的字段,并不是这个数据报传输的数据)• 如果校验和出错,就会直接丢弃。:通过网线传输时,电信号使用高低电平来表示0和1.。但是,如果外部环境干扰,就有可能导致低电平->高电平,高电平->低电平,造成比特翻转=>数据就传输错了。校验和就是通过数据报中的数据内容通过计算得到的。值得注意的是。
2023-11-12 23:05:14
4435
2
原创 网络编程
Socket 套接字,是由系统提供用于网络通信的技术,是基于TCP/IP 协议的网络通信的基本操作单元。基于 Socket套接字的网络程序开发就是网络编程。
2023-11-05 17:53:03
562
1
原创 软件测试概念与基础
软件测试就是执行和运行软件的过程,其目的是为了发现软件功能和需求不符合的地方,或者寻找实际输出和预期输出之间的差异。当且仅当规格说明是存在的并且正确,程序与规格说明之间的不匹配才是错误。当需求规格说明书没有提到的功能,判断标准以最终用户为准:当程序没有实现其最终用户合理预期的功能和要求时,就是软件错误。需求就是满足用户期望或正式规定文档(合同、标准、规范)所具有的条件和全能,包含用户需求和软甲需求。
2023-10-10 23:22:05
68
原创 网络初识
IP 地址主要用于表示网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址IP 地址是一个32为的二进制数,通常被分割为4个“8位二进制数“(也就是4个字节),通常用”点分十进制“的方式来表示,即 a.b.c.d 的形式(a,b,c,d 都是0~255之间的十进制整数)。如:100.5.6.3。127.* 的IP地址用于本机环回(loop back) 测试,通常是127.0.0.1。
2023-09-22 14:38:33
825
原创 文件IO操作
进程,使用 PCB 这样的结构来表示,其中有一个结构为 文件描述符表,记载了当前进程都打开了哪些文件,每次打开一个文件,就会在这个表里,申请到一个位置,这个表可以当成一个数组,数组下标就是文件描述符,数组元素就是这个文件在内核中的结构体表示。但是,这个表长度不是有限制的,不能无休止的打开,但是又不释放,一旦满了,继续打开,就会打开失败。构造File对象的过程中,可以使用 绝对路径/相对路径进行初始化.这个路径指向的文件,可以是真实存在的,也可以是不存在的.(注意,有File 对象,并不代表真实存在该文件)
2023-09-17 17:39:13
247
原创 多线程--进阶
ABA问题: 假设存在两个线程t1和 t2 ,有一个共享变量,初始值为 A.接下来,线程t1 想使用 CAS把num 值改成Z,那么就需要• 先读取 num的值,记录到oldNum 变量中.• 使用CAS 判定num的值是否为A,如果为A,就修改成了Z.但是,在t1 执行这两个操作之间,t2 线程可能把num 的值从A变成了B,有从B改成了A.当t1 使用oldNum的值和内存中的值进行比较时,就会发现值没有变,从而执行CAS指令,对num进行赋值.
2023-09-09 20:50:26
820
原创 KMP 算法
当 k回退后,再次匹配 sub.charAt(k) == sub.charAt(i - 1)成功后,我们需要再次判定 next[i]==next[k+1]?KMP 算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速的匹配的目的.具体实现是通过一个next() 函数来实现的,函数本身包含了模式串的局部匹配信息。KMP的精髓就是 next 数组:也就是用 next[ j ]=k 来表示,不同的 j 来对应一个K值,这个K就是你将来要移动的 j要移动的位置。
2023-08-18 17:16:12
103
原创 Day15-Day21
(1) 数据库做join操作时,至少要涉及到几张表?()A. 3B. 1C. 2D. 4答案: B数据库查询语句可以自连接(2) 下面哪一个命令为删除 sample 数据库的 tb_name 表()答案: D当在table 数据库中(使用过use table后),可以使用drop table sample.tb_ame,否则,不可以.而 D 选项不在该数据库中仍可以删除该表.(3) 在 Myaql 中,语句 SELECT IF(-1,5,2)的返回值是:A. 2B. 6。
2023-08-14 13:31:51
371
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人