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

Golang计算MD5

Golang计算MD5 1.单向加密 什么是单向加密算法。简而言之就是不可解密的加密方法,也叫作非可逆加密。这些学术 解释都不用管它,反正就是一群数学家老爷爷通过各种证明得到的一种方法,用这种方法加密 过的东西,地球上现有的人类在有限的时间内是无法解密的,包括加密者自己。既然加密者自己 都无法解密,那这乖僻的加密算法有个毛用阿?哪些场景需要这种有去无回的加密方式呢? 这里先了解下单向加密的特征: 首先,不可解密性在上面已经提到了,目的就是掩藏明文。其次单向加密算法的另外两个特征 使得它更接地气,第一是任意两段明文数据,加密以后的密文不能是相同的; 第二是任意一段明文数据,经过加密以后,其结果必须永远是不变的。这样当我们需要表征一段 唯一的内容,但是有不想别人知道该段内容时或者仅仅是为一个内容...阅读全文

博文 2014-12-30 12:00:01 YangJunjie

《Golang 入门系列一》安装和IDE介绍

前言:本文主要介绍Golang的安装和Golang的编辑器的使用,以及我们的第一个经典案例:Hello World. 一、为什么是Golang Golang 又称为 Go,是由 Google 开发的一种开源的、编译型的、静态类型的编程语言。它具有以下特性: Go原生支持并发(Concurrency),因此非常适合编写多线程程序。 Golang 是编译型语言。源代码会被编译成可执行的二进制文件。 Go是静态类型的语言,它的类型系统没有层级。因此用户不需要在定义类型之间的关系上花费时间,这样感觉起来比典型的面向对象语言更轻量级。 二、Golang开发工具包的选择 我们可以根据自己的机器操作系统选择相应的开发工具包,比如你的是Windows 64位的,就选择windows-amd64的工具包;是L...阅读全文

博文 2017-12-10 15:03:07 IT--小哥

goproxy和msocks简介

goproxy是我个人写的,和shadowsocks同类的软件。当然,在设计之初我完全不知道shadowsocks的存在,goproxy的最初目标也不是成为shadowsocks的同类。只是我一直无法实现一个可靠的,能够达成目标的系统。最后想,那这样吧,我找一个跳一跳能够够到的苹果。大幅简化的结果就是goproxy——后来我才知道shadowsocks。 shadowsocks的基本原理 shadowsocks的基本概念,就是利用某种不同于SSL的协议,将本地的socks数据流转发到远程。这个协议,在默认版本中是一个凯撒变换,后来有了aes等加密算法。goproxy也采用了类似的做法,同样支持aes等加密算法。在每次连接时,客户端先用加密通道连接服务器端,然后完成整个连接通路。这样的设计鲁棒...阅读全文

博文 2014-10-06 06:06:32 shell909090

Golang 字符串比较,一个不大不小的坑

背景是酱紫的,对一串字符串做了AES解密后得到的密文,从密文中截取了签名,和之前存在数据库里的签名进行比较验签的时候,一直失败,打印两个签名值出来看,一模一样... Google后在一篇博客里发现了这句'String values are compared byte-wise (lexically).' and 'zero value for string is "" ',大概的意思就是,string 的比较实际上是比较对应的byte数组的,之后打印了两个签名的byte值,玄机显现,密文中的签名值最后有7,7,7,7,7]这样的值,目测是进行AES加密的时候加密算法补位导致的... 解决办法,根据数据库中签名值的长度对密文中的签名做了截取,然后比较,妥了... 推荐阅读:AES 图文详解,G...阅读全文

博文 2015-08-06 16:00:01 冰河垂钓

golang gzip 压缩bytes 和解压

