- 博客(39)
- 收藏
- 关注
原创 【AI图像生成网站&Golang】项目测试与优化
在后文中,我们会使用k6运行测试文件,并根据k6 cloud上通过的请求数和RPS(Requests Per Second,每秒请求数)来简单评估性能,之后会使用pprof和trace工具查找性能瓶颈和突破口。接下来,我开始使用并发用户场景进行测试,模拟“高负载”下的表现(展示实验用的电脑配置低,不能模拟真正的高并发,在此仅做示例。这说明系统能够快速响应并处理高并发请求。进入可视化界面可以看到,单例用户的总请求为7个,平均响应时间为 4372 ms,失败率为 0% ,每秒请求数(RPS)在 1~2 之间。
2024-12-19 23:01:14
1163
4
原创 【工具】使用阿里云OSS搭建图床API
在之前做的一个中,需要用到图床来暂存一些图像。原本我使用的是,但是它每分钟只能上传 20 张图片,不能适用于并发场景,而其他的一些图床都会有上传限制,所以我决定使用阿里云 OSS 来搭建一个可供并发场景使用的图床。
2024-12-19 12:47:31
1069
原创 解决并发情况下调用 Instruct-pix2pix 模型推理错误:index out of bounds 问题
在对 golang 开发的图像生成网站进行并发测试时,调用基于模型和FastAPI该错误表明,模型推理过程中发生了数组越界问题。
2024-12-17 22:42:14
513
原创 【工具】使用 trace 进行性能调优
相较于pprof专注于特定性能数据(如CPU或内存),trace提供了更加全面的运行时视图,适合分析跨线程或跨模块的复杂性能问题。使用 Go 中自带的。
2024-12-16 18:16:26
727
原创 【工具】使用 Gin 集成 pprof 进行性能调优
pprof表示性能分析器(Performance Profiler),其概念和初始实现来源于Google内部的性能分析需求。pprof 在程序运行期间,定期对应用的状态数据进行采样,每次采样都会记录当前的Goroutine和函数调用栈。Go 标准库自带了pprof包,集成在中,只需几行代码即可启用。启动程序后,访问。
2024-12-16 13:50:10
1277
原创 【工具】Windows系统中使用k6分析项目性能
k6 是一个开源的负载测试工具,专为开发人员和测试人员设计,支持 HTTP/HTTPS 协议,可模拟复杂的用户场景和负载。它提供简单的 JavaScript API,适合编写自定义测试脚本。
2024-12-15 19:01:27
411
原创 【备忘录】Gin框架
Gin是一个轻量级、高性能的Go语言Web框架,其设计灵感来源于Martini,但相较于Martini,其性能提升了约40倍。Gin基于HTTP路由构建,并提供了丰富的中间件支持,非常适合用于构建高并发、低延迟的Web应用程序。
2024-11-17 20:59:17
540
原创 【AI图像生成网站&Golang】图床上传与图像生成API搭建
该模型的工作原理是将用户提供的一张初始图像和文本描述作为输入,通过多个扩散步骤,将噪声逐渐转化为符合指令的图像,最终输出经过编辑后的高质量图像。是一种基于 Stable Diffusion 的模型,该模型依赖强大的 Transformer 和扩散模型架构,可以确保生成图像的质量和多样性。实现搭建了一个图像生成API,这种方式较调用在线的图像生成API来说步骤简单,方便调试。提供的API,通过将本地 Base64 编码的图片文件上传到图床,来获取图像的永久链接。
2024-11-17 17:29:58
1626
原创 【AI图像生成网站&Golang】项目架构
本项目的后端基于Golang和Gin框架开发,主要包括的模块有:controller: 负责处理 HTTP 请求并将请求数据传递给逻辑层,控制器层作为入口,将不同的请求指向相应的业务逻辑。dao/mysql: 负责数据库操作,封装了数据查询和持久化逻辑,便于管理数据库交互。logic: 业务逻辑层,实现具体的业务功能,比如用户的登录注册和相关的账号管理。model: 用于定义数据模型与表结构,是项目中数据对象的核心描述。以用户登录功能为例,从前端请求到后端处理的完整调用流程如下:Vue.js
2024-11-17 15:36:53
3469
原创 【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
1166
原创 【AI图像生成网站&Golang】雪花算法
使用更精准的时间单位。提供了自定义机器 ID 的能力。支持长时间运行,且避免了时钟回拨问题。改进点Snowflake 的问题Sonyflake 的优化符号位固定占用 1 位,没有实际用途去掉符号位,增加实际可用位数。机器 ID 长度10 位,只支持最多 1024 个节点16 位,支持最多 65536 个节点。时间戳处理依赖系统时间,易受时钟回拨影响提供时钟回拨检测,支持自定义起始时间戳,增强容错能力。序列号长度12 位,支持每毫秒最多生成 4096 个 ID。
2024-11-16 16:48:13
1303
原创 使用命令行自动生成markdown格式的系统目录
在编写项目的Readme文档时,通常需要对项目的目录结构进行介绍,这时自动化生成目录的工具将会使我们的写作过程事半功倍。
2024-10-29 19:42:31
419
原创 使用命令行自动生成markdown文档目录
在编写项目的Readme文档时,使用恰当的工具生成目录将会使我们的写作过程事半功倍。通常需要对项目的目录结构进行介绍,这时自动化生成目录的工具。
2024-10-29 18:34:07
341
原创 【软件安装与配置】 vue
Vue.js 项目通常依赖于 Node.js 环境来进行开发,可以从下载并安装稳定版本。安装 Node.js 后,npm(Node 包管理器)也会自动安装。
2024-10-22 22:00:20
1114
原创 【软件安装与配置】Redis for Windows
Redis 官方没有直接支持 Windows 的安装程序,但可以使用第三方的 Windows 版本。推荐使用或从 Microsoft archive 提供的下载。
2024-10-21 15:11:11
993
原创 【力扣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
295
原创 【力扣150&Golang】分发糖果
n个孩子站成一排。给你一个整数数组ratings表示每个孩子的评分。1请你给每个孩子分发糖果,计算并返回需要准备的。5你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。4你可以分别给第一个、第二个、第三个孩子分发 1、2、1 颗糖果。第三个孩子只得到 1 颗糖果,这满足题面中的两个条件。
2024-10-12 14:21:01
510
原创 【力扣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
1327
原创 【力扣150&Golang】除自身以外数组的乘积
给你一个整数数组nums,返回 数组answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘积。题目数据数组nums之中任意元素的全部前缀元素和后缀的乘积都在整数范围内。请,且在 O(n) 时间复杂度内完成此题。你可以在O(1)的额外空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组额外空间。
2024-10-10 16:29:21
721
原创 【力扣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
329
原创 【力扣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
555
原创 【力扣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
410
原创 【力扣150&Golang】跳跃游戏
给你一个非负整数数组nums,你最初位于数组的。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回true;否则,返回false。true可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。false无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。
2024-10-07 20:48:38
438
原创 【力扣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
802
原创 【力扣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
374
原创 【力扣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
509
原创 【力扣150&Golang】多数元素
给定一个大小为 n 的数组nums,返回其中的多数元素。多数元素是指在数组中出现次数 大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。32。
2024-10-05 10:54:37
304
原创 【力扣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
392
原创 【力扣150&Golang】删除有序数组中的重复项
给你一个的数组nums,请你原地删除重复出现的元素,使每个元素,返回删除后数组的新长度。元素的应该保持。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为knumsnumsknumsnumsk函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2。不需要考虑数组中超出新长度后面的元素。函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。不需要考虑数组中超出新长度后面的元素。
2024-10-03 23:21:05
377
原创 【力扣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
535
原创 【力扣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
761
原创 【区块链用例】练习总结
区块链(Blockchain)是一种去中心化的分布式账本技术,最初作为比特币的底层技术而被广泛关注。区块链的核心概念是将一系列的交易数据打包成区块(Block),并利用加密技术串联成链(Chain),确保数据的安全性和不可篡改性。图2 区块链网络示例在区块链网络中,节点是网络中运行的设备或实体,负责处理交易和维护账本。常见的节点类型有三种:全节点、轻节点和矿工节点。全节点存储完整的区块链数据,并验证所有交易;轻节点只存储部分数据,用于查询和发送交易;而矿工节点则需要挖掘新的区块并以此来获得奖励。
2024-08-23 16:31:54
1493
原创 【Angular安装问题解决】ng : 无法将“ng”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保 路径正确,然后再试一次。
ng : 无法将“ng”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。后,运行查看版本号的命令行。
2024-06-22 15:07:09
408
原创 【韩顺平Go核心编程】练习题(二)
import ("fmt"fmt.Println("成绩优秀")fmt.Println("成绩优良")fmt.Println("成绩及格")default:fmt.Println("不及格")
2024-02-29 20:16:28
744
原创 【韩顺平Go核心编程】练习题(一)
要求:请使用依据输出语句,达到输入如下图形的效果。Go版本:1.21.7 Winsows 64位。开发工具:VSCode。
2024-02-28 15:18:43
395
1
翻译 Constants across cultures in the face and emotion[论文翻译]
Constants across cultures in the face and emotion不同文化在面部表情和情绪上的差异EKMAN P.Contacts across cultures in the face and emotion [J].Journalof Personality and Social Psychology,1971,17(2):124-129.原文链接摘要 这项研究解决的问题是,是否任何面部表情所表达的情绪都是普遍的。最近的研究表明,所有文字文化总是将相同
2021-01-10 09:18:56
2273
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人