GrapeNet

Go 语言编写轻量级网络库以及工具库
授权协议 Apache
开发语言 Google Go
所属分类 Web应用开发、 网页开发工具
软件类型 开源软件
地区 国产
投 递 者 戚明朗
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Go语言编写轻量级网络库 (grapeNet is a lightweight and Easy Use Network Framework)

可用于游戏服务端、强网络服务器端或其他类似应用场景,每个模块单独提取并且拥有独立的使用方法,内部耦合性较轻。

其实GO语言曾经有过很多强架构的框架,比如GOWOLRD之类的,已经足够了,但是我会将库用于各种轻量级应用不需要过于复杂的内容,所以我设计了GrapeNet,目的是模块独立化。 你可以拆开只使用其中很小的模块,也可以组合成一个服务端,并且在架构中设计也较为轻松,至于热更新的问题,目前脚本数据支持热更新,并且是自动的,只要跑一下UPDATE即可,程序本身稍后测试后发布(仅支持LINUX)。

本库更像是一个日常服务端开发的轻量级工具库集合,用的开心噢。

本库内的大部分子模块均用于实际线上游戏产品、防御类产品以及支付类产品中,经过一定的检验,可以放心使用。

慢慢更新中,很多坑要填,根据近期测试,除LUA库和网络库外,其他库均可直接用于商业产品。

安装

go get -u github.com/koangel/grapeNet/...

模块表(Function)

  • Lua脚本绑定管理(可绑定任何类型的函数、线程安全且自动推倒类型)
  • 日志库(底层采用Seelog)
  • 函数管理系统(可以根据任何类型参数将其与函数绑定并互相调用)
  • 流处理
  • Tcp网络
  • Websocket网络 (基础版)
  • Codec(任意类型注册对象并在其他位置动态创建该对象)
  • CSV序列化模块(通过Tag可以直接序列化到对象或对象序列化为CSV)
  • Sign生成库(自动将结构或map[string]interface{}排序后生成一个sign,可以自行设置KEY)
  • Etcd简易封装,针对Watcher做任意参数的监听callback(多Key监听)
  • Continers容器库,游戏用背包容器、带有锁的并行LIST等
  • Utils多种简易辅助库的集合(三元运算符、数值转换、轻并行执行库)

依赖第三方

  • Seelog (github.com/cihub/seelog)
  • Gopher-lua(github.com/yuin/gopher-lua)
  • Gopher-luar(layeh.com/gopher-luar)
  • Websocket (github.com/gorilla/websocket)
  • Etcd ClientV3(github.com/coreos/etcd)
  • Bson (gopkg.in/mgo.v2/bson)

不依赖任何CGO内容,lua本身也是纯GO实现。

 相关资料
  • 主要内容:使用普通函数创建 goroutine,使用匿名函数创建goroutine在编写 Socket 网络程序时,需要提前准备一个线程池为每一个 Socket 的收发包分配一个线程。开发人员需要在线程数量和 CPU 数量间建立一个对应关系,以保证每个任务能及时地被分配到 CPU 上进行处理,同时避免多个任务频繁地在线程间切换执行而损失效率。 虽然,线程池为逻辑编写者提供了线程分配的抽象机制。但是,如果面对随时随地可能发生的并发和线程处理需求,线程池就不是非常直观和方便了。能否

  • 没有标记语言就没有Web和丰富多彩的互联网,但创造了Web的HTML语言并非尽善尽美,存在诸如难读、难写、难以向其他格式转换的问题。究其根源是因为HTML语言是一种“重”标记语言,对机器友好而并非对人友好。 下面这段HTML源码,非技术控阅读起来会遇到困难。 <html> <head> <meta content='application/xhtml+xml;charset=utf-8' ht

  • 我们提供了一些网络工具来为你操作并使用网路信息提供便捷,比如说获取ip,发送邮件等。 WebUtils 方法原型: getFileFromUrl( $url ) 静态方法, 从网络地址中获取文件路径,也就是把网络地址转换成文件路径。 参数名称 参数类型 参数说明 $url string 要处理的url @return string 返回文件路径 方法原型: getClientIP() 静态方法,获

  • 7.1. 查询网络服务和端口 netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。 列出所有端口 (包括监听和未监听的): netstat -a 列出所有 tcp 端口: netstat -at 列出所有有监听的服务状态: netstat

  • 由来 在日常开发中,网络连接这块儿必不可少。日常用到的一些功能,隐藏掉部分IP地址、绝对相对路径的转换等等。 介绍 NetUtil 工具中主要的方法包括: longToIpv4 根据long值获取ip v4地址 ipv4ToLong 根据ip地址计算出long型的数据 isUsableLocalPort 检测本地端口可用性 isValidPort 是否为有效的端口 isInnerIP 判定是否为内

  • 问题内容: 我目前在一个网站上工作,该网站必须存在于内存可用性非常低的VM上(目前被告知要达到512mb)。不幸的是,至少在不久的将来,数据库和Web应用程序必须是同一台服务器。 现在,我已经在这里通读了一些问题,并尝试进行自己的研究,但是这里有很多选择。从本质上讲,什么是可以安装的轻巧的数据库服务器?SQL或NoSQL并不重要;它不会占用大量数据库资源,但我现在不想随我现在选择的内容而受到限制。

  • 简介 Charles是Mac下常用的对网络流量进行分析的工具,类似于Windows下的Fiddler。在开发iOS程序的时候,往往需要调试客户端和服务器的API接口,这个时候就可以用Charles,Charles能够拦截SSL请求、模拟慢速网络、支持修改网络请求包并多次发送、能够篡改Request和Response等强大的功能。下面介绍安装和使用方法。 下载安装 可以从这里下载Charles,有3

  • 是否可以在x86汇编语言中模拟if-statment(使用masm语法)?我想在x86汇编语言中做这样的事情,但我不确定应该使用哪个运算符来模拟if-ore语句。我应该使用指令,还是指令,还是其他指令?