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

google hosts 2015 最新版本

chromr浏览器注意:在地址栏里输入 "chrome://flags/",然后查找QUIC,启用该协议,同时建议启用 "SPDY/4",能让访问更流畅。 #google hosts 2015#更新时间:2015年1月13日#持续更新地址:http://www.cnblogs.com/echoyy/ #base services 64.233.168.87 google.com 64.233.168.87 www.google.com 64.233.168.87 m.google.com 64.233.168.87 scholar.google.com 64.233.168.87 translate.google.com 64.233.168.87 books.google.com 64.2...阅读全文

博文 2015-01-16 18:00:01 echoyy

Go 编写的 HTTP 隧道goflyway

goflyway 是一个隧道代理工具,它完全基于 HTTP 协议,没有依赖任何第三方库。 **Run** 如果你想现在尝试,只需运行: on your local computer, or if you prefer your VPS, run: 如果希望在本地计算机上,或者 VPS 上运行,执行下面的命令: 远程执行: 设置网络代理为 `127.0.0.1:8100`,然后就可以使用了...阅读全文

开源项目 2017-09-11 13:00:02 网友

golang文件传输服务

续上篇,本篇介绍一个完整的golang文件传输服务器。 完整的代码可以看服务器,客户端 网络使用的框架如上篇介绍,这里就不再复述. 首先定义3个命令码: const ( request_file = 1 file_size = 2 transfering = 3 ) request_file用于请求文件传输,附带的命令参数是文件key. file_size用于通告客户端文件的大小. transfering用于传输文件内容,附带参数是文件内容的二进制数据. 服务器的文件配置示例 ../learnyouhaskell.pdf=haskell ../golang.1.1.2.chm=golang ../NodeJS.pdf=NodeJS 上面的文件配置了3个文件可供传输=左边是文件路径,右边是请求...阅读全文

博文 2014-10-04 19:25:59 sniperHW

go代理服务器代码

go代理服务器代码 最近用废弃的小笔记本搭了个centos服务器挂着,搭了ssh,tomcat,go环境,想搭个代理服务器访问路由,不想安装,想自己写一个,顺便复习一下go语言知识。 一开始,我网上搜了一下go语言写代理服务器的代理,搜索到一个: 来自:http://symphony.b3log.org/article/1357452978419 (原文地址:http://kejibo.com/golang-http-proxy-server 已失效) package main import ( "http" "log" "os" "io/ioutil" ) func handler(w http.ResponseWriter, r *http.Request) { resp, err :=...阅读全文

博文 2015-08-25 19:00:00 u010499721

如何在pycharm中配置go libraries

