- 博客(46)
- 收藏
- 关注
原创 【k8s】阿里云ACK服务中GPU实例部署问题
摘要 在阿里云ACK中部署GPU实例时,发现kube-eventer-init容器因网络连通性问题报错,无法连接SLS内网域名。原因是节点安全组规则未放行TCP 80/443端口。解决方法为:1) 在ECS服务中修改安全组规则,添加入方向80/443端口放行;2) 移除原节点并重新创建;3) 清理旧实例避免重复计费。需注意扩缩容操作可能需多次尝试,完成安全组配置后容器报错问题将解决。操作过程中务必关闭实例释放保护功能。
2025-06-13 14:55:58
115
原创 【学习笔记】HTTP
HTTP协议发展历程与核心技术解析:从1991年HTTP/0.9仅支持GET请求,到1996年HTTP/1.0引入报文格式和多种方法,再到1999年HTTP/1.1实现持久连接和缓存优化。2015年HTTP/2采用二进制分帧和多路复用提升性能,而HTTP/3则基于QUIC协议实现0-RTT握手和连接迁移。HTTP采用无状态请求-响应模型,通过TLS加密、多路复用等技术实现高效安全传输。作为应用层协议,HTTP底层依赖TCP(HTTP/1.x)或UDP(HTTP/3),现已成为互联网基础通信标准。
2025-06-11 22:10:45
840
原创 【学习笔记】QUIC
传统的互联网多采用TCP +TLS组合来实现可靠传输与加密保护。然而,这种“分层”处理方式在连接建立时需要多次往返(TCP 三次握手 + TLS 一到两次握手),并且在 HTTP/2 多路复用场景下仍会遭遇 TCP 层的队头阻塞(Head-of-Line Blocking)。
2025-06-11 18:39:45
844
原创 【学习笔记】0-RTT
当客户端再次与同一服务器建立连接时,可利用保存的密钥和参数,跳过大部分握手步骤, 在发送首个加密数据包的同时完成握手。传统的加密握手,需要一次或两次往返(RTT)才能完成密钥协商,而 0-RTT 则允许客户端在第 0 次往返就发送。客户端在第一个包里就把应用数据(如 HTTP 请求)直接发送给服务器;服务器一旦验证密钥成功,就可立即解密并处理。在首次完整握手成功后,客户端会保存与服务器协商出的。,大幅缩短首次请求的启动时间。
2025-06-08 17:38:07
251
原创 【学习笔记】TLS
TLS的前身是 Netscape 在 1994 年推出的SSL(Secure Sockets Layer),最初版本为 SSL 2.0,随后改进为 SSL 3.0。但是 SSL 2.0/3.0 都存在设计漏洞和安全缺陷。为此,IETF 于 1999 年发布了 TLS 1.0(RFC 2246),做了若干改进,一步脱离了 SSL 的命运。此后,TLS 继续演进,先后发布了 TLS 1.1、TLS 1.2,直至 2018 年确定的TLS 1.3(RFC 8446),成为当前最广泛支持的版本。
2025-06-08 16:29:25
677
原创 【学习笔记】MIME
MIME(多用途Internet邮件扩展)由IETF于1992年提出,解决了电子邮件无法传输二进制文件的问题。它包含三部分:Content-Type(主类型/子类型)标识媒体类型,如text/plain、image/jpeg;Content-Transfer-Encoding定义传输编码方式,包括base64和quoted-printable;Multipart允许邮件/HTTP请求携带多段内容(如文本+附件),每部分用boundary分隔。MIME后来被广泛应用于HTTP等Internet协议,支持多种文
2025-06-05 23:30:44
529
原创 【学习笔记】TCP 与 UDP
TCP与UDP是传输层两大核心协议。TCP提供可靠连接,通过三次握手、流量控制和拥塞机制保证数据完整,适用于Web、邮件等场景;UDP无连接且轻量,适合实时音视频、DNS查询等对延迟敏感的应用。两者在协议头设计、传输机制和适用场景上存在显著差异。编程示例展示了C/Go/Python的Socket实现,同时给出了TIME_WAIT优化、MTU分片等调优建议。随着网络发展,TCP持续优化拥塞算法,而UDP在实时通信领域保持不可替代性。
2025-06-05 00:00:16
1319
原创 【AI图像生成网站&Golang】项目测试与优化
在后文中,我们会使用k6运行测试文件,并根据k6 cloud上通过的请求数和RPS(Requests Per Second,每秒请求数)来简单评估性能,之后会使用pprof和trace工具查找性能瓶颈和突破口。接下来,我开始使用并发用户场景进行测试,模拟“高负载”下的表现(展示实验用的电脑配置低,不能模拟真正的高并发,在此仅做示例。这说明系统能够快速响应并处理高并发请求。进入可视化界面可以看到,单例用户的总请求为7个,平均响应时间为 4372 ms,失败率为 0% ,每秒请求数(RPS)在 1~2 之间。
2024-12-19 23:01:14
1193
4
原创 【工具】使用阿里云OSS搭建图床API
在之前做的一个中,需要用到图床来暂存一些图像。原本我使用的是,但是它每分钟只能上传 20 张图片,不能适用于并发场景,而其他的一些图床都会有上传限制,所以我决定使用阿里云 OSS 来搭建一个可供并发场景使用的图床。
2024-12-19 12:47:31
1119
原创 解决并发情况下调用 Instruct-pix2pix 模型推理错误:index out of bounds 问题
在对 golang 开发的图像生成网站进行并发测试时,调用基于模型和FastAPI该错误表明,模型推理过程中发生了数组越界问题。
2024-12-17 22:42:14
530
原创 【工具】使用 trace 进行性能调优
相较于pprof专注于特定性能数据(如CPU或内存),trace提供了更加全面的运行时视图,适合分析跨线程或跨模块的复杂性能问题。使用 Go 中自带的。
2024-12-16 18:16:26
769
原创 【工具】使用 Gin 集成 pprof 进行性能调优
pprof表示性能分析器(Performance Profiler),其概念和初始实现来源于Google内部的性能分析需求。pprof 在程序运行期间,定期对应用的状态数据进行采样,每次采样都会记录当前的Goroutine和函数调用栈。Go 标准库自带了pprof包,集成在中,只需几行代码即可启用。启动程序后,访问。
2024-12-16 13:50:10
1393
原创 【工具】Windows系统中使用k6分析项目性能
k6 是一个开源的负载测试工具,专为开发人员和测试人员设计,支持 HTTP/HTTPS 协议,可模拟复杂的用户场景和负载。它提供简单的 JavaScript API,适合编写自定义测试脚本。
2024-12-15 19:01:27
452
原创 【备忘录】Gin框架
Gin是一个轻量级、高性能的Go语言Web框架,其设计灵感来源于Martini,但相较于Martini,其性能提升了约40倍。Gin基于HTTP路由构建,并提供了丰富的中间件支持,非常适合用于构建高并发、低延迟的Web应用程序。
2024-11-17 20:59:17
559
原创 【AI图像生成网站&Golang】图床上传与图像生成API搭建
该模型的工作原理是将用户提供的一张初始图像和文本描述作为输入,通过多个扩散步骤,将噪声逐渐转化为符合指令的图像,最终输出经过编辑后的高质量图像。是一种基于 Stable Diffusion 的模型,该模型依赖强大的 Transformer 和扩散模型架构,可以确保生成图像的质量和多样性。实现搭建了一个图像生成API,这种方式较调用在线的图像生成API来说步骤简单,方便调试。提供的API,通过将本地 Base64 编码的图片文件上传到图床,来获取图像的永久链接。
2024-11-17 17:29:58
1697
原创 【AI图像生成网站&Golang】项目架构
本项目的后端基于Golang和Gin框架开发,主要包括的模块有:controller: 负责处理 HTTP 请求并将请求数据传递给逻辑层,控制器层作为入口,将不同的请求指向相应的业务逻辑。dao/mysql: 负责数据库操作,封装了数据查询和持久化逻辑,便于管理数据库交互。logic: 业务逻辑层,实现具体的业务功能,比如用户的登录注册和相关的账号管理。model: 用于定义数据模型与表结构,是项目中数据对象的核心描述。以用户登录功能为例,从前端请求到后端处理的完整调用流程如下:Vue.js
2024-11-17 15:36:53
3505
原创 【AI图像生成网站&Golang】JWT认证与令牌桶算法
在 JWT 中,Payload 就是 Token 的核心数据部分,用来存储那些需要在两方之间传递的信息。它包含了自定义的声明(Claims),例如用户的标识(user_id)或过期时间(exp)。单位为秒,自 Unix 时间纪元(1970-01-01 00:00:00 UTC)以来的秒数。JWT(JSON Web Token)是一种开放标准(RFC 7519),定义了一种紧凑的、自包含的方式,用于在各方之间安全地传输信息。),但在实际应用中,我们需要存储更多的业务数据,比如用户 ID 和用户名。
2024-11-16 22:18:05
1231
原创 【AI图像生成网站&Golang】雪花算法
使用更精准的时间单位。提供了自定义机器 ID 的能力。支持长时间运行,且避免了时钟回拨问题。改进点Snowflake 的问题Sonyflake 的优化符号位固定占用 1 位,没有实际用途去掉符号位,增加实际可用位数。机器 ID 长度10 位,只支持最多 1024 个节点16 位,支持最多 65536 个节点。时间戳处理依赖系统时间,易受时钟回拨影响提供时钟回拨检测,支持自定义起始时间戳,增强容错能力。序列号长度12 位,支持每毫秒最多生成 4096 个 ID。
2024-11-16 16:48:13
1329
原创 使用命令行自动生成markdown格式的系统目录
在编写项目的Readme文档时,通常需要对项目的目录结构进行介绍,这时自动化生成目录的工具将会使我们的写作过程事半功倍。
2024-10-29 19:42:31
447
原创 使用命令行自动生成markdown文档目录
在编写项目的Readme文档时,使用恰当的工具生成目录将会使我们的写作过程事半功倍。通常需要对项目的目录结构进行介绍,这时自动化生成目录的工具。
2024-10-29 18:34:07
397
原创 【软件安装与配置】 vue
Vue.js 项目通常依赖于 Node.js 环境来进行开发,可以从下载并安装稳定版本。安装 Node.js 后,npm(Node 包管理器)也会自动安装。
2024-10-22 22:00:20
1125
原创 【软件安装与配置】Redis for Windows
Redis 官方没有直接支持 Windows 的安装程序,但可以使用第三方的 Windows 版本。推荐使用或从 Microsoft archive 提供的下载。
2024-10-21 15:11:11
1048
原创 【力扣150&Golang】接雨水
给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。6上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。9。
2024-10-12 15:27:09
313
原创 【力扣150&Golang】分发糖果
n个孩子站成一排。给你一个整数数组ratings表示每个孩子的评分。1请你给每个孩子分发糖果,计算并返回需要准备的。5你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。4你可以分别给第一个、第二个、第三个孩子分发 1、2、1 颗糖果。第三个孩子只得到 1 颗糖果,这满足题面中的两个条件。
2024-10-12 14:21:01
521
原创 【力扣150&Golang】加油站
在一条环路上有n个加油站,其中第 i 个加油站有汽油gas[i]升。你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1个加油站需要消耗汽油cost[i]升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组gas和cost,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回-1。如果存在解,则它是的。3从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。此时油箱有 = 0 + 4 = 4 升汽油。
2024-10-10 17:05:25
1341
原创 【力扣150&Golang】除自身以外数组的乘积
给你一个整数数组nums,返回 数组answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘积。题目数据数组nums之中任意元素的全部前缀元素和后缀的乘积都在整数范围内。请,且在 O(n) 时间复杂度内完成此题。你可以在O(1)的额外空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组额外空间。
2024-10-10 16:29:21
739
原创 【力扣150&Golang】O(1) 时间插入、删除和获取随机元素
实现valtruefalsevaltruefalse你必须实现类的所有函数,并满足每个函数的 平均 时间复杂度为O(1)。// 向集合中插入 1。返回 true 表示 1 被成功地插入。// 返回 false ,表示集合中不存在 2。// 向集合中插入 2。返回 true。集合现在包含 [1,2]。// getRandom 应随机返回 1 或 2。// 从集合中移除 1 ,返回 true。集合现在包含 [2]。// 2 已在集合中,所以返回 false。
2024-10-08 23:08:20
340
原创 【力扣150&Golang】H 指数
给你一个整数数组citations,其中表示研究者的第i篇论文被引用的次数。计算并返回该研究者的h指数。h代表“高引用次数” ,一名科研人员的h是指他(她)至少发表了h篇论文,并且有h篇论文被引用次数大于等于h。如果h有多种可能的值,h是其中最大的那个。3给定数组表示研究者总共有5篇论文,每篇论文相应的被引用了次。由于研究者有3篇论文每篇被引用了3次,其余两篇论文每篇被引用3 次,所以她的 h 指数是3。1。
2024-10-08 20:59:17
574
原创 【力扣150&Golang】跳跃游戏 II
给定一个长度为n的整数数组nums。初始位置为nums[0]。每个元素nums[i]表示从索引i向前跳转的最大长度。换句话说,如果你在nums[i]处,你可以跳转到任意2跳到最后一个位置的最小跳跃数是2。从下标为 0 跳到下标为 1 的位置,跳1步,然后跳3步到达数组的最后一个位置。2。
2024-10-07 22:57:01
428
原创 【力扣150&Golang】跳跃游戏
给你一个非负整数数组nums,你最初位于数组的。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回true;否则,返回false。true可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。false无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。
2024-10-07 20:48:38
449
原创 【力扣150&Golang】买卖股票的最佳时机 II
给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候只能持有股票。你也可以先购买,然后在出售。返回 你能获得的利润。7在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。
2024-10-06 19:16:04
812
原创 【力扣150&Golang】买卖股票的最佳时机
给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择买入这只股票,并选择在卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0。5在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。0。
2024-10-06 18:22:49
386
原创 【力扣150&Golang】轮转数组
给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100]O(1)
2024-10-05 22:45:19
520
原创 【力扣150&Golang】多数元素
给定一个大小为 n 的数组nums,返回其中的多数元素。多数元素是指在数组中出现次数 大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。32。
2024-10-05 10:54:37
312
原创 【力扣150&Golang】删除有序数组中的重复项 II
给你一个有序数组nums,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3。不需要考虑数组中超出新长度后面的元素。函数应返回新长度 length = 7, 并且原数组的前七个元素被修改为 0, 0, 1, 1, 2, 3, 3。
2024-10-04 21:34:11
399
原创 【力扣150&Golang】删除有序数组中的重复项
给你一个的数组nums,请你原地删除重复出现的元素,使每个元素,返回删除后数组的新长度。元素的应该保持。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为knumsnumsknumsnumsk函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2。不需要考虑数组中超出新长度后面的元素。函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。不需要考虑数组中超出新长度后面的元素。
2024-10-03 23:21:05
394
原创 【力扣150&Golang】移除元素
给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素。元素的顺序可能发生改变。然后返回num中与val不同的元素的数量。假设nums中不等于val的元素数量为knumsnumskvalnumsnumsk你的函数函数应该返回 k = 2, 并且 nums 中的前两个元素均为 2。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。,_]你的函数应该返回 k = 5,并且 nums 中的前五个元素为 0,0,1,3,4。注意这五个元素可以任意顺序返回。
2024-09-30 13:51:25
548
原创 【力扣150&Golang】合并两个有序数组
给你两个按排列的整数数组nums1和nums2,另有两个整数m和n,分别表示 nums1 和 nums2 中的元素数目。请你nums2到nums1中,使合并后的数组同样按排列。最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初始长度为m + n,其中前m个元素表示应合并的元素,后n个元素为 0 ,应忽略。nums2的长度为n。需要合并 [1,2,3] 和 [2,5,6]。合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。
2024-09-30 11:19:19
788
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人