Go语言实战技巧(3)

1. go 命令(build, install, test,快速略过) 2. cgo(调用C代码)import "C"之前存放被注释的C代码。详细参考https://golang.org/cmd/cgo/。使用cgo命令添加C编译选项,如// #cgo LDFLAGS: -L/go/src/foo/libs -lfoo。3. vendor(vendor目录)将项目使用的第三方库放到vendor目录,防止项目间不同版本间冲突。解决第三方库多项目多版本冲突问题。并不解决第三方库版本管理和自动更新问题...阅读全文

简书 2017.08.21 20:43 海吹的风

探索C++与Go的接口底层实现

1、C++ 中的“接口” C++并没有明确的“接口”,一般约定继承某个类,已达到接口的“实现”。 首先我们来看下单继承的内存布局(<font color= Crimson size=4>依赖各厂商的实际实现,这里仅以微软实现为例进行说明····感谢宇宙最强IDE····</font>) 其多态主要由虚函数表(vfptr)实现 : 指针或引用调用虚函数时,在运行时由对象的虚函数表+函数声明顺序决定绑定到哪个函数上 class IDuck { public: //嘎嘎地叫 virtual void ...阅读全文

简书 2017.08.21 17:51* 语鬼_7022

Referrer Policy 介绍

当用户在浏览器上点击一个链接时,会产生一个 HTTP 请求,用于获取新的页面内容,而在该请求的报头中,会包含一个 Referrer,用以指定该请求是从哪个页面跳转页来的,常被用于分析用户来源等信息。但是也有成为用户的一个不安全因素,比如有些网站直接将 sessionid 或是 token 放在地址栏里传递的,会原样不动地当作 Referrer 报头的内容传递给第三方网站。所以就有了 Referrer Policy,用于过滤 Referrer 报头内容,目前是一个候选标准,不过已经有部分浏览器支持...阅读全文

Go语言中文网 2017-08-21 13:23:03 xnotepad

Golang代码规范

Golang代码规范 参考https://golang.org/doc/effective_go.html 项目目录结构规范 PROJECT_NAME ├── README.md 介绍软件及文档入口 ├── bin 编译好的二进制文件,执行./build.sh自动生成,该目录也用于程序打包 ├── build.sh 自动编译的脚本 ├── doc 该项目的文档 ├── pack 打包后的程序放在此处 ├── pack.sh 自动打包的脚本,生成类似xxxx.20170713_14:45:35.t...阅读全文

boya blog 2017-07-03 00:00 boya

GO语言:json转map

使用go语言将json解析到map里,这里主要使用到encoding/json包下的Unmarshal()函数。 函数原型: func Unmarshal(data []byte, v interface{}) error Unmarshal函数解析json编码的数据并将结果存入v指向的值。 json数据: { "device": "1", "data": [ { "humidity": "27", "time": "2017-07-03 15:23:12" } ] } 整体代码: packag...阅读全文

简书 2017.08.02 12:24 Mdroid

AST解析基础: 如何写一个简单的html语法分析库

前言 虚拟语法树(Abstract Syntax Tree, AST)是解释器/编译器进行语法分析的基础, 也是众多前端编译工具的基础工具, 比如webpack, postcss, less等. 对于ECMAScript, 由于前端轮子众多, 人力过于充足, 早已经被人们玩腻了. 光是语法分析器就有uglify, acorn, bablyon, typescript, esprima等等若干种. 并且也有了AST的社区标准: ESTree. 这篇文章主要介绍如何去写一个AST解析器, 但是并不是...阅读全文

简书 2017.08.20 23:35 一路行歌

GO语言面向对象编程之方法

#GO语言面向对象编程之方法(上)# <font size=5>学过C++或者JAVA的程序员,对于面向对象编程应该是很熟悉的。大家都知道面向对象编程的三大基本特征:封装,继承,多态。在GO语言中,简化了很多面向对象编程的概念,比如 继承,虚函数,构造函数,析构函数,隐藏指针等。对于接触过面向对象编程的人来说,GO语言的面向对象编程更加的简单易懂。</font> ##方法(类)的定义 <font size = 4>在函数声明时,在其名字之前放上一个变量,即是一个方法。这...阅读全文

Go语言中文网 2017-08-20 23:19:43 wenxuwan

树莓派开发Go语言之初尝

最近翻起了自己之前购买的树莓派,决定拿起树莓派结合自己正在学习的Go 语言搞搞事情。这里第一先搭建环境配合运行Go 程序。 一、树莓派的安装 环境介绍: 树莓派3B、WIN10、16G CLASS10 TF卡、读卡器、Advanced IP Scanner、MobaXterm、go1.8.3.linux-armv6l.tar.gz 树莓派是直接启动SD卡上的系统,这里有一个16GB的TF卡,一个读卡器,连接到电脑。在电脑上下载一个软件 win32DiskImager 。并且到树莓派官网下载一个最...阅读全文

简书 2017.08.20 22:37 爪爪熊大坏蛋

Golang的Redis客户端

Redis是目前非常流行的内存缓存,因为数据结构丰富和高性能而著称。本篇将介绍Golang中使用redis的golang客户端Go-Redis。 目前比较好的客户端有Go-Redis和Redigo。 使用介绍 安装 go get -u github.com/go-redis/redis Example ... import "github.com/go-redis/redis" ... client := redis.NewClient(&redis.Options{ Addr: "localh...阅读全文

简书 2017.08.20 17:13 leegoway

[LeetCode By Go 29]492. Construct the Rectangle

马上写了30道题目了,使用golang写起题目来代码简洁明了,还可以非常方便的写测试用例,加上Goland可以进行调试,有如神助。 但无论如何,写了测试就会依赖测试判断对错,用了debug就会依赖debug来寻找出错的地方,这些其实都是自己大脑偷懒把压力推到了测试和工具上,在日常开发上可以这样提高代码质量和工作效率,但是在笔试面试时基本上不会用编译器调试代码,更别说写测试用例了。 因此,之后如果能直接把题目解出来,就不写测试用例了,我也省(写)时(烦)间(啦)嘛。 题目 For a web de...阅读全文

简书 2017.08.20 17:30 miltonsun

30. Readers读取数据流

go语言的 io 包指定了 io.Reader 接口。go语言标准库包含了这个接口的许多实现,包括文件、网络连接、压缩、加密等等。 io.Reader 接口有一个 Read 方法: func (T) Read(b []byte) (n int, err error) 在程序中,我们使用循环读取数据流,直到 error 返回 io.EOF 。 我们建立一个每次以 8 个字节读取 strings.Reader 的输出的程序示例。 package main import( "fmt" "strings...阅读全文

简书 2017.08.20 09:47 厚土火焰山

PHP之剑走偏锋的DeepCopy

php的深拷贝和浅拷贝问题,普通变量对象的赋值 = 是深拷贝,& 是浅拷贝。 $a = 1; $b = $a; $b = 2; $c = &$b; $c = 3; echo $a . PHP_EOL; echo $b . PHP_EOL; echo $c . PHP_EOL; 输出结果: 1 3 3 类对象的拷贝问题就得看下php版本了。php4时类对象的赋值=就是一次深拷贝。php5时类对象的赋值=就是一次浅拷贝。下面的代码是在php5.6.29的环境上运行的 <?php // php版本是5...阅读全文

简书 2017.08.19 22:19* ieasy_tm

Golang之情非得已的DeepCopy

续日今天问我:Golang里面如果做结构体的深拷贝呢?他说他的excelize库被网友爆出一个Bug: 改变sheet2页上的数据,sheet1上的数据会一起发生变化,最后他定位到问题是由于自己做了两个sheet结构体的浅拷贝导致的。因为sheet对应的结构体的特殊性其必须是指针类型。是啊。。。这样就坑了,Golang里面怎么做一个超级无敌复杂结构体的指针变量的深拷贝呢?给个例子: type KDeepCopy struct { A map[string]string B []string C ...阅读全文

Runtime 中的消息机制

说道Objective-C里面的消息机制,大部分人都知道是调用方法其实就是发送消息,一个叫objc_msgSend的东西负责的。今天结合《编写高质量iOS与OS X代码的52个有效方法》趴一趴消息机制。 为什么Objective-C里会有消息机制 这就是语言的基因问题了Smalltalk,之前在一本叫《代码的未来》了解到Smalltalk是一门比较古老的语言,在 Smalltalk 中一切皆对象,一切调用都是发消息。在它之前有Lisp 和 FORTRAN、COBOL并称为“古代编程语言三巨头”。...阅读全文

简书 2017.08.19 14:31 Ticsmatic

Go 语言编程实例(七)

本节主要分享:字符串数字解析、URL解析、SHA1HASH、BASE64 Go 字符串数字解析 从字符串中解析出数字,许多场景都需要这么做。Golang 内置的 strconv 包中提供了相关的函数可供使用。 package main import ( "strconv" "fmt" ) func main(){ //后面的64是 64bits 的意思 f,_ := strconv.ParseFloat("1.456",64) fmt.Printf("%T %f\n",f,f) //0 表示使用...阅读全文

简书 2017.08.19 14:36 爪爪熊大坏蛋

线上服务CPU100%问题快速定位实战

功能问题,通过日志,单步调试相对比较好定位。 性能问题,例如线上服务器CPU100%,如何找到相关服务,如何定位问题代码,更考验技术人的功底。 58到家架构部,运维部,58速运技术部联合进行了一次线上服务CPU问题排查实战演练,同学们反馈有收获,特将实战演练的试题和答案公布出来,希望对大家也有帮助。 题目某服务器上部署了若干tomcat实例,即若干垂直切分的Java站点服务,以及若干Java微服务,突然收到运维的CPU异常告警。问:如何定位是哪个服务进程导致CPU过载,哪个线程导致CPU过载,哪...阅读全文

微信公众平台 2017-08-18 58到家

一文让你迅速读懂Serverless

【编者的话】Serverless架构,或者称为无服务器架构,是最近几年新冒出来的一种架构风格。本文主要介绍的是Serverless下包含的两个概念:FaaS、BaaS。 【3 天烧脑式基于Docker的CI/CD实战训练营 | 北京站】本次培训围绕基于Docker的CI/CD实战展开,具体内容包括:持续集成与持续交付(CI/CD)概览;持续集成系统介绍;客户端与服务端的 CI/CD 实践;开发流程中引入 CI、CD;Gitlab 和 CI、CD 工具;Gitlab CI、Drone 的使用以及实...阅读全文

DockOne.io 2017-08-16 克劳德同学