JWT鉴权http://blog.fatedier.com/2020/03/28/golang-jwt/ 开启了auth.jwt.verify_claims = on之后,就要求在链接emq的时候,token中的playload信息username字段和链接时候设置的字段一致,否则返回失败   配置文件 /etc/emqx/emqx.conf 日志路径 log.dir = /var/log/emqx  emqx.log   mqtt 之 last will(遗愿) …

2021年4月19日 0条评论 8点热度 阅读全文

缓存击穿:缓存在某个时间点过期时,突然在这个时间点出现对这个key的大量并发请求,此时缓存已过期,请求会直接落在DB上,使得DB瞬间请求量增大,压力骤增。singleflight能够在同一时间有大量针对同一key的请求这种情况,只让一个请求执行去获取数据,而其他协程阻塞等待结果的返回  一、数据结构 type Group struct { mu sync.Mutex // 互斥锁 m map[string]*call // 对于每一个要获取的key有一个对应的call } type call struct…

2021年4月17日 0条评论 9点热度 阅读全文

文章目录 Context Context结构 Context的衍生 WithCancel WithDeadline WithTimeout WithValue Context 使用原则 Context context包不仅实现了在程序单元之间共享状态变量的方法,同时能通过简单的方法,使我们在被调用程序单元的外部,通过设置ctx变量值,将过期或撤销这些信号传递给被调用的程序单元。在网络编程中,若存在A调用B的API, B再调用C的API,若A调用B取消,那也要取消B调用C,通过在A,B,C的API调用之间传递Cont…

2021年4月13日 0条评论 10点热度 阅读全文

内核空间和虚拟空间 地址空间被分为内核空间和用户空间,为虚拟地址空间,内核维护虚拟地址空间到物理地址空间的映射。内核空间的访问比较严格,操作系统限制对其的访问,但是向外暴露了一些必要的接口访问。cpu权限被分为两种:内核态和用户态,如果需要调用内核接口就需要内核态权限,称为系统调用。系统调用就是操作系统内部定义的一些函数。 用户级线程和内核级线程 用户级线程 用户级线程由应用级别的线程库进行生成和管理,其不属于内核部分,线程的存在是内核无法感知的,其优点在于不需要内核的参与,没有内核态切换的开销。但是也造成了这种模…

2020年12月22日 0条评论 1点热度 阅读全文

文档 grpc中文文档 grpc-gateway,restful和grpc转换库 protobuf 官网 protobuf  Google Protocol Buffer(简称 Protobuf)是一种轻便高效的结构化数据存储格式,平台无关、语言无关、可扩展,可用于通讯协议和数据存储等领域。 优点 平台无关,语言无关,可扩展; 提供了友好的动态库,使用简单; 解析速度快,比对应的XML快约20-100倍; 序列化数据非常简洁、紧凑,与XML相比,其序列化之后的数据量约为1/3到1/10。 安装 到https://g…

2020年12月2日 0条评论 40点热度 阅读全文

作者:freewind 比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockc... 在前一篇中,我们说到,当比原向其它节点请求区块数据时,BlockKeeper会发送一个BlockRequestMessage把需要的区块height告诉对方,并把该信息对应的二进制数据放入ProtocolReactor对应的sendQueue通道中,等待发送。而具体的发送细节,由于逻辑比较复杂,所以在前一篇中并未详解…

2020年12月2日 0条评论 39点热度 阅读全文

go 基础知识 [TOC] 1、go程序整体结构 2、go声明和命名 3、内置关键字 4、注释和可见性 5、导包两种方式,以及package别名 1、go 程序结构 bin:存放程序生成的可执行文件。go install生成的就在这 pkg: 存放编译后静态库 .a ,依赖的一些包编译后会在这生成 src: 存放源代码 导包有两种:import “单个包” , 或者 import(导入多个包) 2、go声明和命名 一个名字必须以一个字母(Unicode字母) 或下划线开头,后面可以跟任意数量的字母、数字或下划线。大…

2020年12月2日 0条评论 37点热度 阅读全文

原文地址 https://mojotv.cn/go/create-your-own-ssh-server 下面的代码展示我们如何在golang代码登陆到SSH. 一下代码制作代码功能展示之用, 没有解决terminal window size 问题和怎么传入ssh 登陆参数的问题.实际使用中有缺陷,通过 tab 补全时并不能正确显示.

2020年12月2日 0条评论 36点热度 阅读全文

整数反转(Reverse-Integer) 这是一个比较简单的题目,题干如下: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1:   输入: 123   输出: 321 示例 2:   输入: -123   输出: -321 示例 3:   输入: 120   输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为&nb…

2020年12月2日 0条评论 40点热度 阅读全文

一、下载安装go 过程不赘述,一路下一步。默认会安装在C:\GO,建议不要修改,否则指不定会发生什么奇奇怪怪的BUG。安装完成后需要配置GOPATH环境变量,环境变量目录为工程根目录,我的是D:\code\MCChatServer 注意GOPATH要大写 二、安装vscode 依然一路下一步,安装完成后打开软件,安装VScode的GO插件。在VScode左侧选择第5个选项,在上方搜索栏里输入go,选择作者为lukehoban的插件安装 安装完成后,重启VScode。然后在项目跟目录下创建一个后缀为go的文件,如ma…

2020年12月1日 0条评论 109点热度 阅读全文