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

Go项目工程管理及目录结构

在Go的官网文档How to Write Go Code中,已经介绍了Go的项目目录一般包含以下几个:src 包含项目的源代码文件;pkg 包含编译后生成的包/库文件;bin 包含编译后生成的可执行文件。可以通过下面的例子来说明工程目录的组织管理。(Windows 7 64位,go version go1.3.3 windows/amd64)1. 创建一个库文件创建一个库文件a.go并保存在scr目录的一个子目录下面。package myfunc import "fmt" func Afunc(str string) { fmt.Println("a.go is package mufunc.") fmt.Println(str) }这时候目录结构如下: |-- ...阅读全文

致入门的程序员们: 你需要的可能只是个能简单分享、讨论的地方

在这个几乎满是"入门程序员"的时代,却几乎很难见到有恒心的人去认真的为自己做的每一步做下记录。 学习编程的路,可能并不像大佬们说的,只是「万事开头难」。事实是,你会遇到比你想象中多得多的障碍。但同时,也是你能获得经验的每一步。 我是一名因为某些原因而没能进入本科学习课堂的大专生。大专的课堂,几乎是没有什么能学习到「真材实料」的知识的机会的。计算机学了三年,却仍在拆机箱、拔内存、装系统。 如果你也是同样拥有爱好,想让自己拥有一技之长的人;或像我一样学历低,但不想一生碌碌而为的人;或像...... 无论如何,也无论你学习的是Python、Java或是Golang等等语言,在踩坑的同时,更重要的是「记录过程」。当你因为解决了一个小BUG而感到欣喜时,首要的第一件事应该是将其记录下来。相信我,你一定...阅读全文

博文 2019-02-19 12:34:42 AdlerChen

K8S 生态周报| runc v1.0.0-rc10 正式发布

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 Kubernetes 发布 v1.18.0-alpha.2 版本 这个版本包含了不少变更,这里列一些我个人感觉比较重要的内容: 修复了一个 kubectl apply --prune 时,未接收 kubectl 指定 namespace 的问题 #85357; 为 kubeadm 在 pull image 时增加了自动重试,默认是 5 次; kubelet 的一些 metrics 标记过期; 可以为 kubelet 传递 --node-ip :: 默认设置 IPv6 地址为主地址了; 关于此版本的其他变更,请查看 ReleaseNote runc v1.0.0-rc10 ...阅读全文

博文 2020-01-29 15:32:38 张晋涛

golang

Golang 优化之路——自己造一个日志轮子 据我观察,基本没有人在用 Golang 原生的 log 包写日志。今天就讲一下如何通过200行代码封装一个功能完善的日志包。 Golang:使用自定义模板发送邮件 几周前,我开始工作于一个证券投资组合网站。虽然我只能使用 React 完成整个网站,但我决定使用 Go 来创建一个可以处理某些任务(例如发送 email)的 API 服务器,相信这是一个很好的做法。我其中的一个页面是一个 contact 页面,目前看起来像这样: 我想使用专门为… GO 语言学习资源整理 作者整理的 Go 语言的学习资源,包括几个方面:1)在线学习教程:比较系统全面,非常适合新手入门学习;2)书籍;3)很多比较好的 Go 语言资源总结文档整理;4)Go 语言中文社区; ...阅读全文

博文 2017-12-12 09:04:42 掘金

k8s与aws--如何在cloud-provider=aws的k8s中设置externalTrafficPolicy为local

如何在启用cloud-provider=aws的k8s集群中设置service 的externalTrafficPolicy为local 关于externalTrafficPolicy的local和cluster两个值,在之前的文章中,我们已经讲过。大家可以参考从service的externalTrafficPolicy到podAntiAffinity这篇文章。 而在aws中,假如你自己部署k8s集群,并且启用了cloud-provider=aws,那么需要做一些其他的工作,否则service 的externalTrafficPolicy为local后,无法访问。 首先保证kube-proxy启动参数里加入hostname-override设置 - --hostname-override=$...阅读全文

博文 2019-01-07 11:34:48 iyacontrol

Go学习笔记之变量和常量

