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

[uber-zap/part2]自定义记录器

说明 之前翻译的一个教程(没有备份原地址,梯子被封了)。原地址找到后补上 正文 使用预设的记录器可以节省时间,但如果确定要调整记录器,需要探索自定义记录器的方法 使用zap配置结构体创建记录器 可以使用配置zap.Config创建记录器,这是一个结构体,可以使用需要的值填充结构体,然后调用结构体的.Build()方法来获取记录器 cfg := zap.Config{...} logger, err := cfg.Build() 需要注意的是:zap.Config的结构体没有默认值,至少为zap需要的三个设置提供值 encoder: 只需要添加个Encoding:"XXX",使用json就会创建一个JSON的encoder,另一个值是console 可以使用结构zapcore.EncoderC...阅读全文

博文 2019-03-30 12:34:38 小龙虾

Golang学习笔记:体验函数闭包

最近闲来无事,即将毕业,把自己卖给了杭州的招银网络,正好利用这段时间可以好好学习以下Go语言。 从高中开始接触编程,当时还是用的Pascal语言,主要是为了参加信息竞赛,后来上了大学,大二开始学习Java便开始了我的Java旅程。到现在,已经用Java用了快六年了,前段时间找工作深深体会到了Java的美妙之处——需求量大。哈哈,相比实验室中用C/C++的小伙伴们,真的是太幸福了!!! 好基友本科毕业后就去了聚美优品,两年前就和我提到过Golang,说是很有前途,当时还没什么感觉,也就没有当回事。直到前段时间,听说B站和一些公司,后台系统用Golang重构了,加上区块链的出现,感觉未来即使Golang不是最屌的,也会是主流。 说实话,重新学习一门语言,说简单也简单,说不简单也不简单。最近主要就...阅读全文

博文 2018-01-05 11:33:05 Coderztf

Golang 日期/时间包的使用

golang 的日期时间包:time 的使用方式。 time package 包含了 time.Time 时间对象 及 构建此时间对象的一些方法(time.Unix(), time.Parse()) golang 可精确到 nanosecond,故相应的函数返回值或参数都已纳秒为单位,我们可以借助time.ParseDuration(durationString string)友好的生成纳秒度量的时间跨度值 golang 的时间格式串Layout固定为 2006-01-02 15:04:05 golang 默认使用 Local 即本地时区,可以通过 time.LoadLocation(zoneName string) (*Location, error)来设定时区 时区构建/格式化模式串 /...阅读全文

博文 2019-03-12 14:34:42 big_cat

深入浅出Rust-Future-Part-4

译自Rust futures: an uneducated, short and hopefully not boring tutorial - Part 4 - A "real" future from scratch本文时间:2018-12-03,译者:motecshine, 简介:motecshine 欢迎向Rust中文社区投稿,投稿地址 ,好文将在以下地方直接展示 Rust中文社区首页 Rust中文社区Rust文章栏目 知乎专栏Rust语言 sf.gg专栏Rust语言 微博Rustlang-cn Intro 上三篇文章我们阐述如何处理Future的基础知识, 我们现在能组织多个Future成为一个Future chain, 执行他们,甚至创建他们.但是到现在我们的Future还没有贴...阅读全文

博文 2018-12-07 09:34:48 krircc

根据输入构建完全二叉树, 并找出根到节点和为给定值的所有路径

