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

Go语言基础:method

我们在C语言中,struct中声明函数,而Go中则不能再struct中声明函数。而是采用另外一种形态存在,Go中叫method。 method的概念 method是附属在一个给定的类型上,语法和函数的声明语法几乎一样,只是再func后面增加了一个recevier(也就是method所依从的主体) method的语法格式 func (r ReceiverType) funcName(parameters) (results) 形象一点说,就是 ReceiverType 类型的所有字段,方法 funcName 都是可以使用的,可以认为 funcName 属于 ReceiverType。 method简单应用 package main import ( "fmt" "math" ) type Re...阅读全文

博文 2016-09-15 06:00:02 uudou

第三课:递归的三个例子

概述 前文中讲解了递归的运行机制,并讲解了简单的递归情况。从程序设计的角度来将,递归其实是现代程序设计不可或缺的一种方法,对于很多问题,用递归可能是一种较为合适的解决方法。但是如何设计递归需要设计或者求解出递推公式,才能转换为递归,其中的重点是设计递推公式。本文如下部分讲解三个例子,一个是人人皆知的汉诺塔,一个是求排列,一个是求整数划分,重点讲解如何设计递归公式。更详细的代码请见我的github 例1:汉诺塔 汉诺塔是学程序设计的童鞋必备的一环,其约束为:始终保持小圆盘不能在大圆盘之上,从一根柱子一到另一根柱子,中间可以借助一根柱子,示意图如图1所示: 图1:汉诺塔示意图,摘自维基百科 直觉上这应该是一个递归问题,但是如何设计递推公式是很多童鞋觉得比较头疼的问题。设计递推公式的本质就是形式化...阅读全文

博文 2017-03-05 11:28:37 CodingTech

Golang 中 print 与 fmt.print的区别

结论: print 在golang中 是属于输出到标准错误流中并打印,官方不建议写程序时候用它。可以再debug时候用 image.png fmt.print 在golang中 是属于标准输出流,一般使用它来进行屏幕输出. image.png By the way : fmt.Printf是格式化输出 fmt.Println是输出后换行 fmt.Sprint 是返回一个格式化的字符串 image.png One more word: 上图中所示的第10行输出结果为"宋佳",但打印区却优先显示了第12行的打印结果,我猜想可能是go语言这个内置函数print是用一个协程去跑,所以每次打印出现位置都不一样。但是fmt是一直在main协程里面调用,所以在控制台的输入是固定的.所以把第12行替换成fm...阅读全文

博文 2019-04-15 04:34:39 右哼哼丨左哼哼

Spring Boot 最佳实践(一)快速入门

一、关于Spring Boot 在开始了解Spring Boot之前,我们需要先了解一下Spring,因为Spring Boot的诞生和Spring是息息相关的,Spring Boot是Spring发展到一定程度的一个产物,但并不是Spring的替代品,Spring Boot是为了让程序员更好的使用Spring。说到这里可能有些人会迷糊,那到底Spring和Spring Boot有着什么样的联系呢? 1.Spring发展史 在开始之前我们先了解一下Spring,Spring的前身是interface21,这个框架最初是为了解决EJB开发笨重臃肿的问题,为J2EE提供了另一种简单又实用的解决方案,并在2004年3月发布了Spring 1.0正式版之后,就引起了Java界广泛的关注和热评,从此S...阅读全文

博文 2018-08-24 17:35:06 王磊的博客

TIOBE 2 月编程语言排行榜:VB 又有人要了,Go 一直在跌

这个月公布的排行榜中,我们惊奇地发现,VB 上升到了第 12 名的位置,同样取得一定涨幅的还有 Visual Basic.NET。回过头去看看,我们可以看到,1 月 VB 就出现了上涨趋势,没想到这个月还能继续增长。 Visual Basic(简称 VB)是 Microsoft 公司开发的一种通用的基于对象的程序设计语言,作为早期的一种开发语言,开发了很多较为大型的企业级应用程序,但似乎并不受资深程序员的欢迎。其最后的发布时间是 2015 年,最近也没在发布新版本。 上周,微软的 Mads Torgersen 还宣布他们将停止与 C# 和 Visual Basic 的共同进化策略。 这意味着如果与新的 C# 特性相比,Visual Basic 将会落后。 所以,VB 的这种涨势能保持多久,还...阅读全文

博文 2019-02-19 11:35:12 IT爱好者都

Go 语言内存管理(四):垃圾回收

介绍 编写 Go 代码不需要像写 C/C++ 那样手动的 malloc和 free内存,因为 malloc 操作由 Go 编译器的逃逸分析机制帮我们加上了,而 free 动作则是有 GC 机制来完成。 虽说 GC 是一个很好的特性,大大降低了编程门槛,但这是以损耗性能为代价的。Go 的 GC 机制是不断进化提升的,到现在也没有停止。其进化过程中主要有一下几个重要的里程碑: 1.1 版本: 标记+清除方式,整个过程需要 STW(stop the world,挂起所有用户 goroutine) 1.3 版本: 标记过程 STW,清除过程并行 1.5 版本: 标记过程使用三色标记法 1.8 版本: Hibrid Write Barrier 未来: 类似 JVM 的分代机制? 下面详细介绍下这整个演...阅读全文

