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

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

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

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

这家前美图技术副总裁入职的公司值得你关注—深圳AfterShip

## 资讯:原美图技术副总裁洪小军加入 AfterShip 出任 CTO。 欢迎各位加入。可在拉勾或者 boss 搜索 aftership 了解详细的岗位,或者直接发 CV 到我们的邮箱: xh.wang@aftership.com 洪小军的职业生涯历经飞信、微博、美图这几个公司的关键发展历程,完整的经历了移动互联网发展的十年,今天我们有机会采访到他,聊他这一次的职业选择,同时也进一步了解他选择的这家公司。 ## 洪小军是谁?— AfterShip CTO ### 曾任: 美图 技术副总裁 微博 平台架构团队负责人 中国移动飞信 架构师 ### 技术影响力: 厦门 TGO 鲲鹏会第一任会长 全球架构师峰会优秀出品人 顶级技术大会分享议题和出品专题 [全球软件开发大会 /全球架构师峰会 /全球...阅读全文

博文 2019-06-05 19:50:39 wangxihua916

[Go]Log记录

后端系统中的Log是相当重要的,做过高并发服务的同学都会认同这一点。相对而言,调试已经用处不大了,对于这样的项目,我现在也习惯了这种开发方式,有两个原因:1.debug只能在开发环境,到产线环境就不灵了。2.在并行计算下,debug可能无法发现潜在的问题。 有了以前做node.js的经验,放弃debug没有想象中那么可怕,只要我们程序设计合理,结构清晰,日志完整,看到异常信息后基本都可以快速定位问题所在。 做Java的时候有log4j,做.NET程序的时候有log4net, 做Node.js的时候有log4js....上述几个模块用了都不错,因此做Go项目自然选择了Log4go。 话说这个log4go并不完善,而且两年没维护了,白瞎了这么好的名字。比较严重的是程序退出可能有日志没有flush...阅读全文

博文 2014-11-11 17:00:01 abv123456789

这家前美图技术副总裁入职的公司值得你关注

## 资讯:原美图技术副总裁洪小军加入 AfterShip 出任 CTO。 欢迎各位加入。可在拉勾或者 boss 搜索 aftership 了解详细的岗位,或者直接发 CV 到我们的邮箱: xh.wang@aftership.com 洪小军的职业生涯历经飞信、微博、美图这几个公司的关键发展历程,完整的经历了移动互联网发展的十年,今天我们有机会采访到他,聊他这一次的职业选择,同时也进一步了解他选择的这家公司。 ## 洪小军是谁?— AfterShip CTO ### 曾任: 美图 技术副总裁 微博 平台架构团队负责人 中国移动飞信 架构师 ### 技术影响力: 厦门 TGO 鲲鹏会第一任会长 全球架构师峰会优秀出品人 顶级技术大会分享议题和出品专题 [全球软件开发大会 /全球架构师峰会 /全球...阅读全文

博文 2019-05-31 08:40:32 wangxihua916

关于 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语言资深服务器端开发工程师!

职位要求: - 在架构师的协助下,实现系统功能 - 负责产品化组的服务端开发工作 - Review代码,并提出修改意见 - 为功能编写单元测试 - 工作积极主动,擅于思考问题,能够主动沟通与解决问题 - 精通和熟悉主流语言的至少一门C/C++/Java/C#/Python/PHP/Go/Ruby/Erlang等 - 熟悉Linux工作环境,熟悉至少一种数据库编程 - 熟悉HTTP协议,了解Web安全 - 外语文档阅读能力 - 熟悉Go语言优先 - 有管理经验或架构经验优先 - 参与过开源项目优先 地点是在上海地铁二号线金科路附近,公司为知名云存储公司,如果有兴趣详细沟通可以通过以下联系方式了解具体详情 - QQ 314820246 - 手机 159019...阅读全文

Golang热加载配置实践