package main import ( "fmt" "strings" "strconv" ) type Node struct { Data int Left *Node Right *Node High int } func main() { // 根据输入构建完全二叉树, 并找出根到节点和为给定值的所有路径 // 输入 // 22 // 10,5,12,4,7 // 输出 // 10,5,7 // 10,12 // // 使用栈对树进行深度优先遍历,利用树高更方便寻找判断路径 paths, err := findPath(22, "10,5,12,4,7") fmt.Println(paths, err) } // 查找路径 func findPath(sum int, nodeV...阅读全文

你也可以算出圆周率的 - 随机落点算法 - 致即将到来的圆周率日

一年一度的圆周率日就要到了,是的,就是3月14日,因为它与圆周率π的前几位3.14的数字一样。我们知道,传说中祖冲之计算圆周率用的是“割圆术”的改进方法,可惜我们大多数现代人的脑子已经无法理解这种方法了。使用其他的复杂公式也有,但人的脑子更不容易理解,但有一个异想天开的方法你知道吗?任何人可以简单地去计算出Pi呢(下面我们都用Pi来代替圆周率π吧,好写好认,:p)。这个方法源自概率论的基础,叫做蒙特卡洛法,形象一点的话我们也可以把它称为随机落点法,我们先说说它的原理:我们先看看下面这张图 假设有图中的一个正方形和一个刚好套在它中间的圆形,可以很直观地看出:圆形的半径如果是R的话,正方形的边长就是2R。圆形的面积根据公式是Pi乘以R的平方,也就是 Pi × R × R = PiR²正方形的面积...阅读全文

博文 2020-03-13 01:32:51 陆满庭

(golang学习)3. go线程、协程理解

1.进程、线程、协程区别 a.各自特点 参考《详细介绍 进程、线程和协程的区别》 进程:拥有自己独立的堆和栈,既不共享堆,也不共享栈,进程由操作系统调度; 线程:拥有自己独立的栈和共享的堆,共享堆,不共享栈,标准线程由操作系统调度; 协程:拥有自己独立的栈和共享的堆,共享堆,不共享栈,协程由程序员在协程的代码里显示调度。 协程与线程:每个单位时间内,一个CPU只能处理一个线程(操作系统:thread),线程是CPU处理的单位或单元,底层资源占用中等(比进程少)。线程中程序的执行过程是:同步阻塞的(依次执行),非抢占式的(依代码编写顺序)。开发上比较清晰明了。协程是“用户级”的线程,通过把线程的分段运行:主动暂停、主动运行,切换逻辑点,针对i/o请求可以节约连接、对方处理的中间环节等待时间,一...阅读全文

博文 2019-07-29 20:02:40 沧浪水

Go语言的垃圾回收算法被吹过头了?与Java相比如何?

Go语言正在构建的垃圾收集器(GC),似乎并不像宣传中那样的,技术上迎来了巨大突破。那么,与Java语言作对比之后,该怎么选择呢?小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:664389243 这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料!写在前面最近,我读到一些大肆宣传Go语言最新垃圾回收器的文章,这些文章对垃圾回收器的描述让我感到有些厌烦。这些文章有些是来自Go项目。他们宣称GC技术正迎来巨大突破。Go团队在2015年8月发布的新垃圾回收器的启动声明:Go正在构建一个划时代垃圾回收器,2015年,甚至到2025年,或者更久……Go 1.5的GC把我们带入了一个新时代,垃圾回收停顿...阅读全文

博文 2019-01-16 23:34:43 java高级编程中心

【Go学习笔记】9、函数func

函数func Go函数不支持嵌套、重载和默认参数 但是支持一下特性 无需声明原型、不定长度变参、多返回值、命名返回值参数 匿名函数、闭包 定义函数使用关键字func,且左大括号不能另起一行 函数也可以作为一种类型使用 1234567891011121314151617181920212223//commomfunc main() { a,b,c,d := 1,2,3,4 test(a,b,c,d)}func test(s ...int) { fmt.Println(s)}//closurefunc main() { test := test(1) fmt.Println(test(1))}func test(a int) func(int) int { return func(b int) ...阅读全文

博文 2017-05-30 05:10:12 HundredLee

老用户快速从经典网络迁移VPC,阿里云提供便捷解决方案

摘要: 近日,阿里云宣布推出经典网络迁移VPC完整解决方案,帮忙云上老用户平滑迁移到VPC。 阿里云起步于经典网络,但已经全面转向VPC。专有网络VPC(Virtual Private Cloud)以其在安全、成本和网络功能方面的优势,正受到越来越多用户的欢迎,已经成为云上用户的首选网络类型,也是阿里云默认推荐的网络类型。 近日,阿里云宣布推出经典网络迁移VPC完整解决方案,帮忙云上老用户平滑迁移到VPC。 阿里云起步于经典网络,但已经全面转向VPC。专有网络VPC(Virtual Private Cloud)以其在安全、成本和网络功能方面的优势,正受到越来越多用户的欢迎,已经成为云上用户的首选网络类型,也是阿里云默认推荐的网络类型。然而,云上还有很多存量用户在使用经典网络,为了...阅读全文

一个数据库的开发问题

本人是c++开发者,最近接触Go,非常喜欢,准备转Go。 事情是这样的,目前公司的一个C++项目要使用一个分布式数据库进行数据存储和访问,我在学,能不能用Go的框架进行开发数据库,然后通过C++进行数据库的访问?这样做是否有意义,是否能在短时间内完成呢?请各位大神帮我出点主...阅读全文

Fabric环境搭建

2018-10-27笔记 花了一天搭建的环境。 首先安装依赖 $ sudo apt update $ sudo apt install -y libsnappy-def zlib1g-dev libbz2-dev libltdl-dev libtool 搭建go环境,并且安装/maxbrunsfeld/counterfeiter和golang/tools 搭建docker,并且安装docker-compose 安装chaintool $ cd /usr/local/bin $ sudo wget https://github.com/hyperledger/fabric-chaintool/releases/download/v0.10.3/chaintool $ chmod +x chai...阅读全文

博文 2018-10-28 13:34:45 Llewyn_Davis

Golang的压测工具 hey源码分析

项目地址:https://github.com/rakyll/hey项目简介:HTTP负载发生器,是ApacheBench(ab)替代品用法:选项:-n 运行的的请求数。默认200.-c 并发运行请求数,请求数不能小于并发级别。默认值50-q 速率限制,已每秒查询(QPS)为单位。默认没有限制。-z 发送请求的应用程序配置,当时间到了应用程序停止并退出,如果指定了持续时间,则忽略n-o 输出类型。如果没有提供就打印在终端。csv是唯一支持的替代方案,转储文件的响应以逗号分割。 -m HTTP method, one of GET, POST, PUT, DELETE, HEAD, OPTIONS.-H 自定义HTTP头,可以通过重复的标记指定所需的头。例如 F -H "Accept: tex...阅读全文

博文 2020-04-29 00:34:27 lizhengxiang

golang基础--细说defer

defer 匿名函数特性 执行方式类似其它语言中的析构函数,在函数体执行结束后按照调用顺序的相反顺序逐个执行 //执行顺序相反 package main import "fmt" func main() { fmt.Println("a") defer fmt.Println("b") defer fmt.Println("c") } /*输出 a c b */ 即使函数发生严重的错误也会执行,类似于try...except 常用于 资源清理,文件关闭,解锁以及记录时间等操作 支持匿名函数的调用 通过于匿名函数配合可在return之后修改函数计算的结果 -如果函数体内某个变量作为defer时匿名函数的参数,则在定义defer时即已经获得了拷贝,否则 则时引用某个变量的地址 //支持匿名函数 ...阅读全文

博文 2018-07-12 13:30:31 failymao

Golang从入门到精通(十三):Golang复合数据之map

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiangxianghehe/article/details/78790744 map概念 Go 语言中 map 是一种特殊的数据结构:一种元素对(pair)的无序集合,pair 的一个元素是key,对应的另一个元素是value,所以这个结构也称为关联数组或字典。这是一种快速寻找值的理想结构:给定key,对应的value可以迅速定位。 map 这种数据结构在其他编程语言中也称为字典(Python)、hash 和HashTable 等。 map声明和初始化 map 是引用类型,可以使用如下声明: make(map[KeyType]ValueType, initialCapacity) make(m...阅读全文

博文 2019-04-29 07:31:35 xiangxianghehe

安全组规则批量添加授权对象

摘要: 安全组规则如何批量开通常用端口?如何批量对网段授权?本篇将向您介绍ECS控制台中,针对日常维护安全组规则这个典型场景进行的优化改动。 背景 在日常维护安全组时,常见的场景有以下2种: 1.对某个端口范围批量授权多个网段,如:(如:22端口对10.0.0.1/32,10.0.0.2/32,10.0.0.3/32三个网段授权)。 2.对某个网段,批量开通多个端口,如:对10.x.x.xx/16 网段开通22、80、443等端口)。 ECS控制台针对这两个场景,分别提供了两个功能,【添加安全组规则】,解决场景1的问题;【快速创建规则】,解决场景2的问题。之所以没有将两个功能合并,是考虑到在一次操作中同时批量开通多个端口,并对多个网段进行授权,创建出的安全组规则会是一个m ...阅读全文

go中使用cmd与cron

一、go中使用cmd /bin/bash -c "ls -l" cmd->golang->pipe pipe()创建2个文件描述符,fd[0]可读,fd[1]可写 fork() 创建子进程 fd[1]被继承到子进程 dup2() 重定向子进程 stdout/stderr到fd[1] exec() 在当前进程内,加载并执行二进制程序 例子1 模拟一下cmd调用 package main import ( "fmt" "os/exec" ) func main() { var( cmd *exec.Cmd output []byte err error ) //cmd = exec.Command("/bin/bash","-c","cd /tmp;ls -l") cmd = exec.Comm...阅读全文

博文 2020-04-08 07:32:50 小手25

Let’s Encrypt证书吊销事故的思考

title: "Let’s Encrypt证书吊销事故的思考" date: 2020-03-28T00:11:54+08:00 description: "如何保障代码的安全性?" featured_image: "" categories: "其它" tags: [] 前段时间一则新闻引爆了程序界:《一行Golang代码引发的血案——全网最详细分析2020年3月Let’s Encrypt证书吊销事故》。 这个事故的原因上文已经说得很清楚了,这里摘抄一下: 那么这个软件到底出现了什么问题才会导致如此滑稽的故障?我翻看着Let's Encrypt最近的commit,找到了一个Pull Request:#4690。看完这个Pull Request后,我马上意识到问题所在:Golang最经典的错误...阅读全文

博文 2020-04-20 21:32:41 jmjoy

Golang Mutex 源码翻译

翻译自 Go 源码文件 sync/mutex.go。 // sync 包提供了基本的 **同步原语** (synchronization primitives) 例如 **互斥锁**(mutual exclusion locks)。 // 除了 Once 和 WaitGroup 类型,很多是为了低级库的常规使用。 // 高级别的同步最好用通道(channels)和通信(communications)来做。 // // 在这个包下定义的变量或类型不应该被复制使用。 package sync import ( "internal/race" "sync/atomic" "unsafe" ) func throw(string) // 在 runtime 包下提供了此方法 // 一个 Mutex ...阅读全文

博文 2020-01-09 23:32:40 Robin92

[Go - Basic] Time相关

import "time" 类型 type Time struct { wall uint64 ext int64 loc *Location } type Month int type Weekday int type Duration int64 常用函数和方法 函数: Now() Time 当前Time Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time //返回一个设置的time类型 Since(t Time) Duration //time.Now().Sub(t) Unix(sec int64, nsec int64) Time // 时间戳转时间 1sec = 1nsec ...阅读全文

博文 2019-12-06 11:32:38 Arboat