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

gohost -- go 开发的命令行hosts配置管理工具

前几天在微博上看到有人推荐了lazygit这个工具,让人眼前一亮,什么时候命令行也可以这么抢到了,🤣,调研了下,发现它使用了gocui,使用它可以做出来很多很炫的命令行工具。 现有的hosts工具里面也有switchosts!,但我是用的时候发现他还是有bug,也只能用在界面化平台。想了下,准备着手搞一个命令行的hsots配置工具,这个类库完全可以满足。 界面设计 在界面设计上,还是做个copycat,抄袭switchosts!的,分两栏,左侧是hosts分组,右边儿是当前聚焦hosts分组内容,控制开关放在左侧,如下所示。左侧开关控制每个组的开启关闭与否,系统当前的hosts是左侧所有打开hosts的集合。 *------*-------------------* |×name1|# ho...阅读全文

博文 2018-08-24 09:34:56 天生的黑

Golang学习笔记一:语言规范

引言 Golang参考手册,更多内容请参考http://golang.org 语言规范参考自https://golang.org/ref/spec 词汇元素 注释 行注释: // comment content 段注释:/* comment content */ 符号 符号有4类:标识符、关键字、操作符和分隔符、字面常量 分号 golang中,分号可省略 标识符 标识符即程序中的变量和类型,有一个或多个字母或数字组成,第一个字母必须字母开头。 identifier = letter { letter | unicode_digit } 关键字 标识符不能是golang中的保留关键字 break default func interface select case defer go map s...阅读全文

博文 2015-10-10 23:00:00 scherrer

开放分布式追踪(OpenTracing)入门与 Jaeger 实现

http://click.aliyun.com/m/1000005975/应用架构开始从单体系统逐步转变为微服务,其中的业务逻辑随之而来就会变成微服务之间的调用与请求。资源角度来看,传统服务器这个物理单位也逐渐淡化,变成了看不见摸不到的虚拟资源模式。从以上两个变化可以看到这种弹性、标准化的架构背后,原先运维与诊断的需求也变得越来越复杂。为了应对这种变化趋势,诞生一系列面向 DevOps 的诊断与分析系统,包括集中式日志系统(Logging),集中式度量系统(Metrics)和分布式追踪系统(Tracing)。Logging,Metrics 和 TracingLogging,Metrics 和 Tracing 有各自专注的部分。Logging - 用于记录离散的事件。例如,应用程序的调试信息或...阅读全文

博文 2018-07-12 15:34:54 rewq123

Mac OS X系统搭建谷歌Go语言开发工具 Sublime Text 环境配置

载地址:http://www.cr173.com/html/33948_1.html Go语言是谷歌自家的编译型语言,旨在不损失性能的前提下降低代码复杂率。其优势是让软件充分发挥多核心处理器同步多工的优点,并可解决面向对象程序设计的麻烦。 一、安装Golang的SDK 在官网http://golang.org/ 直接下载安装包安装即可。下载pkg格式的最新安装包,直接双击运行,一路按照提示操作即可完成安装。 安装完成后,打开终端,输入go,检测Golang SDK是否安装成功,如下显示,则表示安装成功: 你也可以输入go version 查看你所安装的Golang的版本 二、环境变量配置(GOPATH) GOPATH是用来告诉Golang命令和其他相关工具,在哪里可以找到你系统上的Go包目录...阅读全文

博文 2015-09-12 23:00:00 showhilllee

rete算法学习

在上篇博客中,介绍了策略型业务逻辑处理中几种选择,其中有一种选择就是利用规则引擎来进行逻辑处理。其实藏在规则引擎的底层中还是有很多算法的,其中有一种算法是rete算法,最近正好也关注算法,就简单的学习了一下,因为对这个算法理解的非常清楚,所以如果有有对这个算法熟悉的朋友,可以给予指正。 RETE算法是一个用于产生式系统的高效模式匹配算法。在一个产生式系统中,被处理的数据叫做working memory,用于判定的规则分为两个部分LHS(left-hand-side)和RHS(right hand side),分别表示前提和结论。主要流程可以分为以下步骤:Match:找出符合LHS部分的working memory集合Confilict resolution:选出一个条件被满足的规则Act:执...阅读全文

博文 2017-11-29 01:46:20 lfsf802

Go 语言环境搭建

