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

golang版腾讯AI SDK

腾讯AI SDK 腾讯AI开发平台sdk 开源地址:https://github.com/shiguanghu... 腾讯AI接口调用比较简单,可以通过此库简化调用流程,返回值是结构体方便使用。开发者可以不去考虑签名、数据请求就像调本地函数一样调用接口 示例 package main import ( "encoding/json" "log" "github.com/shiguanghuxian/txai" // 引入sdk ) func main() { // 系统日志显示文件和行号 log.SetFlags(log.Lshortfile | log.LstdFlags) // 创建sdk操作对象 txAi := txai.New("appid", "appkey", true) // ...阅读全文

博文 2018-07-31 16:34:51 时光弧线

KafkaKafka消息管理系统

GO开发的Kafka消息管理CMS # 源码安装 ## 第一步 go get -v https://github.com/liushuangxi/kafka-message-management 或者 git clone https://github.com/liushuangxi/kafka-message-management ## 第二步 vim conf/app.conf (set mysql) mysql -uroot -p123456 kmm < private/kmm.sql ## 第三步 go run main.go # 直接使用 ## 第一步 go get -v https://github.com/liushuangx...阅读全文

开源项目 2020-09-29 18:22:40 幸运的狼

Golang 编写 Windows 服务

package main import ( "fmt" "log" "github.com/kardianos/service" ) var serviceConfig = &service.Config{ Name: "serviceName", DisplayName: "service Display Name", Description: "service description", } func main() { // 构建服务对象 prog := &Program{} s, err := service.New(prog, serviceConfig) if err != nil { log.Fatal(err) } // 用于记录系统日志 logger, err := s.Lo...阅读全文

博文 2018-05-06 11:33:04 八风不动

高性能、解耦、异步的微博的消息队列

离开微博已久,总想着弄点东西出来纪念一下当年的峥嵘岁月:)。在微博,你不能不知道鸟哥 Laruence ,也不能不知道 mq 。 mq 是一个基于 memcached 协议,用 c/c++编写的消息队列中间件,有着高性能、解耦、异步化等特点。现在用 Go 重新实现了一遍,将早前自己用 mq 的过程中觉得有些特性可以加上的,都一一加上了,由于其依赖的东西极少,只是简单用了一个轻巧型的嵌入式数据库 BerkeleyDB ,就可以实现一个 simple 的队列服务 tcp server ,见https://github.com/YoungPioneers/mgq, 特性如下,希望大家给些意见,么么哒。 1、一写多读:举个例子, set myqueue message ,只要 get 的时候...阅读全文

阿里百川服务相关接口

https://github.com/smartwalle/taobao 由于项目需要用到阿里百川相关的服务,所以用 Golang 封装了一套阿里百川服务的 SDK,目前主要包括但不限于如下一些功能: * 及时通讯(IM):发消息(一对一、一对多)、添加用户、删除用户、更新用户信息等 * 消息推送:目前已完成所有接口的封装 * 短信发...阅读全文

websocket消息推送Go websocket消息推送服务

## 简介 golang websocket 服务可通过http接口push消息到web客户端,消息发送采用golang的并发模式发送,并异步记录发送的消息日志。 ## 安装 - 导入 db.sql 安装相关push日志表 - 更改 config.dev.json中的相关db配置与项目路径配置 - 执行 install_package.sh 安装相关包依赖 - 执行 go build -o build/push_service - 执行 build/push_service dev ## 注意 本项目websocket使用用户token验证连接,这一块验证的逻辑需要根据自己的业务去更改或删除。 可联系我进行付费二次开发。 ## 使用 例...阅读全文

Go使用Makefile构建

​ 我们平常很多时候都是直接在命令行输入go build进行编译的: go build . 或者测试使用go run运行项目 go run main.go 我看有很多大型开源项目都是如下方式: make build 或者是这样 make install 我们打包运行这个过程,还有一个更加贴切的词语叫做构建项目。 Makefile介绍 Makefile 是和 make 命令一起配合使用的。它是开源的构建工具,很多大型项目的编译都是通过 Makefile 来组织的。 安装make centons系统的make安装命令: yum install -y make 工程结构 我这里新建了一个工程,工程目录是这样: image main.go里面的源码如下: image 就多了一个Makefile文件,...阅读全文

博文 2019-04-13 20:34:40 程序员同行者

千万级消息设计-思考(一)

