Go语言中文网 为您找到相关结果 39

golang的哪些坑爷事: package实践

在golang中package是个困惑的概念, 特别是package还可以与folder不同名, 委实让我恶心了一把. 关于golang的package的最佳实践: package is folder. package name is folder name. package path is folder path. 信耶稣得永生! 1. 同一个folder存在不同package, 编译错误: D:/go/bin/go.exe build [E:/cgss/src/pkg01] can't load package: package pkg01: found packages pkg01 (pkg01.go) and pkg012 (pkg02.go) in E:\cgss\src\pkg0...阅读全文

博文 2016-09-09 18:00:02 zolo

Go 1.8的Plugins使用

Go 1.8为我们提供了一个创建共享库的新工具,称为Plugins!让我们来创建和使用一个插件。 目前的插件只能在Linux和Darwin上工作。 安装1.8beta1,不做说明. 创建一个插件方法到aplugin.go: package main func Add(x, y int) int { return x+y } func Subtract(x, y int) int { return x-y } 然后构建插件: 运行下面命令构建插件: go build -buildmode=plugin 构建指定文件插件aplugin.go到aplugin.so: go build -buildmode=plugin -o aplugin.so aplugin.go 加载插件: p, _ := ...阅读全文

博文 2016-12-06 12:00:02 vWay

Golang热加载配置实践

前言 生产环境上所输出的日志级别较高不利于定位,会碰到这样一种场景,我们改配置修改日志级别,再重启,以期望定位问题,然而问题重启后不浮现了,所以热加载配置有必要添进去。 实践 直接上代码: package main import ( "encoding/json" "fmt" "io/ioutil" "os" "os/signal" "syscall" "time" ) type Config struct { Mode string `json:"Mode"` } var ( config *Config ) func loadConfig() { f, err := ioutil.ReadFile("config.json") if err != nil { fmt.Println("[...阅读全文

博文 2015-11-25 11:00:03 chenwenhao0304

Golang为别人写的csv文件处理的例子

package main import ( "encoding/csv" "flag" "io" "log" "os" "sort" "strings" ) var quick, first, unrepeat bool func main() { path := flag.String("p", "", "-p 指定csv文件路径") logname := flag.String("l", "", "-l 指定结果输出路径,不指定则输出到标准输出") flag.BoolVar(&quick, "q", false, "-q 数据全部加载到内存中处理,默认是少量数据加载到内存操作,bool值") flag.BoolVar(&first, "f", false, "-f 使用首次遇到的一条数据...阅读全文

博文 2016-10-10 01:00:01 fyxichen

go 调用dll文件

开始在给dll函数传递string参数的时候,总是go总是报内存溢出, string转换的方法: func StrPtr(s string) uintptr { return uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(s)))} 纠结很久,然后去golang社区查找资料,有人建议用指针, func (b *BangWei) WirteLock(lockData LockData) int { buff:=lockData.NO //定义参数规则 wb := syscall.NewLazyDLL("bwusbapi.dll") //加载dll 加载dll的方法在golang社区上很多,好像有两三种, Stwritedata := wb.Ne...阅读全文

博文 2017-09-06 16:30:17 YasinXiao

golang实现热加载配置

今天继续优化了bigpipe项目,核心目标就是解决重启程序损失流量的问题。 背景 bigpipe作为一个消息中间件,其出现是为了给php程序提供方便的异步Http调用功能。然而php语言并不是常驻进程模型,当它请求bigpipe失败后,顶多重试几次,就必须尽快的向用户返回应答。因此,bigpipe服务的可用性是非常重要的。 bigpipe使用golang编写,采用channel逐层缓冲流量和数据,采用协程并发处理数据。因为bigpipe承接了若干业务,经常会对配置文件做一些修改,那么就必须重启bigpipe。 思考 在最初的版本中,bigpipe提供了优雅退出功能,也就是在退出前首先停止对外的Http服务,然后将进程内剩余的数据处理干净,最后再退出,这样不至于损失已经接受到的数据请求。 优雅...阅读全文

博文 2017-09-30 09:12:13 鱼儿的博客

【Go】 格式处理

格式化字符串 在golang里面获取时间戳并不难。只要加载time包。time.Now().Unix() fmt.Sprintf("%d",int64),自此,go语言的int转换成string有3种方法 1、int32位,strconv.Itoa2、大于32位,strconv.FormatInt()3、万恶的fmt.Sprintf...好吧,这个我在php里是经常用来做格式化 引入strings包 strings.contains() index() indexany() indexFunc() 正则表达式 DFANFABacktrackin...阅读全文

博文 2015-07-06 03:00:00 viewcozy

隐私优先的 DNS 解决方案Tenta DNS

Tenta DNS 是一个隐私优先的 DNS 解决方案,它提供一个 DNS 服务器套件,其中包含权威 DNS 服务器,递归 DNS 服务器,以及 NSnitch,实现更安全,更可靠的上网体验。NSnitch 提供的是一个能够记录针对它的请求的 IP 地址,然后通过 JSON API 使该 IP 可用的 DNS 服务器。 Tenta DNS 还提供对 Tor Node membership、DNS 黑名单状态和地理数据的查询。 此外,Tenta DNS 内置 BGP 集成,为 DNS 任播提供单引擎便利。  通过切换到 Tenta DNS,你可以: **阻止 ISP 监视浏览器历史记录。**DNS-over-TLS 在你的 DNS 请求上添加了一层加密,让你的 ISP 无法查看...阅读全文

golang加载css和js

├── main.go ├── static │ ├── css │ │ └── main.css │ └── js │ └── main.js └── view └── index.html 若有如上目录结构 // main.go func main() { http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static")))) // 启动静态文件服务 // ... }