前言 生产环境上所输出的日志级别较高不利于定位,会碰到这样一种场景,我们改配置修改日志级别,再重启,以期望定位问题,然而问题重启后不浮现了,所以热加载配置有必要添进去。 实践 直接上代码: package main import ( "encoding/json" "fmt" "io/ioutil" "os" "os/signal" "syscall" "time" ) type Config struct { Mode string `json:"Mode"` } var ( config *Config ) func loadConfig() { f, err := ioutil.ReadFile("config.json") if err != nil { fmt.Println("[...阅读全文

博文 2015-11-25 11:00:03 chenwenhao0304

golang项目访问https的问题

一个golang的项目,使用了腾讯云的短信服务,腾讯云的短信服务URL是https://yun.tim.qq.com/v5/tlssmssvr/sendsms?sdkappid=xxxxx&random=xxxx,在开发平台,可以正常使用。编译后部署到生产平台,短信发不出来了。为了定位问题,找了一台干净的测试机,部署后也发不出短信,因此判断生产平台的云服务器没有问题。 在测试机上,经过调试,终于定位错误信息:x509: failed to load system roots and no roots provided 搜索错误信息,首先找到这篇《go语言在不支持cgo的情况下访问https链接》,看完内容后直觉这个解决方法不对,太不优美了。接着看到《go语言获取https报错x509: fa...阅读全文

博文 2017-10-20 13:03:16 ankexun

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

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

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

Go语言 北京UTC+8 时间问题

go语言(golang)时间问题: 获取系统当前时间(2017-06-05 16:22:30.628247233 +0800 CST): curNow := time.Now().Local() 得出的结果有时会出现:2017-06-05 8:22:30.628247233 +0800 CST,与当前系统时间相差8小时 解决问题: 只要在 init中 或者 相关时间调用函数的代码使用之前加入如下代码: 方案一、 timelocal = time.FixedZone("CST", 3600*8) time.Local = timelocal 方案二、 timelocal = time.LoadLocation("Asia/Chongqing") time.Local = timelocal 之...阅读全文

博文 2017-06-05 09:03:22 koalaone

关于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

最佳日志实践(v2.0)

----- 0. 缘起 ----- 大约在三年前,我曾经写过一篇 最佳日志实践 ( http://link.zhihu.com/?target=http%3A//blog.jobbole.com/56574/ ) ,还被码农周刊选为那年的 最受欢迎技术干货 ( http://link.zhihu.com/?target=http%3A//oiolong.github.io/linux/2015/01/04/manong-2014-collection.html ) 之一。当时我任职于网易杭州研究院的存储平台组,主要做网易对象存储(NOS)的开发和部分运维工作。由于网易云音乐,易信等几个重要产品陆续上线,业务压力剧增,我们的系统在前前后后大约半年的时间里,出现了大大小小各种事故。通过不断总结事...阅读全文

博文 2017-07-11 02:07:36 王健

用go run命令启动main package中的多个文件

通常在main package中只有一个main.go文件,里面有程序的入口函数main()。 使用 go run main.go 就可以跑起程序了。 但是如果main.go文件比较长,希望将main.go拆分多个文件,比如在main package下,有a.go , b.go和main.go。 这个时候再用 go run main.go就会报错。 使用 go run *.go 可以解决问题。 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('

博文 2017-01-06 15:00:03 bdss58

go源码阅读笔记(math.3)

go源码阅读笔记(math.3) dim.go package math // Dim returns the maximum of x-y or 0. // // Special cases are: // Dim(+Inf, +Inf) = NaN // Dim(-Inf, -Inf) = NaN // Dim(x, NaN) = Dim(NaN, x) = NaN func Dim(x, y float64) float64 func dim(x, y float64) float64 { return max(x-y, 0) } func dim(x, y float64) float64 ,返回x-y与0的较大者 这里我们可以看出,调用的函数max()进行了各种异常判断,所以在di...阅读全文

博文 2016-03-18 16:00:03 qq_15437667

整理下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

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

本站主题和资源等页面改版完成

经过紧张的开发,本站主题和资源等页面改版完成。 1.内容支持 @ 用户,可以拉他来帮忙解决问题,会给他发系统消息,如 @Unknown 2.支持 emoji 表情. :smile: :clap: :plus1: 3.支持上传图片…… 4.其他更多功能…… 注意:如果列表页样式有点乱,请执行 ctrl+f5 强制刷新一下...阅读全文

golang不定参数

1.有时候想一个函数中传入的参数很可能是不定的,除了可以使用: func funcname(...interface{}){ } 2.也可以将许多参数放进一个数组中,然后作为参数传入函数(或许会觉得这样有点多此一举,但是很可能存在历史遗留问题): func funcname(args []interface{}){ fmt.Print(args...) //args...是将一个数组按顺序变成不定参数传入,这个还真的挺好用的 } $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('

博文 2015-11-30 15:00:42 vrinux

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源码阅读笔记(math.1)

go源码阅读笔记(math.1) abs.go func Abs(x float64) float64 package math // Abs returns the absolute value of x. // // Special cases are: // Abs(±Inf) = +Inf // Abs(NaN) = NaN func Abs(x float64) float64 { // TODO: once golang.org/issue/13095 is fixed, change this to: // return Float64frombits(Float64bits(x) &^ (1 << 63)) // But for now, this generates bet...阅读全文

博文 2016-03-16 00:00:00 qq_15437667

抖音服务端招聘!北上深杭均岗位!

机遇与挑战 我们是抖音国内产品研发团队,我们需要支撑一个数亿日活用户的产品研发工作,这包括各业务方向的功能演进和迭代、核心业务系统建设、业务架构升级、运营支撑系统建设等。 我们面对的是亿级日活 X 亿级日投稿 X 千亿级别的在线业务数据,我们需要在国内和海外的跨州多数据中心多活的环境下构建应用系统。 面对每年都翻倍的业务增长,我们需要持续地优化技术方案和架构,在有限的计算资源下提供更好的用户体验。我们有大量的核心系统需要被重新设计以更好的面对未来更大的业务挑战。 挑战即机遇,在应对日益扩大的问题域的过程中,每个工程师都需要充分追求极致且不断地深化专业知识,这也为每个工程师的成长提供了肥沃的土壤。 岗位要求 TechLead 具备良好的业务抽象能力,能对复杂业务逻辑进行良好的概念抽象,形成核心...阅读全文

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

Erlang和Golang的几点粗浅的比较

我最早使用的语言是Java和Python, 并且一直都对Python充满好感, 我喜欢这种很朴实和高效率的感觉, 但我却最后没有采用Python,原因其实也很简单, 我就是不喜欢缩进语法, 就跟很多人换工作仅仅是为了屏幕更大一点一样, 另外就是有了同样很棒的可选方案, 这就是Ruby, 所以我最终采用了Ruby作为主力编程语言, 同样也为不能使用Python而有一点小遗憾,毕竟Python的健壮性比Ruby好很多,只不过Ruby也一直在进步, 所以这一点无伤大雅 我们都知道,无论是Python还是Ruby,甚至Java, 都是在解决业务层的问题, 属于应用型语言, 以解决业务逻辑为主, 但还有一个领域是系统领域,偏网络层和底层操作,在这一块我一直在寻找一种优雅的方案, C++被我首先给淘汰掉...阅读全文

博文 2014-10-10 07:00:01 educast

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

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

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

指向切片的指针取切片中的值得问题

package main import ( "fmt" ) func main() { //指向切片的指针 var p = new([]int) *p = append(*p, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0) for i, v := range *p { fmt.Println(i, v) } fmt.Println(len(*p)) fmt.Println(p[9]) } 上述代码的最后一句无法输出,我想问下,如果是指向数组的话,最后一句代码是可以输出的,而对于指向切片的指针,该怎...阅读全文

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根据配置的时间和时区计算定时任务是否到了刷新时间

起因 思路 细化 遗留问题 起因 很多时候我们会碰到这样的需求,每天某个时候需要定时执行某个任务,比如定时发邮件、定时发推送消息等,而这个定时是针对当地时间的,比如每天中午12点发推送消息给玩家提醒可以上线领金币啦。 然而,中国的12点和越南的12点就不是同一个12点,所以需要通过时区计算是否到了该执行任务的时候。 思路 先来看一下如何根据时区计算约定的时间。假设现在需要晚上20点,执行任务,时区为西3时区。首先生成一个格林威治时间的20点 utcTime := time.Now().UTC() targetTime :=time.Date(utcTime.Year(),utcTime.Month(),utcTime.Day(), 20, 0, 0, 0, utcTime.Location(...阅读全文

博文 2016-11-04 14:00:04 changjixiong

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

golang新版本对于cgo支持的一个坑

文件test.h如下 #ifndef _TEST_H #define _TEST_H #ifdef __cplusplus extern "C" { #endif extern void myTest(); #ifdef __cplusplus } #endif #endif 文件test.cc如下 #include "_cgo_export.h" extern "C" { void myTest() { test(); } } 文件test.go如下 package test /* #include "test.h" */ import "C" import () func Test() { C.myTest() } //export test func test() { println(...阅读全文

博文 2015-06-17 20:17:42 HopingWhite

erlang对比golang,如何选择?

我最早使用的语言是Java和Python, 并且一直都对Python充满好感, 我喜欢这种很朴实和高效率的感觉, 但我却最后没有采用Python,原因其实也很简单, 我就是不喜欢缩进语法, 就跟很多人换工作仅仅是为了屏幕更大一点一样, 另外就是有了同样很棒的可选方案, 这就是Ruby, 所以我最终采用了Ruby作为主力编程语言, 同样也为不能使用Python而有一点小遗憾,毕竟Python的健壮性比Ruby好很多,只不过Ruby也一直在进步, 所以这一点无伤大雅 我们都知道,无论是Python还是Ruby,甚至Java, 都是在解决业务层的问题, 属于应用型语言, 以解决业务逻辑为主, 但还有一个领域是系统领域,偏网络层和底层操作,在这一块我一直在寻找一种优雅的方案, C++被我首先给淘汰掉...阅读全文

博文 2016-06-07 17:00:02 jiang314

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语言实现短链接生成算法

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

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

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

技术干货:日志数据可视化分析展示平台的建设之路

项目背景某企业是一家专注于车联网、视频CDN等应用技术的科技创新型企业,拥有智能车载、vsdn等多个业务系统。这些系统每天都会产生大量日志,以往的日志管理系统不能满足实时分析的需求。由于平台查询响应慢等原因,当某个系统出现问题时,所产生的日志数据无法被及时的查看,也就无法定位问题所在,造成业务人员有数据却用不起来的窘状。如何充分整合这些日志数据,充分挖掘其价值,是企业急需解决的问题。项目目标DataHunter最终为该企业提供一套包括带宽、调度、流量日志解析入库等功能模块的完整解决方案。让业务人员能够在看板上实时查看日志数据,并可以根据这些数据实现自由配图和维度查询。业务要求1、带宽日志实时分析,实现分钟聚合统计 (全国共有80多个节点,数据量每天大约35亿条,1.6TB)2、支持按照不同的...阅读全文

博文 2017-10-25 03:05:01 DataHunter小数