Golang JSON

    博客有段时间没更新了,最近刚刚换了工作,入坑了区块链。 最近帮同事解决了一个修改Ethereum项目中struct结构,但是序列化结果不变的问题,其中涉及了go generate和json序列化等知识,今天决定先整理一下json序列化的部分,以后有时间再总结go generate。 我使用的go版本 go version go1.11.1 windows/amd64 一个简单的例子 package main import ( "encoding/json" "fmt" "time" ) type Data struct { Id i

    浏览器阻止的不安全端口

    今天在写一个http服务的时候,随手用了一个6666的端口,然而在Chrome中访问时却显示 无法访问此网站 。 首先我怀疑可能是http服务没有正常启动,但是并没有发现程序报错,并且我在cmd下运行: netstat -ano|findstr "6666" 发现6666端口处于监听状态。 那么换一个端口试试吧,我随便换了一个端口,再访问就正常了,感觉是6666这个端口有问题,什么原因呢? 我又改回6666,改用Firefox访问: Firefox的提示比较明显,浏览器出于安全考虑而阻止了一些可能不安全的端口。我又回去看了一下Chrome,原来是我太粗心,没有仔细看报错信

    Wireshark在Windows系统下抓取Localhost数据包

    今天在写一个小东西的时候,发现客户端和服务器通信时,客户端收不到服务器发回的消息,于是决定用wireshark抓一下包,看看是服务器没回,还是客户端有bug。 在wireshark下使用指定端口进行过滤,发现并没有抓取到任何数据包,然而服务器已经正常打印了客户端的请求内容,因此怀疑是wireshark的问题。 Google了一下,在stackoverflow中找到了答案。原因是默认使用的WinPcap不能抓取loopback设备。解决的方法有很多,我选择了安装Npcap,使用wireshark时,选择使用Npcap Loopback Adapter就可以了。 Npcap Loopback Ad

    逆波兰表示法的Golang实现

    最近在看程杰写的《大话数据结构》,之前也看过他写的《大话设计模式》,虽然书中好多段子都很“尬”,但是整体风格还是很合我的胃口的。 今天看到第四章,在介绍栈的时候提到了逆波兰表示法,这个算法好像上学的时候在POJ 上面做过。算法我也好久没碰了,今天用Golang实现一下,就当练练手吧。 代码很简单,我写了比较详细的注释,那就直接看代码吧: package main import ( "bufio" "bytes" "fmt" "os" "strconv" ) type node struct {

    Golang Sprintf 源码分析

    昨天晚上在地铁上,看了一篇公众号推送的文章—— 深度 | 从Go高性能日志库zap看如何实现高性能Go组件。 文章里提到了日志库使用fmt.Sprintf带来的性能问题。我之前也写过一个基于fmt.Sprintf的日志小轮子,当时也没有太关注这个方法的具体实现,今天有空,就稍微深入的研究一下源码吧。 我使用的go版本 go version go1.10.3 windows/amd64 一个简单的例子 package main import ( "os" "log" "runtime/pprof" "time" &