202402-20 golang与-Laravel框架的 tymon/jwt-auth jwt互通 NEW 废话不多说,直接上代码package main import ( "errors" "fmt" "github.com/dgrijalva/jwt-go" "log" "ti... Read More >
202402-10 如何创建自己的私有以太坊区块链 NEW 以太坊(英文Ethereum)一个开源的有智能合约功能的公共区块链平台,通过其专用加密货币以太币提供去中心化的虚拟机来处理点对点合约。本文是在自己的电脑上启动自定义以太坊区块链的指南。请不要与在主要的以太坊区块链上启动节点相混淆,在这里,我们开始一个全新的独立区块链,这个区块链无法与太坊主网进行交互。启动您自己的以太坊区块链比公共测试网络更有用,更有教育意义,也更安全。学习建立私有测试网可以提供其他抽象概念的有形性,例如挖掘,网络对等,甚至geth datadir。在玩以太坊... Read More >
202402-01 golang中三种线程安全的MAP NEW 一、map 是什么map 是 Go 中用于存储 key-value 关系数据的数据结构,类似 C++ 中的 map,Python 中的 dict。Go 中 map 的使用很简单,但是对于初学者,经常会犯两个错误:没有初始化,并发读写。1、未初始化的 map 都是 nil,直接赋值会报 panic。map 作为结构体成员的时候,很容易忘记对它的初始化。2、并发读写是我们使用 map 中很常见的一个错误。多个协程并发读写同一个 key 的时候,会出现冲突,导致 panic。Go... Read More >
202401-30 Gin 使用pprof 进行性能分析 在Gin框架中使用pprof分析性能1、导入需要的包 https://github.com/gin-contrib/pprof go get github.com/gin-contrib/pprof2、简单例子package main import ( "github.com/gin-contrib/pprof" "github.... Read More >
202401-03 第一行代码:以太坊-创建自己的私有区块链 本文会利用以太坊客户端(geth)搭建一个私有区块链,并在这个私有区块链上挖矿,通过本文的案例,读者可以更深入理解区块链、以太坊、挖矿的理论。通过阅读本文,您可以:掌握搭建以太坊开发环境的方法掌握geth的基本使用方法了解如何启动JavaScript控制台掌握建立一个私有区块链的步骤掌握如何在私有区块链上挖矿1. 以太坊(Ethereum)开发环境搭建在玩以太坊之前,首先要搭建以太坊的开发环境。第一步就是安装geth。那么geth是什么呢?geth(或称为go-ethereu... Read More >
202401-02 在Golang中怎么使用以太坊ABI 以太坊(ethereum)是一种开源的区块链平台,它允许任何人在上面构建分布式应用程序。其中最有名的就是以太币(ether),它是以太坊网络的主要加密货币。ethereum平台也支持智能合约的开发,通过智能合约,开发者可以创建去中心化的应用程序(dapps),包括去中心化交易所、去中心化组织、去中心化游戏等。当一个DApp与以太坊交互时,它必须使用以太坊的API,称为以太坊ABI。ABI代表“应用程序二进制接口”,它定义了智能合约的函数和事件,以及如何将数据编码和解码进行通信... Read More >
202401-01 区块链简易公链从0到1开发手册 从0到1简易区块链开发手册V0.1从0到1简易区块链开发手册V0.2-创建钱包 http://blog.51cto.com/clovemfong/2161923 从0到1简易区块链开发手册V0.3-数据持久化与创世区块 http://blog.51cto.com/clovemfong/2162169 从0到1简易区块链开发手册V0.4-实现转账交易的思路分析 http://blog.51cto.com/clovemfong/2163057 从0到1简易区块链开发手... Read More >
202311-18 golang实时通信的服务器推送机制 EventSource(SSE) 简介 简介不知道大家有没有见过 Content-Type:text/event-stream 的请求头,这是 HTML5 中的 EventSource 是一项强大的 API,通过服务器推送实现实时通信。与 WebSocket 相比,EventSource 提供了一种简单而可靠的单向通信机制(服务器->客户端),实现简单,适用于许多实时应用场景。本文将介绍 EventSource 的简单使用、与 WebSocket 的对比以及其优缺点,最后对其进行总结。EventSource客... Read More >
202311-17 golang中gin配合nginx写一个SSE服务程序 简介Server-Sent Events (SSE) 技术是浏览器向服务器发送请求并保持长连接的技术,服务器通过长连接将数据推送到浏览器。SSE通常用于实时更新网页内容或获得服务器推送的通知。体验过 ChatGPT 官方 Web 工具的同学, 应该了解, AI 对话返回的结果, 不是一次性返回的, 而是会在一段时间内, 持续输出, 就像是人在说话时, 有序地说出每一个字一样.它是如何实现的呢, 通过 Chrome 检查工具, 可以看到, 它返回的内容类型 (Content-T... Read More >
202311-09 Golang -- openwechat微信发送消息、自动回复 该 Demo 使用开源项目 openwechat ,实现获取好友列表、为好友发送消息、图片或文件,接收来自好友或群组的消息并设置自动回复等功能。项目入口代码很简单,就是调用一下微信的启动方法即可启动微信package main import ( "fmt" "github.com/eatmoreapple/... Read More >
202311-08 微信网页版接口详解 本系列会讲述微信机器人技术的实现,第一讲主要了解微信网页版给我们提供的http接口,这一步是做一个基于微信网页版机器人的基础和难点。本讲将微信网页版的主要接口罗列出,并给出了入参和返回值的含义和用法,也欢迎大家与我交流。一、网页版微信提供的HTTP接口1、获取uuid 说明:用于获取显示二维码以及登录所需的uuid,标识获取二维码和扫码的为同一个用户 请求方式:GET &nb... Read More >
202309-05 Go1.20 继续小修小补 errors 库 Go 的错误处理机制一直是无数人提了又争,被拒了又提的地方。最近 Go1.20 即将发布,针对 errors 标准库,有一个新的小修小补优化(wrapping multiple errors)。今天来学习这个三顾茅庐最终不怎么成功的阉割版提案。回顾 Go1.13 改进 errors在 Go1.13 中,errors 标准库引入了 Wrapping Error 的概念,并增加了 Is/As/Unwarp 三个方法,用于对所返回的错误进行二次处理和识别。简单来讲,Go 的 err... Read More >
202308-09 go语言中常用的功能之七(二维数组按某列排序) 前言有时候我们需要根据切片中的某个字段进行切片排序,但sort包中只有默认基本类型 int 、 float64 和 string 的排序,所以我们可以手动实现sort包的 sort.Interface 接口,来完成自定义排序。这个接口有三个方法 Len() 、 Less(i,j) 和 Swap(i,j) 。1. 普通排序 a := []int{4,5,7,3,2} sort.Ints(a) fmt.Println(a)浮点和str... Read More >
202303-09 grpc etcdv3兼容问题 undefined: grpc.SupportPackageIsVersion6 grpc.ClientConnInterface由于etcd版本管理的问题,导致etcd的代码和新版本的grpc冲突,会在编译时报错:undefined: resolver.BuildOption undefined: resolver.ResolveNowOption undefined: balancer.PickOptions undefined:&nb... Read More >
202303-08 运行proto文件踩坑历程 大家如果觉得安装问题很多,也可以直接参考这篇文章,使用一键安装和版本控制PowerProto: gRPC工具链(protoc, protoc-gen-go)的一键安装与版本控制 : https://phpmianshi.com/?id=4078一.安装protobufhttps://github.com/protocolbuffers/protobuf/releases在这里一定要确保你的protoc.exe是在你的gopath目录下,否则会报错protoc不是内部... Read More >
202303-07 PowerProto: gRPC工具链(protoc, protoc-gen-go)的一键安装与版本控制 PowerProto: gRPC工具链(protoc, protoc-gen-go)的一键安装与版本控制项目地址:github.com/storyicon/powerprotoPowerProto主要用于解决下面三个问题: 降低gRPC的使用门槛与使用成本。 解决protoc以及其相关插件(比如protoc-gen-go、protoc-gen-grpc-gateway)的版本控制问题... Read More >
202303-06 etcd安装及go简单操作 ETCD 介绍 概念: 高可用的分布式key-value存储,实现配置共享和服务发现 类似项目: zookeeper和consul 开发语言: Go 接口: 提供restful的http接口,使用简单 实现算法: 基于raft算法的强一致性,高可用的... Read More >
202303-05 go操作etcd实现服务注册和发现亲测版 服务发现etc/discovery/discovery.gopackage main import ( "context" "go.etcd.io/etcd/api/v3/mvccpb" clientv3 "go.etcd.io/etcd/client/v3" &nb... Read More >
202303-05 Go操作etcd亲测版 目录 一、服务发现 二、配置中心 三、分布式锁 四、为什么用 etcd 而不用ZooKeeper? 4.1 为什么不选择ZooKeeper? 4.2... Read More >
202303-04 grpc与etcd实现服务注册和服务发现亲测版 一、前言grpc中没有像go-micro那样集成可插拔式的etcd库使用,如何使得grpc能够使用服务注册发现及命名解析的功能,因此本文基于etcd实现了Name Resolver。二、所需的grpc版本grpc相关库:google.golang.org/grpc v1.45.0 google.golang.org/grpc/resolveretcd相关库:go.etcd.io/etcd/client/v3 v3.5.7所需的protoc protoc-... Read More >