下划线golang

引用 maxmind golang 库导致的程序无法 recover crash 的问题

新做的 Gateway 程序打算使用一个 maxmind 第三方库来解析地理信息,想了一下比较简单找了一个库直接使用。 项目跑了一天得到了一堆 panic,程序崩溃超过 1s 丢了不少数据。 从 stack 信息可以看到调用 amxminddb-golang 这个库的 readLeft 出现了错误, ......
maxmind recover 程序 golang 问题

golang 使用 net包实现 tcp server 示例

之前用到 golang 进行网络编程时,主要就是使用 net/http 和 web 框架 gin,这些网络库的底层其实也还是用的标准库自带的 net包,很多是对路由或者其他做封装,而且 golang 本身的长处之一也是网络IO的处理,这也得益于其底层的 IO模型,今天我们分享的是基于 TCP ser ......
示例 golang server net tcp

Golang - time包获取当前日期/时间戳并格式化输出

获取时间对象 package main import ( "fmt" "time" ) // 24小时制 https://www.zhihu.com/question/366830553 const LAYOUT = "2006-01-02 15:04:05" //只能用这个日期 func main ......
日期 格式 时间 Golang time

golang 中的闭包之函数执行完毕后对携程中使用的闭包变量的影响

看到一个问题感觉很神奇啊,按照以前 Java 或者其他的语言惯例,函数执行完毕后再去引用函数内定义的变量应该会出问题,但是 go 好像不是这个样子,当函数执行完毕退出后,携程中依旧能够正常使用闭包捕获的变量,如: package main import ( "fmt" ) type mystruct ......
闭包 变量 函数 golang

golang 中通过strings/bytes/bufio 等包实现相关IO

在 go 的 IO 中,除了 io 、os 等包,我们还有 strings 、 bytes 、bufio 等实现 IO 读写,这其中有些实现了 io.Reader,有些同时实现了 io.Reader和io.Writer 接口。接下来我们一个个看相关的使用。 1.strings 在 strings包 ......
strings golang bytes bufio

golang 通过 os 包进行文件读写

go 中 os包 主要与操作系统打交道,实际底层还是通过相关的系统调用实现文件的读写操作,今天我们就来聊聊通过 os包 实现文件的读写操作。 我们在使用 os包 进行相关操作时,主要流程: 读操作 open -> read -> close 写操作 open -> read -> write -> ......
文件 golang os

golang 通过 io 包进行文件读写

在 golang 语言中,实现io的读与写,只要实现了如下的读写接口即可: // go 1.19/src/io/io.go type Reader interface { Read(p []byte) (n int, err error) } type Writer interface { Writ ......
文件 golang io

[译]Golang template 小抄

[译]Golang template 小抄 目录 [−] 解析和创建模板 命名模板 创建模板 解析多个模板 解析字符串模板 执行模板 执行简单模板 执行命名的模板 模板编码和HTML 上下文编码 安全字符串和 HTML注释 模板变量 . 字符 模板中的变量 模板动作 if/else 语句 移除空格 ......
template Golang

golang reflect.DeepEqual的一个小坑

go语言中,可以使用reflect.DeepEqual()函数比较两个值是否深度一致。 但是在比较的时候有一个小坑需要注意:如果结构体中有切片,切片中的数据顺序如果不通,比较结果会判定为值不一致 如以下代码中,比较两个结构体是否相等,其中两个结构体中TargetList的值顺序不同,最终比较结果为: ......
小坑 DeepEqual reflect golang

1 Golang入门

1 Golang入门 1 Golang介绍 1.1 简介 Go 即Golang,是Google公司2009年11月正式对外公开的一门编程语言 Go是【静态 强类型】语言,是区别于解析型语言的编译型语言(静态:类型固定 强类型:不同类型不允许直接运算) 解析型语言——源代由解析器对代码进行解释执行 编 ......
Golang

2 Golang语法基础

2 Golang语法基础 1 变量命名规范 Go语言中的函数名、变量名、常量名、类型名和包名等所有的命名,都遵循一个简单的命名规则: ① 一个名字必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母、数字或下划线 ② 大写字母和小写字母是不同的:Name和name是两个不同的变 ......
语法 基础 Golang

golang 笔记

In Go, the := operator is a shortcut for declaring and initializing a variable in one line (Go uses the value on the right to determine the variable's ......
笔记 golang

idea - 在Terminal 交叉编译golang 解决

1. 背景 在idea Terminal 栏执行 go build xxx.go 打包的是exe 文件 交叉编译 配置 SET CGO_ENABLE=0 SET GOOS=linux SET GOARCH=arm64go build xxx.go 发现编译文件仍然是exe 2.解决 需要切换为cmd ......
Terminal golang idea

golang - 交叉编译

1.背景 golang是跨平台语言,但是打包的二进制文件不适配各个环境 怎么办? 可以交叉编译 win系统打包为exe执行文件, linux则是无后缀的执行文件,但是linux的cpu架构不同,二进制文件也是不同的,因此打包时需要指定cpu架构 2.解决 linux执行指令 lscpu 查看cpu信 ......
golang

termux - 安装golang 开发环境

echo y | pkg install golang 配置go mod 代理 export GOPROXY="https://goproxy.io" 检查设置有没有生效 go env ......
环境 termux golang

基于golang实现ssh terminal

基于golang实现ssh terminal 实现ssh terminal相对比较容易,简单来说需要初始化ssh连接后,通过ssh连接创建一个会话,定义好输入、输出,然后再请求pty(需要定义好modes)与远程会话进行关联。 package main import ( "fmt" "github. ......
terminal golang ssh

golang中sync.Pool的使用示例

先上代码: package main import ( "fmt" "sync" ) var pool sync.Pool type person struct { Name string Age int } func init() { pool = sync.Pool{New: func() an ......
示例 golang Pool sync

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

json序列化:jackson将驼峰命名转下划线并大写

Java类 import com.fasterxml.jackson.annotation.JsonProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok ......
驼峰 下划线 大写 序列 jackson

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

[oeasy]python0135_变量名与下划线_dunder_声明与赋值

变量定义 回忆上次内容 变量 就是 能变的量 上次研究了 变量标识符的 规则 第一个字符 应该是 字母或下划线 合法的标识符可以包括 大小写字母 数字 下划线 还研究了字符串(str)的函数 isidentifier 查询字符串 是否为合法标识符 最后发现 这个isidentifier函数有时候不好 ......
下划线 变量 dunder python oeasy

每天进步一点点-python单双下划线

区别: xx:公有变量,所有对象都可以访问; __xxx__:双下划线代表着是系统定义的名字。 __xxx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问。代表着类中的私有变量名。 _xxx:单前置下划线,私有化属性和方法,类对象和子类可以访问。不能用“from module impo ......
下划线 python