- 博客(116)
- 收藏
- 关注
原创 JWT 与 token 的生成和解析
前面章节我们已经讨论了,其中有一个重要的环节就是后端token的生成。本章节我们将针对token生成的过程和原理逐一讲述。
2025-05-24 17:20:19
825
原创 微信小程序-获取用户手机号
uniapp 提供了ivcodecodecodecodewx.login()codecode下面我们来分别看一下👇调用获取加密手机号数据(encryptedData 和 iv),并将 uni.login 生成的 code 发送给后端,以便后端生成 session_key 用来解密。:使用 session_key、encryptedData 和 iv 解密获取真实手机号。
2025-05-21 17:09:16
179
原创 微信登录流程 前后端逻辑
2. 后端用 code 换取 OpenID、unionid 和 session_key (后端调用微信官方提供的。7. 根据 OpenID 获取用户信息或 session_key。后端返回 用户登录态Token 、OpenID 给前端。前端调用 wx.login() 获取 code。5. 前端在后续请求中携带 Token。6. 后端验证 Token 有效性,并。从 Token 中解析出 OpenID。根据 OpenID 生成 Token。
2025-05-21 13:14:11
325
原创 宝塔面板中,配置 https协议
在前面的章节中,我们的接口 http://www.wenbaby.tech:8888/order/list 已经可以正常访问,但是这里面存在两个安全隐患:1.http协议;2.8888端口号暴露。本章节我们讲述:如何将我们的 http协议配置为https,并且将8888端口号代理到其默认端口443。
2025-05-20 15:44:29
764
原创 Mybatis-plus 条件构造器 Wrapper
Wrapper 是 MyBatis-Plus 提供的 条件构造器工具类,用于构建复杂的数据库查询条件。它的作用是简化 SQL 条件构造,但它不能替代 Mapper 层。最终仍需通过 Mapper 接口的方法(如 selectList、selectOne 等)执行数据库操作。它不涉及 SQL 的执行逻辑(如连接数据库、设置参数、返回结果映射等),这些仍由 Mapper 层负责。
2025-05-16 15:05:22
192
原创 配置域名、SSL证书
上一章我们讲了如何将后端项目部署到阿里云服务器,此时我们前端项目中已经可以通过阿里云的ip地址正常访问后端项目中的接口。但是,由于我们还没有买域名,我们依然不能通过域名来请求,并且我们的前端微信小程序只支持 https 协议的接口请求,而我们同样未支持https。所以我们接下来需要:买域名并绑定SSL证书。(域名注册) ---> 实名认证 ---> 域名解析 ---> 域名备案 --->---> 绑定SSL 证书(创建证书)相关入口备案流程。
2025-05-09 10:59:47
199
原创 宝塔面板部署 springboot + mysql 项目
(初次需先执行 java -version 确认jdk是否安装成功)先进入上一步的jar包目录,然后执行。导入 sql 脚本文件。添加服务器本地数据库。
2025-05-08 16:28:58
244
原创 React.memo 和 useMemo
React 中,通常父组件的某个state发生改变,会引起父组件的重新渲染(和其他state的重新计算),从而会导致子组件的重新渲染(和其他非相关属性的重新计算)问题一:如何避免因为某个state变化,导致父组件的中其他属性(state)的重新计算?useMemo如何避免因为父组件的重新渲染,导致子组件中非相关属性的重新计算?React.memo。
2025-04-25 15:19:37
457
原创 泛型和包装类
这些基本数据类型并非引用类型,所以不能直接用作泛型参数。为了能让基本数据类型用于泛型,Java 提供了对应的包装类就是把基本数据类型的数据包装成对象的类型。
2025-04-14 16:46:28
266
原创 spring 依赖注入的好处
spring框架通过依赖注入,对象之间的依赖关系由 Spring 容器来管理,而不是在代码中硬编码。这意味着一个类不再需要自己创建和管理其依赖的对象,而是由 Spring 容器将依赖的对象注入到类中。
2025-04-09 14:45:23
300
原创 武林苍穹,巅峰鏖战
其一者,身着墨色劲装,衣袂飘飞若暗夜之幽灵,眼神犀利如鹰隼之锐眸,仿佛可穿透乾坤万象,直抵灵魂深处。长剑与折扇交击之声,清脆嘹亮,仿若龙吟虎啸,震颤着整个山谷,余音袅袅,久久不绝。四周之树叶被劲气所激,纷纷扬扬飘落,恰似漫天飞舞之雪花,凄美而壮丽,为这场巅峰对决增添了一抹空灵的诗意。每一个招式皆经过殚精竭虑之算计,每一次反击皆恰到好处,妙至毫巅,仿佛是一场精心编排的神圣舞蹈,令人叹为观止,心醉神迷。白衣高手则以柔克刚,折扇舞动之间,如行云流水,巧妙化解着对方之攻击,似一位优雅的舞者,在死亡的边缘轻盈跳跃。
2024-11-05 16:03:04
131
原创 JDK JRE JVM 三者的关系
中 的 javac 编译器将 .java 文件编译为 .javac 字节码文件 (编译)运行程序,确保程序能够在不同平台上正确执行(实现跨平台)执行 .class 文件 (运行)
2024-05-30 14:44:14
408
1
原创 nodejs 中间件
以上列举了一些常见的 Node.js 中间件类型及其对应的库。实际应用中,根据项目需求可能会选用更多特定功能的中间件,如速率限制、API 版本控制、请求验证(如校验 JSON Schema)、数据库连接管理、模板引擎支持等。Node.js 中间件通常是指用于 Web 应用开发框架(如 Express、Koa、Hapi、Fastify 等)中,对 HTTP 请求生命周期进行拦截、处理和传递的一系列可复用函数。
2024-04-23 17:51:15
1604
1
原创 微服务-6 Gateway网关
此时浏览器访问 localhost:10010/user/list 后正常返回数据,说明网关已生效,其原理流程图如下:
2024-04-10 17:15:15
510
原创 http1 http2 http3的区别
HTTP/3还采用了TLS 1.3作为默认的安全层协议,提供了更强的安全性。HTTP/2:HTTP/2是HTTP/1.1的升级版本,引入了一些新的特性来提高性能。此外,HTTP/2还引入了头部压缩,减少了传输的数据量,提高了效率。此外,HTTP/1.1没有对头部压缩和请求优先级的支持,这导致了较低的性能和效率。总结起来,HTTP/2和HTTP/3相较于HTTP/1.1在性能和效率方面有显著的改进。HTTP/1.1、HTTP/2和HTTP/3是HTTP协议的不同版本,它们在性能、效率和安全性方面有一些区别。
2024-01-09 15:45:50
978
原创 三次握手四次挥手
第二次握手:服务器接收到客户端的请求后,确认连接请求,并发送一个同样带有特殊标志(SYN)和确认序列号(Ack)的数据包作为回应,同时也设置自己的初始序列号。第三次握手:客户端接收到服务器的回应后,再次确认连接请求,并发送一个带有确认序列号的数据包给服务器。第四次挥手:客户端接收到服务器的关闭请求后,发送一个确认数据包(ACK)作为回应,告诉服务器已收到关闭请求。此时,连接关闭完成。第二次挥手:服务器接收到客户端的关闭请求后,发送一个确认数据包(ACK)作为回应,告诉客户端已收到关闭请求。
2024-01-09 15:27:50
442
原创 浏览器缓存
浏览器缓存是指浏览器在访问网页时将一些资源(如 HTML、CSS、JavaScript、图像等)保存在本地存储器中,以便在后续的请求中直接使用这些资源,而无需再次从服务器下载。头字段,将上次缓存的资源的最后修改时间或 ETag 值发送给服务器。在后续的请求中,如果浏览器发现已经有缓存的资源,并且缓存仍然有效(根据缓存相关的字段判断),浏览器会直接从缓存中加载资源,而不必再次向服务器发送请求。当浏览器首次请求一个网页时,服务器会返回该网页的资源,并在响应头中设置一些缓存相关的字段,如。
2024-01-09 15:21:01
432
原创 mybatisPlus CodeGenerator 代码生成
在 test 目录下新建 CodeGenerator 类,用于 mybatis-plus 自动生成 java 代码。
2024-01-07 12:03:01
548
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人