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

Go和HTTPS

Go和HTTPS 四 30 bigwhite技术志 CA, CNNIC, Go, Golang, http, https, MD5, ngrok, openssl, SHA, SHA-1, SHA256, SSL, TLS, Web, 加密, 单项散列, 密钥, 微信, 摘要, 数字证书, 私钥, 签名 1 Comment 近期在构思一个产品,考虑到安全性的原因,可能需要使用到HTTPS协议以及双向数字证书校验。之前只是粗浅接触过HTTP(使用Golang开 发微信系列)。对HTTPS的了解则始于那次自行搭建ngrok服务,在那个过程中照猫画虎地为服务端生成了一些私钥和证书,虽然结果是好 的:ngrok服务成功搭建起来了,但对HTTPS、数字证书等的基本原理并未求甚解。于是想趁这次的机会,对...阅读全文

博文 2015-05-01 12:11:47 bigwhite

妙用GO信道(channel)

channel 是 golang 里相当有趣的一个功能,在我使用 golang 编码的经验里,大部分事件都会是在享受 channel 和 goroutine 配合的乐趣。所以本文主要介绍 channel 的一些有趣的用法。 这里有 Oling Cat 翻译的Go编程语言规范里关于 channel(信道)的描述: 信道提供了一种机制,它在两个并发执行的函数之间进行同步,并通过传递(与该信道元素类型相符的)值来进行通信。 这个个描述又乏味、又枯燥。在我第一次阅读的时候,完全不明白这到底是个什么玩意。事实上,可以认为 channel 是一个管道或者先进先出队列,非常简单且轻量。channel 并不是 Golang 首创的。它同样作为内置功能出现在其他语言中。在大多数情况下,它是一个又大、又笨、又复...阅读全文

博文 2017-03-14 06:00:55 云迹

区块链基础入门

一、区块链产品概览 1.1 区块链产品及 区块链产品主要有:底层平台、开放平台、应用场景 1.2 区块链产品特点 底层平台 通用基础设置 与业务场景无关 技术门槛较高 多技术结合:分布式存储+点对点网络+密码学等等 开放平台 与业务场景相关性低 面向区块链应用开放者 起步探索阶段,成熟产品相对较少 应用场景 可应用的领域和场景广泛 与业务场景密切相关 具有可拓展性 易形成价值网络 二、底层平台 底层平台有:公有链、 联盟链、私有链 2.1 底层平台-公有链 向全世界所有人开放,每个人都能成为系统中的一个节点参与记账的区块链,它们通常将激励机制和加密数字验证相结合,来实现对交易的共识。 2.2 底层平台-联盟链 若干个机构共同参与记账的区块链,即联盟成员之间通过对多中心的互相信任来达成共识。联...阅读全文

[Golang]妙用channel

channel 是 golang 里相当有趣的一个功能,在我使用 golang 编码的经验里,大部分事件都会是在享受 channel 和 goroutine 配合的乐趣。所以本文主要介绍 channel 的一些有趣的用法。这里有 Oling Cat 翻译的Go编程语言规范里关于 channel(信道)的描述:信道提供了一种机制,它在两个并发执行的函数之间进行同步,并通过传递(与该信道元素类型相符的)值来进行通信。这个个描述又乏味、又枯燥。在我第一次阅读的时候,完全不明白这到底是个什么玩意。事实上,可以认为 channel 是一个管道或者先进先出队列,非常简单且轻量。channel 并不是 Golang 首创的。它同样作为内置功能出现在其他语言中。在大多数情况下,它是一个又大、又笨、又复杂的消...阅读全文

博文 2015-03-06 16:00:02 abv123456789

golang GET 出现 x509: certificate signed by unknown authority

我们编写一个Go程序来尝试与这个HTTPS server建立连接并通信。 //gohttps/4-https/client1.gopackage main import ( "fmt" "io/ioutil" "net/http") func main() { resp, err := http.Get("https://localhost:8081") if err != nil { fmt.Println("error:", err) return } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) fmt.Println(string(body))} 运行这个client,我们得到如下错误: $go run ...阅读全文

博文 2017-09-26 18:30:00 kccdzz

golang 创建守护进程

