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

golang key/value 工具consul-kv

consul大家都知道,是一个分布式支持多数据中心的系统,一般用在微服务的注册/发现服务上,开箱即用。他同时集成了key/value系统,虽然对比redis的吞吐量不高,但是有着比redis更高的一致性,并且可以监测改变的数值。基于这些特点,consul也是比较适合存放服务配置的,所以写了这么一个工具,方便读取、修改、获取更新的工具...阅读全文

开源项目 2019-12-03 19:19:03

golang. 批量获取redis中的缓存值

21天精品区块链课程免费学习,深入实战行家带路,助力开发者轻松玩转区块链! >>> 使用redis的pipeline,批量获取redis中的key值时,报错,分析发现,批量获取时,exec后,会返回两种值:nil 及 redis.Nil, 这种情况下,使用常规的 if err!=nil 的判断方法判断错误,是会报错的。 测试代码: package main import ( "github.com/go-redis/redis" "log" "strconv" ) func main() { client := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password set DB...阅读全文

博文 2018-09-01 14:33:16 gguoqiang110

Rancher使用入门

上个月末,Rancher Labs在其官方博客上宣布了 Rancher 1.0正式版本发布。 这是继Apache Mesos、 Google Kubernetes以及Docker 原生 Swarm 之后,又一个可用于Production环境中的容器管理和服务编排工具,而Rancher恰似这个领域的最后一张拼图(请原谅我的孤陋寡闻,如 果有其他 厂商在做这方面产品,请在评论中留言告诉我)。从Rancher Labs的官方about中我们可以看到:Rancher Labs致力于为DevOps team打造一个最好的容器管理平台,让容器的部署和管理变得更加Easy。 本文将带大家与Rancher来个亲密接触,直观的体会一下Rancher的入门级使用方法。 注意:由于Rancher还在active ...阅读全文

博文 2016-04-19 08:54:40 bigwhite

golang消息队列实现用什么比较好?

项目开始需要与其他语言开发的项目通信,http请求比较损耗性能,但短时间内不太可能要求其他平台改成rpc通信。所以打算先用消息队列实现,网上搜了一下,好像golang用redis作消息队列比较少。 请问大家,golang 开发的项目还有什么其他的消息队列吗?如果是用redis做消息队列,会有什么问题吗...阅读全文

火币网深圳公司招聘Go高级开发工程师

火币集团是全球领先的数字资产金融服务商,创立于2013年,先后获得世界顶级投资机构真格基金、红杉资本的战略投资。 我们拥有5年数字资产金融服务经验,为全球超过130个国家的200万用户提供安全、可信赖的数字资产交易及资产管理服务先后10次刷新全球比特币单日交易额纪录。 截至2017年12月,火币集团累计交易额突破8500亿美元。 目前,我们需要在深圳招募有经验的Go开发工程师(月薪:2-3万,六险一金,丰厚的季度和年底绩效奖金),具体岗位职责如下: 1. 根据需求参与平台项目开发和维护,参与制定前后端业务流程,接口协议,文档输出等; 2. 和产品经理及其他研发团队同时保持良好沟通,对产品需求进行合理化建议,按计划确保开发工作顺利进行 任职要求: 1. 精...阅读全文

北京招聘Golang研发工程师

工作地点: 北京-回龙观-复式精装住宅 工作装备: MacBook Pro Retina 三星大宽屏显示器 人体工程学座椅 公司简介: 天津泛亚电子商务技术服务有限公司于2014年1月由泛亚有色金属交易所原有股东投资设立,注册资本1亿元人民币,是泛亚有色金属交易所实现集团化发展的重要战略举措。该公司将以交易系统研发、风险控制等核心技术,以控股或参股的形式参与全国各地交易市场及交易中心的建设,预计3-5年内将形成天津为核心,涵盖有色金属、煤炭、进口矿产品、塑料等大宗商品业务板块。 岗位要求: - 计算机相关专业本科及以上学历, 具有2年及以上开发工作经验; - 熟悉Linux工作环境,精通Golang/Erlang/C/C++至少一种语言; ...阅读全文

Golang使用Redis

go使用Redis 文档链接:https://godoc.org/github.com/go-redis/redis import ( "fmt" "github.com/go-redis/redis" ) var ClientRedis *redis.Client const ( REDIS_NETWORK = "tcp" REDIS_HOST = "" REDIS_PORT = "" REDIS_PASSWORD = "" REDIS_DB = 0 ) func init() { options := redis.Options{ Network: REDIS_NETWORK, Addr: fmt.Sprintf("%s:%s", REDIS_HOST, REDIS_PORT), Dia...阅读全文

博文 2020-04-05 13:32:44 是个懒人

一个go语言实现的短链接服务

一个go语言实现的短链接服务 首先,博客转移到 wusay.org 了,去年没交费,博客都没了。。。刚刚恢复过来,以前的文章没了,慢慢补吧。 什么是短链接服务 大家都用过新浪微博的短连接吧,就是t.cn后面一串不知道是什么的数,然后跳转到一个新页面去,具体什么是短连接请大家自行脑补,在这里,目前有很多提供短连接的地方,比如狼厂的短连接服务,还有提供很多短链接的在线服务,比如这个,能生成很多地方的短连接。 巴特,作为一个程序员,我们不止需要一个端链接服务,我需要自己实现一个短连接服务,因为一般的公共的短连接都有token要求,每天生成的链接也有限制,当你需要生成大量短连接的时候就比较麻烦了。 所以,我实现了一个短连接服务。 短连接的原理 很多人一定想的是短连接是通过一定的算法将长链接变成短连接...阅读全文

博文 2015-06-22 14:01:07 ygrx

实战讲解高并发和秒杀抢购系统设计

互联网特别是电商平台,阿里双11秒杀、还有12306春运抢票、以及平时各种节假日抢购活动等,都是典型的高并发场景。这类场景最大的特征就是活动周期短,瞬间流量大(高并发),大量的人短期涌入服务器抢购,但是数量有限,最终只有少数人能成功下单。这里,就来讲一讲对应该场景下需要考虑的技术实现。先从基本的概念的建立,再讲对应的实现部分。第一:高并发技术要做的事,一方面优化程序,让程序性能最优,单次请求时间能从50ms优化到25ms,那就可以在一秒钟内成功响应翻倍的请求了。另一方面就是增加服务器,用更大的集群来处理用户请求,设计好一个可靠且灵活扩充的分布式方案就更加重要了。第二:时间短火热的秒杀活动,真的是一秒钟以内就会把商品抢购一空,而大部分用户的感受是,提交订单的过程却要等待好几秒、甚至十几秒,更糟...阅读全文

博文 2018-09-21 21:34:39 Java架构技术分享

golang操作redis连接池

func newPool(server, password string) *redis.Pool { return &redis.Pool{ MaxIdle: 3, IdleTimeout: 240 * time.Second, Dial: func () (redis.Conn, error) { c, err := redis.Dial("tcp", server) if err != nil { return nil, err } if _, err := c.Do("AUTH", password); err != nil { c.Close() return nil, err } return c, err }, TestOnBorrow: func(c redis.Conn, ...阅读全文

博文 2014-10-04 19:27:36 程序员Jack

Beego Redis 的使用问题

Beego 使用 Redis 存储字符串,Get 返回的是 interface{} 类型,必须要做这样的转换,请问有更好的方式吗? ``` bm, error := cache.NewCache("redis", `{"conn":"127.0.0.1:6379","key":"collectionName","dbNum":"0","password":""}`) if error != nil { fmt.Println("redis error:", error) } bm.Put("test", "hello", time.Second*100) v := bm.Get("test") fmt.Println("value:", string(v.([]byte))...阅读全文

使用golang搭建新博客系统

原文链接:[https://ashan.org/archives/931](https://ashan.org/archives/931) 前一段时间想对博客系统进行一次大面积更新,因为原有Nodejs后台很多地方做的不好,无论从设计上还是编码结构上都没有达到我想要的效果。所以国庆节前就开始着手对新系统进行设计,经过几天的重构修改,前台部分第一版已经完成,后续还会继续优化。 ### 预计目标 我对我自己博客系统的构想一直没有过变化,而且就这个设想我还专门撰写过一篇名为[《我想要一个怎样的Blog系统》](http://www.ashan.org/archives/893)。我对这次系统更新做了如下几个优化点。 - 打开速度要更快 - 依然不需要花哨功能 - 路...阅读全文

golang入门之go语言简介

Go出生的背景:   Go最早并不是一个Google的正式项目,而是作为一个"20%"的项目出现的,直到2009年才以开源的方式面向大众,目前go team有稳定的发布周期,大约半年一个新的版本,最新的是1.8。   Go语言的出身可以说非常豪华,最早对go语言的讨论是由罗伯特·格瑞史莫、罗伯·派克和肯·汤普逊发起的,主要是为了解决c++中出现的问题而发起的项目。肯·汤普逊是c语言和unix的发明者,罗伯特·格瑞史莫参与设计了Java的HotSpot虚拟机和Chrome浏览器的JavaScript V8引擎,罗博·派克在大名鼎鼎的bell lab侵淫多年,参与了Plan9操作系统、C编译器以及多种语言编译器的设计和实现。 Go语言从2009年开源到现在吸引了很多开发者的注意,分别获得了200...阅读全文

博文 2017-06-10 00:00:02 yangbin1110

go-redis 发布/订阅

go-redis 发布/订阅 最近golang 的项目开始使用redis 对于redis 真的是接触少,而且是golang版本的 只能是看着文档一点一点的入手了 连接初始化 RedisClient = redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password set DB: 0, // use default DB }) 发布 //参数1 频道名 字符串类型 //参数2 发送的内容 他是个 interface{} 类型 因为我要和前端对接 所以data是我转的json字符 err := RedisClient.Publish("message", data).Err() if er...阅读全文

博文 2019-03-07 16:34:50 ChunShan

阿里P8架构师谈:高并发架构解决方案总结

一、关于高并发高并发是指在同一个时间点,有很多用户同时访问URL地址,比如:淘宝的双11、双12,就会产生高并发。又如贴吧的爆吧,就是恶意的高并发请求,也就是DDOS攻击。1 高并发会来带的后果服务端:导致站点服务器/DB服务器资源被占满崩溃,数据的存储和更新结果和理想的设计是不一样的,比如:出现重复的数据记录,多次添加了用户积分等。用户角度:网站打不开服务器雪崩:2 并发下的数据处理通过表设计,如:记录表添加唯一约束,数据处理逻辑使用事物防止并发下的数据错乱问题。通过服务端锁进程防止包并发下的数据错乱问题。这里主要讲述的是在并发请求下的数据逻辑处理的接口,如何保证数据的一致性和完整性,这里的并发可能是大量用户发起的,也可能攻击者通过并发工具发起的并发请求。例子1:通过表设计防止并发导致数据...阅读全文

博文 2018-10-14 16:01:06 Java007

消息队列gmq

`gmq`是基于`redis`提供的特性,使用`go`语言开发的一个简单易用的队列;支持延迟任务,异步任务,超时任务,优先级任务 ### 应用场景 - 延迟任务 - 延迟任务,例如用户下订单一直处于未支付状态,半个小时候自动关闭订单 - 异步任务 - 异步任务,一般用于耗时操作,例如群发邮件等批量操作 - 超时任务 - 规定时间内`(TTR)`没有执行完毕或程序被意外中断,则消息重新回到队列再次被消费,一般用于数据比较敏感,不容丢失的 - 优先级任务 - 当多个任务同时产生时,按照任务设定等级优先被消费,例如a,b两种类型的job,优秀消费a,然后再消费b ### gmq流程 ![流程图](https://github.com/w...阅读全文

开源项目 2019-07-10 09:46:59 wuzhc

招聘Golang开发工程师一枚

1. 至少一年golang的开发经验。 2. 至少两年互联网产品开发经验。 3. 熟练使用Linux/Mac开发环境,熟悉基于Git的团队合作开发模式。 4. 熟悉postgresql、mongodb和redis。 5. 统招本科以上学历。 加分项: 1. 有自己的开源项目或者作为核心成员参与过其他开源项目的开发 2. 熟悉php,python,nodejs等其他开发语言 3. 对产品设计和交互有一定的研究 4. fullstack潜质 欢迎各位将简历投递到hr@monokeros.c...阅读全文

[北京]创业企业招聘Golang开发工程师

创业企业(东华软件投资)招聘Golang开发工程师,具体如下: 职位 & 主要工作 : 使用Go语言开发智能家居云平台,主要涉及http长连接、高并发编程、基本Web服务器端编程(使用Revel框架) 要求: 熟悉并热爱开源领域;熟练使用Go语言,熟练使用gorouting和channel等Go核心工具,熟练使用Revel框架 熟悉各种主流数据库,mysql、sqlserver、oracle 熟悉redis 熟练使用docker 有java语言开发背景的优先 (要求3年以上java开发经验) 待遇面议 有意者联系 : QQ:229266520 Asla...阅读全文

主题 2015-04-22 07:46:01 amar

Golang Gin实践 连载十三 优化你的应用结构和实现Redis缓存

优化你的应用结构和实现Redis缓存 项目地址:https://github.com/EDDYCJY/go... 如果对你有所帮助,欢迎点个 Star ???? 前言 之前就在想,不少教程或示例的代码设计都是一步到位的(也没问题) 但实际操作的读者真的能够理解透彻为什么吗?左思右想,有了今天这一章的内容,我认为实际经历过一遍印象会更加深刻 规划 在本章节,将介绍以下功能的整理: 抽离、分层业务逻辑:减轻 routers/*.go 内的 api方法的逻辑(但本文暂不分层 repository,这块逻辑还不重) 增加容错性:对 gorm 的错误进行判断 Redis缓存:对获取数据类的接口增加缓存设置 减少重复冗余代码 问题在哪? 在规划阶段我们发现了一个问题,这是目前的伪代码: if ! Has...阅读全文

博文 2018-06-02 09:35:07 煎鱼

日常项目和 OA 管理系统 OPMS

OPMS管理系统是意思是PMS+OA,项目+办公管理。符合日常项目和OA管理,特别适合扁平化管理的微中小企业。 OPMS采用是Beego框架和Bootstrap前端框架构建立,适合不同平台,不同的终端,简单方便实用的原则。数据库采用Mysql,缓存采用Redis。在部署过程中,如果没有Redis,不影响使用。 本系统是免费开源的软件,部署很方便。 OPMS的由来: 公司之前用的项目管理软件是禅道PMS,功能是很强大,学习成本也大。 在实际的项目应用中,有许多功能点都用不到或者很少用,可能它的系统是面向不同行业项目管理吧。 结合实际的项目要求和人事的日常工作经验要求,于是OPMS管理系统诞生了! OPMS官网: [http://opms.milu365.cn/](http://...阅读全文

开源项目 2016-09-16 10:00:16 lock-upme

golang 定时器

代码文件timer.go: package main import ( "bytes" "fmt" "github.com/unknwon/goconfig" "os/exec" "time" ) var config *goconfig.ConfigFile func init() { path := "./config.ini" conf, err := goconfig.LoadConfigFile(path) if err != nil { fmt.Println(err) } config = conf } func main() { t := time.NewTicker(1 * time.Second) for { select { case <-t.C: run() } } ...阅读全文

博文 2014-10-04 19:27:26 chen yuwen

在golang中使用lua脚本

lua基础 注释: -- this is a comment 声明全局变量: x = 123 声明本地变量: local y = 456 方法声明: function hello_world() return "Hello World" end 迭代: for i = 1, 10 do print(i) end 条件: if x == 123 then print("x is the magic number") else print("I have no idea what x is") end 字符串连接: print("Hello" .. " World") 作为数组使用一个table — 数组的索引从1开始: data_types = {1.0, 123, "redis", true...阅读全文

博文 2019-04-13 14:34:42 zooeymoon

beego 安装入门

安装入门 beego虽然是一个简单的框架,但是其中用到了很多第三方的包,所以在你安装beego的过程中Go会自动安装其他关联的包。 当然第一步你需要安装Go,如何安装Go请参考我的书第一章 安装beego go get github.com/astaxie/beego 安装bee工具,这个工具可以用来快速的建立beego的应用 go get github.com/astaxie/bee 这样就完成了beego的安装,你就可以开始开发了,可以通过bee工具来创建beego项目 beego依赖的第三方包有如下: session模块:github.com/astaxie/beego/session session模块中支持redis引擎:github.com/garyburd/redigo/red...阅读全文

博文 2014-10-04 19:27:31 astaxie

Go实战--golang中使用redis(redigo和go-redis/redis)

go get github.com/alphazero/Go-Redis go get github.com/simonz05/godis go get github.com/garyburd/redigo go get github.com/gosexy/redis go get cgl.tideland.biz/redis 目前这五种 开源库redigo的使用 github地址: https://github.com/garyburd/redigo 文档地址: http://godoc.org/github.com/garyburd/redigo/redis 获取: go get github.com/garyburd/redigo/redis 连接redis package main ...阅读全文

博文 2017-11-28 07:03:11 mickelfeng

游戏服务器gonet-游戏服务器

gonet 游戏服务器架构,mmo架构,分布式snowflake64为整形uuid,ai行为树,配置data,游戏大部分都在内存运算,分布式缓存redis,增加db模块读取blob数据。 设计之初,建立在actor模式下的;rpc,以及消息驱动,rpc无需注册,支持通用数据(int,[]int,[3]int),map数据,以及struct数据,rpc性能测试如下;sql封装简单的orm(orm支持pb结构体做mysql blob,orm支持结构体做mysql json类型)具体看demo websocket模式下,要在net,websocket注视掉如下代码,在netgateserver里面注释回//websocket这段 代码除了mysql,protobuf,redis,...阅读全文

开源项目 2019-07-15 13:06:18 ylb

从ELK到EFK

作者: 曹林华本文为原创文章,转载请注明作者及出背景作为中国最大的在线教育站点,目前沪江日志服务的用户包含沪江网校,交易,金融,CCtalk(直播平台) 等多个部门的多个产品的日志搜索分析业务,每日产生的各类日志有好十几种,每天处理约10亿条(1TB)日志,热数据保留最近7天数据,冷数据永久保存。为什么做日志系统首先,什么是日志? 日志就是程序产生的,遵循一定格式(通常包含时间戳)的文本数据通常日志由服务器生成,输出到不同的文件中,一般会有系统日志、 应用日志、安全日志。这些日志分散地存储在不同的机器上。通常当系统发生故障时,工程师需要登录到各个服务器上,使用 grep / sed / awk 等 Linux 脚本工具去日志里查找故障原因。在没有日志系统的情况下,首先需要定位处理请求的服务器...阅读全文

博文 2017-10-18 02:04:33 曹林华

简单的订阅发布机制实现(Golang)

Redis和NSQ都有完善的订阅和发布实现,但参考它们的源码实现,做个实际例子,对两边的异同和这种机制会更有印象。 练习省掉复杂的,就实现简单的 订阅/取消订阅/发布信息 功能,足够了。 Server.go Server结构中的Dict用map保存了Channel的相关信息,而Channel结构中则用一个map保存了订阅这个Channel的Client. 这个例子与Redis中不太一样,Redis中的Dict用Channel的名字作为map的key,value则是其对应的Client列表。而Client中则保 存了其所有订阅的Channel信息。 package pubsub import ( "errors" "sync" ) type Client struct { Id int Ip ...阅读全文

博文 2015-06-17 20:23:35 xcltapestry

beego介绍

beego是一个类似tornado的Go应用框架,采用了RESTFul的方式来实现应用框架,是一个超轻量级的框架,主要有如下的特点: 支持MVC的方式,用户只需要关注逻辑,实现对应method的方法即可 支持websocket,通过自定义Handler实现集成sockjs等方式实现 支持自定义路由,支持各种方式的路由,正则、语意均支持,类似sinatra session集成,支持memory、file、redis、mysql等存储 表单处理自动化解析,用户可以很方便的获取数据 日志分级系统,用户可以很方便的调试和应用日志记录 自定义配置文件,支持ini格式的文本配置,可以方便的在系统中调参数 采用了Go内置的模板,集成实现了很多Web开发中常用的函数 执行过程如下所示: beego简单例子 ...阅读全文

博文 2014-10-04 19:26:41 astaxie

Go 实现的 Redis 集群客户端 redis-go-cluster

redis-go-cluster 是基于 Redigo 实现的 Golang Redis 客户端。redis-go-cluster 可以在本地缓存 slot 信息,并且当集群修改的时候会自动更新。此客户端管理每个节点连接池,使用 goroutine 来尽可能的并发执行,达到了高效,低延迟。 **redis-go-cluster 支持:** * Most commands of keys, strings, lists, sets, sorted sets, hashes. * MGET/MSET * Pipelining **不支持:** * Cluster commands * Pub/Sub * Transaction * Lua script 使用

阅读全文

开源项目 2015-12-06 16:00:00 chasex

GoLang Redis存储结构体方式对比

Redis 作为一个非关系数据库,以key-value 的方式存储数据,在后台开发时常被用于处理缓存。在golang 中的结构体的存储也是经常需要接触到,以下是几种结构体存储的方式的对比。 1.hash类型方式 func DoHashStore(conn redis.Conn) { //以hash类型保存 conn.Do("hmset",redis.Args{"struct1"}.AddFlat(testStruct)...) //获取缓存 value, _ := redis.Values(conn.Do("hgetall", "struct1")) //将values转成结构体 object := &TestStruct{} redis.ScanStruct(value, object) ...阅读全文

博文 2019-05-09 03:34:57 wp_nine

golang开发中 redis连接池的使用

作为一个phper,第一次听到连接池还有点蒙圈,转golang开发后连接池的概念会经常使用。 一、连接池是什么 连接池是什么?一个服务端资源的连接数量都是有限的,每次初始化时他建一定数量的连接,先把所有连接存起来,谁要用则从里面取,用完后放回去。如果超出连接池容量,要是排队等着或么直接丢弃。 比如我们做开发中常用的mysq,redis,php-fpm的配置 1,redis服务端设置 maxclients 最大连接数设置 2, mysql服务端设置 max_connections 最大连接数 3,PHP-FPM 服务端设置 max_children 最大子进程数 start_servers 起始进程数 我们golang开发时连接redis用到自己设计的连接池概念,想要达到的效果是什么? 1,最...阅读全文

博文 2020-01-13 21:32:47 小手25

阿里、华为、网易等大厂Java面经大集合

​文章有些长,希望你能耐心的看完,后面会有一些架构资料分享给大家的Cvte提前批阿里内推便利蜂内推小米内推金山wps内推多益网络拼多多学霸批搜狗校招涂鸦移动中国电信it研发中心中兴华为苏宁内推美团内推百度腾讯招商银行信用卡招银网络科技网易VivoCvte提前批一面(电话)自我介绍介绍你的项目加密解密了解么?几种算法,讲一下你了解的多线程了解么?什么是线程安全?说一个你最熟悉的设计模式讲一下你项目中用到了哪些设计模式Java的hashmap的原理Hashmap的线程安全性,什么是线程安全的?如何实现线程安全二面(视频)自我介绍介绍项目Mysql的数据库引擎,区别特点设计模式了解?讲一下最熟悉的写一个单例模式,答主写的是双检查锁单例,问了为什么用Volatile,synchronize移到方法最...阅读全文

博文 2018-10-10 14:34:38 Java007

golang 压测redis 消息队列

用 redis 的 list 数据结构作为轻量级的消息队列,对于小系统确实是小而美,可控能力强。当然与kafka 和 rabbitmq 相比它还有很多缺陷,在服务进行生产和消费的时候,还需要加上部分逻辑进行处理。自己写了点 golang 代码,压力测试 redis 列表的性能。机器配置:双核,4G测试数据:100w压力测试源码(github)生产者,生产 100 w 条数据,平均,每秒能写 13817 条数据。begin time: 2018-07-29 14:03:55.606end time: 2018-07-29 14:05:07.976Produce message: 1000000avg: 13817.860879118389 负载 代码片段 消费者,消费 100 w 条数据,平均...阅读全文

博文 2018-07-29 18:34:59 wenfh2020

Golang如何引用Github上的开源项目

for example: 以上图中地址为例,亲测好用,前提是配好go的环境变量,包括GOROOT和GOPATH。步骤如下: windows+R 打开cmd,输入go get github.com/vmihailenco/redis ,回车之后会自动下载项目到GOPATH中的src目录下。 下图为我的GOPATH路径: 命令行进入到当前目录,cd E:\gopath\src\github.com\vmihailenco \redis , 然后 go build 编译,go install 安装。 刷新一下IDE,我用的eclipse,需要clean一下project,就不会报错了...阅读全文

博文 2016-09-19 14:00:02 sinat_28545681

社招回顾

章节 社招初衷 社招准备 社招感想 福利彩蛋 1.社招初衷 1.1 自我检验 不得不说,这两年个人属于蛰伏期,从大学创业失败,到潜心学习积累,这其中的孤独、无望只有自己能体会的到。 这两年个人的积累主要包括Java并发编程、MySQL 学习、若干中间件相关的知识-包括Redis 缓存、Nginx接入层中间件。 面试过程中Java 并发编程、MySQL相关方面的理论与实操帮助了我很多。 是的,我面试的第一个目标就是检验自己积累的东西是否是业界所认可的。 1.2 检验-不打无准备之仗之真理 初入职场,我告诉自己,不要给自己设限,不设限的前提是要提前做好准备。 所以我给自己定了两年计划,要像海绵一样充分吸水。 1.3 公司发展前景 我的前东家经营上遇到了些问题,我真心祝愿它能够再站立起来。 2.社...阅读全文

博文 2018-09-21 19:35:35 markfork

分布式后台任务队列模拟(Golang)

最近研究了下gowoker,这东西代码少而精,Golang真是很适合实现这类东西。 我去掉参数配置,JSON,Redis这些东西,用goworker的方式做了个最简单的实现。 实现如下功能: 1. worker向JobServer注册可执行的功能 2. JobServer轮询,有job就执行,没有则继续轮询 3. client向JobServer提出任务请求,并传入参数 4. JobServer依请求丢给worker执行(可并发或串行执行) 5. JobServer继续轮询 我弄的这个代码很少,其中队列用数组代替,同时省掉了很多东西, 但保留了其goroutine与channel最基础的实现。 如果想看goworker的,可以参考下我这个,应当可以更快的弄明白goworker。 演示例子及运...阅读全文

博文 2015-06-17 20:03:48 xcltapestry

基于Redis的对象关系映射Redis ORM

# redis_orm Object Relational Mapping use redis as a relational database。 #### 产出背景 ```text 项目的快速迭代,不仅需要敏捷的开发,还需具备较高性能的和稳定性,单纯用关系型数据库有瓶颈,然后在关系型数据库基础上加分布式缓存或者进程内缓存有增加了开发和维护成本,刚好项目中在用Redis,就考虑基于Redis的Hash和SortedSet两个数据结构来设计类似关系型数据库的ORM。经过多个版本的迭代,现在已经实现了ORM的基本功能,在应用中发现维护和查看数据不太方便,又开发了[工作台](https://github.com/weikaishio/redis_orm_workbench)。 `...阅读全文

开源项目 2019-08-19 23:23:47 Tim Wang

分布式聊天服务器 Tim

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

redigo 包报EOF错误

我使用了redigo包的连接池方法来请求建好的redis库。但是在请求过程中经常会报 EOF的错误,这就导致rs(redis.Conn)关闭。并且数据也没有请求到。想请教一下有没有其他人也有类似的问题。这个EOF是什么导致的错误呢。 * 我的redis是用docker容器跑的。 * go版本 1.4.2 * 不管是连接池还是直接请求,都会常出现EOF错误 * 之前在写http的stream方式请求的数据的时候,也经常出现 unexpected EOF错误,也没有找到原...阅读全文

golang80行代码钉钉群机器人订阅百度新闻

1. 资料 1.1.第三方包 github.com/PuerkitoBio/goquery github.com/go-redis/redis beego框架定时任务包 1.2 接口 百度新闻:美剧关键字 钉钉群BOT文档 2. 初始化项目变量 package main import ( "fmt" "log" "github.com/PuerkitoBio/goquery" "github.com/go-redis/redis" "net/http" "bytes" "github.com/astaxie/beego/toolbox" ) var ( redisClient *redis.Client //redis 缓存 //钉钉群机器人webhook地址 dingdingURL = "...阅读全文

博文 2018-02-09 18:34:37 trytv

【滴滴北京】golang开发工程师

**岗位描述:** 1. 负责专车事业部车后市场相关产品的设计、开发工作。 2. 保证系统的稳定性,并不断提升性能。 **任职资格:** 1. 对高并发、多线程、缓存等技术和业务场景有实际操作经验; 2. Golang基础扎实,有1-2个以上的项目开发经验; 3. 熟悉Linux下的常用操作,熟悉MySQL、Redis、MangoDB等数据产品; 4. 强烈的责任心与主动性,对所负责工作有owner意识,并能自我驱动成长; **联系方式:** - QQ:5889189...阅读全文

使用 ReJSON 在 Redis 中保存 Go 结构体

![image](https://raw.githubusercontent.com/studygolang/gctt-images/master/rejson/1_w3hPEpsPFtHs36dJMUdl7w.jpeg) > 图像授权 https://Redislabs.com/blog/Redis-go-designed-improve-performance/ 大部分人可能对 Redis 都很熟悉了。对于外行人来说,Redis 是最广为人知并广泛应用的数据库/缓存产品,起码也是之一。 官方文档是这么描述 Redis 的: > Redis 是一个开源(BSD 许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持的数据结构有字符串(strings),散列(has...阅读全文

博文 2018-06-21 17:40:11 MoodWu

golang80行代码钉钉群机器人订阅百度新闻

## 1. 资料 ##### 1.1.第三方包 * [github.com/PuerkitoBio/goquery](https://godoc.org/github.com/PuerkitoBio/goquery) * [github.com/go-redis/redis](https://godoc.org/github.com/PuerkitoBio/goquery) * [beego框架定时任务包](https://beego.me/docs/module/toolbox.md#task) ##### 1.2 接口 * [百度新闻:美剧关键字](http://news.baidu.com/ns?cl=2&rn=20&tn=news&word=%E7%BE%8E%E5%89%A7) *...阅读全文

博文 2018-02-09 17:40:02 JJJJJJJerk

go中利用hmset替换hset来提高redis的存取效率及并发goroutine可能遇到的问题

go 中直接利用hset向redis存入数据效率较低,当要存入的数据已知时,可以利用hmset 来替换hset进行存储。 var args []interface{}{"myhash"} for key,value := range fvs { args = append(args, key, value) } _, err := conn.Do("HMSET", args...) 注:fvs为对应的key,value的map映射,将该映射关系存入到redis中名字为myhash的域中, args...表示args slice中的顺序的所有元素。 hmset存储速度相对hset已经很快,但是利用go中goroutine并发hmset能取得更好的存储效果吗?答案是否定的。 当利用多个(10个)...阅读全文

博文 2015-06-18 09:02:12 chenbaoke

Google Go 语言从入门到应用所需要的开源项目

Go 语言于 2009 年 11 月正式宣布推出,成为开放源代码项目,发展至今已经具有越来越广泛的影响力,今年更是在 TIOBE 编程语言排行榜中跻身 20 强。很多开发者也逐渐将目光投向这门语言,本文整理了部分比较好的学习和应用 Go 语言的开发项目,希望为没有接触过这门语言的开发者们提供一个学习和了解这门语言的途径。 关于 Go 语言: Go 是 Google 开发的一种编译型,并发型,并具有垃圾回收功能的编程语言。由于其构建简化了并发运行代码的工作,存在并行编程模式,因此这一语言也被设计用来解决多处理器的任务。Go语言是基于Inferno操作系统所开发的,并在Linux及Mac OS X平台上进行了实现,后追加 Windows 系统下的实现。 Go 语言起源 2007 年,并于 200...阅读全文

博文 2016-12-12 07:00:03 两味真火

为什么分布式一定要有Redis?

考虑到绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知。所以我斗胆以 Redis 为题材,对 Redis 常见问题做一个总结,希望能够弥补大家的知识盲点。本文围绕以下几点进行阐述:为什么使用Redis使用Redis 有什么缺点单线程的Redis 为什么这么快Redis 的数据类型,以及每种数据类型的使用场景Redis 的过期策略以及内存淘汰机制Redis 和数据库双写一致性问题如何应对缓存穿透和缓存雪崩问题如何解决Redis 的并发竞争 Key 问题为什么使用 Redis我觉得在项目中使用 Redis,主要是从两个角度去考虑:性能和并发。当然,Redis 还具备可以做分布式锁等其他功能,...阅读全文

博文 2018-09-25 17:30:29 Javatiankenglu

golang定时任务踩坑及终极解决方案

前言 国庆闲来无事,把之前开源的一个定时任务调度中心重构了一下。 期间遇到了一些crontab的坑 CronTab 我们来看一下crontab的时间格式, Spec参考beego toolbox模块下的crontab的组成格式: //前6个字段分别表示: // 秒钟:0-59 // 分钟:0-59 // 小时:1-23 // 日期:1-31 // 月份:1-12 // 星期:0-6(0 表示周日) //还可以用一些特殊符号: // *: 表示任何时刻 // ,: 表示分割,如第三段里:2,4,表示 2 点和 4 点执行 // -:表示一个段,如第三端里: 1-5,就表示 1 到 5 点 // /n : 表示每个n的单位执行一次,如第三段里,*/1, 就表示每隔 1 个小时执行一次命令。也可以...阅读全文

博文 2019-10-07 22:04:37 shenping1916

Cloud Foundry平台中国唯一云供应商,阿里云持续链接Cloud Foundry/Kubernetes生态

摘要: 日前,在Cloud Foundry Summit 2018大会上,基金会执行董事Abby Kearns宣布,阿里云成为Cloud Foundry平台中国区唯一公共云基础设施提供商:“中国企业将在Cloud Foundry和阿里云共同作用下得到更加优质的体验”。 日前,在Cloud Foundry Summit 2018大会上,基金会执行董事Abby Kearns宣布,阿里云成为Cloud Foundry平台中国区唯一公共云基础设施提供商:“中国企业将在Cloud Foundry和阿里云共同作用下得到更加优质的体验”。 ![5e61c93312a6ddda04539c8f17d0e196889e9e7a.png](https://static.studygolang.com...阅读全文

运维监控系统之Open-Falcon

运维监控系统之Open-Falcon 一、Open-Falcon介绍 open-falcon是一款用golang和python写的监控系统,由小米启动这个项目。 1、监控系统,可以从运营级别(基本配置即可),以及应用级别(二次开发,通过端口进行日志上报),对服务器、操作系统、中间件、应用进行全面的监控,及报警,对我们的系统正常运行的作用非常重要。 2、基础监控 CPU、Load、内存、磁盘、IO、网络相关、内核参数、ss 统计输出、端口采集、核心服务的进程存活信息采集、关键业务进程资源消耗、NTP offset采集、DNS解析采集,这些指标,都是open-falcon的agent组件直接支持的。 Linux运维基础采集项:http://book.open-falcon.org/zh/faq/...阅读全文

博文 2018-10-25 14:34:46 格子_时光