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

go语言接口和方法集问题笔记

注意: 此文章只是我的个人笔记,如有谬误,错误, 请一定指出! package main import "fmt" //IA test for methodset. type IA interface { Value() Pointer() } //A is a test type. type A int //Value receiver. func (a A) Value() { fmt.Printf("Value:%p, %d\n", &a, a) } //Pointer receiver. func (a *A) Pointer() { fmt.Printf("Pointer:%p, %d\n", a, *a) } func main() { //type A method set: ...阅读全文

博文 2016-09-21 04:00:00 htyu_0203_39

记录一次windows server上,反向代理服务器的配置和使用

背景 我司的软件在一个客户处测试功能和性能,这个客户比较特殊: 他们客户端是很旧的java代码,且要求不能改动,客户端的主要业务简单说就是上传下载文件 他们提供了客户端demo,http请求是用裸socket手动加http头,写死了http1.1,但又不带'host'这个http header 客户要求中间必须经过一台windows server服务器代理 后端的实际服务器是linux系统,用的是nginx host header问题(此时先直连后端服务,不考虑代理) 最开始是请求直接返400,nginx access log可以看到400但是没有更多信息,error log则没有任何信息打印,一开始另一位同事负责定位,我跟着一起用wireshark抓包看了很久,没得出结论。后来我又看了一下...阅读全文

博文 2019-03-08 20:34:39 nifhlheimr

js 使用golang模板拼接HTML代码

#### *

js 使用golang模板拼接HTML代码* - 功能: post 从服务端获取一个json数据,直接拼接HTML 感觉太乱。希望用go 的HTML模板实现HTML标签和数据的拼接并显示到对应的位置。 - 存在问题:我理解的模板是在服务端返回HTML页面时起作用,现在需要发送post请求获得数据之后再使用模板,初始化页面时模板不执行。需要怎么做...阅读全文

博文 2018-12-12 11:46:40 specialgolanger

服务超时总结

介绍 超时 请求超时,客户端给服务端发送请求时超时,此时服务端没有收到客户端的请求; 服务端内部超时,服务端可能存在DB操作、IO操作、调用其他服务超时; 响应超时,服务端给客户端返回响应时超时,此时服务端已经处理了请求。 超时发生需要客户端和服务端如何处理呢? 客户端最常见方法: 重试(前提是服务端接口支持幂等),重试间隔梯度增大,重试次数阈值最大值 不重试直接去查询请求结果状态,根据结果确认是否请求成功,或者什么都不处理,直接认为失败不做进一步处理 具体接口场景具体对待 服务端: 服务端内部如果超时了,应该尽快给客户端返回,告诉客户端超时失败,这个主要是通过服务端内部超时控制来实现,例如:golang http.TimeoutHandler 幂等性 支持接口无限重试主要靠的就是幂等性,实...阅读全文

博文 2019-08-20 22:02:43 凯文不上班

一个专家眼中的Go与Java垃圾回收算法大对比

导读:GC 是大部分现代语言内置的特性,本文作者针对 Go 语言声称的 10ms 以下的 GC 停顿进行了深入分析,还同 Java 的垃圾收集器做了对比。Go GC 是否已经足够成熟,请看高可用架构志愿者翻译的文章。我最近看过一堆宣传 Go 语言的最新垃圾收集器的文章。 其中一些文章来自 Go 项目本身。 他们声称 GC 技术发生了根本性的突破。以下是 2015 年 8 月新垃圾收集器的公告:Go 正在构建一个垃圾收集器(GC),不仅是为了了 2015 年,同时也为 2025 以及更远的未来…… stw 停顿不再是使用 Go 语言的障碍。在将来,应用程序随着硬件轻松地扩展,并且跟随硬件一起变得更加强大,GC 不会成为软件可扩展性的绊脚石。Go 团队不仅声称已经解决了 GC 暂停的问题,而且整...阅读全文

博文 2018-08-15 09:38:58 高可用架构

【golang包管理】 GPROXY使用

