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

分布式强一致kv缓存(1)

本人从事游戏行业,因此这个缓存系统主要针对网络游戏的数据访问模式设计。 首先分析下网络游戏的数据访问模式: 1)关系性弱:对于绝对大多数的游戏类型来说,能通过一个key来访问数据就够了。 2)读多写多:用户登录时通常需要加载大量数据,查询其它玩家信息也是一个频繁的操作请求。在不考虑定时回写的情况下,玩家的每个更新类请求都会产生一次数据库回写请求,对于一个在线10W,养成类游戏,每秒写请求达到10W+是可能的。 3)冷数据多:游戏的注册用户数和活跃用户数差距非常大。大量数据平时几乎不被访问,只有偶尔做活动用户回流时才被访问。 4)响应及时性:即使是一个查看其它用户信息的查询请求,响应时间超过200ms也是非常不友好的。 基于以上考量,我设计了一套名为flyfish的冷热缓存系统,系统设计目标如...阅读全文

博文 2019-10-15 10:02:47 sniperHW

一个简单的Golang实现的HTTP Proxy

最近因为换了Mac,以前的Linux基本上不再使用了,但是我的SS代理还得用。SS代理大家都了解,一个很NB的Socket代理工具,但是就是因为他是Socket的,想用HTTP代理的时候很不方便。 以前在Linux下的时候,会安装一个Privoxy把Socket代理转换为HTTP代理,开机启动,也比较方便。但是Mac下使用Brew安装的Privoxy就很难用,再加上以前一个有个想法,一个软件搞定Socket和HTTP代理,这样就不用安装一个单独的软件做转换了。 想着就开始做吧,以前基本上没有搞过太多的网络编程,最近也正好在研究Go,正好练练手。 我们这里主要讲使用HTTP/1.1协议中的CONNECT方法建立起来的隧道连接,实现的HTTP Proxy。这种代理的好处就是不用知道客户端请求的数...阅读全文

博文 2017-07-04 02:14:59 飞雪无情

数据抓取使用HTTP代理ip代码示例

HTTP Proxy Demo 代码1、Python#! -- encoding:utf-8 --import requests# 要访问的目标页面targetUrl = "http://ip.hahado.cn/ip"# 代理服务器proxyHost = "ip.hahado.cn"proxyPort = "39010"# 代理隧道验证信息proxyUser = "username"proxyPass = "password"proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % { "host" : proxyHost, "port" : proxyPort, "user" : proxyUser, "pass" : prox...阅读全文

19年第34周:Go 搭建迷你服务器

