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

golang中time比较的时区问题

问题 最近发现程序中有一个时间代码比较老是不对 at, err := time.Parse("2006-01-02 15:04:05", authTime) if err != nil { return } nt := time.Now() fmt.Println(nt, at) if nt.After(at) { return } 打印nt和at后发现at明明在nt之前,但是nt.After返回了false. 原因 fmt.Println(nt.Unix(), at.Unix()) 打印nt和at的Unix时间戳后发现,at时间增加了8个小时.查看time.Parse文档后发现,这里解析的是UTC时间,与中国时间相差8个小时. 解决 使用time.ParseInLocation即可解决问题...阅读全文

博文 2018-10-23 12:34:39 pinecone

金融安全资讯精选 2017年第四期:全球安全支出走高,外国银行再遭黑客袭击

摘要: Gartner:全球安全支出2017年可达864亿美元;匈牙利三大国有银行连遭黑客网络钓鱼攻击;开源CMS Drupal 8发布更新修复多处高危漏洞补丁;IDC云安全评估: 阿里云为最重视安全建设的云服务提供商 3d4fd1956f53474cc9939731e71719b550aad415 【金融安全动态】 Gartner:全球安全支出2017年可达864亿美元。点击查看原文 概要:Gartner认为全球安全支出增加有三个原因数据泄露事件、勒索攻击加剧、企业内部对应用程序安全需求增强。Gartner也预测2018年的支出预计将达930亿美元,安全服务将继续成为增长最快的部门,特别是IT外包,咨询和实施...阅读全文

关于Go Module的争吵

即将发布的Go 1.11将加入对go mod的支持,解决了go一直存在的依赖管理的短板。不过这篇文章并不是要介绍go module本身,而是打算说一下go团队和社区之间的冲突——你可以从中看到go team的做事风格,也可以当做是单纯的八卦。先说一下背景。Go作为Google内部孵化的项目,其对的设计非常符合Google内部的使用场景:所有的源代码都在一个巨大的repo,依赖就是VCS里面的路径,构建的时候全部从最新源代码编译,最终只产出一个单一的可执行文件。然而并不是所有的公司都是像Google这样使用Go,Google之外的使用者们需要更好的依赖管理,主要有:依赖版本的控制,以不受依赖模块代码修改的影响,产生稳定的可预测的构建结果稳定的依赖路径,以在项目vcs地址改变或者fork vcs...阅读全文

双十一too many open files修复

前置 原来一直没有遇到过高并发的场景, 这一次双十一说实话挺忐忑的,心里慌得一批. 架构的话大致是用supervisor来启动golang的服务,接着用nginx做负载均衡 这个项目用的是go的iris框架,主要是一个淘宝转链的接口,请求原来一天差不多300万的请求量,qps差不多就是150左右. 说实话原来没怎么压测过哈哈哈,觉得业务简单,感觉这个流量下来对go完全是没压力啊. 所以双十一的准备是加了台服务器. 谁知道10号那天8点多开始暴增.. 整天的数据差不多是850w,接近原来的3倍。 11点多一个小时的量接近100w. 请求日志过多 最刚开始没抗住的竟然是数据库。 这里将请求日志全部打到了数据库存下来了。 请求就像龙卷风, 一下子就把数据库的磁盘占满了(这个也真的是想不到),解决方...阅读全文

Golang-进程无故消失?

导致进程消失原因:64位操作系统中,写一个溢出指针到内存的非指针字符(a non-pointer word of memory),导致GC的时,不能看到该溢出块,所以导致GC过早回收该块,然后就导致崩溃(目前在NaCl/amd64p32已发现该问题)。 Let‘s Go! 1.解决方案 本文提供3钟方案可选: 升级Golang编译版本 1.5->1.8 (必须) 增加进程监控 增加supervior管理进程 2.环境 Golang version:1.5 Linux version:Linux version 2.6.32-279.el6.x86_64 (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) Os version:CentO...阅读全文

博文 2018-09-30 10:34:44 joe_chou

Golang 中 url.Values.Encode() 引发的问题

缘起是一个http签名方法,客户端对 http 的参数签名,然后服务器验证签名。然后突然测试出当提交的内容中含有空格时,服务器就验签失败。 查询了客户端签名的过程数据,然后和服务器的验签步骤查看了下,居然是客户端在签名前数据中的空格被格式化为了 "%20", 而 golang 服务器是用 url.Values.Encode() 方法导致空格变成了 "+" 号。 问题就是这儿了, 空格无论是哪种 escape, 似乎都有标准可依。两个标准,难分对错。而且golang 还提供了两种 escape 标准实现方法: PathEscape: 空格会转为 %20 QueryEscape: 空格会转为 + 而 url.Values.Encode() 内部使用的就是 QueryEscape() 方法,所以最...阅读全文