本文内容 概述 Go SDK LiteIDE 参考资料 2009年Google推出了它的第二个开源语言 Go。对 Go 的评价褒贬不一,中国比国外的热情高中国比国外的热情高。Go 天生就是为并发和网络而生的,除了这点外,在静态编译、GC、跨平台、易学、丰富的标准库等,其实并不如 C/C++、Java、C#、Python。由此可想而知,为什么会出现 Go?以及为什么 Go 存在如此多的问题和争论?——也许Go 更像是一个“天才的自闭症患者”,如果看清了这点,对网络和知乎上一些 Go 的褒贬也就能泰然啦,这就好像下班到家,是先吃饭,还是先洗澡,重要吗?~ 下载开发工具 下载相关文档手册 概述 Go 是Google开发的一种编译型,並發型,并具有垃圾回收功能的编程语言。 罗伯特.格瑞史莫(Robe...阅读全文

博文 2015-05-19 03:00:11 liuning8023

beego.InsertFilter过滤器

beego.InsertFilter过滤器是为某些router提供过滤功能,可以设置在某个路由访问时进行额外的操作。通过参数设置可以设置过滤器执行的时刻。 如下所示beego.InsertFilter有一下几个参数: InsertFilter(pattern string, pos int, filter FilterFunc, params …bool) pattern:路由规则,过滤器作用的路由 pos : 过滤器执行的时刻,有以下5种 beego.BeforeStatic beego.BeforeRouter 访问路由之前 beego.BeforeExec 访问路由之后执行controller之前 beego.AfterExec 执行controller之后调用 beego.Finis...阅读全文

博文 2018-09-11 10:13:11 JimPang

Golang 语言windows环境搭建

本人是xp系统; 1.首先下载go语言安装包,进入下面的链接,选择适合自己的安装包进行下载(我用的go1.0.3.windows-386.msi),然后安装即可,记录下安装后的根目录以备配置使用。 下载地址:https://code.google.com/p/go/downloads/list 点击安装,我默认安装在路径C:\Go 2.下载liteIDE,进入下面的链接,选择适合自己的安装包(我用的liteidex17.windows-webkit.7z),下载完成后解压到任意目录,然后进入根目录下的bin文件夹,双击liteide.exe即可打开软件。 下载地址:https://code.google.com/p/golangide/downloads/list 软件界面: 3.配置lit...阅读全文

博文 2014-11-11 02:00:01 oopsangle

菜鸟学go之变量(-)

//1.变量 //go语言中变量变量的定义方式是变量名前加var,与c和java不同,go把变量类型放到变量名称后面 //比如定义一个变量名字叫做bird类型为type的变量如下所示 var bird type //还可以在变量后一次性定义多个变量 var bird,cat,dog type //定义变量并且对多个变量进行初始化 var bird,cat,dog type = valone,valtwo,valthree //简写方式 //var可以简写为:并且放在变量的最后形如: bird,cat,dog type := valone,valtwo,valthree //直接省略了var和type称为简短声明,一般使用在函数内部,所以var方式来声明全局变...阅读全文

博文 2014-10-04 19:26:11 范思哲思考者

go语言顺序编程

1、变量 声明: Go语言的变量声明方式与C和C++语言有明显的不同。对于纯粹的变量声明,Go语言引入了关键字var,而类型信息放在变量名之后,实例如下: Go Code 1 2 3 4 5 6 7 8 9 10 var v1 int var v2 string var v4 [10]int //数组 var v4 []int //数组切片 var v5 struct{ f int } var v6 *int //指针 var v7 map[string]int //key-string value-int var v8 func(a int) int //函数 初始化: 对于声明变量时需要进行初始化的场景,var关键字可以保留,但不再是必要的元素。 JavaScript Code 1 2 ...阅读全文

博文 2014-11-21 12:00:18 Al_xin

Go 语言神奇的 JSON

今天我想和大家分享 Go 语言一些非常实用的技巧,用于编码和解码 JSON 文档。Go 语言的 `encoding/json` 包有一些有趣的特性,帮助我们轻松地解析 JSON 文档。你可以轻松地将大多数实际应用中的 JSON 转换为带有 Go 语言结构体标签的接口或者是 `Marshaler` 和 `Unmarshaler` 接口。 但有一个案例比较棘手:包含转义 JSON 元素的 JSON 文档。如下所示: ```json { "id": 12345, "name": "Test Document", "payload": "{\"message\":\"hello!\"}" } ``` 我不建议构建像这样创建文档的应用程序,但有时候这样的情况是难以避免的,你希望像平常的 JSON 那样...阅读全文

博文 2018-03-19 10:27:46 SergeyChang

解剖Go语言map底层实现

