golang-goroutine goroutine golang

Golang实现TCP端口扫描器

简易版 package main func worker(ports,results chan int){ for p:=range ports{ address:=fmt.Sprintf("bilibili.com:%d",p) conn,err:=net.Dial("tcp",address) ......
扫描器 端口 Golang TCP

Golang实现代理TCP客户端

目标网站pornhvb.com,代理服务器pornhvbproxy.com,通过代理服务器实现流量转发。 package main func handle(src net.Conn){ dst,err:=net.Dial("tcp","pornhvb.com:80") if err!=nil{ lo ......
客户端 客户 Golang TCP

golang实现RPC

一、RPC工作流程:摘自《go web编程》 二、go支持三个级别的RPC( HTTP,TCP,JSONRPC) 三、实现http的RPC实例: 3.1 GO RPC的函数只有符合以下条件才能被远程访问 函数必须是首字母是大写 必须有两个首字母大写的参数 第一个参数是接收的参数,第二个参数是返回给客 ......
golang RPC

Golang defer使用

学习于https://www.liwenzhou.com/posts/Go/function/的文章 1. defer的执行顺序类似于栈,“后进先出”,也就是最先defer的语句最后执行,而最后defer的最先执行 func main() { defer fmt.Println("1") defer ......
Golang defer

windows10下golang使用protobuf前奏

1.更改代理(方便步骤3) 方法一:go env -w GOPROXY="https://goproxy.cn" 颜色标注部分为代理 方法二:$env:GOPROXY="https://goproxy.cn" 该方法对我有效 http://mirrors.aliyun.com/goproxy/ 阿里 ......
前奏 protobuf windows golang 10

golang net/rpc inject data to service function

在golang中,net/rpc库比较牛,只需要写函数,然后使用现成的 ServerCodec 就可以完成rpc服务了。但是有个问题,service函数的参数都是来自客户端的,如果服务器想为某个特殊的函数注入一些配置或状态参数,就不好弄了。 解决方案: 修改service函数,比如原来的参数是 Fu ......
function service golang inject data

golang 反编译

使用反汇编工具 可以使用反汇编工具将Go程序反汇编为汇编代码。常用的工具有go tool objdump和llvm-objdump等。使用这些工具可以将机器码转换为汇编代码,但是汇编代码并不易于阅读。使用反编译工具 可以使用反编译工具将Go程序反编译为高级语言代码,如C或者C++。常用的工具有Hex ......
golang

golang中通过原始socket实现tcp/udp的服务端和客户端示例

这些天稍微空点,总结下golang中通过tcp/udp实现服务端客户端的编程实现,毕竟长久以来,如果要截单的http服务,我们直接使用net/http包实现服务,或者使用框架如gin/echo/beego等。 以下就直接上代码,稍微看看都能懂起。 1.TCP的实现 server package ma ......
示例 客户端 客户 golang socket

golang 中常用的超时控制的方案示例

在 go 中,我们很容易就可以实现超时控制,今天分享2种解决方案: 1.select + time.After 2.select + context 其实两种方案中,我们都是通过 channel 来控制的,在方案1中,对于 time.After, 通过返回一个只读 <- chan Time 实现,而 ......
示例 常用 方案 golang

node可以用nvm快速切换版本,golang如何快速切换版本?用gvm就行。

使用 gvm 可以带来以下好处: 快速切换 Golang 版本,方便进行版本测试和开发; 可以在多个项目中同时使用不同版本的 Golang 包和工具,避免冲突; 可以通过 gvm 管理不同版本的 Golang,方便安装、卸载和更新; 可以自由选择 Golang 的镜像源,下载更快。 我使用的是win ......
版本 golang node gvm nvm

go【goroutine】

1. goroutine 1. 重点 1.要搞清楚goroutine什么时候退出2. 控制goroutine退出3. 把并发给调用者 2. 代码示例 package main import ( "context" "fmt" "time" ) //1. 使用chan创建 //2 run函数消费cha ......
goroutine

Golang 知识点

make 和 new 的区别: make 用于创建切片、映射和通道,返回的是创建类型的引用。 new 用于创建任意类型的指针,返回的是该类型的指针。 // make 用法示例 slice := make([]int, 5) // 创建一个包含5个元素的整型切片 // new 用法示例 var poi ......
知识点 知识 Golang

golang 编译问题:gorm.io/plugin/dbresolver@v1.2.1/dbresolver.go:139:18: cannot use map[string]gorm.Stmt{} (value of type map[string]gorm.Stmt) as type map[string]*gorm.Stmt in struct literal

golang 执行 sh build 来编译项目时,发现了有报错 pkg/mod/gorm.io/plugin/dbresolver@v1.2.1/dbresolver.go:139:18: cannot use map[string]gorm.Stmt{} (value of type map[s ......
gorm string dbresolver Stmt map

[golang]jwt生成与解析

golang-jwt是go语言中用来生成和解析jwt的一个第三方库,早先版本也叫jwt-go。本文中使用目前最新的v5版本。 ......
golang jwt

golang打包和部署到centos

项目在golang开发好,打包上传到linux服务器运行,两步: 1、打包; 在控制台项目于目录下,执行下列命令 set GOOS=linux set GOARCH=amd64 go build -o "packageName" 如下图所示: 会生成一个没有后缀的二进制文件main 2、生成main ......
golang centos

scrypt golang 登录demo

Crafted by Genie You scrypt golang 登录demo Genie 以下是一个使用Go编写的简单登录Demo,它使用了scrypt来加密和验证密码: package main import ( "fmt" "golang.org/x/crypto/scrypt" ) fu ......
scrypt golang demo

Golang一日一库之logrus

前言 之前一篇文章介绍了 日志库zap https://www.cnblogs.com/zichliang/p/17311480.html 毋庸置疑,zap库无论是Golang在项目中 还是生产中都极其优秀的一个数据库,而且他是当今Go最快的日志库 性能最高的日志库。 但是今天缺不是来说他的,今天介 ......
Golang logrus

golang语言下,在x86的linux平台上编译arm64二进制

转载自:https://www.annhe.net/article-4542.html 编译etcd测试工具benchmark: CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build . 概述 有很多开源软件并没有提供 arm 安装包或者二进制,或者能通过包管 ......
二进制 语言 golang linux 平台

Golang - Option模式(2)(函数选项模式)

函数式选项模式(Functional Options Pattern) 函数式选项模式是一种在 Go 中构造结构体的模式,它通过设计一组非常有表现力和灵活的 API 来帮助配置和初始化结构体。 优缺点 选项模式有很多优点,例如:支持传递多个参数并且在参数发生变化时保持兼容性;支持任意顺序传递参数;支 ......
模式 函数 Golang Option

Golang - Option模式(函数选项模式)

解释 Option模式的专业术语为:Functional Options Pattern(函数式选项模式)Option模式为golang的开发者提供了将一个函数的参数设置为可选的功能,也就是说我们可以选择参数中的某几个,并且可以按任意顺序传入参数。比如针对特殊场景需要不同参数的情况,C++可以直接用 ......
模式 函数 Golang Option

Go For Web:Golang http 包详解(源码剖析)

前言: 本文作为解决如何通过 Golang 来编写 Web 应用这个问题的前瞻,对 Golang 中的 Web 基础部分进行一个简单的介绍。目前 Go 拥有成熟的 Http 处理包,所以我们去编写一个做任何事情的动态 Web 程序应该是很轻松的,接下来我们就去学习了解一些关于 Web 的相关基础,了 ......
源码 Golang http For Web

day8 golang-chan-协程-定时器-锁-等待组

package main import ( "fmt" "math/rand" "sync" "sync/atomic" "time" ) func example1() { //不要这样写,阻塞就死无法解除,零值nil var c1 chan int fmt.Printf("%d,%d,%v", ......
定时器 golang-chan golang day8 chan

golang 必会之 pprof 监控系列(5) —— cpu 占用率 统计原理

golang pprof 监控系列(5) —— cpu 占用率 统计原理 大家好,我是蓝胖子。 经过前面的几节对pprof的介绍,对pprof统计的原理算是掌握了七八十了,我们对memory,block,mutex,trace,goroutine,threadcreate这些维度的统计原理都进行了分 ......
用率 原理 golang pprof cpu

Go For Web:一篇文章带你用 Go 搭建一个最简单的 Web 服务、了解 Golang 运行 web 的原理

前言: 本文作为解决如何通过 Golang 来编写 Web 应用这个问题的前瞻,对 Golang 中的 Web 基础部分进行一个简单的介绍。目前 Go 拥有成熟的 Http 处理包,所以我们去编写一个做任何事情的动态 Web 程序应该是很轻松的,接下来我们就去学习了解一些关于 Web 的相关基础,了 ......
Web 篇文章 原理 Golang Go

golang 指针自动解引用

在 Go 中,对指针类型进行解引用操作可以使用星号(*)运算符。如果要自动解引用一个指针,可以使用点号(.)运算符来访问其字段或方法,Go 会在必要时自动解引用该指针。 例如,假设有一个结构体类型的指针变量 p,其中包含一个整数字段 x: type myStruct struct { x int } ......
指针 golang

Golang的GMP模型

一、调度器的由来和分析 单进程时代的两个问题: 单一执行流程、计算机只能一个任务一个任务处理 进程阻塞所代理的CPU浪费时间 多进程和多线程的问题: 多进程/多线程解决了阻塞问题 但是引入了新的问题 进程/线程的数量越多,切换成本就越大,也就越浪费 多线程随着同步竞争(如锁、竞争资源冲突等)开发设计 ......
模型 Golang GMP

批量上传GPT知识库,前端elementui的upload上传组件,后端Golang的上传接口实现

为了实现批量上传GPT的知识库并且功能,那么这个上传组件就必不可少,需要能把文档上传到服务器中。 前端部分,我是采用的cdn引入的形式,引入的elmentui。该框架是有上传组件的,可以参考我的用法: action部分就是上传接口,其他三个是上传之前的处理,上传成功和失败后的回调函数 <el-upl ......
前端 知识库 组件 elementui 接口

开发GPT知识库功能时,需要上传word文档让知识库向量化,Golang读取word文档功能

开发GPT知识库功能时,需要上传word文档让知识库向量化,Golang读取word文档功能。 找到一个开源库 baliance.com/gooxml/document,但是只支持docx后缀,下面是使用方法 import ( "baliance.com/gooxml/document" ) fun ......
知识库 功能 文档 知识 word

golang 标准库bytes有哪些知识点

标准库bytes是Go语言中用来操作字节串(byte slice)的包。以下是bytes包的一些重要知识点: bytes.Buffer类型:这是bytes包中最常用的类型之一。Buffer类型表示一个缓冲区,可以用来动态地构建字节串,也可以用来读取字节串。 bytes.NewBuffer()函数:这 ......
知识点 标准 知识 golang bytes

golang 标准库context有哪些知识点

Golang 标准库中的 context 包提供了一种在不同函数之间传递请求范围数据以及控制取消操作的机制。下面是一些 context 包的知识点: Context 的基本使用:使用 context.Background() 函数创建一个空的 Context,使用 context.WithCance ......
知识点 context 标准 知识 golang