博文 2020-05-16 21:33:08 圣斗士皮皮

跳槽

从今天开始,决定要写些日记。当然只是记录些心路历程而已,于你未必能有什么价值。 最近在跳槽,仍是软件开发方向。 之前已经在外包公司待了两年半,说长不长,说短也绝对不短了。诚然外包还是外行入门的不二选择,但入门之后,再想进一步求发展,就不是外包所擅长的了。首先外包员工权限是被限制的,核心文档看不了,生产环境也碰不到;其次外包公司门槛和上限都低,但凡资深一点都另谋高就了;最后,只有非核心的业务,甲方才会放心地交给外包,所以外包的天职就是处理非核心业务,说穿了大部分工作的含金量没有那么高。 而为什么选在这个时间点走,现在看来也是有待商榷的。 第一个错误是蜜汁自信,在外包公司做了一年多的一面面试官,感觉大部分的人都好弱,想着自己出去一个打五个也不成问题。其实更应该看到来面外包岗的,大部分人都是去不了...阅读全文

博文 2019-08-03 10:32:39 项峥

2019-08-07

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。mongodb特点它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:*面向集合存储,易存储对象类型的数据。模式自由。*支持动态查询。*支持完全索引,包含内部对象。*支持查询。*支持复制和故障恢复。*使用高效的...阅读全文

如何成为一名大数据工程师?成都大数据培训

数据工程师都做什么?数据工程师负责创建和维护分析基础架构,该基础架构几乎可以支持数据世界中的所有其他功能。他们负责大数据架构的开发、构建、维护和测试,例如数据库和大数据处理系统。大数据工程师还负责创建用于建模,挖掘,获取和验证数据集合等流程。因此,数据工程师需要掌握通用脚本语言和工具,利用和改进数据分析系统,不断提高数据数量和质量。 数据工程师与数据科学家有何区别虽然在技能和角色方面存在一定程度的重叠,但这两个职位正日益分化为不同的角色。数据科学家更关注与数据基础设施的互动,而不是去创建和维护数据基础设施。通常负责进行市场和业务运营研究,以确定趋势和关系,数据科学家用各种复杂的机器和方法与数据进行交互并对其采取行动。数据科学家通常精通机器学习和高级数据建模,因为他们希望借助高级数学模型和算法...阅读全文

Go 语言中的包是怎么工作的

自从我开始用 Go 写代码以来,如何组织好代码并用好 package 关键字对我来说一直是个迷样的难题。package 关键字类似于 C# 中的命名空间,但是它的约定却是将 package 名字与目录结构绑定在一起。 Go 语言有一个网页试图解释如何编写 Go 代码。 http://golang.org/doc/code.html 当我开始用 Go 编程时,这是我最开始读的资料之一。可能因为之前一直在 Visual Studio 中工作,代码被解决方案和项目打包的很好,这个文档中的内容对当时的我来说,完全没法读懂。基于文件系统的目录来工作曾让我认为这是个疯狂的想法。但现在我喜欢上这种简单的方式了,不过可能需要花上一段时间你才会发觉这个方案的合理之处。 “如何编写 Go 代码”从工作空间的概念...阅读全文

博文 2018-06-23 14:45:03 MoodWu

这么多监控组件,总有一款适合你

更多文章,请移步微信公众号《小姐姐味道》 mp原文 https://mp.weixin.qq.com/s?__biz=MzA4MTc4NTUxNQ==&mid=2650518678&idx=1&sn=8c8c9c40620b649cfb673ecef70a23f4&chksm=8780b352b0f73a44455f99f93db67ec024a5f0c6ada17e29cb35f6f12d628148f9e0d74d91b3&token=1441710335&lang=zh_CN#rd 监控是分布式系统的必备组件,能够起到提前预警、问题排查、评估决策等功效,乃行走江湖、居家必备之良品。 监控系统概要 功能划分 一个宿主机cpu的报警叫做监控;一个业务日志的报错叫做监控;一个APM条件的触发...阅读全文

博文 2019-07-09 14:33:09 小姐姐味道

leetcode刷题记录Array篇(16~3 Sum closest)

题目:Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exactly one solution. 翻译:给定n个整数的数组S,在S中找到三个整数,使得和最接近一个给定的数目target。 返回三个整数的总和。 你可以假设每个输入都只有一个解决方案。 思路:这题的思路和15题3sum差不多,只是结果变成最接近某个数,而不是等于0,并且只需要返回最小的结果,斌不需...阅读全文