&痛点: 使用 go get 命令 自动下载相应的包时,由于国内网络原因会出现各种 类似于 golang.org/x/... 的问题 &解决方案 使用 golang 的 go module 包管理工具(golang版本 >= 1.11),设置 goproxy 即可 &步骤 虽然下面的内容主要是讲解如何设置 GOPROXY,但是我们也推荐你在使用 Go 模块时将 GO111MODULE 设置为 on 而不是 auto。 Go 1.13 及以上(推荐) 打开你的终端并执行: $ go env -w GOPROXY=https://goproxy.cn,direct 完成。 macOS 或 Linux 打开你的终端并执行: $ export GOPROXY=https://goproxy.cn 或...阅读全文

博文 2019-11-03 12:33:13 aside section._1OhGeD

go get 获取被墙依赖包解决方法

##GOPROXY 环境变量 我们知道从 Go 1.11 版本开始,官方支持了 go module 包依赖管理工具。 其实还新增了 GOPROXY 环境变量。如果设置了该变量,下载源代码时将会通过这个环境变量设置的代理地址,而不再是以前的直接从代码库下载。这无疑对我等无法科学上网的开发良民来说是最大的福音。 更可喜的是,goproxy.io 这个开源项目帮我们实现好了我们想要的。该项目允许开发者一键构建自己的 GOPROXY 代理服务。同时,也提供了公用的代理服务 https://goproxy.io,我们只需设置该环境变量即可正常下载被墙的源码包了: `go export GOPROXY=https://goproxy.io ` 也可以通过置空这个环境变量来关闭,export GOPROX...阅读全文

Komodo IDE 11 for Mac(IDE集成开发工具) v11.1.0(91033)激活版

实用的IDE集成开发工具哪里有?komodo ide 11 mac破解版可以在 Windows、Mac OS X 和 Linux 上运行,并支持通用的开源语言 —— Python、Perl、PHP 和 Ruby。代码智能引擎非常可靠。提供了所有语言的多线程和多进程服务,同时支持代码折叠、跟踪变化、智能语法检测以及快速书签等实用型功能。Komodo IDE 11 for Mac下载扫描所有语言安装找到定制扩展,比如 PEAR 模块。在项目方面,它支持与 CVS、Subversion 和 Perforce 的集成,也允许直接向服务器 FTP 传递代码。https://www.macdown.com/mac/3219.html Komodo IDE 11 for Mac下载破解教程1、Komodo...阅读全文

博文 2019-07-04 17:32:53 mac小小

云服务器 ECS弹性变配能力总览

摘要: 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,充分的助您降低 IT 成本,提升运维效率,使您更专注于自己核心业务创新。它的一个重要优势就是弹性计算,可以在数分钟内创建数千台的云服务器来应对您的业务压力,方便您根据自己的业务的需求从水平和垂直两个维度进行管理。 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,充分的助您降低 IT 成本,提升运维效率,使您更专注于自己核心业务创新。它的一个重要优势就是弹性计算,可以在数分钟内创建数千台的云服务器来应对您的业务压力,方便您根据自己的业务的需求从水平和垂直两个维度进行管理。 下面我们将着重介绍下目前云服务器的弹性能力,也许有您所不知道但是...阅读全文

阿里免费教你学习前端开发CSS基础

课程介绍 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。 CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。 课程目标 • 掌握CSS开发技术 适合人群 • 前端开发者 课时列表 • 课时1:CSS基础 • 课时2:CSS选择器(上) • 课时3:CSS选择器(下) • 课时4:CSS属性_背景、颜色、边框 • 课时5:CSS属性_字体...阅读全文

关于go中map的使用问题

map[key] 可以获取到value的引用,但是这个引用如何记录呢? 比如我的value有100个成员变量 map[key].value1 = a map[key].value2 = b map[key].value3 = c ... 这样写下去不是要有100次检索的过程么.这不科学啊. point := &map[key] point .value1 = a point .value2 = b point .value3 = c ... 这样写不是更科学么.但是编译器提示我不支持&.请问我该怎么作呢...阅读全文

