nsq介绍和使用

为什么要使用Nsq 最近一直在寻找一个高性能,高可用的消息队列做内部服务之间的通讯。一开始想到用zeromq,但在查找资料的过程中,意外的发现了Nsq这个由golang开发的消息队列,毕竟是golang原汁原味的东西,功能齐全,关键是性能还不错。其中支持动态拓展,消除单点故障等特性, 都可以很好的满足我的需求 下面上一张Nsq与其他mq的对比图,看上去的确强大。下面简单记录一下Nsq的使用方法 图片来自golang2017开发者大会 Nsq服务端 Nsq服务端简介 在使用Nsq服务之前,还是有必...阅读全文

简书 2020-04-11 15:32:43 哆啦在这A梦在哪

golang微服务方案

项目说明 近期启动一个项目,业务端使用的python,要爬取多维度的数据。有两个业务模块使用的多进程(发现python多线程有弊端),其他业务打算利用go(线程和协程)的特性,以微服务的模式实现。其实直接go buildmode也可以实现,经团队讨论还是采用了微服务方案,更有长远意义 1.docker go 容器化,集群化 2.工程框架 gin https://github.com/gin-gonic/gin 支持ProtoBuf 3.微服务框架 go-micro 4.服务治理 consul 持...阅读全文

简书 2020-04-11 15:32:42 DanielC

k8s最新实战生产:04-Kubernetes Pod原理

Kubernetes Pod原理 Pod-Kubernetes的最基本调度单元 前面我们学了Kubernetes的基本架构,我们也了解了Pod是Kubernetes中最基本的调度单元,我们平时在集群中部署的应用都是以Pod为单位的,而并不是容器,这样的设计目的是什么呢?为何不直接使用容器呢?这章节我将带领大家一起探索。 为什么需要Pod 架设Kubernetes中调度的基本单元是容器,对于一个非常简单的应用可以直接被调度,没有什么问题,但是往往还有很多应用是由多个进程组成的。有的小伙伴会说把这些...阅读全文

Segmentfault 2020-04-13 16:32:35 何阳光

分享一个快速构建 RESTful API的Go 框架snake

snake snake 一款适合于快速开发业务的Go框架,主要是提供API服务。 技术栈 框架路由使用 gin 路由 中间件使用 gin 框架的中间件 数据库组件 gorm 文档使用 swagger 生成 配置文件解析库 viper 使用 JWT 进行身份鉴权认证 校验器 validator 也是 gin 框架默认的校验器,当前最新是v9版本 任务调度 cron 包管理工具 go module 测试框架 goConvey CI/CD Github Actions 特性 遵循 RESTful AP...阅读全文

Segmentfault 2020-04-13 10:32:34 如来神掌

leetcode_887

