- 博客(109)
- 收藏
- 关注
原创 【Spring Cloud】-- Nacos
如果设置了权重时候,发现该权重配置并没有生效,原因时我们当前使用的应用框架(Spring Cloud LoadBalancer)有自身的负载均衡配置方法,并没有使用nacos的权重属性进行负载均衡。由于成本和跨区访问是通过网络进行传输的,会出现延迟的现象,所以当微服务进行访问时,是尽量访问同机房的实例的,如果同机房的实例不可用时,才会去访问其他机房的实例。环境隔离就是这几个环境之间是不能相互通信的,Nacos提供了namespace来实现环境的隔离,不同的namespace的服务之间是不可见的。
2025-08-07 00:27:23
1160
原创 【Spring Cloud】-- 注册中心
服务提供者会在启动时向注册中心注册服务,并且会定时向注册中心发送心跳汇报存活状态。服务消费者会从注册中心中获取服务提供者提供的地址,并通过获取的地址调用服务提供者的接口。服务发现就是给服务消费者提供一个可用的服务列表。
2025-08-05 23:56:52
283
原创 【Spring Cloud】-- RestTeplate实现远程调用
但是这种风格的接口,只能从接口上定义其资源,但是无法通过接口了解具体对资源进行了什么操作。定义bean可以使用五大注解或者@Bean的方式来定义,但是RestTemplate是第三方的类,五大注解只能修饰自己的类,所以我们使用@Bean来进行修饰。: 是Spring提供的,用来封装HTTP调用,并强制使用RESTful风格,它会处理HTTP连接和关闭,只需要使用者童工资源的地址和参数即可。:表现层资源状态转移(资源在网络中以某种表现形式进行状态转移),是一种软件架构风格,表现层:资源的表现形式。
2025-08-05 22:06:16
217
原创 Linux基本命令
对于目录,该命令列出该目录下的所有子目录与文件。:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。:将文件重命名(第二个参数是文件)或 将其移至一个新的目录中(第二个参数是目录)。将当前工作目录改变到指定的目录下。:cp 源文件或目录 目标文件或目录。:mv 源文件或目录 目标文件或目录。:tail [参数] [文件]。:grep [参数] [文件]:ls[选项][目录或文件]:cat [选项] [文件]:用于查看系统上运行的进程。:查看系统上的网络状态。:查看目标文件的内容。
2025-08-05 00:17:38
234
原创 Redis基本介绍
如果在分布式系统中采用定义变量来存储数据的话是不能满足我们的需求的,定义的变量是只能在当前的服务器的进程的内部可以进行通信的。硬盘相当于对内存的数据备份了一下,如果redis重启了,就会在重启时加载硬盘中的备份数据,使Redis的内存恢复到重启前的状态。一个Redis能存储的数据是有限的,如果想存储更多的数据,就可以引入多个主机,部署多个Redis节点,每个Redis存储数据的一部分。Redis是在分布式系统中,才能发挥威力的,如果只是单机程序,直接通过变量存储数据的方式是比使用Redis更优的选择。
2025-06-23 20:53:55
716
原创 分布式系统
此时就可能会导致某个硬件资源不够用,无论是哪方面的资源不够用了,都可能会导致服务器处理请求的时间变长,甚至会处理出错,这极大的降低了用户的体验感。数据库服务器,就需要更大的硬盘空间,更快的数据访问速度,,就可以配置更大硬盘的服务器,甚至可以使用SSD硬盘。为了更方便代码的维护,就可以把一个复杂的服务器拆分成多个的,功能更单一,但是更小的服务器。通过增加应用服务器的方式,解决了处理更高请求量的问题,但是随着请求量的增加,对应的存储服务器要承担的请求量也会更多,此时就引入了读写分离,这种方式会比较麻烦。
2025-06-13 16:13:27
1047
原创 【JavaEE】-- HTTP
HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上的应用程序进程之间如何相互通信的规则和标准。简单来说,应用层协议就是应用程序用来”对话”的语言和约定。
2025-06-10 17:00:39
871
原创 【JavaEE】-- 网络原理
我们在使用QQ时都是需要登录的,登陆的时候等于向QQ服务器发送了一个请求,然后QQ服务器给了有一个响应,此时QQ服务器就会记录登陆方的信息类似于key value的形式,比如:(key:QQ123456, value:IP:端口号)。发送方通过某种算法(CRC–对每个byte进行累加操作,最终得一个值)对载荷进行运算,得到一个值并保存起来,接收方在收到数据之后,取出载荷以相同的算法进行计算,如果得到的结果与校验和相同,就表示接收到的载荷与发送的载荷一致,中途没有被篡改,否则载荷就是无效的。
2025-05-28 16:06:38
975
原创 【JavaEE】-- 文件操作和IO
文件是操作系统中的概念,Java为不同的操作系统做了封装,提供了一个File类,来让Java程序员操作文件。修饰符及返回值类型方法签名说明intread()一次读取一个字节的数据,返回-1代表已经完全读完了int最多读取b.length字节的数据到b中,返回实际读到的数量;-1代表已经读完了int最多读取len-off字节的数据到b中,放在从off开始,返回实际读到的数量;-1代表以及读完了voidclose()关闭字节流签名说明利用File构造文件输入流。
2025-05-27 16:31:24
887
原创 【MySQL】-- 事务
事务把一组SQL语句打包成为一个整体,在这组SQL的执行过程中,要么全部成功,要么全部失败。这组SQL语句可以是一条也可以是多条。来看一个转账的例子,如图:转账之前和转账之后张三和李四的总额都是2000-> );mysql> insert into bank_account(name, balance) values ('张三', 1000), ('李四', 1000);
2025-05-09 19:55:54
1227
原创 【MySQL】-- 索引(面试必问)
MySQL的索引是⼀种数据结构,它可以帮助数据库⾼效地查询、更新数据表中的数据。索引通过⼀定的规则排列数据表中的记录,使得对表的查询可以通过对索引的搜索来加快速度。不同的数据结构有自己的实现规则,不同的规则导致不同的数据结构的效率不同,最终时间复杂度和空间复杂度也不同。数据库最重要的功能是存储数据,在保证数据安全的基础上尽可能的提升效率。
2025-05-08 21:19:17
1592
原创 【MySQL】-- 视图
视图是一个虚拟的表,它是基于一个或多个基本表或其他视图的查询结果集。视图本身不存储数据,而是通过执行查询来动态生成数据。用户可以像操作普通表一样使用视图进行查询、更新和管理。视图本身并不占用物理存储空间,它仅仅是一个查询的逻辑表示,物理上它依赖于基础表中的数据。
2025-05-08 09:31:40
1254
原创 【MySQL】-- 联合查询
在数据库设计时由于范式的要求,数据被拆分到多个表中,那么要查询一个条数据的完整信息,就要从多个表中获取数据,如下图所示:要获取学生的基本信息和班级信息就要从学生表和班级表中获取,这时就需要使用联合查询,这里的联合指的是多个表的组合。参与查询的所有表取笛卡尔积(全排列),结果集存放在临时表中。观察哪些记录是有效数据,根据两个表的关联关系过滤掉无效数据。通过指定列查询,精简查询结果通过给表起别名的方式来精简查询sql语句2. 内连接2.1 语法简写:规范写法:
2025-05-07 17:37:50
1163
原创 【MySQL】-- 数据库设计
数据库的每一列都是不可分割的原子数据项,而不是集合、数组、对象等非原子数据。在关系型数据库的设计中,满足第一范式是对关系模式的基本要求。不满足第一范式的数据库就不能被称为关系型数据库。在满足第一范式的基础上,不存在*非关键字段(可以理解为非主键字段)对任意候选键(可以理解为主键、唯一键用来标识数据行)的部分函数依赖。存在于表中定义了复合主键(主键中包含多个列)*的情况下。在满足第二范式的基础上,不存在非关键字段,对任一候选键的传递依赖。
2025-05-07 08:08:03
851
原创 【MySQL】-- 数据库约束
数据库约束是指对数据库表中的数据所施加的规则或条件,用于确保数据的准确性和可靠性。这些约束可以是基于数据类型、值范围、唯一性、非空等规则,以确保数据的正确性和相容性。数据库约束时关系型数据库的一个重要功能,主要的作用是保证数据的有效性,也可以理解为数据的正确性(数据本身是否正确,关联关系是否正确)。人工检查数据的完整性工作量非常大,在数据库中定义一些约束,那么数据在写入数据库的时候,就会帮我们做一些校验。约束一般是在指定的列上创建的。
2025-05-06 15:29:24
1014
原创 【MySQL】-- 增删改查操作(2)
MySQL服务如果开启了二进制日志,每次的insert、update、delete操作都会记录在二进制日志里,如果需要恢复数据,可以读取日志中的记录,再进行反操作即可。每个字符都会按照ascii码表中对应的值,然后所有字符对应的ascii码值相加得到的就是结果中的值,也并不会考虑溢出的情况。分组后,如果查询列表中包含了没有在group by子句中的列,会提示错误,因为显示分组中的哪一行数据都不合适。表结构相同的表,把去重的记录写入到新表中,以后查询都从新表中查,这样真实的数据不丢失,同时又能保证查询效率。
2025-04-29 18:10:08
939
原创 【MySQL】-- 增删改查操作(1)
CURD是对数据库中的记录进⾏基本的增删改查操作:• Create (创建)• Retrieve (读取)• Update (更新)• Delete (删除)
2025-04-28 11:44:28
887
原创 【JavaEE】-- MyBatis操作数据库(1)
MyBatis是一款优秀的持久层框架,用于简化JDBC的开发。持久层:指的就是持久化操作的层,通常指数据访问层(dao),用来操作数据库的。MyBatis中文网数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。每次执行SQL语句,要先创建一个新的连接对象,然后执行SQL语句,SQL语句执行完,再关闭连接对象释放资源,,这种重复的创建连接,销毁连接比较消耗资源。
2025-04-22 16:27:27
1212
原创 【SpringBoot】-- 日志
通过打印日志来发现和定位问题,或者根据日志日志来分析程序的运行过程。随着项目的复杂度提升,我们对日志的打印也有了更高的需求,不仅仅是定位排查问题。随着项目的复杂度提升,我们对日志的打印也有了更高的需求,而不仅仅是定位排查问题,比如需要记录一些用户的操作记录(一些审计公司会要求),也可能需要使用日志来记录用户的一些喜好,把日志持久化,后续进行数据分析等.但是System.out.print不能很好的满足我们的需求,我们就需要使用一些专门日志框架(专业的事情交给专业的人去做).
2025-04-16 13:03:45
934
原创 【测试】-- 测试分类
简言之,测试人员需要测试软件在不同语言和地区是否能正常工作。国际化测试需要关注软件的哪些特性:布局、时间、日期、数字、格式、货币、机器型号…
2025-04-13 01:07:58
915
原创 【测试】-- 测试用例
正交试验设计(Orthogonalexperimentaldesign)是研究多因素多水平的一种设计方法,它是根据正交性,由试验因素的全部水平组合中挑选出部分有代表性的点进行试验,通过对这部分试验结果的分析了解全面试验的情况,找出最优的水平组合。依据需求将输⼊(特殊情况下会考虑输出)划分为若⼲个等价类,从等价类中选出⼀个测试⽤例,如果这个测试⽤例测试通过,则认为所代表的等价类测试通过,这样就可以⽤较少的测试⽤例达到尽量多的功能覆盖,解决了不能穷举测试的问题。(是上⼀条原则的必然结果)
2025-04-12 21:09:20
1448
1
原创 【动态规划】-- 解码方法
状态转移方程:dp[i] = dp[i - 1] + dp[i - 2](注意:这里的dp[i - 1] 和dp[i - 2]不一定都存在)。已编码的消息时,你意识到有许多不同的方式来解码,因为有些编码被包含在其它编码当中(dp[ i ] 表示:以 i 位置为结尾时,解码方法的总数。如果没有合法的方式解码整个字符串,返回。注意,可能存在无法解码的字符串。的消息通过以下映射进行了。题目数据保证答案肯定是一个。根据最近的一步来划分问题。以 i 位置为结尾,…返回dp[n - 1]
2025-03-26 13:03:49
468
原创 【动态规划】-- 使用最小花费爬楼梯
状态转移方程:dp[ i ] = min(dp[i - 2] + cost[i - 2],dp[i - 1] + cost[i - 1])状态转移方程:min(dp[ i + 1] + cost[ i ], dp[i + 2] + cost[ i ])用之前或者之后的状态推导出dp[ i ]的值,根据最近的一步,来划分问题。dp[ i ] 表示:从 i 位置出发,到达楼顶,此时的最小花费。dp[ i ]: 表示到达 i 位置的最小花费。返回min(dp[0],dp[1])经验:以 i 位置为起点,…
2025-03-25 23:11:45
1044
原创 【动态规划】-- 三步问题(easy)
有个小孩正在上楼梯,楼梯有 n 阶台阶,小孩一次可以上 1 阶、2 阶或 3 阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模 1000000007。dp[ i ] 表示:到达 i 级台阶有dp[ i ] 种方法。以 i 位置的状态,最近的一步来划分问题。经验 + 题目要求:以i位置为结尾,…
2025-03-25 22:28:36
379
原创 【动态规划】-- 第N个泰波拉契数
根据上面我的根据题意得出的状态转移方程,在填0位置的dp表时,会出现dp[ - 1 ]、dp[ - 2 ]、dp[ - 3 ],此时就会越界, 同理,在填1位置和2位置时也会出现越界的问题。本题的状态转移方程:dp[ i ] = dp[ i - 1 ] + dp[ i - 2 ] + dp[ i - 3 ]【分析】:在求n位置的状态时,只需要该位置前三个的状态表示,那么其余的前面的状态表示都是多余的。在填写dp表时,仅需要所求状态的前面的部分状态表示,这样的都可以使用滚动数组来进行空间优化。
2025-03-25 21:39:02
651
原创 【前缀和】-- 除自身以外数组的乘积
想求 i 位置的最终结果的时候,需要求[0,i-1] 和 [i + 1, n - 1]的乘积。g[i] :表示 [i + 1, n - 1]区间内所有元素的积。f[i] : 表示[0,i-1]区间内所有元素的积。边枚举位置,边从头开始遍历数组然后求乘积。时间复杂度0(N ^ 2).f : 表示前缀积。g : 表示后缀积。
2025-03-18 13:44:26
328
原创 【JavaEE】-- SpringBoot快速上手
Maven是一个项目管理工具。基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。大白话:Maven是一个项目管理工具,通过pom.xml文件的配置获取jar包,而不用手动去添加jar包,maven就跟预制菜是一个道理。通过pom.xml文件的描述来管理一个项目的构建。spring就是一个框架,是一个半成品,把一些项目公共的部分抽取出来。观察pom文件<build><plugins>
2025-03-18 12:01:41
1020
原创 【JavaEE进阶】-- HTML
HTML(HyperTextMarkupLanguage),超文本标记语言。**超文本:**比文本要强大.通过链接和交互式方式来组织和呈现信息的文本形式.不仅仅有文本,还可能包含图片,音频,或者自已经审阅过它的学者所加的评注、补充或脚注等等。**标记语言:**由标签构成的语言。HTML的标签都是提前定义好的,使用不同的标签,表示不同的内容,类似word文档:如果选中文本,点击标题1,就会使用标题1的样式来显示文本,上述标题1就是一个"标签”。
2025-03-16 19:48:39
1005
3
原创 【二分算法】-- 寻找峰值(medium)
给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。解释:3 是峰值元素,你的函数应该返回其索引 2。输入:nums = [1,2,1,3,5,6,4]解释:你的函数可以返回索引 1,其峰值元素为 2;从第一个位置开始,一直向后走,分情况讨论即可。峰值元素是指其值严格大于左右相邻值的元素。输入:nums = [1,2,3,1]或者返回索引 5, 其峰值元素为 6。你必须实现时间复杂度为。的算法来解决此问题。时间复杂度:0(N)
2025-03-15 23:47:21
335
原创 【模拟】-- 替换所有的问号
【思路】:从前往后遍历该数组,如果遇见问号就将该问号替换成不等于该元素两边的元素即可。【细节】:当在字符串的头或者尾是问号时,我们无需判断前一个或者后一个字符是否有重复。特点:思路简单,考察的是代码能力。模拟算法–> 比葫芦画瓢。
2025-03-14 08:30:00
275
原创 【前缀和】-- 二维前缀和
根据给出的q次查询的坐标,直接进行遍历然后求和。遍历q次,时间复杂度为0(n * m * q)dp[i][j] 表示:从[1, 1] 位置到[i, j]位置,这段区间里面所有元素的和。假设[x1, y1] ~ [x2, y2]
2025-03-13 10:15:00
1081
原创 【前缀和算法】-- ⼀维前缀和(easy)
答:如果从0开始计数的话,在使用dp[right] - dp[left - 1]这个公式求解时,就会出现数组越界的情况。根据输入的q行,根据输入的每一行的区间,从前往后遍历求和,就这样求解q次,时间复杂度是0(q*n)。我们可以得出快速求dp[i]的递推公式:dp[i] = dp[i-1] + arr[i]创建一个数组dp,dp[i] 表示:表示[1, i]区间内所有元素的和。,时间复杂度是0(1),在这道题中可以直接将时间复杂度降为0(q)。问:为什么下标要从1开始呢?前缀和这个算法就是用来。
2025-03-13 09:00:00
399
原创 【二分算法】-- 搜索插⼊位置(easy)
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。我们可以将数组元素分为两部分,左边一部分是<targe的部分,右边一部分是>=target的部分,这就是这道题中存在的。输入: nums = [1,3,5,6], target = 5。输入: nums = [1,3,5,6], target = 2。输入: nums = [1,3,5,6], target = 7。请必须使用时间复杂度为 O(log n) 的算法。
2025-03-12 12:00:00
758
空空如也
在VS上运行代码时,出现这个,是什么意思,应该怎么解决?
2023-12-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人