增加dht的去中心化储存

This commit is contained in:
2025-10-21 15:29:43 +08:00
parent 248f9a28e7
commit ab2f099826
14 changed files with 517 additions and 87 deletions

79
build/anjian/main.go Normal file
View File

@@ -0,0 +1,79 @@
package main
import (
"syscall"
"time"
"unsafe"
)
// 定义Windows API所需的结构体和常量对应SendInput函数参数
const (
INPUT_MOUSE = 0x0000 // 输入类型:鼠标
MOUSEEVENTF_LEFTDOWN = 0x0002 // 左键按下
MOUSEEVENTF_LEFTUP = 0x0004 // 左键释放
)
// INPUT结构体SendInput的输入参数
type INPUT struct {
Type uint32
Mi MOUSEINPUT
}
// MOUSEINPUT结构体鼠标输入详情
type MOUSEINPUT struct {
Dx int32
Dy int32
MouseData uint32
DwFlags uint32
Time uint32
DwExtraInfo uintptr
}
func main() {
// 加载user32.dll并获取SendInput函数地址
user32, err := syscall.LoadLibrary("user32.dll")
if err != nil {
panic(err)
}
defer syscall.FreeLibrary(user32)
sendInputProc, err := syscall.GetProcAddress(user32, "SendInput")
if err != nil {
panic(err)
}
// 定义一次完整点击的输入(按下+释放)
inputs := []INPUT{
{
Type: INPUT_MOUSE,
Mi: MOUSEINPUT{
DwFlags: MOUSEEVENTF_LEFTDOWN, // 左键按下
},
},
{
Type: INPUT_MOUSE,
Mi: MOUSEINPUT{
DwFlags: MOUSEEVENTF_LEFTUP, // 左键释放
},
},
}
// 循环执行1000次点击间隔10毫秒
for i := 0; i < 1000; i++ {
// 调用SendInput发送鼠标事件参数输入数量、输入数组指针、单个输入大小
var args []uintptr
args = append(args, uintptr(len(inputs)))
args = append(args, uintptr(unsafe.Pointer(&inputs[0])))
args = append(args, uintptr(unsafe.Sizeof(INPUT{})))
ret, _, _ := syscall.SyscallN(sendInputProc, args...)
if ret == 0 {
panic("发送鼠标事件失败")
}
// 间隔10毫秒
time.Sleep(10 * time.Millisecond)
}
println("已完成1000次鼠标点击")
}

50
build/ico/main.go Normal file
View File

@@ -0,0 +1,50 @@
package main
import (
"image"
"os"
"github.com/icza/icox" // 替换为icox库
"github.com/nfnt/resize"
)
func main() {
// 1. 读取PNG文件
inputPath := "manifest/images/logo.png" // 输入PNG路径
outputPath := "manifest/images/favicon.ico" // 输出ICO路径
pngFile, err := os.Open(inputPath)
if err != nil {
panic("无法打开PNG文件: " + err.Error())
}
defer pngFile.Close()
// 2. 解码PNG为image.Image对象
img, _, err := image.Decode(pngFile)
if err != nil {
panic("PNG解码失败: " + err.Error())
}
// 3. 定义ICO需要包含的尺寸常见尺寸
sizes := []uint{16, 32, 64, 128} // 可根据需求添加更多尺寸
var icoImages []image.Image
// 4. 缩放图像到每个目标尺寸并收集
for _, size := range sizes {
// 使用Lanczos3算法缩放高质量
resized := resize.Resize(size, size, img, resize.Lanczos3)
icoImages = append(icoImages, resized)
}
// 5. 编码为ICO并写入文件关键修改使用icox.Encode
icoFile, err := os.Create(outputPath)
if err != nil {
panic("无法创建ICO文件: " + err.Error())
}
defer icoFile.Close()
// icox.Encode直接支持多尺寸切片[]image.Image
if err := icox.Encode(icoFile, icoImages); err != nil {
panic("ICO编码失败: " + err.Error())
}
}