- 博客(32)
- 收藏
- 关注
原创 HJ3 明明的随机数
明明生成了NN个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。数据范围: 1≤n≤1000 ,输入的数字大小满足1≤val≤500。
2023-04-07 23:23:32
113
原创 HJ2 计算某字符出现次数
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)数据范围: 1≤n≤1000。
2023-04-07 21:59:29
150
原创 Spring框架
Spring框架主要解决了创建对象、管理对象的相关问题。所有由Spring框架创建的对象,会被Spring框架保存在ApplicationContext(应用程序上下文)中,后续,当需要这些对象时,Spring会自动从ApplicationContext中取出并使用。由于Spring的ApplicationContext中会保存若干个对象,所以通常也称之为“Spring容器”。Spring框架的核心包括:IoC = Inversion of Controller,即控制反转
2023-03-31 17:12:55
117
原创 关于JWT介绍与使用
当用户通过认证(登录成功)后,服务器端应该生成此用户对应的JWT数据,并响应到客户端当视为通过认证后,不再需要将用户的相关信息存入到中当用户尝试执行需要认证的操作时,用户应该携带JWT数据,服务器端应该解析此JWT数据,从而验证JWT的真伪,并识别用户的身份,将用户的相关信息存入到中。
2023-03-29 14:48:11
165
原创 关于Token
在使用Token机制时,当客户端向服务器端第1次提交请求时,或提交登录请求时,客户端不需要做特殊的处理,而服务器端会在识别此客户端身份后,会。在处理过程中,服务器端只需要具体检查Token、从Token中解析出客户端身份的相关数据即可,并不需要在服务器端保存各Token数据,所以,去,后续,客户端需要携带此Token提交各种请求,服务器端会根据Token中的数据来识别客户端的身份。,因为各服务器只需要具有相同的验证、解析Token的程序即可识别客户端的身份。,不会消耗服务器端存储资源!
2023-03-29 14:42:06
1844
原创 Session
Session的本质是**存储在服务器端的内存中的一个K-V结构的数据**,服务器端会为每一个来访的客户端的首次访问分配一个**Session ID**(是一个UUID值,如果客户端的请求没有携带Session ID,则分配,如果已携带Session ID,则不分配),此Session ID就是客户端访问Session数据时使用的Key,所以,每个客户端在服务器端都有一份对应的Session数据(K-V中的Value)。
2023-03-29 14:32:27
43
原创 Gateway
"网"指网络,"关"指关口或关卡网关:就是指网络中的关口\关卡网关就是当前微服务项目的"统一入口程序中的网关就是当前微服务项目对外界开放的统一入口所有外界的请求都需要先经过网关才能访问到我们的程序提供了统一入口之后,方便对所有请求进行统一的检查和管理网关项目git地址网关的主要功能有将所有请求统一经过网关网关可以对这些请求进行检查网关方便记录所有请求的日志网关可以统一将所有请求路由到正确的模块\服务上路由的近义词就是"分配"
2023-03-28 13:56:55
166
原创 Sentinel
Sentinel英文翻译"哨兵\门卫",是Spring Cloud Alibaba提供的微服务组件,随着微服务的流行,服务和服务之间的稳定性变得越来越重要。 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
2023-03-28 13:28:02
72
原创 Dubbo的负载均衡
Dubbo内置负载均衡策略算法- random loadbalance:随机分配策略(默认)- round Robin Loadbalance:权重平均分配- leastactive Loadbalance:活跃度自动感知分配- consistanthash Loadbalance:一致性hash算法分配
2023-03-28 12:18:46
66
原创 Seata
Seata 是Spring Cloud Alibaba提供的一个微服务组件,是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。能够保证一个业务中所有对数据库的操作要么都成功,要么都失败,来保证数据库的数据完整性,但是在微服务的项目中,业务逻辑层涉及远程调用,当前模块发生异常,无法操作远程服务器回滚,这时要想让远程调用也支持事务功能,就需要使用分布式事务组件Seata。
2023-03-28 12:02:35
846
原创 Dubbo
Dubbo是一套RPC框架。既然是框架,我们可以在框架结构基础上,定义Dubbo中使用的通信协议,使用的序列化框架技术,而数据格式由Dubbo定义,我们负责配置之后直接通过客户端调用服务端代码。可以说Dubbo就是RPC概念的实现,Dubbo是提供的框架,能够实现微服务相互调用的功能!
2023-03-28 10:56:15
49
原创 Nacos
Nacos是Alibaba推出的一款开源的微服务组件,主要具有和两大功能,微服务中所有项目都必须注册到注册中心才能成为微服务的一部分。(注册中心和企业中的人力资源管理部门有些相似)
2023-03-27 23:56:41
94
原创 Mybatis的缓存机制
Mybatis内置一级缓存与二级缓存,优先查询二级缓存,未命中时查询一级缓存,仍未命中将从数据库中查询 不推荐使用Mybatis的缓存机制,无论是一级缓存还是二级缓存,均会因为执行了增删改后自动清除缓存数据,虽然缓存数据可能与数据库中的数据不一致,但并不是所有数据都需要时刻保证一致性。
2023-03-27 15:42:40
61
原创 Redis集群(主从复制、读写分离、哨兵模式、哨兵集群、分片集群)
Redis最小状态是一台服务器这个服务器的运行状态,直接决定Redis是否可用如果它离线了,整个项目就会无Redis可用系统会面临崩溃为了防止这种情况的发生,我们可以准备一台备用机。
2023-03-27 14:18:23
105
原创 Redis存储原理
我们在编写java代码业务时,如果需要从多个元素的集合中寻找某个元素取出,或检查某个Key在不在的时候,推荐我们使用HashMap或HashSet,因为这种数据结构的查询效率最高,因为它内部使用了。槽位越多代表元素多的时候,查询性能越高,HashMap默认16个槽。将数据的key使用CRC16算法计算出一个值,取余16384。Redis将内存划分为16384个区域(类似hash槽)Redis底层保存数据用的也是这样的散列表的结构。这样Redis就能非常高效的查找元素了。下图就是散列表的存储原理。
2023-03-27 13:50:41
45
原创 Redis的缓存穿透、缓存击穿和缓存雪崩
## 总结:缓存穿透:Redis和数据库中都不存在。(用布隆过滤器解决)缓存击穿:Redis中没有,去数据库中查询。(少量击穿属于正常现象)缓存雪崩:同一时间大量击穿现象。(设置不同的有效期解决)
2023-03-27 12:16:25
63
原创 Redis的缓存淘汰机制
noeviction:返回错误**(默认)** allkeys-random:所有数据中随机删除数据 volatile-random:有过期时间的数据库中随机删除数据 volatile-ttl:删除剩余有效时间最少的数据 allkeys-lru:所有数据中删除上次使用时间最久的数据 volatile-lru:有过期时间的数据中删除上次使用时间最久的数据 allkeys-lfu:所有数据中删除使用频率最少的 volatile-lfu:有过期时间的数据中删除使用频率最少的
2023-03-27 09:41:46
33
原创 mysql 中 varchar 与 char 的区别以及 varchar(50)中的 50 代表的涵 义?
1. varchar 与 char 的区别: char 是一种固定长度的类型,varchar 则是一种可变长度的类型.2. varchar(50)中 50 的涵义 : 最多存放 50 个字节3. int(20)中 20 的涵义: int(M)中的 M indicates the maximum display width (最大显示宽度)for integer types. The maximum legal display width is 255.
2023-03-21 14:57:06
328
原创 mysql 的复制原理以及流程
mysql复制的三个线程:主库线程,从库I/O线程,从库SQL线程;****复制流程:**(1)I/O 线程向主库发出请求(2)主库线程响应请求,并推BINLOG 日志到从库(3)I/O 线程收到线程并记入中继日志(4)SQL 线程从中继日志读取SQL,并记入从库binlog 日志,FLUSH进硬盘
2023-03-21 14:48:07
117
原创 mysql 数据库中索引的工作机制是什么?
数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用 B 树及其变种 B+树
2023-03-20 16:37:11
93
原创 请简述常用的索引有哪些种类?
请简述常用的索引有哪些种类?1.普通索引: 即针对数据库表创建索引;2.唯一索引: 与普通索引类似,不同的就是:MySQL 数据库索引列的值必须唯一,但允许有空值;3.主键索引: 它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引;4.组合索引: 为了进一步榨取 MySQL 的效率,就要考虑建立组合索引。即将数据库表中的多个字段联合起来作为一个组合索引。
2023-03-20 16:31:45
120
原创 有哪些数据库优化方面的经验?
# 有哪些数据库优化方面的经验?1. 用 **PreparedStatement**, 一般来说比 Statement 性能高:一条sql语句发给服务器去执行,涉及步骤:语法检查、语义分析、 编译、缓存。2. 有**外键约束**会影响插入和删除性能,如果程序能够保证数据的完整性,那在设计数据库时就可以去掉外键。3. 表中**允许适当冗余**,譬如,主题帖的回复数量和最后回复时间等。4. **UNION ALL** 要比 UNION 快很多,所以,如果可以确认合并的两个结果集中不包含重复数据且不需要排
2023-03-20 16:26:53
45
原创 数据库三大范式是什么?
数据库三大范式是什么?1. 1NF:保证字段的**原子性**,每一个字段不可再分。2. 2NF:保证记录的**唯一性**,在满足**1NF**的基础上,一张表中不能出现两条完全重复的记录。**(建立主键)**3. 3NF:减少字段的**冗余性**,在满足**2NF**的基础上,一张表中不能出现其他数据库表中已包含的非主关键字信息。**(建立外键)**
2023-03-20 16:07:49
40
原创 Java中String, StringBuffer StringBuilder 的区别
StringBuilder是线程不安全的,而StringBuffer是线程安全的** 如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法可以带有**synchronized关键字**,所以可以保证线程是安全的,但StringBuilder的方法则没有该关键字,所以不能保证线程安全,有可能会出现一些错误的操作。
2023-03-09 14:09:49
57
原创 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。Java 编程语言只有值传递参数。
2023-03-09 13:47:27
55
原创 switch 是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(express)中,express 是一个整数表达式,支持的参数参数有:byte、int、short、char、String(Jdk1.7之后支持)与enum(枚举值,jdk1.5之后支持);
2023-03-08 22:15:05
196
原创 Java中private,protected,public的作用域以及不写时的区别
Java中private,protected,public的作用域以及不写时的区别
2023-03-08 11:17:39
110
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人