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

go学习笔记-init函数执行顺序分析

golang中有个神奇的函数init,该函数会在所有程序执行开始前被调用,每个包可以包含多个init函数,所有被编辑器识别到的init函数都会在main函数执行前被调用。通常被用来注册一个程序需要使用的依赖,如mysql注册,配置文件加载等。 在main包的使用 package main import "fmt" func main() { fmt.Println("这里是mian") } func init() { fmt.Println("这里是Init1") } func init() { fmt.Println("这里是Init2") } //输出结果 这里是Init1 这里是Init2 这里是main 一个很简单的示例,可以看到init函数是在main函数执行之前被执行的,并且一个...阅读全文

博文 2020-01-14 23:32:39 旧梦发癫

Go语言暴力入门2-工欲善其事

工欲善其事-打造漂亮的Go语言编辑器 关于作者 程序开发人员,不拘泥于语言与技术,目前主要从事PHP和前端开发,使用Laravel和VueJs,App端使用Apicloud混合式开发。合适和够用是永不停息的追求。2017.05.04开始在空闲时间学习Go语言 个人网站:http://www.linganmin.cn 最近刚写了一个手机在线播放的H5电影站:http://www.ifilm.ltd 关于Gogland Gogland 是JetBrains专门为Go语言开发的商业化IDE的代号,旨在为Go开发提供符合人体工程学的环境。新的IDE通过针对Go语言的编码协助和工具集成扩展了IntelliJ平台的诸多功能 目前Gogland还在开发中,已经发布了几版预发行版本,因为是预览版本所以,目前...阅读全文

博文 2017-05-08 14:00:41 安小下

Go Gisp

Gisp 是简单 (非标准) 的 Lisp/Scheme 到 Go 的编译器。 ## 包括: * 基于 Rob Pike [Lexical Scanning in Go](http://cuddle.googlecode.com/hg/talk/lex.html#title-slide)  的Lexer [](http://cuddle.googlecode.com/hg/talk/lex.html#title-slide) * 简单递归解析器,支持 ints, floats, strings, bools * TCO * AST generating REPL ### 构建运行

阅读全文

Golang 心跳的实现

自: https://blog.csdn.net/lengyuezuixue/article/details/79235850 在多客户端同时访问服务器的工作模式下,首先要保证服务器的运行正常。因此,Server和Client建立通讯后,确保连接的及时断开就非常重要。否则,多个客户端长时间占用着连接不关闭,是非常可怕的服务器资源浪费。会使得服务器可服务的客户端数量大幅度减少。 因此,针对短链接和长连接,根据业务的需求,配套不同的处理机制。 短连接 一般建立完连接,就立刻传输数据。传输完数据,连接就关闭。服务端根据需要,设定连接的时长。超过时间长度,就算客户端超时。立刻关闭连接。 长连接 建立连接后,传输数据,然后要保持连接,然后再次传输数据。直到连接关闭。 socket读写可以通过 SetD...阅读全文

博文 2019-05-05 03:31:34 Jailman

web前端CSS开发中的10个不要

  开发人员是用逻辑思考的生物。添加一个DIV元素导致所有代码都不得不往下移一行,而另一个DIV”浮”到左侧,感觉没有任何意义。   你也一定听到过开发人员的抱怨:   “我们只需要向左边移动五个像素,但是…天哪!为什么整个都向下移动了一行。到底是哪里错了?!?!?!”所以,我们今天就来聊一聊CSS中的十大错误的做法。   根据我作为web前端开发人员使用CSS的经验,下面是我的十个”不要”。   1.不要滥用类   在有意义的地方使用ID而不要使用类。这是一个使得浏览器能够更快访问DOM元素的方法。   2.不要把一切都扔进一个CSS文件中   分区CSS使其更易于管理。每一个CSS文件都可以分解成例如header.css、footer.css...阅读全文

vs code golang配置

go语言能够使用JetBrains出品的Goland是最好的选择。 免费的编辑器,现在选择vs code也是不错的。 使用vs code已经能够很顺畅的写代码了,很早以前阻碍我使用vs code的主要问题就是代码提示,现在也不存在了。 确定你已经安装好了go 语言环境之后,首先安装vs code,直接去官网下载。https://code.visualstudio.com/ vs code下载示意 安装好软件之后,安装go语言插件。 Extentions 在搜索框输入关键字 go,安装 Microsoft提供的go插件。 安装之后的效果 为了更方便的写 go 程序,还需要做一些配置。 点击Debug图标,配置调试参数。 配置debug open launch.json 第一次配置,会要求你找一...阅读全文

博文 2019-10-30 18:32:57 aside section._1OhGeD

