一篇文章读懂布隆过滤器

你接到一个新的开发需求,需要你为用户注册服务设计一个用户名检查的API接口, 这个接口会根据用户输入的用户名与系统中所有账号的用户名进行匹配检查,如果用户名已经存在,则会提示用户该名称已被使用,无法进行注册,如果名称未被占用,则返回允许注册。这个需求是不是听上去很简单,实现上我们有以下的几种方案: 方案一:每次注册验证的时候直接去数据库执行SQL, 检查是否存在相同用户名。 方案二:导出一份用户名列表到缓存(定期或者使用消息队列),每次单独的查询缓存完成检查我们先来看下前两种方案存在有哪些问题:...阅读全文

简书 2020-07-17 11:32:49 银河系算法指南

SimpleChain Singularity(奇点) 星辰时代

Simplechain星辰时代已经呼啸而至,而此次跨时代之作是Simplechain的主链性能,共识机制,主子链通信(跨链),社区建设,落地应用等全模块全面升级。Simplechain新版本的发布,极大的提振了整个区块链行业,有利于主子链生态的协同融合,互相促进。加速推进整个Simplechain构建数字经济网络。我们来看一下`SimpleChain Singularity 星辰时代`技术迭代的详细内容 ### 技术迭代内容 **主链** 1. 更新了p2p网络的寻址,有助于节...阅读全文

Go语言中文网 2020-07-17 09:52:35 SimpleChain

SimpleChain Singularity(奇点) 星辰时代 升级公告

大家好,感谢各位Simplechain社区用户和老铁长期一来的支持,随着我们在技术领域的延伸越来越广。经过我们社区的开发者不断的努力,Simplechain在主链性能优化,跨链,可插拔子链等方面的研发取得巨大突破。现在我们已经完成了开发并上线。为了更好的体验以及支持生态的发展,我们希望所有的社区用户和开发者对节点做一次升级。在升级之前首先了解一下SimpleChian主网节点2.0-星辰时代的技术升级,本次技术升级主要有主链,子链和跨链三个板块。内容如下: **主链** 1. 更新了...阅读全文

Go语言中文网 2020-07-17 09:50:45 SimpleChain

从零学习 Go 语言(32):理解 Go 语言中的 Context

