nil
  • 2024-07-02go binary 与 gob
      在Go中,除了使用encoding/binary包将结构体转换为字节切片,还可以使用encoding/gob包进行序列化。两者各有优缺点,适用于不同的场景。以下是对比和示例:encoding/binary优点:高效:直接将结构体的内存布局写入字节切片,效率较高。简单:适用于简单的固定大小结构体。跨语
  • 2024-07-01RabbitMQ延时任务通过死信队列实现(golang)
    最近在一个项目中,需要实现在用户上传图片30分钟后,删除对应图片,以保证用户隐私。我们使用rabbitmq来实现。基于rabbitmq实现延时任务有两种方式,一种为队列ttl+死信exchange,另一种为安装插件(https://github.com/rabbitmq/rabbitmq-delayed-message-exchange)。其中安装
  • 2024-07-01Go1.19革命:打造超效能站点模板爬虫
    目录项目介绍环境配置核心依赖库爬虫实现HTTP请求数据解析数据存储运行与测试代码详解注意事项项目介绍本文将介绍如何使用Go1.19实现一个简单的站点模板爬虫。这个爬虫将访问指定的网站,获取页面内容并解析需要的数据,最终将数据存储在本地文件中。此教程适合具有基本G
  • 2024-07-01简单实现Ai音乐suno-api
    本文由ChatMoney团队出品前言在科技与艺术的交汇处,AI音乐创作正以其独特的魅力,引领着音乐产业的一次革命。不久前,AI音乐的浪潮席卷了整个创意领域,激发了无数音乐爱好者和技术开发者的无限想象。在这场音乐与科技的盛宴中,主流的AI音乐平台suno无疑成为了焦点,尽管它尚未对外开放A
  • 2024-06-23Cobra - How to avoid access global variables in a global variable or init() function
    在同一个package中的init()函数是按照所在文件文件名的字母顺序执行的,如果一个文件排在root.go之前,那么在其中字义的<文件名>Cmd全局变量赋值时将不能使用在root.go中初始化并赋值的全局变量(如globalflags),同样在其init()函数中也不能使用那些全局变量,如果使用则会报空指针错误。
  • 2024-06-23[Golang并发]Sync.map
    sync.Map的实现原理可概括为:通过read和dirty两个字段将读写分离,读取时会先查询read,不存在再查询dirty,写入时则只写入dirty,所以read相当于dirty的缓存。读取read并不需要加锁,而读或写dirty都需要加锁。misses字段统计read被穿透的次数,被穿透指需要读dirty的情
  • 2024-06-22IOS Swift 从入门到精通: 可选项、展开和类型转换
    文章目录处理缺失数据展开可选值用保护装置解开强制展开隐式解包可选值零合并可选链式调用可选尝试可失败的初始化器类型转换总结处理缺失数据我们已经使用诸如之类的类型Int来保存像5这样的值。但是如果您想存储age用户的属性,如果您不知道某人的年龄,您会怎么做?
  • 2024-06-2110 个提高生产力的 Go 小技巧
    10个提高生产力的Go小技巧原创 陈煎鱼 脑子进煎鱼了 2024-06-2108:42 广东 听全文最近PhuongLe大佬针对日常开发Go项目时,总结了一些好用的Go小技巧。看了后,感觉对于刚入门Go的同学有一定的学习价值。可以挑好的学。应用到自己项目里。以下内容分享给大
  • 2024-06-21fyne的border布局02
    border布局02边框布局可能是最广泛用于构建用户界面的布局,因为它允许将项目定位在中心元素周围,而中心元素将扩展以填充空间。实现如下一个界面布局:实现代码如下:packagemainimport( "edgevpndemo/resources" "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" "fyne.i
  • 2024-06-15boltdb 原理
    简介介绍及简单使用:https://www.cnblogs.com/daemon365/p/17690167.html源码地址:https://github.com/etcd-io/bboltpage因为boltdb是要落盘的,所以就要操作文件。为了提高效率,boltdb会和其他数据库一样,会按页(page)来操作文件。而且boltdb使用了linux的mmap来内存映射
  • 2024-06-15区块链之快照
    定义区块链快照是区块链技术中一个非常重要的概念,它可以帮助区块链系统提高性能和数据管理效率。什么是区块链快照区块链快照是指在某个时间点对整个区块链的状态进行保存和备份的过程。快照会记录区块链上所有账户的余额、合约状态等信息,并将其序列化存储起来。这样
  • 2024-06-14Go黑帽子|文件搜索和数据库矿工
    文件搜索filepath.Walk遍历目录,regexp.MustCompile来匹配关键字packagemainimport( "fmt" "log" "os" "path/filepath" "regexp")varregexexs=[]*regexp.Regexp{ regexp.MustCompile(`(?i)user`), regexp.MustCompil
  • 2024-06-14Go黑帽子|TCP扫描器和代理
    TCP扫描器在worker函数中通过net.Dial测试端口连通,并把worker放到goroutine中运行,port作为管道在主程序和携程中传递扫描信息packagemainimport( "fmt" "net" "sort")funcworker(portschanint,resultschanint){ forp:=rangeports{ address:=fmt.Spr
  • 2024-06-12go http请求
    funcSend(notificationmodel.Notification,defaultRobotstring)(errerror){markdown,robotURL,err:=transformer.TransformToMarkdown(notification)iferr!=nil{return}data,err:=json.Marshal(markdown)iferr!=nil{
  • 2024-06-12Zgo - Writing to a file
     packagemainimport("bufio""fmt""io""os")funcmain(){buffer:=[]byte("Datatowrite\n")f1,err:=os.Create("f1.txt")iferr!=nil{fmt.Pri
  • 2024-06-10Zgo - csv_data.go
     packagemainimport("encoding/csv""log""os")typeRecordstruct{NamestringSurnamestringNumberstringLastAccessstring}varmyData=[]Record{}funcreadCSVFile(file
  • 2024-06-09单链表相关面试算法题汇总
    技巧汇总快慢指针先找到中间节点如果要调用next..确保当前节点不为空。依次类推。.next不为空是否有环。走过的路。重新走。互相走。画图,分解,暴力法。用hashset插入法翻转。packagemainimport( "fmt" ."github.com/isdamir/gotype")funcAddLNode(h1,h2*L
  • 2024-06-08go 操作mac
    cilium1.15.1生成随机macpackagemainimport( "crypto/rand" "fmt" "net")//MACaddressisannet.HardwareAddrencapsulationtoforceciliumtoonlyuseMAC-48.typeMACnet.HardwareAddr//Stringreturnsthestringrepr
  • 2024-06-08红黑树-数据结构
    平衡二叉B树每个节点可以是红或者是黑红黑树不是高度平衡的,他的平衡是“通过自己的红黑规则实现的”红黑规则每个节点是红或者为黑根节点必须是黑色如果一个节点没有子节点或者是父节点,这个节点的相应的指针属性为nil,这些nil视为叶节点,每个叶节点nil是黑色的如果某个节
  • 2024-06-07141. 环形链表
    /***Definitionforsingly-linkedlist.*typeListNodestruct{*Valint*Next*ListNode*}*/funchasCycle(head*ListNode)bool{listMap:=map[*ListNode]struct{}{}forhead!=nil{if_,ok:=listMap[head];ok{
  • 2024-06-07go pool
     来自:sync.Pool原理sync.Pool核心对象有三个New:函数,负责对象初始化Get:获取Pool中的对象,如果Pool中对象不存在则会调用NewPut:将对象放入Pool中NewfuncPool的结构很简单,就5个字段 typePoolstruct{ ... Newfunc()interface{} }
  • 2024-06-05golang使用OpenCC繁简转换
    https://github.com/longbridgeapp/openccmain.gopackagemainimport( "fmt" "log" "github.com/longbridgeapp/opencc")funcmain(){ s2t,err:=opencc.New("s2t") iferr!=nil{ log.Fatal(err) } in:=`
  • 2024-06-04containerd 源码分析:创建 container(三)
    文接containerd源码分析:创建container(二)1.2.2.2启动task上节介绍了创建task,task创建之后将返回response给ctr。接着,ctr调用task.Start启动容器。//containerd/client/task.gofunc(t*task)Start(ctxcontext.Context)error{ r,err:=t.client.TaskServi
  • 2024-06-04containerd 源码分析:创建 container(二)
    文接containerd源码分析:创建container(一)1.2.2创建容器进程创建container成功后,接着创建task,task将根据containermetadata创建容器进程。1.2.2.1创建task进入tasks.Newtask创建task://containerd/cmd/ctr/commands/tasks/tasks_unix.gofuncNewTask(ctxg
  • 2024-06-04containerd 源码分析:创建 container(一)
    0.前言Kubernetes:kubelet源码分析之pod创建流程介绍了kubelet创建pod的流程,containerd源码分析:kubelet和containerd交互介绍了kubelet通过cri接口和containerd交互的过程,containerd源码分析:启动注册流程介绍了containerd作为高级容器运行时的启动流