博文 2017-04-21 02:45:44 L千年老妖

Go语言学习

一 应用场景描述 为什么想着要学习一下Go语言?现在越来越多有名的开源项目都是使用Go语言开发的,所以了解一下Go语言的基础知识还是很有必要的。平时的工作中主要使用Shell和Python来编写运维脚本。之前已经看过无数次关于Go语言的介绍和分享帖子了。对于Go语言这种性能仅次于C和C++的后起之秀,同时又比Python这种胶水语言性能提高不少。如果以后工作中如果有需要处理性能方面的问题就可以使用Go来编写。二 使用Go语言编写的项目 目前比较出名的使用Go语言编写的项目有: Docker 开源容器 Open Falcon 小米的开源监控工具 Codis 豌豆荚的Redis解决方案,Codis的好几个组件都是用Go语言编写的 Ected 和ZooKeeper同类工具 Kubernetes 谷...阅读全文

分布式缓存分布式强一致性缓存version_cache

# version_cache version_cache是一个分布式一致性缓存解决方案。 原理:job 将数据打包成版本到redis,实例将存在redis的版本load到本地内存并计算最新版本的生效时间,使所有实例的缓存在同一时间生效来达到所有实例数据的一致。 实用场景:数据量少、非及时生效数据、高并发强一致的场景。如:配置服务,门店服务等 优点: 1. 轻松实现水平扩展,实现千万并发的服务不是梦 2. 数据强一至性,不论启动多少实例,同一时间的数据绝对是一致的(服务器时间一致情况下) 3. 使用简单,实现数据生成接口后就可以像使用缓存一样方便,轻松实现高性能服务 缺点: 1. 数据按版本生效,变更的数据会延迟生效(原则上数据量越小处理越快) 2. 不适...阅读全文

高可用Redis服务架构分析与搭建

基于内存的Redis应该是目前各种Web开发业务中最为常用的Key-Value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据的查询(相比较MySQL而言,速度有数量级的提升),做简单的消息队列(LPUSH和BRPOP)、订阅发布(PUB/SUB)系统等等。规模比较大的互联网公司,一般都会有专门的团队,将Redis存储以基础服务的形式提供给各个业务调用。 不过任何一个基础服务的提供方,都会被调用方问起的一个问题是:你的服务是否具有高可用性?最好不要因为你的服务经常出问题,导致我这边的业务跟着遭殃。最近我所在的项目中也自己搭了一套小型的“高可用”Redis服务,在此做一下自己的总结和思考。 首先我们要定义一下对于Redis服务来说怎样才算是高可用,即在各种出现...阅读全文

分布式事务中间件Seata的设计原理

微信公众号「后端进阶」,专注后端技术分享:Java、Golang、WEB框架、分布式中间件、服务治理等等。 在微服务架构体系下,我们可以按照业务模块分层设计,单独部署,减轻了服务部署压力,也解耦了业务的耦合,避免了应用逐渐变成一个庞然怪物,从而可以轻松扩展,在某些服务出现故障时也不会影响其它服务的正常运行。总之,微服务在业务的高速发展中带给我们越来越多的优势,但是微服务并不是十全十美,因此不能盲目过度滥用,它有很多不足,而且会给系统带来一定的复杂度,其中伴随而来的分布式事务问题,是微服务架构体系下必然需要处理的一个痛点,也是业界一直关注的一个领域,因此也出现了诸如 CAP 和 BASE 等理论。 在今年年初,阿里开源了一个分布式事务中间件,起初起名为 Fescar,后改名为 Seata,在它...阅读全文

博文 2019-07-11 01:32:40 公众号_后端进阶

dep - Solving failure: No versions/No more versions of xxx

前言 如果你正在使用Golang的dep工具,我相信你可能会遇到这个问题 dep 版本 $ dep version dep: version : devel build date : git hash : go version : go1.10 go compiler : gc platform : linux/amd64 当前Latest release为v0.4.1 问题 使用dep包管理工具时,无论执行dep init -v或是dep ensure 总是报版本错误(no more versions、no versions)的问题 $ dep ensure Solving failure: No versions of xxxx met constraints: master: unab...阅读全文

大规模的可观察性:构建Uber的预警生态系统