``map``是Go语言中基础的数据结构,在日常的使用中经常被用到。但是它底层是如何实现的呢? # ``map``的整体结构图 Golang中``map``的底层实现是一个散列表,因此实现``map``的过程实际上就是实现散表的过程。在这个散列表中,主要出现的结构体有两个,一个叫``hmap``(``a header for a go map``),一个叫``bucket``。这两种结构的样子分别如下所示: hmap: ![hmap.png](https://static.studygolang.com/180826/09d0c94fc2946bba795ecc2ae0c97ac2.png) 图中有很多字段,但是便于理解``map``的架构,你只需要关心的只有一个,就是标红的字段:bucke...阅读全文

博文 2018-09-01 02:46:44 RyuGou

Go - 以任意类型的slices作为输入参数

Go - 以任意类型的slices作为输入参数(译) 2014-01-16 Thu By youngsterxyf 原文:Go – taking slices of any type as input parameters 译者:youngsterxyf 最近参与的一个业余项目,go-linq,让我了解到Go语言的类型系统并不是为任何类面向 对象编程而设计的。没有泛型,没有类型继承,也没有提供任何对这些特性有用的东西。 但是,提供了一个名为interface{}的类型,你可以向其赋予几乎任意类型的值,不会抛出编译错误,就像.NET的Object或Java的Object: var o interface{} o := 3.14 o := Student{Name: "Ahmet"} 我们假设你...阅读全文

博文 2016-05-20 17:00:02 hittata

Go_闭包_基础理解

