- 博客(195)
- 问答 (1)
- 收藏
- 关注
原创 HTTP之响应消息Response
HTTP之响应消息Response**响应行(Response Line)**、**响应头(Response Headers)**、**响应体(Response Body)**- **响应行(Response Line)**是HTTP响应消息的第一行,包含三个主要部分:- - **HTTP版本(HTTP Version)**:指明所使用的HTTP协议版本,如 `HTTP/1.1` 或 `HTTP/2`。 - **状态码(Status Code)**:指示请求的处理结果,状态码是一个三位数字,分为
2024-10-24 15:42:06 1679 2
原创 HTTP协议的作用以及组成(请求行,请求头,请求体)
HTTP(Hypertext Transfer Protocol,超文本传输协议)是互联网应用层的主要协议,广泛用于在客户端和服务器之间传输数据。它是Web的基础,使得不同类型的资源(如文本、图像、视频等)可以在客户端(通常是浏览器)和服务器之间进行交换。
2024-10-24 15:02:16 1151
原创 【CURL命令】命令行或脚本进行API测试
curl是一个用于从命令行或脚本中进行数据传输的工具,支持多种协议,包括 HTTP、HTTPS、FTP、SFTP 等。它非常强大且灵活,广泛应用于网页开发、API 测试、数据下载等场景。
2024-10-11 15:37:36 407
原创 SpringBoot整合Swagger,让开发更遍历
**Swagger** 是一种流行的开源工具集,用于设计、构建、记录和使用 RESTful Web 服务的 API( https://swagger.io/ )。它包含了一系列工具,可以帮助开发人员在开发 API 时更加高效地进行设计、测试和文档编写。
2024-05-13 11:44:04 1369 7
原创 SpringBoot 缓存
`缓存`- 缓存时一种介于数据永久存储介质与数据应用之间的数据临时存储介质- 使用缓存可以有效的减少低速数据读取过程的次数(例如磁盘IO),提高系统性能- 缓存不仅可以用于提高永久性存储介质的数据读取效率,还可以提供临时的数据存储空间
2024-04-24 15:29:05 2064
原创 微服务:Nacos注册中心
### 流程原理分析- 服务提供者启动时注册信息。- 服务提供者为临时实例:采用心跳监控,向每30秒发送心跳请求向nacos汇报状态。- 服务提供者非临时实例:nacos会主动询问其状态。- 服务消费者远程调用服务提供者时,会定时从nacos拉取服务列表,更新服务列表缓存。- 当nacos注册中心的服务列表更新时,nacos还会主动推送消息给服务消费者,以更新服务列表缓存。
2024-04-23 00:00:00 1420
原创 Cloud微服务:Ribbon负载均衡
- 服务消费者(order-service)根据服务名称发起请求,请求地址(url):http://userservice/user/1。- 请求被**负载均衡拦截器:LoadBalancerInterceptor**拦截,给到了**负载均衡客户端:RibbonLoadBalancerClient**。- **负载均衡客户端:RibbonLoadBalancerClient**获取url中的**服务名称:userservice**并给到**动态服务列表负载均衡器:DynamicServiceListLo
2024-04-22 16:39:25 1285
原创 微服务:Eureka原理实践:@EnableEurekaServer、@LoadBalanced
- 服务提供者会在启动时向Erueka注册自己的信息。- Erueka保存这些注册的信息。- 服务消费者根据服务名称,向Erueka拉取服务提供者的信息。
2024-04-22 16:21:29 1296
原创 ⑥【Shiro】使多个自定义Realm规则生效。
多个Realm实现原理:- 当应用程序配置多个 Realm 时,例如:用户名密码校验、手机号验证码校验等等。Shiro 的 **ModularRealmAuthenticator** 会使用内部的 **AuthenticationStrategy** 组件判断认证是成功还是失败。
2024-04-19 06:00:00 689
原创 ④【Shiro】Shiro框架进行敏感信息加密
实际系统开发中,一些敏感信息需要进行加密,比如说用户的密码。Shiro 内嵌很多常用的加密算法,比如 MD5 加密。Shiro 可以很简单的使用信息加密
2024-04-18 14:32:35 462
原创 【Git】 - 版本控制
1. 保存、管理文件;2. 提供客户端工具进行访问;3. 提供不同版本文件的比对功能;4. 多人协作开发5. 集中式版本控制6. 分布式版本控制
2024-03-22 16:12:40 1219 1
原创 ②【Shiro】Shiro登录认证、自定义Realm
- **在Shiro框架中,用户需要提供`principals(身份)`和`credentials(证明)`给shiro,从而shiro对用户进行身份验证。**- **`principals(身份)`:是主体的标识属性,可以是任何属性,如:用户名、email等,保证唯一即可。一份主体可以有多个`principals(身份)`,但是只有一个`Primary principals`,一般是用户名/邮箱/手机号。**- **`credentials(证明)`:证明/凭证,是只有主体知道的安全值,如:密码、数字
2024-03-17 09:56:28 1366 24
原创 ①【Shiro】什么是Shiro安全框架?
Apache Shiro 是一个功能强大且灵活的开源安全框架,可以干净地处理身份验证,授权,企业会话 Management 和加密。
2024-03-16 16:35:19 737
原创 【JWT】入门 *JWT*,并封装一个实用的 *JWT* 工具类
JSON Web 令牌 (JWT) 是一种开放标准 (RFC 7519),它定义了一种紧凑且独立的方式,**用于将信息作为 JSON 对象在各方之间安全地传输** 。此信息可以被验证和信任,因为它是经过数字签名的。JWT 可以使用密钥(使用 **HMAC** 算法)或使用 **RSA** 或 **ECDSA** 的公钥/私钥对进行签名。
2024-03-16 01:44:55 1798
原创 ②【MyBatis】 Mapper代理方式开发( 常用 )
`步骤`:1. 定义Mapper接口(与SQL映射文件同名),并将Mapper接口与SQL映射文件放置在同一目录下;2. 将SQL映射文件的`namespace`属性设置为Mapper接口全限定名(如"com.java.mapper.UserMapper");3. 在Mapper接口中定义方法,**方法名**就是SQL映射文件中sql语句的`id`,并保持方法返回值类型与SQL映射文件一致;4. 编码(Coding):使用`SqlSession对象`的`getMapper方法`获取Mapper接口
2024-03-13 15:11:42 1269
原创 ④数据查询时,解决Redis缓存穿透的问题...
**缓存命中和穿透:** 正常情况下,当一个请求到达时,系统首先检查缓存中是否存在相应的数据。如果缓存中有数据(缓存命中),系统会直接返回该数据,避免了对数据库的访问,提高了响应速度。然而,如果缓存中不存在需要的数据,而且请求频繁,就可能导致缓存穿透问题。
2024-02-04 16:07:58 686 1
原创 ③使用Redis缓存,并增强数据一致性。
缓存数据存储于代码中,而代码运行在内存中,内存的读写性能远高于磁盘,缓存可以大大降低用户访问并发量带来的服务器读写压力。
2024-01-08 10:39:37 1677 16
原创 ⑩①【缓存】Redis持久化 RDB + AOF
RDB全称 Redis Database Backup file,即Redis数据备份文件,也被叫做**Redis数据快照。** AOF全称 Append Only File,即**追加文件。** Redis处理的**每一个写命令都会记录在AOF文件中** ,也可以将其看作日志文件。
2023-12-31 17:35:18 2190 63
原创 ②手机验证码登录功能:Redis实现session共享
- 当注册完成后,用户输入手机号与验证码点击登录,后端会校验用户提交的手机号和验证码,是否一致;- 如果一致,则根据手机号查询用户信息,不存在则新建,最后将用户数据保存到redis,并且生成token作为redis的key;- 当我们校验用户是否登录时,会去携带着token进行访问,从redis中取出token对应的value,判断是否存在这个数据,如果没有则拦截,如果存在则将其保存到threadLocal中,并且放行。
2023-12-28 12:35:02 1162 60
原创 ①归并排序、快速排序 、堆排序、计数排序[算法、代码模板、面试题]
归并排序是一种分治法(Divide and Conquer)的经典排序算法,它的基本思想是将原始数组划分成较小的数组,然后递归地对这些小数组进行排序,最后再将排好序的小数组合并成一个整体有序的数组。下面是**归并排序的详细过程: ...
2023-12-05 16:04:43 1096 22
原创 ①实现基于session的登录流程:发送验证码、登录注册、校验登陆状态
- `发送验证码`:- - 用户输入手机号,点击发送按钮进行手机号提交,程序会校验手机号是否合法,不合法时要求用户重新输入手机号,合法则在后台生成对应的验证码并保存至`session`,之后通过短信方式将验证码发送给用户。- `注册、登录`:- - 用户将手机号、验证码输入,后台从session中获取验证码与用户输入的验证码进行比对校验,如果不一致则无法通过校验,提示用户验证码错误,验证码一直则后台根据手机号查询用户,若用户不存在,则为用户创建账号信息并保存至数据库中,最后无论用户是否存在,都将用户的
2023-11-28 14:17:05 2320 34
原创 Spring Cache框架,实现了基于注解的缓存功能。
Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。Spring Cache提供了一层抽象,底层可以切换不同的cache实现。具体就是通过`CacheManager`接口来统一不同的缓存技术。CacheManager是Spring提供的各种缓存技术抽象接口。
2023-11-25 23:55:47 690 3
原创 ②⑩② 【读写分离】Sharding - JDBC 实现 MySQL读写分离[SpringBoot框架]
Sharding-JDBC是一个开源的Java中间件,它为关系型数据库提供了分片(sharding)功能。分片是一种数据库架构模式,通过将数据分散存储在多个数据库中,提高了系统的扩展性和性能。Sharding-JDBC致力于简化分片数据库的使用和管理,它提供了一种透明的方式让应用程序能够无感知地使用分片数据库。`适用性`:- 适用于任何基于JDBC的ORM框架,如: JPA,Hibernate, Mybatis,SpringJDBC,Template或直接使用JDBC。- 支持任何第三方的数
2023-11-25 23:48:44 278
原创 ②⑩① 【MySQL】什么是分库分表?拆分策略有什么?什么是MyCat?
- 🚀垂直拆分- - 垂直分库 - 垂直分表- 🚀水平拆分- - 水平分库 - 水平分表
2023-11-25 23:42:24 585
原创 ⑩【Redis Java客户端】:Jedis、SpringDataRedis、StringRedisTemplate
Redis的Java客户端使用:Jedis、SpringDataRedis、
2023-11-25 23:27:44 1539 43
原创 ⑨【Stream】Redis流是什么?怎么用?: Stream [使用手册]
- Redis Steam 是redis 5.0 新增的一种数据结构- Redis Stram**可以用来实现消息队列**,它支持消息的持久化、支持自动生成全局唯一ID、支持ack确认消息的模式、支持消费组模式等,让消息队列更加稳定和可靠
2023-11-25 23:15:04 878
原创 ⑧【HyperLoglog】Redis数据类型:HyperLoglog [使用手册]
- HyperLoglog 是用来做**基数统计**的算法,优点在于当输入元素的数量或者体积非常大时,计算基数所需的空间总是固定且很小的。- 基数统计:用于统计一个集合中不重复的元素个数,就是对集合**去重复**后剩余元素的计算- Redis中每个HyperLoglog键只需要花费12KB内存,就可以计算接近2^64个不同元素的基数。- 但,HyperLoglog只会根据输入的元素来计算基数,**无法存储输入元素本身**,所以无法像集合那样返回输入的各个元素。
2023-11-25 23:04:51 432
springboot框架整合SSM案例-图书管理系统 源码分享
2023-03-29
ViewBaseServlet代码模板,使用了thymeleaf视图模板技术,是处理视图模板文件的Servlet基类
2022-12-29
来分享一下你的学习历程?
2022-11-22
C语言使用scanf输入数据后,显示访问冲突怎么解决?
2022-01-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人