Uber的软件架构包含数千种微服务,这些微服务使团队能够快速迭代并支持我们公司的全球增长。这些微服务支持各种解决方案,例如移动应用程序,内部和基础结构服务以及产品,以及会影响城市和郊区的这些产品的复杂配置。 为了维持我们的增长和架构,Uber的Observability团队建立了一个强大的,可扩展的指标和警报管道,负责在服务出现问题时立即检测,缓解并通知工程师。具体来说,我们构建了两个数据中心警报系统,分别称为uMonitor和Neris,它们流入同一通知和警报管道。 uMonitor是我们基于指标的警报系统,它针对指标数据库M3运行检查,而Neris主要在主机级基础架构中寻找警报。 Neris和uMonitor都利用公共管道发送通知和重复数据删除。我们将深入研究这些系统,并讨论如何采取更多...阅读全文

区块链应用于物联网:一种应用于物联网的,可扩展访问管理的体系结构

Title:区块链应用于物联网:一种应用于物联网的,可扩展访问管理的体系结构 Abstract:物联网正在从它的婴儿期走出去,进入完全的成熟期,并且它正在使自己成为未来互联网的一员。对于部署在全球数十亿的设备的管理能力,是其中一个技术挑战。虽然物联网中已经出现访问管理技术,但是这些技术都基于集中式框架,这种框架引进了一些新的全球管理设备的技术限制。在这篇论文中,我们提出了在物联网中对于仲裁角色(仲裁规则?)和权限的一个体系结构(新框架)。这个新体系结构是一个针对物联网的完全分布式的访问控制系统,它基于区块链技术。这个体系结构被一个概念实现的验证所支持(?)并且在现实的物联网场景中被评估。结果显示,区块链技术可以在特定的可扩展物联网场景中被用作访问管理技术。 Index Terms:访问控制,...阅读全文

博文 2019-02-08 18:47:28 1500250103

高可用 Redis 服务架构分析与搭建

基于内存的Redis应该是目前各种web开发业务中最为常用的key-value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据的查询(相比较mysql而言,速度有数量级的提升),做简单的消息队列(LPUSH和BRPOP)、订阅发布(PUB/SUB)系统等等。规模比较大的互联网公司,一般都会有专门的团队,将Redis存储以基础服务的形式提供给各个业务调用。不过任何一个基础服务的提供方,都会被调用方问起的一个问题是:你的服务是否具有高可用性?最好不要因为你的服务经常出问题,导致我这边的业务跟着遭殃。最近我所在的项目中也自己搭了一套小型的“高可用”Redis服务,在此做一下自己的总结和思考。首先我们要定义一下对于Redis服务来说怎样才算是高可用,即在各种出现异常...阅读全文

博文 2018-11-29 00:34:46 java成功之路

golang 面向对象编程