webSocket原理探索

本文概述 Web Sockets的目标是在一个单独的持久连接上提供全双工、双向通信。在Javascript创建了Web Socket之后,会有一个HTTP请求发送到浏览器以发起连接。在取得服务器响应后,建立的连接会将HTTP升级从HTTP协议交换为WebSocket协议。 由于WebSocket使用自定义的协议,所以URL模式也略有不同。未加密的连接不再是http://,而是ws://;加密的连接也不是https://,而是wss://。在使用WebSocket URL时,必须带着这个模式,因为将来还有可能支持其他的模式。 使用自定义协议而非HTTP协议的好处是,能够在客户端和服务器之间发送非常少量的数据,而不必担心HTTP那样字节级的开销。由于传递的数据包很小,所以WebSocket非常适...阅读全文

Protobuf编码指南

这个文档会介绍protocol buffer的二进制有线格式(binary wire format)。你并不是需要理解这些后才能在应用里使用protocol buffer,但是当你想知道不同的protocol buffer格式是如何影响编码后的消息体的体积时,这些知识会非常有用。 一个简单的消息 假设有一个非常简单的消息定义: message Test1 { optional int32 a = 1; } 在应用中,你创建了一个Test1消息并把a设置为150。然后你把消息序列化到输出流中,如果你能查看编码后的消息,你会看到三个字节: 08 96 01 到目前为止,如此小而且都是数字-但是这是什么意思呢?继续往下看 Varint编码 要理解上面protocol buffer编码的数据,你需要...阅读全文

博文 2019-09-29 22:32:48 KevinYan

快速一键部署测试环境,降低环境配置风险

摘要: 环境部署是软件测试很重要的一个环节,但也是比较耗时间的环节,很多企业经常是项目立项后,开始邮件申请服务器资源,再三催促审批通过后,进行手工部署搭建环境,然后解决各种依赖和修改各种配置文件。如何有效减少环境部署流程,提升环境搭建效率,并且保证环境配置质量安全呢? 环境部署是软件测试很重要的一个环节,但也是比较耗时间的环节,很多企业经常是项目立项后,开始邮件申请服务器资源,再三催促审批通过后,进行手工部署搭建环境,然后解决各种依赖和修改各种配置文件。如何有效减少环境部署流程,提升环境搭建效率,并且保证环境配置质量安全呢?针对这些需求,新型一站式研发效能平台,云效的环境管理系统提供了解决方案。 首先,解决测试服务器资源管理的问题。 云效平台统一对测试服务器资源(包含:测试服务...阅读全文

http headers大总结

http headers 本文记录自己使用和理解到的headers,参考MDN,如有不同看法请发评论。 方向表示是请求header还是响应header或者两种情况都有,r是请求header,w是响应header,空白就是双向header;作用和解释如果是空白就是我不清楚。 Name 方向 作用 解释 Accept r 通用 请求时告诉服务端可以接受的响应类型,用于协商,服务端会按照顺序和权重返回合适的响应数据类型。 Accept-Charset r 通用 同上 客户端接受的字符集。 Accept-Encoding r 通用 同上 客户端可以接受的压缩编码。 Accept-Language r 通用 同上 客户端接受语言。 Accept-Ranges w Range 在Range请求时返回,标...阅读全文

博文 2020-04-12 10:32:41 eudore

Spring boot集成Go-FastDFS实现图片上传删除等功能

一.背景工作中接触到需要采集并管理大量图片的需求,本来是用的FastDFS,但是发现实际情况是在项目实施时难以找到linux服务器去安装FastDFS,所以经过调研,选择了可以在windows服务器上安装部署的Go-FastDFS文件服务器二.Go-FastDFS简介go-fastdfs是一个基于http协议的分布式文件系统,它基于大道至简的设计理念,一切从简设计,使得它的运维及扩展变得更加简单,它具有高性能、高可靠、无中心、免维护等优点。三.安装Go-FastDFS文件服务器1)下载地址:https://github.com/sjqzhang/go-fastdfs/releases2)下载完成直接启动fileserver.exe3)验证是否安装成功,访问localhost:80804)验证...阅读全文

