- 博客(103)
- 收藏
- 关注
原创 spring 依赖注入的好处
spring框架通过依赖注入,对象之间的依赖关系由 Spring 容器来管理,而不是在代码中硬编码。这意味着一个类不再需要自己创建和管理其依赖的对象,而是由 Spring 容器将依赖的对象注入到类中。
2025-04-09 14:45:23
282
原创 武林苍穹,巅峰鏖战
其一者,身着墨色劲装,衣袂飘飞若暗夜之幽灵,眼神犀利如鹰隼之锐眸,仿佛可穿透乾坤万象,直抵灵魂深处。长剑与折扇交击之声,清脆嘹亮,仿若龙吟虎啸,震颤着整个山谷,余音袅袅,久久不绝。四周之树叶被劲气所激,纷纷扬扬飘落,恰似漫天飞舞之雪花,凄美而壮丽,为这场巅峰对决增添了一抹空灵的诗意。每一个招式皆经过殚精竭虑之算计,每一次反击皆恰到好处,妙至毫巅,仿佛是一场精心编排的神圣舞蹈,令人叹为观止,心醉神迷。白衣高手则以柔克刚,折扇舞动之间,如行云流水,巧妙化解着对方之攻击,似一位优雅的舞者,在死亡的边缘轻盈跳跃。
2024-11-05 16:03:04
115
原创 JDK JRE JVM 三者的关系
中 的 javac 编译器将 .java 文件编译为 .javac 字节码文件 (编译)运行程序,确保程序能够在不同平台上正确执行(实现跨平台)执行 .class 文件 (运行)
2024-05-30 14:44:14
401
1
原创 nodejs 中间件
以上列举了一些常见的 Node.js 中间件类型及其对应的库。实际应用中,根据项目需求可能会选用更多特定功能的中间件,如速率限制、API 版本控制、请求验证(如校验 JSON Schema)、数据库连接管理、模板引擎支持等。Node.js 中间件通常是指用于 Web 应用开发框架(如 Express、Koa、Hapi、Fastify 等)中,对 HTTP 请求生命周期进行拦截、处理和传递的一系列可复用函数。
2024-04-23 17:51:15
1542
1
原创 微服务-6 Gateway网关
此时浏览器访问 localhost:10010/user/list 后正常返回数据,说明网关已生效,其原理流程图如下:
2024-04-10 17:15:15
502
原创 uniapp 微信小程序 前端登录流程
3. 用 session_key 对 步骤1中获取到的encryptedData、iv 进行解密,本案例中解密后可从后端获取用户手机号phoneNum。2. 调用 uni.login() 获取 wx code,然后用wx code 获取session_key,unionid 等信息。1. 从uniapp button 中通过 getphonenumber 获取 encryptedData、iv。4. 获取到手机号后,用 union_id和 phoneNum 进行登录。
2024-03-29 11:24:10
1423
1
原创 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
951
原创 三次握手四次挥手
第二次握手:服务器接收到客户端的请求后,确认连接请求,并发送一个同样带有特殊标志(SYN)和确认序列号(Ack)的数据包作为回应,同时也设置自己的初始序列号。第三次握手:客户端接收到服务器的回应后,再次确认连接请求,并发送一个带有确认序列号的数据包给服务器。第四次挥手:客户端接收到服务器的关闭请求后,发送一个确认数据包(ACK)作为回应,告诉服务器已收到关闭请求。此时,连接关闭完成。第二次挥手:服务器接收到客户端的关闭请求后,发送一个确认数据包(ACK)作为回应,告诉客户端已收到关闭请求。
2024-01-09 15:27:50
439
原创 浏览器缓存
浏览器缓存是指浏览器在访问网页时将一些资源(如 HTML、CSS、JavaScript、图像等)保存在本地存储器中,以便在后续的请求中直接使用这些资源,而无需再次从服务器下载。头字段,将上次缓存的资源的最后修改时间或 ETag 值发送给服务器。在后续的请求中,如果浏览器发现已经有缓存的资源,并且缓存仍然有效(根据缓存相关的字段判断),浏览器会直接从缓存中加载资源,而不必再次向服务器发送请求。当浏览器首次请求一个网页时,服务器会返回该网页的资源,并在响应头中设置一些缓存相关的字段,如。
2024-01-09 15:21:01
426
原创 mybatisPlus CodeGenerator 代码生成
在 test 目录下新建 CodeGenerator 类,用于 mybatis-plus 自动生成 java 代码。
2024-01-07 12:03:01
532
原创 three.js 运行环境
命令,会自动启动一个本地 localhost:8080的服务器。方式二:在全局环境安装 liver-server 本地服务器。方式一:搭建node.js环境 (npm init -y)安装好后,在项目所在的目录运行。
2023-05-08 22:38:45
227
原创 Springboot 项目搭建-详细版
在 test 目录下新建 CodeGenerator 类,用于 mybatis-plus 自动生成 java 代码。注意:Springboot02Application 与 system 模块必须是同级的!
2023-05-05 11:56:30
1706
原创 class类 与 react类组件的bind(this)
在 react 的类组件中,如果我们需要某个点击事件,通常会这样写: onClick={this.changeWeather}但为了能够使 changeWeather 方法中能够正确找到 this, 我们通常需要在constructor构造器中这样写:this.study = this.study.bind(this)为了能够比较好地解释清楚这个原理,我们先来回顾一下 es6 的 class:...............
2022-07-06 15:12:10
759
原创 redux-02 action
异步的 action方法一: 组件内写异步方法二:store中写npm install redux-thunkstore.js:count_action.js:count.jsx: 组件内调用:
2022-02-25 11:29:19
246
原创 Vue.$nextTick
我们都知道大多数情况下 Vue 数据变化后,相应的 html 也随着发生变化。事实上,当数据发生改变后,对应的 html/DOM 并没有立即重新渲染,而是开启一个队列,并将改变的数据缓存在同一事件循环中,当刷新队列时,组件会在事件循环队列清空时的下一个“tick”更新。如果同一个 watcher 被多次触发,或者如果你用一个for循环来动态改变数据100次,那么这些变化只会被推入到队列中一次。这种在缓存时去除重复数据对于避免不必要的计算和 DOM 操作上非常重要,否则将是一个很大的开销。为了
2022-02-22 15:45:16
134
原创 前端 知识点-03(CSS)
rem布局关键点:1. vw 随不同屏幕大小px值变化 2. rem 单位根据页面根元素大小变化iPhone6下屏幕宽度是375px, iPhone7下屏幕宽度是414px:100vw相当于占整个屏幕宽度的100%,所以iPhone6下100vw相当于375px,如果想要根元素font-size是100px, 就要计算出一个对应的根元素的 vw,计算公式:100vw / 375 = a / 100 => a = 26.6667vw所以,当根元素font-siz.
2022-02-22 15:06:46
378
原创 react-router-dom 6版本
index.js:import App from './App'import ReactDOM from 'react-dom'import { BrowserRouter } from 'react-router-dom'ReactDOM.render( <BrowserRouter> <App /> </BrowserRouter>, document.getElementById('root'))App.js:impor
2022-02-16 18:34:05
763
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人