go实现mqtt订阅与推送
go实现mqtt订阅与推送搭建mqtt服务端安装emqx本文安装emqx作为服务端,请自行安装docker
12345# 拉取emqx最新镜像docker pull emqx# 创建并运行emqx容器docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx
浏览器打开http://ip:18083,账号默认为admin,密码默认为public
安装mqttx有需要可以选择安装mqttx
12345# 拉取mqttx镜像docker pull emqx/mqttx-web# 创建并运行mqttx容器docker run -d --name mqttx-web -p 18830:80 emqx/mqttx-web
浏览器打开http://ip:18830
go创建mqtt客户端mqtt配置文件12345678910111213mqtt: # 地址 broker: 127.0.0.1:1883 # 账号 username: admin # ...
使用docker搭建项目
使用docker搭建项目安装docker123456789101112131415161718# 更新源yum -y update# centos一键安装dockercurl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun# 查询docker版本# 提示Docker version 24.0.0, build 98fdcd7就算安装成功docker -v# 启动dockersystemctl start docker# 查看docker运行状态systemctl status docker# 设置docker自启动systemctl enable docker
docker换源1234567891011# 查看docker信息docker info# Client: Docker Engine - Community# Version: 24.0.5# ......# Insecure Registries:# 127.0.0.0/8# Live Restore Enabled: false ...
使用nginx转发websocket
将wss://localhost/wssSocket转发到ws://127.0.0.1:8090/websocket/statistic
1234567891011location /wssSocket { proxy_pass http://127.0.0.1:8090/websocket/statistic; proxy_http_version 1.1; proxy_redirect off; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_ ...
如何给docker扩容
如何给docker扩容参考文章:
动态扩容Linux根目录:/dev/mapper/centos-home分配部分空间给/dev/mapper/centos-root(/dev/mapper/centos-root经常会满,可是/dev/mapper/centos-home很空) - 金龟子大战猕猴桃 - 博客园 (cnblogs.com)
Docker关闭不掉进程,Stopping docker.service, but it can still be activated by: docker.socket_warning: stopping httpd.service, but it can still _爱吃醋的小可爱的博客-CSDN博客
Linux中fuser命令用法详解 - Tse先生 - 博客园 (cnblogs.com)
问题:INTERNAL ERROR: cannot create temporary directory及解决方法_cannot creat tempory-CSDN博客
具体步骤在阅读本文时,笔者默认你已安装docker和docker-compos ...
IP转地址
IP转地址官方链接:
github:Ip2region
gitee:ip2region
参考文章:
ip2region 是一个离线 IP 数据管理框架和定位库
深入浅出之ip2region实现 - 知乎 (zhihu.com)
简介ip2region v2.0 - 是一个离线IP地址定位库和IP定位数据管理框架,10微秒级别的查询效率,提供了众多主流编程语言的 xdb 数据生成和查询客户端实现。每个 ip 数据段的 region 信息都固定了格式:国家|区域|省份|城市|ISP(网络服务提供商)
使用获取离线包从网站上获取ip2region离线包,并将ip2region.xdb放在resource目录下
导入依赖12345678910111213<!-- ip2region依赖(必须) --><dependency> <groupId>org.lionsoul</groupId> <artifactId>ip2region</artifactId> <version>2.6. ...
HyperLogLog学习
HyperLogLog学习本文参考文章:
探索HyperLogLog算法(含Java实现)_燃烧杯的博客-CSDN博客
大数据分析常用去重算法分析『HyperLogLog 篇』 (kyligence.io)
CodingLabs - 解读Cardinality Estimation算法(第四部分:HyperLogLog Counting及Adaptive Counting)
神奇的HyperLogLog算法【转载 #涉及到数学原理】_GDRetop的博客-CSDN博客_hyperloglog原理
HyperLogLog 算法的原理讲解以及 Redis 是如何应用它的 - 掘金 (juejin.cn)
论文原文:
HyperLogLog: the analysis of a near-optimal cardinality estimation algorithm
HyperLogLog仿真网站:
Sketch of the Day: HyperLogLog — Cornerstone of a Big Data Infrastructure – AK Tech Blog (neusta ...
代理模式
代理模式参考文章:Java 代理模式详解 | JavaGuide(Java面试+学习指南)
定义代理模式:为目标对象提供一个代理对象,由代理对象控制对目标对象的访问,在不修改目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。
静态代理静态代理中,我们对目标对象的每个方法的增强都需要手动完成。
从 JVM 层面来说, 静态代理在编译时就将接口、实现类、代理类这些都变成了一个个实际的 class 文件。
步骤静态代理实现步骤:
定义接口及其实现类(目标对象);
创建代理类并实现该接口(代理对象);
将目标对象注入到代理对象中,在代理对象中的方法中调用目标对象中对应的方法;
使用代理对象中的方法;
示例
定义短信发送接口
123public interface SmsService { String sendMsg(String message);}
实现短信发送接口
1234567public class SmsServiceImpl implements SmsService { @Override public String ...
函数式接口
函数式接口参考文章:深度解析之Java8-函数式接口 - 知乎 (zhihu.com),微信公众平台 (qq.com)
定义函数式接口:有且只有一个抽象方法的接口。
@FunctionalInterface注解Java 8中为函数式接口引入了一个新的注解:@FunctionalInterface 。该注解可用于一个接口的定义上,在接口上使用该注解,编译器将会强制检查该接口是否有且仅有一个抽象方法。但是该注解不是必须的,只要符合函数式接口的定义,那么这个接口就是函数式接口。
原生函数式接口Function: 函数型接口Function接口是一个转换类型的接口,用来根据一个类型的数据得到另一个类型的数据,T称为前置条件,R称为后置条件(即有入参,有返回,其中T是入参,R是返回)。
1234@FunctionalInterfacepublic interface Function<T, R> { R apply(T t);}
Predicate: 断言型接口Predicate接口是一个判断型接口,可以看做Function接口的特例(即有入参,有返回,凡 ...
布隆过滤器
布隆过滤器参考文章:
布隆过滤器,这一篇给你讲的明明白白-阿里云开发者社区 (aliyun.com)
布隆过滤器,位图,HyperLogLog | Rico’s Blog (hogwartsrico.github.io)
海量数据判重——布隆过滤器(Bloom filter)与Bitmap对比_tick_tokc97的博客-CSDN博客
数据结构与算法必知— Bitmap位图与布隆过滤器 - 简书 (jianshu.com)
定义布隆过滤器(Bloom filter)是一个高空间利用率的概率性数据结构,由Burton Bloom于1970年提出。实际是基于位图来实现的一种数据存储结构,用来判断某个元素(key)是否在某个集合中。和一般的位图不同的是,这个算法无需存储key的值,对于每个key,只需要k个比特位,每个存储一个标志,用来判断key是否在集合中。
原理布隆过滤器对一个对象使用多个哈希函数。如果我们使用了 k 个哈希函数,就会得到 k 个哈希值,也就是 k 个下标,我们会把数组中对应下标位置的值都置为 1。布隆过滤器和位图最大的区别就在于,我们不再使用一位来表示一个对象,而 ...
try、catch、finally执行顺序
try、catch、finally执行顺序try中有return1234567891011121314151617181920212223242526272829public class Test { public static void main(String[] args) throws IOException { System.out.println("返回结果:"+test()); } public static int test(){ int num = 0; try { System.out.println("进入--> try "); num = 1; System.out.println("try方法--> num=" + num); return num; } catch (Ex ...