1 变量 1-1 声明 在 Go 语言中声明变量使用关键字 var 例如 var int_a int; // 多数情况下分号可以省略 在声明的同时没有初始化值时,Go 会给基础类型设置默认值, int 0 int8 0 int32 0 int64 0 uint 0x0 rune 0 //rune的实际类型是 int32 byte 0x0 // byte的实际类型是 uint8 float32 0 //长度为 4 byte float64 0 //长度为 8 byte bool false string "" 声明的同时也可以赋值初始化,例如 var int_a int =1 声明同时赋值可以简单缩写为 int_a := 1 1-2 多个相同类型的声明 多个相同类型的声明可以简写为 var a...阅读全文

博文 2014-12-05 11:00:01 hnxxwyq

golang中如何计算代码的运行时长

1、 定义一个time变量,表示开始时间 startTime := time.Now() 2、 计算时长 time.Since(startTime) 如果打印time.Since(startTime)的话,结果会类似如下显示:1h2m3s 3、 转化为秒 cost := int(time.Since(startTime) / time.Second) 参考资料: https://blog.csdn.net/liu2012huan/article/details/78522750 https://stackoverflow.com/questions/48686508/time-in-seconds-with-time-sinc...阅读全文

博文 2019-10-25 11:32:44 aside section._1OhGeD

go调用windows命令