本人是个go初学者,由于之前一直用pycharm写python,就想仍然用原来的编辑器学习,下载了go插件之后,它要我选择global library ,projcet library,moddule library,不是很懂这些的区别,每次import一个库进去就提示我unused import,我看了一下所有的package都在go/src文件下,但是全部选择这个文件夹之后也没有用。 不知道该怎么办了,求大神帮帮忙,教教我怎么配置![2EFJ}FE2FRXYGS@S1WWXBZW.png](http://studygolang.qiniudn.com/160214/12061cf9b35573166562979b2c3b746a.png...阅读全文

Golang 下的微服务 - 第 5 部分 - Go Micro 的事件代理

在本系列的[前一部分中](https://studygolang.com/articles/12485),我们谈到了用户认证和 JWT。在这一部分中,我们将快速浏览 go-micro 的代理功能。 正如前面的文章提到的,go-micro 是一个可插拔的框架,它连接了许多不同的常用技术。如果你看看[插件仓库](https://github.com/micro/go-plugins),你会看到它支持多少插件。 在我们的例子中,我们将使用 NATS 代理插件。 ## 基于事件驱动的架构 [事件驱动的架构](https://en.wikipedia.org/wiki/Event-driven_architecture)是一个非常简单的概念。我们通常认为好的架构是要解耦的,一个服务不应该与其他服务耦合...阅读全文

博文 2018-03-04 10:38:39 shniu

用Golang实现redis

缘起 最近公司的第一个PHP转GO项目已经在生产环境稳定运行数周,又逢需求小年儿,得空分享下去年学GO过程中的练手项目Godis——用Golang实现的redis. redis3.0版本,代码简明精炼,再加上是Web后端程序员使用最多组件之一,熟悉redis原理并阅读多源码的开发者人数颇多,这个系列小文便不再对redis细节做过多介绍。不过,有必要系统性说明的地方仍然会以较大篇幅尝试解读。 进入正题 基本流程 Godis第一版的目标是“最基本的kv缓存”,feature list如下: 客户端/服务端交互 set/get 命令实现 AOF持久化实现 已经做到,再精简就等于没写的境界。遵循实际工作中的编码流程,先设计基本架构再填充实现的方式,Godis的架构图一步到位、毫无点缀: 原理分析 1...阅读全文

博文 2018-06-06 11:34:39 alphali

golang微信公众平台之消息接入

API文档上的内容 注册公众平台什么的就不说了,消息接入部分,文档地址: http://mp.weixin.qq.com/wiki/index.php?title=%E6%B6%88%E6%81%AF%E6%8E%A5%E5%8F%A3%E6%8C%87%E5%8D%97#.E7.94.B3.E8.AF.B7.E6.B6.88.E6.81.AF.E6.8E.A5.E5.8F.A3 简言之就是,提交申请,微信服务器将发送GET请求到你所填写的URL上,这个GET请求附带四个参数: 参数 描述 signature 微信加密签名 timestamp 时间戳 nonce 随机数 echostr 随机字符串 过程很简单,校验数据,确认请求来自微信服务器,则原样返回echostr参数内容,接入生效。 校...阅读全文

博文 2014-10-04 19:26:04 wlts

区块链技术(如何搭建golang语言开发环境)

目前比较大家熟知的有比特币,以太坊eth,etc等等。但是关于比特币是用什么语言实现的,就并不太清楚了,实现比特币开发的语言是谷歌开发的golang语言,今天下面的文章主要讲的就是如何的搭建go语言开发环境;关于开发环境,没有接触过计算的人来说就是你下载美图秀秀,然后在电脑安装,现在都是简易安装,你使用美图秀秀P图,我们是用go语言编程,其实说白了就是下个程序,然后安装。链接一:go语言下载链接 golang.org/dl/谷歌的网页貌似加载了某种识别程序,能够直接识别这是windows系统,而且直接识别是64位系统的。(如果这个链接打不开,也可以在其他地址找到相应的下载) golang语言下载页 点击红色方框部分下载即可,如果你是其他系统的选择相应的文件下来。然后双击开始运行,如果你是新手...阅读全文

Go后端+iOS端+Android端的AES256加密方案(Android端)

移动端与服务端通讯需要采用AES 256加密。 Androd客户端的实现代码为: import android.util.Base64; import java.io.UnsupportedEncodingException; import java.security.Key; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; public class AESEncrypt { private static final String KEY_A...阅读全文

博文 2015-07-06 18:00:00 陈小锅

多云环境应用管理平台OpenPitrix

OpenPitrix 是一个将应用程序打包和部署到诸如 QingCloud,AWS,Kubernetes 等多个云环境中的开放平台. Pixrix [Paitriks] 是指 PaaS 和 IaaS 的矩阵,可以轻松开发,部署,管理各种应用程序,包括各种 PaaS 运行时环境,即 Pitrix = PaaS + IaaS + Matrix。 它也意味着一个包含无尽的矩阵(PI - 希腊字母“π”)应用程序。 设计: 基本思想是解耦应用程序存储库和运行时环境。 应用程序可以运行的运行时环境是通过匹配运行时环境的标签和应用程序所在的存储库的选择器。详情请查看[如何设计项目](https://github.com/openpitrix/openpitrix/blob/master/docs...阅读全文

golang中如何使用http长链接(client端)

RESTFUL请求大部分都可以用短连接,即三次握手建立链接,交换数据完成后,释放掉的链接,短链接不会长时间占用端口号,实际项目中还会用到另一种,长链接,比如客户端发送RESTFUL请求,需要监测某一资源变化情况,服务端提供watch机制,在资源有变化时通知client端。 那么client端,相对于短链接,长链接应该怎么写呢? 和短链接基本一样,只需要循环读取server端返回的response即可。 package main import ( "fmt" "io" "log" "net/http" ) func main() { request, err := http.NewRequest("GET", "http://www.example.com/", nil) if err != ...阅读全文

博文 2017-08-15 08:05:09 风千寻艾

golang实现一个http服务器例子

package main import ( "fmt" "log" "net/http" "strings" ) func sayhelloName(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("val:", strings.Join(v, "")) } fmt.Fp...阅读全文

博文 2015-07-27 15:00:06 webyh

Golang使用amqp发送消息

1.为什么使用信道(channel)而不使用TCP连接发送AMQP命令? 对操作系统来说频繁的建立和销毁TCP连接开销非常昂贵,而操作系统每秒建立的连接是有上限的,性能瓶颈不可避免,而只建立一条TCP连接无疑是一个很好的方案,在这条连接当中建立多条信道与RabbitMQ进行私密通信,相当于光纤电缆一样,一条电缆有多条光束,信道是没有限制的 2.队列 1)AMQP的命令basic.consume与basic.get 如果需要消息一到达队列就自动接收的话,应该使用basic.consume basic.get会订阅消息,获得单条消息,然后取消订阅,值得注意的是不应该循环basic.get来替代basic.consume,应该理性使用basic.consume实现高吞吐量 消息如果到达无人订阅的队...阅读全文

博文 2016-10-11 08:00:18 fyxichen

goalng 如何利用mux写一个文件服务器

我用net/http写了一个文件服务器,代码很简单,可以运行,代码如下: package main import "net/http" func main(){ http.Handle("/", http.FileServer(http.Dir("../template"))) http.ListenAndServe(":8888", nil) } 然后在template目录下的任何文件和目录在ie中都可以访问 然后我用net/http+github.com/gorilla/mux改写了上述代码,如下: package main import "net/http" import "github.com/go...阅读全文

golang postgresql数据库驱动

今天周末,即使立冬已过,阳光依然独好,闲着没事做,coding。 一直用bm。。。/pq的SQL驱动,忘记叫啥了,一直没问题,今天看到地址转到了lib/pq,重新获取了驱动,继续使用,有如下一段代码, func DB() (db *sql.DB) { db, err := sql.Open("postgres", "user=postgres password=123456 dbname=test sslmode=verify-full") if err != nil { Fatal("数据库连接失败" + err.Error()) } return db } 编译,运行,不知道搞毛,db一直为空,搞了好久,都没搞明白,偶然间看到了 import( ) 居然为空,我去,我去,好吧,我的编辑器...阅读全文

博文 2016-03-19 15:00:01 u013025612

Go命令行工具

ubuntu安装配置好go环境后,终端执行”go”则会显示出一些常用命令。其中有一些是在编译安装信令服务器时使用到的。 执行“go”后, Usage: go command [arguments] The commands are: build compile packages and dependencies clean remove object files env print Go environment information fix run go tool fix on packages fmt run gofmt on package sources get download and install packages and dependencies install compil...阅读全文

博文 2016-09-22 09:00:03 day_day_up1991

go语言键盘输入(摘自the-way-to-go)

我们如何读取用户的键盘(控制台)输入呢?从键盘和标准输入 `os.Stdin` 读取输入,最简单的办法是使用 `fmt` 包提供的 Scan 和 Sscan 开头的函数。请看以下程序: ```go // 从控制台读取输入: package main import "fmt" var ( firstName, lastName, s string i int f float32 input = "56.12 / 5212 / Go" format = "%f / %d / %s" ) func main() { fmt.Println("Please enter your full name: ") fmt....阅读全文

了解一下Golang的市场行情

了解一下Golang的市场行情 项目地址:https://github.com/go-crawler/lagou_jobs 如果对你有所帮助,欢迎 Star :) 目标 在工作中 Golang 已是一份子,想让大家了解一下 Golang 的市场行情,也想让更多的人熟悉它。因此主要是展示数据分析的结果 目标站点是 某招聘网站 的职位数据抓取和分析,爬取城市分别为 北京、上海、广州、深圳、杭州、成都,再得出一个结论 分析 首先需要进行页面分析,找到我们的抓取方向 搜索 golang 关键字,打开页面 F12 就能看到它发送了四个请求,留意 positionAjax.json 这个请求 我们仔细研判这个接口的入参和出参 入参 1、Query String Param city:请求的城市 need...阅读全文

博文 2018-04-28 09:44:10 go-crawler

HTTP 流量复制工具Gor

Gor 是用 Go 编写的简单 HTTP 流量复制工具,主要是为了从生产服务器返回流量到开发环境。使用 Gor 可以在实际的用户会话中测试代码。 Gor 基础工作流: ![Diagram](http://static.oschina.net/uploads/img/201507/21161205_ezre.jpg) 从端口捕获流量: # Run on servers where you want to catch traffic. You can run it on each `web` machine. sudo gor --input-raw :80 --output-tcp replay.local:28020 # Replay server (rep...阅读全文

开源项目 2015-08-02 14:24:59 buger

Go 1.4 Beta 1 发布

Go 1.4 Beta 1 发布,此版本是 Go 1.4 的 beta 版本,现已提供下载,反馈bug请前往这里。 此版本仅包括一个小的编程语言修改;对编译器做了重大修改,向后兼容 for-range loop 形式。此版本关键点在实现功能,改进垃圾收集器和为下个版本完整的收集器打好基础。 此版本还添加了新的工具,支持使用 go 命令生成构建时源代码。此版本支持 Android 和 Native Client(NaCl)的 ARM 处理器和 Plan 9 的 AMD64。 Go 1.4 最终版本计划在 2014 年 12 月 1 日发布,更多更新内容请看发行说明...阅读全文

博文 2014-11-01 01:00:01 mengyidan1988

分布式聊天服务器 Tim

Tim是一个分布式聊天服务器,采用go语言开发,有很好的并发支持与良好的性能。 1.支持im的基本功能。 2.支持群聊。 3.支持用户状态信息推送,"在线","离开"等。 4.支持消息回执.消息不丢失。 5.支持离线信息,聊天信息等存储与拉取。 6.通过协议拓展,可以支持视频,音频等通讯。 7.支持心跳检测异常断开的客户端,检测客户端验证超时等。 8.支持可配置的同一账号多客户端同时登陆。 9.可以配置关联其他数据库用户系统,tim可以独立于业务之外。 10.支持无数据库模式,此模式无法保存数据。 11.支持自定义消息类型,如发送位置,分享购物信息等。 12.支持分布式部署,服务器横向拓展。 目前实现的...阅读全文

golang文件服务器

func FileServer(root FileSystem) Handler 就是返回一个handler,用作http.handle这个函数的参数。 FileSystem是一个接口 type FileSystem interface{ Open(name string)(File,error) } 说白了文件服务器就是要这样一个接口作为静态文件服务器的根目录。 一般用这个做一个前缀转换 func StripPrefix(prefix string, h Handler) Handler package main import ( "net/http" ) func main() { // To serve a directory on disk (/tmp) under an alter...阅读全文

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

几款Golang IDE对比

Go语言目前已经在开发者中越发的流行,自然很多人都在寻找合适的IDE来实现代码语法高亮、自动补全以及其他编辑特性。 下面就几种常用的IDE进行对比介绍: 1. Sublime text 这个文本编辑器在开发者中较为普及,应该说sublime并非一个完全成熟的IDE,但是它具备很多语言的扩展插件,比如python、lua等,其中有一个插件GoSublime专门针对go语言,GoSublime提供了语法高亮、自动补全等功能,这些功能使得Sublime Text成为一很实用的Go IDE。 2. IntelliJ IntelliJ IDE由Jetbrains提供,在java开发者中非常流行,其自带的Go插件支持语法高亮显示、代码补全、自动编译以及子库支持。这就使得你可以很方便地将项目拆分成多个包的...阅读全文

博文 2018-12-15 13:31:33 rudyn

webhook 是什么以及如何创建

我们在网上做的工作,大部分其实就是事件,webhooks 已经成为了连接系统的主要方式,不管是用户创建、支付成功、DockerHub 镜像推送或者 Git 仓库上的合并请求,这些都是非常有用并且轻量级的共享信息的方式 ![](https://raw.githubusercontent.com/studygolang/gctt-images/master/webhook/1.png) 那么,webhook 究竟是什么呢?webhook 是应用给其它应用提供实时信息的一种方式。信息一产生,webhook 就会把它发送给已经注册的应用,这就意味着你能实时得到数据。不像传统的 APIs 方式,你需要用轮询的方式来获得尽可能实时的数据。这一点使得 webhook 不管是在发送端还是接收端都非常高效。由...阅读全文

博文 2018-09-25 10:05:16 jettyhan

Go 语言使用 TCP keepalive

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

博文 2014-10-09 16:00:00 --zxp, 0x0bject

最强围棋程序Alpha Go 浅析

最强围棋程序Alpha Go 浅析 去年谷歌的围棋程序Alpha Go一举打败所有已知的围棋AI程序,以及以5:0的大比分打败了专业棋手Fan Hui。随后在《nature》上报到了Alpha Go 的内幕。作为一个伪的围棋爱好者和一个机器学习爱好者,看了该文章,并看了其他的分析,写下自己的心得: 围棋的智能对弈程序最早当属我国的手谈,那个时期的自动对弈程序属于经验型的。随后从国外对围棋研究后,产生了蒙特卡洛树搜索的方法应运于围棋对弈,产生了一系列的强AI,可以达到业余水准,关于蒙特卡洛树搜索可以参看《基于蒙特卡洛树搜索的计算机围棋博弈研究》,可以说对该方法进行了详细的说明,阅读也较容易,可以得到围棋AI的一些背景,制约蒙特卡洛方法更近一步的原因是:树的展开,以及搜索的深度的确定。于此同时,...阅读全文

Golang 开发移动应用的OpenGL(Android为例)的渲染管线

golang.org/x/mobile/gl 实现的是 OpenGL ES 2 的封装。 参考:https://godoc.org/golang.org/x/mobile/gl OpenGL ES(OpenGL for Embedded Systems)是OpenGL三维图形API的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。OpenGL ES 1.0针对固定管线硬件的,OpenGL ES 2.0针对可编程管线硬件,可以认为完全是两套API。最新3.0版本也在Android4.3得到了支持,从源码上看完全扩展自2.0。 OpenGL负责把三维空间中的对象通过投影、光栅化转换为二维图像,然后呈现到屏幕上。 管线这个术语描述了OpenGL渲染的整个过程。openGL采用cs模型:c是cp...阅读全文

博文 2016-02-04 03:00:01 ghj1976

Web 服务及网络服务框架Go Frame

## 介绍 gf(Go Frame)是一款为Web服务及网络服务开发设计的,模块化、低耦合、轻量级的Go语言开发框架。 实现了通用的HTTP/TCP/UDP Server,并提供了Web服务开发的系列核心组件, 包括:MVC、Cookie、Session、模板引擎、路由控制、配置管理、数据校验、数据库操作(ORM)等等, 并且提供了数十个实用开发模块,包括:缓存模块、日志模块、JSON模块、命令行模块、二进制模块、环境变量模块、并发安全容器、Goroutine池等等。 gf是开源的,免费的,基于MIT...阅读全文

Go语言的类IPython 交互式编程界面

Bret Victor 的 Inventing on principle 是我看到过的最令人激动和震撼的演示,没有之一。虽然这位前苹果公司的UI大牛早在2012年就作出的这次演示,但他的影响一直没有减弱,编写程序过程中的任何变化,应该直接的产生反馈,让程序猿能够看到结果,或者说创造者需要对自己的创造的东西有实时的反馈。 之前一直在使用Python,非常喜欢IPythonn Notebook,使用IPython Notenook来快速的完成一些原型非常的方便。现在由于项目的需要,要开始使用Go语言,我就在想,有没有可以使用Go的IPython环境呢?知乎上还有一个相关的帖子,可惜上面并没有给出有效的回答。 我做了些小功课,结果并不完美,这里分享给大家。 官方版 Go Playground 开始...阅读全文

博文 2016-10-29 09:00:04 naughty

select in Go's runtime

select可以用来管理多个channel的读写,以及实现channel读写timeout等。select并不是以库的形式提供,而是语言级支持的语法特性,因此select的实现主要由编译器和runtime共同完成,本文将重点关注runtime部分。 select语句的执行主要由4个阶段组成,依次是创建select对象,注册所有的case条件,执行select语句,最后释放select对象。这里提到的select对象是底层runtime维护的一个Select结构,这个对象对Go程序来说基本是透明的。后面的内容中,我将称这个select对象为选择器。 选择器内存模型(Select) 这里内存模型主要是描述的选择器在内存是如何布局的,是什么样的数据结构来维护的。源码位于runtime/chan.c...阅读全文

博文 2014-11-10 09:44:38 skoo

游戏服务器框架mqant

mqant是一个基于Golang语言的游戏框架,它具有高性能、高可伸缩、分布式多进程等特点,并且使用很简单。与以往多进程的游戏框架不同,mqant也支持单进程部署,并且也具备很高的性能。mqant在底层对分布式进行了抽象,在开发的时候无须考虑分布式,让开发者可以更多地去关注游戏的具体逻辑,大大提高开发效率。mqant的灵活性使得mqant也可以作为通用的分布式实时应用开发框架,用于一些高实时应用的开发。 mqant与客户端通信选择了mqtt协议,这使得mqant支持所有主流平台的客户端,使得客户端的开发变得很友好...阅读全文

开源项目 2017-02-28 03:04:10

go语言http服务处理image/css/js等静态文件

go语言实现http服务器时如果处理静态文件,需要用到http.ServeFile: func ServeFile(w ResponseWriter, r *Request, name string) { dir, file := filepath.Split(name) serveFile(w, r, Dir(dir), file, false)} 首先根据请求路径r.URL.Path判断是否包含静态文件目录,如果存在则直接返回: img_dir := "/home/qinpeng" if strings.HasPrefix(r.URL.Path,"/img"){ file := img_dir + r.URL.Path[len("/img"):] f,err := os.Open(fil...阅读全文

Cache为什么有那么多级?为什么一级比一级大?是不是Cache越大越好?

点击上方“公众号” 可以订阅哦!通过我们前面的系列文章,大家对Cache的组织形式和特性都有了一定的了解。有个问题不知道大家思考过没有:为什么Cache分这么多级,而是不是直接把L1或者L2增大了事?我们为什么不能直接做出个Cache奇大的CPU呢?下面我们来一一分析。为什么Cache要分级? 前文(L1,L2,L3 Cache究竟在哪里?)中我们提到CPU中有L1、L2、L3甚至L4级Cache。为什么搞这么麻烦,制程提高,可以放更多晶体管了,CPU厂商直接把L1和L2加倍不就好了吗?要回答这个问题,首先我们要知道L1和L2 Cache的区别,它们的构造一样吗?答案是否定的,虽然它们都是由CAM(Content Addressable Memory )为主体的tag和SRAM组成的,但是区...阅读全文

博文 2018-01-02 10:31:03 Wolf

Vendor 包管理器 Go Glide

Glide 是 Golang 的 Vendor 包管理器,方便你管理 vendor 和 verdor 包。 主要特性: * 简单管理依赖 * 支持 **versioning packages**,包括 [Semantic Versioning 2.0.0](http://semver.org/) 支持 * 支持 **aliasing packages** (e.g. for working with github forks) * Remove the need for munging import statements * 支持所有 `go` 工具 * 支持 VCS 工具和 Go 支持: * git * bzr * hg * svn 支持定制本地和全局插件 (se...阅读全文

开源项目 2015-11-04 16:00:00 Masterminds

40行代码聊天室,golang服务端

今天看到一个非常棒的及时通信的项目,分享给大家 服务端:[lhttp](https://github.com/fanux/lhttp) 40行代码聊天室[demo](https://github.com/fanux/lhttp-web-demo) 基本上写一个聊天室服务端一行代码不用写,客户端写极少量的代码就可以了。 比较值得一提的是作者的想法非常好,通信协议有点类似http协议,这样可扩展性就比较好,整个服务端都可以轻松定制的,作者实现和一些非常重要的首部过滤器,如订阅和发布。 如果说http协议是定位资源的,那lhttp最大的用处就是传输命令。是基于websocket协议的。 最让我喜欢的是订阅与发布,如: 通过websocket发送这样一条字符串: "L...阅读全文

Go 1.6将进一步改进垃圾收集器

尽管Go 1.5刚刚发布,仍然相对较新,但是Go团队已经在致力于改进其新的低延迟并发垃圾收集器,希望Go更适合新的应用领域。Google工程师Austin Clements和Rick Hudson如是说。 Go 1.5用新的垃圾收集器代替了原来的STW(stop-the-world) GC,解决了延迟问题。当负载较重时,每50ms,新的GC的活动时间可以控制在10ms以下,从而使Go程序在一般情况下能运行得更快些。在更极端的情况下,停顿可以从300ms降到4ms。 Go 1.6的目标是进一步稳定GC,并在以下几个方面做出改进: 状态协调(State coordination):Go 1.5 GC有个主要瓶颈是从Go 1.4继承来的,源自其集中式的GC协调器(coordinator),这是一个...阅读全文

博文 2015-09-13 14:40:00 臧秀涛

内网穿透easyProxy内网穿透代理服务器

# easyProxy ![](https://img.shields.io/github/stars/cnlh/easyProxy.svg) ![](https://img.shields.io/github/forks/cnlh/easyProxy.svg) ![](https://img.shields.io/github/license/cnlh/easyProxy.svg) easyProxy是一款轻量级、高性能、功能最为强大的**内网穿透**代理服务器。目前支持**tcp、udp流量转发**,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还**支持内网http代理、内网socks5代理**,可实现...阅读全文

开源项目 2019-01-28 17:32:02 cnlh

GO语言零基础入门资料整理

GO语言跟它名字一样是门比较装逼的语言,鲜有菜鸟初学者教程,所以没有语言基础的话,理解起来会有点困难。闲来没事整理了一个GO零基础入门资料。 安装与简介 因为国内老被墙,被墙之后请在网上直接下载,下载链接 开发环境编辑器 1.Sublime,支持多标签,自动排版,高亮,简单的填补,简单的SHELL直接运行等。 《Ubuntu下使用Sublime Text 2搭建Go开发环境》 《Sublime Text 2搭建Go开发环境(Windows)》 2.vim + gocode 《Go的Vim的高亮和自动补齐》 3.LiteIDE:只用于GO环境开发的编辑器 4.免费的golang在线开发环境:由实验楼与StudyGolang合作提供的在线实验室,可直接通过浏览器访问进行Go语言的学习与编程。 一...阅读全文

博文 2016-01-15 19:00:00 weiyuefei

Go 语言的缓存库 FreeCache

FreeCache 是一个 Go 语言的缓存库,无额外的 GC 负荷。数百万对象的垃圾收集延迟仅在数百毫秒。 特性: * 可存储数以百万计条目 * 零垃圾收集负荷 * 高并发而且线程安全的访问 * 纯 Go 语言实现 * 支持对象失效 * 近乎 LRU 的算法 * 严格限制内存使用 * 提供一个测试用的服务器,支持一些基本 Redis 命令 示例代码:

cacheSize := 1024*1024
cache := freecache.NewCache(cacheSize)
key := []byte("abc")
val := []byt...阅读全文

开源项目 2015-04-29 16:00:00 coocood

Go-Ping

package conn import ( "bytes" "net" "os" "time" ) const ( ICMP_ECHO_REQUEST = 8 ICMP_ECHO_REPLY = 0 ) // Ping Request func makePingRequest(id, seq, pktlen int, filler []byte) []byte { p := make([]byte, pktlen) copy(p[8:], bytes.Repeat(filler, (pktlen-8)/len(filler)+1)) p[0] = ICMP_ECHO_REQUEST // type p[1] = 0 // code p[2] = 0 // cksum p[3] = 0 // ...阅读全文

博文 2015-02-26 12:28:25 nulijiabei

【求助】如何编译MIPS处理器的GCCGO工具链。

RT: go基本已经通吃了所有主流处理器。MIPS64的处理器也已经支持了,但是唯独MIPS32的处理器不支持。 目前有个需求就是在MIPS处理器上也能用上GO。目前知道的只有GCCGO了。 老版本的gccgo可以编译成功,gcc 4.8.3这个我就成功了 但是新版本我基本上试过,所有的办法去编译mips的gccgo 5.X,6.X版本。 1、直接从GCC源码编译。 2、crosstool-ng工具编译。 3、buildroot工具编译。 4、通过openwrt编译工具编译 都失败了。 工具基本能编译出来(gccgo,go1等),但是库编译就报错,编译不通过。 基本是gcc\libffi\src\mips\o32.s这个文件报错。 ...阅读全文

beego 0.9.0 中智能路由AutoRouter的使用方法及源码解读

了解beego的开发者肯定知道,beego的路由设计来源于sinatra,原来是不支持自动路由的,每一个路由都要自己配置的,如: type MainController struct { beego.Controller } func (this *MainController) Get() { this.Ctx.WriteString("hello world") } func main() { beego.Router("/", &MainController{}) beego.Run() } beego.Controller 提供所有的restful方法,Get,Post,Delete等方法,通过重写这些方法,已响应客户端不同的请求方式。 用过Node.js的同学,肯定觉得很熟悉,拿最...阅读全文

博文 2014-10-04 19:26:21 yuan-shuai