博文 2019-05-02 19:34:37 达菲格

Mac下Golang安装以及目录结构

1.安装步骤a.下载地址 下载SDK后,解压到自己喜欢的目录(后面配置PATH需要用到)b.配置PATH,有很多个地方可以配置具体可参考此链(PATH配置详解),我是直接修改的~/.bash_profile来设置环境变量,因为该文件一般用户都能更改,没有涉及到任何权限问题,具体参考此链接粗暴配置。在此文件输入export GOROOT=$HOME/goexport GOPATH=$HOME/go:$HOME/MyGOexport PATH=$PATH:$GOROOT/bin:$GOPATH/bin其中GOROOT对应的就是前面的Go源码包解压路径,GOPATH可以设置多个看你自己想在哪里新建都行,按:分开就行如上面所示就是如此简单,环境就配置好了,可在命令行输入go 看是否安装成功2.目录结...阅读全文

博文 2017-09-29 18:34:50 小小刀锋

基于pinpoint改造的一种方式的思考【转】

1.Pinpoint简介 Pinpoint 是用 Java 编写的 APM(应用性能管理)工具,用于大规模分布式系统。在 Dapper(dapper.docx) 之后,Pinpoint 提供了一个解决方案,以帮助分析系统的总体结构以及分布式应用程序的组件之间是如何进行数据互联的。 它采用java agent 的方式对 jvm应用的无侵入的改造。同时对性能的影响非常小(只增加约3%资源利用率)。 支持以下模块。 tomcate 6/7/8,Jetty 9 Spring, Spring Boot Apache Http Client 3.x/4.x,JDK HttpConnector,GoogleHttpClinet,OkHttpClient,NingAsyncHttpClient Thrift...阅读全文

博文 2019-05-28 15:34:46 天草二十六_

Go coding in Go way-Gopher China演讲分享

导言:不同语言编程思维造就了编程风格以及代码形式的不一,那么如何运用GO编程思维去写GO代码?今天的分享就是基于对GO编码的一些观点分析,带领大家使用GO的编程思维来编写代码,当然本次分享中如果有不足之处也请大家指出和谅解。 |语言与思维方式我们首先从人类学语言假说开始,萨丕尔.沃夫假曾说过,语言可以影响或决定思维方式。在这里我要提一个大家可能都熟知的美国电影——《降临》,这部大片是根据美国华裔作家的小说改编的,主要剧情理论核心便印证了上述我们提到的假说——“语言影响思维并决定思维”。女主角在政府的委托下学习外星人语言,在学了外星人语言之后,她整体的思维方式发生质的改变,有强大的超能力,可以预知未来。当然这仅仅是电影,但是从中我们可以得到,选择语言是非常重要的,在座的各位应该非常庆幸,因为我...阅读全文

博文 2017-09-02 15:07:29 白明

Go转型——数据结构初级(三)

**1**.链式线性表 从之前的例题来看,线性表的顺序存储结构如果需要插入和删除i(1<=i<=n)元素,需要移动大量元素,所以我们可以看一下线性表另一种表示方式——链式存储结构。它不要求逻辑上相邻的元素物理位置也相邻,因此,链式存储结构没有顺序线性表的缺点,同样,它也失去了顺序线性表可随机存储的优点。 线性链表的特点是,使用一组任意的存储单元存储线性表的数据元素(遮住存储单元可以是连续的,也可以是不连续的),因此为了表示数据元素a(i)和其直接后继元素a(i+1)之间的逻辑关系,对于数据元素a(i)来说,除了要保存自身存储的数据信息,还需要存储一个指示其直接后继的信息(即直接后继的存储位置),这两部分结合起来组成数据元素a(i)的存储映像,称为**结点**。它包含两个域,其中,包含自身存储...阅读全文

博文 2018-01-23 11:14:31 yinshidaoshi

go实现LRU cache

1. LRU简介 1.1 概述 缓存资源通常比较昂贵,通常数据量较大时,会竟可能从较少的缓存满足尽可能多访问,这里有一种假设,通常最近被访问的数据,那么它就有可能会被后续继续访问,基于这种假设,将所有的数据按访问时间进行排序,并按驱逐出旧数据,那么存在缓存的数据就为热点数据,这样既节省了内存资源,又极大的满足了访问.LRU(Least recently used)算法就是基于这种假设的一直缓存置换算法. 1.2 算法流程 假设缓存大小为4,而写入顺序为A B C D E D F.访问顺序分为写入以及读取两种操作,写入需要更新访问时间,并且当数据到达最大缓存时需要逐出数据,而读取只会更新访问时间,写入置换算法流程如上图所示. 当未到达缓存大小时,所有数据按写入存储,并记录写入次序.写入E时缓存...阅读全文

博文 2018-04-19 15:34:52 沐风

Go语言——垃圾回收GC

