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

For Range 的语义

## 前言 为了更好地理解本文中提及的内容,这些是需要首先阅读的好文章: 下面列出 4 篇文章的索引: - 1. [Go 语言机制之栈和指针](https://studygolang.com/articles/12443) - 2. [Go 语言机制之逃逸分析](https://studygolang.com/articles/12444) - 3. [Go 语言机制之内存剖析](https://studygolang.com/articles/12445) - 4. [Go 语言机制之数据和语法的设计哲学](https://studygolang.com/articles/12487) 在 Go 编程语言中,值语义和指针语义的思想无处不在。如前面的文章所述,语义一致性对于完整性和可读性至关...阅读全文

博文 2018-03-16 19:52:41 shniu

【译】为GatsbyJS选择一个合适的后端

文链接 Picking a back-end for GatsbyJS 作者 Ross Whitehouse 不久之前,我又心血来潮想要把我的作品集站点重做一遍(大概六个月就会有这么一次),这回,我打定主意要学着用一用Gastby。但是事情好像还没这么简单。使用Gastby完成前端部分后,你打算怎么处理后端呢?看看这篇文章吧,现在我们有非常多的选择! Gastby 背景:为什么要用Gatsby? 要说还有什么东西的选择是比无头内容管理系统(Headless Content Management System, Headless CMS)的可选项更多的,那就只有静态站点生成器(Static Site Generator, SSG)了。我们可以用Hugo(基于Golang),Jekyll(基于R...阅读全文

博文 2018-11-23 01:34:41 吴子寒

[翻译]Go 数据结构

关于 Go 的内存结构在 Go 内存模型 中已经有介绍,但是内容相对简单,许多细节也一带而过。Ross Cox 的这篇文章 Go Data Structure 讲解得比较系统也很全面的一篇。翻译至此,希望能对大家有帮助。 2009 年的旧文,发现自己当时没有翻译完。所以再次做了增补和修改。如果我没记错,应该已经有人在 OSC 上发表过同一篇文章的翻译了。大家对照参考阅读吧。 ————翻译分隔线———— Go 数据结构 每当给新手介绍 Go 的时候,我发现为了建立起关于哪个操作成本更加高昂的正确观念,将 Go 如何为其值分配内存说明清楚会很有帮助。本文介绍了基础类型、结构体、数组和切片(slice)。 基本类型 先来看看几个简单的例子: 变量 i 的类型是 int,在内存中表现为一个 32 位...阅读全文

博文 2014-10-09 16:20:09 mikespook

go某函数执行超时触发器

#### 在群里讨论怎么限制某函数的执行时间,想了很久,终于找到非常简洁的写法,之所以在这里发表,是因为我见过太多新手写不对! 也许是许久没发文章,就闲来蛋疼发篇文章! #### 废话不多说,直接上2种我个人认为比较好的写法 ### (1)第1种是我目前能想到比较好且耗时时间很稳定的写法,但是不易懂,代码如下: ``` package main import ( "fmt" "time" ) var start time.Time var end time.Time func main() { test := func() { start=time.Now() time.Sleep(5e9) } limitTime1(test, 3e9)//可以将这里的时间改为超过5s end=time.N...阅读全文

博文 2019-12-26 16:58:40 anko

k8s与dns--coredns的一些实战经验

coredns简介 安装新版本k8s,coredns已经成为默认dns了。之前是kube-dns。coredns是一个灵活,可扩展的DNS服务器,可以作为Kubernetes集群DNS。与Kubernetes一样,CoreDNS项目由CNCF主持。但是在实际使用中,需要一些注意的地方。 增加应用的反亲和性,防止coredns调度到一台主机上 coredns 所需要的资源非常小,所以很容易调度到一台主机上。coredns是一个系统组件,我们应该尽量让coredns分散部署,增强其可用性。故在deployment的yaml中增加如下设置: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - la...阅读全文

博文 2019-09-17 10:32:57 iyacontrol

Go语言高阶:调度器系列(1)起源

如果把语言比喻为武侠小说中的武功,如果只是会用,也就是达到四五层,如果用的熟练也就六七层,如果能见招拆招也得八九层,如果你出神入化,立于不败之地十层。 如果你想真正掌握一门语言的,怎么也得八层以上,需要你深入了解这门语言方方面面的细节。 希望以后对Go语言的掌握能有八九层,怎么能不懂调度器!? Google、百度、微信搜索了许多Go语言调度的文章,这些文章上来就讲调度器是什么样的,它由哪些组成,它的运作原理,搞的我只能从这些零散的文章中形成调度器的“概貌”,这是我想要的结果,但这还不够。 学习不仅要知其然,还要知其所以然。 学习之前,先学知识点的历史,再学知识,这样你就明白,为什么它是当下这个样子。 所以,我打算写一个goroutine调度器的系列文章,从历史背景讲起,循序渐进,希望大家能对...阅读全文

博文 2019-03-10 18:34:38 大彬

Go语言之unsafe

文章转自“灰子学技术”,原文链接:https://mp.weixin.qq.com/s/p4ik3GsM3uGb6yvgVVxMdQ很多同学可能很奇怪,Go不是有指针类型了吗?为啥还需要这样一个unsafe的包呢,关键这个包的名字还是这么的让人不放心,叫做不安全包?而这个包又能够做什么呢,可以帮助我们解决那些问题呢?笔者在学习Go的时候,也被这些问题困扰着,于是便自己整理了这篇文章来讲解下,希望对大家有所帮助。1.指针类型介绍:对于Go语言的指针类型来说,指针类型的限制比较多,主要有四点,并且在Go语言的编译阶段就可以检测出来。限制1: 指针不可以进行数学计算。限制2:不同类型的指针不能够相互赋值。限制3:不同类型的指针不能够==或者!=的比较操作。限制4:不同类型的指针不能够相互转化。备注...阅读全文

博文 2019-12-31 14:45:15 ZhDavis

空结构体struct{}解析

本篇文章转自David的"The empty struct"一文,原文地址链接是http://dave.cheney.net/2014/03/25/the-empty-struct 。欢迎大家访问[我的博客](http://zuozuohao.github.io/),代码可以在[@Zuozuohao](https://github.com/Zuozuohao/GolangGOFPatterns)下载。 **Introduction** 这篇文章详细介绍了我最喜欢的Go数据类型,空结构体--struct{}。 空结构体是没有位段的结构体,以下是空结构体的一些例子: ``` type Q struct{} var q struct{} ``` 但是如果一个就结...阅读全文

Go Modules : v2 及更高版本

本文是一篇翻译文章: blog.golang.org/v2-go-modul… 原文作者:Jean de Klerk 和 Tyler Bui-Palsu 译者:befovy 校对:polaris1119 译文由 GCTT 原创编译,Go语言中文网 荣誉推出 简介 本文是 Go modules 系统的第四部分 Part 1: 使用 Go Modules 译文 Part 2: 迁移到 Go Modules 译文 Part 3: 发布 Go Modules 译文 Part 4: Go Modules : v2 及更高版本 (本文) 随着成功的项目逐渐成熟以及新需求的加入,早期的功能和设计决策可能不再适用。 开发者们可能希望通过删除废弃使用的功能、重命名类型或将复杂的程序拆分为可管理的小块来融入他们...阅读全文

博文 2019-12-05 15:34:23 半岛打铁匠

Go - 如何解析 JSON 数据?

概述 最近掉进需求坑了,刚爬上来,评估排期出现了严重问题,下面三张图很符合当时的心境。 谈需求 估排期 开始干 为啥会这样,我简单总结了下: 与第三方对接。 跨团队对接。 首次用 Go 做项目。 业务流程没屡清楚就出排期(大坑)。 需求调整后未进行调整排期(大坑)。 有了这次经验,后期关于如何评估排期也可以和大家唠唠。 废话不多说了,进入今天主题。 今天给大家分享用 Go 如何解析 JSON 数据,包含三种情况,强类型解析、弱类型解析、返回结构不确定 等。 JSON 结构 比如,请求了手机归属地的接口,json 数据返回如下: { "resultcode": "200", "reason": "Return Successd!", "result": { "province": "浙江", ...阅读全文

博文 2020-01-04 14:34:14 訢亮

Go 获取磁盘使用情况(跨平台)

最近在项目中需要根据磁盘使用情况来做一下处理,发现没有什么标准库可以获取磁盘当前使用情况,在网上找了一段代码在 Linux 下运行可以,但在 Windows 跑会抛异常。 后来在网上找到了这篇文章,文章分别给出了两个平台各自获取磁盘使用情况的方法,在此基础上使用golang 的条件编译就可以实现跨平台获取了。 解决这个问题花了大半天,现在项目快结束了有时间就传到 gitlab 上了方便以后使用。 使用示例 获取包 go get gitlab.com/tingshuo/go-diskstate/ 使用 import "gitlab.com/tingshuo/go-diskstate/diskstate" import "fmt" // example func main() { state :...阅读全文

博文 2019-12-12 00:32:45 tingshuo123

Golang并发实践:笔记本秒变暖宝宝

早晨来到办公室,手是非常凉啊,一模笔记本,比手还凉,手指都快不能动了。歪脑筋一动,把笔记本编程暖手宝先暖暖手吧,这不就都暖和了。怎么变呢?当然是你学的Golang并发啦。 package main import ( "fmt" "time" ) // warm 未接到结束信号,不停使用CPU func warm(stop <-chan struct{}) { for { select { case <-stop: fmt.Println("Warm finish") default: } } } func main() { stop := make(chan struct{}) for i := 0; i < 100; i++ { go warm(stop) } t := time.NewT...阅读全文

博文 2018-12-13 09:34:43 大彬

GO语言从入门到实战

GO语言从入门到实战Go语言也称 Golang,兼具效率、性能、安全、健壮等特性。这套Go语言教程(Golang教程)通俗易懂,深入浅出,既适合没有基础的读者快速入门,也适合工作多年的程序员查阅知识点。这套教程在讲解一些知识点时,将 Go 语言和其他多种语言进行对比,让掌握其它编程语言的读者能迅速理解 Go 语言的特性。 更多资源请关注 公众号“资苑君...阅读全文

博文 2020-04-02 09:33:02 资苑君

go与众不同的类型

用go写了几个应用之后,对它的几个类型理解得可以说也比较到位。 数组 它跟C语言的数组一样,有固定的长度,声明之前必须很设定其长度。由于受C语言的影响,我一直把它当作指针来看待。其实,go的数组是个值类型,当把一个数组赋值给另一个数组时,是复制了本身给另一个数组。也就是说,当把数组当作参数进行传递时,会拷贝整个数组,当然也就与C语言的数组指针引用相比了,效率也就大打折扣了。go数组有一点必须知道,就是它的类型是包括了长度的。一个数组包含了长度,储存类型,实际值三个参数。[3]int与[4]int是两个不同的数组。 切片 数组的兄弟slice(切片),它是go中最常用到的类型,因为它是指针,而且没长度的限制,可以随时往里面加数据。所以它的性能不仅比数组高,而且更灵活。其实slice的数据结构里...阅读全文

博文 2014-10-04 19:26:27 descusr

为什么我不会舍弃Python投奔Go语言

最近,由于一篇“为什么我不会舍弃Python投奔Go语言(英文)”的博客,我收到了大量的邮件,这篇文章中,作者说Go语言除了“用返回值来处理异常错误”这点外,其它的都非常好。我想写出一点东西,解释一下Go语言为什么这样做,这会对大家都有用。 本文作者:Russ Cox 在Go语言中,规定的方式是,函数返回错误信息。这没什么。如果一个文件并不存在,op.Open函数会返回一个错误信息。这没什么。如果你向你一个中断了的网络连接里写数据,net.Conn里的Write方法会返回一个错误。这没什么。这种状况在这种程序中是可以预料到的。这种操作就是容易失败,你知道程序会如何运行,因为API的设计者通过内置了一种错误情况的结果而让这一切显得很清楚。 从另一方面讲,有些操作基本上不会出错,所处的环境根本不...阅读全文

博文 2015-04-16 00:00:00 cometwo

[翻译]Go 数据结构

[翻译]Go 数据结构 http://mikespook.com/2013/12/%e7%bf%bb%e8%af%91go-%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84/#more-1775 2013/12/05mikespook发表回复 关于 Go 的内存结构在 Go 内存模型 中已经有介绍,但是内容相对简单,许多细节也一带而过。Ross Cox 的这篇文章 Go Data Structure 讲解得比较系统也很全面的一篇。翻译至此,希望能对大家有帮助。 2009 年的旧文,发现自己当时没有翻译完。所以再次做了增补和修改。如果我没记错,应该已经有人在 OSC 上发表过同一篇文章的翻译了。大家对照参考阅读吧。 ————翻译分隔线———— Go 数据结构 每当给新手...阅读全文

博文 2015-06-17 20:06:18 blogNote

Go语言的堆排序实现

关于堆排序的算法,可以参考我去年的文章《堆排序(HEAP SORT)》。那篇文章讲的是建立小顶堆进行的排序,这里说的是建立大顶堆建立的排序,差不多。 在Golang源码的sort包里,自带了排序函数。该函数可以对各种类型进行排序,只不过该类型需要实现三个函数,使得该类能够实现Interface接口。 type Interface interface { // Len is the number of elements in the collection. Len() int // Less reports whether the element with // index i should sort before the element with index j. Less(i, j int...阅读全文

测试后expvar.Map :加锁的map : sync.map = 0.75 : 1 : 3

### 如题,白白浪费我几天时间,偶发的并发bug不少,看我上篇文章就出现了各种bug,就不说了,现在来说个一定会出现的bug, ### 下面的代码在1.14.1版本是会报错的,结果不为1,但是我卸载后重新安装1.13.9之后就可以正常执行了!当然也可能是我的电脑原因,求大伙验证! ``` package main import ( "fmt" "sync" ) var wg sync.WaitGroup func main() { var m sync.Map for i := 0; i < 65536; i++ { m.Store(1, 1) } wg.Add(2) go Add(m) go sub(m) wg.Wait() fmt.Println(m.Load(1)) } func A...阅读全文

golang积累-接口指针与结构体指针

本文转自我发布在csdn的博客,原文:http://blog.csdn.net/qq_26981997/article/details/52608081, 欢迎指正。 对go做过开发的朋友都很熟悉interface。这几天在网上看到了篇文章,谈到了interface与nil判等的问题。题是好题,就进一步了解了一下。 ### 原题如下: **Nil接口并不是有Nil指针的接口** ```Go type Cat interface { Meow() } type Tabby struct {} func (*Tabby) Meow() { fmt.Println("meow") } func GetACat() Cat { var myTabby ...阅读全文

使用Go开发前端应用(四)- 操作canvas绘制一个表格

前言 这篇文章会讲下,如果通过Go来操作canvas,然后画一个类似腾讯文档表格一样的,在线的表格。当然,这肯定是个demo(你懂的)。然后,这篇文章主要会讲下面几个点: 使用Go来操作canvas绘制表格 使用js来操作canvas绘制表格 性能问题 使用Go操作canvas绘制表格 这里我们就直接上Go的代码了,如果有对Go如何编译成wasm或者其他的基础问题,可以查看这个系列的之前的几篇文章。 package main import ( "fmt" "syscall/js" "time" ) var drawCtx js.Value var window js.Value func init() { window = js.Global() doc := window.Get("doc...阅读全文

博文 2020-05-15 10:35:13 zhongzhong05

golang项目结构日记

最近再玩golang,在研究如何导入自己的模块的时候很是头疼。基本golang槽糕的设计——project既要设置$GOPATH又对项目结构有一定的要求(缺少一定的自由)(当然golang糟糕的设计远不止这方面,越是深入了解越是讨厌)。google好久才知道如何配置。网上blog里要么是同一篇文章各种转载(他喵的还不注明),要么不够清晰,各种尝试后终于成功,记录如下: 进入终端输入命令 mkdir -p goproject/src/goproject cd goproject touch install cd src/goproject touch main.go cd .. mkdir test cd test && touch test.go 此时cd 到goproject应该是如下: ...阅读全文

博文 2016-07-16 02:00:01 danny_amos

微服务系列笔记之Broker模式入门介绍

导语 API模式笔记告一段了,这篇文章总结了Micro中的消息订阅模式,在之前的系列文章中讲解了RabbitMQ消息队列,使用的是原生代码进行编写,在Micro中,其实为我们封装了RabbitMQ消息队列,不仅仅是RabbitMQ还有NATs作为消息中间件,称之为broker模式,在这篇文章中我们进行一个简单的发布与订阅模式的介绍。 入门案例介绍 首先建立如下目录 image 编写我们的main.go,首先,定义一个待发布的主题和一个broker,使用broker需要导入"github.com/micro/go-micro/broker"包。 var ( // 定义一个待发布的主题 topic = "mu.micro.book.topic.payment.done" b broker.Bro...阅读全文

博文 2019-08-13 01:32:49 陌无崖

招聘Golang工程师

招聘一位Golang的工程师,我们的坐标在北京东直门交通枢纽。 待遇是15-30K 职位描述: 1. 负责公司大数据平台分布式数据收集系统的架构、设计和开发工作 2. 负责分布式数据收集系统的性能监控和持续优化; 3. 跟踪分布式系统事务处理、分布式消息队列、实时传输协议等相关技术领域的发展趋势,并主动发起改良计划。 职位要求: 1. 优秀的代码能力,熟练掌握GO语言,对C/C++有掌握优先考虑; 2. 具有解决高并发问题的实战经验和分布式系统的研发经验; 3. 熟练掌握HTTP,TCP/IP等网络传输协议的工作原理,并有相关协议的调优经验; 4. 了解Nginx HTTP/STREAM框架工作原理的优先; 5. 熟练掌握Rabb...阅读全文

介绍 GDB 调试 Go

注:本文作者是 YANN,原文是 Introduction to Go Debugging with GDB 在过去的 4 年中,我花了我绝大部分的时间用来写,读以及调试 Python 或 JavaScript 代码。在学习 Go 的过程中,像穿着一双有小石子的鞋子在美丽的山中远行。很多事情给我留下了深刻的印象,但是使用 println 调试我的代码在过去走的太远了。在 Python 中,当代码在运行的时候,我们使用 pdb/ipdb 调试它,JavaScript 提供了类似的工具。在这些年中,这个模式已经变成了我工作流中非常重要的一部分了。 今天,我认识到 Go 已经内建支持 Gnu debugger (aka GDB)。 为了这篇文章,我们使用以下这个简单的程序: package mai...阅读全文

博文 2015-10-16 10:00:06 feihongdragon

如何泄漏一个协程然后修复它

很多 go 语言开发者都知道这句格言,[永远不要启动一个你不知道如何停止的协程](https://dave.cheney.net/2016/12/22/never-start-a-goroutine-without-knowing-how-it-will-stop),但是泄漏一个协程还是超级的简单。让我们看一种常碰到的泄漏协程的方式,然后修复它。 为了实现这个,我们先建立一个包含一个自定义 `map` 类型的库,这个 `map` 类型的 key 在经过了一段可配置的时间后过期。我们把这个库叫做 [ttl](https://en.wikipedia.org/wiki/Time_to_live) ,这个库有一个 `API` 类似如下: ```go // 创建一个生存周期为5分钟的map m :=...阅读全文

用 Go 创建一个新的智能合约语言 - 新项目动机,概念

这篇文章讲述了 **为什么** 我们开始为智能合约创建新的编程语言(使用 Go)。 ## 动机 目前有两个众所周知的区块链,比特币和以太坊。比特币有 **bitcoin script** 和以太坊有 **solidity** 为它们自己的智能合约编程。两者都有利有弊。 对于 **比特币** 而言,它没有状态概念,并且 bitcoin script 是基于低级语言和很少的操作,因此它所能做的是有限的。另一方面,因为它的工作方式简单并且比特币是没有状态的,这样我们能轻松地进行静态分析,如这个脚本运行速度有多快。 对于 **以太坊** 而言,它有状态的概念,并且 solidity 被设计为高级语言,solidity 开发者能够更直观的编程,并且以太坊智能合约可以做很多事情(是的,这是因为以太坊是有...阅读全文

博文 2019-01-27 13:16:02 PotoYang

彬哥笔记 --2 掌握Go语言可以给你带来什么

文章标题可以稍微通俗一点解释就是:学了Go语言,对我有什么用? 目前大多数从事IT开发的人,很大一部分是因为IT行业薪资高而选择的,其实彬哥我也是一样,我大学专业是核物理,毕业时候班上大多数同学都去了国家的核工程系统或者去读研了;我毕业就开始找工作,发现没有企业需要核物理的,当时我就意识到了必须”转行“。于是我就开始找高薪都有那些行业,大概分析了很多数据后,得出结论:金融,律师,服务器开发;再结合自身,短期内可以达到的可能是服务器开发,就这样阴差阳错的做到现在。清晰的记得第一份工作IT工作是在成都孵化园5栋,TV游戏开发;老大是展姐,工资600元; 有件事我还记得,展姐问我后面的理想是什么,我说我要做一款属于自己的游戏引擎,她说你先学会开发中不用鼠标开始计算,时间过10年在中国你才可能开发一...阅读全文

博文 2018-11-17 00:34:40 Golang语言社区

protobuf可变长度原理

这篇文章在你已经了解protobuf使用的基础上,更进一步的学习,如果不知道protobuf是什么?请查阅这篇文章【golang-protobuf使用】 可变长度类型 官网说明地址:https://developers.google.com/protocol-buffers/docs/proto3 proto文件的可变长度类型有:int32、int64、uin32、uin64、sint32、sint64 连续位标识 Protobuf用的是连续位标识技术,使用每个字节的第一位来标识是否需要继续向后读。每个字节低7位用于实际的编码。 举例: 本次举例使用uin32类型 十进制:300 二进制(4个字节):00000000 00000000 00000001 1000000 protobuf编码过...阅读全文

博文 2018-12-03 14:34:49 __simple

Go 面试每日一题(2)

每天 15 分钟,学好 Go 语言从上篇文章留言区的回答来看,大家对 defer 先进后出的特性都是了解的,没问题,但如果结合 panic 语句就可能会搞不清到底是 defer 先执行还是 panic 执行。看下答案,输出:1打印后2打印中3打印前4panic: 触发异常参考解析:defer 的执行顺序是后进先出。当出现 panic 语句的时候,会先按照 defer 的后进先出的顺序执行,最后才会执行panic。欢迎在留言区补充!来看下今天的题目:下面这段代码输出什么,说明原因。 1func main() { 2 3 slice := []int{0,1,2,3} 4 m := make(map[int]*int) 5 6 for key,val := range slice { 7 m[k...阅读全文

博文 2019-08-31 21:09:33 Golang来啦

A Tour of Go---Go语言之旅

序言 开始翻译一下GO的官方网站的:A Tour of Go(Go语言的不归之旅) 学习A Tour of Go的前置步骤 安装最新版本的Go语言环境(现在最新版本是:1.12.9) 查看自己的GOPATH和MODULES环境变量是否设置好 随便在自己的硬盘的任何位置创建一个文件夹,文件夹的名字就是你项目的名字 进入文件夹,新建main.go(也可以其他命名文件,推荐使用main.go文件命名一个项目的启动文件) package main import "fmt" func main() { fmt.Println("Hello, 世界") } 复制代码 在项目的文件夹下打开dos或者terminal,输入go mod init xxxx(xxxx是你项目的名字),这是使用go提供的modu...阅读全文

Go语言用堆排序的方法进行一千万个int随机数排序.

上篇文章用的是quicksort方法排序,但是如果用快速排序法对重复率很高的slice排序的时候,时间复杂度会激增,速度相当慢 所以尝试了一下堆排序,实验结果,感觉挺好的.下面是代码,大家可以参考一下,这个是建立的大顶堆. 二叉树的特性: 最后一个非叶子节点 : root = length/2(当length为奇数的时候root向下取整) 在GO语言中的索引位置:root - 1, 左右孩子节点:child_l = 2*root,索引位置:child_l-1,右孩子的节点: 2*root+1 索引位置. package main import ( "fmt" "math/rand" ) func main() { Num := 10000000 var list []int for i :=...阅读全文

博文 2016-03-12 09:00:00 fyxichen

golang time操作整理

这里的内容大部分是从他人处整理得到 http://my.oschina.net/1123581321/blog/190942 时间戳 当前时间戳 fmt.Println(time.Now().Unix()) # 1389058332str格式化时间 当前格式化时间 fmt.Println(time.Now().Format("2006-01-02 15:04:05")) # 这是个奇葩,必须是这个时间点, 据说是go诞生之日, 记忆方法:6-1-2-3-4-5 # 2014-01-07 09:42:20时间戳转str格式化时间 str_time := time.Unix(1389058332, 0).Format("2006-01-02 15:04:05") fmt.Println(str_...阅读全文

博文 2015-11-06 17:00:13 u012210379

k8s与aws--如何在cloud-provider=aws的k8s中设置externalTrafficPolicy为local

如何在启用cloud-provider=aws的k8s集群中设置service 的externalTrafficPolicy为local 关于externalTrafficPolicy的local和cluster两个值,在之前的文章中,我们已经讲过。大家可以参考从service的externalTrafficPolicy到podAntiAffinity这篇文章。 而在aws中,假如你自己部署k8s集群,并且启用了cloud-provider=aws,那么需要做一些其他的工作,否则service 的externalTrafficPolicy为local后,无法访问。 首先保证kube-proxy启动参数里加入hostname-override设置 - --hostname-override=$...阅读全文

博文 2019-01-07 11:34:48 iyacontrol

open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境

收到新的任务研究一下 open-falcon 监控公司的服务器指标玩玩。说实话现在连要重视哪些监控指标都不知道,但在open-falcon 中文介绍 中,就安装这一块,踩的坑实在好多,所以有必要写篇文章记一下。 这篇文章主要包括: 如何搭一个虚拟的 linux 服务器和相关配置 按照官方的中文介绍安装,会踩到哪些坑。 目标只有一个:尽快跑起来。 服务器选择 笔者最终选择的是 ubuntu-server 16.04 LTS 64bit。基于这款服务器,许多安装指令和介绍中不一样。具体包括 yum 替换为 apt-get mysql-devel 替换为 libmysqld-dev,libmysqlclient-dev 等。并且 ubuntu 的源需要配置。笔者配置的是阿里云的ubuntu 16....阅读全文

博文 2017-02-10 10:31:57 genefy

RSA到底是谁加密?

RSA到底是谁加密? RRSA加密是最常用的非对称加密方式,原理是对一极大整数做因数分解的困难性来保证安全性。通常个人保存私钥,公钥是公开的(可能同时多人持有)。 但你一定会碰到过,两个开发者争执:到底是由谁加密,谁解密? 看完这篇文章,你就会明白这一切。 规范怎么说 我们先来看看权威库open_ssl的文档描述,它定义了四个方法 RSA_private_decrypt RSA_private_encrypt RSA_public_decrypt RSA_public_encrypt 看起来似乎私钥和公钥都可以用来进行加密解密? 但是仔细查看 RSA_public_decrypt 和RSA_private_encrypt的描述都是:low level signature operations...阅读全文

博文 2020-05-06 21:32:46 boywus

Golang 要点汇总

Golang有很多非常强大的用法,本文对网上的一些文章做一个简单的汇总,供以后翻阅。 1,Constant的用法 https://splice.com/blog/iota-elegant-constants-golang/ 这篇文章详细介绍了如何优雅地定义constant 2,Channel 非阻塞Channel操作:https://gobyexample.com/non-blocking-channel-operations 超时Channel:http://blog.golang.org/go-concurrency-patterns-timing-out-an...阅读全文

博文 2015-03-18 03:00:01 cobbliu

我是这么使用黑苹果的

最近使用黑苹果,为啥要用黑苹果以及怎么黑的跳过不说,说说我是怎么使用的。 首先说明,我没有使用白苹果的经验,OS X里的24K纯小白。写这篇文章的起因是前天晚上无缘无故用户密码不对了,重启之后进不了系统,再加上看网上各种的密码回复教程搞得电脑无限重启,无奈最后重装系统(好在我有专门的U盘做安装盘)。 还要说明的是这篇文章是给开发人员准备的,那些开机装两个软件看看视频聊个天的可以返回或者右上角了。开发人员都知道,配环境什么的最麻烦了,要下载软件,解压,配置环境变量,各种麻烦,尤其是需要多种开发语言的。我是配置的golang作为业余学习使用的,而且不想分盘,所以才有了今天的下场。废话有点多,开始正题。 首先,环境变量需要的SDK都放在家目录(~)下新建文件夹统一安放,环境变量也配置在这个目录的....阅读全文

博文 2017-06-12 01:07:07 remainer

招聘Go工程师(北京)

公司简介: 我们是一家开发并运营互联网创新产品的公司。公司团队以技术为主导。在技术方面,倡导全面自动化、拥抱新技术。产品设计方面,倡导极简主义、注重细节。我们有海量用户操盘经验,曾经把一款娱乐类 App 做到将近1000万用户,在苹果 App Store 香港区、台湾区下载量排行第一。公司得到了顶级 VC 的投资。 岗位要求: 熟悉 Go 语言 有高负载 Server 实战经验 对计算机技术有发自内心的兴趣 联系方式: QQ:3407909729 邮箱:xujuan@happyiterating.co...阅读全文

Golang中的数据驱动和参数化测试

此篇文章转自Elliot Chance的[Go: Data-Driven or Parameterized Tests](http://elliot.land/go-data-driven-parameterized-tests)。欢迎大家访问[我的博客](http://zuozuohao.github.io/)。 Glang的核心原则是保持简单和问题解决方法的唯一性,Python也遵循了这一原则。 在Go中可以轻松的完成单元测试,然而依旧会遇到一些测试功能上的问题。至少对于我来说, 与其写令人厌烦的测试样板文件,我宁愿去找一个功能完善的第三方测试包。 这篇文章详细介绍了在书写数据驱动或者说参数化测试框架过程中,数据驱动测试是指基于相同的测试逻辑使用表格作为输入和期望输出源...阅读全文

Go http.Head实战

``` package main import ( "fmt" "net/http" ) var ( url = []string{ "http://www.baidu.com", "http://google.com", "http://taobao.com",} ) func main() { for _ , v := range url{ resp, err := http.Head(v) if err != nil { fmt.Println("http.Head err=",err) continue } fmt.Println("http.Head success status=",resp.Status) } } ``...阅读全文

博文 2019-05-07 15:37:41 commanding

【北京】招聘 Go 工程师 待遇好 可年后的入职

公司简介: 我们是一家北京的开发并运营互联网创新产品的公司。公司团队以技术为主导。在技术方面,倡导全面自动化、拥抱新技术。产品设计方面,倡导极简主义、注重细节。我们有海量用户的操盘经验,曾经把一款娱乐类 App 做到将近 1000 万用户,在苹果 App Store 香港区、台湾区下载量排行第一。公司得到了顶级 VC 的投资。 福利待遇: 满足你期待的薪资,而且试用期薪资不打折,入职即缴纳五险一金,带薪年假,团建聚餐,节日福利,生日福利,免费体检,免费工作餐,旅游等福利多多… Go 工程师--职位描述: 熟悉 Go 语言 有高负载 Server 实战经验 对计算机技术有发自内心的兴趣 必须有无障碍阅读英文技术文献的能力 联...阅读全文

computer go

这学期做了一个计算机围棋的项目,也因此自学了围棋,就程序而言虽然最后比赛结果不是很好,但仍然有了一个初步的轮廓。 先上一个程序自己跟自己下的截图 接下来我来逐步介绍一些细节,里面会涉及到很多围棋方面的知识,但大部分是简单的,因为复杂的围棋概念,例如薄厚,眼形,模样,目前还是很难用计算机程序来描述的。另外这个程序还存在一些其他更重要的问题尚未解决,下面我会一一道来。如果你有任何问题,也可以在留言中回复,我尽力回答。由于这篇文章规模巨大,再加上我一边还在重写代码,更新的进度估计很慢,我估计寒假能把这篇文章写完。 首先,读者需要建立一个这样的概念,计算机围棋的搜索空间是10^700次方,目前为止没有任何一台机器能够解决如此复杂的问题。第二,计算机围棋作为人工智能领域的著名难题,至今仍然没有超过人类...阅读全文

博文 2015-12-23 20:00:00 u012520030

InkPaper 最佳实践——使用 Travis CI 自动部署 Ink 博客到 GitHub pages

简介 纸小墨(InkPaper)是一个GO语言编写的开源静态博客构建工具,可以快速搭建博客网站。它无依赖跨平台,配置简单构建快速,注重简洁易用与更优雅的排版。使用 Travis CI 可以解决 自动构建和自动部署的问题, 这样能让我们更加专注书写。 什么是 Travis CI? Travis CI 是为 GitHub 上的项目提供构建和测试的分布式持续构建服务。这意味着你的静态博客最好是托管在GitHub Pages 上的。当 GitHub Pages 仓库激活 Travis CI 服务,当你的博客有新的修改提交到 GitHub 的时候,GitHub 会通知 Travis CI。它也可以被配置为只对特定的分支生效,或分支的名称匹配特定的模式。Travis CI 将会检查相关分支并执行之前在 ...阅读全文

GoLang回调实现,非传func参数方式

写这篇文章的初衷是因为最近被GoLang的一个低级问题搞蒙了,加上本蠢货用的还是IntelliJ的2017版本,对GoLang的错误提示非常有限,导致为了解决一个回调问题花了一个多小时。 问题呢,就是GoLang的回调了,在我的印象中GoLang实现回调和Java有那么一点区别,但是大同小异。首先如果是个简单的回调那么肯定没啥难度,传入一个struct对象就可以了,但是我想的是可以随时创建这个回调对象,在各种场合,那么就决定了这个回调对象可能是多个,所以必须是接口。 so,思路其实很清晰,回调参数使用接口就可以了,但是今天我被自己蠢到了,忘了GoLang的特性,首字母非大写是不能给外部包调用的,所以,一言难尽。 在解决问题的期间我不服气的搜了百度与google,发现搜出来的内容居然都是传入f...阅读全文

博文 2019-07-14 21:32:39 zerochl

送别2019,期待2020!

概述 2019 年时间过得很快。 有欢笑、 有离别、 有压力、 有收获。 关于工作 项目发生了变动,团队也发生了变动,不过总体是成长的,在这感谢领导的关照、信任! 下半年开始学习 Go 语言,并用 Go 进行搭建项目,也算是刚刚入门了吧。 自己在团队内也进行了几次分享,锻炼了自己的上台说的能力。 期间听过一些大牛的分享,将自己的笔记分享给大家: 用抽象来解决需求的快速变化; 用解耦来解决技术实现的不确定性; 要在当前资源条件下求最优解,然后再进行灰度过渡; 组织的沟通方式决定你使用什么样的结构设计,架构的核心目标之一就是降低团队的沟通成本; 关于生活 感谢老婆,有你相伴的日子,即使平凡也很浪漫!(求生欲) 感谢父母,在这边帮忙带孩子,发现我自己都变成猪了,好吃懒做。 孩子正在开始学说话,咿咿...阅读全文

博文 2020-01-04 14:32:38 新亮