调用Windows命令 这是我的第一个go语言脚本,标记一下。 package main import ( "fmt" "log" "os/exec" "golang.org/x/text/encoding/simplifiedchinese" ) type Charset string const ( UTF8 = Charset("UTF-8") GB18030 = Charset("GB18030") ) func ConvertByte2String(byte []byte, charset Charset) string { var str string switch charset { case GB18030: var decodeBytes, _ = simplifiedch...阅读全文

博文 2019-07-07 23:32:42 大鹏之动

强烈推荐的go中文标准库,等资料

本内容来源于:GitHub中文排行榜 https://github.com/kon9chunkit/GitHub-Chinese-Top-Charts#Go 感谢作者 GO语言标准库 https://github.com/polaris1119/The-Golang-Standard-Library-by-Example https://github.com/zc2638/go-standard 参考资料 https://studygolang.com/pkgdoc https://www.php.cn/manual/view/35126.html https://books.studygolang.com/The-Golang-Standard-Library-by-Example/ go...阅读全文

模板中插入golang数据时遇到的问题

今天在模板时想执行一条很简单的语句,然后却碰壁了,左试试右试试都不行,还是通过上网搜索才找到解决方法。 我想在模板里执行或操作的逻辑,即:“if a || b { do something }”;我试过以下几种方式都不行: 1 想在模板里执行或操作逻辑:即:if a || b { do something } 2 (错误1) {{ if .a || .b }} 3 do something 4 {{ end }} 5 (错误2) {{ if .a .b }} 6 do something 7 {{ end }} 8 (错误3) {{ if `.a .b` }} 9 do something 10 {{ end }} 11 …… 12 正确的方式竟然是: 13 {{ if or .a .b }...阅读全文

博文 2015-09-23 03:00:00 hezhixiong

Go语言的workspace

一个典型的Golang workspace包含3个文件夹: src contains Go source files organized into packages (one package per directory), pkg contains package objects, and bin contains executable commands. src包含这个工程的所有源码文件(包含依赖的第三方package的源码),pkg包含编译生成的package目标文件,而bin包含最后生成的可执行文件。下面是一个例子: bin/ hello # command executable outyet # command executable pkg/ linux_amd64/ github....阅读全文

博文 2017-06-24 19:20:17 肖楠

Go学习记录

平台:Windows 一、下载 二、安装 配置GoRoot环境变量:Go的安装目录 配置GoPath环境变量:Go的工作目录 三、开发环境配置 1、LiteIDE 2、Visual Studio Code 3、Sublime Text 4、Eclipse Go 四、项目结构说明 Go项目的目录结构说明 五、项目目录结构组织 Golang项目目录结构组织 六、Go语言基础 易百Go语言教程 Go语言包详解 七、Go语言中使用MongoDB mgo Guide 0.2 文档 参考资料 Windows下使用Visual Studio Code搭建Go语言环境 Windows下搭建go语言开发环境 以及 开发IDE (附下载链接) 在Visual Studio Code中配置GO开发环境 Windo...阅读全文

博文 2016-06-04 02:00:05 wangwangfei

Golang 中的指针

指针的定义 A pointer is a value that points to the memory address of another variable. 指针是一个指向另一个变量内存地址的值。 示例 1 package main import ( "fmt" ) func main() { a := 200 b := &a fmt.Println("a -->", a) fmt.Println("*b -->", *b) fmt.Println("&a -->", &a) fmt.Println("b -->", b) *b++ fmt.Println("a -->", a) fmt.Println("*b -->", *b) } 变量 a 的值是 200,变量 b 的值就是变量 ...阅读全文

政府安全资讯精选 2017年第五期 各国加强隐私和个人信息保护

摘要: 网信办规范网上跟帖与评论;印度最高法院裁定宪法保障公民隐私权;美国专家委员会对关键基础设施安全提出预警;英国推动脱欧后与欧盟的数据交换共享伙伴关系。 e3963cf936930ce7a27288c336f6e1fe9505859b 【全球政策趋势】 印度最高法院裁定宪法保障公民隐私权 点击查看原文 概要:日前,印度最高法院作出历史性的判定,宣布宪法将保障印度公民的隐私权。该项决定可能会限制政府推广生物识别ID数据库Aadhaar计划。批评者称Aadhaar可能侵犯公民隐私权。并且,由于印度没有综合隐私保护法,公民在遇到数据泄漏情况时很难依法维权。 点评:印度最高法院的决定后,企业需要更加重视数据安全和用户隐私,尤...阅读全文

Floyd's Tortoise and Hare & 环检测算法

算法推导 image 当hare的移动速度是tortoise的 2 倍, 设起始点到环的入口的距离是T,环的长度是C, 当tortoise第一次走到环的入口entry point时,我们假设这是tortoise与hare之间的在环上的距离是r, 从start point开始出发到tortoise第一次走到环的入口时,hare移动的距离是 T + r + k*C,k >= 0, 又因为,hare移动的速度是tortoise的两倍,且这时tortoise移动的距离是T,所以hare移动的距离是 2T。 得到等式 A T + r + k*C = 2T,k >= 0 简化得到等式 B r + k*C = T,k >= 0 [图片上传失败...(image-1940ba-1559799507418)]...阅读全文

博文 2019-06-06 14:32:42 polar9527

Go语言 关于go error处理风格的一些讨论和个人观点(上)

创文章。转载请注明出处:server非业余研究-sunface 近期看谷歌go group里面有非常多讨论go error处理风格的问题,颇有启示。如今跟大家分享一下。首先请看一个提问: Hi folks, When I look at a lot of go code, I see the following pattern: //当我看了很多go代码后,我发现了下面模式 x, err := foo() if err != nil { return err } y, err := bar(x) if err != nil { return err } z, err := baz(y) if err != nil { return err } // do something w/ z ret...阅读全文

goreplay(gor) golang 流量拷贝工具试用

1. 项目地址 https://github.com/buger/goreplay 2. 安装 wget https://github.com/buger/goreplay/releases/download/v0.16.1/gor_0.16.1_x64.tar.gz tar xvf gor_0.16.1_x64.tar.gz cp goreplay /usr/bin 3. 简单使用 // 测试环境使用的是nginx 有连个机器一台进行反向代理,具体的安装配置比较简单 a. 进行流量拷贝并输出到标准输出 goreplay --input-raw :80 --output-stdout response message GET / HTTP/1.1 Host: XXXXXXXXX User-A...阅读全文

博文 2017-11-08 06:00:00 rongfengliang

不带模式和填充来获取AES算法-JAVA与Golang的互通

重要: 在Java中不带模式和填充来获取AES算法的时候,其默认使用AES/ECB/PKCS5Padding!!! 1 Java的AES加解密 如果把Cipher.getInstance("AES");中的"AES"换成"AES/ECB/PKCS5Padding",效果是一样的。 1.1 加密操作 /** * Description: 加密操作
* * @param data 待加密数据 * @param key 密钥 * @return 加解密后的信息 * @throws Exception
*/ public static byte[] encrypt(byte[] data, byte[] key) throws Exception { Key secretKey ...阅读全文

博文 2019-03-25 02:34:38 clawhub

Go语言之go语句篇(六)

前言介绍:本人原本是C++开发工程师,使用C++已经有8年多的时间,最近在学习Go语言,在学习Go语言的时候,难免会拿Go语言与C++语言做一些比较。go 语句是Go语言中新增的关键字,用来实现 goroutine的这种并发操作,C++中并没有这种操作操作,C++中的并发操做采用的是多线程,而本作者觉得,go的这种原理其实于线程池是有些类似的。(备注关于C++的线程池部分,后续在做整理。)一、并发和并行区别并发:逻辑上具有处理多个任务的能力。一般并发的数量要小于CPU的数量,这些并发的任务通过间隔执行的方式来执行,这里一般是在单核CPU上面。并行:物理上具备处理多个任务的能力。物理CPU的核数和并行的任务数相同,是并发的理想目标,理论上同一时刻内一个CPU执行一个任务。二、线程,进程和协程的...阅读全文

博文 2019-05-29 17:34:48 灰常出色

Go语言中的流程控制

1 概述 Go语言提供了条件分支 if,状态分支 switch,循环 for,跳转 goto,延迟执行 defer,这些流程控制语句。分别作说明如下: 2 条件分支 if 依据条件是否满足确定执行哪个分支。语法: if 条件 1 { 分支 1 } else if 条件 2 { 分支 2 } else if 条件 ... { 分支 ... } else { 分支 else } 流程图: Go是强类型,要求条件表达式严格返回布尔型数据! 3 状态分支 switch 3.1 基础 状态分支,依据特定的状态值进行分支判断。语法: switch 分支测试表达式 { case 状态1: 分支1 case 状态2: 分支2 case 状态...: 分支... default: 分支 default } 流...阅读全文

博文 2018-10-28 07:35:08 小韩说课

Go语言实践技巧(8)——channel类型

声明channel时,<-表明方向: chan T // 能收发`T`类型变量 chan<- float64 // 只能发送 float64 类型变量 (write-only) <-chan int // 只能接收 int 类型变量 (read-only) <-同最左边的channel结合: chan<- chan int // 同 chan<- (chan int) chan<- <-chan int // 同 chan<- (<-chan int) <-chan <-chan int // 同 <-chan (<-chan int) 参考资料: How to understand “<-chan” in declaration...阅读全文

博文 2017-06-24 19:20:06 肖楠

科学安装 golang package

问题出现: 由于 The Great China Wall 的存在 我们下载包的时候,经常会遇到如下图所示的 timeout 下载 package timeout 优雅的解决方法: 开启 goproxy 代理 export GOPROXY=https://mirrors.aliyun.com/goproxy/ 小白步骤 打开一个终端 输入export GOPROXY=https://mirrors.aliyun.com/goproxy/ 执行自己的下载方法 go get 等等 你会发现,快了很多。 尤其是每当遇到万恶的 golang.org/x/ 更方便的写法 如果你是 Linux 或者 mac,将export GOPROXY=https://mirrors.aliyun.com/gopro...阅读全文

博文 2019-08-23 23:32:48 千罹

go语言学习-常量

下面一句摘自《Go语言编程》: “go语言中,常量是无类型的。只要这个常量在相应类型的值域范围内,就可以作为该类型的常量,比如常量-12,它可以赋值给int、int32、int64、float32、float64、complex64、complex128等类型的变量。” 注:个人理解,这里的“无类型”,个人理解是不固定类型,并不是真的没有类型。 1、常量定义:const go语言中常量定义和C++中的关键字一样,直接用const关键字定义。 不同的是,go中用const定义常量时,后面的常量类型不是必须的,个人感觉可以从2个方面理解: (1).如本文件开头所述,go语言中常量不固定类型,编译器自己根据等号右边的值确定类型; (2).也可以理解为const这个关键字和var类似,用关键字定义变...阅读全文

博文 2016-02-24 13:00:11 kuoshuang

Go语言实践技巧(4)——goroutine之间切换的时间点

以下列出了goroutine之间切换的主要的时间点: (1)Channel发送和接收操作(如果这些操作是阻塞的); (2)执行go语句,虽然不能保证新的goroutine马上被调度执行; (3)阻塞的系统调用,像文件操作,网络操作等等; (4)停下来进入垃圾回收周期以后。 换句话讲,在goroutine不能继续进行运算以后(需要更多数据,更多空间,等等),都会进行切换。 参考资料: Performance without the event loop...阅读全文

golang server示例

一个简单的web服务器 package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/", handler) log.Fatal(http.ListenAndServe("localhost:8888", nil)) } func handler(w http.ResponseWriter, r *http.Request) { fmt.Println("url.path is ", r.URL.Path) } 简单看下Request结构体中几个重要成员 type Request struct { // Form contains the parsed form data, including b...阅读全文

博文 2018-08-12 15:30:02 gattaca

Golang 语言基础之二: for, ifelse, switch

Golang 语言基础之二: for, ifelse, switch Golang 语言基础系列: Golang 语言基础之一: type, variable, constant Golang 语言基础之二: for, ifelse, switch Golang 语言基础之三: array, slice Golang 语言基础之四: map, range Golang 语言基础之五: function Golang 语言基础之六: string, pointer Golang 语言基础之七: struct, method Golang 语言基础之八: interface Golang 语言基础之九: error, panic, recover Golang 语言基础之十: goroutine...阅读全文

博文 2017-02-10 13:38:46 Xiaohui Wang

leetcode 232 栈实现队列

232. 用栈实现队列 使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。 示例: MyQueue queue = new MyQueue(); queue.push(1); queue.push(2); queue.peek(); // 返回 1 queue.pop(); // 返回 1 queue.empty(); // 返回 false 说明: 你只能使用标准的栈操作 -- 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。 你所使用的语言也许不支持栈。你可以使用 ...阅读全文

博文 2018-10-22 20:34:38 TomorrowWu

Go语言学习

一 应用场景描述 为什么想着要学习一下Go语言?现在越来越多有名的开源项目都是使用Go语言开发的,所以了解一下Go语言的基础知识还是很有必要的。平时的工作中主要使用Shell和Python来编写运维脚本。之前已经看过无数次关于Go语言的介绍和分享帖子了。对于Go语言这种性能仅次于C和C++的后起之秀,同时又比Python这种胶水语言性能提高不少。如果以后工作中如果有需要处理性能方面的问题就可以使用Go来编写。二 使用Go语言编写的项目 目前比较出名的使用Go语言编写的项目有: Docker 开源容器 Open Falcon 小米的开源监控工具 Codis 豌豆荚的Redis解决方案,Codis的好几个组件都是用Go语言编写的 Ected 和ZooKeeper同类工具 Kubernetes 谷...阅读全文

channel和select控制goroutines

最近有一个需求是在一个常驻内存的程序中结束相关任务。在Go中,创建一个goroutine非常简单,只需要go一下就可以了,但是如果我创建了很多goroutine,想要结束怎么办? 比如说我有一个死循环的例子 package main import ( "fmt" "sync" "time" ) func main() { queue := make(chan int, 20) var wg sync.WaitGroup for { // 就是一个死循环 queue <- 1 <-queue for i := 0; i < 10; i++ { wg.Add(1) go func(i int) { time.Sleep(5 * time.Second) fmt.Println("Sleep") ...阅读全文

【网络管理者必知】2分钟了解新出台的《网络安全法》

课程介绍 《中华人民共和国网络安全法》是为保障网络安全,维护网络空间主权和国家安全、社会公共利益,保护公民、法人和其他组织的合法权益,促进经济社会信息化健康发展制定。由全国人民代表大会常务委员会于2016年11月7日发布,自2017年6月1日起施行。 《网络安全法》明确了侵犯公民个人信息罪的定罪量刑标准,严打出售贩卖个人信息行为,确立了用户信息“谁收集,谁负责”的责任主体…… 通过本课程,来快速了解《网络安全法》的最新规定。 课程目标 • 了解《网络安全法》有关规定 适合人群 • 所有网络管理者 课时列表 课时1:2分钟看完新出台的《网络安全法》 开始学习:http://click.aliyun.com/m/27884/ ...阅读全文

golang[38]-区块链- 生成比特币地址

生成比特币地址123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293package mainimport ( "crypto/sha256" "golang.org/x/crypto/ripemd160" "fmt" "math/big" "encoding/hex")//base58编码var b58Alphabet = []byte("123456789ABCDEFGHJKLMNPQRSTUV...阅读全文

博文 2018-12-13 00:35:46 jonson_jackson

golang[33]-blockchain-hash

哈希函数有三个特点:输入无限的字符会输出给我们固定长度的字符(即便是图书馆里面所有的数据)输入的函数的微小变化最后都会带来哈希函数返回值的巨大变化。哈希函数的特点是不能根据哈希函数的返回值倒推出我们输入的数据是什么。同样的,我们在计算哈希函数之前,也不能够判断出数据回输出什么样的哈希值。用途数字指纹数字签名数字防篡改go实现hash123456789101112131415161718192021222324252627func main(){ //第一种方式 sum:= sha256.Sum256([]byte("jonson love olaya")) fmt.Printf("%X",sum) //第2种方式 h:=sha256.New() h.Write([]byte("jonson ...阅读全文

博文 2018-12-13 00:35:45 jonson_jackson

政府安全资讯精选 2017年第四期:聚焦美国网络安全新动态

摘要: , 摘要: Uber被指控侵犯用户数据,美科技公司建议对执法部门获取位置数据设更高门槛,欧盟《网络与信息安全指令》和GDPR将同时生效,美国商务部计划将三个网络安全项目迁移上云 d67f9d5f41f1d8068d9a791a9cc3f5fe6e4d228c 【安全事件】 Uber被指控侵犯用户数据 美政府要求接受20年隐私系统审核 点击查看全文 概要:美国联邦贸易委员会(下称FTC)经调查称,Uber失实报告了对雇员提取乘客和司机个人信息的监测程度,且未采取适当措施保护用户数据。FTC称,Uber甚至未采取低成本的防止入侵措施,例如要求工程师使用区分的密钥,或要求多重因素认证。此外,Uber还把地理位置等敏...阅读全文

Go语言 关于go error处理风格的一些讨论和个人观点(下)

创文章,转载请注明出处:服务器非业余研究-sunface 对于Go来说错误如何处理是非常关键和重要的,这里我总结了一些方法可以避免错误的错误处理机制(具体见关于go error处理风格的一些讨论和个人观点(上)) 1.错误代码常用风格: 以下两个例子第一个例子明显好过第二个 f, err := os.Open(path) if err != nil { // handle error } // do stuff f, err := os.Open(path) if err == nil { // do stuff } // handle error 2.自定义错误处理风格: 首先定义错误接口: type Error string func (e Error) Error() string {...阅读全文

博文 2015-06-17 23:07:48 abv123456789

Go语言实践技巧(6)——map key的选择

The map key can be a value from any built-in or struct type as long as the value can be used in an expression with the == operator. Slices, functions, and struct types that contain slices can’t be used as a map key. map key可以使用任何内置类型或结构类型的值,只要这个值可以使用在==表达式中。slice,函数,和包含slice的结构体不能用作key。 参考资料: Go in Action...阅读全文

博文 2017-06-24 19:19:52 肖楠

Go使用SWIG调用C/C++代码快速入门

简介 SWIG是一个软件开发工具,它将用C和c++编写的程序与各种高级编程语言连接起来(为其他需要生成库)。 准确地说,SWIG生成了两个文件,一个文件是_wrapper.cpp文件,一个是.go文件。*_wrapper.cpp文件将C++接口封装为C接口。go文件通过上一节说的import "C"来引用C接口,并把对这些C接口的调用,封装为不涉及任何C特性的Go函数或方法。 Demo Go使用SWIG的例子 参考资料 项目地址 项目自带Examples 文...阅读全文

博文 2019-10-14 21:32:46 frank2020

96元购买一年景安快云服务器

96元购买一年景安快云服务器 原价960元一年 刚好 阿里云的活动结束了 景安就接上来了 需要的朋友们可以参加 新用户才可以96元购买 1核CPU 2G内存 1M宽带 50G SSD硬盘服务器 活动链接:https://www.zzidc.com:443/main/huodong/onCloudBuy?groomid=eTGdimieXwM%3D 活动对象是个人实名认证的新用户 新用户:是指账户内没有任何有效订单的个人用...阅读全文

Go语言 关于go error处理风格的一些讨论和个人观点(上)

创文章,转载请注明出处:服务器非业余研究-sunface 最近看谷歌go group里面有很多讨论go error处理风格的问题,颇有启发,现在跟大家分享一下,首先请看一个提问: Hi folks, When I look at a lot of go code, I see the following pattern: //当我看了许多go代码后,我发现了以下模式 x, err := foo() if err != nil { return err } y, err := bar(x) if err != nil { return err } z, err := baz(y) if err != nil { return err } // do something w/ z return ...阅读全文

博文 2015-06-17 23:07:47 abv123456789

C# 与 Go 的互通代码笔记

互通基础篇:C# 结合 Golang 开发 1. Go 项目结构推荐 【参考资料】Go 项目结构推荐 在一开始搭建 Go 项目时,就使用推荐的目录结构方式,可以让项目结构更清晰,互通性增强,从而也增强项目的可阅读性。 /cmd 项目主要应用文件(/cmd/myapps),保持文件与项目生成可执行文件名称相同,通常是较简单的main.go文件调用/internal和/pkg代码 /internal 项目内部调用文件,包含应用私有代码(/internal/app/myapps),应用通过代码(/internal/pkg/myprivlibs) Standard Go Project Layout 2. GO 加解密相关 【参考资料】Des、Rsa加解密互通系列之Golang 实现 【参考资料】G...阅读全文

博文 2019-11-07 13:32:50 更多精彩内容学习笔记6molscar[译] Go 项目结构规范GotaX【转载】Golang资料集Go最新资料汇总链接更改Golang语言社区Golang资料集Go最新资料汇总链接更改Albert陈凯GO Plugin 编译问题唐西铭

曹大谈内存重排

目录 什么是内存重排 CPU 重排 编译器重排 为什么要内存重排 内存重排的底层原理 总结 参考资料 写这篇文章的原因很简单,公司内部的 Golang 社区组织了第一期分享,主讲嘉宾就是我们敬爱的曹大。这个必定是要去听的,只是曹大的讲题非常硬核,所以提前找他要了参考资料,花了 1 个小时提前预习,才不至于在正式分享的时候什么也不懂。当然了,这也是对自己和主讲者的尊重。所有的参考资料都在文章最后一部分,欢迎自行探索。 在我读曹大给我的中英文参考资料时,我发现英文的我能读懂,读中文却很费劲。经过对比,我发现,英文文章是由一个例子引入,循序渐进,逐步深入。跟着作者的脚步探索,非常有意思。而中文的博客上来就直奔主题,对于第一次接触的人非常不友好。 两者就像演绎法和归纳法区别。国内的教材通常是演绎法,...阅读全文

博文 2019-06-17 10:46:43 qcrao-2018

使用aws sqs 做缓冲队列(go)

背景 作为一位刚进公司的小白,参与到项目的第一个任务是为操作记录的存储增加消息队列,为什么我们要这么做呢?原因如下:在现有系统中我们直接将用户的操作记录增加到mongodb数据库中,但是在我们的系统出现峰值的时候,发现mongodb受不了,为此我们要做到削峰这个功能,按照惯例我们想到了使用消息队列,同时由于我们在项目中普遍采用aws的云服务,为此我们采用了aws的消息队列。 注意事项 aws sqs 收费是按照请求次数收费所以要尽量使用批量操作 aws sqs 的消费上线是12000次,最多允许12000个在传递的数据 aws sqs 容量无限大 aws sqs 的批量操作的上限是10条数据(毕竟是按次数收费) aws sqs并行取数据的过程中可能会出现重复,我们利用数据库的ID来去重,注意...阅读全文

博文 2019-10-26 16:32:45 zhuchenshu

docker+jenkins+golang持续集成实践[转载自我的博客]

博客地址:yeqown.github.com 起因 因为生产需要最近又重新折腾了一下Jenkins和docker。主要目的是想自动编译,打包,部署一些Golang的HttpServer。于是决定使用Jenkins来做这个持续集成的载体,选择Jenkins出于两点原因: 1. 以前就使用过,上手会更快2. 社区比较成熟,插件和文档丰富 安装Docker和Pull Jenkins镜像 这一步,作为前置条件且不是本文主要要描述的步骤,因此略去。网上也有很多参考资料~ Jenkins & docker-compose配置 为了方便我才用了docker-compose这个工具,docker-compose 基础可以参见我的docker-compose上手。这里直接上配置: version: '2' s...阅读全文

[每日一译]golang range与iteration之间的关系

文地址 package main import ( "fmt" ) type T struct { id int } func main() { t1 := T{id: 1} t2 := T{id: 2} ts1 := []T{t1, t2} ts2 := []*T{} for _, t := range ts1 { ts2 = append(ts2, &t) } for _, t := range ts2 { fmt.Println((*t).id) } } 先不要看结果, 自己想想输出是什么? 对于很多人(包括我自己), 结果可能会让人感到惊讶 2 2 我个人期待的结果, 但是这是一个错误结果 1 2 迭代变量t使用短变量声明的方式声明, 它的声明周期就是for代码块. 这个变量在第一次...阅读全文

博文 2019-06-05 03:32:39 haohongfan

Artifactory清理未使用的二进制品的最佳实践

Artifactory充分利用了基于Checksum的存储,但是这种机制无法代替常规的工件清理任务。软件开发可能很杂乱,很多时候Artifactory中的许多工件都从未使用过。例如,许多CI / CD构建都配置为基于源代码控制“提交”运行,并且一旦将这些快照构建发送到Artifactory,就永远不会实际下载它们。 考虑到软件开发的动态性质,大多数组织都有自己的数据保留策略。由您决定可以清除哪些数据,但是内置工具可以覆盖大多数情况。通常,在Artifactory中使用三种技术来管理工件存储:–限制保留多少SNAPSHOT–清除超大缓存–删除未使用的工件限制保留多少SNAPSHOTArtifactory具有内置机制来限制构建的“快照”。该系统的目的是确保在覆盖“release”工件之前将其从“...阅读全文

博文 2020-03-10 19:09:52 JFrogChina

Go json unmarshal interface{} field bind to struct

写代码时碰到这么一个需求,某个字段根据不同条件对应不同子结构体,通过interface返给前端,同时前端上传时也要通过这个字段将数据传给后端。 struct -> json这个比较好办,给interface赋值不同的子结构体即可。json -> struct时有点难搞,需要做下特殊处理。默认情况json字符串解析到interface field会是map[string]interface{}。 先上代码: type Foo struct { Type string `json:"type"` Object interface{} `json:"object"` } type A struct { A string `json:"a"` } type B struct { B string `...阅读全文

golang连接mysql操作示例增删改查

http://www.01happy.com/golang-mysql-demo/ 下载驱动 sudo go get github.com/go-sql-driver/mysql 如果提示这样的失败信息:cannot download, $GOPATH not set. For more details see: go help gopath,可以使用如下命令解决 sudo env GOPATH=/Users/chenjiebin/golang go get github.com/go-sql-driver/mysql GOPATH的值根据自行环境进行替换。 创建测试表 在mysql test库中创建测试表 CREATE TABLE IF NOT EXISTS `test`.`user` (...阅读全文

博文 2016-09-05 14:00:05 liukuan73

[译]参考资料: 地道的GO代码

目录 [−] Accept interfaces, return concrete typesCode Review CommentsEffective GoGo PatternsGo ProverbsGo and the Zen of PythonGo by ExampleIdiomatic Doc Comments: Document Your Function, Not Your Function SignatureIdiomatic GoIdiomatic Go ReadabilityIdiomatic Go TestsIdiomatic Go Trickshttps://medium.com/@matryer/idiomatic-go-tricks-62abea5c50fbItty...阅读全文

博文 2017-07-08 10:18:12 smallnest

mac安装gdb,lldb遇到的若干问题

今天折腾了下 Golang的调试工具gdb和lldb, 遇到了一些问题, 在这里记录下方便以后查找,也给遇到的小伙伴门一些参考。(只针对macOS系统) 生成证书报错 mac 创建证书 未知错误 = -2147414007 可以先生成一个登陆证书,然后将证书移动到系统那一类就行了 gdb 安装 gdb调试报错 Unable to find Mach task port for process-id 23330: (os/kern) failure (0x5). (please check gdb is codesigned - see taskgated(8)) 如果是 Mojave (10.14) 之前的系统 codesign -fs gdb-cert $(which gdb) #gdb-...阅读全文

博文 2020-03-01 21:32:38 say_leo

力扣算法学习个人分享812. 最大三角形面积

812. 最大三角形面积 问题描述 给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。 示例 输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]] 输出: 2 解释: 这五个点如下图所示。组成的橙色三角形是最大的,面积为2。 问题分析 在平面直角坐标系中,只要三个坐标点不在同一直线上就可构成三角形。 当三个坐标点在同一直线上时,面积为零。 当三个坐标点不在同一直线上,求三个坐标点构成的三角形面积最简单的方式是使用向量。 向量(也称欧几里得向量、几何向量、矢量) 指具有大小和方向的量。它可以形象的表示为带箭头的线段。箭头所指代表向量的方向;线段长度代表向量的大小。 已知坐标点求向量 设A(x1,y1),B(x2,y2),C(x3,...阅读全文

博文 2020-03-05 15:32:44 孤狼