一,效果 服务器返回了一张图片 二,Golang代码 package main import ( "fmt" "./models" "log" "net/http" ) func main(){ // 1, 迷你服务器 http.HandleFunc("/", handler) // 注册函数 类似于 路由管理 urls.py http.HandleFunc("/sanhuo", handlerLisa) // 注册函数 log.Fatal(http.ListenAndServe("localhost:8000", nil)) // 服务器启动 } // 1, "/" 的回调函数 类似于Django的 视图 views.py func handler(w http.ResponseWrite...阅读全文

博文 2019-08-22 02:32:46 习惯研究所所长

golang简单tcp代理

使用golang网络编程实现一个简单的TCP代理(不支持HTTP) package main import ( "flag" "github.com/rs/zerolog" "net" "os" ) var logger = zerolog.New(os.Stdout).With().Timestamp().Logger() func main() { help := flag.Bool("help", false, "print usage") bind := flag.String("bind", "127.0.0.1:6000", "The address to bind to") backend := flag.String("backend", "", "The backend s...阅读全文

博文 2020-06-06 11:32:42 写个代码容易么

从nginx热更新聊一聊Golang中的服务器热更新(上)

静态语言在服务器编程时都会遇到这样的问题:如何保证已有的连接服务不中断同时又升级版本?最近花了点时间看了下nginx热更新代码流程,想了下结合之前的经验一并总结下热更新1. 热更新是什么?简单翻译成人类可读的实例是如下这个样子:举个例子,你现在在坐卡车,卡车开到了150KM/H然后,有个轮胎,爆了然后,司机说,你就直接换吧,我不停车。你小心点换嗯。就这个意思2.网关中的热更新服务程序热更新这个问题在层7网关中尤其严重,网关中承载着大量的请求,包括HTTP/HTTPS短连接、HTTP/HTTPS长连接、甚至是websocket这种超长连接(websocket通常连接时间会很长,十几分钟到几天不等)。这样的话我们势必不能讲服务程序停止再启动的冷更新,服务进程热更新是非常有必要的。网关作为一个基础...阅读全文

博文 2019-03-18 14:09:39 Lateautunm​

NSQ学习:流控的实现

消息中间件的pull与push 消息中间件的实现无非两种套路,一种让客户端pull,典型的比如kafka便是如此,而另一种则是push,也就是让客户端不需要做任何操作,只需要做好conn便可以源源不断收到服务端的推送,典型的代表就是我们今天介绍的nsq。 pull的优势在于客户端可以自己做流控,比如客户端想什么时候pull就什么时候pull,不会因为服务端的强迫而接受,但劣势也很明显,如果服务端的生产速度很慢,客户端需要不断的轮询会让cpu处于繁忙且无用的状态。 push的优势则在于能够不受限于客户端的速度,可以让服务端更快的、批量的把数据push给客户端,因此大部分push实现的消息中间件都是属于内存型,而nsq比较特殊,它实际上是内存+磁盘的一个消息中间件。 push流的nsq如何做流控...阅读全文

博文 2019-06-11 01:02:39 imxyb

解码Redis最易被忽视的CPU和内存占用高问题

我们在使用Redis时,总会碰到一些redis-server端CPU及内存占用比较高的问题。下面以几个实际案例为例,来讨论一下在使用Redis时容易忽视的几种情形。 一、短连接导致CPU高 某用户反映QPS不高,从监控看CPU确实偏高。既然QPS不高,那么redis-server自身很可能在做某些清理工作或者用户在执行复杂度较高的命令,经排查无没有进行key过期删除操作,没有执行复杂度高的命令。 上机器对redis-server进行perf分析,发现函数listSearchKey占用CPU比较高,分析调用栈发现在释放连接时会频繁调用listSearchKey,且用户反馈说是使用的短连接,所以推断是频繁释放连接导致CPU占用有所升高。 1、对比实验 下面使用redis-benchmark工具分...阅读全文

博文 2019-09-26 21:32:50 aside section ._1OhGeD

2018-08-19 说一说现在的Decentralized Storage的传输

golang是特别不适合拿来做应用层可靠协议开发的语言。所有的可靠协议都依赖于连接状态,在讲究并发的场景下,所有的状态都依赖于事件,所有的事件都依赖于内核文件描述符,问题是,在可靠场景下,我们常常需要将一个端口用作一块网卡,一块网卡可以有65536个描述符并发处理事件,一个端口却只有一个描述符,这一个描述符需要模拟出65536个描述符的事件处理效能,这本来就是令人头大的问题。golang本身的协程机制----固然golang和大多数的协程实现不尽一致----导致每一个事件的处理都应短暂,且事件之间应是无状态的,如果对于可靠协议各阶段的业务与事件理解不到位,极其容易实现出资源有余,而协议效能低下的情况。为什么要有上面一段呢?因为目前的Sia,IPFS,Storj,Swarm都是golang实现...阅读全文

用Go实现Redis之四实现Redis的协议交互

写在前面 本文实现的Godis代码版本为:v0.0.3 在前三篇文章中,实现了客户端/服务端的交互(基于textprotoco)、服务端初始化和get/set命令。如果阅读过或者调试过粗略的代码实现,会发现使用文本协议进行交互,除了容易阅读之外,解析效率是比较低下的。因为我们的示例是"set alpha 123n",工整的单个空格和n分割,可能在分割上效率还好;既要分割,不免低效。 在本文,将替换文本协议为Redis1.2版本后的统一协议。 Redis通信协议 Redis通信协议解析高效、二进制安全,同时也对人类友好(可直接阅读解析)。 协议格式 Redis在发送命令和返回结果中均使用同一套标准协议。Reids协议“肉眼可辨”,在发送命令是使用类型为"multi bulk reply"的协议...阅读全文

博文 2018-06-18 15:34:41 alphali

Golang简介

Go 语言教程 image Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。 Go 语言特色 简洁、快速、安全 并行、有趣、开源 内存管理、数组安全、编译迅速 Go 语言用途 Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供...阅读全文

博文 2019-07-20 22:32:40 7x24run

golang入门案例之SOCKET

//服务端代码package main import ( "fmt" "net" "log" "os" "encoding/binary" ) func main() { //建立socket,监听端口 netListen, err := net.Listen("tcp", "localhost:8090") CheckError(err) defer netListen.Close() Log("Waiting for clients") for { conn, err := netListen.Accept() if err != nil { continue } Log(conn.RemoteAddr().String(), " tcp connect success") handle...阅读全文

博文 2018-01-17 19:30:00 nazhizq

Golang——socket

socket 图片.png 客户端代码 package main import ( "bufio" "fmt" "io" "net" "time" ) func main() { var tcpAddr *net.TCPAddr tcpAddr,_ = net.ResolveTCPAddr("tcp","127.0.0.1:9999") conn,err := net.DialTCP("tcp",nil,tcpAddr) if err!=nil { fmt.Println("Client connect error ! " + err.Error()) return }else { fmt.Println(conn.LocalAddr().String() + "客户端连接成功!") } d...阅读全文

博文 2019-04-05 02:34:39 羊羽share

Go语言实践_实现一(客户端)对一(服务器端)聊天室

一、目的 使用Go语言实现一个服务器端与客户端的聊天室。 软件:Goland,Go1.9 代码仓库地址 二、思路 1,首先启动服务器端,使用listen_socket函数监听IP地址上的客户端连接; 2,启动客户端,并向服务器端发送数据,发送结束后端口阻塞,等待服务器端的消息; 3,服务器端接收到由客户端发送来的消息; 4,服务器端向客户端发送数据,发送结束后; 5,客户端接收到由服务器端发送来的消息,发送结束后端口阻塞,等待客户端的消息; 6,重复步骤2-5; 7,如果服务器端接收到由客户端发送来的“close"消息后,服务器端关闭与客户端的连接,继续等待下一个客户端的连接; 8,客户端关闭,聊天结束。 三、Go代码实现 Sever端 // One-to-one ChatRoom Seve...阅读全文

博文 2018-08-08 00:30:00 OctoptusLian

游戏分布式服务器 gonet

gonet 游戏服务器架构,mmo架构,分布式snowflake64为整形uuid,ai行为树,配置data,游戏大部分都在内存运算,分布式缓存redis。设计之初,建立在actor模式下的;rpc,以及消息驱动,rpc无需注册,支持int,数据,struct(struct必须要注册结构题即可);sql封装简单的orm,具体看demowebsocket模式下,要在net,websocket注视掉如下代码:https://studygolang.com/articles/14842代码除了mysql,protobuf,redis这几个第三方库以外,其他都是自己写的,方便性能和修改,主动权在自己手里服务器之间rpc,客户端服务器之间protobuf + rpc,客户端tcp遵从如下消息包头前四位...阅读全文

博文 2019-03-11 19:34:45 bobohume

fabric msp架构概览

基本概念 MSP,全称Membership Service Provider,即成员关系服务提供者,是 Hyperledger Fabric 1.0版本开始抽象出来的一个模块化组件,用来管理Fabric中的众多参与者(peer、order等)。 MSP将颁发证书和校验证书,以及用户认证背后的所有密码学机制与协议都抽象了出来。对fabric网络中的成员进行身份的管理(身份验证)与认证(签名与验签)。 image organization 和 MSP 组织ORG1拥有的MSP叫ORG1.MSP,而组织ORG2业务复杂,所以维护了3个MSP。 organization与MSP之间的专一性关系,使得在organization之后命名MSP是明智的,在大多数policy配置中,您会发现这一个惯例。 例...阅读全文

博文 2020-03-11 13:33:16 框框下山

【go】用Golang的 http 包建立 Web 服务器

web.go package main import ( "fmt" "log" "net/http" "strings" ) func sayhello(w http.ResponseWriter, r *http.Request) { r.ParseForm() //解析参数, 默认是不会解析的 fmt.Println(r.Form) //这些是服务器端的打印信息 fmt.Println("path", r.URL.Path) fmt.Println("scheme", r.URL.Scheme) fmt.Println(r.Form["url_long"]) for k, v := range r.Form { fmt.Println("key:", k) fmt.Println("v...阅读全文

博文 2017-09-13 05:30:01 richerdyoung

003_go启动httpServer

一、 golang中开发http服务,可以用net/http包提供的功能。net/http包提供了非常全的功能,并且启动的http服务也非常稳定和高效,完全可以用在生产环境中。 package main import ( "fmt" "log" "net/http" ) // w表示response对象,返回给客户端的内容都在对象里处理 // r表示客户端请求对象,包含了请求头,请求参数等等 func index(w http.ResponseWriter, r *http.Request) { // 往w里写入内容,就会在浏览器里输出 fmt.Fprintf(w, "Hello golang http!") } func main() { // 设置路由,如果访问/,则调用index方法 ...阅读全文

博文 2018-06-02 17:30:00 arun-python

mvc

1、MVC这个阶段主要是快速实现产品,没考虑其他的,设计之初划分多个app,app内高类聚,app之间低耦合,DB表设计好了之后,实现view层功能需求,利用Django来快速实现功能,后端有许多预留设计,避免产品逻辑的变更带来整个表结构的变动,架构如下图; MVC架构nginx是负载均衡,通过权重法,把请求发送到多个Django服务(其实中间还有一个uwsgi),如果是静态请求,nginx直接返回给客户端,如果是其他请求,通过uwsgi传给Django,Django拿到请求,处理响应请求。耗时大的需要异步的,我们用celery处理,使用mysql作为数据库,redis作为缓存,加快请求的响应,减轻mysql负担,同时还有实时消息通知的需要使用了Nginx Push Module。问题以及处...阅读全文

博文 2019-12-17 18:32:49 yustyal

2018-10-23 FreeWheel业务系统微服务化过程经验分享

载: https://mp.weixin.qq.com/s/JgNgmYasXaTqrx5OeeD5KQ 2016 年下半年开始,FreeWheel 开始将其业务系统从 Rails 单体应用逐步迁移到微服务,同时技术栈从 Rails 改为 Golang,两年之后,整个迁移接近尾声,FreeWheel 业务系统技术团队对外分享了它们在微服务化过程中的经验。 原有架构的问题 FreeWheel 是一家为客户提供数字视频广告管理技术和服务的公司。其业务端产品需要对接客户,提供视频广告投放优化界面,类似于 Web ERP,该业务系统采用 Rails 技术栈开发,其架构是一个典型的三层架构。 image 这个系统经过近十年的研发和迭代,代码量达到数十万行,业务的特殊性和代码的复杂度让团队的维护和新功能...阅读全文

博文 2018-10-23 14:34:45 四火流年

SSMP 服务器加载测试工具 ssmperf

ssmperf 是 SSMP 协议的服务器基础加载测试工具。 使用

./ssmperf <address> [flags]
  -cacert=""        path to CA cert
  -cert=""          path to client cert
  -conn=100         number of client connections
  -count=10000      number of messages sent per connection
  -cpuprofile=""    write cpu profile to file
  -insecure=false   d...阅读全文

????【Go 实践】实现一个简单的多人聊天室

简介 Github 地址 博客原文 本文使用 go 实现了一个多人聊天室,参考文章为 Writing a Chat Server in Go,点击查看中文翻译版。 本文的特点在于:将原始项目分为自底向上的若干个阶段,新手可以一步步地实现系统的不同模块,逐渐掌握相应知识点。源码里有详细的注释,引导你在不看源代码的情况下自己实现相应代码。 本文假设你: 了解 go 语言的基本语法 了解 git 的使用 完成本项目,你将学会这些内容: Reader 方法的基本使用 使用 net 包实现一个 tcp 服务器:监听端口、建立连接、提供服务 sync 加锁 goroutine 与 channel gob 的基本使用 运行 运行环境:go 1.13.1 打开 GO111MODULE,运行 go mod d...阅读全文

博文 2019-11-18 23:04:42 Segami

阿里云虚拟主机使用教程

课程介绍 阿里云虚拟主机市场占用率第一,20年专业品质保证;产品特点:预装网站运行环境,赠送正版数据库,可通过图形化控制面板管理,主要用于搭建网站。 独享系列虚机特点:客户独享整台服务器资源,无资源争抢更稳定,不限流量更快速、独立IP更易推广,适合企业建站客户; 共享系列虚机特点:多客户共享服务器硬件资源,价格优惠,简单易用,适合于开发者、个人站长建站; 产品详情:https://wanwang.aliyun.com/hosting/ 课时列表 • 课时1:购买虚拟主机和初始化密码信息 • 课时2:FTP 上传与解压缩文件 • 课时3:绑定并解析域名 • 课时4:切换语言环境 • 课时5:虚拟主机临时域名的使用 开始学习http:...阅读全文

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

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

博文 2019-06-07 23:42:48 EDDYCJY

紧急求问 udp问题

请教一个问题:我多个硬件设备通过udp跟服务器连接,他会隔1小时给服务器去上报数据 每个设备是有唯一的标识码IMEI 现在想通过服务器把数据发给指定设备 该怎么操作 之前的做法是 当设备连接服务器时就把UDPAddr的对象存到一个map里 key值为imei号 但是设备连着 第二次发报文后 ip是不会变的 端口变了 我想用WriteToUDP 就找不到接受对象...阅读全文

Go36-46-访问网络服务(socket)

访问网络服务 这篇开始讲网络编程。不过网络编程的内容过于庞大,这里主要讲socket。而socket可以讲的东西也太多了,因此,这里只围绕Go语言介绍一些它的基础知识。 IPC方法 所谓socket,是一种IPC(Inter-Process Communication)方法,可以被翻译为进程间通信。顾名思义,IPC这个概念(或者说规范)主要定义的是多个进程之间,相互通信的方法。这些方法主要包括: 系统信号(signal),os包和os/signal包有针对系统信号的API 管道(pipe),os.Pipe函数可以创建命名管道,os/exec包支持另一类管道:匿名管道 套接字(socket),net包中提供支持 文件锁(file lock) 消息队列(message queue) 信号灯(se...阅读全文

博文 2019-02-09 08:35:10 骑士救兵

【分布式架构】企业级分布式应用服务EDAS使用攻略免费分享

课程介绍 本课程主要讲解企业级分布式应用服务EDAS相关技术和使用方法。 企业级分布式应用服务(EDAS,Enterprise Distributed Application Service)是企业级互联网架构解决方案的核心产品,充分利用阿里云现有资源管理和服务体系,引入中间件成熟的整套分布式计算框架(包括分布式服务化框架、服务治理、运维管控、链路追踪和稳定性组件等),以应用为中心,帮助企业级客户轻松构建并托管分布式应用服务体系。 课程目标 掌握企业级分布式应用服务EDAS的使用 适合人群 云计算开发者 课时列表 • 第1 章 : EDAS介绍 • 课时1:EDAS介绍 • 第2 章 : EDAS...阅读全文

好程序员大数据培训技术分享:Hadoop集群同步

好程序员分享:Hadoop集群同步分享——是技术突飞猛进的很好体验!在好程序员学习大数据技术,开始学会了分享,班里五十个人,每个人就能得到49份不同技术探讨。每次到分享的时刻,总会收获不同的想法。一、同步方式 选择一个机器,作为时间服务器(这里选择hadoop01),所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间。二、所需工具 时间同步服务器有两个:ntpd和ntpdatp。虽然使用二者都能达到时间同步的目的,但是使用之前得弄清楚一个问题,ntpd与ntpdate在更新时间时有什么区别。ntpd不仅仅是时间同步服务器,它还可通过客户端与标准时间服务器进行时间同步,而且是平滑同步,并非ntpdate立即同步,在生产环境中慎用ntpdate,也正如此两者不可同时运行。三、...阅读全文

使用 Go 添加 Nginx 代理

简介 反向代理 负载均衡 轮询 加权轮询 最少连接 iphash 通用 hash 总结 当前部分的代码 简介 Nginx 是一个高性能的 HTTP 服务器和反向代理服务器. 最常用的两个功能是反向代理和负载均衡. 反向代理 反向代理是正向代理的反面. 普通的代理服务器是需要用户主动去设置的, 用户在自己的电脑上设置并连接代理服务器, 从而可以隐藏自己的 IP, 使得应用服务器不知道客户端的 IP 地址. 而反向代理是作为应用服务器的代理, 安装在服务器上. 客户端实际上访问的反向代理服务器, 反向代理服务器再去访问实际的应用服务器, 然后将获取到的响应传送给客户端. 使用 Nginx 配置反向代理非常简单, 基础配置如下: upstream web { server 127.0.0.1:80...阅读全文

博文 2019-11-05 11:04:23 帅气猫咪

二)golang工厂模式

在通用的工厂模式中,一般涉及到 简单工厂模式(顾名思义:工厂 > 创建)、工厂方法(顾名思义:将方法工厂化)、抽象工厂模式(顾名思义:将工厂抽象化 工厂 > 工厂 > 创建) 特点:将接口与具体实现分离,根据需要实例化对象使用场景:日志记录,文件服务平台,数据库访问 1.定义产品接口 type P interface {} 2.定义实现结构 type P1 struct {} //implement P type P2 struct {} //implement P ...//简单3.工厂方法(简单工厂完) func F (name string) P {} //抽象3.工厂接口,用于生产工厂 type Factory interface { CreateP(name string) Cre...阅读全文

# golang JWT的简单使用

golang JWT的简单使用 JWT是json web token缩写。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证。 JWT和session有所不同,session需要在服务器端生成,服务器保存session,只返回给客户端sessionid,客户端下次请求时带上sessionid即可。因为session是储存在服务器中,有多台服务器时会出现一些麻烦,需要同步多台主机的信息,不然会出现在请求A服务器时能获取信息,但是请求B服务器身份信息无法通过。JWT能很好的解决这个问题,服务器端不用保存jwt,只需要保存加密用的secret,在用户登录时将jwt加密生成并发送给客户端,由客户端存储,以后客户端的请求带上,由...阅读全文

博文 2019-02-05 17:34:41 w85278161

Go语言的变量、函数、Socks5代理服务器

Go语言中变量的声明和JavaScript很像,使用var关键字,变量的声明、定义有好几种形式 1. 变量和常量 // 声明并初始化一个变量 var m int = 10 // 声明初始化多个变量 var i, j, k = 1, 2, 3 // 多个变量的声明(注意小括号的使用) var( no int name string) // 声明时不指明类型,通过初始化值来推导 var b = true // bool型 // := 隐含声明变量并赋值 str := "mimvp.com" // 等价于var str string = "mimvp.com" Go 语言中 = 和 := 有什么区别? = 是赋值, := 是声明变量并赋值 // = 使用必须使用先var声明例如: var a a ...阅读全文

博文 2017-09-28 12:34:49 mimvp

搭建网站,和把大象装冰箱一样简单?

摘要: 一个流行了很多年的梗,至今仍然热度不减,当年本山大叔在春晚上说出这个段子时,不知是不是预料到了很多人这辈子都指着这个笑话活着了。 一个流行了很多年的梗,至今仍然热度不减,当年本山大叔在春晚上说出这个段子时,不知是不是预料到了很多人这辈子都指着这个笑话活着了。 Q:“要把大象装冰箱,总共分几步?” A:“分三步。1. 把冰箱门打开;2.把大象放进冰箱;3.把冰箱门关上”。 一个听上去很困难的事情,在脑筋急转弯的世界里,不用考虑它的实现成本和实现可行性,其实只需分三步即可完成。其实生活中的很多事,换个角度,也是如此。 搭建网站,这个词,很多人都听说过,但是当你还未了解建站的具体步骤时,你会觉得这件事好难,没有技术底子很难实现。其实,当你勇敢的打开冰箱门以后,你会发现...阅读全文

解决go get golang.org/x 包失败

## GOPROXY 环境变量 知道从 Go 1.11 版本开始,官方支持了 go module 包依赖管理工具。 其实还新增了 GOPROXY 环境变量。如果设置了该变量,下载源代码时将会通过这个环境变量设置的代理地址,而不再是以前的直接从代码库下载。 更可喜的是,goproxy.io 这个开源项目帮我们实现好了我们想要的。该项目允许开发者一键构建自己的 GOPROXY 代理服务。同时,也提供了公用的代理服务 https://goproxy.io,我们只需设置该环境变量即可正常下载被墙的源码包了: ``` 命令 export GOPROXY=https://goproxy.io ``` 不过,需要依赖于 go module 功能。可通过 export GO111MODULE=on 开启 M...阅读全文

代码不debug的时候接口正常返回数据,一旦debug服务器就崩溃了.各位大佬进来看看

`//解析查询结果; func DealResultDb(this ITableVisitor, rslt []map[string]interface{}) (interface{}, int) { result, n := ParseDbResult(this, rslt) if n < 0 { return nil, 0 } list, ok := result.([]InvestSupervisorReq) if !ok { return nil, 0 } stack := make([]InvestSupervisorReq, len(list)) flag := make([]int, len(list)) index:=0 Find(stack, list, 1, 0, fla...阅读全文

博文 2019-12-24 15:35:27 blackdinosuar

你应该知道的HTTP基础知识

姓名:宫松涛学号:19021210927嵌牛导读:为大家详细讲解HTTP基础知识,让大家快速掌握。嵌牛鼻子:HTTP基础知识嵌牛提问:有哪些HTTP基础知识?转载源:你应该知道的HTTP基础知识嵌牛正文:本文主要内容:HTTP请求报文格式HTTP响应报文格式Header请求体的3种形式推荐调试工具HTTP的组成图示1. HTTP请求报文格式HTTP 的请求报文分为三个部分请求行、请求头和请求体,格式如图: HTTP请求报文格式注:部分文章也将HTTP请求报文分为两部分请求头和请求体,请求头的第一行为请求行。1.1 请求行请求行(Request Line)分为三个部分:请求方法、请求地址和协议及版本,以CRLF(\r\n)结束。HTTP/1.1 定义的请求方法有8种:GET、POST、PUT、...阅读全文

博文 2019-12-08 01:32:55 走不完的叉路口

003_go启动httpServer

一、 golang中开发http服务,可以用net/http包提供的功能。net/http包提供了非常全的功能,并且启动的http服务也非常稳定和高效,完全可以用在生产环境中。 package main import ( "fmt" "log" "net/http" ) // w表示response对象,返回给客户端的内容都在对象里处理 // r表示客户端请求对象,包含了请求头,请求参数等等 func index(w http.ResponseWriter, r *http.Request) { // 往w里写入内容,就会在浏览器里输出 fmt.Fprintf(w, "Hello golang http!") } func main() { // 设置路由,如果访问/,则调用index方法 ...阅读全文

博文 2018-06-02 16:30:00 arun-python

Go语言实用技巧

基础代码说明 time类:系统的时间类 time.second/minute/hour time.Duration能够对时间进行转换,默认开始是1ns,换算单位是1ms = 1000µs = 1000,000ns,往上到时间的那一层也能正常转换 time类能够自动转换时间,通用的是nuix的时间格式,不需要手动处理时间格式 strings类提供的split方法能够拆分字符串为字符串数组 golang的post的请求和接收,并对数据进行处理 post的发送 func HttpServerSender(data data.SenderData) { jsonss,err :=json.Marshal(data) if err != nil { fmt.Println(err.Error() ) ...阅读全文

博文 2019-01-02 12:34:45 木鱼cavalry

好程序员大数据技术分享:Zookeeper集群管理与选举

大数据技术的学习,逐渐成为很多程序员的必修课,因为趋势也是因为自己的职业生涯。在各个技术社区分享交流成为很多人学习的方式,今天很荣幸找到好程序员大数据培训给我们分享一些大数据基础知识,大家可以一起学习!1.集群机器监控 这通常用于那种对集群中机器状态,机器在线率有较高要求的场景,能够快速对集群中机器变化作出响应。这样的场景中,往往有一个监控系统,实时检测集群机器是否存活。过去的做法通常是:监控系统通过某种手段(比如ping)定时检测每个机器,或者每个机器自己定时向监控系统汇报“我还活着”。 这种做法可行,但是存在两个比较明显的问题: 集群中机器有变动的时候,牵连修改的东西比较多。 有一定的延时。 利用ZooKeeper有两个特性,就可以实时另一种集群机器存活性监控系统: 客户端在节点 x 上...阅读全文

基于consul构建golang系统分布式服务发现机制

文地址-石匠的Blog: http://www.bugclosed.com/post/5 在分布式架构中,服务治理是一个重要的问题。在没有服务治理的分布式集群中,各个服务之间通过手工或者配置的方式进行服务关系管理,遇到服务关系变化或者增加服务的时候,人肉配置极其麻烦且容易出错。 之前在一个C/C++项目中,采用ZooKeeper进行服务治理,可以很好的维护服务之间的关系,但是使用起来较为麻烦。现在越来越多新的项目采用consul进行服务治理,各方面的评价都优于ZooKeeper,经过几天的研究,这里做一个总结。 zookeeper和consul比较 开发语言方面,zookeeper采用java开发,安装的时候需要部署java环境;consul采用golang开发,所有依赖都编译到了可执行程序...阅读全文

博文 2018-07-26 14:30:00 williamjie

使用 Go 语言创建 WebSocket 服务

感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18504.html 今天介绍如何用 Go 语言创建 WebSocket 服务,文章的前两部分简要介绍了 WebSocket 协议以及用 Go 标准库如何创建 WebSocket 服务。第三部分实践环节我们使用了 gorilla/websocket 库帮助我们快速构建 WebSocket 服务,它帮封装了使用 Go 标准库实现 WebSocket 服务相关的基础逻辑,让我们能从繁琐的底层代码中解脱出来,根据业务需求快速构建 WebSocket 服务。 WebSocket介绍 WebSocket 通信协议通过单个 TCP 连接提供全双工通信通道。与 HTTP 相比, WebSocket 不需要你为了获...阅读全文

博文 2020-04-02 16:33:28 朱柿子

数人云|90%产品服务化,细说豆瓣的5年变革之路

背景 今天主要分享下微服务中的Auto Scale,豆瓣2005年3月上线,是一家历史比较悠久的互联网公司,主要覆盖文化综合领域的Web、APP等各种产品,现在有豆瓣读书、豆瓣电影、豆瓣音乐等等。 Markdown 〓 豆瓣简介 在技术方面,豆瓣主要的开发语言是Python和Golang,豆瓣拥有自研私有云平台Douban App Engine(以下简称“DAE”),上面托管豆瓣网所有应用使用配置来描述应用:应用依赖MQ、Daemon,以及Cron,这样开发者使用一个配置文件就可以描述对资源的所有需求,平台拿到描述文件后可以在上面做需要的资源管配。 Markdown 〓 Douban App Engine 在DAE上会统一调度所有资源,产品开发人员不必关心具体的机器设备,比如无需关心某个业务...阅读全文

博文 2017-09-30 04:04:59 数人云

elasticsearch学习笔记-常用方法使用

go中elasticsearch sdk 常用基础操作1、创建客户端func getCli() *es.Client{cli :=es.SetURL("http://127.0.0.1:9200")client, err :=es.NewClient(es.SetSniff(enabled), cli)if err !=nil {panic(err)}}2、定义数据结构type ParamModel struct {Id int64 `json:"id"`Content string `son:"content"`.....}3、数据解析器func ParserFlOrder(res *es.SearchResult) (out interface{}) {temp :=ParamModel...阅读全文

博文 2019-11-08 10:27:26 545305939

Go基础学习记录之阻止Session劫持(Preventing session hijacking)

阻止Session劫持(Preventing session hijacking) Session劫持是一种常见且严重的安全威胁。在与服务器通信时,客户端使用Session ID进行验证和其他目的。不幸的是,恶意第三方有时可以跟踪这些通信并找出客户端Session ID。本次分享,将向您展示如何为教育目的劫持Session。 Session劫持过程 以下代码是count变量的计数器: // WelcomeLogin 欢迎登录页 func WelcomeLogin(w http.ResponseWriter, r *http.Request) { session, err := appSession.SessionStart(w, r) if err != nil { fmt.Fprintf(...阅读全文

博文 2018-11-06 14:34:44 DurbanZhang

理解Kubernetes网络:ingress篇

在本系列的第一篇文章中,我讲了Pod跨Kubernetes集群中的节点相互连接的网络。第二篇重点讲了服务网络如何为Pod提供负载平衡,以便群集内的客户端可以与它们可靠地通信。对于这第三篇也是最后一篇文章,我想以这些概念为基础来展示集群外的客户端如何使用同一服务网络连接到Pod。由于各种原因,这很可能是三篇涉及最多的,并且掌握前两篇关于pod和service的内容是理解本篇的的前提。 路由并不是负载均衡 在上一篇文章中,我们创建了一个具有两个Pod的部署,并为该服务分配了一个IP,称为“集群IP”,针对Pod的请求已发送到该IP。我将在此处继续根据该示例进行构建。回想一下,该服务的群集IP 10.3.241.152位于与Pod网络以及节点本身所在的网络不同的IP地址范围内。我称这个地址空间为“...阅读全文

您需要了解的有关Kubernetes服务质量(QoS)

服务质量(QoS)类是Kubernetes的概念,它确定Pod的调度和驱逐优先级。 Kubernetes调度程序使用QoS类来做出有关将Pod调度到节点上的决策。 Kubelet使用它来管理驱逐pod的顺序,以及使用高级CPU管理策略允许更复杂的pod调度决策。 QoS类由Kubernetes本身分配给Pod。但是,DevOps可以通过处理Pod内各个容器的资源请求和限制来控制分配给容器的QoS类。 在kubernetes 中存在三种QoS类: Guaranteed Burstable BestEffort 让我们看一下不同的QoS类,看看它们如何与Kubernetes Scheduler和Kubelet一起工作。 Guaranteed 如何分配Pod的QoS Guaranteed 等级? ...阅读全文