![](http://image.iswbm.com/20200607145423.png) 在线博客:http://golang.iswbm.com/ Github:https://github.com/iswbm/GolangCodingTime --- ## 1. 什么是 Context? 在 Go 1.7 版本之前,context 还是非编制的,它存在于 golang.org/x/net/context 包中。 后来,Golang 团队发现 con...阅读全文

Go语言中文网 2020-07-17 08:51:55 hello_wbm

golang-面霸-面试题-真题

仅供学习笔记,如有侵权,请联系作者删除Golang面试真题1、结构体类型的比较-结构体的比较问题(1-1)、只有相同的类型的结构体才可以比较(1 结构体的属性类型, 2 属性的顺序) (1-2)、即使两个结构体的属性类型和顺序相同,但是里面存在不可比较类型,依然是不可以直接==比较的。 比如 map,slice 可以参考用reflflect.DeepEqual方法来进行比较2、string与nil赋值问题2-1、nil空值的赋值 空值, 空指针,所有Golang中的引用类型都可以用nil进行赋值...阅读全文

Segmentfault 2020-07-17 16:32:49 特伦姝

关于swoole对laravel项目的提升,以及golang和前者的选择

自己是个菜鸟,因为自己这段时间学了一下golang,并且开始在使用Beego做web项目了,但是就是在过程中突然冒出一个想法:如果新开一个项目的话,我是应该选择gobee还是laravel+swoole呢?于是就想要比较这两者哪一个会好一些。 场景就是在单服务器的情况下选择了一个场景,相同条件的分页请求压力下,两者的哪一个可以承载更多的请求。 **php7.3+mysql5.7+swoole(hhxsv5/laravel-s)+laravel6.2golang1.13+beego** 数据表9个...阅读全文

Segmentfault 2020-07-22 19:32:33 Amoy5gc

计算机网络基础(四)---网络层-ARP协议与RARP协议

文章内容概览还是看在上一篇文章中提到的这张图,计算机A将数据跨设备传输给C。A发出目的地为C的IP数据报,查询路由表发现下一跳为E,A将IP数据报交给数据链路层,并告知目的MAC地址是E。那么A是如何知道E的MAC地址的?这个是本文要介绍的ARP协议ARP(Address Resolution Protocol)地址解析协议作用:把网络层32位的IP转换成数据链路层48位的MAC地址,在这个过程中有一个很重要的表,ARP缓存表该表的形式如下,也是一个映射:对于ARP缓存表的使用,有两种情况ARP...阅读全文

Segmentfault 2020-07-22 14:32:32 书旅

蚂蚁王益:Go+ 可有效补全 Python 的不足

简介: Python 的语法很灵活,融合了很多其他语言中令人觉得方便的特点。然而 Python 的优势同时也隐含了其劣势。蚂蚁研究员王益在工业系统中对 Python 的亲身体会,更加深刻地了解到了 Python 的局限,而 Go+ 是弥补方案里最靠谱的。那么 Python 有哪些不足?Go+ 又是如何能弥补的?本文分享王益对 Go+ 补全 Python 的局限上的相关看法和尝试。 不久前许式伟(江湖人称老许)的 Go+ 项目在 Hacker News 上掀起了一阵风潮[1]。我一见倾心,参与贡献...阅读全文

Segmentfault 2020-07-21 23:32:32 阿里技术

Kuiper 中使用 Golang 模版 (template) 定制分析结果

简介 用户通过 Kuiper 进行数据分析处理后,使用各种 sink 可以往不同的系统发送数据分析结果。针对同样的分析结果,不同的 sink 需要的格式可能未必一样。比如,在某物联网场景中,当发现某设备温度过高的时候,需要向云端某 rest 服务发送一个请求,同时在本地需要通过 MQTT 协议 往设备发送一个控制命令,这两者需要的数据格式可能并不一样,因此,需要对来自于分析的结果进行「二次处理」后,才可以往不同的目标发送针对数据。本文将介绍如何利用 sink 中的数据模版(data templa...阅读全文

Segmentfault 2020-07-21 19:32:32 EMQX

细说 goroutine 和 channel

+ goroutine 看一个需求 * 需求:要求统计 1 - 90000000000 的数字中,那些是素数? + 分析思路: * 传统的方法,就是使用一个循环,循环的判断各个数是不是素数「效率很低」 * 使用并发或者并行的方式,将统计素数的任务分配个多个goroutine去完成,这时就会使用到goroutine「速度提高很多」 + goroutine 基本介绍 > 进程和线程介绍 * 进程就是程序程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单元 * 线程是进程的一个执行实例,...阅读全文

Segmentfault 2020-07-21 17:32:32 code

go module 安装包的简单使用(goland)

这个装go 的包真是难搞,我特么两三天装个 gin 框架都装不了。c 但是我本地是科学&联网了的。也按照主流的那写方法配置了代理之类的,但就是失败再失败 最后,直接看到一个方法是直接配置 goland 的。我就想,本地命令行都不行,ide 能行? 抱着怀疑的态度,我在 goland 上面配置了一下。出乎医疗,居然可以了 看一下步骤: 配置 goland 的 module 安装模式 goland 配置 module 下载方式 生成 go.mod 文件 注意,我配置后并没有生效,运行当前程序,然后爆...阅读全文

简书 2020-07-16 10:32:47 天空蓝雨

go 逃逸分析

go 逃逸分析 什么是逃逸分析 逃逸分析决定一个变量是分配在堆上还是分配在栈上 原理 逃逸分析这种“骚操作”把变量合理地分配到它该去的地方,“找准自己的位置”。即使你是用new申请到的内存,如果我发现你竟然在退出函数后没有用了,那么就把你丢到栈上,毕竟栈上的内存分配比堆上快很多;反之,即使你表面上只是一个普通的变量,但是经过逃逸分析后发现在退出函数之后还有其他地方在引用,那我就把你分配到堆上 原则 简单来说,编译器会分析代码的特征和代码生命周期,Go中的变量只有在编译器可以证明在函数返回后不会再...阅读全文

简书 2020-07-16 10:32:45 会理发的店小二

Etcd

Etcd leader选举 package main import ( "context" "fmt" "github.com/coreos/etcd/clientv3" "github.com/coreos/etcd/clientv3/concurrency" "log" "time" ) const prefix = "/election-demo" const prop = "local" var leaderFlag bool func main() { endpoints := []s...阅读全文

简书 2020-07-16 10:32:45 会理发的店小二

docker 减少打包镜像体积

docker 减少打包镜像体积 dockerfile 基础命令 FROM 指定基础镜像 FROM nginx RUN 执行命令 shell格式: RUN <命令> exec 格式: RUN ["可执行文件", "参数1", "参数2"] ... RUN apt-get update RUN apt-get install -y gcc libc6-dev make ... COPY 复制文件 COPY <源路径>... <目标路径> COPY ["<源路径1>",... "<目标路径>"] CO...阅读全文

简书 2020-07-16 10:32:45 会理发的店小二

从零学习 Go 语言(31):Go 语言里的空接口

![](http://image.iswbm.com/20200607145423.png) 在线博客:http://golang.iswbm.com/ Github:https://github.com/iswbm/GolangCodingTime --- ## 1. 什么是空接口? 空接口是特殊形式的接口类型,普通的接口都有方法,而空接口没有定义任何方法口,也因此,我们可以说所有类型都至少实现了空接口。 ```go type empty_iface ...阅读全文

Go语言中文网 2020-07-16 08:18:19 hello_wbm

go语言并发之MPG模型

请记住go并发的真理: Do not communicate by sharing memory; instead, share memory by communicating.不要以共享内存的方式来通信,相反,要通过通信来共享内存。 go语言天生的并发大家都知道,可是go是如何实现轻松的构造上万的协程呢?今天我们就说一下go并发的MPG模型。 M 代表着一个内核线程,也可以称为一个工作线程。goroutine就是跑在M之上的 P 代表着(Processor)处理器 它的主要用途就是用来执行go...阅读全文

51CTO博客 2020-07-15 15:54:21 阿泽Aze

Crawlab Lite 正式发布,更轻量的爬虫管理平台

Crawlab 是一款基于 Golang 的分布式爬虫管理平台,产品发布已经一年有余,经过开发团队的不断打磨,即将迭代到 v0.5 版本。在这期间我们为 Crawlab 加入了大量社区用户共同期望的功能,使产品更加专业。但与此同时我们也注意到,部分用户并不是分布式爬虫用户,他们更多只是在单机情况下使用 Crawlab。其次目前 Crawlab 逐步加入了丰富的功能,也使整个产品逐渐巨化,大部分用户并不能充分使用所有的功能。因此 Crawlab Lite 作为 Crawlab 的轻量化版本正式发布...阅读全文

Segmentfault 2020-07-21 16:32:32 张凯强

docker封装首次实践记录 2020-07-15

实践环境 从docker官仓pull下来的centos:latest镜像,run起来之后执行yum install epel-release && yum install golang装好go,但未配置go相关环境变量。然后commit 生成带go的新镜像,命名为centos:golang centos:golang 实践目标 通过Dockerfile 和 docker build命令,在centos:golang镜像的基础上进一步封装,创建新镜像centos:autorungoapp Dock...阅读全文

简书 2020-07-15 19:32:44 9_SooHyun