package main import ( "os" "os/exec" "path/filepath" ) if os.Getppid()!=1{ //判断当其是否是子进程,当父进程return之后,子进程会被 系统1 号进程接管 filePath,_:=filepath.Abs(os.Args[0]) //将命令行参数中执行文件路径转换成可用路径 cmd:=exec.Command(filePath,os.Args[1:]...) //将其他命令传入生成出的进程 cmd.Stdin=os.Stdin //给新进程设置文件描述符,可以重定向到文件中 cmd.Stdout=os.Stdout cmd.Stderr=os.Stderr cmd.Start() //开始执行新进程,不等待新进程退...阅读全文

博文 2015-06-17 20:15:59 ghost911_slb

golang取两个数字之间的随机数

golang取两个数字之间的随机数 package main import ( "crypto/rand" "math/big" "fmt" ) func main(){ fmt.Println(RandInt64(100,3000)) } func RandInt64(min,max int64) int64{ maxBigInt:=big.NewInt(max) i,_:=rand.Int(rand.Reader,maxBigInt) if i.Int64()阅读全文

博文 2015-11-09 21:00:01 别人说我名字很长

Go和HTTPS

自 tony bai 近期在构思一个产品,考虑到安全性的原因,可能需要使用到HTTPS协议以及双向数字证书校验。之前只是粗浅接触过HTTP(使用Golang开 发微信系列)。对HTTPS的了解则始于那次自行搭建ngrok服务,在那个过程中照猫画虎地为服务端生成了一些私钥和证书,虽然结果是好 的:ngrok服务成功搭建起来了,但对HTTPS、数字证书等的基本原理并未求甚解。于是想趁这次的机会,对HTTPS做一些深度挖掘。主要途 径:翻阅网上资料、书籍,并利用golang编写一些实验examples。 一、HTTPS简介 日常生活中,我们上网用的最多的应用层协议就是HTTP协议了,直至目前全世界的网站中大多数依然只支持HTTP访问。 使用Go创建一个HTTP Server十分Easy,十几行代码...阅读全文

博文 2017-01-20 13:00:03 andylau00j

Go获取命令行参数及信号量处理

部署golang项目时难免要通过命令行来设置一些参数,那么在golang中如何操作命令行参数呢?可以使用os库和flag库。 golang os库获取命令行参数 os可以通过变量Args来获取命令参数,os.Args返回一个字符串数组,其中第一个参数就是执行文件本身。 1 2 3 4 5 6 7 8 9 10 package main import ( "fmt" "os" ) func main() { fmt.Println(os.Args) } 编译执行后执行 $ ./cmd -user="root" [./cmd -user=root] 这种方式操作起来要自己封装,比较费时费劲。golang提供了flag库,可以很方便的操作命名行参数,下面介绍下flag的用法。 golang fla...阅读全文

博文 2015-08-22 12:00:00 kenkao

大型网站的HTTPS实践(一)---HTTPS协议和原理

1前言 百度已经于近日上线了全站HTTPS的安全搜索,默认会将HTTP请求跳转成HTTPS。本文重点介绍HTTPS协议,并简单介绍部署全站HTTPS的意义。 本文最早发表于百度运维部官方博客 2 HTTPS协议概述 HTTPS可以认为是HTTP + TLS。HTTP协议大家耳熟能详了,目前大部分WEB应用和网站都是使用HTTP协议传输的。 TLS是传输层加密协议,它的前身是SSL协议,最早由netscape公司于1995年发布,1999年经过IETF讨论和规范后,改名为TLS。如果没有特别说明,SSL和TLS说的都是同一个协议。 HTTP和TLS在协议层的位置以及TLS协议的组成如下图: TLS协议主要有五部分:应用数据层协议,握手协议,报警协议,加密消息确认协议,心跳协议。 TLS协议本身...阅读全文

博文 2015-05-04 11:26:58 luocn99

招聘Golang开发工程师(上海)

发个招聘帖,咱公司要招聘Golang开发工程师啦,以下是职位描述。有兴趣者请投简历至eva.wang@trustasia.com. 我们期待您的加入。 公司介绍: 亚数信息科技(上海)有限公司主要从事数字证书及信息安全产品的研发与销售,并提供网络信息安全整体解决方案与专业信息安全服务。这其中包括全球可信的服务器SSL证书、软件代码签名证书、邮件安全证书、客户端证书以及各类电子文档签名证书,企业自行管理证书的PKI管理平台部署以及企业服务器安全监测服务。目前,公司的客户包括华为、三星、京东、中国银联、百度和中国移动等。 亚数信息科技(上海)有限公司以“加密无处不在,让互联网更安全可信”为使命,努力成为国内信息安全领域的创新者和技术领先者,为客户提...阅读全文

Golang:有趣的 channel 应用

严格意义上说,本文是我另外一片文章《Golang Funny: Play with Channel》的中文版本。不过,毕竟是用中文当母语的,所以就不翻译了,重新按照那个内容写过吧。 channel 是 golang 里相当有趣的一个功能,在我使用 golang 编码的经验里,大部分事件都会是在享受 channel 和 goroutine 配合的乐趣。所以本文主要介绍 channel 的一些有趣的用法。 这里有 Oling Cat 翻译的Go编程语言规范里关于 channel(信道)的描述: 信道提供了一种机制,它在两个并发执行的函数之间进行同步,并通过传递(与该信道元素类型相符的)值来进行通信。 这个个描述又乏味、又枯燥。在我第一次阅读的时候,完全不明白这到底是个什么玩意。事实上,可以认为 ...阅读全文

博文 2014-10-09 16:17:36 mikespook

关于语音识别你了解多少?

语音识别有哪些功能 语音输入系统 1、提取有效的声音信息2、从有效信息识别身份3、声音信号转换成电信号 语音控制系统 通过语音信息与实际内容进行匹配 智能对话系统 智能理解用户的需求 实现过程 转化语音信号 1、语音预处理(语音信号采样、反混叠带通滤波、去除个体发音差异和设备、环境引起的噪声影响等)2、声波------>电信号------>二进制3、语音识别只能找到与说话者发音最为相似的字音。在判断相似性时 ,我们首先需要设定好标准读 比较两个向量之间的夹角大小 ,把特征分析提取的一组随时间而变的特征矢量序列和事先通过学习后存在机器里样本序列进行比较。我们将两个向量相乘再除以他们各自的模得到他们之间的夹角 ,夹角越小 ,向量之间也就越为相似 ,从而语音识别得以找到最接近每个人发音的字形。(模...阅读全文

golang信号量处理

c语言的信号量都很容易理解了,注册回调函数就行了 go中的有所不同,是通过个go程和chan来处理的 func main(){ go signalHandle() //用go程执行信号量处理函数 。。。。处理其他逻辑 } func signalHandle() { for { ch := make(chan os.Signal) signal.Notify(ch, syscall.SIGINT, syscall.SIGUSR1, syscall.SIGUSR2,syscall.SIGHUP) sig := <-ch Utils.LogInfo("Signal received: %v", sig) switch sig { default: Utils.LogInfo("get sig=%v...阅读全文

博文 2015-06-17 20:23:31 ghost911_slb

网易云音乐ncm编解码探究记录

网易云音乐ncm编解码原理 背景 办了个网易黑胶会员,想着整个无损音乐库放walkman里听,不再受流量和音质的苦。万万没想到网易自己搞了个ncm的格式,见都没见过,walkman上没法识别,据说会员过期了还不给播了。 我知道了,这是租赁不是购买,看了下网友们对网易云的口诛笔伐,我倒没啥感觉,黑胶会员这个价格,你说买站内所有音乐版权肯定是不够的,租赁也没啥问题。就是音乐搞租赁这个做法以前没见过不太习惯,我就想在我的随身听上播放ncm仅此而已。 网上有挺多奇技淫巧比如从mv转,从h5元素里抓url等等,感觉都差点意思,想着能不能写个ncm转常见无损格式的软件。为此还去学习了一下音频格式以及编解码的一些基础知识。 研究了大半天,遇到了很多无法逾越的问题,后来在github上发现了有人用c++基于...阅读全文

博文 2019-08-10 23:32:55 欧祎

关于语音识别你了解多少?

语音识别有哪些功能 语音输入系统 1、提取有效的声音信息 2、从有效信息识别身份 3、声音信号转换成电信号 语音控制系统 通过语音信息与实际内容进行匹配 智能对话系统 智能理解用户的需求 实现过程 转化语音信号 1、语音预处理(语音信号采样、反混叠带通滤波、去除个体发音差异和设备、环境引起的噪声影响等) 2、声波------>电信号------>二进制 3、语音识别只能找到与说话者发音最为相似的字音。在判断相似性时 ,我们首先需要设定好标准读 比较两个向量之间的夹角大小 ,把特征分析提取的一组随时间而变的特征矢量序列和事先通过学习后存在机器里样本序列进行比较。我们将两个向量相乘再除以他们各自的模得到他们之间的夹角 ,夹角越小 ,向量之间也就越为相似 ,从而语音识别得以找到最接近每个人发音的字...阅读全文

Go和HTTPS

自:http://tonybai.com/2015/04/30/go-and-https/ 近期在构思一个产品,考虑到安全性的原因,可能需要使用到HTTPS协议以及双向数字证书校验。之前只是粗浅接触过HTTP(使用Golang开 发微信系列)。对HTTPS的了解则始于那次自行搭建ngrok服务,在那个过程中照猫画虎地为服务端生成了一些私钥和证书,虽然结果是好 的:ngrok服务成功搭建起来了,但对HTTPS、数字证书等的基本原理并未求甚解。于是想趁这次的机会,对HTTPS做一些深度挖掘。主要途 径:翻阅网上资料、书籍,并利用golang编写一些实验examples。 一、HTTPS简介 日常生活中,我们上网用的最多的应用层协议就是HTTP协议了,直至目前全世界的网站中大多数依然只支持HTTP...阅读全文

博文 2015-06-02 04:00:05 sevenyuan

Go语言 美妙的channel(下)

严格意义上说,本文是我另外一片文章《Golang Funny: Play with Channel》的中文版本。不过,毕竟是用中文当母语的,所以就不翻译了,重新按照那个内容写过吧。 channel 是 golang 里相当有趣的一个功能,在我使用 golang 编码的经验里,大部分事件都会是在享受 channel 和 goroutine 配合的乐趣。所以本文主要介绍 channel 的一些有趣的用法。 这里有 Oling Cat 翻译的Go编程语言规范里关于 channel(信道)的描述:信道提供了一种机制,它在两个并发执行的函数之间进行同步,并通过传递(与该信道元素类型相符的)值来进行通信。 这个个描述又乏味、又枯燥。在我第一次阅读的时候,完全不明白这到底是个什么玩意。事实上,可以认为 c...阅读全文

博文 2014-10-11 18:00:01 abv123456789

Golang:有趣的 channel 应用

严格意义上说,本文是我另外一片文章《Golang Funny: Play with Channel》的中文版本。不过,毕竟是用中文当母语的,所以就不翻译了,重新按照那个内容写过吧。 channel 是 golang 里相当有趣的一个功能,在我使用 golang 编码的经验里,大部分事件都会是在享受 channel 和 goroutine 配合的乐趣。所以本文主要介绍 channel 的一些有趣的用法。 这里有 Oling Cat 翻译的Go编程语言规范里关于 channel(信道)的描述: 信道提供了一种机制,它在两个并发执行的函数之间进行同步,并通过传递(与该信道元素类型相符的)值来进行通信。 这个个描述又乏味、又枯燥。在我第一次阅读的时候,完全不明白这到底是个什么玩意。事实上,可以认为 ...阅读全文

博文 2014-10-10 19:00:01 kjfcpua

热更新配置参数例子(Golang)

在不停止程序的情况下,通过发送USR1或USR2等信号量,触发运行中程序的参数更新处理。当然还可以通过处理如kill等信号量, 让程序正确的处理退出操作。 做了个例子,效果如下。 可以看到通过发出kill -USR1 id号 让对应的程序参数发生了变更。 关于kill的参数值可以通过kill -l列出。 各个终端也提供了很多快捷键来支持特定信息的发送,如最常见的ctrl+c. 但注意,各个终端的快捷键定义可能不一样,而且有些是可以自定义的,这个要注意,在使用前可以用stty -a查出。 附上测试机这两条命令的结果: xcl@xclpc:~$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SI...阅读全文

博文 2015-06-17 20:04:33 xcltapestry

Golang学习笔记之HTTPS

一:HTTPS介绍 HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议,是一个安全通信通道,它基于HTTP开发用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版,是使用TLS/SSL加密的HTTP协议。 HTTP和HTTPS的区别 • HTTPS是加密传输协议,HTTP是名文传输协议 • HTTPS需要用到SSL证书,而HTTP不用 • HTTPS比HTTP更加安全,对搜索引擎更友好,利于SEO • HTTPS标准端口443,HTTP标准端口80 • HTTPS基于传输层,HTTP基于应用层 • HTTPS在浏览器显示绿色安全锁,HTTP没有显示 二、HTTPS证书 正式发布的时候,...阅读全文

博文 2018-12-22 18:34:43 学生黄哲

Golang同步机制的实现

Golang的提供的同步机制有sync模块下的Mutex、WaitGroup以及语言自身提供的chan等。 这些同步的方法都是以runtime中实现的底层同步机制(cas、atomic、spinlock、sem)为基础的, 本文主要探讨Golang底层的同步机制如何实现。 1 cas、atomic cas(Compare And Swap)和原子运算是其他同步机制的基础, 在runtime/asm_xxx.s(xxx代表系统架构,比如amd64)中实现。amd64架构的系统中, 主要通过两条汇编语句来实现,一个是LOCK、一个是CMPXCHG。 LOCK是一个指令前缀,其后必须跟一条“读-改-写”的指令,比如INC、XCHG、CMPXCHG等。 这条指令对CPU缓存的访问将是排他的。 CMP...阅读全文

博文 2017-06-21 04:44:00 无心之祸

Golang 1.3 sync.Mutex 源码解析

sync包给我们方便的提供了一组同步语意相关的标准库,下面我们重点看下sync.Mutex互斥是如何实现的。 我本机源码安装路径在/usr/local/go,这sync.Mutex(golang 1.3版本)涉及到的相关代码主要有: /usr/local/go/src/pkg/sync/mutex.go /usr/local/go/src/pkg/sync/runtime.go /usr/local/go/src/pkg/runtime/sema.goc 首先是mutex.go: // A Mutex is a mutual exclusion lock. // Mutexes can be created as part of other structures; // the zero v...阅读全文

博文 2014-10-17 23:16:51 毛, 剑

golang 信号

//有时候,我们希望 Go 能智能的处理 Unix 信号。例如,我们希望当服务器接收到一个 SIGTERM 信号时能够自动关机,或者一个命令行工具在接收到一个 SIGINT 信号时停止处理输入信息。这里讲的就就是在 Go 中如何通过通道来处理信号。 package main import "fmt" import "os" import "os/signal" import "syscall" func main() { //Go 通过向一个通道发送 os.Signal 值来进行信号通知。我们将创建一个通道来接收这些通知(同时还创建一个用于在程序可以结束时进行通知的通道)。 sigs := make(chan os.Signal, 1) done := make(chan bool, 1) ...阅读全文

博文 2015-04-21 03:00:00 benlightning

Go 实现安全 cookie

我第一次学习 Go 的时候,已经有了一定的 Web 开发经验,但是直接使用 cookie 的经验还比较少。我之前是用 Rails 的,在 Rails 里面如果要读/写 cookie,并不需要自己去实现所有的安全措施。 如你所见,Rails 偏向于通过默认配置就将大部分事情搞定。你不必去设置 CSRF 反制措施,或者做任何特殊操作来加密 cookie。在较新版本的 Rails 中这一切都默认帮你做好了。 用 Go 开发就完全不同了,这些事情并没有默认帮你做好。所以当你想使用 cookie 时,了解所有这些安全措施就很重要:为什么存在有这些措施,以及如何在我们自己的程序中使用它们。本文旨在帮助你了解上述知识点。 > 本文目的不在于引发关于哪条路线更好的讨论/争论。两者都有各自的优点,这里不去比较...阅读全文

博文 2018-11-21 09:44:27 polaris

golang 并发编程之生产者消费者

golang 最吸引人的地方可能就是并发了,无论代码的编写上,还是性能上面,golang 都有绝对的优势 学习一个语言的并发特性,我喜欢实现一个生产者消费者模型,这个模型非常经典,适用于很多的并发场景,下面我通过这个模型,来简单介绍一下 golang 的并发编程 go 并发语法 协程 go 协程是 golang 并发的最小单元,类似于其他语言的线程,只不过线程的实现借助了操作系统的实现,每次线程的调度都是一次系统调用,需要从用户态切换到内核态,这是一项非常耗时的操作,因此一般的程序里面线程太多会导致大量的性能耗费在线程切换上。而在 golang 内部实现了这种调度,协程在这种调度下面的切换非常的轻量级,成百上千的协程跑在一个 golang 程序里面是很正常的事情 golang 为并发而生,启...阅读全文

博文 2018-03-11 19:34:41 hatlonely

Go语言daemon启动的解决方法.linux平台

1、使用nohup ./commond & 这种方法最简单.2、这种方法可以使用信号.

package main import ( "fmt" "os" "os/signal" "syscall" "time" ) func main() { if os.Getppid() != 1 { args := append([]string{os.Args[0]}, os.Args[1:]...) os.StartProcess(os.Args[0], args, &os.ProcAttr{Files: []*os.File{os.Stdin, os.Stdout, os.Stderr}}) return } go func() { var...阅读全文

博文 2016-02-26 12:00:01 fyxichen

Ubuntu 配置 Go 语言开发环境(Sublime Text 3)

Sublime Text 3安装 gosublime 下载 Sublime Text飞机票:http://www.sublimetext.com/3 安装 gosublime首先,我们需要安装 Sublime Text 的 Package Control 功能,在打开软件后,按下快捷键 Ctrl+`,(`这个符号为英文半角模式下,按下 Tab 键上方、数字键1左边的那个按键),此时会打开一个命令窗口,复制并输入以下内容,最后回车: import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_op...阅读全文

博文 2014-12-30 08:00:01 Kriry

2019公链项目实战 区块链公链项目实战 golang公链项目实战(视频+源码)

任务1:001 – 内容介绍.mp4任务2:002 -Block结构.mp4任务3:003 – 根据区块数据生成区块HASH.mp4任务4:004 – CreateGenesisBlock.mp4任务5:005 – Blockchain结构.mp4任务6:006 – 添加新的区块.mp4任务7:007 – ProofOfWork框架.mp4任务8:008 – 工作量证明算法分析.mp4任务9:009 – target移位处理.mp4任务10:010 – 挖矿算法完整实现.mp4任务11:011 – 判断区块Hash的有效性.mp4任务12:012 – 课程目标.mp4任务13:013 – 区块的序列化和反序列化.mp4任务14:014 – boltdb数据库的创建或者打开.mp4任务15:0...阅读全文

博文 2019-03-12 20:34:43 java20192019

Golang:有趣的 channel 应用

转自 http://www.cnblogs.com/luckcs/articles/2588200.html 严格意义上说,本文是我另外一片文章《Golang Funny: Play with Channel》的中文版本。不过,毕竟是用中文当母语的,所以就不翻译了,重新按照那个内容写过吧。 channel 是 golang 里相当有趣的一个功能,在我使用 golang 编码的经验里,大部分事件都会是在享受 channel 和 goroutine 配合的乐趣。所以本文主要介绍 channel 的一些有趣的用法。 这里有 Oling Cat 翻译的Go编程语言规范里关于 channel(信道)的描述: 信道提供了一种机制,它在两个并发执行的函数之间进行同步,并通过传递(与该信...阅读全文

golang 椭圆曲线加密使用ecdsa

非对称加密算法有RSA、ECDSA,对极大整数做因数分解的难度决定了RSA算法的可靠性,ECDSA为椭圆曲线加密算法,是基于椭圆方程公式,所以安全性要高于RSA。 这里说下使用ecdsa做签名和校验,并不讲原理; golang封装的ecdsa目前只有用私钥加密,公钥做校验,没有解密环节;所以目前可以应用于数字签名; 以下为封装: /** 通过一个随机key创建公钥和私钥 随机key至少为36位 */ func getEcdsaKey(randKey string) (*ecdsa.PrivateKey, ecdsa.PublicKey, error){ var err error var prk *ecdsa.PrivateKey var puk ecdsa.PublicKey var cu...阅读全文

Docker 1.8.0增加Content Trust,容器安全性提升

![alt 文本](http://blog.tenxcloud.com/wp-content/uploads/2015/08/docker1.8.01.jpg) Docker这家初创公司,让Docker在Linux容器中构建和部署应用越来越受欢迎,最近宣布了一项行特性,Docker在其最新版本的开源产品中增添Content Trust,这项功能将为使用容器的人们提供一个额外的安全层。 Docker Content Trust ,现在可以在Docker1.8.0版本中获取,它允许开发者在Docker Hub上下载container images之前检查其合法性。此项措施有望确保企业在利用Docker在自己的基础设施上部署应用时,不会有任何潜在的危险。 这对Docker来说异常...阅读全文

golang template模版如何判断变量是否存在/指针是否为空

golang template模版如何判断变量是否存在/指针是否为空 也就是语法{{if .Var}}的含义。 其含义是变量Var是否为真值,判断逻辑根据变量的类型,和golang语言本身判断变量是否为真的逻辑是一样的。 数字型:值不等于零 字符串:不是空串 指针类型:不为空 布尔类型:为True值 比较常用的是指针类型是否为空(对于其他基本类型来说,可以通过简单的比较运算来完成),语义上说就是属性是否存在,举个例子来说: package main import ( "os" "log" "text/template" ) type Address struct { City string Street string Apt int } func main() { templateText ...阅读全文

博文 2020-01-06 05:32:43 CodingCode

Golang并发工具包之信号量(Semaphore)

Go虽然天生的支持高并发,但是有些场景下我们还是需要控制协程同时并发处理的数量,在Java的juc包中已经提供了类似功能的工具类-信号量(Semaphore),它是基于AQS实现的。Go的SDK中并没有提供类似的API,我们通过goroutine和channel实现一个简单的Semaphore,并提供:获取许可(Acquire())、指定时间内获取许可(TryAcquireOnTime)、释放许可(Release())等方法,具体实现如下: type Semaphore struct { permits int // 许可数量 channel chan int // 通道 } /* 创建信号量 */ func NewSemaphore(permits int) *Semaphore { re...阅读全文

博文 2019-12-16 03:32:39 _男猪脚

Golang程序中如何监听并处理信号?

Golang程序中如何监听并处理信号? 当运行一个终端程序或守护(daemon)进程时,经常需要响应来自用户或系统的信号来实现诸如:退出/重启/清理(clean up) 等工作,又或者利用信号通知机制实现一些业务功能,如:更新缓存、发送通知。。。 以下例子将会演示在 golang 中如何监听并处理信号: package main import ( "fmt" "os" "os/signal" "syscall" "time" ) const FILENAME = "go-example.txt" func main() { SignalHandler() CreateFile() for { fmt.Println("- Sleeping") time.Sleep(10 * time.Sec...阅读全文

博文 2018-09-21 09:34:40 字节幂

Golang菜鸟教程-学习笔记-Day2

Golang菜鸟教程-学习笔记-Day2 大纲 常量 常量 常量在运行时,不会被修改 常量中的数据类型可以是布尔型,数字型,字符串类型 常见的定义形式 const indetifier [type] = value 常量的应用 package main import "fmt" func main() { const LENGTH int = 10 const WIDTH int = 5 var area int const a,b,c = 1, false, "str" //多重赋值 area = LENGTH * WIDTH fmt.Printf("area is %d\n", area) println(a,b,c) fmt.Println(a,b,c) } 常量作为枚举 packag...阅读全文

博文 2019-01-29 00:34:43 笑吧小鸟

Gevent中信号量的使用

  greenlet间同步方法:信号量   1.为什么引入信号量;   2.gevent信号量有哪些;   3.编程实现。   为何引入信号量   信号量是一个允许Greenlet相互合作,限制并发访问或运行的低层次的同步原语。   什么是信号量   1.信号量有两个方法   acquire和release。在信号量是否已经被 acquire或release,和拥有资源的数量之间不同,被称为此信号量的范围。如果一个信号量的范围已经降低到0,它会阻塞acquire操作直到另一个已经获得信号量的greenlet作出释放。   2.Gevent信号量   1)Semaphore(也被称为锁);   2)BoundedSemaphor...阅读全文

OTP一次性动态密码工具实现

对于企业内部信息安全或行业安全合规性需求,3A认证、授权、审计是必要的基础安全审查项。认证安全机制要求双因素认证,从技术要可使用基于数字证书和OTP来实现满足。 OTP分为两种技术算法HOTP(基于次数 RFC 4226)和TOTP(基于时间 RFC 6238)标准。而目前开源的Google Authenticator工具很好的实现了OTP移动端APP的使用与密钥管理。 为了在企业运维安全加固需求可以开发自己的后端的OTP认证服务器和统一用户认证管理中心,结合Google Authenticator工具快速整合用户的移动端动态密钥的生成。 可适用的双因素场景:网络设备的认证(Radius协议)、企业内部开发的应用系统认证集成。 AuthOTP golang实现google authencat...阅读全文

博文 2019-01-07 00:34:48 Xiao_Yang

基于Consul的分布式锁实现

我们在构建分布式系统的时候,经常需要控制对共享资源的互斥访问。这个时候我们就涉及到分布式锁(也称为全局锁)的实现,基于目前的各种工具,我们已经有了大量的实现方式,比如:基于Redis的实现、基于Zookeeper的实现。本文将介绍一种基于Consul 的Key/Value存储来实现分布式锁以及信号量的方法。 http://blog.didispace.com/spring-cloud-consul-lock-and-semphore-2...阅读全文

Bytom国密网说明和指南

比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockc... 国密算法是指国家密码管理局制定的自主可控的国产算法,包括一系列密码学算法:SM1、SM2、SM3、SM4、SM7、SM9、以及祖冲之算法。最常用的三种商用密码算法是 SM2椭圆曲线公钥密码算法、SM3密码杂凑算法以及 SM4分组密码算法。 其中,SM2 算法属于椭圆曲线公钥密码系统,相较于 RSA 公钥密码系统,这种新型的公钥密码系统拥有加解密速度更快,使用的密钥更短的优点。SM2算法密钥长度为192至256位长度的安全性就能达到 RSA 算法2048至4096位密钥长度的安全要求。SM2的优异性能取决于求解椭圆曲线...阅读全文

博文 2018-10-26 08:34:40 比原链Bytom

golang-MD5

什么是MD5? MD5:为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321. MD5算法具有以下特点: 1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。 2、容易计算:从原数据计算出MD5值很容易。 3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。 4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。 MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。 下面是在goalng下如何实现md...阅读全文

剖析Go的读写锁

源码级剖析Go标准库中的sync.RWMutex。 概述RWMutex,读写锁,又称“读写互斥锁”。读写锁简单来说就是可以由任意数量的读者同时使用,或者只由一个写者使用的锁。 读写锁和互斥量(Mutex)类似,但是比起互斥量有着更高的并行性,它允许多个读者同时读取,因此有一些特殊的应用场景。在并发编程的很多场景下,数据的读取可能比写入更加频繁,这时就要允许多个线程同时读取一块内容。 用例Go中,RWMutex的零值是一个未加锁的互斥量。 RWMutex使用起来相对比较简单,这里举一个简单的例子: 12345678910111213141516171819202122232425262728293031package mainimport ( "fmt" "sync" "time")func ...阅读全文

博文 2017-09-28 03:32:13 zablog.me

基于Consul的分布式信号量实现

本文将继续讨论基于Consul的分布式锁实现。信号量是我们在实现并发控制时会经常使用的手段,主要用来限制同时并发线程或进程的数量,比如:Zuul默认情况下就使用信号量来限制每个路由的并发数,以实现不同路由间的资源隔离。http://blog.didispace.com/spring-cloud-consul-lock-and-semphore-2...阅读全文

一个信号量与定时器的例子(Golang)

程序可用来定时执行一些任务,并通过信号量处理,在被强制中断时,也能做相应警告及清理处理. package main //信号量与定时器 //author: Xiong Chuan Liang //date: 2015-2-25 import "fmt" import "os" import "os/signal" import "time" func main() { sigs := make(chan os.Signal, 1) done := make(chan bool, 1) signal.Notify(sigs, os.Interrupt, os.Kill) go func() { sig := <-sigs switch sig { case os.Interrupt: fmt....阅读全文

博文 2015-06-17 20:23:11 xcltapestry

golang-MD5

什么是MD5? MD5:为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321. MD5算法具有以下特点: 1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。 2、容易计算:从原数据计算出MD5值很容易。 3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。 4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。 MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。 下面是在goalng下如何实现md...阅读全文

golang的httpserver优雅重启

去年在做golangserver的时候,内部比较头疼的就是在线服务发布的时候,大量用户的请求在发布时候会被重连,在那时候也想了n多的方法,最后还是落在一个github上的项目,facebook的一个golang项目grace,那时候简单研究测试了一下可以就直接在内部使用了起来,这段时间突然想起来,又想仔细研究一下这个项目了。 从原理上来说是这样一个过程: 1)发布新的bin文件去覆盖老的bin文件 2)发送一个信号量,告诉正在运行的进程,进行重启 3)正在运行的进程收到信号后,会以子进程的方式启动新的bin文件 4)新进程接受新请求,并处理 5)老进程不再接受请求,但是要等正在处理的请求处理完成,所有在处理的请求处理完之后,便自动退出 6)新进程在老进程退出之后,由init进程收养,但是会继...阅读全文

博文 2018-03-05 14:22:15 helight