记一次MQTT服务器EMQ X的使用
记一次MQTT服务器EMQ X的使用
1. EMQ X介绍
EMQ X (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。
Erlang/OTP是出色的软实时 (Soft-Realtime)、低延时 (Low-Latency)、分布式 (Distributed)的语言平台。
MQTT 是轻量的 (Lightweight)、发布订阅模式 (PubSub) 的物联网消息协议。
EMQ X 设计目标是实现高可靠,并支持承载海量物联网终端的MQTT连接,支持在海量物联网设备间低延时消息路由:
稳定承载大规模的 MQTT 客户端连接,单服务器节点支持50万到100万连接。分布式节点集群,快速低延时的消息路由,单集群支持1000万规模的路由。消息服务器内扩展,支持定制多种认证方式、高效存储消息到后端数据库。完整物联网协议支持,MQTT、MQTT-SN、CoAP、LwM2M、WebSocket 或私有协议支持。
2. 如何安装
我自己使用的是Docker安装的,毕竟很方便,主要是如果安装得有问题 ...
踩坑InputStream
踩坑InputStream
1. 起因
最近在公司做文件上传的模块,用的是Spring全家桶。文件上传自然会用到什么MultiPartFile、InputStream之类的东西,也需要判断文件的类型,传统的做法一般就是根据文件的后缀名去判断文件的类型。但是也有局限性,如果用户把一张图片重命名为无后缀名的文件,那就完犊子了,无法识别文件的类型。
为了解决如上问题呢,查阅了相关的资料,发现各种类型的文件一般都有自己独特的标志。位于整个文件首部,所以可以通过读取文件首部的一段数据来判断文件的类型。听起来真是妙啊,而且HuTool居然自带有这样一个工具类。nice,直接拿来用。
2. 问题来了
先说一下我的大致业务流程:
前端传过来文件,用MultiPartFile接收
拿到FileInputStream,InputStream in = file.getInputStream()
获取文件类型,FileTypeUtil.getType(in)
然后保存到本地,in.transferTo(new FileOutPutStream("D:/xxx/xxx"))
写完了之 ...
Oracle与Mysql的递归查询实现
Oracle与Mysql的递归查询实现
1. 表结构
id
name
pid
1
四川
0
2
广东
0
3
成都
1
4
郫县
3
5
深圳
2
1.1 建表SQL语句(Mysql)123456CREATE TABLE `test_treeselect` ( `id` int(0) NOT NULL, `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `pid` int(0) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
1.2 插入数据12345INSERT INTO `test_treeselect` VALUES (1, '四川', 0);INSERT INTO `test_tre ...
centos7配置防火墙
Centos7防火墙配置
1. 查看防火墙是否开启(运行)
1systemctl status firewalld
2. 查看防火墙状态
1firewall-cmd --state
3. 防火墙的开启、重启、关闭
123systemctl start firewalldsystemctl restart firewalldsystemctl stop firewalld
4. 开放端口、查询端口、关闭端口
1234567891011121314# 查询端口是否开放firewall-cmd --query-port=8080/tcp# 开放80端口firewall-cmd --permanent --add-port=80/tcp# 移除端口firewall-cmd --permanent --remove-port=8080/tcp#重启防火墙(修改配置后要重启防火墙)firewall-cmd --reload# 参数解释1、firwall-cmd:是Linux提供的操作firewall的一个工具2、--permanent:表示设置为持久3、--add-port ...
修改npm镜像源
修改npm仓库地址
方式1. 安装包时指定仓库地址😎
1npm install [packagename] --registry=https://registry.npm.taobao.org
方式2. 修改默认的仓库地址😎
1npm config set registry https://registry.npm.taobao.org
修改后可以使用npm config get registry可查看当前的npm仓库地址。😎
方式3. 使用阿里提供的cnpm😎
安装cnpm( g代表全局安装 )
1npm install -g cnpm --registry=https://registry.npm.taobao.org
使用cnpm安装包
1cnpm install [packagename]
使用SSH实现免密登录
SSH免密登录对于经常远程操作Linux服务器的人来说,SSH是再熟悉不过的工具了。😄
但是每次登录都要输入密码实在是太麻烦了,本人经常用scp命令上传文件到服务器,但每次也要输入密码就很麻烦。😡
这个时候就可以使用密钥对来实现免密登录,方便且安全。😄
1. 在本地生成密钥对
一路回车即可😉
1ssh-keygen
此时会在当前用户目录下的.ssh文件夹里产生一对密钥😉
其中id_rsa为私钥,id_rsa.pub为公钥😉
2. 上传公钥到你需要登陆的服务器
1ssh-copy-id -i ~/.ssh/id_rsa.pub [username]@[serveraddress]
其中username即为你要免密登录的用户名,serveraddress为你服务器的地址😆
此时会要求你输入一次username对应的密码,输入之后上传完成😆
3. 免密登录服务
1ssh [username]@[serveraddress]
现在你会惊奇的发现不用输入密码就可以登陆上你的服务器了。😎