Go 高级并发模式:第二部分(计时器)

正如我在[上一篇文章](https://studygolang.com/articles/19394) 中所述,准确使用计时器很难的,所以这里进行一些说明。 ## 前言 如果你认为结合 Goroutines 去处理时间和计数器很简单的话,那你就错了,这里有提到的一些与 time.Timer 相关的问题或 bug: * [time: Timer.Reset is not possible to use correctly #14038](https://github.com/golang/go/issues/14038) * [time: Timer.C can still trigger even after Timer.Reset is called #11513](https://git...阅读全文

博文 2019-07-08 20:53:29 liulizhi

Go语言学习札记—— 第二章 Go编程环境(2)

2.2 运行 2.2.1 Hello World 实例 hello.go 代码: package main import "fmt" func main() { fmt.Printf("Hello, world; 世界/n") } 编译代码: $8g hello.go 8g 是针对i386 指令的编译器,它的输出文件为 hello.8 。其中 ‘8’ 表示文件是 i386 指令的输出文件。 如果是amd64 和arm 处理器,后缀则为 ‘6’ 和 ‘5’ 。 也就是说,如果你用的是amd64 处理器,那么应该用6g 命令编译, 输出的文件为hello.6 。 链接代码: $8l hello.8 运行程序: $hello.out 或者使用 $8l -o hello.exe hello.8 直接...阅读全文

go-micro之源码剖析: Registry

go-micro提供了分布式系统开发的核心需求,包括RPC和事件驱动交换。关于go-micro的详细内容请参考git上的go-micro项目,这篇文章主要来讲go-micro的组件register的源码剖析。 go-micro的结构图如下(来源git仓库)。 图1.1 可以看到go-micro底层分为6个组件,分别是broker、Codec、Register、Selector、Transport。 Registry是go-micro的注册模块,它提供可插拔的服务注册与发现功能,它目前的实现的方式有Consul,etcd,内存和k8s。我们以consul为例子,来看一下go-micro是如何完成整个注册实现的。 准备工作 需要consul,你可以在consul官网上下载consul的二进制可执...阅读全文

博文 2019-06-03 23:34:20 lucifer_L

Go gRPC进阶-go-grpc-middleware使用(八)

前言 上篇介绍了gRPC中TLS认证和自定义方法认证,最后还简单介绍了gRPC拦截器的使用。gRPC自身只能设置一个拦截器,所有逻辑都写一起会比较乱。本篇简单介绍go-grpc-middleware的使用,包括grpc_zap、grpc_auth和grpc_recovery。 go-grpc-middleware简介 go-grpc-middleware封装了认证(auth), 日志( logging), 消息(message), 验证(validation), 重试(retries) 和监控(retries)等拦截器。 安装 go get github.com/grpc-ecosystem/go-grpc-middleware 使用 import "github.com/grpc-ecos...阅读全文

博文 2020-04-26 10:26:14 FireworksEasyCool

如何优雅的落地一个微型分布式架构

设计该系统初衷是基于描绘业务(或机器集群)存储模型,分析代理缓存服务器磁盘存储与回源率的关系。系统意义是在腾讯云成本优化过程中,量化指导机房设备扩容。前半部分是介绍背景,对CDN缓存模型做一些理论思考。后半部分会实际操作搭建一个微型但是五脏俱全的分布式通用系统架构,最后赋予该系统一些跟背景相关的功能,解决成本优化中遇到的实际问题。缓存服务器存储模型架构(背景):​图1 存储模型腾讯CDN的线上路由是用户à分布于各地区各运营商的OC->SOC->SMid->源站。各个层级节点部署的都是缓存服务器。来自用户的部分请求流量命中服务器,另一部分产生回源流量。随着业务带宽自然增长,用户端带宽增长,假设业务回源率不变的情况下,磁盘缓存淘汰更新(淘汰)速率变快,表现为以下业务瓶颈(iowait变高、回源带...阅读全文

博文 2018-09-27 19:17:09 tuomaochengxuyuan

学习Go语言第一周的感受

学习Go语言第一周的感受 一、 首先,由于生活中的所需,需要对go语言进行一套系统的学习,下面就是学习过程的几种情况: 1.书籍,主要看了《学习 Go 语言(Golang)》,《go语言编程》这两本适合团队开发中,在较短的时间下,熟悉语言的语法,以及代码举例、思考学习; 《Go语言圣经》这本适合对语言在语法熟悉了以后时间比较宽裕,或者对自己要求较高的条件下需要看的(内容比较详细,也穿插的有需要的看)。 2.视频,单纯的书籍学习,会使大脑变的麻木,疲倦,结合着别人的讲解,以及图画给自己形成二次记忆,以及举一反三 3.刷题,新的知识的吸收程度需要一个考核,来检验自己的成果 4.项目,每个版块学懂以后进行相应的小项目,这样会让对语法和编程习惯有更好的理解和更好的开发效率 5.开源社区,开源项目:是...阅读全文

博文 2019-02-19 14:32:41 IT_model

一个简单的 HTTP 服务器 (一) (go语言)

// http.go package main import ( "fmt" "log" "net/http" ) func main() { fmt.Println("Hello World!") http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Hello, this is http server! " + r.URL.String())) }) http.HandleFunc("/bye", sayBye) log.Println("Starting server ...") log.Fatal((http.ListenAndServe(":8888", nil))) ...阅读全文

博文 2017-04-23 13:00:41 痞子汤

Gox语言——支持跨平台原生GUI开发的轻量级全功能脚本语言 - GX1

Gox语言是以Go语言(Golang)为基础的解释型/脚本语言,它除了具有一般脚本语言所具有的编写快捷、语言简洁、易于理解等特点外,还支持其他语言所不具备的跨平台原生图形界面(GUI)开发,并且代码写起来非常舒畅。 用Gox语言编程 Gox语言的主要特点包括: 跨平台,目前支持Windows、Mac和Linux等主流平台; 完全免费和开源,使用MIT授权协议; 代码基于Go语言(Golang),但做了一些优化,因此Go语言、C语言、C++、C#、Java及类似语言的开发者编写起来几乎没有任何压力,稍加了解就可以开始编写代码; 相较于Go语言严格的语法书写要求和静态数据类型限制,Gox语言实现了动态类型,并做了许多更接近主流高级语言的改进,使得代码书写上方便了很多; 基本支持所有Go语言主要的...阅读全文

博文 2020-04-09 00:32:46 陆满庭

Learn Golang List

Learn Golang List 简介 list标准包contain中的双向链表 常见操作 初始化 插入 删除 例子 package main import "fmt" import "container/list" func main() { fmt.Println("init list") l := list.New() //插入 l.PushBack("tail") fmt.Println(l) //头部添加 l.PushFront("head") fmt.Println(l) // 遍历 for i := l.Front(); i != nil; i = i.Next() { fmt.Println(i.Value) } } 如何查看帮助 终端运行godoc -http=:8080...阅读全文

博文 2019-02-13 04:34:43 笑吧小鸟

golang 指针类型引起的神奇 bug

下面是使用的结构体接口抽象定义,其实就是将结构体存进一个 map里。由于是读写都比较频繁,我加了读写锁。 // add progress listener. func (upload *UploaderGateway) AddProgress(key string, v ProgressListener) { upload.mutex.Lock() defer upload.mutex.Unlock() upload.ProgressMap[key] = v } //get progress listener. func (upload *UploaderGateway) GetProgress(key string) (v ProgressListener, err error) { up...阅读全文

博文 2019-05-26 03:34:41 kenuo

go 语言开发环境的安装与配置

go 语言开发环境的安装与配置 编辑器选择 一直以来都是用sublime,但是听说sublime对于golang的插件支持并不是特别完善,并且VS Code只要在自身所带的扩展商店里安装go插件就可以自动配置很多实用的插件,比如gocode、godef等,非常方便啊,特别是这些插件因为GFW的原因,并不是那么好配置。 https://code.visualstudio.com/ 安装golang https://golang.org/doc/install 检查安装 go version 配置环境变量 GOROOT--------C:\Go\ GOPATH--------G:\GoWorks PATH添加------C:\Go\bin\ 检查环境 go env go插件安装 打开VS Cod...阅读全文

博文 2017-10-02 16:30:01 renleimlj

好程序员Web前端开发入门之网页制作三要素

Web前端开发是由网页制作演变而来的,主要由HTML、CSS、JavaScript三大要素组成。专业的Web前端开发入门知识也一定会包含这些内容,今天好程序员就给大家简单介绍一下。HTML,超文本标记语言,标准通用标记语言下的一个应用。包括“头”部分(英语:Head)、和“主体”部分(英语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。CSS,层叠样式表,是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。JavaScript,一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常Ja...阅读全文

博文 2019-03-28 10:44:55 hcxy

免费分享阿里云负载均衡入门与产品使用指南

课程介绍 负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。 课时列表 • 课时1:负载均衡产品创建与使用限制 • 课时2:负载均衡产品结构 • 课时3:负载均衡管管理控制台基本操作 • 课时4:负载均衡产品优势与定义 • 课时5:负载均衡管理控制台监控指标的介绍 • 课时6:负载均衡管理控制台修改配置监听 • 课时7:负载均衡应用场景与名称解释 • 课时8:负载均衡证书管理常见问题 开始学习http://click.aliyu...阅读全文

go 语言学习记录1

1 package main 2 3 import "fmt" 4 5 func sum(values [] int , resultChan chan int){ 6 sum:=0 7 for _, value := range values{ 8 sum += value 9 } 10 resultChan <- sum 11 } 12 13 func main(){ 14 values := [] int{1,2,3,4,5,6,7,8,9,10} 15 resultChan := make(chan int, 2) 16 go sum(values[:len(values)/2],resultChan) 17 go sum(values[len(values)/2:],resultC...阅读全文

博文 2015-06-17 23:02:26 lwj1396

Go语言开发工具 LiteIDE0.1 更新

LiteIDE简介 go语言开发工具,更新到0.1.5。 实现特征: *) UTF8文件读写 *) GO语法高亮 *) 项目管理 *) 支持.pro项目编译 *) 支持无项目单独文件编译 *) gopromake自动编译工具 *) 可以从编译错误中定位到源码 项目主页: http://code.google.com/p/golangide/ 项目下载: http://code.google.com/p/golangide/downloads/list GO编译器下载: http://code.google.com/p/gomingw/ 操作系统支持: WIN3...阅读全文

