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

Golang Time包的方法解析

基础使用 //获取秒级时间戳 time.Now().Unix() //获取毫秒级时间戳 time.Now().UnixNano()/1e6 //格式化时间 time.Now().Format("2006-01-02 15:04") //字符串转时间格式 t, err := time.Parse("2006-01-02 15:04:05", "2019-05-20 18:30:50") //时间戳转为字符串 t := time.Unix("1558348250", 0).Format("2006-01-02 15:04") 设置时区(中国) //在windows系统上,没有安装go语言环境的情况下,time.LoadLocation会加载失败。 var sh, _ = time.LoadLoc...阅读全文

博文 2020-01-04 09:32:40 howie_矜暮

集群管理和容器编排工具 SwarmKit

SwarmKit 是Docker公司开源的Docker集群管理和容器编排工具,其主要功能包括节点发现、基于[raft算法](https://en.wikipedia.org/wiki/Raft_%28computer_science%29)的一致性和任务调度等。 ### 基本概念 服务器上运行SwarmKit工具的swarmd命令后,即可将其加入到服务器集群中,该服务器就成为集群中的一个 节点 。SwarmKit将节点分为两类: * 工作节点 负责通过执行器运行任务。SwarmKit的默认执行器为Docker容器执行器(Docker Container Executor); * 管理节点 负责接收和响应用户的请求,将集群状态调节成最终状态。 用户可以动态调整节点的角色。 ...阅读全文

第6课 Go函数func&defer

Go语言函数的基本用法! package main import ( "fmt" ) /* 函数function -Go函数不支持嵌套、重载、默认参数 -但支持以下特性: 无序声明原型,不定长度变参,多返回值,命名返回值参数 匿名函数,闭包 -定义函数使用关键字func,且左大括号不能另起一行 -函数也可以作为一种类型使用 */ func A(a int, b string, c int) int { //代表参数有三个,返回值是一个int型 return 1 } func B(a, b, c int) { //参数也可以这样写 } func C() (a, b, c int) { a = 1 b = 1 c = 1 //代表返回值a,b,c,注意在此处abc已经是局部变量 return /...阅读全文

博文 2016-08-16 20:00:00 lhdalhd1996

Hyperledger-Fabric源码分析(开篇)

一直想将前段时间研究fabric1.0源码的一些心得体会分享出来,一是在写的过程中自己可以加深理解,二是有些地方代码是看过了,但是总感觉看得不到位,没到火候。 看过1.0的同学应该知道,shim与cc与peer之间千丝万缕的关系,剪不断理还乱。写了这么多年的Java,确实觉得Golang代码别扭,而且goroutine+channel的组合简直是阅读者大杀器。但是Golang的好处显而易见,如果fabric用Java实现,一倍的代码量都不止,而且性能差很多。扯远了,总之习惯成自然。 鉴于fabric已经出到1.4了,更新不可谓不快,改动不可谓不大,再来讲解1.0的实现估计大家都没什么兴趣,我就基于新版做一个系列吧,希望能坚持下来。请大家监督...阅读全文

博文 2019-03-05 22:34:51 Pillar_Zhong

小口啃 Golang - 返回的 nil 不为 nil 的疑惑

前段时间在写代码的时候,遇到一个奇怪的问题,即返回的 nil 值,不为 nil。 导致这个问题的原因是对 Go 中的 nil 理解不全面导致的,直接上测试代码如下: package main import ( "fmt" ) // 定义我们自己的 Error 类型 type NilErr struct { Code int Msg string } // 实现 error 接口的 Error 方法 func (e *NilErr) Error() string { return fmt.Sprintf("Code:%d, Msg:%s", e.Code, e.Msg) } func returnNil() *NilErr { return nil } func main() { fmt.Pr...阅读全文

博文 2017-08-05 04:05:09 笑然一生

golang编程进阶技巧

对最近使用到的技巧做一个汇总。使用反斜杠处理较长的字符串,省去手动转义,简洁又节省时间。 反斜杠的使用 类型转换。 类型转换一步到位 GC优化。 gc优化 go数组是值类型,如果想避免数据复制,可以改用指针或切片。给函数添加方法,调用自己。 函数属性 匿名接口的使用。 匿名接...阅读全文

博文 2019-08-28 01:32:45 飞刀无痕

golang 使用时间通过md5生成token

package main import ( "crypto/md5" "fmt" "io" "strconv" "time" ) func main() { crutime := time.Now().Unix() fmt.Println("crutime-->", crutime) h := md5.New() fmt.Println("h-->", h) fmt.Println("strconv.FormatInt(crutime, 10)-->", strconv.FormatInt(crutime, 10)) io.WriteString(h, strconv.FormatInt(crutime, 10)) fmt.Println("h-->", h) token := fmt.Sp...阅读全文

博文 2017-03-02 12:01:07 徐学良

Go语言学习-time包

go语言的time包 组成 time.Duration(时长,耗时) time.Time(时间点) time.C(放时间点的管道)[ Time.C:=make(chan time.Time) ] time包里有2个东西,一个是时间点,另一个是时长 时间点的意思就是“某一刻”,比如 2000年1月1日1点1分1秒 那一刻(后台记录的是unix时间,从1970年开始计算) 时长就是某一刻与另一刻的差,也就是耗时 函数 Sleep函数 time.Sleep(time.Duration) 表示睡多少时间,睡觉时,是阻塞状态 fmt.Println("start sleeping...") time.Sleep(time.Second) fmt.Println("end sleep.") //【结果】...阅读全文

博文 2016-10-11 03:00:10 tree2013

golang 读取SQL时间与数据库差1秒,求解?????

请教一个问题,SQLSERVER中时间和GOLANG查的时间差1秒,如何处理。。。 ![TIM图片20180506121557.png](https://static.studygolang.com/180506/b29f1a7c42a314151bac1ee60888b3c2.png) ![TIM图片20180506121604.png](https://static.studygolang.com/180506/94004957331736431b7121ee676cc33b.png) 语句如下 srcData, _ := app.PLADB.DB.Query("SELECT top 1 StartTime FROM HN_NCMS.dbo.History WHERE ID...阅读全文

以Go的map是否并发安全为例,介绍最权威的Go语言资料的使用方法

公众号原文地址:https://mp.weixin.qq.com/s/KmT-Mu4YQDeaQY_95waj-Q 本篇目录 本篇目录 说明 正确使用正确的资料 最权威的 Go 语言资料是? Go 语言的 map 是否是并发安全的? 扩大搜索范围 找到答案不等于结束 为什么要执着于一手资料? 参考 说明 相比于细节,更在意知识框架的构建和完善,因此有时候对一些技术细节不是很清楚,只是知道如何找答案。最近要认真编码,需要仔细考虑、敲定细节,趁此机会将 Go 语言的知识整理一下。 正确使用正确的资料 找到正确的资料、能够正确的使用、正确的理解,是最关键的一步。除非是初学者,否则不要使用二手、三手和倒了无数手的资料,长期来看使用非一手资料,就是在浪费时间和引入错误。第一手的资料常常晦涩难懂,需要经...阅读全文

博文 2019-07-12 23:32:41 李佶澳

MySQL基本操作

golang调用MySQL数据库:使用MySQL数据库 go语言中文网 Golang Mysql笔记(二)--- CURD基础 操作 语句 创建数据库 create database dbname; 删除数据库 drop database dbname; 选择数据库 use dbname; 创建数据表 create table table_name(column_name column_type); 删除数据表 drop table table_name; 删除表全部数据,保留表结构 truncate table table_name; 删除带条件的删除,表结构不变 delete from table_name where xxx(条件); 插入数据 insert into table_na...阅读全文

博文 2018-11-04 12:34:45 喵喵小阳

手绘raft算法

在现实的分布式系统中,不能可能保证集群中的每一台机器都是100%可用可靠的,集群中的任何机器都可能发生宕机、网络连接等问题导致集群中的某个节点不可用,这样,那个节点的数据就有可能和集群不一致,所以需要有一种机制,来保证在大多数机器都存在的情况下向外提供可靠的数据服务。这里的大多数节点指的是集群半数以上的节点。 raft算法就是一种在分布式系统中解决集群中多节点之间数据一致性的算法。Golang生态圈中大名鼎鼎的etcd就是使用的raft算法来保持数据一致性的,与raft类似的一致性算法还有Paxos算法、Zab协议等。 其实,raft算法维持数据一致性的核心思想很简单,就是:“少数服从多数”。 leader选举 保证数据一致性,最好的方式就是只有唯一的一个节点,唯一的这个节点读,唯一的这个节...阅读全文

[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

(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

一个数据库的开发问题

本人是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

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