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

golang实现的反向代理

翻阅golang包手册的时候看到net/http/httputil有一个type ReverseProxy,这个不是反向代理吗!golang自带反向代理功能?好奇就试了一下,确实非常简单,没有几行代码就实现了一个简易的反向代理服务。 关于反向代理百度百科上说的非常详细了,这里摘录一下定义: 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。 golang实现代码 package main import ( "log" "net/http" "net/http/httputil" "net/url" ) ...阅读全文

博文 2015-10-16 21:52:06 陈杰斌

GO语言HTTP代理服务器

package main import ( "fmt" "io" "log" "net/http" "net/http/httputil" "net/url" ) func httpUserInfo(w http.ResponseWriter, r *http.Request) { ret := "your addr is:" + r.RemoteAddr + "\r\n" ret += "request headers:" + fmt.Sprint(r.Header) io.WriteString(w, ret) } func main() { targetURL, err := url.Parse("http://127.0.0.1:80") log.Println("program s...阅读全文

博文 2015-06-17 23:07:39 scybs

初读谷歌自家的语言之作------Go语言和Dart语言

Go语言是一个新语言,截至目前为止,第一版正式版还没有发布。Go语言的设计者是Robert Griesemer, Rob Pike和Ken Thompson,当年设计C和Unix,后来的Plan9团队中的人 。Go语言的设计理念很明确,就是将动态类型语言的编程容易度和静态类型语言的安全效率结合起来。深入了解Go语言的发展历史以及完整的目标,请参考Go语言 FAQ。 Go语言有很浓厚的C的遗风,尽量屏蔽C++和Java的影响,比如没有独立的OO体系(并不是说不能OO),一切以struct为中心,没有exceptions(Oh yes!),仍然有指针,等等。但是,Go语言又吸取了很多新语言的精华,并带有自己独特的设计。比如 1. 保留但大幅度简化指针 Go语言保留着C中值和指针的区别,但是对于指...阅读全文

博文 2014-10-25 22:00:00 a4614181

游戏分布式服务器gonet

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

开源项目 2019-01-16 12:53:57 ylb

Go 语言使用 TCP keepalive

自:http://studygolang.com/articles/951 Go 语言使用 TCP keepalive 如果你写过某些 TCP socket 代码,你可能会疑问:如果网线被拨掉或者远程主机崩溃了我的TCP连接会怎样? 简短的答案是:一点影响都没有。这种情况下连接的结束远程主机是不会发送FIN数据包的,并且本地系统不能检测连接是否已中断。所以需要作为程序员的你来解决这种情况。 --zxp 翻译于 1 个月 前 0人顶 顶 翻译的不错哦! GO语言为你提供了解决这个问题的几种方法。首选的方法可能是 net.Conn 接口中的SetReadDeadline方法。假设你的连接在以一种特定的间隔来接收数据,你可以简单地把读取超时当作一个io.EOF错误并Close这个连接。很多现有的T...阅读全文

博文 2015-01-29 17:00:01 leonzhouwei

golang实现udp接入服务器

前端通过udp与接入服务器连接,接入服务器与后端tcp服务器维持tcp连接。目录结构及后端tcp服务器代码同上一篇博客。 main.go package main import ( "lotuslib" ) const ( ip = "0.0.0.0" port = 1987 ) func main() { udplotus.UdpLotusMain(ip, port) } udplotus.go package udplotus import ( "encoding/json" "log" "net" "strconv" "time" ) const ( proxy_timeout = 5 proxy_server = "127.0.0.1:1988" msg_length = 1024 ...阅读全文

博文 2014-10-04 19:26:13 ciaos

golang-otto JS解释器

otto是一个Go语言实现的JavaScript 解释器 otto是一个Go语言实现的JavaScript的语法分析器和解释器 1 2 3 import( "github.com/robertkrimen/otto" ) 在虚拟机中运行一些代码 1 2 3 4 5 vm := otto.New() vm.Run(` abc = 2+ 2; console.log("The value of abc is " + abc);// 4 `) 从虚拟机中获取一些值 1 2 3 value, err := vm.Get("abc") value, _ := value.ToInteger() } 设置一个数字变量 1 2 3 4 5 vm.Set("def", 11) vm.Run(` consol...阅读全文

博文 2015-11-17 02:00:03 shuanger_

Go实战--使用golang开发Windows Gui桌面程序(lxn/walk)

生命不止,继续 go go go!!! golang官方并没有提供Windows gui库,但是今天还是要跟大家分享一下使用golang开发Windows桌面程序,当然又是面向github编程了。 知乎上有一个问答: golang为什么没有官方的gui包? 这里,主要使用第三方库lxn/walk,进行Windows GUI编程。 lxn/walk github地址: https://github.com/lxn/walk star: 2018 描述: A Windows GUI toolkit for the Go Programming Language 获取: go get github.com/lxn/walk 例子: main.go package main import ( "gi...阅读全文

博文 2017-09-19 11:31:02 wangshubo1989

成都创享兄弟科技有限公司招聘php/go工程师

**公司介绍** 成都创享兄弟科技有限公司成立于2014年。由多名经验丰富的互联网从业者共同成立,公司在互联网营销、产品技术研发有着丰富的经验.曾服务多家知名企业,公司自主研发的一款基于云计算的在线响应式云建站系统,不懂技术也能通过竹子的可视化在线网站编辑器创建官网 项目网站 http://www.zhuzi.me **职位说明** - 热爱技术,有强烈的新技术求知欲; - 良好的团队沟通和协作能力; - 熟练使用go进行后端服务开发; - 熟悉javascript,php者优先。 也接受想要学习go的php开发者投简历。 有意向请加我微信 ![](http://77fkk5.com1.z0.glb.clouddn.com/upload/image...阅读全文

[郑州] 招聘golang、数据仓库工程师、功能/性能测试,移动端leader,类比百度 T5 及以上。

**郑州珑凌科技,郑州最优秀的纯互联网公司之一,产品驱动、技术驱动.** ***招聘数据开发工程师、功能\性能测试,移动端 Leader , PHP 、 nodejs 、 go 等,类比百度 T5 及以上*** 技术帝看这里: mac 电脑、机械键盘、各种资料用书,想要打个报告! 健身帝看这里:台球、乒乓、动感单车、淋浴间、洗衣机 养生派看这里:中央空调、空气净化器、净水器、微波炉、电冰箱 懒觉侠看这里:上班不打卡、弹性工作时间、带薪年假、 x-box 、 htc vr 宿舍条件这里:免费、可做饭、有阳台、上下班方便 其他福利这里:五险一金、节日福利、生日福利、结婚生子礼金、公司营收分红、年终奖、免费法律咨询、伯乐奖 QQ : 13482848...阅读全文

linux下go的动态链接库的使用

在使用lua进行服务器端游戏逻辑开发时,发现了LUA的各种不方便的地方,不能编译检查,不能断点调试,笔误的函数和变量不提示出错等等,所以有了全部使用go来做服务器端开发的想法。 如果不需要热更新,那使用go开发服务器逻辑是很轻松的,而游戏服务器特别是页游,一般都需要支持热更新,所以我决定使用go的动态链接库方式来实现,也就是底层框架是go,上层逻辑是go的动态链接库。go原生不支持动态链接库,在查阅了很多文章之后,决定使用gccgo来实现。 经过了大约一周的时间,终于把框架搭建起来了,期间遇到了一些比较坑的问题,记录在此,以便以后不会再犯,也可以帮助其他有同样需求的同学快速搭建这样的框架。 这个例子需要了解go目录构建和环境变量的知识,如果不了解,可以先看看网上的文章,很简单的。 整个框架搭...阅读全文

博文 2014-10-04 19:25:56 xtxy

golang工程师面试第三天

**1**.简述golang中make和new的区别 make用于内建类型(只能用于创建map、slice 和channel)的内存分配。并且返回一个有初始值(非零)的T类型,而不是*T。 new用于各种类型的内存分配。new(T)分配了零值填充的T类型的内存空间,并且返回其地址,即一个*T类型的值。用Go的术语说,它返回了一个指针,指向新分配的类型T的零值。有一点非常重要:**new返回指针**。 **2**.简要描述go中的main和init函数的区别 首先,这两个函数应用位置不同,init函数可以应用于所有的package,main只能应用于 package main,需要注意的是虽然一个package中可以写任意多个init,但是无论是从可读性还是可维护性来说,都是不推荐的; 其次,...阅读全文

博文 2018-01-15 21:36:48 yinshidaoshi

Go 1.6发布 免翻墙下载

Go 1.6 正式版发布 该版本在语言本身层面并没有任何变化,主要改进包括: 1、默认使用 cgo 外部 C 编译器 2、支持 HTTP/2 协议 3、增加对 64 位 MIPS 的体验支持 (Linux) 4、增加对 32 位 x86 上的 Android 的体验支持 5、在 FreeBSD 上 go 1.6 默认使用 clang 而不是 gcc 作为外部 C 编译器 6、在 64 位 PowerPC 上 支持 cgo 7、NaCI 上 GO 1.5 要求 SDK 版本是 pepper-41,而 Go 1.6 可以使用最新的 SDK 版本 8、在 32 位 x86 系统中使用 —dynlink 或者 —shared 编译模式,寄存器 C...阅读全文

Go中的指针与函数接收器

Go中使用*号表示指针,但是没有指针算数,不能对其进行加减。同时内存管理都由Go来负责,不需要拖动释放内存。 Go中的函数接收者,可以为值类型,也可以是引用类型。 看代码: package main import ( "fmt" ) type Rect struct { X, Y,Area,Length float64 } func (r *Rect) CalArea() { r.Area = r.X*r.Y } func (r Rect) CalLength() { r.Length = 2*(r.X+r.Y) } func main() { r1 := Rect{3, 4, 0, 0} r1.CalArea() r1.CalLength() fmt.Println(r1.Area) fm...阅读全文

博文 2015-03-24 14:00:00 baiyuxiong

[郑州] 招聘Nodejs、golong 和 web 前端架构师,移动端等大牛,类比百度 T4 T5及以上。

**郑州珑凌科技,郑州最优秀的纯互联网公司之一,产品驱动、技术驱动。 ** 招聘: PHP 、 Nodejs 、 golong 和 web 端架构师,移动端大牛, Linux C \C++,测试、运维,数据分析、产品、网络工程师等,类比百度 T4 级以上最佳 应届生高潜力的也要!基础好,智商高。 技术帝看这里: mac 电脑、机械键盘、各种资料用书,想要打个报告! 健身帝看这里:台球、乒乓、动感单车、淋浴间、洗衣机 养生派看这里:中央空调、空气净化器、净水器、微波炉、电冰箱 懒觉侠看这里:上班不打卡、弹性工作时间、带薪年假、 x-box 、 htc vr 宿舍条件这里:免费、可做饭、有阳台、上下班方便 其他福利这里:五险一金、节日福利、生日福利...阅读全文

go的session问题

我发现现在go的在web开发中的session功能还不是"session"啊..比如网上找到的一些资料.还有beego..都表现得像cookies一样.. session本意就是"会话"..应该是一个会话一个session才对..但现在所有session的表现都是同一浏览器的所有窗口共用一个session..不主动删除session内容的话就一直能读到session的内容(即使你已经关闭且重新打工浏览器)... 求指教..求讨...阅读全文

go语言编辑器:liteide

LiteIDE is a simple, open source, cross-platform Go IDE. LiteIDE是一款开源、跨平台的轻量级Go语言集成开发环境(IDE)。 项目地址:https://github.com/visualfc/liteide 下载地址:http://sourceforge.net/projects/liteide/ 百度云链接:http://pan.baidu.com/s/1mgCgx64 密码:vsip 安装方法:https://github.com/visualfc/liteide/blob/master/liteidex/deploy/welcome/en/install.md Windows 7 下安装使用: 解压百度云下载的文件: 运行b...阅读全文

博文 2015-10-09 11:00:11 osfipin

[郑州] 招聘 移动端 leader(ios/Android),大数据 leader,功能/性能测试, Go/PHP/nodejs、window\LinuxC/C++ ,类比百度 T5 /T6 及以上

郑州珑凌科技,郑州最优秀的纯互联网公司之一,产品驱动、技术驱动. 招聘数据开发工程师、功能\性能测试,移动端 lLeader , PHP 、 nodejs 、 go 等,类比百度 T5 及以上 技术帝看这里: mac 电脑、机械键盘、各种资料用书,想要打个报告! 健身帝看这里:台球、乒乓、动感单车、淋浴间、洗衣机 养生派看这里:中央空调、空气净化器、净水器、微波炉、电冰箱 懒觉侠看这里:上班不打卡、弹性工作时间、带薪年假、 x-box 、 htc vr 宿舍条件这里:免费、可做饭、有阳台、上下班方便 其他福利这里:五险一金、节日福利、生日福利、结婚生子礼金、公司营收分红、年终奖、免费法律咨询、伯乐奖 邮箱: job#lonlife.cn ( p...阅读全文

Golang调试器delve

完全Go语言实现的 Go Debugger。 这玩意很NB。 ## Features - Attach to an already running process - Launch a process and begin debug session - Set breakpoints, single step, step over functions, print variable contents, print thread and goroutine information 不过目前有以下限制: 1. golang版本需要1.4Beta以上; 2. 仅仅适用于Linux系统...阅读全文

开源项目 2014-11-16 05:00:32 derekparker

vscode编辑器golang调试

安装vscode 安装vscode-go 插件 进入vscode界面,打开命令面板Ctrl + Shift + P,输入install, 插件特性包括: Completion Lists (using gocode) Signature Help (using godoc) Snippets Quick Info (using godef) Goto Definition (using godef) Find References (using guru) File outline (using go-outline) Workspace symbol search (using go-symbols) Rename (using gorename) Build-on-save (using...阅读全文

博文 2016-10-28 17:00:02 chenjh213

golang实现tcp接入服务器

接入服务器和后端业务服务其维持tcp连接,多个前端请求通过接入服务器访问后端业务服务器,接入服务器可以方便增加路由功能,维护多个业务服务器,根据消息ID路由到具体的业务服务器。 项目目录如下 simplelotus src lotus main.go lotuslib tcplotus.go test tcpclient.go tcpserver.go install install源码如下: #!/usr/bin/env bash if [ ! -f install ]; then echo 'install must be run within its container folder' 1>&2 exit 1 fi CURDIR=`pwd` OLDGOPATH="$GOPATH" ex...阅读全文

博文 2014-10-04 19:26:13 ciaos

[郑州-11月招聘] 功能/性能测试大牛,大数据 leader, Android 大牛, Go/PHP/nodejs、window\LinuxC/C++ ,类比百度 T5 /T6 及以上

##### 郑州珑凌科技,郑州最优秀的纯互联网公司之一,产品驱动、技术驱动。 ###### 招聘功能\性能测试大牛,移动端 Leader ,大数据 leader 、 PHP 、 nodejs 、 go 等,类比百度 T5 及以上 最佳 技术帝看这里: mac 电脑、机械键盘、各种资料用书,想要打个报告! 健身帝看这里:台球、乒乓、动感单车、淋浴间、洗衣机 养生派看这里:中央空调、空气净化器、净水器、微波炉、电冰箱 懒觉侠看这里:上班不打卡、弹性工作时间、带薪年假、 x-box 、 htc vr 宿舍条件这里:免费、可做饭、有阳台、上下班方便 其他福利这里:五险一金、节日福利、生日福利、结婚生子礼金、公司营收分红、年终奖、免费法律咨询、伯乐奖 邮...阅读全文

为什么选择golang写手机游戏服务器

选择golang做游戏服务器开发 经过大半年的手机游戏运营、维护、后续开发,对下一个网络游戏的服务器端开发技术选型的需求如下:1. 体系成熟,有大型成功案例2. 开发效率高3. 性能高,最好是支持并行技术充分利用多cpu资源4. 代码加密发布5. 开发逻辑简单,如多线程同步、加锁、多进程同步就比较复杂6. 易学易用,如果是新技术 可选技术对比 我对可以选择的技术平台经过自己的一些分析总结如下(一己之言): 项目 nodejs python c++/ruby erlang golang 体系成熟 4 3 5 4 3 开发效率 5 5 3 3 5 性能 3 3 5 5 4 加密发布 3 0 4 3 5 逻辑简单 5 5 3 4 5 易学易用 5 5 2 1 4 跨平台 5 5 5 5 5 其实聪...阅读全文

博文 2014-10-04 19:26:08 Creak_Phone

使用Visual Studio Code调试Golang工程

关键字 最简单的调试攻略 多项目调试, 适用个人开发和项目开发 无需修改系统环境变量 准备VSCode 在官网下载最新版的VSCode: Visual Studio Code - Code Editing. Redefined** 安装Golang插件 打开扩展面板 VSCode->查看->扩展 找到Go插件 在搜索框里输入Go, 找到第二行写有 Rich Go language support for Visual Studio Code的插件, 点击安装 注意不是排名最高的 重启编辑器 配置启动项 打开调试面板 VSCode->查看->调试 添加调试目标 在"没有调试"的下拉框中点击"添加配置.." 添加目标调试配置 例子: { "version": "0.2.0", "configur...阅读全文

博文 2017-10-20 16:04:49 夏大王2019

高性能代理服务器Proxy-Go

Proxy 是 golang 实现的高性能 http,https,websocket,tcp 代理服务器,同时支持内网穿透。 ## Features - 链式代理,程序本身可以作为一级代理,如果设置了上级代理那么可以作为二级代理,乃至N级代理. - 通讯加密,如果程序不是一级代理,而且上级代理也是本程序,那么可以加密和上级代理之间的通讯,采用底层tls高强度加密,安全无特征. - 智能HTTP代理,会自动判断访问的网站是否屏蔽,如果被屏蔽那么就会使用上级代理(前提是配置了上级代理)访问网站;如果访问的网站没有被屏蔽,为了加速访问,代理会直接访问网站,不使用上级代理. - 域名黑白名单,更加自由的控制网站的访问方式。 - 跨平台性,无论你是widows,linux,还是mac,甚至是树莓派...阅读全文

【杭州】golang服务器端开发工程师 2名

golang服务器端开发工程师 2名: - 电商类产品的服务器端开发及维护,restful API开发; - 撰写业务、接口文档供前端使用; - 数据库设计、开发及维护和优化; 要求: - 1~2年Golang开发经验,熟练使用Golang进行Restful API接口开发; - 熟悉常用数据库MySql、PostgreSQL等,以及golang常见ORM进行数据库操作; - 有责任感、团队精神和良好的沟通能力; 其它 - 互联网电商类项目(2B)、小团队; - 工作以结果为导向,弹性工作时间、不打卡; - 期权激励; 工作地点:杭州市滨江海创园北楼D3008 薪水:6~15k 简历发送: hr@obenben.co...阅读全文

Go实现的HTTP/2 Web服务器Caddy

Caddy 是一个支持 HTTP/2 的跨平台 Web 服务器,使用和配置都非常简单。Caddy 支持 HTTP/2, IPv6, Markdown, WebSockets, FastCGI, 模板等等。 一个 Caddy 配置示例: http://www.oschina.net # Your site's address ext .html # Clean URLs errors { log ../errors.log # Error log 404 error-404.html # Custom error page } fastcgi /blog localhost:9000 php # PHP bac...阅读全文

开源项目 2015-05-29 01:56:28 mholt

HTTP Payload

今天用go重写了一个用Ruby实现的http请求功能。但是在请求参数相同的情况下go的请求一直被服务器返回参数错误。 既然参数相同,那就应该是Header里面有问题喽? 我把Ruby代码生成的请求弄出来看了下 POST参数是包在payload里面的。哦! 等等!payload是什么鬼啊!! 我在go的http package里面没看到这玩意儿。 所以还是要知道payload是干嘛的。 根据wiki的解释:payload是跟在请求header后面的数据,是一次请求的主要数据或者说主要目的。 SO上有一个直观的解释:Request Payload 就是POST、PUT等http请求所发送的数据。它是header之后的部分。 一个Content-Type是application/json的请求,具...阅读全文

golang开发的 私有云笔记 leanote 开源啦

## 介绍 leanote是一款私有云笔记, 功能参考evernote, 因我不喜欢evernote的编辑器所以自己用tinymce做(写了一些插件), 又加了markdown编辑器, 除编辑器强大之外还有 * 知识共享, 共享给你的好友, 虽然是私有云笔记, 你也可以邀请你的朋友注册 * 知识协作. * 博客, 可以将某一些笔记公开成博客, 知识管理和博客两不误! leanote默认界面是博客, 所以leanote可以相当于博客与知识管理的混合体. ## 链接 官网: http://leanote.com, github: https://github.com/leanote/leanote ## 使用技术 golang是基于revel和mongo...阅读全文

Golang动手写一个Http Proxy

本文主要使用Golang实现一个可用但不够标准,支持basic authentication的http代理服务。 为何说不够标准,在HTTP/1.1 RFC中,有些关于代理实现标准的条目在本文中不考虑。 Http Proxy是如何代理我们的请求 Http 请求的代理如下图,Http Proxy只需要将接收到的请求转发给服务器,然后把服务器的响应,转发给客户端即可。 Https 请求的代理如下图,客户端首先需要发送一个Http CONNECT请求到Http Proxy,Http Proxy建立一条TCP连接到指定的服务器,然后响应200告诉客户端连接建立完成,之后客户端就可以与服务器进行SSL握手和传输加密的Http数据了。 为何需要CONNECT请求? 因为Http Proxy不是真正的服务...阅读全文

博文 2017-09-17 13:11:26 杨锡坤

[golang]GO语言编写的基于UDP协议的简易聊天软件

初学GO不到两周,本着熟悉语言的目标写了这个小程序,漏洞很多,实现上写的也有些渣渣,欢迎大家阅读指点。 下载地址:https://github.com/yinxin630/gochat 简单思路描述: 0、服务端监听客户端请求,完成会话转发的任务 1、服务端采用心跳包维护用户在线状态 2、客户端通知服务端自己的监听地址,创建服务端-客户端信息通道 服务端: package main import ( "fmt" "net" "os" "strconv" "time" ) //用户信息 type User struct { userName string userAddr *net.UDPAddr userListenConn *net.UDPConn chatToConn *net.UDPC...阅读全文

博文 2014-11-11 06:00:06 u011229962

liteIDE 快捷键改装

LiteIDE改装 最近一直都在使用liteIDE做开发。公司的项目很紧张,但是在这个周末。还是偷偷的对liteIDE小不爽的地方进行了一些小的改造。 IDE上的run按钮就是运行当前的go文件。 首先我们项目运行只是运行统一或者少数的入口点每次点开固定的文档才能run真的是够了。另外一个主要的原因在于liteIDE没有project管理支持。 而且这个IDE貌似没有出很长时间一般的RCP平台都是有插件开发的。但是这没有插件开发(貌似是有。而且是用python写的)但是,没找到文档(截至 2015年1月19日)也是醉了。 关键入口点还是我在google Code上找到的一个文档。 在配置中的LiteBuild里面有一个gosrc.xml 这个配置文件能修改buttion调用的命令。好吧就只能...阅读全文

博文 2015-03-07 21:32:39 jianyingLi

微信代理服务WeChat-Proxy

WeChat-Proxy 是微信代理服务。 1、全局缓存微信 access_token, jsapi ticket等。 2、多路转发微信回调消息。 3、简化微信 oauth2 认证流程。 4、简化微信支付流程。 5、简化微信 JSSDK 签名流程。 参数说明: key: 自定义的app名称,支持中文,也可以是随机生成的字符串。(必填) appid: 微信公众号的 appid。(必填) secret: 微信公众号的 secret。(必填) token, aes: 用于微信回调消息加解密的秘钥。(/msg接口) 如果设置了此项参数,后台应用可以直接以json明文格式接收和回复微信回调消息。(/msg/json接口) mch_id, mch_ke...阅读全文

golang学习之struct

结构体定义的一般方式如下: type identifier struct { field1 type1 field2 type2 ... } type T struct {a, b int} 也是合法的语法,它更适用于简单的结构体。 var t *T t = new(T) 变量 t 是一个指向 T的指针,此时结构体字段的值是它们所属类型的零值,使用 new 函数给一个新的结构体变量分配内存,它返回指向已分配内存的指针。 无论变量是一个结构体类型还是一个结构体类型指针,都使用同样的 选择器符(selector-notation) 来引用结构体的字段,即: type myStruct struct { i int } var v myStruct // v是结构体类型变量 var p *mySt...阅读全文

博文 2016-06-15 09:00:00 caiya928

golang 仿python pack/unpack

写得不完善也不完美 尤其是高低位转换那(go和c 二进制高地位相反 需要转换,还有go int转[]byte长度是4位),希望牛人看后指导一下 项目需要通过socket调取 客户端是go ,服务器端是python,由于需要封包解包,就参照python写的 python 的pack/unpack 参考 Python使用struct处理二进制(pack和unpack用法) package includes import ( "bytes" "encoding/binary" "fmt" _ "os" "strconv" "strings" ) type Protocol struct { Format []string } //封包 func (p *Protocol) Pack(args .....阅读全文

博文 2015-04-08 04:00:00 wangxusummer

十年•杭研技术秀 | “网易云存储服务”从0到1发展之路

欢迎访问网易云社区,了解更多网易技术产品运营经验。2016年对于网易杭州研究院(以下简称“杭研”)而言是重要的 – 成立十周年之际,杭研正式推出了网易云。“十年•杭研技术秀”系列文章,由杭研研发团队倾情奉献,为您展示杭研那些有用、有趣的技术实践经验,涵盖云计算、大前端、信息安全、运维、QA、大数据、人工智能等领域,涉及前沿的分布式、容器、深度学习等技术。正是这些宝贵的实践经验,造就了今天高品质的网易云产品。本文的分享来自网易杭州研究院云计算平台产品部,翔实地描述了网易云存储系统从无到有以及一路披荆斩棘不断完善的历程。 一、从0诞生 2012年云计算在业界已经风起云涌,其为企业带来的价值为世界所认同,按需提供的计算、存储、网络等底层IaaS基础设施,以及丰富的PaaS和SaaS服务,为IT公司...阅读全文

博文 2018-11-23 01:34:43 yijian2595

优化网站性能必备的6种架构方案,你知道吗?

前言 一个成熟的大型网站(如淘宝、天猫、腾讯等)的系统架构并不是一开始设计时就具备完整的高性能、高可用、高伸缩等特性的,它是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计思想也发生了很大的变化,就连技术人员也从几个人发展到一个部门甚至一条产品线。所以成熟的系统架构是随着业务的扩展而逐步完善的,并不是一蹴而就;不同业务特征的系统,会有各自的侧重点,例如:淘宝,要解决海量的商品信息的搜索、下单、支付,例如腾讯,要解决数亿用户的实时消息传输,百度它要处理海量的搜索请求,他们都有各自的业务特性,系统架构也有所不同。尽管如此我们也可以从这些不同的网站背景下,找出其中共用优化的技术,这些优化技术和手段广泛运用在大型网站系统的架构中,下面让我们来认识这些优化性能的技...阅读全文

博文 2017-08-02 03:37:53 不思则罔_不学则殆

golang的Timer定时器

// code_047_Timer project main.go package main import ( "fmt" "time" ) func main() { timer1 := time.NewTimer(time.Second * 2) t1 := time.Now() fmt.Printf("t1:%v\n", t1) t2 := <-timer1.C fmt.Printf("t2:%v\n", t2) //如果只是想单纯的等待的话,可以使用 time.Sleep 来实现 timer2 := time.NewTimer(time.Second * 2) <-timer2.C fmt.Println("2s后") time.Sleep(time.Second * 2) fmt....阅读全文

博文 2018-10-08 01:35:43 ck_god

Go语言主要用途有哪些?

Go语言是2007年末由Robert Griesemer,Rob Pike,Ken Thompson主持开发,之后有Ian Lance Taylor,Russ Cox等人的加入,最终于2009年11月开源发布。它是一款简单的开源编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go语言是谷歌推出的一款全新的编程语言,可以在不损失应用程序性能的情况下极大的降低代码的复杂性,还可以发挥多核处理器同步多工的优点,并可解决面向对象程序设计的麻烦,并帮助程序设计师处理琐碎但重要的内存管理问题,相比于其他编程语言,简洁、快速、安全、并行、有趣、开源、内存管理、数组安全、编译迅速是其特色。 支持平台 1. 硬件架构:Go语言设计支持主流的32位和64位的x86平台,同时也支持32位的ARM架构; 2....阅读全文

Google公布实现Go 1.5自举的计划

Google最近公布了实现Go 1.5自举(Bootstrap)的计划。相关文档的作者是Go核心开发者Russ Cox,他在Go语言上已经耕耘了接近6年。据Russ介绍,Google就“如何从Go源码树中去除所有的C程序”已经酝酿了一年。 自举(Bootstrapping) 是这样的过程,“用要编译的目标编程语言编写其编译器(或汇编器)”。一般而言,自举有几个优势,比如: 用于测试被自举的语言; 支持使用通常更为高级、提供更多高级抽象的语言来编写编译器; 编译器也可以得益于语言层面的任何改进。 如前所述,Google在一年前就开始了从Go源码树中去除C代码的努力,转换计划分为5个步骤: 第1阶段——开发一个从C语言到Go语言的翻译器,将现有的C编译器翻译成Go语言的。这一阶段利用了一个事实:...阅读全文

博文 2015-02-24 14:00:06 u012275397

Go HTTP Redirect的知识点总结

HTTP 规范中定义了返回码为 3xx 代表客户端需要做一些额外的工作来完成请求,大部分3xx用来做转发(redirect)。 状态码的详细说明可以参照规范或者 wikipedia、维基百科, 以下是代码的简短介绍。 300 Multiple Choices: 返回多个可供选择的资源 301 Moved Permanently: 请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一 302 Found: 请求的资源现在临时从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求,HTTP 1.0中的意义是Moved Temporarily,但是很多浏览器的实现是按照303的处实现的,所以HTTP 1.1中增加了 303...阅读全文

golang的https服务器

先生成ssl证书 openssl genrsa -out key.pem 2048 openssl req -new -x509 -key key.pem -out cert.pem -days 1095 然后,大概这样 package main import ( "log" "net/http" ) func SayHello(w http.ResponseWriter, req *http.Request) { w.Write([]byte("Hello")) } func main() { http.HandleFunc("/", SayHello) err := http.ListenAndServeTLS(":8080", "cert.pem", "key.pem", nil) i...阅读全文

博文 2014-10-04 19:26:16 ziyouchutuwenwu

Go http.server实战

``` package main import ( "fmt" "net/http" ) func main() { //监听协议 http.HandleFunc("/",HelloWorldHandler) http.HandleFunc("/user/login",UserLoginHandler) //监听服务 err := http.ListenAndServe("0.0.0.0:8880",nil) if err != nil { fmt.Println("服务器错误") } } func HelloWorldHandler(w http.ResponseWriter,r *http.Request) { fmt.Println("r.Method = ", r.Method) f...阅读全文

博文 2019-05-07 13:12:35 commanding

go 最大的无符号数

这里其实主要是翻译http://blog.golang.org/constants,其中An exercise: The largest unsigned int 部分。 如何构造最大的无符号数。对于确定位数的无符号数,只要移位即可,例如:对于uint32,只要const MaxUint32 = 1<<32 - 1 。 但是,对于不确定位数的uint,就不能这样了,其实,我们知道,最大的无符号数和-1在位数上是一样的。但是,无论是 const MaxUint uint = -1 // Error: negative value , 还是const MaxUint uint = uint(-1) // Error: negative value ,都不能通过编译,原因自然是类型与范围的冲突了。...阅读全文

博文 2015-12-22 04:00:00 lmxmimihuhu

go语言socket服务器端和客户端简单实现

服务器端: package main import ( "bufio" "fmt" "log" "net" ) func handleConnection(conn net.Conn) { defer conn.Close() data, err := bufio.NewReader(conn).ReadString('\n') if err != nil { log.Fatal(err) } fmt.Println(string(data)) fmt.Fprintf(conn, "who?\n") data, err = bufio.NewReader(conn).ReadString('\n') if err != nil { log.Fatal(err) } fmt.Println(s...阅读全文