博文 2015-06-17 23:00:44 visualfc

Jsoniter 0.9.8 发布: JSON 性能对标 Protobuf

Jsoniter 是一款快且灵活的 JSON 解析器,同时提供 Java 和 Go 两个版本。 最近发布的 0.9.8 版本对性能对标 Jackson 和 Protobuf 进行了详细的评测: https://github.com/json-itera... 。性能优化的原理会近期会发布于 infoq 中文站,尽请期待。 同时提供 PHP 一般的体验。在 PHP 里,你只需要记得 json_decode ,什么文档都可以解析。现在在 Java 里,你也可以这么做了。 Any any = Jsoniter.deserialize(input); // deserialize 返回 "Any",实际的解析是延迟在读取时才做的 any.get("items", '*', "name", 0); /...阅读全文

博文 2017-02-09 06:00:24 taowen

Golang对接Appsflyer

AppsFlyer:官方文档 我的代码: Appsflyer-go golang请求Appslfyer的接口 常量定义 const ( AppID = "com.your_appid" // 在AppsFlyer上的产品名称 AppsFlyerDevKey = "your_appsflyer_devkey" // AppsFlyer的devKey AppsFlyerUrlFormat = "https://api2.appsflyer.com/inappevent/%s" // Appslfyer事件的url AppsFlyerTimeFormat = "2006-01-02 15:04:05.000" // utc时间格式 ) Event,存储事件相关信息 type Event struc...阅读全文

博文 2019-06-04 21:32:38 GUIN蚂蚁

go结构体的学习和使用

package main //Go语言组合的思想很重,数据之间如果要传承 //需要将数组组合进来 //Go有指针的概念,但是并没有指针运算符 import ( "fmt" ) const ( ANIMAL_CAT = 0 ANIMAL_MOUSE = 1 ANIMAL_DOG = 2 ) //go语言的接口 type Animal interface { name() (string) setName(name string) setType(animalType int) getType()(int) } //猫 type Cat struct{ //名称 m_name string "名称_tag" //类型 m_type int "类型_tag" //种类 m_spec string ...阅读全文

博文 2016-10-30 16:00:02 davidsu33

seelog源码阅读【笔记】

最近被后台日志弄的很烦,看到有个项目简简单单,又能满足需要,顺便试下看看效果,做下记录。只是记录下一部分内容,就不全部读了,关于源码可以去https://github.com/xmge/seelog。 结构设计 // websocket客户端 type client struct { id string socket *websocket.Conn send chan []byte } // 客户端管理 type clientManager struct { clients map[*client]bool broadcast chan []byte register chan *client unregister chan *client } WebSocket 是 HTML5 开始提供的...阅读全文

LiteIDE X for Mac有哪些功能?LiteIDE X for Mac功能分享

LiteIDE X for Mac是Mac平台上的一款用于Go编程语言的专用和多平台IDE。是一个轻量级的开源跨平台 Go语言 IDE,是最早的面向Go语言的IDE之一。 LiteIDE X for Mac功能介绍1、核心功能系统环境管理MIME类型管理可配置编译命令支持文件搜索替换和恢复快速打开文件、符号和命令插件系统2、高级代码编辑器代码编辑支持 Go语言、Markdown 和 Golang Present快速代码导航工具语法高亮和配色方案代码完成代码折叠显示保存修订重读文件使用代码差异方式3、Go 语言支持Go 编译环境管理使用标准 Go 工具和 GOPATH 编译和测试自定义 GOPATH 支持 系统定义、IDE 定义和项目定义自定义项目编译配置Go 包浏览器Go 类视图和大纲Go ...阅读全文

博文 2019-06-10 17:32:47 小小木子a

图片服务器那些处理方案。

现在傻梦兽的服务器架构如下 image.png 看到这里你们会发现一个问题就是,安流量计费。只有两台主机是有宽带,其余都是内网通信。 如果文字传输的话,流量并不算大,可以这么处理。可是图片过多的时候,如果有资本的企业选择肯定是七牛云之类的服务,因为这里服务包含了(分布式、CDN、还有负载等一系列的功能),可是这类服务如果一不小心的话,超出流量那就只能喊爸爸了。 那么我们一般的小企业是如何处理这一个问题的呢?比如我现在的再搞一台固定宽带的服务器做图片服务,然后在第一个代理服务器nginx服务器中配置如下 location ^~ /upload { proxy_pass http://192.168.1.15; proxy_set_header Host $host; proxy_set_hea...阅读全文

博文 2019-12-11 06:32:42 傻梦兽

Go 每日一库之 carbon

简介 一线开发人员每天都要使用日期和时间相关的功能,各种定时器,活动时间处理等。标准库time使用起来不太灵活,特别是日期时间的创建和运算。carbon库是一个时间扩展库,基于 PHP 的carbon库编写。提供易于使用的接口。本文就来介绍一下这个库。 快速使用 第三方库需要先安装: $ go get github.com/uniplaces/carbon 后使用: package main import ( "fmt" "time" "github.com/uniplaces/carbon" ) func main() { fmt.Printf("Right now is %s\n", carbon.Now().DateTimeString()) today, _ := carbon.No...阅读全文

博文 2020-02-15 15:32:40 darjun

go语言有哪些好的debug方法?

作者:Davie 链接:https://www.zhihu.com/question/40980436/answer/655067839 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 作为一门静态语言,支持调试是必须的。1、godebug godebug是一个跨平台的Go程序调试工具,传统的编译型语言调试器使用底层系统调用并读取二进制文件用于调试各类符号。使用起来很麻烦而且很难移植。godebug使用不同的方法,直接把源码作为目标程序,在每一行插入调试代码,然后编译并运行。 但是目前GDB做的并不好,使用起来有这样那样的问题。2、dlv 专业调试Go语言的一款工具。安装:go get -u http://github.com/derekparker/del...阅读全文

博文 2019-04-18 14:41:37 qfhanru

使用sublime打造go语言的开发环境

工欲善其事,必先利其器。作为一个码农,编辑器是我们每天用的最多的工具。那么怎么构建一个go语言环境的编辑器呢?因为习惯轻量的sublime,不太喜欢繁重的IDE,就将自己的sublime编辑器打造为适合go语言开发的IDE。sublime是一个高度定制化的编辑器,有强大的插件管理平台,并内置了宏操作和python语言进行插件开发,通过这些,可以打造出复合我们习惯的IDE工具。在这篇文章中,将基于现有插件平台的提供的插件,进行配置。 sublime安装 根据自己的系统选择安装sublime 下载地址 安装Package Control 按下快捷键ctrl+` 在底部的控制台中输入以下代码,并回车 import urllib.request,os; pf = 'Package Control.s...阅读全文

博文 2019-08-10 14:02:47 暮雨

Go-Notepad++

本文暂停Go语法,而转向编辑器Notepad++。——工欲善其事,必先利其器。 参考资料 notepad++支持go语言高亮与go语言插件 安装GOnpp插件 在Notepad++中,选择菜单:插件/Plugin –> Plugin Manager –> Show Plugin Manager 在弹出的Plugin Manager对话框中,单看Available页面,选择Gonpp并Install即可。 GOnpp 下图是选中GOnpp时的描述信息: GOnpp assists you writing Go-programms. It has code completion and function calltips (using gocode, see below) as well as ...阅读全文

博文 2016-10-15 16:00:06 u013344915

golang包time用法详解

在我们编程过程中,经常会用到与时间相关的各种务需求,下面来介绍 golang 中有关时间的一些基本用法,我们从 time 的几种 type 来开始介绍。 时间可分为时间点与时间段,golang 也不例外,提供了以下两种基础类型 时间点(Time) 时间段(Duration) 除此之外 golang 也提供了以下类型,做一些特定的业务 时区(Location) Ticker Timer(定时器) 我们将按以上顺序来介绍 time 包的使用。 时间点(Time) 我们使用的所有与时间相关的业务都是基于点而延伸的,两点组成一个时间段,大多数应用也都是围绕这些点与面去做逻辑处理。 初始化 go 针对不同的参数类型提供了以下初始化的方式 // func Now() Time fmt.Println(t...阅读全文

博文 2019-04-23 04:34:39 佛心看世界

96元购买一年景安快云服务器

96元购买一年景安快云服务器 原价960元一年 刚好 阿里云的活动结束了 景安就接上来了 需要的朋友们可以参加 新用户才可以96元购买 1核CPU 2G内存 1M宽带 50G SSD硬盘服务器 活动链接:https://www.zzidc.com:443/main/huodong/onCloudBuy?groomid=eTGdimieXwM%3D 活动对象是个人实名认证的新用户 新用户:是指账户内没有任何有效订单的个人用...阅读全文

1.golang从零搭建游戏服务器框架 之 实现最简单的回显服务器

写在前面的话 首先,我是一个golang语言的初学者, 这里纯粹是学习笔记,以便以后返回来查找,防止遗忘。文章内容来源于 刘丹兵老师的教程, 大家可以直接去看老师的视频来进行学习。 需求分析 搭建一个最基础的服务器框架,实现客户端向服务器发送一条数据,服务器将该数据返回到客户端 根据需求,对服务器进行如下的设计 图片.png 编码实施 首先,先建立我们的目录结构 在自己golang环境的src目录下 新建文件下 zinx,这是我们游戏框架的名称(沿用了视频中的名称), 然后,在zinx目录下新建ziface目录和znet目录。在ziface目录下新建IServer.go文件,这里写我们的服务器接口。在znet目录下新建server.go文件,在这里写IServer接口的具体实现。 1.首先编...阅读全文

博文 2020-02-20 09:32:44 孟安乐Aaron

如何设计一个微型分布式架构?

序言(初衷)设计该系统初衷是基于描绘业务(或机器集群)存储模型,分析代理缓存服务器磁盘存储与回源率的关系。系统意义是在腾讯云成本优化过程中,量化指导机房设备扩容。前半部分是介绍背景,对CDN缓存模型做一些理论思考。后半部分会实际操作搭建一个微型但是五脏俱全的分布式通用系统架构,最后赋予该系统一些跟背景相关的功能,解决成本优化中遇到的实际问题。缓存服务器存储模型架构(背景): 图1 存储模型腾讯CDN的线上路由是用户à分布于各地区各运营商的OC->SOC->SMid->源站。各个层级节点部署的都是缓存服务器。来自用户的部分请求流量命中服务器,另一部分产生回源流量。随着业务带宽自然增长,用户端带宽增长,假设业务回源率不变的情况下,磁盘缓存淘汰更新(淘汰)速率变快,表现为以下业务瓶颈(iowait...阅读全文

博文 2018-09-21 16:34:47 Java架构解析

Go 1.3 Beta1 发布,支持谷歌 NaCL、编译更快

2014年4月25日,Google发布了Go语言1.3 beta1版本。Go 1.3并没有引入新的语言功能,只是进行了一些功能改进,并解决了该语言中的一些bug和用户的反馈。 Go 1.3的主要改进如下: 显著改进了链接器和编译器,可以更快地编译程序,尤其是大型应用程序。 Go编译器生成二进制代码的性能得到了改善,内存占用更少,现在有一个更快、更高效的垃圾回收器,以及一个重写的正则表达式处理程序。 新增了4个支持平台:Oracle Solaris、Plan 9、FreeBSD、Google的NaCL(Native Client)。 不再支持Windows 2000 欢迎关注码术...阅读全文

博文 2015-06-17 23:08:09 codemanship

一个简单的 HTTP 服务器 (四) (go语言)

// http.go package main import ( "log" "net/http" "os" "os/signal" "time" ) func main() { quit := make(chan os.Signal) signal.Notify(quit, os.Interrupt) server := &http.Server{ Addr: ":8888", WriteTimeout: 2 * time.Second, } mux := http.NewServeMux() mux.Handle("/", &myHandler{}) mux.HandleFunc("/bye", sayBye) server.Handler = mux go func() { <-qui...阅读全文

博文 2017-04-23 14:00:30 痞子汤

Go 学习进程第一波

之前从同事口中了解了go语言,一直没有机会接触。之前了解过python,但是由于长时间没用,所以荒废了。现在准备着手学习go语言,不为精通,只为在遇到某些问题的时候能够有一套解决方案。 目前自己的技术栈: java(主) android(2年) nodejs(2年) php(已废) 前端框架,主easyui,extjs 移动端开发(sencha touch) 因为最近工作太忙了,几乎全部时间都在处理公司的问题,有点对不起自己,急需学习一些新的东西来充实。选择GO, go go go..... 今天主要是了解一下go语言的基本知识,包括语法和编辑器,熟悉并且运行成功“Hello World!”。之前用过sublime,所以决定使用sublime 3 来作为GO的开发工具。 软件下载:https...阅读全文

博文 2016-10-18 05:00:01 zyy258963

Golang WebAssembly 前端开发 - 1. Hello world.md

本文使用的环境: go1.11 linux/amd64 chrome 70.0.3538.67 Golang 源文件 main.go 如下: package main func main() { println("Hello, world!") } 在 Golang 源文件目录下,将 Golang 代码编译为 wasm 后缀的 WebAssembly 二进制文件,再将该文件复制到一个工作目录中: GOOS=js GOARCH=wasm go build -o go_main.wasm cp go_main.wasm /path/to/static 工作目录下的 HTML 源文件 go_index.html 如下: 阅读全文

博文 2018-12-29 23:34:45 Platanuses

nginx初学入门

因为前几天加班比较多,人也比较累,不怎么想学习新的知识,周三加班到周四凌晨1点多,周四晚上直接到周五4点钟才睡,上午还要去上班,结果项目线上小问题不断,搞的身心俱疲,副能量爆满!!!周末就想着好好放松下,所以今天来点简单的!nginx,其实自己接触nginx也比较长时间了,上家公司项目使用nginx主要作为的是静态资源服务器,毕竟nginx的性能在业界也是有目共睹的,但是自己并没有怎么学习过nginx,只是懂的一点点配置。这次之所以想起再来看nginx是因为前段时间自己想在自己的服务器上搞一个jet brains的服务器,方便自己使用,其中就用nginx作为反向代理服务器使用,结果呢,搞了半天也没成功,也不知道是哪方面原因。所以自己准备再研究一下,不然以后经常找IDE的破解码也挺麻烦(壕们请...阅读全文

新梦想干货——那些关于软件工程的“宗教”辩论

引言:开发者的世界里总是充斥着各种各样的争论,从编程语言、框架甚至到编辑器、Windows/iOS系统,都可以成为争得面红耳赤的“宗教战争”。本文作者针对软件开发行业的辩论进行了深入研究,探讨了这些辩论背后的本质,解释了他认为好的技术辩论应该是怎样的。“Python的速度不行。”“都9102年了,还有人不用Java虚拟机(Scala、Clojure)构建Web App吗?”“Mong是最好的数据库;SQL很差劲,SQL数据库扩展性不行。任何现代工程师都必须熟悉Mongo。”“Golang糟透了(因为没有泛型);谁用谁白痴。”在我刚刚成为软件工程师那会,最令我震惊的就是,同行们居然用“宗教战争”这样的字眼来形容工程层面的争议。有这么严重吗?干嘛那么大火气?带着好奇心,我希望弄清为什么工程技术辩...阅读全文

博文 2019-10-29 21:32:59 aside section._1OhGeD

http服务器header返回时间问题

![QQ20180127-120200@2x.png](https://static.studygolang.com/180127/8e4885b0e95e27feed0018ca91c0fa3d.png) 浏览器请求后response返回的Date是默认时区,并不是我所在地区的时区。 这个很奇怪,怎么解决呢? 我使用 `time.Now().String()` 输出的时间是对的。 代码如下: ``` package main import ( "net/http" "log" "encoding/json" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, ...阅读全文

Go 起步 安装开发环境

开始学习Go之前肯定是得先安装开发环境啦,本章将介绍下开发环境的安装 1. 下载Go安装包 下载地址:https://golang.org/dl/ 下载合适自己的版本就好,安装就略了,下一步下一步... 测试安装是否成功 C:\Users\xx>go version go version go1.11.2 windows/amd64 2. 环境变量配置 这里主要是配置GOPATH和GOROOT GOPATH为代码存放地址,默认为在用户家目录下,一般都需要改下 GOROOT为Go程序安装的路径 image.png 3. 下载Go Ide 选择一款合适的编辑器开发会事半功倍的,我这里推荐Goland 下载地址:https://www.jetbrains.com/go/ 4. 总结 Go的开发环境...阅读全文

博文 2018-11-26 09:34:39 进阶默示录

Go 方法(第二部分)

这篇文章介绍了关于 Go 语言中方法的剩余部分。强烈建议先阅读[第一部分](https://studygolang.com/articles/14061) 的介绍部分。 ## 方法表达式 如果有这样一个类型 T,它的方法集中包含方法 M,则 T.M 会生成一个与方法 M 几乎相同且带有签名的方法,这称为 *方法表达式*。不同之处在于,它额外附带的第一个参数与 M 的接收者类型相等。 ```go package main import ( "fmt" "reflect" ) func PrintFunction(val interface{}) { t := reflect.TypeOf(val) fmt.Printf("Is variadic: %v\n", t.IsVariadic()) ...阅读全文

Go语言社区系统mlog-club 1.0.5 发布,使用nuxt.js渲染界面

项目地址 体验地址:https://mlog.club Github:https://github.com/mlogclub/mlog 本次更新内容 前后端分离,使用nuxt.js ( https://nuxtjs.org/ ) 渲染界面,Golang仅提供数据支撑。 功能简介 多用户博客 轻论坛 站内消息 站内收藏 机器人搜集公众号文章 用户登录、注册,支持 Github 账号登录 技术栈 iris (https://github.com/kataras/iris) mvc 框架 gorm (http://gorm.io/) orm 框架 resty (https://github.com/go-resty/r... 好用的 http-client cron (https://github...阅读全文

博文 2019-08-09 08:32:41 大猫猫酱

使用 Go 编写 PostgreSQL 触发器 【已翻译100%】

怎样应用 PostgreSQL 函数和 Golang 中的触发器? PostgreSQL 中的触发器是一种简单却功能强大的机制,它能反应表(table)中所正在发生的变化。 下文描述了怎样在 Go 中编写 PostgreSQL 触发器。 POSTGRESQL函数和触发器 通过使用 CREATE FUNCTION SQL 语句,PostgreSQL 可以让你创建用户自定义函数。 函数本质上就是 PostgreSQL 怎样管理逻辑的用户自定义部分。 可以用多种语言编写函数 – 最常见的很可能就是 PL/pgSQL, 它即为编写“stored procedures”时所使用的函数。你也可以用其它语言编写,如 Python 和 Perl。 你也可以用 C 代码来编写它们。因此必须将 C 代码编译进一...阅读全文

博文 2017-06-06 12:32:35 AzureSora,AzureSoraTocy,TocyJaneTrans,JaneTrans总长,总长无若,无若s张利民zs张利民z

如何五分钟内在vs code中配置golang的开发环境

如何五分钟内在vs code中配置golang的开发环境​ 这一期呢,我们来谈一下如何在vs code中配置golang开发环境。当然,开发golang最好的工具,应该算是goland的。 如果你用过intellij,android studio, 对于goland的上手来说基本上没有任何障碍。但是美中不足的,这个工具是收费的,来自jetbrains。不过也还好,它有30天的试用。很多高手呢,直接用类似NOTEPAD这类编辑器写代码,这种都是神级人物,不在此文的涉及范围之内。我感觉思维正常的开发者还是要找好的工具,所谓工欲善其事,必先利其器嘛, 所以大部分开发者还是倾向于找一些免费的工具,vs code是其中的佼佼者。在最开始开发goland的时候,笔者在配置vs code的过程中遇到了一些...阅读全文

博文 2019-08-02 08:32:38 丁哥开讲

Go:gsignal,信号的掌控者

![Illustration created for “A Journey With Go”, made from the original Go Gopher, created by Renee French.](https://raw.githubusercontent.com/studygolang/gctt-images2/master/20200309-Go-gsignal-Master-of-Signals/00.png) ℹ️ *本文基于 Go 1.13。* `signal` 包提供了信号处理器,让我们的 Go 程序可以与发送来的信号进行交互。在进入内部细节之前,我们先来了解下 listener。 ## 订阅 对信号的订阅是通过通道实现的。下面是一个监听所有中断信号和终端大小改...阅读全文

博文 2020-05-31 12:13:42 lxbwolf

Go语言学习-time包

go语言的time包 组成 time.Duration(时长,耗时) time.Time(时间点) time.C(放时间点的管道)[ Time.C:=make(chan time.Time) ] time包里有2个东西,一个是时间点,另一个是时长 时间点的意思就是“某一刻”,比如 2000年1月1日1点1分1秒 那一刻(后台记录的是unix时间,从1970年开始计算) 时长就是某一刻与另一刻的差,也就是耗时 函数 Sleep函数 time.Sleep(time.Duration) 表示睡多少时间,睡觉时,是阻塞状态 fmt.Println("start sleeping...") time.Sleep(time.Second) fmt.Println("end sleep.") //【结果】...阅读全文

博文 2016-10-11 03:00:10 tree2013