概述 Golang语言的面向对象与c++,py等语言有所不同,是由于Golang不支持继承;与上述支持聚合和继承的面向对象的语言不同,Golang只支持聚合(也叫做组合)和嵌入。聚合和嵌入的区别: type ColoredPoint struct { color.Color //匿名字段(嵌入) x, y int //具名字段(聚合) } warning:(point := ColoredPoint{}) 字段访问: point.x , point.y, point.Color [当访问来自于其他pkg的类型字段时候,只用到了其名字的最后一部分] 在传统面向对象的编程中,“类(class)", "对象(object)", "实例(instance)"被定义了很清晰。在Golang完全没有这些...阅读全文

博文 2018-03-09 14:30:02 chris-cp

hole

在其他地方想要访问家里的 [raspberry pi](http://www.oschina.net/p/raspberrypi), 通常是要在路由器上设置端口转发,然后绑定个动态域名。万一这个路由器不是自己的,自己没有任何权限,这样子旧束手无策了。 不过也是有解决方案的,用 ssh 的端口转发 ssh -CfNgR remote-port:localhost:local-port user@remote。 hole 是另一种解决方案,通过 hole 你可以把 raspberry pi(其他机器也是可以的) 的任何端口转发到公网服务器上面去,这样子你就可以通过访问公网的 服务器来访问家里的服务了。

阅读全文

golang升级后的原项目包引入报错问题

问题1.最近有几个小兄弟问我为什么升级golang后版本后,原来的包引入就会出现问题,明明都有下载,就是引入不进去。 解答: 升级后,由于golang是覆盖形式的,他会自动去除旧版本,升级新版本。这时候,他会默认给你加一个golangd的环境变量,本来是自己配置好的,如果这里的工作环境变了,包引入肯定会报错了。 解决办法: 直接删除他默认添加的环境变量即...阅读全文

博文 2020-04-10 23:32:48 哆啦在这A梦在哪

笨办法学golang(一)

Golang简介 Go语言(或Golang)是 Google 在 2007 年开发的一种开源编程语言,于 2009 年 11 月 10 日向全球公布。Go 是非常年轻的一门语言,它的主要目标是“兼具 Python 等动态语言的开发速度和 C/C++等编译型语言的性能与安全性”。 经过这几年的发展,Go语言的需求逐渐升高,目前比较火的容器和Kubernetes都是用Go语言开发完成的。下图我是随便在招聘网站搜索得到的,我们也可以看到Go语言的就业范围以及薪资也是比较优秀的。 image-20190113201904955 可见国内的很多互联网公司已经开始使用Golang来开发,例如知乎也使用Golang重构核心业务,头条使用Golang和Python开发完成的。学习Golang,刻不容缓! 这...阅读全文

博文 2019-02-17 17:34:45 Morgansays

visual studio code golang配置

因为墙的问题,碰到golang.org/x包无法获得的解决方案: git clone https://github.com/golang/net.git %GOPATH%/src/github.com/golang/net git clone https://github.com/golang/sys.git %GOPATH%/src/github.com/golang/sys git clone https://github.com/golang/tools.git %GOPATH%/src/github.com/golang/tools ln -s %GOPATH%/src/github.com/golang/ %GOPATH%/src/golang.org/x go get -v so...阅读全文

博文 2017-06-22 04:07:59 平凡啊菜

搭建高可用的Redis服务,需要注意这些方面!

基于内存的Redis应该是目前各种web开发业务中最为常用的key-value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据的查询(相比较mysql而言,速度有数量级的提升),做简单的消息队列(LPUSH和BRPOP)、订阅发布(PUB/SUB)系统等等。规模比较大的互联网公司,一般都会有专门的团队,将Redis存储以基础服务的形式提供给各个业务调用。不过任何一个基础服务的提供方,都会被调用方问起的一个问题是:你的服务是否具有高可用性?最好不要因为你的服务经常出问题,导致我这边的业务跟着遭殃。最近在项目中也搭了一套小型的“高可用”Redis服务,在此做一下自己的总结和思考。首先要定义一下对于Redis服务来说怎样才算是高可用,即在各种出现异常的情况下,依然...阅读全文

博文 2018-07-25 17:35:08 Java填坑之路

go trace 用来跟踪 goroutines运行情况,跟pprof配合使用,可以起到事半功倍的效果。但是,go trace 的view trace 在chrome下一片空白。

> go trace 用来跟踪 goroutines运行情况,跟pprof配合使用,可以起到事半功倍的效果。但是,go trace 的view trace 在chrome下一片空白。 原因是因为谷歌在某一版本的chrome中禁用了本地[API](crbug.com/1036492.) 解决办法: 1. 注册一个chrome token https://developers.chrome.com/origintrials/#/register_trial/2431943798780067841 资料随便填写,记得最后一定要 feedback。 2. 修改 go trace 代码 `src/cmd/trace/trace.go` 在head中添加一行 阅读全文

博文 2020-04-28 16:26:00 yixiao

如何使用ARMS配置tengine的日志监控

摘要: 业务实时监控服务 ARMS 很好的提供了这么一个入口,为公司提供了一个实时查询Tengine运行情况的解决方案。在未来,ARMS将很好的和ODPS为公司监控形成互补方案,tengine日志日后可同时投递到ARMS和MaxCompute中: ARMS响应第一时间的多维度报警; MaxCompute来做深层次分析,例如接口的请求数、响应时长等,并有针对性地进行调优。 来自 深圳市小亿网络有限公司 王昕岩 最近公司通过业务实时监控服务 ARMS 成功搭建了基于tengine的日志监控系统。这里简单分享一下使用ARMS用于监控tengine日志的经验。 公司发展至今,现阶段所有接口都使用阿里的tengine作为web容器,类似nginx,在日志中也记录了包括host, ur...阅读全文

提升研发效率 保障数据安全——阿里云宣布数据管理DMS企业版正式商业化

摘要: 阿里云数据管理DMS企业版,作为数据管理产品大家族里的新成员,于2017年11月开启公测,今年1月底正式发布商业化版本。 作为业界领先的面向企业的数据库DevOps解决方案,DMS企业版旨在帮助企业安全、高效的使用数据库,提升研发与DBA运维的协作效率,为企业核心数据提供更安全的访问管控和操作记录查询审计。 **点此查看原文: http://click.aliyun.com/m/41268/** 阿里云数据管理DMS企业版,作为数据管理产品大家族里的新成员,于2017年11月开启公测,今年1月底正式发布商业化版本。 ![图片描述](http://img.blog.csdn.net/20180130104827243?watermark/2/text/aHR0cDov...阅读全文

历程剖析: 阿里云自研HTAP数据库的技术发展之路

摘要:8月24日,阿里云数据库技术峰会到来,本次技术峰会邀请到了阿里集团和阿里云数据库老司机们,为大家分享了一线数据库实践经验和技术干货。阿里云高级数据库技术专家队皓庭分享了高度兼容MySQL,并且能免去传统数仓ETL过程实现数据分析,同时支持高并发、大吞吐量的在线事务处理的PB级数据存储数据库是如何实现的,帮助大家了解了同时支持海量数据在线事务(OLTP)和在线分析(OLAP)的HTAP关系型数据库是如何打造出来的。 本文将介绍HybridDB for MySQL的定位和现状,以及其技术演进路线和尚待解决的问题。 一、产品现状 ecd041e5a2f378b663f65e9ea906e58e2fb04852 HybridDB for MySQL在RDS MySQL的基...阅读全文

go反射之后接口断言问题

这个问题困扰了我一晚上,但是最终还是被我试出来了。 问题场景: 1.我通过反射获取一个指针的value v := reflect.ValueOf(ptr).Elem() 这个指针指向了一个结构体,因为是指针所有我用了Elem()函数获取了指向的值。 2.因为ptr指针指向的结构体实现了一个接口,所以我用接口断言方法来调用接口的函数。 if _,ok := v.Interface().(XXX);ok{ ... } XXX是我实现的接口,看起来一切都没问题,但是问题来了。 //我用一个接口接收ptr的值 var i interface{} i = ptr if _,ok := i.(XXX);ok{ //ok为true ... } 如上所示,我用反射之前,接口断言没问题。但是v.Interfa...阅读全文

博文 2016-10-03 03:00:02 i冬瓜

高可用Redis服务架构分析与搭建

基于内存的Redis应该是目前各种web开发业务中最为常用的key-value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据的查询(相比较mysql而言,速度有数量级的提升),做简单的消息队列(LPUSH和BRPOP)、订阅发布(PUB/SUB)系统等等。规模比较大的互联网公司,一般都会有专门的团队,将Redis存储以基础服务的形式提供给各个业务调用。 不过任何一个基础服务的提供方,都会被调用方问起的一个问题是:你的服务是否具有高可用性?最好不要因为你的服务经常出问题,导致我这边的业务跟着遭殃。最近我所在的项目中也自己搭了一套小型的“高可用”Redis服务,在此做一下自己的总结和思考。 首先我们要定义一下对于Redis服务来说怎样才算是高可用,即在各种出现...阅读全文

博文 2019-04-15 22:34:43 java架构进阶

2019-11-03 golnag编译缺少*.h文件

因 使用了cgo调用C/C++库 解决方案 安装本地的GCC编译环境 windows 安装 mingw64 mingw-w64下载 mingw安装 将migngw64 的 bin 目录放到 环境目录 path 中。 编译时前: 将dll文件放到path配置的路径下 .h 文件放到 【mignw64安装目录】/x86_64_w64-mingw32/include 目录下 .lib 和 .a 文件放到 【mignw64安装目录】/x86_64_w64-mingw32/lib 目录下 Linux 待测。。。 PS: golang可以交叉编译,可以跳过在linux上编译...阅读全文

博文 2019-11-03 12:33:12 aside section._1OhGeD

golang安装ZMQ报错 macro: AC_LIBTOOL_WIN32_DLL

[root@VM_171_105_centos zeromq4-1-4.1.6]# ./autogen.sh autoreconf: Entering directory `.' autoreconf: configure.ac: not using Gettext autoreconf: running: aclocal --force -I config autoreconf: configure.ac: tracing autoreconf: configure.ac: not using Libtool autoreconf: running: /usr/bin/autoconf --include=config --force configure.ac:62: error: pos...阅读全文

博文 2018-05-31 18:33:04 p至尊宝

高可用Redis服务架构分析与搭建

基于内存的Redis应该是目前各种web开发业务中最为常用的key-value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据的查询(相比较mysql而言,速度有数量级的提升),做简单的消息队列(LPUSH和BRPOP)、订阅发布(PUB/SUB)系统等等。规模比较大的互联网公司,一般都会有专门的团队,将Redis存储以基础服务的形式提供给各个业务调用。不过任何一个基础服务的提供方,都会被调用方问起的一个问题是:你的服务是否具有高可用性?最好不要因为你的服务经常出问题,导致我这边的业务跟着遭殃。最近我所在的项目中也自己搭了一套小型的“高可用”Redis服务,在此做一下自己的总结和思考。首先我们要定义一下对于Redis服务来说怎样才算是高可用,即在各种出现异常...阅读全文

博文 2019-01-04 18:34:45 JAVA高级架构开发

AWS 多区域键值存储解决方案 Biscuit

Biscuit 用于AWS基础设施建设时多区域键值对存储。 特性: * 提供一个简单  key/value CLI 用于安全存储。 * 秘钥隐藏在源代码中。 *  跨区域管理KMS密钥。 * 有利于跨区域管理AWS IAM Policies, KMS Policies 和 KMS Grants。 * 可采用AES-GCM-256 或者 Secretbox (NaCL) 进行本地编码。 * 离线模式:使用“测试”键管理器,你可以在测试环境中使用Biscuit,无需新增额外代码,并且没有不依赖网络。 安装:

go get -v github.com/dcoker...阅读全文

Go 学习进程第一波

之前从同事口中了解了go语言,一直没有机会接触。之前了解过python,但是由于长时间没用,所以荒废了。现在准备着手学习go语言,不为精通,只为在遇到某些问题的时候能够有一套解决方案。 目前自己的技术栈: java(主) android(2年) nodejs(2年) php(已废) 前端框架,主easyui,extjs 移动端开发(sencha touch) 因为最近工作太忙了,几乎全部时间都在处理公司的问题,有点对不起自己,急需学习一些新的东西来充实。选择GO, go go go..... 今天主要是了解一下go语言的基本知识,包括语法和编辑器,熟悉并且运行成功“Hello World!”。之前用过sublime,所以决定使用sublime 3 来作为GO的开发工具。 软件下载:https...阅读全文

博文 2016-10-18 05:00:01 zyy258963

笨办法学golang(二)

这是Go语言学习笔记的第二篇文章。 Go语言学习笔记参考书籍「Go语言编程」、Go官方标准库 前文提要 上篇文章中留了个练习,查询一下Go语言中fmt包下面Print,Printf,Println三个函数的使用。 //Print采用默认格式将其参数格式化并写入标准输出。如果两个相邻的参数不只是字符串,则会在输出之间添加空格 func Print(a ...interface{}) (n int, err error) //Printf根据format参数生成格式化字符串并写入标准输出 func Printf(format string, a...interface{}) (n int, err error) //Println采用默认格式化将其参数格式化并写入标准输出,在相邻参数的输出之间添...阅读全文

博文 2019-02-17 17:34:45 Morgansays

新梦想干货——那些关于软件工程的“宗教”辩论

引言:开发者的世界里总是充斥着各种各样的争论,从编程语言、框架甚至到编辑器、Windows/iOS系统,都可以成为争得面红耳赤的“宗教战争”。本文作者针对软件开发行业的辩论进行了深入研究,探讨了这些辩论背后的本质,解释了他认为好的技术辩论应该是怎样的。“Python的速度不行。”“都9102年了,还有人不用Java虚拟机(Scala、Clojure)构建Web App吗?”“Mong是最好的数据库;SQL很差劲,SQL数据库扩展性不行。任何现代工程师都必须熟悉Mongo。”“Golang糟透了(因为没有泛型);谁用谁白痴。”在我刚刚成为软件工程师那会,最令我震惊的就是,同行们居然用“宗教战争”这样的字眼来形容工程层面的争议。有这么严重吗?干嘛那么大火气?带着好奇心,我希望弄清为什么工程技术辩...阅读全文

博文 2019-10-29 21:32:59 aside section._1OhGeD

求大神帮忙解决问题

取文章函数: ![1513857512(1).png](https://static.studygolang.com/171221/6db4e1a71ce381ef6c546cfa6caed970.png) topiccontroller调用函数: ![1513857531(1).png](https://static.studygolang.com/171221/3bc0b6821c69401fdad20f5ec7ab0c9c.png) ![1513857478(1).png](https://static.studygolang.com/171221/c4290c98a2da451784ddb5a1ead4f012.png) 为什么会出现这个情...阅读全文

无坑安装使用godep(golang.org/x/tools/go/vcs的错误解决方案)

安装godep 官方的安装文档是使用go get github.com/tools/godep,很可惜,因为“网络”问题会报一个找不到golang.org/x/tools/go/vcs的错误。 而https://github.com/golang/tools 是 golang.org/x/tools的一个镜像,代码是一样的,所以我是如下安装的。 go get github.com/golang/tools 在$GOPATH/src/github.com/golang目录下就有tools文件夹。 在src下和github.com平级新建golang.org文件下,在此文件夹下建x文件夹,然后将tools都复制进去。 然后再执行go get github.com/tools/godep。 此时g...阅读全文

博文 2016-08-10 18:00:07 sindy_yoga

Oracle数据库查询用 where in 查询的项超过1000条的解决方案

func GetWhereInValuesSql(column string, list []string, num int) string { valueSize := len(list) if valueSize == 0 { return "" } sql := "(" add := 0 if valueSize%num != 0 { add = 1 } batchSize := valueSize/num + add for i := 0; i < batchSize; i++ { if i > 0 { sql += ") or " } sql += column + " in (" for j := i * num; (j < (i+1)*num) && j < valueSize...阅读全文

博文 2020-04-10 10:45:35 qianyer

关于 Golang 错误处理的思考

关于 Golang 错误处理的思考 Golang有很多优点,这也是它如此流行的主要原因。但是 Go 1 对错误处理的支持过于简单了,以至于日常开发中会有诸多不便利,遭到很多开发者的吐槽。 这些不足催生了一些开源解决方案。与此同时, Go 官方也在从语言和标准库层面作出改进。 这篇文章将给出几种常见创建错误的方式并分析一些常见问题,对比各种解决方案,并展示了迄今为止(go 1.13)的最佳实践。 几种创建错误的方式 首先介绍几种常见的创建错误的方法 基于字符串的错误 err1 := errors.New("math: square root of negative number") err2 := fmt.Errorf("math: square root of negative number...阅读全文

博文 2020-06-01 15:34:33 hantmac

【北京】瓜子二手车后端 golang工程师

工作职责: 1、负责核心产品的分析设计与开发工作 2、可以指导新人开发,共同完成开发工作 3、项目过程中可以输出技术解决方案 4、负责跨部门的沟通协调工作 职位要求 1、本科或以上学历,计算机软件或相关专业,五年以上后端开发经验。 2、计算机基础知识扎实,对数据结构、网络原理有较好的掌握。 3、精通Golang,C/C++中的至少一种语言,至少开发过一个大中型后端项目,能够独立编写中等规模的后端应用 4、熟悉LINUX环境下编程,熟悉Nginx配置和优化,熟悉shell脚本 5、精通MYSQL并拥有查询优化和存储优化的经验,能够根据业务需求进行数据库设计,并提供优化方案 6、严谨细致,有责任心,有良好的团队合作意识,能够承担重要任务,承受较强的工作压力。 7、有...阅读全文

Go如何保证gorountine执行完毕后继续执行

版权声明:本文为博主John Lau原创文章,未经博主允许不得转载 https://blog.csdn.net/GreatElite/article/details/56279803 Gorountine和channel是go语言最核心的功能,这个功能保证了go强大的并发执行能力。如果你想在你继续执行你的goroutine之前等待所有的goroutines执行完毕,你该如何使用go语言解决这样一个问题呢? 下面,我将给出三中解决方案。其中,最有解决方案是sync.WaitGroup。 程序函数等待 利用time包中的Sleep方法等待一段时间,这样就引起另外一个问题,到底该等待多久呢? 下面是程序的实现。 func receiveMsg(){ msg := make(chan string)...阅读全文

博文 2019-02-11 15:31:04 john_f_lau

数据结构与算法:二分查找

二分查找是搜索算法中的一种,用来搜索有序数组 二分查找: 是一种简单算法,其输入是一个有序的元素列表(必须有序的原因稍后解释)。如果要查找的元素包含在列表中,二分查找返回其位置;否则返回null。 Javascript ES6实现 /** * 函数binarySearch接受一个有序数组和一个元素。 如果指定的元素包含在数组中, 这个 函数将返回其位置。 你将跟踪要在其中查找的数组部分—— 开始时为整个数组。 */ const binarySearch = (list, item) => { // 数组要查找的范围 // low、high用于跟踪要在其中查找的列表部分 let low = 0 let high = list.length - 1 while(low <= high) { //...阅读全文

Go 高级基准测试

## 背景 有时你必须解决不同类型的问题。通常来说复杂的问题并不会只有单一的解决方案,但是解决方案的优劣取决于程序在运行时所要解决问题的子集。 我所遇到的一个例子是分析一些代理的连接中的某些数据流。 从流量中提取信息的方法主要有两种:保存整个数据流,当流量结束后立即分析;或者(使用一个缓存窗口)以降低速度为代价,在数据流传输过程中进行分析。 内存相对与处理能力来说要更加便宜,所以我的第一版解决方案是使用缓存的方案。 ### 第一版代码:使用缓存(buffer) 缓存连接是相对容易的:只需要将读到的所有数据复制到一个 `bytes.Buffer` 里,然后当连接关闭后对读到的数据进行分析。最简单的方式是包装( wrap )连接,在调用 `Read` 前先经过一个 [`io.TeeReader`...阅读全文

博文 2020-05-05 21:14:43 dust347