GO JsonStr 2 obj

//project main.go package main import ( "encoding/json" "fmt" ) func main() { fmt.Println(help()) b := []byte(`{ "Title": "Go语言编程", "Authors": ["XuShiwei", "HughLv", "Pandaman", "GuaguaSong", "HanTuo", "BertYuan", "XuDaoli"], "Publisher": "ituring.co...阅读全文

2017-05-10 20:00:47 痞子汤
阅读:1084 评论:0

Golang语言常用算法

在学习golang语言,文档看的实在是乏味,就想着把常用的算法做个实现,边写变学习,想来效果还是不错的! 1. 堆排序 package main import "fmt" func buildHeap(array []int, length int) { var i, j int; for i = 1; i < length; i = i + 1 { for j = i; j > 0 && array[j] > array[(j-1)/2]; j = (j - 1)/2 { array[j], ...阅读全文

2017.05.12 15:02* Diogoxiang
阅读:903 评论:0

对称加密算法和分组密码的模式

对称加密算法,即加密和解密使用一样的密钥的加解密算法。 分组密码(block cipher),是每次只能处理特定长度的一块(block)数据的一类加解密算法。 目前常见的对称加密算法DES、3DES、AES都是属于分组密码。 DES DES,全称Data Encryption Standard,是上一代标准对称加密算法,现已不推荐使用。 密钥:DES是一种将64bit的明文加密成64bit的密文的对称密码算法,它的密钥长度是64bit(每隔7bit会设置一个用于错误检查的bit,因此实际使用密钥...阅读全文

阅读:1774 评论:0

Golang精编100题

能力模型 级别 模型 初级primary 熟悉基本语法,能够看懂代码的意图;在他人指导下能够完成用户故事的开发,编写的代码符合CleanCode规范; 中级intermediate 能够独立完成用户故事的开发和测试;能够嗅出代码的坏味道,并知道如何重构达成目标; 高级senior 能够开发出高质量高性能的代码;能够熟练使用高级特性,开发编程框架或测试框架; 选择题 [primary] 下面属于关键字的是()A. funcB. defC. structD. class 参考答案:AC [prima...阅读全文

2017.04.19 18:33* _张晓龙_
阅读:4450 评论:2

如何在docker中进行gdb调试

环境准备 install nsenter nsenter 工具在 util-linux 包2.23版本后包含。 nsenter 可以访问另一个进程的名字空间。nsenter 要正常工作需要有 root 权限。 很不幸,Ubuntu 14.04 仍然使用的是 util-linux 2.20。 $ cd /tmp; curl https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz | tar -zx...阅读全文

2017.02.18 23:13* _张晓龙_
阅读:1665 评论:0

Golang 优化之路——bitset

写在前面 开发过程中会经常处理集合这种数据结构,简单点的处理方法都是使用内置的map实现。但是如果要应对大量数据,例如,存放大量电话号码,使用map占用内存大的问题就会凸显出来。内存占用高又会带来一些列的问题,这里就不展开说了。还有就是,大量数据存放于map,查找的哈希算法消耗也会很高。这时就该考虑对数据结构进行优化。之前浏览awesome-go时发现了一种叫bitset的数据结构,今天就介绍一下它。 bitset 简介 首先这是一个数据结构。从名字set不难发现,这是一个集合的数据结构。bit...阅读全文

阅读:1337 评论:0

GO 大小端

package main import ( "bytes" "encoding/binary" "fmt" ) func main() { var i uint32 = 1234 // 小端 b := make([]byte, 4) binary.LittleEndian.PutUint32(b, i) fmt.Printf("LittleEndian(%d) :", i) for _, bin := range b { fmt.Printf("%02X ", bin) } fmt.Printf...阅读全文

2017-05-16 15:00:50 痞子汤
阅读:6474 评论:0

Golang + Protobuf 构造通讯协议

Golang 用于写网络通讯非常方便,其中消息通讯就可能会用到跨语言的Protobuf。本文讲述如何使用Protobuf构造Golang的通讯协议。 (1)Protobuf需要protoc,这个只要在github下载编译即可安装。Debian系也可以通过apt来安装。(2)第二个是go的插件,这个同样下载源代码后,执行go build 和 go install就能安装在$GOPATH路径下面,然后把该文件夹加入$PATH就可以使用了。(3)撰写proto文件,详情请参考官方文档。看起来是这样样子...阅读全文

2017.05.18 01:15* Balyon
阅读:1334 评论:0

log4go日志分级输出

//@description 调试日志输出(各级日志采用隔离方式)依赖loggor //@author hanse //@data 2017-04-10 09:31 初稿 // 2017-05-04 21:31 调试 // 2017-05-17 21:31 增加调试模式,大小分割调试OK // 2017-05-25 21:31 修复之前日志文件名称错误 package log4go import ( "log" "runtime/debug" "uti...阅读全文

阅读:1858 评论:1

go 中的模板

方法 1 http.ServeFile(c.Writer,c.Request,"index.html") 方法 2 template.Must(template.ParseFiles("web-05/upload.html")).Execute(c.Writer, nil) 方法 3 r.LoadHTMLGlob("template/*") r.GET("/", func(c *gin.Context) { //http.ServeFile(c.Writer,c.Request,"index.h...阅读全文

2017-05-31 00:03:20 中柠檬
阅读:1168 评论:0

旭日东升百花鸣,手持Docker万里行

前言 区块链技术因为比特币的疯狂而被世人所熟知,最近我司也要准备上区块链项目了。不过在区块链的技术选型上,我与同事产生了分歧。我之前是一个nodejs主义的捍卫者,本来计划上一个基于lisk的区块链项目,不过,在与同事们的交谈中,我了解到了一个新的区块链架构,hyperledge,区块链项目名为fabric。hyperledge fabric用golang开发,基于docker部署。为了能快速深入学习整个框架,我决定开始做技术积累,并写下我积累过程中的技术博客。本文是整个技术博客的开篇文章,我准...阅读全文

2017.05.31 11:53 白昔月
阅读:1202 评论:0

Go的代码调优一例

用tcpcopy导的线上流量,活动数据库也是真实的数据,这是我抓的一份pprof: genius@geniuss-Macbook-air:~/project/src/dsp_masky $go tool pprof ls.prof Welcome to pprof! For help, type 'help'. (pprof) top Total: 14413 samples 1342 9.3% 9.3% 1342 9.3% strconv.ParseUint 1243 8.6% 17.9% 1...阅读全文

2017-06-01 10:03:25 徐学良
阅读:770 评论:0

Web安全

1,XSS(Cross Site Scripting)跨站脚本攻击 (用户对指定网页的信任)攻击者在网页嵌入客户端脚本(如JavaScript),当用户浏览网页时,浏览器运行脚本,达到攻击者的目的,如获取cookie,导航到恶意网站,携带木马等。如:用户A在某个论坛评论区,添加获取登录cookie的JavaScript脚本,用户B登录后,浏览器自动运行用户A加入到评论区的脚本获取用户B的登录名和密码,窃取用户B的隐私。 图片.png XSS的成因及如何避免: 图片.png 图片.png 总结:不...阅读全文

2017.05.31 23:38* 从前慢pearl
阅读:2528 评论:0

GO语言的修饰器编程

之前写过一篇《Python修饰器的函数式编程》,这种模式很容易的可以把一些函数装配到另外一些函数上,可以让你的代码更为的简单,也可以让一些“小功能型”的代码复用性更高,让代码中的函数可以像乐高玩具那样自由地拼装。所以,一直以来,我对修饰器decoration这种编程模式情有独钟,这里写一篇Go语言相关的文章。 看过Python修饰器那篇文章的同学,一定知道这是一种函数式编程的玩法——用一个高阶函数来包装一下。多唠叨一句,关于函数式编程,可以参看我之前写过一篇文章《函数式编程》,这篇文章主要是,...阅读全文

阅读:4100 评论:0

golang 计划任务和windows下服务安装,删除

网站开始使用的是win服务器系统计划任务,添加 XX.bat,设置执行时间 xx.bat中的内容: C:\php\php.exe -q C:\WWW\api\script\AutoCancelOrder.php 目前这种方式是可以正常运行的,最近在看了golang以后,打算使用golang来重新计划任务 cron.go代码如下,go run 之前需要 go get -u github.com/jakecoffman/cron package main import ( "fmt" "github...阅读全文

2017.06.02 09:16* 蜗牛MVP
阅读:1929 评论:0

go6~byte切片trim掉C填充的0

2017.06.02 golang用bytes.TrimSpace无法去掉C初始化数组带来的\0 Golang中字符串与C中的字符串的不同之处:C中的字符串是以\x0为结尾的字节序列,而Golang中的字符串则更严格,并不是以\x0为结尾来判断,而是计算字符串变量的值中的所有字节。 TrimSpace处理的只是空格 解决办法是bytes.Time text = bytes.Trim(text, "\x00")阅读全文

阅读:2169 评论:0

web开源测试工具-siege

简介 Siege是一款开源的压力测试工具,设计用于评估WEB应用在压力下的承受能力。可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。siege可以从您选择的预置列表中请求随机的URL。所以siege可用于仿真用户请求负载,而ab则不能。但不要使用siege来执行最高性能基准调校测试,这方面ab就准确很多。 安装 curl http://download.joedog.org/siege/siege-latest.tar.gz...阅读全文

2017-06-02 16:05:38 快乐动起来
阅读:905 评论:0