说明 第一次写,也不知道写成什么样,喜欢的给个赞,不喜欢的给我留言。—— 蚂蚁爬树不怕高,有心学习不怕老。 场景 消息对于用户和平台来说,就是平台和用户之间的桥梁。特别是将消息看的很重的平台。 查询消息记录返回,响应时间问题? 现在都流行消息个数展示,未读消息个数问题?某某平台改变,小公司都要忙活了,忙坏了产品,累死了开发... 上面的两个看似简单的问题,在特定的场合,会给平台带来严重的结果,下面谈谈两种特殊的场合。 场合 1.用户到百万时,数据量到千万级后; 2.已经满足第一个条件后,平台再来几个推广活动。用户同时上线,参加活动会给用户发消息的时候(平台对用户进行推送消息,进行促销时,参加活动,活动奖励等使用消息通知的。 引发的问题 数据量过大时,查询速度变慢,导致数据库吃不消; 并发量高...阅读全文

博文 2018-06-10 10:34:37 antyiwei

分布式弹幕服务架构

今天简单记录一下弹幕服务器的设计思路,希望对大家有所帮助。 业务特点 弹幕典型的进少出多场景,一个房间如果有10W观众,每秒提交的弹幕也许只有1000次,但是广播弹幕给所有观众需要1000 * 10W次。 单机模型 为了推送消息,长连接几乎是必然的选择。 每个房间有若干观众,所有房间的观众都连接在1个服务进程上。 当弹幕提交上来,根据房间找出所有房间内的在线用户,循环将弹幕推送给他们。 假设1个服务进程的消息网络吞吐能力是50万次/秒,那么一个10万观众的房间,每秒提交5次弹幕就会达到服务端极限性能。 多机模型 假设一个直播间仍旧有10万人在线,希望解决每秒5次弹幕就达到性能瓶颈的问题,很容易想到能否横向扩展解决。 假设现在有2台服务器,10万人均匀连接在2台服务器上,也就是一台有5万人在线...阅读全文

博文 2017-11-22 02:30:07 鱼儿的博客

Golang下bind: address already in use

今天测试给服务端发消息,结果忘了把端口正常关闭,再次启动时候发现进程运行不了,出现提示说端口地址被占用了,这是由于上次忘了关闭,导致端口还在被使用,所以只能自己在终端查找并手动关闭,具体方法如下: 在终端输入lsof -i:8000,查找被使用的端口,其中8000是端口号,如下图所示 查找结果.jpeg COMMAND表示进程名,PID表示进程编号,输入kill 4707 (4707就是PID) 如果还被占用,就输入kill -9 4707强制结束进程...阅读全文

博文 2018-12-19 15:34:50 单抽律化娜

轻量级、容错的消息流Liftbridge

Liftbridge 是一个为 [NATS](https://github.com/nats-io/gnatsd) 实现持久、复制的消息日志的服务器,通过为 NATS 消息传递系统实现持久的流扩充来提供轻量级、容错的消息流。客户端创建一个附加到 NATS 对象的流,然后,流将该对象上的消息记录到复制的预写日志中,多个消费者可以从同一个流中读回,并且可以将多个流附加到同一对象。 Liftbridge 在 NATS 前面提供类似 Kafka 发布-订阅的 API,高度可用且可水平扩展。 用于 NATS 的基于日志的 API 复制以容错 水平可扩展 通配符订阅支持 至少一次交付支持 消息键值支持 按键记录压缩 (WIP) 单个静态二进制 (~16MB) 设计为高吞吐量 非常...阅读全文

开源项目 2018-07-24 14:30:01 网友

Golang 在国产化平台中应用

背景国产化平台主要以Linux系统为主,CPU架构包括Arm、MIPS、PowerPC等。基于国产化平台开发的系统应用大多需要适配多CPU架构。Go语言跨平台编译特性能很好适应这种异构需求。跨平台编译Go语言支持交叉编译,例如:在linux开发环境中:GOOS=linux GOARCH=arm go build -ldflags"-s -w" -i -o ./bin/bitA main.goGOOS=linux GOARCH=arm go build -ldflags"-s -w" -i -o ./bin/bitM main.go在windows开发环境中:创建编译脚本:build.batset GOPROXY=https://goproxy.ioset GOOS=linuxset GOAR...阅读全文

博文 2020-04-13 21:32:50 holimon

基于 log4go 的下一代日志系统nxlog4go

nxlog4go 融合了 log4net 与 go log 的基本框架。 Logger 是日志记录容器。包含了若干 Filter。另外,nxlog4go 的 Logger 兼容了 go log 的 io.Writer,同样支持 io.MultiWriter。 Filter 基于 level 过滤日志。每个 Filter 包含一个 Appender。 Appender 输出日志。例如,输出到彩色终端、滚动文件、TCP/IP网络日志服务器等。 Layout 格式化日志...阅读全文

开源项目 2018-01-28 18:30:00 网友

golang用TCP协议实现简单的聊天室

通常聊天室的架构分为服务器端和客户端: 服务器端:接受来自于客户端的连接请求并建立连接;所有客户端的连接会放进连接池中,用于广播消息; 客户端:连接服务器;向服务器发送消息;接收服务器的广播消息; 注意事项:某一个客户端断开连接后需要从连接池中摘除,并不再接收广播消息;某一个客户端断开连接后不能影响服务器端或别的客户端的连接; 详细的代码如下,文档看注释就好了,不再细说: 服务器: server.go package main import ( "net" "log" "fmt" ) func main() { port := "9090" Start(port) } // 启动服务器 func Start(port string) { host := ":" + port // 获取tcp...阅读全文

博文 2018-07-02 21:35:45 ustb80

Go语言实现定向聊天,最简单的.

代码不做注释了,因为我是把这个当作笔记来做的,如果感兴趣Go语言,加我QQ 我们一起学习这门新兴的语言. 服务端:Message_server.go package main import ( "container/list" "encoding/json" "fmt" Json "go-json" //go-simplejson "net" "sync" "time" ) type Client_message struct { sender int receiver int method string body string } type All_message struct { List *list.List Lock sync.Mutex } type Message struct ...阅读全文

博文 2016-03-08 13:00:01 fyxichen

Go语言前端合并到GCC主干了,计划成为GCC4.6发布功能的一部分

Go编程语言是google开发的新型通用编程语言,主要面向当前和未来的的计算环境。 如果之前大家还在观望的话,现在可以不必担心TA的前景了。按说GCC已经很久没在主干上加入新语言了, 就连Pascal这样成熟的前端也没合并进去。 如果你够粉丝,就加油用实作项目来丰富Go的生态吧。 消息来源? 不知强内强外: http://groups.google.com/group/golang-nuts/browse_thread/thread/200979c143e959f...阅读全文

go1.6升级带来响应延迟的问题

Go1.6 放出来很久了,这里是 Release,比较注意一点 Map 不加锁在并发访问时会 Crash.先说问题:升级go1.6后,线上的GC时间显显变短,但是响应时间变大,不可接受。 这几个小时完全不能接受 线上响应 显显看到 小于1ms的请求大幅减少,1ms~10ms请求突增,如果每个请求1ms,整体QPS猛降到1000,完全不能接受。 升级后 系统日志看升级后延迟好大 升级前 对比升级前的响应,基本不到1ms不知道已入坑的同学,有无遇到这个问题。在官方的 Issues 也提到过,需要进一步的测试疑似内存泄漏问题20160315因为升级go1.6有一个map并发访问的问题,所以在 go install 的时间增加了 -race选项 The runtime has added light...阅读全文

博文 2017-02-10 14:31:26 董泽润

高性能Vs性价比,总有一款适合你,阿里云NAS家族深度解析

摘要: 在今年召开的“2017杭州·云栖大会”上,阿里云文件存储(Network Attached Storage,简称NAS)再次释放技术红利,降价幅度达46%,再次成为云上存储的性价比标杆。阿里云NAS是具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。不仅是性价比,阿里云NAS家族还提供了适合各个企业场景的产品,来满足用户需求。 在此,笔者就来为大家一一解析整个阿里云NAS家族。 阿里云NAS文件存储共有三种类型:性能型,容量型和NAS Plus。 1、通用型NAS – (性能型/容量型)类型 NAS性能型使用SSD作为存储介质,为应用工作负载提供高吞吐量与IOPS、低时延的存储性能。 NAS容量型使用SATA HDD作为存储介质,以更低的成...阅读全文

有趣的defer

package main import "fmt" func main() { message := "消息1" defer func() { fmt.Println("第一个defer:", message) }() message = "消息改变了" defer func(m string) { fmt.Println("第二个defer:", m) message = "消息又改变了" }(message) message = "消息2" }有趣的defer,试着注释其中某些行,猜猜最终输出的是什么...阅读全文

博文 2019-02-12 13:50:31 UYAD

Go实现的微博消息队列

有兴趣看实现消息队列原理的,请移步 https://github.com/YoungPioneers/mgq,感谢您的宝贵意见 Introduction Memcached Go Queue, 简称mgq, 是一个用Go语言写的,基于memcached协议的消息队列。其父亲mcq是最早应用于weibo的基础消息中间件,有着高性能,解耦的优点,使得其广泛应用于微博 Features mgq是一个基于NOSQL数据库BerkeleyDB写的FIFO消息队列,目前支持的特性如下: 一写多读:举个例子,set myqueue 'one message',只要get的时候,myqueue开头,#分隔,如myqueue#1,多个客户端之间读是彼此独立的,是不受影响的 默认的get是读取队列中未读取的最旧...阅读全文

博文 2017-02-09 08:16:00 tabsu

LollipopGo开源游戏服务器框架--网络基础模块源码

大家好,我是彬哥,本节给大家讲下LollipopGo游戏服务器NetBase.go,抛砖引玉了,主要是针对Go语言游戏服务器网络处理。 package main import ( "encoding/json" "fmt" "Proto" "Proto/Proto2" "code.google.com/p/go.net/websocket" ) func wwwGolangLtd(ws *websocket.Conn) { // fmt.Println("Golang语言社区 欢迎您!", ws) // data = json{} data := ws.Request().URL.Query().Get("data") fmt.Println("data:", data) NetDataCo...阅读全文

博文 2019-01-04 07:34:43 Golang语言社区

手绘raft算法

在现实的分布式系统中,不能可能保证集群中的每一台机器都是100%可用可靠的,集群中的任何机器都可能发生宕机、网络连接等问题导致集群中的某个节点不可用,这样,那个节点的数据就有可能和集群不一致,所以需要有一种机制,来保证在大多数机器都存在的情况下向外提供可靠的数据服务。这里的大多数节点指的是集群半数以上的节点。 raft算法就是一种在分布式系统中解决集群中多节点之间数据一致性的算法。Golang生态圈中大名鼎鼎的etcd就是使用的raft算法来保持数据一致性的,与raft类似的一致性算法还有Paxos算法、Zab协议等。 其实,raft算法维持数据一致性的核心思想很简单,就是:“少数服从多数”。 leader选举 保证数据一致性,最好的方式就是只有唯一的一个节点,唯一的这个节点读,唯一的这个节...阅读全文

go-events package简介

go-events实现了一种处理event的机制,其核心概念是Sink(定义在event.go): // Event marks items that can be sent as events. type Event interface{} // Sink accepts and sends events. type Sink interface { // Write an event to the Sink. If no error is returned, the caller will // assume that all events have been committed to the sink. If an error is // received, the caller ma...阅读全文

博文 2017-06-25 14:10:32 肖楠

记一次websocket车祸

写在前面 最近在修改调试系统中的日志展示,日志展示用的是websocket,用curl不好测试,所以动手写了一个客户端来查看系统日志。 websocket client 代码如下(代码中有bug,不要复制粘贴) package main import ( "fmt" "log" "os" "os/signal" "syscall" "golang.org/x/net/websocket" ) func main() { url := os.Args[1] origin := os.Args[2] fmt.Printf("Dial url: %s ,origin: %s\n", url, origin) ws, err := websocket.Dial(url, "", origin) if...阅读全文

博文 2019-08-21 20:02:39 北二条

撮合引擎开发:日志输出

欢迎关注「Keegan小钢」公众号获取更多文章 撮合引擎开发:开篇 撮合引擎开发:MVP版本 撮合引擎开发:数据结构设计 撮合引擎开发:对接黑箱 撮合引擎开发:解密黑箱流程 撮合引擎开发:流程的代码实现 撮合引擎开发:缓存和MQ 日志需求 我们都知道日志在一个程序中有着重要的作用,撮合引擎也同样需要一个完善的日志输出功能,以方便调试和查询数据。 对一个撮合引擎来说,需要输出的日志主要有以下几类: 程序启动的日志,包括连接 Redis 成功的日志、Web 服务启动成功的日志; 接口请求和响应数据的日志; 启动了某引擎的日志; 关闭了某引擎的日志; 订单被添加到 orderBook 的日志; 成交记录的日志; 撤单结果的日志。 另外,撮合引擎产生的日志会非常多,所以还应该做日志分割,按日期分割是...阅读全文

博文 2019-12-04 11:35:43 Keegan小钢

新装Linux操作系统后,要保留哪些自启动服务?

和Windows系统一样,Linux服务器运行过程中也会一些没用的软件服务默认运行,这些占用了很多系统资源,也会有安全隐患,所以一般是建议关闭的。那么,工作中Linux主机到底需要有哪些开机自启动服务呢? 新装Linux系统之后,有必要保留的开机自启动服务有5个: Ø sshd:远程连接Linux服务器时要用到,所以必须开启,不然就无法提供远程连接服务了。 Ø rsyslog:日志相关软件,这是操作系统提供的一种机制,系统的守护程序通常会使用rsyslog程序将各种信息写到各个系统日志文件中。 Ø network:系统启动时,如果想激活或关闭各个网络接口的话,可以考虑开启。 Ø crond:用于周期性的执行系统及用户配置的任务计划。有需要时开启。几乎是运维工作中必须要用的一个软件。 Ø sy...阅读全文

博文 2019-11-15 16:40:15 zhouzhou2018