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

golang fmt.printf()

package main import "fmt" import "os" type point struct { x, y int } func main() { //Go 为常规 Go 值的格式化设计提供了多种打印方式。例如,这里打印了 point 结构体的一个实例。 p := point{1, 2} fmt.Printf("%v\n", p) // {1 2} //如果值是一个结构体,%+v 的格式化输出内容将包括结构体的字段名。 fmt.Printf("%+v\n", p) // {x:1 y:2} //%#v 形式则输出这个值的 Go 语法表示。例如,值的运行源代码片段。 fmt.Printf("%#v\n", p) // main.point{x:1, y:2} //需要打印值的...阅读全文

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

go 中的字符串遍历

首先看下以下例子: package main import "fmt" func main(){ s := "我是中国人" for i:=0; i < len(s); i++{ fmt.Printf("%c", s[i]) } fmt.Printf("\n") for _, v := range s { fmt.Printf("%c", v) } fmt.Print("\n") } 输出结果: 我是中国人 我是中国人 通过len(s)和range遍历访问字符串元素有什么不同么? 首先来复习一下go语言的字符串表示,go语言有以下两种表示字符串的方法: 1、双引号,如:“gogogo\n”,使用转义字符 2、反引号,如:`gogogo\n`,不使用转义字符,字符串的内容将和...阅读全文

博文 2014-10-04 19:26:22 ricktian1226

mac 下配置protobuf 3.0 golang环境

protobuf 3.0 与 之前的 protobuf 2.6 的语法是不一样的。需要重新安装一下,本机的环境是 OS X Yosemite 10.10.2 1. 不采用home brew安装,用homebrew安装的话会遇到一个open issue https://github.com/Homebrew/homebrew/issues/30320 的问题,没有仔细研究,索性就直接进行手工安装了; 不过这里可以记录一下自定义brew的 formula的方法: (1) 如果直接使用 brewINSTALL protobuf 进行安装的话,目前默认的安装版本还是 2.6.1的,所以需要修改一个brew 的formula,让brew去寻找3.0的版本;方法如下: sudo brew create ...阅读全文

博文 2015-07-09 03:00:02 yuhan-TB

golang处理 json中非法字符

文: Hi there, I just discovered Go and decided to port a little program to Go. The program reads JSON-Data from an URL and process the Data. The Go port works well till now. I dont have any influence on the JSON data and so sometimes there are control character in it and my program crashes with "invalid character '\x12' in string literal" here the c...阅读全文

博文 2015-03-13 03:00:01 zhangqingping

关于Go语言daemon启动的方法.

昨天搞了个文件共享的小程序,遇见了意见蛋疼的事,就是启动之后终端不能关闭,不然程序也会随着关闭. 我的解决方法: nohup ./httpserver & nohup这个命令可以把程序放后台运行,顺便通过1>和2>把标准输出和标准错误重定向到文件,这样程序崩溃时才会有记录可查,这两者和程序的日志最好是分开,混在一起没办法判断轻重缓急: nohup ./server 1> server.out 2> server.err 进程启动时候记录下自己的pid: if pid := syscall.Getpid(); pid != 1 { ioutil.WriteFile("server.pid", []byte(strconv.Itoa(pid)), 0777) defer os.Remove("s...阅读全文

博文 2016-01-05 20:00:00 fyxichen

整理下Base64相关的东西(OpenSSL/GO...)

Base64在不同语言对接时,其实是有些小坑的,之前有碰过。 首先Base64的是啥? 阮一峰有一篇写得很赞的文章说得很明白。 然后是怎么编码? 我用OpenSSL写了个Base64解编码实现: /* 用openssl来做Base64加解密. Author: xcl Date:2015-9-17 */ #include #include #include #include "openssl/ssl.h" #include #include #if defined(WIN32) || defined(_WIN64) #pragma comment(lib, "libeay...阅读全文

博文 2015-10-24 13:00:05 xcltapestry

mutipart包上传文件/上传body比实际body大

先上链接:http://matt.aimonetti.net/posts/2013/07/01/golang-multipart-file-upload-example/ 主要方法: 说的再多不如看代码直接,就是用mut的writer向request body里写入文件 文件正常传输到server端了,很是开心 但是! 我传了一个zip文件,却发现解压的时候,报告的解压报错。header多出n个字符。找了好久问题,还以为是压缩问题。 输出的io.copy字符数和我的源文件大小是一样的。后来将buf打印,发现在copy之前,buffer就已经有一些文件信息。妹的! 于是在copy之间: buffer.reset() 传输正常了...阅读全文

主题 2015-05-16 08:43:23 karl

Go语言无法读取需要密码访问的PEM文件问题(failed to parse private key)

文来自:http://blog.csdn.net/hekejun19861107/article/details/22897429 最近开始做苹果的推送功能,服务端连接apns的时候需要加密连接,对应就需要通过苹果开发者平台生成对应的pns的证书和对应的私钥,然后通过openssl命令转换成PEM格式,本人也是急于完成手头的工作,没有去深入研究openssl命令的使用方法,按网上的教程直接把p12 的私钥转成了pem,对应还上了密码。这时候问题就来了,Go提供的tls库中的LoadX509KeyPair并没有传入密码的选项,只能传入对应的证书和私钥。琢磨半天找到这方法,记录一下: golang 不支持p12解析,所以需要转换成pem 网上有一些,但都不能实现自动转换(非交互模式)。以下是非交...阅读全文

博文 2016-02-05 02:00:01 newsyoung1

go语言版本的discuz authcode函数实现

有个项目中正好需要用到一个对称加解密函数,想起了,DZ的那个authcode函数,于是乎在网上找了哈,没有发现,不晓得是不是我搜索技术不够哈,总之是没有找到,好吧,自己动手丰衣足食。。。GO。 大概原来是秘钥放在加密串中的,过期时间也在里面,然后是验证字符串,解密的时候要先出去前面几位的动态秘钥,当然可以不用哈,那么每次加密结果都一样的。 key + text text[0:10]过期时间 0:不过期 text[10:26]验证字符串 text[26:]原字符串 // 加解密函数 根据dz的Authcode改写的go版本 // params[0] 加密or解密 bool true:加密 false:解密 默认false // params[1] 秘钥 // params[2] 加密:过期时间...阅读全文

博文 2014-10-05 23:14:32 last911

golang客户端sarama通过SSL连接Kafka配置

前言 非对称密钥、证书、签名、keystone、truststore等相关概念请移步度娘查询,在此只记录下相关步骤 证书生成 #!/bin/sh keytool -keystore kafka.server.keystore.jks -alias localhost -validity 3650 -keyalg RSA -genkey openssl req -new -x509 -keyout ca-key -out ca-cert -days 3650 keytool -keystore kafka.client.truststore.jks -alias CARoot -import -file ca-cert keytool -keystore kafka.server.trusts...阅读全文

博文 2018-03-20 11:33:04 copy202

golang的apns证书文件转换(P12 to Pem)

golang 不支持p12解析,所以需要转换成pem 网上有一些,但都不能实现自动转换(非交互模式)。以下是非交互模式的转换: //生成临时文件cert.pem,注意passin 和 passout 选项 openssl pkcs12 -clcerts -nokeys -out cert.pem -in cert.p12 -passin pass:P12_PASS //生成临时文件key.pem openssl pkcs12 -nocerts -out key.pem -in cert.p12 -passin pass:P12_PASS -passout pass:TMP_PASS //去掉key.pem的密码 openssl rsa -in key.pem -out key.unencry...阅读全文

博文 2015-12-10 22:00:01 linsanhua

1024,我们的节日,该干点啥?

> 一人问程序员朋友借1000块。程序员说,再多借你24吧,凑个整。 1024,属于程序员的数字,10月24日,自然也就属于我们的节日! 据说,1024 程序员不用加班!!?不加班?!那我该做点什么呢?嗯哼,喜欢 Coding 的你,那就好好学习 Go 语言吧!毕竟据说 Go 语言最近很火,据说工资还贼高。 ## 于是乎,推荐一些新手入门的资料。 1. Go 指南 http://tour.studygolang.com 2. Go by example http://books.studygolang.com/gobyexample/ 以及 Go Web Example http://books.studygolang.com/gowebexamples/ 以...阅读全文

关于用Openssl生成pem文件用于Go语言实现ios推送

今天在完成ios推送过程中遇到一些问题,同事帮我注册了一个苹果的证书,然后用证书生成相应的pem文件,网上关于生成pem文件有很多方式 (1)php deviceToken: <6974ac11 870e09fa 00e2238e 8cfafc7d 2052e342 182f5b57 fabca445 42b72e1b> 2. 生成app在服务端需要的许可*****br> 1)进入Provisioning Portal, 下载Certificates在development下的证书。 3.找到需要测试的app id,然后enable它在development下的Apple Push Notification service: Development Push SSL Certificate。...阅读全文

博文 2016-01-29 12:00:02 newsyoung1

Go起步:3、变量、常量和基础类型

在此之前,搭建了Go的开发环境,并且了解的Go程序的基本结构。选择了一款Go的开发工具。有了这些,现在可以继续探索Go的魅力了。 变量 声明、初始化 在Go中对于变量的声明使用关键字var,这和JavaScript,Pascal一样。在Swift 中var 也用来定义变量,似乎新的语言都倾向使用特别关键字声明变量了。不过变量声明的格式和JavaScript还是有很大的区别,到是有些类似Pascal和Swift–都是类型信息放在变量名之后,区别在于不需要使用:分割。 var v1 int //定义类型为int的变量v1 var v2 string //定义类型为string的变量v2 还可以看出,变量声明语句不需要使用分号作为结束符。现在很多语言在语句结束都摒弃了分号,像Python,Swif...阅读全文

博文 2016-09-16 12:00:01 Mungo

go语言Arrays、Maps、Slices操作

Arrays:数组 在go语言中数组array是一组特定长度的有序的元素集合,元素类型可以是任意的原始类型例如整形、字符串或者自定义类型,通过索引(位置)来读取(或者修改),索引从0开始,第一个元素索引为 0,第二个索引为 1,以此类推 array.go package main import "fmt" func main() { //这里我们创建了一个长度为5的数组. 这一组数组的初值是zero-valued。整型就是0 var a [5]int fmt.Println("emp:", a) //可以通过array[index] = value语法赋值 a[4] = 100 fmt.Println("set:", a) fmt.Println("get:", a[4]) //内置的len...阅读全文

博文 2017-02-19 04:00:17 nuli888

Golang实现的Base64加密

base64加密是我们经常看到的一种加密方法,比如ESMTP的验证过程和二进制文件的网际传输等都会用到这种编码。 base64的加密方法算是比较简单的一种了,其编码过程是将原文按照每 6bit (记住,是以'位'为单位的)为一组对原文进行替换,因为6bit 可以表示的值的范围在0~63(2的6次方,一共64个),所以可以用一个长度为64的字符表对这 6bit 的值进行映射。 这个映射表通常是A-Z、a-z、0-9加上 + 和 / 两个符号,即"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"。 不过,在进行加密之前,我们要先解决一个问题,那就是一个字符通常为一个字节(byte),字节是 8bit 的,可是加密的...阅读全文

博文 2016-02-05 01:00:07 u011774512

Go语言 如果实现http重连?

怎样做到每次使用一个连接发送和接收前就设置超时呢?我想了个办法是在Dial回调返回自己包装过的TimeoutConn,间接的调用真实的Conn,这样就可以再每次Read和Write之前设置超时时间了。 以下是修改后的实验代码: // // How to set timeout for http.Get() in golang // package main import ( "io" "io/ioutil" "log" "net" "net/http" "sync" "time" ) type TimeoutConn struct { conn net.Conn timeout time.Duration } func NewTimeoutConn(conn net.Conn, timeou...阅读全文

博文 2015-06-17 23:05:43 abv123456789

[翻译] effective go 之 Formatting Commentary

Formatting(代码风格) Formatting issues are the most contentious but the least consequential. People can adapt to different formatting styles but it's better if they don't have to, and less time is devoted to the topic if everyone adheres to the same style. The problem is how to approach this Utopia without a long prescriptive style guide. 关于代码风格 这个月经贴的...阅读全文

博文 2014-10-04 19:26:21 pengfei_xue

gf框架之gvalid - 强大灵活的数据校验/表单校验模块

gf提供了非常强大易用的数据校验功能,通过gvalid包提供,封装了40种常用的校验规则,支持单数据多规则校验、多数据多规则批量校验、自定义错误信息、自定义正则校验等特性。由于gf是模块化、低耦合设计,gvalid包也可以在项目中单独引入使用。 使用方式: ```go import "gitee.com/johng/gf/g/util/gvalid" ``` ### 校验规则 40种常用的校验规则: required 格式:required 说明:必需参数 required-if 格式:required-if:field,value,... 说明:必需参数(当任意所给定字段值与所给值相等时,即:当field字段的值为value时,当前验证字段为必须参数) required-unless 格式...阅读全文

关于 golang fmt.printf()输出格式化

package main import "fmt" import "os" type point struct { x, y int } func main() { //Go 为常规 Go 值的格式化设计提供了多种打印方式。例如,这里打印了 point 结构体的一个实例。 p := point{1, 2} fmt.Printf("%v\n", p) // {1 2} //如果值是一个结构体,%+v 的格式化输出内容将包括结构体的字段名。 fmt.Printf("%+v\n", p) // {x:1 y:2} //%#v 形式则输出这个值的 Go 语法表示。例如,值的运行源代码片段。 fmt.Printf("%#v\n", p) // main.point{x:1, y:2} //需要打印值的...阅读全文

博文 2018-08-29 12:30:01 i6010

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

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

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

golang的apns证书文件转换(P12 to Pem)

golang 不支持p12解析,所以需要转换成pem 网上有一些,但都不能实现自动转换(非交互模式)。以下是非交互模式的转换: //生成临时文件cert.pem,注意passin 和 passout 选项 openssl pkcs12 -clcerts -nokeys -out cert.pem -in cert.p12 -passin pass:P12_PASS //生成临时文件key.pem openssl pkcs12 -nocerts -out key.pem -in cert.p12 -passin pass:P12_PASS -passout pass:TMP_PASS //去掉key.pem的密码 openssl rsa -in key.pem -out key.unencry...阅读全文

博文 2017-02-09 16:52:57 邮差小组

mysql中varbinary、binary、char、varchar异同

binary 与 varbinary 类型和char与varchar类型是相似的,只是他们存储的是二进制数据,也就是说他们是包含字节流而不是字符流,他们有二进制字符的集合和顺序,他们的对比,排序是基于字节的数值进行的 binary与varbinary的最大长度和char与varchar是一样的,只不过他们是定义字节长度,而char和varchar对应的是字符长度。 存储和取出时对尾部空格的处理 char(N)用来存储非二进制字符串,插入时,对于少于N个字符的会自动在尾部加空格,查询时,尾部的空格就会被丢弃掉 vachar(N) 用来存储非二进制字符串,插入时,对于少于N个字符的不填补空格,查询时,尾部的空格不会被丢弃掉 binary(N)存储二进制字符串,插入进,少于N个字节的会自动在尾部加...阅读全文

博文 2018-02-26 11:03:45 zejin2008

《Go语言101》:一本在线Golang电子书

大致是从2016年7月开始打算写一本罗列各种Go编程中的细节的小册子。 但没想到在随后的两年半中,这本原计划中的小册子演变成了一本近500页专注于Go语言语法和语义的书。 原本的三个月的写作计划也拖成了两年半的一场马拉松。 真累了,另外也耽误了太多事儿。实在没有心力再准备排版和操心出版纸质书了。 有兴趣学习Go语言的,请点击以下链接: 本书官网(在线阅读版,有可能间歇性被墙) 本书github项目(可用来开启本地阅读版) 离线版下载(目前包括pdf和epub格式) 觉得此书对学习Go语言有帮助的,顺便赞赏和传播一下,以让老貘保持继续更新本书和go101.org网站的心力。 BTW,刚给本书搞了个公众号,主要用来发表一些关于Go语言细节、常识和编程技巧的快餐型的短小文章。 有兴趣的可以扫描下面...阅读全文

博文 2019-04-27 13:34:41 liulaomo

mac 下配置protobuf 3.0 golang环境

http://studygolang.com/articles/4451 protobuf 3.0 与 之前的 protobuf 2.6 的语法是不一样的。需要重新安装一下,本机的环境是 OS X Yosemite 10.10.2 1. 不采用home brew安装,用homebrew安装的话会遇到一个open issue https://github.com/Homebrew/homebrew/issues/30320 的问题,没有仔细研究,索性就直接进行手工安装了; 不过这里可以记录一下自定义brew的 formula的方法: (1) 如果直接使用 brewINSTALL protobuf 进行安装的话,目前默认的安装版本还是 2.6.1的,所以需要修改一个brew 的formula,让...阅读全文

博文 2016-04-15 12:00:02 pyy11111111

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

hex和base32和base64的区别与联系

基本概念 hex也称为base16,意思是使用16个可见字符来表示一个二进制数组,编码后数据大小将翻倍,因为1个字符需要用2个可见字符来表示。 base32,意思是使用32个可见字符来表示一个二进制数组,编码后数据大小变成原来的8/5,也即5个字符用8个可见字符表示,但是最后如果不足8个字符,将用=来补充。 base64,意思是使用64个可见字符来表示一个二进制数组,编码后数据大小变成原来的4/3,也即3个字符用4个可见字符来表示。 用例 看个例子: package main import "fmt" import "encoding/hex" import "encoding/base32" import "encoding/base64" func main() { s := "hell...阅读全文

Leetcode 题目:括号匹配

前言 这道题目是 LeetCode 第 20 题 Valid Parentheses。 在我用 Go 解答这个问题时,发现了 Go 特别的用法和一些求解中容易忽略的边界条件,觉的还是有必要记录一下。 题目简述 给定一个只包含 '(',')','{','}','['和']'的字符串,判断字符串是否有效。有效的条件为:括号必须有相同的括号对应, 且括号必须以正确的顺序对应。 示例1: 输入:"()" 输出:true 示例2: 输入:"()[]{}" 输出: true 示例3: 输入:"([)]" 输出:true 解题思路 遍历字符串每个字符,当字符属于'(','{','['时,将字符压入栈。若字符不属于,则将当前字符与栈顶元素比较,如果括号对应说明正确并弹出栈顶元素,否则返回错误。 依照此思路写...阅读全文

Emoji与Unicode

Unicode的资源是非常宝贵的,而emoji的表情真的是越来越多,那么emoji是如何编码的呢?在普通的聊天软件中,譬如QQ,一些基本表情是采用普通字符的转义表示。譬如在字符串中检测到[微笑],就自动替换为表情。但是Emoji是一种特殊的字符,它是真正被编码入Unicode的字符。它在字符集里占据了U+1F300到U+1F9EF中的部分范围。 但是为了实现丰富的Emoji,这种表情不一定只占据一个字符,尤其是为了实现emoji中立的时候,就需要1-2个字符来完成一个表情,最多需要7个字符。 现在用一段代码来举例 : 123456789101112131415package mainimport "fmt"import "unicode/utf8"func main() { strs := ...阅读全文

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

Go 内存对齐-结构体

无论什么语言,类型都涉及到了编程语法的方方面面。加强对于类型和指针的理解,对于提高编程水平十分关键。本文会主要讲解类型。 我们首先来看看这几个字节的内存: FFE4 FFE4 FFE4 FFE4 00000000 11001011 01100101 00001010 请问地址 FFE1 上字节的值是多少?如果你试图回答一个结果,那就是错的。为什么?因为我还没有告诉你这个字节表示什么。我还没有告诉你类型信息。 如果我说上述字节表示一个数字会怎么样呢?你可能会回答 10,那么你又错了。为什么?因为当我说这是数字的时候,你认为我是指十进制的数字。 基数(number base): 所有编号系统(numbering system)要发挥作用,都要有一个基(base)。从你出生的时候开始,人们就教你用...阅读全文

博文 2018-12-23 11:34:44 WalkingInTheAir

gf框架之gvalid – 强大灵活的数据校验/表单校验模块

gf提供了非常强大易用的数据校验功能,通过gvalid包提供,封装了40种常用的校验规则,支持单数据多规则校验、多数据多规则批量校验、自定义错误信息、自定义正则校验等特性。由于gf是模块化、低耦合设计,gvalid包也可以在项目中单独引入使用。 使用方式: import "gitee.com/johng/gf/g/util/gvalid" 校验规则 40种常用的校验规则: required 格式:required 说明:必需参数 required-if 格式:required-if:field,value,... 说明:必需参数(当任意所给定字段值与所给值相等时,即:当field字段的值为value时,当前验证字段为必须参数) required-unless 格式:required-unle...阅读全文

动手实现一个JSON验证器

最近做毕设的时候,有个功能需要验证JSON字符串的合法性,最简单的做法是直接用Go的第三方JSON库做一个反序列化,但这样做给我有种杀鸡用牛刀的感觉,毕竟我不需要真正的反序列化它,单纯的验证和反序列化的性能差距直观感觉上还是比较大的。 分析 既然要验证JSON的有效性,那么必然需要清楚的知道JSON格式,这个在JSON官网已经给我们画出来了: 从官方的图上面可以看出,JSON的组成一共有五部分: object: 以左大括号({)开头表示对象的开始。 array: 以左中括号([)开头表示数组的开始。 value: 数组中只能有值类型,对象中每一个键后面必跟一个值类型。 string: 以英文的双引号开头表示字符串类型。 number: 以减号(-)、1~9、0开头表示数值类型。 从上可以看出...阅读全文

博文 2017-03-20 07:01:24 疯狂的爱因斯坦

golang 基础 fmt 包(35)

golang_real.jpg golang 基础系列分享,之前的内容比较粗而且有的存在问题,我在发布新的内容还同时不断更新之前的分享希望大家关注,也希望对于您学习 go 这门语言有所帮助。 在之前分享中用的最多就是 fmt 包来将结果输出便于学习和调试。fmt这包提供打印函数将字符串输出到控制台、文件或其他满足 io.Writer 抽象类型的值 这部分内容比较繁琐需要记忆的指令符号和修饰符号比较多,可以具体输出进行查找。 格式化布尔值 fmt.Printf("%t %t\n", true, true) 整数格式化 fmt.Printf("|%b|%9b|%-9b|%09b|% 9b|\n",37,37,37,37,37) |100101| 100101|100101 |000100101|...阅读全文

博文 2019-04-23 04:34:39 zidea

vue+golang实现评论系统

数据结构设计: 评论可以被回复, 回复也可以被回复, 以此连接下去就形成了树的结构 哪个用户评论、 评论的对象类型(视频、文章、用户动态...)、 具体哪个评论对象、 评论的内容、 评论的父亲节点(对于顶级评论没有父亲节点)、 根节点(如果想取出某一条评论的所有孩子节点, 也就是取出评论下方的所有回复就可以select * from comments where root_id=comment.id)、 回复了谁(如果不加这个字段需要先关联查询父节点、再从父节点关联查询用户) 本项目基于gin+gorm脚手架 https://github.com/Gourouting/singo package models import "time" type Comment struct { ID ui...阅读全文

博文 2019-10-24 22:32:47 aside section._1OhGeD

BASE64编码原理与Golang代码调用

一.概念简介 Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2^6=64,所以每6个比特为一个单元,对应某个可打印字符。3个字节有24个比特,对应于4个Base64单元,即3个字节可由4个可打印字符来表示。它可用来作为电子邮件的传输编码。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9,这样共有62个字符,此外两个可打印符号在不同的系统中而不同。 Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据 二.代码调用 在Golang中提供了代码库可以供我们直接调用,用于实现Base64的编码与解码,其提供了对两种格式的数据进行编码(与解码) const encodeStd = "ABCDEFGHIJKLMNOPQRSTUVWXYZabc...阅读全文

博文 2018-08-15 20:36:42 暗黑魔君

gf框架之gvalid – 强大灵活的数据校验/表单校验模块

文章目录 校验规则校验方法使用示例单数据校验多数据校验 gf提供了非常强大易用的数据校验功能,通过gvalid包提供,封装了40种常用的校验规则,支持单数据多规则校验、多数据多规则批量校验、自定义错误信息、自定义正则校验等特性。由于gf是模块化、低耦合设计,gvalid包也可以在项目中单独引入使用。 使用方式: import "gitee.com/johng/gf/g/util/gvalid" 1 import "gitee.com/johng/gf/g/util/gvalid" 校验规则 40种常用的校验规则: required 格式:required 说明:必需参数 required-if 格式:required-if:field,value,... 说明:必需参数(当任意所给定字段值与...阅读全文

WTF——码农专属终端的仪表板

之前虫虫的文章中介绍过很多终端软件,也介绍过分屏神器Screen和Tmux但是毕竟他们使用配置有一点点的难度。那么有没有一款简单易用,界面美观的终端仪表板程序,实现各种所需信息的展示呢,答案是肯定的,那就是本文我们要介绍的另一个神器WTF。 WTF——码农专属终端的仪表板 WTF是一个简单,易于配置的终端信息仪表板。使用Golang语言编写的,使用简单的一个YAML配置和各种模块就可以从几个不同的源中提取我们所需数据。这些模块包括系统信息、安全信息、电源信息、天气、Git问题跟踪、国际时间,谷歌表格以及更多内容。也能实现交互式窗格,进行操作。 安装 WTF的安装很简单,可以直接安装下载适合你操作系统(Windows、Linux、MacOS )二进制包,下载解压就可以用。也可以下载源码编译安装...阅读全文

博文 2019-02-02 19:34:43 虫虫猎奇ccsearchit

前端遇上Go: 静态资源增量更新的新实践

总第259篇2018年 第51篇为什么要做增量更新美团金融的业务在过去的一段时间里发展非常快速。在业务增长的同时,我们也注意到,很多用户的支付环境,其实是在弱网环境中的。大家知道,前端能够服务用户的前提是 JavaScript 和 CSS 等静态资源能够正确加载。如果网络环境恶劣,那么我们的静态资源尺寸越大,用户下载失败的概率就越高。根据我们的数据统计,我们的业务中有2%的用户流失与资源加载有关。因此每次更新的代价越小、加载成功率越高,用户流失率也就会越低,从而就能够变相提高订单的转化率。作为一个发版频繁的业务,要降低发版的影响,可以做两方面优化:更高效地使用缓存,减少静态资源的重复下载。使用增量更新,降低单次发版时下发的内容尺寸。针对第一点,我们有自己的模块加载器来做,这里先按下不表,我们...阅读全文

博文 2018-07-06 17:46:17 美团技术团队

Go语言字符串浅析

在Go语言中,字符串就是一个只读(read-only)的,可以包含任意字节(byte)的切片(slice)。由于Go源码文件都是使用UTF-8编码的,所以直接在源码中输入的字符串也都是用UTF-8编码的(前提是字符串里没有byte-level escapes,即字节层面上的转义)。请看下面这个例子: package main import "fmt" func main() { s := "日志log" fmt.Println(len(s)) } 执行结果: 9 s是一个UTF-8编码的字符串,“日志”两个汉字各占3个字节,所以一共是9个字节。 再看一个例子: package main import "fmt" func main() { s:="\xFF\xFF" fmt.Println(...阅读全文

博文 2017-06-24 19:16:27 肖楠

ICAP: 互换客户端地址协议

什么是ICAP?从以太坊Homestead指南的词汇表中可以看出: Interexchange Client Address Protocol, an IBAN-compatible system for referencing and transacting to client accounts aimed to streamline the process of transferring funds, worry-free between exchanges and, ultimately, making KYC and AML concerns a thing of the past. ICAP 互换客户端地址协议,一种IBAN兼容系统,用于引用和处理客户帐户,旨在简化资金转移流程,在...阅读全文

【Go】高效截取字符串的一些思考

文链接:https://blog.thinkeridea.com/... 最近我在 Go Forum 中发现了 String size of 20 character 的问题,“hollowaykeanho” 给出了相关的答案,而我从中发现了截取字符串的方案并非最理想的方法,因此做了一系列实验并获得高效截取字符串的方法,这篇文章将逐步讲解我实践的过程。 字节切片截取 这正是 “hollowaykeanho” 给出的第一个方案,我想也是很多人想到的第一个方案,利用 go 的内置切片语法截取字符串: s := "abcdef" fmt.Println(s[1:4]) 我们很快就了解到这是按字节截取,在处理 ASCII 单字节字符串截取,没有什么比这更完美的方案了,中文往往占多个字节,在 utf8...阅读全文

博文 2019-10-31 09:02:38 thinkeridea

Golang实现统计文件内容的字符,数字,符号数量

废话不多说,直入主题 今天学习了通过Golang语言实现了统计文件内容中的字符,空格,数字,符号的数量, 当然也可以用来统计更多,例如:统计汉字,大写/小写字母等...仅需要更改部分代码即可. 知识点总结 代码实现前的思路分析: 打开一个文件,创建一个reader 每读取一行,就去统计该行有多少个字符,数字,空格等数量 然后将统计的数量储存到一个结构体内 引入的包有:bufio, io,os,fmt 源代码参考 package main import ( "bufio" "fmt" "io" "os" ) /* 代码编写思路: 1- 打开一个文件,创建一个reader 2- 每读取一行,就去统计该行有多少个字符,数字,空格等数量 3 - 然后将结果存到一个结构体内 */ // 定义一个结构体...阅读全文

博文 2019-10-13 00:32:52 aside section ._1OhGeD

汇总文件的相关操作

**我们在进行文件的相关操作时,往往不明白在哪种情况下使用那些函数,每次查百度导致开发效率低下,我这里列举一些方便以后查询:** * **读取整个文件** * **从文件的某个位置开始,进行读、写n个字符操作** * **拷贝文件到另一个文件,或拷贝文件的前面n个字符到另一个文件** * **将多个文件汇聚到一个文件来进行操作** * **将多个字符同时写到多个文件中** * **获取文件的相关信息(名称、大小、是否为文件夹、文件权限、创建、最后访问、最后修改时间、绝对路径、重命名操作、是否存在)** * **获取文件夹的所有文件** * **将一个文件的内容写入到另一个文件中,可控制写入内容** **1、读取整个文件** ```go func test1() { f, err := os....阅读全文

博文 2018-07-31 15:23:01 embiid

golang-101-hacks(10)——String

注:本文是对golang-101-hacks中文翻译。 在Go中string是由不可变的字节数组构成的。一旦赋值,就不能修改字符串的值。例如 In Go, string is an immutable array of bytes. So if created, we can't change its value. E.g.: package main func main() { s := "Hello" s[0] = 'h' } 编译结果会提示错误: The compiler will complain: cannot assign to s[0] 对字符串的修改可以将其转换为“byte”数组。但是实际上您并没有对原始字符串进行修改操作,改变的只是一个原始字符串的副本。 To modify...阅读全文

博文 2019-05-30 23:34:40 羊羽share

算法练习之寻找不重复最长字符串

题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters ...阅读全文

博文 2019-08-18 05:32:46 陌无崖