Golang支持闭包 1 什么是闭包 闭包就是一个匿名函数和一个外部变量(成员变量)组成的一个整体 通俗的讲就是一个匿名函数中引用了其外部函数内的一个变量而这个变量和这个匿名函数的组合就叫闭包 如下代码所示 func closure1() func() int{ i :=0 return func() int{ i++ //该匿名函数引用了closure1函数中的i变量故该匿名函数与i变量形成闭包 return i } }2 理解闭包 如果第一次使用闭包一定会想(以上述代码为例) closure1()返回一个匿名函数 比如 f:=closure1() 然后我再其他的函数内部多次调用f() 会有什么结果呢 如下代码所示 f := closure1() fmt.Println(f()) fmt....阅读全文

博文 2015-06-17 20:12:43 u012807459

Go Slice vs Map

Slice 和 Map 是 Go 中的两种重要的数据类型。本文将记录我关于这两种数据结构性能的一些关键的发现。 在讨论性能方面之前,我们先来简单介绍一下 Slice 和 Map。 **Slice:** Slice 是构建在数组之上的一种抽象数据结构。Slice 拥有一个指向数组开始位置的指针、数组长度以及 Slice 可以使用该数组的最大容量。Slice 可以按需增长或收缩。Slice 的增长通常包括为底层的数组重新分配内存。像 copy 和 append 这样的函数可以帮助增长数组。 **Map:** Go 中的 Map 和其他语言类似(内部实现可能会有所不同)。Go 中的 Map 创建 bucket (每个 bucket 可以容纳 8 个键)。 **性能统计:** 我对这两种数据结构都进...阅读全文

博文 2017-11-30 16:17:05 ictar

《Go语言编程》【2.7 完整示例】的错误

今天看《Go语言编程》再次发现了两处错误,一处是目录名称algorithms,根据上下文推测,目录名应当是没有最后一个字幕s的algorithm,因为最后main主程序import导入包时、调用排序函数时,以及编译环节时,都采用了algorithm,书中结构如下图: 这个名字同时按照书中所示的程序目录结构编译会报错: can't load package cannot find package 经过重新整理,修改成如下目录结构后编译不再报无法加载包和无法找到包的错误: 下图是修改成正确结构后编译和运行程序的结果: 本文出自 “松松” 博客,请务必保留此出处http://dongsong.blog.51cto.com/916653/158890...阅读全文

博文 2014-12-11 22:00:06 董松

gracehttp: 优雅重启 Go 程序(热启动)

问题背景 在 http 应用程序重启时,如果直接 kill -9 使程序退出,然后在启动,会有以下几个问题: 旧的请求未处理完,如果服务端进程直接退出,会造成客户端链接中断(收到 RST); 新请求打过来,服务还没重启完毕,造成 connection refused 这些问题会造成不好的客户体验,严重的甚至影响客户业务。所以,我们需要优雅的重启我们的应用。 解决问题 -- 优雅 Github: gracehttp 原理 信号机制; 子进程继承父进程的资源; 支持功能 平滑重启(Zero-Downtime restart server); 平滑关闭; 多 Server 添加(包含 HTTP 、HTTPS); 自定义日志组件; 使用指南 添加服务器 // http srv1 := &http.S...阅读全文

Golang AES算法与 java(android)的互通

由于Java AES256 加密库受出口限制,所以只采用AES 128加密。 互通要达到的要求 加密位数:统一采AES 128 分组加密条件:CBC/PKCS#5PADDING 密钥填充方式一样 因为android的默认填充与java默认不一样,而且在不同的JDK版本里也会出现key填充不一致的情况,所以自己手动填充,Go也采取与java一样的填充方式:不满16位补零。AES两个平台均要实现AES的加密与解密操作。加密结果转成base64。 关键代码如下所示:go: //填充 func paddingkey(key string) (string){ var buffer bytes.Buffer buffer.WriteString(key) for i:=len(key);i<16;i+...阅读全文

博文 2017-04-19 08:56:03 送你一碗大麦茶

安全的Go语言从源数组构建目标Slice

今天在QQ群里聊到GO语言需要改进的地方,快乐的吐槽了一番。我之前最希望用数组构建slice的语法变更一下,因为现在流行的[start:end]方式并不严谨。后来不记得是哪个版本的时候,引入了三段式的[start:end:max]语法来创建slice。这样是安全了,但是确丑了很多。 如下例所示,二段式的定义在append操作后会污染到源数组: a := [5]int{1, 2, 3, 4, 5} s1 := a[1:3:3] s2 := a[1:3] _ = append(s1, 6) fmt.Println(a) //out:[1 2 3 4 5] _ = append(s2, 7) fmt.Println(a) //out:[1 2 3 7 5] 关于对new函数的改进,chai大帮我发...阅读全文

博文 2014-11-11 18:00:02 sz_Promi

10年大数据架构师:日访问百亿级,如何架构并优化日志系统?

日志数据是最常见的一种海量数据,以拥有大量用户群体的电商平台为例,双 11 大促活动期间,它们可能每小时的日志数量达到百亿规模,海量的日志数据暴增,随之给技术团队带来严峻的挑战。 本文将从海量日志系统在优化、部署、监控方向如何更适应业务的需求入手,重点从多种日志系统的架构设计对比;后续调优过程:横向扩展与纵向扩展,分集群,数据分治,重写数据链路等实际现象与问题展开。日志系统架构基准 有过项目开发经验的朋友都知道:从平台的最初搭建到实现核心业务,都需要有日志平台为各种业务保驾护航。 如上图所示,对于一个简单的日志应用场景,通常会准备 master/slave 两个应用。我们只需运行一个 Shell 脚本,便可查看是否存在错误信息。随着业务复杂度的增加,应用场景也会变得复杂。虽然监控系统能够显示...阅读全文

博文 2018-08-17 10:34:57 养码场

Golang_tag

Golang tag也就是go语言中的注解 比如 type PostBody struct { Ids []int `json:"Id__in__int"` }`json:"Id__in__int"` 这一段内容就是Ids这个属性的一个tag 我们可以通过反射来获取这个tag的值 如下所示 package main import ( "fmt" "reflect" ) type PostBody struct { Ids []int `json:"Id__in__int"` } func main() { // s := "{\"Id__in__int\":[101010,101009],\"text__in__string\":[\"开单\",\"测试页\"]}" // var pb st...阅读全文

博文 2015-06-17 20:03:52 u012807459

如何使用GoLand调试beego项目

--- title: 如何使用GoLand调试beego项目 --- ## 前言 **beego**是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架。 **GoLand**是一个用于开发go应用的IDE,和python常用的IDE pyCharm一样,都是由JetBrains公司开发的。 最近看了下使用go开发web应用方面的东西,发现beego(https://github.com/astaxie/beego) 这个框架挺不错的,中文的文档写的也很好 (https://beego.me/docs/intro/)。 我按照文档把demo run起来了,然后就是想着怎么debug了,下面简单介绍下如何使用Go...阅读全文

博文 2019-02-22 16:41:59 ypdai

Golang 中的“潜规则”

GO语言中要提供给外面访问的方法或是结构体必须是首字母大写 在一个公共的头文件中定义了一个结构体,如下所示: type Header struct { ver int magic_num int len int } 在另一个执行文件中,进行了初始化和赋值: var head comm.Header; head.ver = 1 head.magic_num = 0xffee head.len = 0 编译时报错 ./example_struct2binary.go:21: head.ver undefined (cannot refer to unexported field or method ver) ./example_struct2binary.go:22: head.magic_nu...阅读全文

博文 2016-09-03 22:00:04 nellson

如何正确理解消息送达成功率?

初接触极光推送的使用者,为了衡量消息推送的质量。经常会纠结到消息的"送达率"这个概念.那么究竟什么是送达率呢?或者如何正确理解消息的送达情况呢?   基本概念   先来看与消息送达相关的几个基本概念:   iOS 目标用户数:匹配推送条件的 iOS 用户的数量。   iOS 推送成功数:推送到 APNS 并被 APNS 成功接收的数量。如果 device token 变更,过期或者与推送环境不匹配则不会成功。   Android 目标用户数:匹配推送的条件的Android 用户数(1个月内与服务器有过连接的用户。如果超过1个月都没有与 JPush server 产生任何连接,那么将不向此用户推送)。   Android 在线推送数:消息推送时,目标用户在线...阅读全文

Win7安装golang开发环境--备忘录

首次接触golang,很多东西不熟悉,Git也没有安装。 1 安装golang 1.1 下载golang 我是在Golang中国的下载频道下载的golang1.6。链接如下: http://www.golangtc.com/download 我选择了64位的 go1.6.windows-amd64.msi 这个文件,安装后GOROOT和path等环境配置自动完成。 我们只需要另行配置GOPATH即可。 1.2 配置GOPATH 添加GOPATH系统环境变量;如下图所示: 然后在CMD命令行工具中通过go命令查看环境配置信息。如下图所示 2 安装Sublime Text 3 2.1 下载Sublime Text 3 官网能够访问,下载链接是:http://www.sublimetext.com...阅读全文

博文 2016-04-13 16:00:02 tom06

Go 字符串编码,Unicode 和UTF-8

1.字符串字符串在Go语言中以原生数据类型出现,使用字符串就像使用其他原生数据类型(int、bool、 float32、foat64等)一样。 字符串的值为双引号中的内容,可以在Go语言的源码中直接添加非ASCⅡ码字符 Go语言的字符串常见转义符包含回车、换行、单双引号、制表符等,如下所示 转移符 含义 \r 回车符(返回行首) \n 换行符(直接跳到下一行的同列位置) \t 制表符 \' 单引号 \" 双引号 \\ 反斜杠 2.字符串实现基于UTF-8编码 go 语言里的字符串的内部实现使用UTF8编码. 通过rune类型,可以方便地对每个UTF-8字符进行访问。 当然,Go语言也支持按传统的ASCII码方式进行逐字符访问。 3.字符 字符串中的每一个元素叫做“字符”,在遍历或者单个获取字...阅读全文

博文 2019-06-01 23:04:38 nicce

Windows下Go语言的环境搭建

在本地搭建了一个开发GO语言的开发环境,给大家分享一下用go语言写的第一个hello world的过程,希望对大家有所帮助。 1.想写GO语言首先得下载go语言的开发包 官方下载地址:https://code.google.com/p/go/downloads/list 我用的是Win7 64位的操作系统,截图如下: 2.把下载好的文件解压到你想解压的文件夹下,解压到的是C盘的根目录下,文件命名为go,然后是设置环境变量: 计算机->属性 ->高级系统设置 -> 环境变量 在系统变量里的Path里面加上C:\go\bin,如下图所示: 测试环境变量是否设置成功: 在CMD里运行go命令,出现如下界面说明设置环境变量成功: 3.在Eclips上安装goclips插件: (1).打开Eclips...阅读全文

博文 2014-11-09 21:00:08 allyes001

让我们一起Go(十二)

前言: 上篇中,我们讲到了在Go语言中如何定义方法,今天,我们将进一步深入Go语言的面向对象编程。 一、Go语言中的接口 首先来看一个最基本的接口: 和定义一个结构体类似,只不过将struct换成了interface,然后声明了两个函数:draw()和count()。就这么简单,一个接口就定义好了,那么如何实现接口呢?在java中我们会让一个类去实现接口,在实现的时候必须用implements关键字显示声明去实现,如: class myshow implements show{...} 在Go语言中,不需要这么做,我们要做的只是去实现接口声明的所有函数就可以了,如下所示,就实现show这个接口: 上面代码,我们的osArgs结构体实现了文章开头给出的show这个接口。其实就是用到上一篇的内容...阅读全文

博文 2015-09-05 00:00:00 a6652162

Python类方法如何调用?

  类的方法的定义   1.def fun_name(self,...);   Pass   2.其中的参数self代表类的实例,在调用方法时由系统自动提供   3.方法定义时必须指明self参数   类的方法的调用   与普通的函数调用类似   1.类的内部调用:self.<方法名>(参数列表)。   2.在类的外部调用:<实例名>.<方法名>(参数列表)。   注意:以上两种调用方法中,提供的参数列表中都不用包括self。   演示一个类:   wash.py   class Washer:   def __init__(self):   self.water = 0   self.scour ...阅读全文

使用协程来模拟发送post请求,但是服务器端没有接收到数据?

package main import ( "fmt" "io/ioutil" "net/http" "net/url" "strings" "strconv" ) func testmulti(flag int){ v := url.Values{} v.Set("name",strconv.Itoa(flag)+"-------") body := ioutil.NopCloser(strings.NewReader(v.Encode())) //把form数据编下码 client := &http.Client{} req, _ := http.NewRequest("POST", "http://new.xx.com.cn/t...阅读全文

go语言defer使用

defer Go语言中有种不错的设计,即延迟(defer)语句,你可以在函数中添加多个defer语句。当函数执行到最后时,这些defer语句会按照逆序执行,最后该函数返回。特别是当你在进行一些打开资源的操作时,遇到错误需要提前返回,在返回前你需要关闭相应的资源,不然很容易造成资源泄露等问题。如下代码所示,我们一般写打开一个资源是这样操作的: func ReadWrite() bool { file.Open("file") // 做一些工作 if failureX { file.Close() return false } if failureY { file.Close() return false } file.Close() return true } 我们看到上面有很多重复的代码,G...阅读全文

博文 2015-01-22 13:00:02 chuanheng

golang变量作用域问题

func f()(string,error){ return "test scope of variable",nil } func main() { var name string if name,err := f();nil ==err{ println(name) } println(name) fmt.Println("Hello, 世界") } 上面的例子输出: test scope of variable =============(空行) Hello, 世界 期望是: test scope of variable test scope of variable Hello, 世界 原因分析: golang一旦遇到:=这个符号,如果在不同一个作用域中,就会新定义个变量,如果在同一个...阅读全文

博文 2015-06-17 20:04:00 rufidmx

Java、Scala、Go以相同方式实现快速排序代码量比较

在程序猿的世界,语言之争是个永恒的话题,在此,我想说:让争论来的更猛烈些吧。 在此,我要用相同的方式实现快速排序。首先,我们简单的回顾一下什么是快速排序。 快速排序: 快排的精髓在于”分治“。注意:这是两个方面,”分“讲的是利用所选的元素(往往是第一个元素,在此命名为Key),以Key为分水岭将列表分为:比Key元素大的和比Key元素小的两部分;”治“讲的是将分开的两部分以同样的方式(”分”的方式)继续排序,直至完全排完。如下图所示: 很显然,用“递归”的方式是很不错的。下面,每个语言用最最简洁的方式实现这个排序,然后比较一下代码量: 给出的需要排序的序列是:6、2、7、3、9、4、8、5 JAVA: private void setQuickSort(int[] array,int lef...阅读全文

博文 2016-03-04 16:00:00 i6448038

你好,Go

你好,Go Go语言是一门类似C语言的编译型语言,它的编译速度非常快。这门语言的关键字一共25个,比所有英文字母还少一个,这对于我们的学习来说非常有利。先让我们看一看这些关键字都长什么样。 break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var 本章中,笔者将带领你去学习Go语言的基础。通过每一小节的介绍,你将发现,Go语言的世界是多么简洁,设计是如此美妙,编写Go语言将会是一件愉快的事情。等回过头来,你就会发现这25个关键字是多么亲切。 在开...阅读全文

博文 2014-10-11 21:00:01 broadview2006

Mac系统搭建Go语言Sublime Text 2环境配置

Go语言是谷歌自家的编译型语言,旨在不损失性能的前提下降低代码复杂率。其优势是让软件充分发挥多核心处理器同步多工的优点,并可解决面向对象程序设计的麻烦。 一、安装Golang的SDK 在官网http://golang.org/ 直接下载安装包安装即可。下载pkg格式的最新安装包,直接双击运行,一路按照提示操作即可完成安装。 安装完成后,打开终端,输入go,检测Golang SDK是否安装成功,如下显示,则表示安装成功: 你也可以输入go version 查看你所安装的Golang的版本 二、环境变量配置(GOPATH) GOPATH是用来告诉Golang命令和其他相关工具,在哪里可以找到你系统上的Go包目录。 GOPATH是一个路径列表,类似于PATH的设置: GOPATH=/home/US...阅读全文

博文 2016-03-16 03:00:01 wxd0108

如何将本地数据库迁移到云数据库RDS上?

如何将本地数据库迁移到云数据库上? 使用数据传输服务 (DTS) 将本地数据库迁移到 阿里云的云数据库RDS,可以实现应用不停服务的情况下,平滑完成数据库的迁移工作。接下来我们将学习下如何使用DTS将本地数据库迁移到RDS上。 背景 DTS 支持 SQL Server 数据结构迁移和全量迁移。 1. DTS支持结构迁移的对象有:表、视图、表触发器、同义词、SQL 存储过程、SQL 函数、自定义类型、plan guid、rule、default。 2. 全量迁移 DTS 会将本地数据库迁移对象的数据全部迁移到目标实例。如果在迁移过程中有增量更新的话,这些增量不会被迁移到目标库。所以建议在业务无写入时,使用 DTS 进行全量数据迁移。 迁移限制 将本地数据库迁移到 RD...阅读全文

Go打印函数printf格式简介

fmt.print参数规约 printf输出规约是按照预定义好的参数格式输出的,参数和对应说明如下表所示。 parameter description %d decimal integer %x, %o, %b integer in hexade cimal, octal, binar y %f, %g, %e floating-p oint number: 3.141593 3.141592653589793 3.141593e+00 %t boole an: true or false %c rune (Unico de co de point) %s string %q quoted str ing “abc” or rune ‘c’ %v any value in a natural...阅读全文

博文 2016-08-04 20:00:06 abcijkxyz

go语言学习笔记一基本变量

通过看goclipse文档终于将环境搭建完成,本笔记是自己学习过程中产生的,用于自己复习和交流,希望大家多多指点: 第一个go程序: package main import ( "fmt" //我们需要使用fmt包中的Printf()函数 ) func main(){ fmt.Printf("hello world for jackLiang") } 其中要点解读: 1、package 表示go代码所属的包 2、要生成GO可执行程序,必须建立一个main()函数(不能代参数,也不能定义返回值) 3、go语音中所有函数必须以关键字func开头 4、go程序的代码注释与C++保持一致: /* 块注释 */ /// 行注释 变量与变量声明 go变量的声明方式与C和C++有所不同的,go语音引入了关...阅读全文

博文 2014-10-04 19:26:39 jacking124

golang下在终端显示字体颜色及闪烁、下划线效果的小工具

在终端下打印不同颜色的字体,具体说明见:http://blog.csdn.net/gxut555/article/details/7913591 自己用golang实现一个,除了在MAC下显示不出效果来,其他端上还算正常了,效果所示: 代码如下(见:https://github.com/liuyongshuai/goColorTerm): ``` /* * @author Liu Yongshuai * @package goColorTerm * @date 2018-01-25 19:19 */ package goColorTerm import ( "fmt" "strings" "reflect" ) //绿色字体,modifie...阅读全文

博文 2018-02-01 17:55:52 liuyongshuai

每周一个GoLang设计模式之组合模式

我是设计模式的推崇者,相信一个良好的架构能够给系统的稳定运行和后期维护带来极大的方便,因为最近有时间重新学习GoF的设计模式,于是产生了用Go实现GoF经典设计模式的想法。 这篇文章遵循GoF书中的脉络,本篇是这个系列的第一篇:组合模式(Composite),以后如果在正常工作允许的前提下,应该会每周更新一篇。欢迎大家访问[我的博客](http://zuozuohao.github.io/),代码可以在[@Zuozuohao](https://github.com/Zuozuohao/GolangGOFPatterns)下载。 GoF在第二章通过设计一个Lexi的文档编辑器来介绍设计模式的使用,GoF认为Lexi设计面临七个问题: 1. **文档结构** 2....阅读全文

启航 - cache2go源码分析

一、概述​ 我们今天开始第一部分“golang技能提升”。这一块我计划分析3个项目,一个是很流行的golang源码阅读入门项目cache2go,接着是非常流行的memcache的go语言版groupcache,最后是docker项目中分出来的核心组件之一containerd,通过这3个项目的源码全解析来达到golang能力上一个台阶的目的。 在本系列教程的学习过程中,我希望你能够做到如下要求:如果你是一个go语言新手,在看下面的代码分析过程中你肯定会遇到一些自己陌生的编码方式、陌生的知识点,这个过程中我希望你遇到一个点掌握一个点,比如看到下面的代码用到了锁,就去找各种资料把锁相关的知识点学了。看到回调函数,就思考一下人家为什么这些地方都使用回调函数,有什么好处。这样在看完这个项目源码分析后,...阅读全文

博文 2018-06-19 12:30:28 CloudGeek

go语言defer使用

go语言defer使用 分类: golang2013-09-27 12:53 34人阅读 评论(0) 收藏 举报 defer Go语言中有种不错的设计,即延迟(defer)语句,你可以在函数中添加多个defer语句。当函数执行到最后时,这些defer语句会按照逆序执行,最后该函数返回。特别是当你在进行一些打开资源的操作时,遇到错误需要提前返回,在返回前你需要关闭相应的资源,不然很容易造成资源泄露等问题。如下代码所示,我们一般写打开一个资源是这样操作的: func ReadWrite() bool { file.Open("file") // 做一些工作 if failureX { file.Close() return false } if failureY { file.Close() r...阅读全文

博文 2015-04-26 05:00:07 legend_x

golang system call

golang处理系统调用的包为syscall,具体系统调用时通过汇编来实现在类Unix系统中,使用以下4个方法进行系统调用(syscall_unix.go)。(trapa1a2a3 ) (r1r2 err ) (trapa1a2a3a4a5a6 ) (r1r2 err ) (trapa1a2a3 ) (r1r2 err ) (trapa1a2a3a4a5a6 ) (r1r2 err )trap 为系统调用号,a1~a6为寄存器参数,以X86为例,如下所示:Linux系统调用号有300多个:(zsysnum_linux_amd64.go)package syscallconst ( SYS_READ = 0 SYS_WRITE = 1 SYS_OPEN = 2 SYS_CLOSE = 3 SY...阅读全文

博文 2018-08-23 15:36:23 暮色伊人

《Go语言编程》【2.7 完整示例】的错误

今天看《Go语言编程》再次发现了两处错误,一处是目录名称algorithms,根据上下文推测,目录名应当是没有最后一个字幕s的algorithm,因为最后main主程序import导入包时、调用排序函数时,以及编译环节时,都采用了algorithm这个名字,书中结构如下图:同时按照书中所示的程序目录结构编译会报错:can't load package cannot find package经过重新整理,修改成如下目录结构后编译不再报无法加载包和无法找到包的错误:下图是修改成正确结构后编译和运行程序的结果:本文出自 “松松” 博客,请务必保留此出处http://dongsong.blog.51cto.com/916653/158890...阅读全文

博文 2015-12-14 19:00:00 dongsong1117

idea开发go

idea开发go 以我的idea版本,2016.1.3为例: 1 从idea插件官网下载开发go所需要的插件:官网地址: https://plugins.jetbrains.com/ go插件地址: https://plugins.jetbrains.com/plugin/5047?pr=idea 注意版本对应参照地址: https://github.com/go-lang-plugin-org/go-lang-idea-plugin 注意哪个版本的idea需要下载哪个版本的插件 2 下载完成之后,需要进行配置, 找File--Settings,这里有好几个插件项 All plugins 显示所有插件。 Enabled 显示当前所有已经启用的插件。 Disabled 显示当期那所有已经禁用的...阅读全文

博文 2016-08-04 20:00:04 君子兰1002

容器时代的堡垒机LAIN Entry

**Entry** 是 LAIN 的 layer2 的一个特殊应用,允许开发者通过 `lain enter` 命令或者 console 的 web 界面远程登录到具有本人管理权限的容器中。 该效果等同于在 LAIN 的节点上执行 `docker exec -it $container_id /bin/bash`。 对于没有权限登录节点的开发者,使用 **Entry** 远程进入自己的容器调试是不错的选择。 使用前要注意 **Entry** 由于需要访问集群的特殊资源,必须要由集群管理员部署,Entry的管理员也必须只能是集群管理员。 **Entry** 使用前要确保集群的 sso 验证机制已经打开,否则客户端可以通过构造 http(s) 的 header 进入其他应用的容器。 整...阅读全文

开源项目 2018-05-02 18:30:00 网友

公司编程竞赛之最长路径问题 — 从深度优先搜索算法到贪心算法,再到模拟退火算法

最近产品线举办了一个软件编程大赛,题目非常的有趣,就是在一个9 × 9的格子里,你要和另一个敌人PK,在PK的过程中,你可以吃格子里的果实来提升攻击力。每次可以往正上、正下、正左、正右、左上、左下、右上、右下八个方向走。每次要么连续吃果实要么连续走空白区域,且不能走重复的位置。初始状态如下图所示: ![](http://o7x0ygc3f.bkt.clouddn.com/%E6%9C%80%E9%95%BF%E8%B7%AF%E5%BE%84%E9%97%AE%E9%A2%98-5.png) 为了提升攻击力,我们需要尽可能地一次吃最多的果实,所以路线可以这样规划: ![](http://o7x0ygc3f.bkt.clouddn.com/%E6%9C%80%E9%95%BF...阅读全文