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

go语言字符串处理

string包: 查找字串是否在指定的字符串中:strings.Contains("seafood", "foo")//true strings.Contains("seafood", "bar")//false 查找字串是在指定的字符串中出现的次数:strings.Count("cheese", "e")//3 package main import ( "fmt" "strings" //"unicode/utf8" ) func main() { fmt.Println("查找子串是否在指定的字符串中") fmt.Println(" Contains 函数的用法") fmt.Println(strings.Contains("seafood", "foo")) //true fmt.P...阅读全文

博文 2015-11-14 03:00:00 xjser

HD钱包学习小结

在比特币/以太坊等公链上都会用到钱包。钱包主要用来管理用户的私钥,及用户在链上的数字货币,即用私钥对交易进行签名。私钥可用于生成特定消息的签名,此签名可以在不泄露私钥的情况下使用公钥进行验证。 因为私钥极其重要,一旦泄漏就意味着数字资产的所有权就掌握在别人手里。理论上私钥可以是任意的一串随机数字串,不仅难以记忆也没有规律可循,有必要利用一些密码学方法来管理秘钥对(一个秘钥对包括一个私钥和对应的公钥),既方便管理又足够安全。 1. 非确定性钱包 如果只是完全随机生成一个数字串作为私钥,可以使用密码学安全的伪随机数生成器(CSPRNG,Cryptographically secure pseudorandom number generator,密码学安全伪随机数生成器)。这些私钥之间完全独立,相...阅读全文

博文 2018-07-29 11:34:55 shi_qinfeng

go语言实现短链接生成算法

短链接服务 在一些应用的分享文案中,经常需要包含一个打开实际页面的链接,而这个链接可能会非常的长(因为可能会有很多很多参数。。)这样的分享文案不仅不够美观,而且在一些平台会受到限制,比如weibo的140字。这时候我们就需要采用一个短链接服务了。 短链服务实际上是对长链接的一个1对N映射。在访问短链的时候,通过应用或web服务器进行跳转,就能访问到实际的页面。我们只需将长链完成映射,存储这样的对应关系,就实现了短链生成服务。 算法 将任意一条长链接映射为6位字符长度的字符串,而不会造成短链接的重复。(不是绝对的,在一个很大数量级的数值之内) 将原长链接进行md5校验和计算,生成32位字符串。 将32位字符串每8位划分一段,得到4段子串。将每个字串(16进制形式)转化为整型数值,与0x3FFF...阅读全文

博文 2017-08-22 01:05:03 Dr_Zhang

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...阅读全文

字符串查找算法(二)

接前面的《字符串查找算法》继续写。上一篇文章说过,神奇的数字16777619,当时不知道这个是干嘛用的,现在差不多知道了。 字符串哈希,会经常用到FNV哈希算法。FNV哈希算法如下:将字符串看作是字符串长度的整数,这个数的进制是一个质数。计算出来结果之后,按照哈希的范围求余数,结果就是哈希结果。 #define TRUE_HASH_SIZE ((u_int32_t)50000) /* range top plus 1 */ #define FNV_32_PRIME ((u_int32_t)16777619) #define FNV1_32_INIT ((u_int32_t)2166136261) #define MAX_32BIT ((u_int32_t)0xffffffff) /* lar...阅读全文

Golang获取机器码(MachineCode、PhysicalId)