用 Go 来了解一下 Redis 通讯协议

用 Go 来了解一下 Redis 通讯协议 原文地址:煎鱼的迷之传送门 Go、PHP、Java... 都有那么多包来支撑你使用 Redis,那你是否有想过 有了服务端,有了客户端,他们俩是怎样通讯,又是基于什么通讯协议做出交互的呢? 介绍 基于我们的目的,本文主要讲解和实践 Redis 的通讯协议 Redis 的客户端和服务端是通过 TCP 连接来进行数据交互, 服务器默认的端口号为 6379 客户端和服务器发送的命令或数据一律以 \r\n(CRLF)结尾(这是一条约定) 协议 在 Redis 中分为请求和回复,而请求协议又分为新版和旧版,新版统一请求协议在 Redis 1.2 版本中引入,最终在 Redis 2.0 版本成为 Redis 服务器通信的标准方式 本文是基于新版协议来实现功能,...阅读全文

博文 2018-06-07 21:34:37 煎鱼

Golang语言社区 课程2018年11月19日 更新说明

Golang语言社区 课程2018年11月19日 更新说明 1 从零搭建游戏服务器-第二期: 第二十三节:服务器架构拆分说明 第二十四节:服务器网关说明及实现 第二十五节:服务器架构日志模块 https://study.163.com/course/introduction.htm?courseId=1005743022&share=2&shareId=400000000538037 社区福利: 彬哥笔记 --3 开始学习Go语言需要准备什...阅读全文

博文 2018-11-19 19:34:43 Golang语言社区

兄弟连区块链技术培训Fabric 1.0源代码分析(35)Peer #EndorserServer(Endorser服务端)

兄弟连区块链技术培训Fabric 1.0源代码分析(35)Peer #EndorserServer(Endorser服务端)# Fabric 1.0源代码笔记 之 Peer #EndorserServer(Endorser服务端)## 1、EndorserServer概述EndorserServer相关代码在protos/peer、core/endorser目录下。* protos/peer/peer.pb.go,EndorserServer接口定义。* core/endorser/endorser.go,EndorserServer接口实现,即Endorser结构体及方法,以及Endorser服务端ProcessProposal处理流程。## 2、EndorserServer接口定义###...阅读全文

博文 2018-07-23 15:34:58 Delete_88c3

TCP长连接用json通信服务端怎么确定服务?

初次做长连接服务,遇到点小问题,以前都是http的,以url确定服务 举个例子说得清楚点 比如有2个服务,一个登录一个聊天,客户端传过来对应的json是 登录: {"type":"login","username":"abc","password":"123456"} 聊天: {"type":"chat","from":"张三","to":"李四","content":"李四你好"} json的type字段就表明了请求什么服务 对于golang通常我们要把这俩json解析为对应的结构体: type Login struct{ Type string Username string Password string } ...阅读全文

亿牛云代理告诉你什么样的代理ip才是高质量的代理ip?

高质量的代理ip,必须要符合3个特点: 1、高匿名 2、私密性 3、高质量     虽然现在市面上有很多提供代理ip资源的服务商,可以说想要找到代理ip资源很容易,但是想要找到真实可靠的高质量代理ip资源还是很难的,虽然代理ip市场的发展越来越快,各种各样的代理ip提供商层出不穷,尽管都能够满足用户各类的需求,但是因为各种业务的需求不同,能够找到一个性价比高又质量好的服务商还是很困难的。    不过代理ip资源市场上也不乏拥有这样的代理ip,比如说亿牛云代理,不仅可以提供高质量的代理ip,而且可以根据客户的业务需求定制代理iip,最主要的是他们家的代理实行的是业务独享的方式,这对客户来说是个很好的服务,客户业务独享他们家的代理,那使用的效果肯定是跟其他的代理商业务共享的有很大的优势...阅读全文