func main() { size := 1 datasSlice := make([][]byte, size) for i := 0; i < size; i++ { datasSlice[i], _ = ioutil.ReadFile("images/" + strconv.Itoa(i+1) + ".jpg") fmt.Println("raw size:", strconv.Itoa(i)+".jpg :", len(datasSlice[i])) } var b bytes.Buffer w := gzip.NewWriter(&b) defer w.Close() for i := 0; i < size; i++ { w.Write(datasSlice[i]) } w.F...阅读全文

博文 2014-10-04 19:27:08 咖啡伴侣

golang zip 压缩,解压(含目录文件)

每天学习一点go src。 今天学习了zip包的简单使用,实现了含目录的压缩与解压。 写了两个方法,实现了压缩、解压。 package ziptest import ( "archive/zip" "io" "os" "strings" ) //压缩文件 //files 文件数组,可以是不同dir下的文件或者文件夹 //dest 压缩文件存放地址 func Compress(files []*os.File, dest string) error { d, _ := os.Create(dest) defer d.Close() w := zip.NewWriter(d) defer w.Close() for _, file := range files { err := compress...阅读全文

博文 2016-07-06 00:00:00 xiaofengshuyu

golang shadowsock 安装部署

最近一直在用ss但是python的并发并不是很好所以我改换成golang 的ss了。代码下载 编译好的直接下载 server配置(跟官方的不一样): 新建文件夹 进入文件夹后新建文件:config.json pid.cfg start.sh test.log config 是server运行的配置文件 pid.cfg 是server运行的进程号记录的位置 start.sh 是服务启动时候运行的脚本 test.log 这个是排查故障的时候用的错误记录文件 config.json 12345678{ "server":"XXX.com", //服务器ip地址或者绑定的域名 "server_port":8088, // 运行的端口 "local_port":1080, //本地运行端口 "pass...阅读全文

博文 2015-03-09 12:02:02 jianyingLi

AlphaGo的论文的译文,关于深度神经网络,蒙特卡洛树搜索:Mastering the game of Go with deep neural networks and tree search

前言: 围棋的英文是 the game of go,标题翻译为:《用深度神经网络和树搜索征服围棋》。译者简介:大三,211,计算机科学与技术专业,平均分92分,专业第一;英文水准:托福 103分,GRE v158 + q167 + AW3.5。为了更好地翻译此文,笔者查看了很多资料。笔者翻译此论文已尽全力,不足之处希望读者指出。 在AlphaGo的影响之下,全社会对人工智能的关注进一步提升。在笔者考完GRE的当天,3月12日,AlphaGo 第三次击败李世石。在3月15日总比分定格为4:1,随后AlphaGo的围棋排名世界来到第二。 论文的英文原文点击这里拜读 编者按:吐槽CSDN的后台服务器,在我用LaTeX编写的公式结尾都加上了一个“|”,比如:公式公式。这真是一个醉人的Bug。2014...阅读全文

博文 2016-03-22 19:00:01 u013390476

Win7配置Go环境

最近想学习下Go语言,先从最基本的Hello Go开始,搭建Go开发环境 一、下载Go包 由于Go官网国内访问经常有问题,可以从国内的镜像下载: http://www.golangtc.com/ 二、配置环境变量 1、将Go的压缩包解压到任意目录,我的为D:\SDE\go 2、 配置GoRoot路径 3、配置Path路径 4、配置Go程序工作目录GOPATH 配置完成以上环境变量后,我们可以在命令行窗口中查看配置是否成功,这里我使用cygwin 输入go version命令 出现Go的版本号则说明配置成功! 三、在GOPATH配置的工作目录中新建main.go文件,编写如下代码 1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 func main() {...阅读全文

博文 2015-05-15 03:00:01 cyuan

Golang加密系列之AES

这里我们只讨论使用aes加密算法,pkcs7padding,CBC模式模式进行加密。 加密代码: func Encrypt(plantText, key []byte) ([]byte, error) { block, err := aes.NewCipher(key) //选择加密算法 if err != nil { return nil, err } plantText = PKCS7Padding(plantText, block.BlockSize()) blockModel := cipher.NewCBCEncrypter(block, key) ciphertext := make([]byte, len(plantText)) blockModel.CryptBlocks(c...阅读全文

博文 2015-09-02 11:00:01 君子藏锋

golang zlib 压缩,解压缩

package main import ( "bytes" "compress/zlib" "fmt" "io" "os" ) //进行zlib压缩 func DoZlibCompress(src []byte) []byte { var in bytes.Buffer w := zlib.NewWriter(&in) w.Write(src) w.Close() return in.Bytes() } //进行zlib解压缩 func DoZlibUnCompress(compressSrc []byte) []byte { b := bytes.NewReader(compressSrc) var out bytes.Buffer r, _ := zlib.NewReader(b) io...阅读全文

博文 2015-03-10 03:00:00 zhangqingping

geohash算法以及求最邻近区域的点-golang

geohash算法以及求最邻近区域的点, 对这两个算法封装成了golang package, 写LBS服务程序的时候有用。https://github.com/gansidui/geohashhttps://github.com/gansidui/nearest package main import ( "fmt" "github.com/gansidui/geohash" ) func main() { latitude := 39.92324 longitude := 116.3906 precision := 5 hash, box := geohash.Encode(latitude, longitude, precision) fmt.Println(hash) fmt.Prin...阅读全文

博文 2014-12-30 13:00:01 bluezwt

golang中的加密方式总结

缘起 因为项目中使用mysql的AES_DECRYPT方法,欲使用golang实现该方法, 但是研究了半天没明白怎么回事, 最后才发现golang当前默认支持CBC的方式,但是mysql当前使用的是ECB模式, 所以需要使用者分组分块加密,特总结一下golang中的各个加密算法 关于密码学 当前我们项目中常用的加解密的方式无非三种.对称加密, 加解密都使用的是同一个密钥, 其中的代表就是AES非对加解密, 加解密使用不同的密钥, 其中的代表就是RSA签名算法, 如MD5、SHA1、HMAC等, 主要用于验证,防止信息被修改, 如:文件校验、数字签名、鉴权协议 AES AES:高级加密标准(Advanced Encryption Standard),又称Rijndael加密法,这个标准用来替代...阅读全文

博文 2018-10-20 19:34:42 pengj

golang tar gzip 压缩,解压(含目录文件)

tar是用于文件归档,gzip用于压缩。仅仅用tar的话,达不到压缩的目的。我们常见的tar.gz就是用gzip压缩生成的tar归档文件。 go实现tar压缩与解压与zip类似,区别在于tar需要使用gzip进行处理。tar与zip的Header不同。代码如下 package tartest import ( "archive/tar" "compress/gzip" "io" "os" "strings" ) //压缩 使用gzip压缩成tar.gz func Compress(files []*os.File, dest string) error { d, _ := os.Create(dest) defer d.Close() gw := gzip.NewWriter(d) defe...阅读全文

博文 2016-07-08 08:00:00 xiaofengshuyu

go语言中椭圆曲线加密算法的使用

椭圆曲线加密算法,使用golang的实现! 最近在看一些关于比特币的东西,里边有个椭圆曲线加密算法,查了下,感觉很不错! 与经典的RSA,DSA等公钥密码体制相比,椭圆密码体制有以下优点: 1.安全性高:有研究表示160位的椭圆密钥与1024位的RSA密钥安全性相同。 2.处理速度快:在私钥的加密解密速度上,ecc算法比RSA、DSA速度更快。 3.存储空间占用小。 4.带宽要求低. 椭圆曲线密码体制是目前已知的公钥体制中,对每比特所提供加密强度最高的一种体制。解椭圆曲线上的离散对数问题的最好算法是Pollard rho方法,其时间复杂度为,是完全指数阶的。其中n为等式(2)中m的二进制表示的位数。当n=234, 约为2117,需要1.6x1023 MIPS 年的时间。而我们熟知的RSA所利...阅读全文

博文 2016-10-09 07:00:05 IrvinYoung

常见的加密算法

在项目开发过程中,当我们利用数据库存储一些关于用户的隐私信息,诸如密码、帐户密钥等数据时,需要加密后才向数据库写入。这时,我们需要一些高效地、简单易用的加密算法,当我们向数据库写数据时加密数据,然后把加密后的数据存入数据库;当需要读取数据时,从数据库把加密后的数据取出来,再通过算法解密。 常用的加密算法有Base64、MD5、AES和DES。 Base64 Base64是一种任意二进制到文本字符串的编码方法,常用于在URL、Cookie、网页中传输少量二进制数据。 首先使用Base64编码需要一个含有64个字符的表,这个表由大小写字母、数字、+和/组成。采用Base64编码处理数据时,会把每三个字节共24位作为一个处理单元,再分为四组,每组6位,查表后获得相应的字符即编码后的字符串。编码后的...阅读全文

博文 2017-06-25 09:07:21 witchiman

go 语言zip压缩包 读取

今天看了一下go语言的zip压缩包的操作。 每天看一点go的包,动手写几个例子感觉还是有点收获的,多动手才能有所进步。 先附上代码。testzip.go package main import ( "archive/zip" "bufio" "fmt" "io" "os" ) func main() { rc, err := zip.OpenReader("test/hello.zip") if err != nil { defer rc.Close() } for _, _file := range rc.File { fmt.Println(_file.Name) f, _ := _file.Open() desfile, err1 := os.OpenFile(_file.Name, ...阅读全文

博文 2015-03-03 14:00:00 king1076

golang实现wav文件转换为mp3文件

本文并非golang内置的库进行wav转mp3,而是通过golang调用Linux的lame命令进行转换。 在Linux环境下,默认情况是没有安装lame,所以首先需要安装lame(个人保存下载文件:http://pan.baidu.com/s/1qWp71G4#path=%252Fsharesoft%252Flinux%252Flame)。 Linux lame 安装及使用: 1. 解压lame压缩文件:tar -vzxf lame-3.98.4.tar.gz 2. 转到解压后的文件目录,依次执行:“./configure --enable-shared”,“make”,“make install” 3. lame使用方法:lame xxx.wav xxx.mp3 (这样就能把xxx.wa...阅读全文

博文 2015-07-11 03:00:02 hezhixiong

windows 下 LITE IDE go lang 安装配置使用

下载地址 liteide:http://sourceforge.net/projects/liteide/files windows 环境 下载下来是个压缩包,解压缩 作者:风来了.呆狐狸 配置 目录说明 E:\go E:\go\go #go.bat文件存放目录,该目录就是GO lang ZIP 压缩包解压缩后的目录,GO 环境核心目录 E:\go\GOPATH #扩展包或下载目录 E:\go\Dev #开发项目存储目录 GO 环境配置请看 http://blog.csdn.net/fenglailea/article/details/41444203 打开liteide 目录下 bin文件夹,liteide.exe 右击创建桌面快捷方式。 然后 双击 启动, 菜单栏 查看-> 管理GOPA...阅读全文

博文 2014-12-05 01:00:02 wljk506

解决go get无法下载被墙的包

1、使用gopm代替go下载 //使用gopm(Go Package Manager)代替go下载,是go上的包管理工具,十分好用 //1. 下载安装gopm go get -u github.com/gpmgo/gopm //2. 使用gopm安装被墙的包 gopm get github.com/Shopify/sarama 2、使用镜像仓库 golang 在 github 上建立了一个镜像库,如 https://github.com/golang/net 即是 https://golang.org/x/net 的镜像库.获取 golang.org/x/net 包(其他包类似),其实只需要以下步骤: mkdir -p $GOPATH/src/golang.org/x cd $GOPATH/...阅读全文

博文 2019-03-03 11:34:42 yongfutian

go语言实现7大排序算法

package main import ( "fmt" "math/rand" "time" // "os" // "os/signal" ) const ( num = 100000 rangeNum = 100000 ) func main() { randSeed := rand.New(rand.NewSource(time.Now().Unix() + time.Now().UnixNano())) var buf []int for i := 0; i < num; i++ { buf = append(buf, randSeed.Intn(rangeNum)) } t := time.Now() //冒泡排序 // maopao(buf) // 选择排序 // xuanze(b...阅读全文

博文 2017-03-25 04:00:35 徐学良

JAVA与GO语言实现的RSA加密算法的互通

之前写过C#与JAVA语言RSA算法的互通程序,后来又找了找JAVA与GO语言互通的RSA算法,发现没有现成的,经过探索后,成功实现了两者的互通,现在分享如下: 注意:1 .两者的公钥和私钥是不能混用的,即JAVA的公私钥是不能直接用于GO的,反过来也不行。 2.下面的JAVA源码的解密思想是: (1)将java产生的公钥pubKey_from_java复制给Go (2)Go利用java的公钥加密一段信息,data,err=RsaEncrypt(" hello ",pubKey_from_java) (3)java利用自己的私钥privKey_from_java解密这段信息data,已验证通过。 3. Go源码解密的思想与上述同理,不再赘述。直接上源代码。 JAVA实现RSA的源码如下: p...阅读全文

博文 2016-03-08 14:00:01 igoqhb

linux环境下golang安装第三方库的时候出错的决办法

1.错误描述 使用如下方式安装beego的时候出错 go get github.com/astaxie/beego 错误信息: go install unicode/utf8: open /opt/go/pkg/linux_amd64/unicode/utf8.a: permission denied go install unicode: open /opt/go/pkg/linux_amd64/unicode.a: permission denied go install math: open /opt/go/pkg/linux_amd64/math.a: permission denied go install sort: open /opt/go/pkg/linux_amd64/so...阅读全文

博文 2015-05-01 17:00:00 mybc724

Go与Android的CRC32/Adler32算法使用

Packet在网络传输中必须要考虑万一数据损坏的情况,CRC32与Adler32都是最常用的算法。 Go与Android都内置好了这两种算法的实现,直接使用就好。 Go的调用方式如下: // 校验算法(ADLER32/CRC32)例子 //author: Xiong Chuan Liang //date: 2015-4-12 package main import ( "fmt" "hash/adler32" "hash/crc32" ) var ADLER32 int = 0 var CRC32 int = 1 func main() { for _, v := range []string{"aaaaaaaaaa", "3333sdfsdffsdffsd", "234esrewr2343...阅读全文

博文 2015-06-18 09:09:22 xcltapestry

golang中archive/tar包用法

tar包实现对tar归档文件的访问,旨在覆盖大部分的类型,包括GNU和BSD产生的tars。 常量 const ( // Types TypeReg = '0' // 普通文件 TypeRegA = '\x00' // 普通文件 TypeLink = '1' // 硬连接 TypeSymlink = '2' // 符号连接,软连接 TypeChar = '3' // 字符设备节点 TypeBlock = '4' // 块设备节点 TypeDir = '5' // 目录 TypeFifo = '6' // fifo node TypeCont = '7' // 保留项 TypeXHeader = 'x' // 可扩展头部 TypeXGlobalHeader = 'g' // 全局扩展头 Typ...阅读全文

博文 2015-11-10 11:00:02 chenbaoke

常见哈希函数FNV和MD5

介绍哈希函数之前,先说一下Golang的哈希结果。在包/hash/下的hash.go文件,定义了哈希函数的接口。所有哈希函数都要实现此接口。 // Hash is the common interface implemented by all hash functions. type Hash interface { // Write (via the embedded io.Writer interface) adds more data to the running hash. // It never returns an error. io.Writer // Sum appends the current hash to b and returns the resulting sli...阅读全文

GO与Java的DES ECB加解密算法互换

Java默认DES算法使用DES/ECB/PKCS5Padding工作方式,在GO语言中因为ECB的脆弱性,DES的ECB模式是故意不放出来的,但实际情况中有时我们并不需要那么安全,以下代码完成与java默认DES算法的互通,为了能更好的与各种语言互通,建议在java中还是明确指明工作模式,如:DES/CBC/PKCS5Padding package main import ( "bytes" "crypto/des" "errors" "log" ) func main() { log.SetFlags(log.LstdFlags | log.Lshortfile) log.Println("程序开始....") key := []byte{0xD5, 0x92, 0x86, 0x02, ...阅读全文

博文 2015-10-28 20:00:06 scybs

Go语言 Go加密之DES

接着RSA加密解密,我们继续来看看DES的加密解密 一、DES简介 DES(Data Encryption Standard)是对称加密算法,也就是加密和解密用相同的密钥。其入口参数有三个:key、data、mode。key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。实际运用中,密钥只用到了64位中的56位,这样才具有高的安全性。DES 的常见变体是三重 DES,使用 168 位的密钥对资料进行三次加密的一种机制;它通常(但非始终)提供极其强大的安全性。如果三个 56 位的子元素都相同,则三重 DES 向后兼容 DES。 DES加密,涉及到加密模式...阅读全文

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

你也能写个 Shadowsocks

本文将教你从0写一个Shadowsocks,无需任何基础,读完本文你就能完成一个轻量级、高性能的 Shadowsocks 代替品。 我们暂且把最终完成的项目叫做 Lightsocks,如果你很急切地想看到结果,可以先体验本文最终完成的项目 Lightsocks ,也可以下载阅读源码。 认识 Shadowsocks Shadowsocks 是一个能骗过防火墙的网络代理工具。它把要传输的原数据经过加密后再传输,网络中的防火墙由于得不出要传输的原内容是什么而只好放行,于是就完成了防火墙穿透,也即是所谓的“翻墙”。 在自由的网络环境下,在本机上访问服务时是直接和远程服务建立连接传输数据,流程如图: 但在受限的网络环境下会有防火墙,本机电脑和远程服务之间传输的数据都必须通过防火墙的检查,流程如图:如果...阅读全文

博文 2017-11-05 06:04:50 吴浩麟

golang使用jwt

0x0 什么是jwt JWT是JSON Web Token的缩写,可以用作授权认证。传统的授权认证一般采用session,由于session存储在服务端,加大了服务端的计算量, 而且多台服务器之间存在着session同步的问题。而JWT存储在客户端,不仅减少了服务端的计算量,而且天生支持分布式。 0x1 jwt的结构 JWT由三部分组成: Header:头部,表明类型和加密算法 Claims:声明,即载荷(承载的内容) Signature:签名,这一部分是将header和claims进行base64转码后,并用header中声明的加密算法加盐(secre)后构成。 即: tmpstr = base64(header)+base64(claims) signature = encrypt(tm...阅读全文

博文 2017-12-17 22:00:00 xdao

Go的依赖管理

最近使用Go语言写了一个线上Session复制工具。对Go工程的依赖管理感到很是不满意。不满意的原因有以下几点。 过度依赖仓库,甚至将仓库的网址作为命名空间。 不能支持指定版本或者tag。 根据对Go的依赖管理的观察,可以观察到以下几点。 在执行go get的时候会扫描import的部分 将依赖拉取到src目录下面,并进行前一个步骤 当所有的依赖都拉取完成后,直接使用广度优先搜索算法搜索依赖图并进行编译。 那么解决方法就非常简单了。 设计一个配置文件,用来指定每个项目的branch或tag 将所有项目从仓库牵出到指定的brnach或tag上 扫描所有文件的import部分,构建编译的依赖关系图 广度优先遍历依赖关系图,进行编译 玩Go不久,不知道是否有更高级的方案或者已有的方案解决Go工程...阅读全文

博文 2014-11-22 17:00:01 David_Alpha_Fox

Go如何处理zip中的中文文件名

Go的标准库已经自带了zip的库. 不过zip包在处理内部文件名时, 默认是utf8编码的. 对于Windows中文用户, 生成和读取zip内部文件名默认是GBK编码的. 因此, 在处理涉及GBK的文件名时需要做一个转换. Go语言官方的 go.text 子标准库已经支持各种编码, 下面是utf8转GBK的函数: import "golang.org/x/text/encoding/simplifiedchinese" func utf8ToGBK(text string) (string, error) { dst := make([]byte, len(text)*2) tr := simplifiedchinese.GB18030.NewEncoder() nDst, _, err :...阅读全文

博文 2015-05-18 12:38:08 chai2010

md5与crc32性能对比

感觉MD5算法复杂度比crc32高很多,具体高多少呢?测试一下 // main.go package main import ( "crypto/md5" "fmt" "hash/crc32" ) func main() { data := []byte("test") fmt.Printf("%x", md5.Sum(data)) } func Crc32IEEE(data []byte) uint32 { return crc32.ChecksumIEEE(data) } func Md5(data []byte) [16]byte { return md5.Sum(data) } // main_test.go package main import "testing" func Be...阅读全文

博文 2017-02-09 08:09:02 李维

windows 安装 go语言

官方教程说明: Windows 对于Windows用户,Go项目提供两种安装选项(从源码安装除外): zip压缩包需要你设置一些环境变量,而实验性MSI安装程序则会自动配置你的安装。 MSI安装程序 打开此MSI文件 并跟随提示来安装Go工具。默认情况下,该安装程序会将Go发行版放到 c:\Go 中。 此安装程序应该会将 c:\Go\bin 目录放到你的 PATH 环境变量中。 要使此更改生效,你需要重启所有打开的命令行。 Zip压缩包 下载此zip文件 并提取到你的自选目录(我们的建议是c:\Go): 若你选择了 c:\Go 之外的目录,你必须为你所选的路径设置 GOROOT 环境变量。 将你的Go根目录中的 bin 子目录(例如 c:\Go\bin)添加到你的 PATH 环境变量中。 使...阅读全文

go语言之各种加密算法的使用

go语言之各种加密算法的使用 加密算法常用于数据传输中的封装,下面看看如何使用go语言库封装好的加密算法。 直接看代码。 package main import ( "encoding/base64" "crypto/md5" "encoding/hex" "fmt" ) const base64Table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" var coder = base64.NewEncoding(base64Table) func base64Encode(encode_byte []byte) []byte { return []byte(coder.EncodeToString(...阅读全文

博文 2015-06-17 23:00:33 bojie5744

Go语言IUP GUI库的安装笔记

步骤a 前往https://github.com/grd/iup 查看说明,看到Quick installation guide for Windows这里 按说明前往下载3个dll库文件包 我自己下的是下面这3个 Im - im-3.9.1_Win32_dll10_lib.zip Cd - cd-5.8.2_Win32_dll10_lib.zip Iup - iup-3.14_Win32_dll10_lib.zip 按说明设置一个系统环境变量(右键计算机-属性-高级系统设置-环境变量) IUPHOME=C:\iup 把下载的3个压缩包都解压到c:\iup目录下 步骤b 复制c:\iup\下的include目录,到C:\TDM-GCC-32\下粘贴,(增量覆盖方式,这里我安装的gcc是tdm...阅读全文

博文 2015-05-25 17:00:00 名字不能长

GO的并行算法这么慢?

我的环境如下: INTEL I5-2500K 4CORE 3.7GHZ 8G 内存 我分别用C#4.0和GO1.1写了一个计算质数的小程序。 C#我分别用串行算法和并行算法计算了1000,10000,50000,100000以内的质数。 GOLANG我只是用了并行算法,也是计算了1000,10000,50000,100000以内大的质数。 算法很简单,就是两个for循环。本以为GO是本地语言,至少要比C#快一些的。结果却让我吐血 GO: 目前有4个CPU 执行1000次的时间 4 毫秒 .............................. 执行10000次的时间 256 毫秒 ...................阅读全文

关于google app engine的安装使用

关于google app engine的安装使用 我下载了google app engine的zip压缩包,解压到c盘根目录,将“c:\go_appengine”添加到path里面,使用命令时出现问题。 1、在cmd命令行窗口可以使用goapp命令,但在gitbash下显示sh.exe:goapp:command not find。这是什么原因,到底要将哪个路径写进path里面。 2、我使用deploy命令上传时出现“could not find python interpreter: exec: "python": executable file not found in%PATH%”,大概意思是找不到Python编译器,这是什么原因,源文件到底放在哪个路径下面,我已经安装...阅读全文

MongoDB 最佳实践及2.8版本特性与功能

主要流程 MongoDB 2.8 版本特性与功能 MongoDB 在赶集网的应用 MongoDB 最佳实践 MongoDB 2.8 版本特性与功能 TJ MongoDB 开发者 TJ 强调 MongoDB 没有实际意义上的锁,只有 Latch,门栓。 2.6 库级锁 Latch,没有 Lock,写内存的一刹那锁住内存 2.8 无锁的 MVCC 并发,WIREDTIGER,snapshot isolation 2.6 MMAP 内存映射,库级锁 2.8 MMAP 集合级锁 2.8 WIREDTIGER 无锁 WIREDTIGER 存储模式 LSM(HBASE, Cassandra) - Log Structured Merge B-TREE LSM 数据写内存,异步写硬盘 读性能有问题,性能一...阅读全文

博文 2015-04-18 22:00:00 灰仔

IntelliJ IDEA 14安装Golang插件go-lang-idea-plugin

1,下载IntelliJ IDEA旗舰版,我用的是14.1.3版本: http://www.jetbrains.com/idea/download/ 2. 下载golang官方SDK和go-lang-idea-plugin插件源码 http://golang.org/dl/ (要翻==墙) https://github.com/go-lang-plugin-org/go-lang-idea-plugin 3,将下载的go-lang-idea-plugin压缩包解压,IDEA点击File -> open 打开该工程。打开后有很多编译错误,先不管,接下来一步一步配置。 4,点击File -> Project Structure 打开项目结构配置窗口。 如图所示,添加JDK和IntelliJ Pl...阅读全文

博文 2015-08-17 22:00:01 Cbping

Golang计算MD5

Golang计算MD5 1.单向加密 什么是单向加密算法。简而言之就是不可解密的加密方法,也叫作非可逆加密。这些学术 解释都不用管它,反正就是一群数学家老爷爷通过各种证明得到的一种方法,用这种方法加密 过的东西,地球上现有的人类在有限的时间内是无法解密的,包括加密者自己。既然加密者自己 都无法解密,那这乖僻的加密算法有个毛用阿?哪些场景需要这种有去无回的加密方式呢? 这里先了解下单向加密的特征: 首先,不可解密性在上面已经提到了,目的就是掩藏明文。其次单向加密算法的另外两个特征 使得它更接地气,第一是任意两段明文数据,加密以后的密文不能是相同的; 第二是任意一段明文数据,经过加密以后,其结果必须永远是不变的。这样当我们需要表征一段 唯一的内容,但是有不想别人知道该段内容时或者仅仅是为一个内容...阅读全文

博文 2014-10-09 16:00:03 cz_it

golang zlib 压缩数据

package main import ( "fmt" "compress/zlib" "bytes" ) func main() { var input = []byte("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKsAAAAgCAYAAABtn4gCAAAI9klEQVR4Xu2cfYxcVRmHn3Pu3Nm6lXa2ta0AYlsgFSGgThMU0W5hGkqApNGARk3cGm3BRN3FYGuCISrBXaNphcSkG2I3hn9gY2gSNWq32AoE1C6KRihFti2QSgvsTmm783HvOa+zM69cSS8Tacsq7n2SX87cj5P7ZvLs2ztnbseICG8HMjIsbxMyMnIoxhja...阅读全文

博文 2014-10-04 19:26:09 zitsing

消息摘要算法示例(python和go)

常用的消息摘要算法有MD5和SHA,这些算法在python和go的库中都有,需要时候调用下就OK了,这里总结下python和go的实现。 一、python消息摘要示例 代码如下: #! /usr/bin/python ''' File : testHash.py Author : Mike E-Mail : Mike_Zhang@live.com ''' import hashlib src = raw_input("Input string : ") funcNameList = ["MD5","SHA1","SHA224","SHA256","SHA384","SHA512"] funcMap = { "MD5" : lambda cnt : hashlib.md5(cnt).hexdi...阅读全文

博文 2014-10-04 19:26:50 MikeZhang

django 密码加密算法的 go 语言版本

package main import ( "crypto/sha256" "encoding/base64" "golang.org/x/crypto/pbkdf2" "log" "strconv" ) // Django 的实现细节请参考 Python 和 django 文档: // django.contrib.auth.hashers.make_password // django.utils.crypto import pbkdf2 // hashlib.sha256 // base64 func main() { pwd := []byte("shangshanyouyu") // 用户设置的原始密码 salt := []byte("I1lrI7wqJOJZ") // 盐,是一个...阅读全文

博文 2015-11-06 19:00:10 nowboy11427

golang实现直接插入排序算法

直接插入排序算法golang实现版本: 插入算法概要: 建立一个空的链表,首先在要排序的数组中随便拿出来一个数据,放在新建链表的开头,然后不停的从原数组中 获取数据,并和链表中的数据进行比较,大就放在链表的右端,小就放在链表的左端,一直循环直到结束为止, 排序完成。 package main import( "container/list" "fmt" ) var old []int = []int{432,432432,4234,333,333,21,22,3,30,8,20,2,7,9,50,80,1,4} func main(){ fmt.Println("old array:",old) res,_ := InsertionSort(old) i := 0 for e := res....阅读全文

博文 2014-10-04 19:26:08 rufidmx

golang gc机制学习

以下针对go1.5 gc方法 参考官方文章:https://blog.golang.org/go15gc,go的gc看起来类似于宽度优先搜索算法。 1. 将heap看作是一个图,其内部存储的变量之间有指针相互联系。所有变量最初都被着色为白色 2. 遍历heap,选择root节点,将它们标记为灰色 3. 针对上面选择的每一个root节点,首先将其颜色变为黑色,然后迭代的去访问他的孩子节点(即其所代表的变量内部的指针成员所指向的其他节点) 4. 针对每个孩子节点,返回第2步进行相同的处理 最后,所有能够被访问到的节点颜色都被标记为黑色,无法访问到的节点则依然是白色,这些白色节点就是孤立节点,它们的内存会被回收。 整个过程图1所示。 GC控制 Go语言提供了一个变量GOGC,用来对gc进行控制。该...阅读全文

博文 2016-04-29 11:00:02 sivolin

Amazon Api 签名算法(golang版和java版)

package main import "fmt" import "crypto/hmac" import "crypto/sha256" import "time" import "strings" import "encoding/base64" import "net/http" import "net/url" import "io/ioutil" const METHOD ="GET" const HOST ="webservices.amazon.com" const URI= "/onca/xml" const QUERY_STRING= "AWSAccessKeyId=121212121212&AssociateTag=smasholab-20&IdType=ISBN&Ite...阅读全文

博文 2015-06-17 20:23:35 u013834131

关于go语言des加解密算法

最近的项目需要,跻身go语言的行列,真不知道是福还是祸啊,嗨,感慨一下! 今天弄了一个des加解密的算法,主要也是用到了golang的标准库,和网上大牛的文档,在这里先感谢一下,并附上原链接地址: http://blog.studygolang.com/2013/01/go%E5%8A%A0%E5%AF%86%E8%A7%A3%E5%AF%86%E4%B9%8Bdes/ 好,不废话,直接上代码: func DesEncrypt(origData, key []byte) ([]byte, error) { block, err := des.NewCipher(key) if err != nil { return nil, err } origData = PKCS5Padding(ori...阅读全文

博文 2015-06-17 23:00:45 mi_tiger