Go语言——垃圾回收GC 参考: Go 垃圾回收原理 Golang源码探索(三) GC的实现原理 引用计数:对每个对象维护一个引用计数,当引用该对象的对象被销毁时,引用计数减1,当引用计数器为0是回收该对象。 优点:对象可以很快的被回收,不会出现内存耗尽或达到某个阀值时才回收。 缺点:不能很好的处理循环引用,而且实时维护引用计数,有也一定的代价。 代表语言:Python、PHP、Swift 标记-清除:从根变量开始遍历所有引用的对象,引用的对象标记为"被引用",没有被标记的进行回收。 优点:解决了引用计数的缺点。 缺点:需要STW,即要暂时停掉程序运行。 代表语言:Golang(其采用三色标记法) 分代收集:按照对象生命周期长短划分不同的代空间,生命周期长的放入老年代,而短的放入新生代,不同...阅读全文

博文 2018-10-25 17:34:49 陈先生_9e91

Go语言项目(kingshard)性能优化实例剖析

kingshard性能优化网络篇 最近kingshard的功能开发节奏慢了许多。一方面是工作确实比较忙,另一方面是我觉得kingshard的功能已经比较完善了,下一步的开发重点应该是性能优化。毕竟作为一个MySQL proxy,如果转发SQL的性能很差,再多的功能都无济于事。所以这个周末一直宅在家里优化kingshard的转发性能。经过两天的探索发现,将kingshard的转发SQL性能提升了18%左右,在这个过程中学到了一下知识。借此机会分享一下,同时也是督促一下自己写博客的积极性。:) 1. 发现kingshard的性能瓶颈 首选,对kingshard进行性能优化,我们必须要找到kingshard的性能瓶颈在哪里。Go语言在性能优化支持方面做的非常好,借助于go语言的pprof工具,我们...阅读全文

博文 2017-02-09 14:19:13 flike

做JAVA开发的同学一定遇到过的爆表问题,看这里解决