Go 1.8rc3 源代码学习:scanner

前言 scanner package 包含了 golang 词法分析器相关的数据结构和方法,源代码位于 /src/go/scanner example_test.go example_test.go 包含了一个使用 scanner 包的示例方法,该方法对 Euler 公式进行词法扫描 func ExampleScanner_Scan() { // src is the input that we want to tokenize. src := []byte("cos(x) + 1i*sin(x) // Euler") // Initialize the scanner. var s scanner.Scanner fset := token.NewFileSet() // ...阅读全文

博文 2017-02-10 10:00:48 xingpingz

Go语言开发的存储手机相册项目

# TaoAlbum 道相册 ## 说明 ### 项目由服务端和安卓客户端组成 ### 1.[Go语言后端](https://github.com/markusleevip/taostorage)项目配置使用,实现手机相册备份到私有服务器的功能 ### 2.[安卓客户端](https://github.com/markusleevip/TaoAlbum-android) ### 在[output](https://github.com/markusleevip/TaoAlbum-android/tree/master/output)目录提供了Windows x64平台的可运行版本。 ### 输入服务端地址,点击上传全部,将手机相册的照片全部上传到服务端,服务端使用SHA265算法对文件去重,...阅读全文

博文 2019-06-14 11:13:44 markus

RocketMQ主从如何同步消息消费进度?

微信公众号「后端进阶」,专注后端技术分享:Java、Golang、WEB框架、分布式中间件、服务治理等等。 前面我也跟大家讲述了 RocketMQ 读写分离的规则,但是你可能会问,主从服务器之间的消费进度是如何保持同步的?下面我来给大家解答一下。 如果消费者消费模式不同,也会有不同的保存方式,消费者端的消息消费进度保存到 OffsetStore 中,他有两个实现类: org.apache.rocketmq.client.consumer.store.LocalFileOffsetStore // 本地消费进度保存实现 org.apache.rocketmq.client.consumer.store.RemoteBrokerOffsetStore // 远程消费进度保存实现 其中,如果是广播...阅读全文

博文 2019-10-25 20:32:49 aside section._1OhGeD

让数据库运行在浏览器里?TiDB + WebAssembly 告诉你答案

作者:Max 一直以来都有个梦想: 希望有一个数据库能够弹性扩展(分布式)到成百上千节点的规模,易于学习和理解,可以运行在私有云、公有云、Multi-Cloud、Kubernetes,也能够跑在嵌入式设备(比如树莓派)上,更酷的是也能够直接运行在浏览器里,而且不需要任何浏览器扩展(Extension),变成「口袋数据库」,就像那部电影《蚁人》。 今天,这一切都变成了现实:TiDB 可以直接运行在浏览器本地。打开浏览器,你可以直接创建数据库,对数据进行增删改查。关掉浏览器,一切都消失了,干净绿色环保—— 首先在笔记本浏览器打开 play.pingcap.com(这里用的是 MacOS 上面的 Chrome,不确定其它浏览器是否正常),可能需要几秒来加载页面,然后就能看到熟悉的 Shell 了。...阅读全文

博文 2019-11-05 16:34:03

Golang 处理隐藏的空字符串编译时报错:illegal byte order mark

trim_test.go:479:11: illegal byte order mark println(" 民商法学院") 测试代码: func TestTrim(t *testing.T) { //因编辑器去除了此编码字符串,此处模拟字符 println(string('\uFEFF')+"民商法学院\n") println(strings.TrimSpace(string('\uFEFF')+"民商法学院\n")) } 需要将空字符串转换到16进制(FEFF): println(string('\uFEFF')+"民商法学院\n") println(strings.TrimSpace(strings.TrimPrefix(string('\uFEFF')+"民商法学院\n",strin...阅读全文

博文 2018-09-14 17:34:43 承诺一时的华丽

golang两种解析k8s资源yaml文件的方式(带---分隔符))

网上找了几种方案,糅合在一起,再自己作一下---分隔符的split切分,就可以随意解析出我们需要的yaml里的资源定义啦。引处,我感兴趣的是Deployment~ 需要关注的点:gopkg.in/yaml.v3这种方式自定义能力强,在只需要自己感兴趣的资源时,非常有用。yaml_k8s这种方式比较标准,也不用自定义结构,但和k8s的API版本相关,非严谨或是版本统一的情况,推荐使用。 代码送上: package main import ( "encoding/json" "fmt" "os" "strings" apps_v1 "k8s.io/api/apps/v1" yaml_k8s "k8s.io/apimachinery/pkg/util/yaml" yaml_v3 "gopkg.in...阅读全文

博文 2020-05-12 01:32:51 万州客

golang调用原生epoll引起event loop阻塞问题

前言: golang标准库net很优秀,可以让开发者轻易构建非阻塞网络服务,但开发爽快带来的问题协程数加大,比如在net/http里一个连接两个协程,grpc算是业务和keepalive心跳是四个协程,数据的进出是通过channel传输。 golang netpoll抽象了epoll事件的调用,借助runtime的gopark&goready实现就绪协程的调度,让应用层用同步方法构建io异步的网络应用。 该文章原文地址 http://xiaorui.cc/archives/6758 问题: 那么如何规避netpoll的协程太多的问题? 业界通用的方案是通过原syscall epoll实现网络应用,比如evio、gnet库。我先前使用过evio构建过不少服务,但当你的业务调用含有阻塞逻辑时会使...阅读全文

博文 2020-03-21 21:54:34 rfyiamcool

Go 编译器内核:给 Go 新增一个语句 —— 第一部分

这是两部分系列文章中的第一部分,该文章采用教程的方式来探讨 Go 编译器。Go 编译器复杂而庞大,需要一本书才可能描述清楚,所以这个系列文章旨在提供一个快速而深度优先的方式进入学习。我计划在以后会写更多关于编译器领域的描述文章。 我们会修改 Go 编译器来增加一个新的(玩具性质)语言特性,并构建一个经过修改的编译器进行使用。 ## 任务 —— 增加新的语句 很多语言都有 `while` 语句,在 Go 中对应的是 `for`: ```go for { } ``` 增加 `while` 语句是比较简单的,因此 —— 我们只需简单将其转换为 `for` 语句。所以我选择了一个稍微有点挑战性的任务,增加 `until`。`until` 语句...阅读全文

博文 2019-12-03 10:37:28 suhanyujie

xxl-job-executor的gin中间件

# xxl-job-executor的gin中间件 ## 背景 xxl-job-executor-go是xxl-job的golang执行器,可以独立运行,有时候我们要与项目或者框架(如:gin框架)集成起来合并为一个服务,本项目因此而生。 ## 执行器项目地址 https://github.com/xxl-job/xxl-job-executor-go ## 与gin集成示例 ```go package main import ( "github.com/gin-gonic/gin" "github.com/gin-middleware/xxl-job-executor" "github.com/xxl-job/xxl-...阅读全文

你应该知道的HTTP基础知识

2017-08-22怪盗kidou腾讯课堂Coding学院点击蓝字,关注我们哦! 作者:怪盗kidou链接:http://www.jianshu.com/p/e544b7a76dac说明:本文内容仅限于本人熟知的内容,HTTP的内容任意一个知识点都可以单独写一篇博客,所以别指望靠一篇博客可以讲清楚,本文的主要作用是为以后的博客作铺垫,所以更详细的HTTP协议内容可参考RFC 2616,本人水平有限,如有不正确的地方欢迎留言指出。1. HTTP请求报文格式HTTP 的请求报文分为三个部分请求行、请求头和请求体,格式如图: HTTP请求报文格式注:部分文章也将HTTP请求报文分为两部分请求头和请求体,请求头的第一行为请求行。1.1 请求行请求行(Request Line)分为三个部分:请求方法、...阅读全文

记一次golang的内存泄露

程序功能 此程序的主要功能是将文件中数据导入到clickhouse数据库中。 【问题描述】 服务器内存每隔一段时间会耗尽 【问题分析】 由于使用的是go语言开发的,所以采用了业界流行的工具pprof。 参考URL:https://cizixs.com/2017/09/11/profiling-golang-program/ 工具的使用与思路: 1)先修改源代码 2)安装工具观察 3)根据工具抓取的现象进行分析 4)修复内存缺陷代码, 再根据分析结果修复内存泄漏的地方 5)发布代码进行再跟踪分析 ================================================== 1)修改代码: 使用这个工具前需要在代码中写几行代码,以便能使用这个工具的来收集数据。 1 //引...阅读全文

博文 2020-02-16 09:30:45 CtripDBA

golang服务端初始化过程

golang 服务端程序初始化流程: golang程序中只能有一个main函数,用来进行全局初始化。各个package中还会有对应模块的init函数。 初始化时,首先会默认调用main所在的package,然后加载import的package,并初始化引入的package对应的init函数,直至所有的package都加载完成,执行main包中的mian函数进行函数初始化,并执行对应方法...阅读全文

博文 2018-11-27 01:34:41 江北晓白

gRPC负载均衡(自定义负载均衡策略)

### 前言 上篇文章介绍了如何实现gRPC负载均衡,但目前官方只提供了`pick_first`和`round_robin`两种负载均衡策略,轮询法`round_robin`不能满足因服务器配置不同而承担不同负载量,这篇文章将介绍如何实现自定义负载均衡策略--`加权随机法`。 `加权随机法`可以根据服务器的处理能力而分配不同的权重,从而实现处理能力高的服务器可承担更多的请求,处理能力低的服务器少承担请求。 ### 自定义负载均衡策略 gRPC提供了`V2PickerBuilder`和`V2Picker`接口让我们实现自己的负载均衡策略。 ```go type V2PickerBuilder interface { Build(info PickerBuildInfo) balancer.V2...阅读全文

博文 2020-05-20 17:12:40 939496716

Mac OS下安装Golang

mac的brew命令那么方便,像我这么懒的人就喜欢这个 brew 如果没有Homebrew的人我们来先安装 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 然后尽情的使用brew吧。 go 接下来就是主题了,安装我们的go brew update && brew upgrade && brew install go 等待安装完毕后试试go env命令是否成功运行呢? 配置环境变量 #GOROOT export GOROOT=/usr/local/Cellar/go/1.9.1/libexec #GOPATH export GOPATH=$HOM...阅读全文

博文 2017-11-02 09:04:44 老健子

Golang 修饰器编程

导读 之前写过一篇《Python修饰器的函数式编程》,这种模式很容易的可以把一些函数装配到另外一些函数上,可以让你的代码更为的简单,也可以让一些“小功能型”的代码复用性更高,让代码中的函数可以像乐高玩具那样自由地拼装。所以,一直以来,我对修饰器decoration这种编程模式情有独钟,这里写一篇Go语言相关的文章。 看过Python修饰器那篇文章的同学,一定知道这是一种函数式编程的玩法——用一个高阶函数来包装一下。多唠叨一句,关于函数式编程,可以参看我之前写过一篇文章《函数式编程》,这篇文章主要是,想通过从过程式编程的思维方式过渡到函数式编程的思维方式,从而带动更多的人玩函数式编程,所以,如果你想了解一下函数式编程,那么可以移步先阅读一下。所以,Go语言的修饰器编程模式,其实也就是函数式编程...阅读全文

博文 2017-12-11 05:03:10 问题终结者

阿里免费教你学习前端开发CSS基础

课程介绍 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。 CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。 课程目标 • 掌握CSS开发技术 适合人群 • 前端开发者 课时列表 • 课时1:CSS基础 • 课时2:CSS选择器(上) • 课时3:CSS选择器(下) • 课时4:CSS属性_背景、颜色、边框 • 课时5:CSS属性_字体文本...阅读全文

使用 syscall.OpenProcess 时报错 The parameter is incorrect.

有没有高人帮忙看看?下面是全部源码(从网上抄的),我是想获取当前内存使用量。 ```go package main /* #include #include void CountPrivate(PSAPI_WORKING_SET_INFORMATION* workSetInfo,int* count) { int workSetPrivate = 0; for (ULONG_PTR i = 0; i < workSetInfo->NumberOfEntries; ++i) { if(!workSetInfo->WorkingSetInfo[i].Shared) // 如果不是共享...阅读全文

安装goland编辑器

昨日在ubuntu系统中,安装了golang的环境,今天在安装一个比较好用的编辑器来写代码,会提高很大的效率。 ##### 首先从官网下载goland - https://www.jetbrains.com/go/download/#section=linux ##### 解压安装 tar -zxvf xxx.tar.gz sudo mv xxx /opt/goland ##### 建立别名,快速启动 ``` - sudo vim ~/.bashrc 添加 alias goland='nohup sh /opt/goland/bin/goland.sh >/dev/null >/dev/null 2>&1 &' 保存 source ~/.bashrc ``` 在命令行直接输入goland就可...阅读全文

博文 2019-08-19 21:56:27 sooseiy

Go36-47-基于HTTP协议的网络服务(net/http)

基于HTTP协议的网络服务 HTTP协议是基于TCP/IP协议栈的,并且是一个面向普通文本的协议。原则上,使用任何一个文本编辑器,都可以写出一个完整的HTTP请求报文。只要搞清楚了请求报文的头部(header、请求头)和主体(body、请求体)应该包含的内容。 如果只是访问基于HTTP协议的网络服务,那么使用net/http包中的程序实体会非常方便。 http.Get函数 调用http.Get函数,只需要传递给它一个URL即可: package main import ( "fmt" "net/http" "os" ) func main() { resp, err := http.Get("http://baidu.com") if err != nil { fmt.Fprintf(os....阅读全文

博文 2019-02-10 22:35:16 骑士救兵

ubuntu No module named 'apt_pkg'

我们在使用 ubuntu 的时候会经常用 apt-get install 安装一些软件或者依赖包。 但是很多时候我们使用 apt-get install 的时候找不到软件,这是因为我们没有配置好安装的源,所以我们就会使用 sudo add-apt-repository 来添加安装源,但是今天在用上面的命令来添加 Golang 的下载源的时候就报了一个错误。 No module named 'apt_pkg' 为什么会报错 首先造成这个错误的原因是我以前做 python 开发的时候修改了系统里面的 : 系统最初 python3 -> 链接文件是指向 /usr/bin/python3.5 但是我需要使用 python3.6 所以我下载了新版本的 python3.6 但是我们在使用那个添加源的命令...阅读全文

博文 2019-04-01 21:34:39 _AlphaBaby_

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

// http.go package main import ( "log" "net/http" ) func main() { mux := http.NewServeMux() mux.Handle("/", &myHandler{}) mux.HandleFunc("/bye", sayBye) log.Println("Starting server ...") log.Fatal((http.ListenAndServe(":8888", mux))) } type myHandler struct{} func (*myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Hel...阅读全文

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

gf框架之分页模块(一) - 基本介绍

文章来源:http://gf.johng.cn/597431 分页管理由gpage包实现,gpage提供了强大的动态分页及静态分页功能,并且为开发者自定义分页样式提供了极高的灵活度。 使用方式: import "gitee.com/johng/gf/g/util/gpage" 方法列表:godoc.org/github.com/johng-cn/gf/g/util/gpage func New(TotalSize, perPage int, CurrentPage interface{}, url string, route ...string) *Page func (page *Page) EnableAjax(actionName string) func (page *Page) F...阅读全文

博文 2018-05-21 12:34:37 John