Golang: 思路:这题给跪了。。。 代码如下: func superEggDrop(K int, N int) int { if K==1{ return N } mat:=make([][]int,K+1) for k,_:=range mat{ mat[k]=make([]int,N+1) } for k,_:=range mat[1]{ mat[1][k]=k } for i:=2;i<=K;i++{ for j:=1;j<=N;j++{ low,high:=1,j for low+1...阅读全文

简书 2020-04-11 13:32:43 淳属虚构

leetcode_893

Golang: 思路:把奇数位和偶数位的字符全部找出来,然后排序在组合起来,建个map看下情况即可 代码如下: func superEggDrop(K int, N int) int { if K==1{ return N } mat:=make([][]int,K+1) for k,_:=range mat{ mat[k]=make([]int,N+1) } for k,_:=range mat[1]{ mat[1][k]=k } for i:=2;i<=K;i++{ for j:=1;j<=...阅读全文

简书 2020-04-11 13:32:43 淳属虚构

Golang解析xml

golang解析xml到struct func Xml() { xmlDoc := `<?xml version="1.0" encoding="UTF-8"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>` type xmlStruct struct { XMLName xml.Name `xml:"no...阅读全文

简书 2020-04-11 13:32:42 是个懒人

leetcode_889

Golang: 思路:因为前序和后序是没有办法构建一个唯一的二叉树序列的,所以需要在某些方面自定规则,比如[1,2],[2,1],这里将这种序列定义为一个左子树 代码如下: func constructFromPrePost(pre []int, post []int) *TreeNode { node:=&TreeNode{Val: pre[0]} //长度至少要大于1才能构建子树 if len(pre)>1{ i:=0 for i<len(post){ if post[i]==pre[1]{...阅读全文

简书 2020-04-11 13:32:42 淳属虚构

程序员应该如何保护用户的密码

最近几年的新闻中一直有互联网头部公司系统被攻击导致用户密码泄露的新闻。那密码被破解肯定和当初项目伊始时选择的密码哈希方案造成的历史包袱有关。我们不讨论这些互联网巨头应该采用什么方案防止用户密码被破解,我知道的方案人家养的那些技术大拿更知道了。我们就来说一下,如果我们有机会自己从零开始做一个系统时,应该选择什么样的哈希算法有效防止用户的密码不被破解。 既然想保护用户密码不被破解,就先了解下破解密码的手段吧。 攻击密码的主要方法 我们需要防御的两种主要的密码攻击方式是: 字典攻击 暴力攻击 它们的工...阅读全文

简书 2020-04-11 10:32:43 KevinYan_a990

Golang 才是学习指针的安全之地,关于指针的二三事

感谢平台分享-http://bjbsair.com/2020-04-10/tech-info/53305.html 本章学习目标 学会声明和使用指针 理解指针和随机访问存储器(RAM)之间的关系 了解指针的使用时机 当我们在街上散步的时候,常常会看到一些用于指引方位的地址和街道标识。你可能曾经遇到过这样一种情况,一家大门紧闭的商店在它的橱窗上贴出了道歉标语“抱歉,本店已乔迁新址!”,并在标语的下方给出新的地址。指针就有点儿像这个给出新地址的标语,它会把你指引至不同的地址。 指针是指向另一变量的地...阅读全文

51CTO博客 2020-04-10 17:20:09 朱柿子

Golang 入门系列-八怎样实现定时任务,极简版.

感谢平台分享-http://bjbsair.com/2020-04-10/tech-info/53303.html 前面讲介绍了Go 语言的基础入门及Golang的语法结构。同时也介绍Golang的接口及协程等内容。感兴趣的朋友可以先看看之前的文章。接下来说一说Golang 如何实现定时任务。 golang 实现定时服务很简单,只需要简单几步代码便可以完成,不需要配置繁琐的服务器,直接在代码中实现。 1、使用的包 github.com/robfig/cron 2、示例 1、创建最简单的最简单cr...阅读全文

51CTO博客 2020-04-10 17:15:54 朱柿子

【无为则无心&Python基础】— 3.编译型语言和解释型语言

1、什么是计算机语言 计算机就是一台用来计算机的机器,人让计算机干什么计算机就干什么。我们需要通过计算机的语言来控制计算机,所谓计算机的语言就是编程语言。 计算机语言其实和人类的语言没有本质的区别,不同点就是交流的主体不同。也就是说中文、英文是人和人之间的交流语言,而计算机语言(编程语言)是人和计算机交流的语言。 计算机语言发展经历了三个阶段: 机器语言 最早的一种计算机语言。 机器语言通过二进制编码来编写程序,二进制编码就是1和0,计算机也只认识1和0。 执行效率高,但编写起来太麻烦。 汇编语...阅读全文

简书 2020-04-11 07:32:42 丘木笔记

Golang指导热门Golangframework ,IDE和工具的列表

感谢平台分享-http://bjbsair.com/2020-04-10/tech-info/53309.html === 自推出以来,Google的Go编程语言(Golang)一直受到主流用户的欢迎。 在2016年12月的一项调查中,在3595名受访者中,有89%的人声称他们在工作中或工作外使用Go语言编程。 此外,就专业知识和偏好而言,Go在编程语言中排名最高。 2017年7月,Go在"年度Tiobe年度编程语言"中排名第10,从去年的第55位跃升至第10位。 显然,Go吸引了来自各个领域的...阅读全文

51CTO博客 2020-04-10 17:25:13 朱柿子

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

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

简书 2020-04-10 23:32:48 哆啦在这A梦在哪

协程与异步IO

协程,又称微线程,纤程。英文名Coroutine。Python对协程的支持是通过generator实现的。在generator中,我们不但可以通过for循环来迭代,还可以不断调用next()函数获取由yield语句返回的下一个值。但是Python的yield不但可以返回一个值,它还可以接收调用者发出的参数。yield其实是终端当前的函数,返回给调用方。python3中使用yield来实现range,节省内存,提高性能,懒加载的模式。asyncio是Python 3.4版本引入的标准库,直接内置了...阅读全文

简书 2020-04-10 23:32:48 xuxw