**欢迎大家前往[腾讯云+社区](https://cloud.tencent.com/developer/?fromSource=waitui),获取更多腾讯海量技术实践干货哦~** > 本文由[净地](https://cloud.tencent.com/developer/user/1126000?fromSource=waitui)发表于[云+社区专栏](https://cloud.tencent.com/developer/column/3994?fromSource=waitui) > 记一次Java线上服务器CPU过载问题的排查过程,详解排查过程中用到的Java性能监测工具:jvisualvm、jstack、jstat、jmap。 背景:Java线上服务运行一周后,某个周六晚上CP...阅读全文

博文 2018-10-11 17:38:16 qcloudcommunity

Go 语言基础之变量

这小节我们将要介绍如何定义变量、常量、Go内置类型以及Go程序设计中的一些技巧。 定义变量 Go语言里面定义变量有多种方式。 使用var关键字是Go最基本的定义变量方式,与C语言不同的是Go把变量类型放在变量名后面: //定义一个名称为“variableName”,类型为"type"的变量 var variableName type 定义多个变量 //定义三个类型都是“type”的变量 var vname1, vname2, vname3 type 定义变量并初始化值 //初始化“variableName”的变量为“value”值,类型是“type” var variableName type = value 同时初始化多个变量 /* 定义三个类型都是"type"的变量,并且分别初始化为相应...阅读全文

博文 2016-09-06 12:00:02 chenxun2009

如何结束子 goroutinue 求助

最近遇到一个难题,求助一下各位大神。 如下面部分代码所示。 computedata 内部 调用的dosomething函数是一个很耗时的函数,通过复杂的计算返回一个结果,用于其他函数计算。但是dosomething 函数在一秒之内,仍然没有返回结果。那么就直接超时,timeout掉。 但是目前遇到的困难是 即使我们这个computedata函数杀死,dosomething函数让着后台运行,该函数会修改一些全局函数,下次调用是,会影响下次的计算结果,因此必须彻底杀死,如何才能杀死它呢?求助高手? ```go func main() { computedata() for{ } } func computedata() { var c = ...阅读全文

书签创建工具Geekmarks

Geekmarks 提供免费开源、API 驱动的 Greeky 书签服务。 安装 Chrome 扩展,点击 g 图标: ![image](https://static.oschina.net/uploads/space/2017/0216/111520_uAiZ_2903254.png) 用 Google 账户登录,完成后,菜单如下所示: ![image](https://static.oschina.net/uploads/space/2017/0216/111602_Vgev_2903254.png) 点击“创建书签”(Create bookmark),输入新标签的书签并保存,不存在的标签将在飞行中创建: ![image](https://static.oschina.n...阅读全文

开源项目 2017-02-17 03:56:13 dimonomid

Golang下bind: address already in use

今天测试给服务端发消息,结果忘了把端口正常关闭,再次启动时候发现进程运行不了,出现提示说端口地址被占用了,这是由于上次忘了关闭,导致端口还在被使用,所以只能自己在终端查找并手动关闭,具体方法如下: 在终端输入lsof -i:8000,查找被使用的端口,其中8000是端口号,如下图所示 查找结果.jpeg COMMAND表示进程名,PID表示进程编号,输入kill 4707 (4707就是PID) 如果还被占用,就输入kill -9 4707强制结束进程...阅读全文

博文 2018-12-19 15:34:50 单抽律化娜

用队列求解迷宫最短路径及其应用(围住神经猫)

问题 给定一个M×N的迷宫图,求一条从指定入口到出口的最短路径.假设迷宫图如图所示(M=8, N=8) 对于图中的每个方块,空白表示通道,阴影表示墙。所求路径必须是简单路径,即在求得路径上不能重复出现同一通道块。为了算法方便,在迷宫外围加了一道围墙。对应迷宫数组为: var gameMap = [M + 2][N + 2]int{ {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 0, 0, 1, 0, 0, 0, 1, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 1, 0, 1}, {1, 0, 0, 0, 0, 1, 1, 0, 0, 1}, {1, 0, 1, 1, 1, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 1, 0, 0, 0...阅读全文

博文 2017-07-29 17:05:06 火蜥蜴

大佬带玩-一个旧手机的威力

这里的手机指安卓机。 大家都知道安卓机用的是Linux内核,所以理论上Linux可做的事情,手机都能做,下面列举一些有意思的事情。 必备技能: 会Linux。 安装Linux发行版 其实这个比较简单,只需装一个App, 但是有些技巧可以讲讲。 所需材料 安卓手机 必须 拥有公网IP的机器 非必须 无限流量卡 非必须 root权限 必须 Root root手机根据手机信号的不同,会有不同的办法,所以这里就不细讲,请自行百度,或google. 安装linux deploy 通过某个应用市场下载并安装 在线安装 在线安装是比较扯淡的,因为在国内实在是比较慢的,原因你懂的。 离线安装 通过以下地址可下载自己所需的镜像 http://sourceforge.net/projects/linuxonan...阅读全文

博文 2018-10-27 19:34:40 还未如愿见着不朽365

一个高性能MySQL proxy(kingshard)的性能测试报告

kingshard的性能测试报告 之前的几篇blog,给大家分享的都是kingshard(https://github.com/flike/kingshard )的架构与设计。其实很多人对kingshard的性能也非常关心。最近热心的网友bigpyer对kingshard做了详细的性能测试。在此分享一下。 1.测试环境 1.1服务器配置 类别 名称 OS 云主机 Ubuntu 14.04 LTS CPU Common KVM CPU @ 2.40GHz *4 RAM 8GB DISK 500GB kingshard master分支 Mysql v5.6.25 Sysbench v0.5 2.性能需求 测试通过kingshard转发SQL请求与直连DB发送SQL请求这两种情形下的性能差距。 ...阅读全文

Kubernetes利用Patroni部署高可用PostgreSQL(1)-- 准备

部署高可用的PostgreSQL一直都是一个比较麻烦的事情,因为官方或者社区并没有一个official的解决方案。由于项目需要,所以花了一些时间去调研并且实践了一些关于PostgreSQL的主流HA方案,包括:Crunchy, Stolon 和 Patroni, 还有就是pgpool+repmgr这种方案。看到网上关于Stolon的blog有一篇,但是那篇其实是翻译人家老外的,结果被到处转发(说明我们还是懒喜欢别人汉化的)。在国内外暂时还没找到Patroni在Kubernetes上部署的Blog。所以这里就简单分享一下,以便大家以后有遇到问题可以相互帮助。 方案选型 几种方案简单比较一下: 首先repmgr这种方案的算法有明显缺陷,非主流分布式算法,直接pass; Stolon和Patron...阅读全文

博文 2019-03-17 18:34:41 大雄good

go反射之后接口断言问题

这个问题困扰了我一晚上,但是最终还是被我试出来了。 问题场景: 1.我通过反射获取一个指针的value v := reflect.ValueOf(ptr).Elem() 这个指针指向了一个结构体,因为是指针所有我用了Elem()函数获取了指向的值。 2.因为ptr指针指向的结构体实现了一个接口,所以我用接口断言方法来调用接口的函数。 if _,ok := v.Interface().(XXX);ok{ ... } XXX是我实现的接口,看起来一切都没问题,但是问题来了。 //我用一个接口接收ptr的值 var i interface{} i = ptr if _,ok := i.(XXX);ok{ //ok为true ... } 如上所示,我用反射之前,接口断言没问题。但是v.Interfa...阅读全文

博文 2016-10-03 03:00:02 i冬瓜

Go 冒泡排序 ( Bubble Sort )

冒泡排序 冒泡排序 ( Bubble Sort ),是排序算法中最简单的一种 一般都是我们新了解一门语言时拿来练手使用 今天也不例外,虽然用 C# 写过无数次的冒泡排序,但是毕竟换了一门语言,所以有必要再来实现一次 原理 1.冒泡 既然决定写文章记录,那么就要好好的写 我们说冒泡排序简单,那么为什么简单呢?就是因为容易理解 冒泡 Bubble,如其意,就像气泡一样,他会慢慢的从海底浮出水面 那么这一层一层的浮现也是我们冒泡排序的实现方式 2.原理 假设我们有如此数组 : 7 2 9 22 16 93 202 0 33 29 84 一共是 11 个数字 我们先给数字加上下标 7[0] 2[1] 9[2] 22[3] 16[4] 93[5] 202[6] 0[7] 33[8] 29[9] 84[...阅读全文

博文 2018-07-17 01:34:44 SeaConch

(一)golang工作区

环境变量介绍 GOROOT:Golang的安装路径。 GOPATH:可以理解为工作目录或者工作区,也是平时接触最多的一个变量。它可以是一个目录,可以是多个目录路径,每个目录代表一个工作区。这些目录用于放置Go语言的源码文件(src),以及安装(命令go install)后的归档文件(pkg目录)和可执行文件(bin目录)。 GOBIN:GOROOT目录下的可执行文件放置目录,一般指bin。 理解构建和安装Go的过程 go build命令 go build 有很多种编译方法,如无参数编译、文件列表编译、指定包编译等,使用这些方法都可以输出可执行文件。go build 还有一些附加参数,可以显示更多的编译信息和更多的操作,详见下表所示。 go build编译时的附加参数 -v 编译时显示包名 -...阅读全文

博文 2018-11-10 21:34:38 杰克曼

Go在百万亿级搜索引擎中的应用

Poseidon 系统是由 360 开源的日志搜索平台,目前已经用到了生产环节中,可以在数百万亿条、数百 PB 大小的日志数据中快速分析和检索特定字符串。因为 Golang 得天独厚的支持并发编程,Poseidon 的核心搜索引擎、发报器、查询代理是用 Golang 开发的,在核心引擎查询、多天查询、多天数据异步下载中大量使用了 goroutine+channel 。大家上午好,我是郭军,很高兴今天在这里和大家交流。我今天演讲题目,Golang 在百万亿搜索引擎中的应用。Poseidon在希腊意思是海神,在这里是海量数据集的主宰者。之前我的工作一直面向海量用户,去年年中我接触大数据以及海量数据这样的场景,在今天的演讲中,主要会涉及以下几方面内容:设计目标Go 应用场景与遭遇的挑战怎样应对?开...阅读全文

博文 2017-09-18 07:05:02 肆虐的悲傷

Docker 文件系统以及启动容器的文件系统变化

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; 本文主要介绍一下 Docker 基础的东西,先介绍一下我的实现环境: 1. windows 10 正式版 1. Docker Toolbox 1. Docker version 1.8.2 1. 官方镜像 ubuntu:latest 这里我们主要只说 aufs/containers/graph 这三个目录。 1. 先进入 Docker 文件系统目录 ll /var/lib/docker #其中目录是这样的 /var/lib/docker -> /mnt/sda1/var/lib/docker/ df -h # 查看挂载情况 Filesystem Size Used Available Use%...阅读全文

博文 2017-02-09 18:41:30 widuu

Go语言基础:method

我们在C语言中,struct中声明函数,而Go中则不能再struct中声明函数。而是采用另外一种形态存在,Go中叫method。 method的概念 method是附属在一个给定的类型上,语法和函数的声明语法几乎一样,只是再func后面增加了一个recevier(也就是method所依从的主体) method的语法格式 func (r ReceiverType) funcName(parameters) (results) 形象一点说,就是 ReceiverType 类型的所有字段,方法 funcName 都是可以使用的,可以认为 funcName 属于 ReceiverType。 method简单应用 package main import ( "fmt" "math" ) type Re...阅读全文

博文 2016-09-06 23:00:03 uudou

Go之Json的struct tag

自“灰子学技术”公众号原文链接:https://mp.weixin.qq.com/s/W6yL8aqXvmU7Vyd0riWIJw最近使用go的json包的时候,有一个struct tag标识,关于它的使用规则如下所示:1.这个标识在json调用marshal做序列化操作的时候,会把key值解析为struct tag定义的值。2.如果没有这个标识,在Key值是大写的时候,会将这个值的名字解析为序列化之后的Key值。如果是小写就会忽略,这个是因为Go规定首字母是大写字母是公有,小写字母是私有导致的。问题:一旦我们需要json序列化之后的结果中的Key值名称,希望是小写字母的时候,我们该怎么办?答案就是用struct tag,因为它可以讲大写字母重名命成小写字母。例子:​备注:小写字母 Mars...阅读全文

关于go语言的虚拟地址空间

经常在书上看到C程序的虚拟空间,如下面链接中的图片所示 想知道,这个模型是否是语言无关的? go语言是否也是使用这样的方式组织虚拟地址空间的? https://upload.wikimedia.org/wikipedia/commons/thumb/3/32/Virtual_address_space_and_physical_address_space_relationship.svg/773px-Virtual_address_space_and_physical_address_space_relationship.svg.pn...阅读全文

golang 程序在 docker 无法找到其他容器

阅读对象 假设阅读者了解 docker,docker-compose以及 go 的语法 问题描述 我有三个应用分别叫做mysql,goApp,javaApp。 他们的依赖关系如下图所示: image.png goApp 通过调用 javaApp 的服务完成逻辑。 javaApp 直接和 mysql 数据库打交道。 为了让他们三个很容易的在 docker 容器里跑起来我使用了 docker-compose。具体的配置文件如下: version: '2' services: mysql: container_name: mysql image: mysql:5.7 restart: always hostname: mysql environment: MYSQL_DATABASE: ${MYS...阅读全文

博文 2017-08-10 14:05:10 耿宜超

GO语言环境在Red Hat Linux 7.5上的配置

这篇文章是我根据goland的官方文档及自己的实践总结出来的一份基础向GO语言环境在Linux系统上的配置教程,使用的Linux版本:Red Hat Enterprise Linux Server release 7.5 (Maipo)首先,我们应该先进入下载网站:www.Jetbrains.com 网站如图所示我们选择顶部的Languages选项,可以看到如下页面此时发现“GO”的光标是暗着的,无法选取; 我们往下拉取页面,可以看到左端有Languages选项且正在选中着它;我们应该取消它的选中,可以看到取消后,GO变为可选项。在选取“GO”选项后,会出现如下所示界面; 我们把鼠标移到GoLand上即可看到下载键;点击“DOWNLOAD”; 之后会进入如下界面,根据自己的操作系统选择合适版...阅读全文

博文 2018-08-17 14:35:25 YIBOWAY

Docker 问题 集装箱 不断更新中

本文档已经更新到GitHub上: 查看地址 docker 问题列表 Error parsing reference: "golang:alpine as builder" is not a valid repository/tag: invalid reference format 解决措施? 查看docker的版本 docker --version Docker version 1.13.1, build 94f4240/1.13.1 需要升级docker的版本 具体升级过程,可以查看007---如何升级docker的版本.md文档 Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting ...阅读全文

博文 2018-09-18 18:34:41 故新_d4ef

密码管理EasyPass开发笔记(第2篇)

EasyPass的后端框架 EasyPass采用golang作为后端语言。作为近今年比较火爆的语言,golang以它的高并发和开发快吸引了一大批优秀的开发者,EasyPass也正是看中了它的简洁、高效和高性能。后端存储EasyPass采用mongo,mongo是nosql的佼佼者,支持各种复杂的查询,特别是4.0支持了事务后,发展迅猛。 EasyPass的后端主要负责加密数据的存储,架构也是相对简单,如下所示: EasyPass后端架构图 网关层负责借口的限流和鉴权,业务层是具体业务逻辑,底层存储是用的mongodb。 EasyPass的表结构 用户的每一个密码对于mongodb里的一条数据,具体的数据结构如下所示: { "id": "数据的ID", "account": "数据所有者的帐号...阅读全文

博文 2018-10-03 09:34:41 zhongxuqi

百亿级日志系统架构设计及优化

本文将从海量日志系统在优化、部署、监控方向如何更适应业务的需求入手,重点从多种日志系统的架构设计对比;后续调优过程:横向扩展与纵向扩展,分集群,数据分治,重写数据链路等实际现象与问题展开。 日志系统架构基准 有过项目开发经验的朋友都知道:从平台的最初搭建到实现核心业务,都需要有日志平台为各种业务保驾护航。 图片.png 如上图所示,对于一个简单的日志应用场景,通常会准备 master/slave 两个应用。我们只需运行一个 Shell 脚本,便可查看是否存在错误信息。 随着业务复杂度的增加,应用场景也会变得复杂。虽然监控系统能够显示某台机器或者某个应用的错误。 然而在实际的生产环境中,由于实施了隔离,一旦在上图下侧的红框内某个应用出现了 Bug,则无法访问到其对应的日志,也就谈不上将日志取出...阅读全文

go微服务概述

Go使用grpc+http打造高性能微服务 2017年11月22日 00:00:00 阅读数:7629 大家可以发现,Go越来越流行,其一是目前云计算领域基本是使用Go作为底层开发语言;其二是随着区块链的火爆,引申出了其背后很多开源项目,很多都是使用Go语言进行开发;其三就是在微服务方面,Go也展示很大的优势性。那么微服务是什么,如何将其与Go做一个整合,来提升整体开发生产效率,下面会进行详细讲解。 什么是微服务 微服务的概念最早由 Martin Fowler 提出,在他的理论当中,微服务是一整套小的服务,其中每一个服务互相之间都是独立的,它们之间通过 lightweight 机制进行交互。 图 1 图 1 所示是最传统的一个应用软件架构,最顶层是 load balancer ,下面布局很多...阅读全文

博文 2019-04-28 10:31:03 qq_37058442

技术改变今天-go语言安装及开发环境

提到这个简书的发表,首先感谢老师@higer 和大哥@菜菜子这段时间对在处理问题过程中的帮助的帮助,让我萌生写出来想法的是@菜菜子,我自己觉得这个问题对大多数人来说是很简单的东西,是@菜菜子的鼓励,我觉得有写下去的必要。图1 所以,最后感谢我自己,就想李笑来老师上周在得到说的7点一样:1、确定自己有强烈的欲望搞定这个技能;2、寻找最少必要知识,反复问自己:这事儿最关键的地方在哪里?我觉得目前对我来说学习区块链最关键的地方在我们研习社。3、马上开始运用、马上开始践行;4、相信自己一定能够学会,相信自己一定会通过践行而进步;5、通过记录,量化自己的刻意练习进程;6、不断总结,不断整理,不断让那些新技能、新概念,在自己的脑子里有清晰的组织与关联;7、绝对不能跟笨蛋斗气,要珍惜自己的时间与生命……一...阅读全文

博文 2017-05-31 23:07:21 刘小志_df1d

BGP公网成本节省50%秘笈,便宜到阿里云快哭了

摘要: 近日,阿里云推出了共享流量包和共享带宽包,将云上BGP公网使用成本大幅降低,最高可降50%。 共享流量包是BGP流量的预付费套餐,价格比后付费流量更低,并支持闲时流量包,大大降低了BGP流量成本。共享流量包产品覆盖面广,按流量计费的ECS、EIP、SLB和NAT网关都可以使用。 近日,阿里云推出了共享流量包和共享带宽包,将云上BGP公网使用成本大幅降低,最高可降50%。 共享流量包是BGP流量的预付费套餐,价格比后付费流量更低,并支持闲时流量包,大大降低了BGP流量成本。共享流量包产品覆盖面广,按流量计费的ECS、EIP、SLB和NAT网关都可以使用。 共享带宽包是独立的带宽产品,提供高质量的多线BGP带宽和丰富多样的计费模式。支持将弹性公网IP(EIP)添加到共享...阅读全文

Go使用grpc+http打造高性能微服务

大家可以发现,Go越来越流行,其一是目前云计算领域基本是使用Go作为底层开发语言;其二是随着区块链的火爆,引申出了其背后很多开源项目,很多都是使用Go语言进行开发;其三就是在微服务方面,Go也展示很大的优势性。那么微服务是什么,如何将其与Go做一个整合,来提升整体开发生产效率,下面会进行详细讲解。 什么是微服务 微服务的概念最早由 Martin Fowler 提出,在他的理论当中,微服务是一整套小的服务,其中每一个服务互相之间都是独立的,它们之间通过 lightweight 机制进行交互。 图 1 图 1 所示是最传统的一个应用软件架构,最顶层是 load balancer ,下面布局很多cuisine,这些cuisine共享一个数据库。 图 2 图 2 是微服务的架构图,由图中我们可以看出...阅读全文

博文 2018-12-26 11:31:01 RA681t58CJxsgCkJ31

Go语言基础:method

我们在C语言中,struct中声明函数,而Go中则不能再struct中声明函数。而是采用另外一种形态存在,Go中叫method。 method的概念 method是附属在一个给定的类型上,语法和函数的声明语法几乎一样,只是再func后面增加了一个recevier(也就是method所依从的主体) method的语法格式 func (r ReceiverType) funcName(parameters) (results) 形象一点说,就是 ReceiverType 类型的所有字段,方法 funcName 都是可以使用的,可以认为 funcName 属于 ReceiverType。 method简单应用 package main import ( "fmt" "math" ) type Re...阅读全文

博文 2016-09-07 00:00:01 uudou

DockOne微信分享(一二四):轻松筹监控系统实现方案

【编者的话】监控系统是服务管理最重要的组成部分之一,可以帮助开发人员更好的了解服务的运行状况,及时发现异常情况。虽然阿里提供收费的业务监控服务,但是监控有很多开源的解决方案,可以尝试自建监控系统,满足基本的监控需求,以后逐步完善优化。这样既可以更灵活的满足自身业务的监控需求,也可以为以后自建机房提供技术积累。通过以下7个方面来建设监控系统。 【3 天烧脑式 Docker 训练营 | 上海站】随着Docker技术被越来越多的人所认可,其应用的范围也越来越广泛。本次培训我们理论结合实践,从Docker应该场景、持续部署与交付、如何提升测试效率、存储、网络、监控、安全等角度进行。 1 . 日志打印完善的日志是实现监控的基础,如何打印日志关系到之后的日志过滤、存储以及分析。除了选择合适的日志库,还要...阅读全文

博文 2017-06-25 16:25:42 jiadas

DockOne微信分享(一一五):基于Neutron的Kubernetes SDN实践经验之谈

【编者的话】本次分享将给大家介绍Kubernetes的网络通信原理,并介绍几种典型的Kubernetes网络实现方案。最后分享下我们公司ECP容器管理平台的在Neutron基础上为Kubernetes实现的SDN方案(Skynet)实践经验和演进。 【深圳站|3天烧脑式Kubernetes训练营】培训内容包括:Kubernetes概述和架构、部署和核心机制分析、进阶篇——Kubernetes调工作原理及源码分析等。 首先,向大家科普下Kubernetes所选择的CNI网络接口,简单介绍下网络实现的背景。 CNI即Container Network Interface,是一套容器网络的定义规范,包括方法规范、参数规范、响应规范等等。CNI只要求在容器创建时为容器分配网络资源、删除容器时释放网络...阅读全文

博文 2017-06-25 16:25:36 swordboy

VPN网关最佳实践系列(一)如何让VPC之间互通

摘要: 话题引入 VPN网关是阿里云新推出的一项网络服务,可以帮助你的企业轻松构建安全、稳定、高可用的网络互联方案。相比传统VPN软件和自建VPN,阿里云VPN网关部署方便,即开即用,售后支持专业。 今天,我们来谈一谈如何如何部署和配置VPN网关,使两个VPC之间能够私网互通,把你的云上网络连接起来。 话题引入 VPN网关是阿里云新推出的一项网络服务,可以帮助你的企业轻松构建安全、稳定、高可用的网络互联方案。相比传统VPN软件和自建VPN,阿里云VPN网关部署方便,即开即用,售后支持专业。 今天,我们来谈一谈如何如何部署和配置VPN网关,使两个VPC之间能够私网互通,把你的云上网络连接起来。 VPN部署 提示:VPN网关是基于Internet建立加密隧道进行通信,通信质...阅读全文

关于http的keep-alive的问题?

我用golang做了个简单的tcp服务器,在这个基础上加了个http服务器,下面是个demo。这里没有考虑超时之类的,只是演示作用,下面是源码部分: ```go package main import ( "fmt" "net" "os" ) func main() { l, err := net.Listen("tcp", "localhost:9765") if err != nil { fmt.Println("Error listening:", err.Error()) os.Exit(1) } defer l.Close() for { conn, err := l.Accept() fmt.Print...阅读全文

LVS负载均衡(LVS简介、三种工作模式、十种调度算法)

LVS负载均衡(LVS简介、三种工作模式、十种调度算法 一、LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构如图1所示,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然会被转发到后端真实的服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,最终用户不管是访问哪台真实服务器,得到的服务内容都...阅读全文

博文 2019-01-09 22:34:42 Golang语言社区

Google开发者大会:你不得不知的Tensorflow小技巧

Google Development Days China 2018近日在中国召开了。非常遗憾,小编因为不可抗性因素滞留在合肥,没办法去参加。但是小编的朋友有幸参加了会议,带来了关于tensorlfow的一手资料。这里跟随小编来关注tensorflow在生产环境下的最佳应用情况。 Google Brain软件工程师冯亦菲为我们带来了题为“用Tensorflow高层API来进行模型原型设计、训练和生产投入”的精彩报告。 冯亦菲姐姐给我们讲了一些tensorflwo的新的API的变动,最重要的是提出了一些使用tensorflow的建议。 总结出来有六个方面,分别是: 用Eager模式搭建原型 用Datasets处理数据 用Feature Columns提取特征 用Keras搭建模型 借用Cann...阅读全文

博文 2018-09-26 09:34:41 程序员小灰

Golang 格式化json忽略指定的字段

如下的结构体,格式化为json时我想忽略DataSource字段 type RealTimeData struct { Code string `json:"code"` Time time.Time `json:"time"` OpenPrice float32 `json:"openPrice"` PrevClosePrice float32 `json:"prevClosePrice"` LastPrice float32 `json:"lastPrice"` HighPrice float32 `json:"highPrice"` LowPrice float32 `json:"lowPrice"` MarketValue float32 `json:"marketValue"` P...阅读全文

博文 2019-08-10 23:32:56 鹅鹅鹅_

Go语言基础:method

我们在C语言中,struct中声明函数,而Go中则不能再struct中声明函数。而是采用另外一种形态存在,Go中叫method。 method的概念 method是附属在一个给定的类型上,语法和函数的声明语法几乎一样,只是再func后面增加了一个recevier(也就是method所依从的主体) method的语法格式 func (r ReceiverType) funcName(parameters) (results) 形象一点说,就是 ReceiverType 类型的所有字段,方法 funcName 都是可以使用的,可以认为 funcName 属于 ReceiverType。 method简单应用 package main import ( "fmt" "math" ) type Re...阅读全文

博文 2016-09-07 01:00:01 uudou

jvm垃圾回收算法

前言 java相较于c、c++语言的优势之一是自带垃圾回收器,程序开发人员不用手动管理内存,内存的分配和释放完全由gc(Garbage Collector)来做,极大地提高了软件开发效率及程序健壮性(手动管理内存容易造成内存泄漏)。凡事皆有两面性,java gc在给我们带来内存管理便捷性的同时,也面临STW(Stop The World)影响程序吞吐的缺陷。作为java开发人员,只有深入理解jvm垃圾回收的机制,才能在程序性能出现瓶颈时,更好的对程序进行优化。笔者通过拜读《深入理解java虚拟机》,总结书中内容,给大家分享下java虚拟机常见的垃圾回收算法。 垃圾确定 在垃圾回收之前,jvm需要确定哪些对象已死,即需要当做垃圾被回收。垃圾确认的方法传统的有引用计数法:用一个引用计数器来标记对...阅读全文

博文 2019-01-26 22:34:42 luckiexie

Go 语言内存管理(二):Go 内存管理

介绍 了解操作系统对内存的管理机制后,现在可以去看下 Go 语言是如何利用底层的这些特性来优化内存的。Go 的内存管理基本上参考 tcmalloc 来实现的,只是细节上根据自身的需要做了一些小的优化调整。 Go 的内存是自动管理的,我们可以随意定义变量直接使用,不需要考虑变量背后的内存申请和释放的问题。本文意在搞清楚 Go 在方面帮我们做了什么,使我们不用关心那些复杂内存的问题,还依旧能写出较为高效的程序。 本篇只介绍 Go 的内存管理模型,与其相关的还有逃逸分析和垃圾回收内容,因为篇幅的关系,打算后面找时间各自整理出一篇。 池 程序动态申请内存空间,是要使用系统调用的,比如 Linux 系统上是调用 mmap 方法实现的。但对于大型系统服务来说,直接调用 mmap 申请内存,会有一定的代价...阅读全文