package main import ( "context" "crypto/md5" "crypto/rand" "encoding/base64" "encoding/hex" "errors" "fmt" "github.com/StackExchange/wmi" "golang.org/x/sys/windows" "net" "sort" "strings" "time" "unsafe" ) func main(){ t := time.Now() a:=GetPhysicalID() fmt.Println(time.Since(t), a) } func GetPhysicalID() string{ var ids []string if guid,err := get...阅读全文

博文 2019-02-19 16:12:41 sdlyfjx

<13> go collection-func

集合的操作: import ( "fmt" "strings" ) // 返回数组下标,找不到返回-1 func Index(vs []string, t string) int { for i, v := range vs { if v == t { return i } } return -1 } // 是否包含t字符串 func Include(vs []string, t string) bool { return Index(vs, t) >= 0 } // 任何一个字串符合f即返回true func Any(vs []string, f func(string) bool) bool { for _, v := range vs { if f(v) { return true }...阅读全文

博文 2015-12-26 15:00:01 a11101171

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...阅读全文

Map

#### 一、Map具有集合的属性,使用的是哈希表,必须可以比较相等的类型才能作为map的key,即slice,map,function这些内置类型是不能作为key的,struct类型在不包含以上字段的时候,是可以作为key的。 #### 二、作为数据结构,满足增删查改: ``` package basic import ( "fmt" "log" ) func main() { basicMap := make(map[int]string) fmt.Println("Basic map trive:") basicMap = map[int]string{ 1: "Ace", 2: "Luffy", 3: "Iilidan", 4: "Sean", 5: "Chan", } //验证ma...阅读全文

博文 2018-08-27 15:05:21 ace_kylin

AES-128-CBC Base64加密——OC,Java,Golang联调

AES-128-CBC 这里首先说说AES加密原理 AES加密算法采用分组密码体制,每个分组数据的长度为128位16个字节,密钥长度可以是128位16个字节、192位或256位,一共有四种加密模式(ECB、CBC、CFB、OFB),我们通常采用需要初始向量IV的CBC模式,初始向量的长度规定是128位16个字节。另外就是Padding,这里面有大坑。。。。先说一下Padding的三种模式PKCS5、PKCS7和NOPADDING。PKCS5是指分组数据缺少几个字节,就在数据的末尾填充几个字节的几,比如缺少5个字节,就在末尾填充5个字节的5。PKCS7是指分组数据缺少几个字节,就在数据的末尾填充几个字节的0,比如缺少7个字节,就在末尾填充7个字节的0。NoPadding是指不需要填充,也就是说...阅读全文

博文 2018-08-08 03:34:48 heroims

从 golang flag 迁移到 cmdr

基于 cmdr v1.0.3从 golang flag 迁移到 cmdr 采用一个新的命令行解释器框架,最痛苦地莫过于编写数据结构或者流式定义了。我们首先回顾一下 cmdr 和其它大多数三方增强命令行解释器都支持的最典型的两种命令行界面定义方式,然后再来研究一下 cmdr 新增的最平滑的迁移方案。 典型的方式 通过结构数据体定义 有的增强工具(例如 cobra,viper)采用结构体数据定义方式来完成界面指定,如同 cmdr 的这样: rootCmd = &cmdr.RootCommand{ Command: cmdr.Command{ BaseOpt: cmdr.BaseOpt{ Name: appName, Description: desc, LongDescription: long...阅读全文

博文 2019-07-23 22:02:44 hedzr

Go字符串常用方法

更多方法,请见golang中文https://studygolang.com/pkgdoc // 1. =============统计字符串长度,按字节len(str) // ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。 // UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占三个字节,英文标点占一个字节 // go中都以utf8进行编码 str1 := "hello world 哈哈" fmt.Println("str len=", len(str1)) // 18 // 2. =============字符串遍历,同时处理有中文的问题 r:=[]rune(str) // 常规遍历时,一个中文占三个字节,直接遍历...阅读全文

博文 2019-12-26 08:32:42 领带衬有黄金

从 golang flag 迁移到 cmdr

基于 cmdr v1.0.306 - Migrating from flag 采用一个新的命令行解释器框架,最痛苦地莫过于编写数据结构或者流式定义了。我们首先回顾一下 cmdr 和其它大多数三方增强命令行解释器都支持的最典型的两种命令行界面定义方式,然后再来研究一下 cmdr 新增的最平滑的迁移方案。 典型的方式 通过结构数据体定义 有的增强工具(例如 cobra,viper)采用结构体数据定义方式来完成界面指定,如同 cmdr 的这样: rootCmd = &cmdr.RootCommand{ Command: cmdr.Command{ BaseOpt: cmdr.BaseOpt{ Name: appName, Description: desc, LongDescription: lo...阅读全文

博文 2019-07-24 17:33:47 banlyst

Golang——数据类型

基本数据类型: 整型、浮点型、布尔型、字符串 其它: 数组、切片、结构体、函数、map、通道(channel) 基本数据类型 整型 有符号:int8 int16 int32 int64 无符号:unit8 uint16 uint32 uint64 unit8是byte。 int16对应c语言中的short型 ,int64对应c语言中的long型。 int:自动匹配os,os是32位就是int32,os是64位就是int64。 len():获取对象的长度,返回int package main import "fmt" func main() { //十进制 var a int = 10 fmt.Printf("%d \n", a) //10 fmt.Printf("%b \n", a) //1...阅读全文

博文 2020-05-10 19:33:10 Cici冬雪

Golang正则表达式

语法规则 字符类匹配表达式 语法 说明 示例 匹配结果 一般 匹配本身 abc abc . 匹配任意除换行符"\n"外的字符 a.c abc \ 转义字符,使后一个字符改变原来的意思 a\.c a.c [...] 字符集(字符类),对应的位置可以是字符集中任意字符[abc]。也可以给出范围[a-c],第一个字符如果是 ^ 则表示取反,如 [^abc] 表示除了abc之外的其他字符。 a[bcd]e abe,ace,ade \d 数字:[0-9] a\dc a1c \D 非数字:[^\d] a\Dc abc \s 空白字符:[<空格>\t\r\n\f\v] a\sc a c \S 非空白字符:[^\s] a\Sc abc \w 单词字符:[A-Za-z0-9] a\wc abc \W 非单词字...阅读全文

博文 2020-05-21 19:33:20 也疯狂