EMQ X 消息服务器的连接认证和访问控制由一系列的认证插件(Plugins)提供,他们的命名都符合 emqx_auth_ 的规则,在 EMQ X 中,这两个功能分别是指:连接认证: EMQ X 校验每个连接上的客户端是否具有接入系统的权限,若没有则会断开该连接;访问控制: EMQ X 校验客户端每个 发布(Publish)/订阅(Subscribe) 的权限,以 允许/拒绝 相应操作;
EMQ X 消息服务器认证的插件支持按用户名密码、ClientID 或匿名认证三种方式,系统默认开启匿名认证,我们可以配置插件开启认证链:
特别需要注意:
当开启 Username 认证之后,系统会忽略 Client ID 认证和匿名认证;
当开启 Client ID 认证之后,系统会忽略匿名认证;
1. 默认方式——匿名认证搭建完成之后,设备端对接MQTT服务器没有任何的身份认证,直接连接即可。
使用mqtt.fx作为mqtt客户端进行测试:
设置完成之后点击连接即可:
测试订阅主题:
测试发布消息
发布之后看一下是否收到(客户端已订阅此主题):
这种无认证方式的优 ...
EMQX WebHook介绍EMQX WebHook是什么EMQX WebHook 是由 emqx_web_hook (opens new window)插件提供的将EMQX中的钩子事件通知到某个Web服务的功能。WebHook 的内部实现是基于钩子,借助 Webhook 可以完成设备在线、上下线记录,订阅与消息存储、消息送达确认等诸多业务。
它通过在钩子上的挂载回调函数,获取到 EMQX 中的各种事件,并转发至 emqx_web_hook 中配置的 Web 服务器。
以 客户端成功接入(client.connected) 事件为例,其事件的传递流程如下:
123 Client | EMQX | emqx_web_hook | HTTP +------------+=============>| - - - - - - -> - - - - - - - ->===========> | Web Server | | Broker | | Reque ...
经验教程
未读需求是存储用户文件和向量数据,使用 PostgreSQL(作为向量存储和元数据管理)和 MinIO(作为对象存储)就可以满足你的需求。以下是完整的安装和安全配置指南。
1. 准备工作
一台云服务器(例如 AWS、阿里云、腾讯云)。
已安装的 Ubuntu(或其他 Linux 系统)。
确保拥有 sudo 权限,并更新软件包管理器:123sudo apt updatesudo apt upgrade -y
2. 安装和配置 PostgreSQL2.1 安装 PostgreSQL12sudo apt install postgresql postgresql-contrib -y
2.2 启用 pgvector 扩展
安装构建工具(如果未安装):
1sudo apt install postgresql-server-dev-$(pg_config --version | cut -d'.' -f1,2) build-essential -y
安装 pgvector:1234git clone https://github.com/pgvector/pgv ...
经验教程
未读要使用国内镜像安装nvm
1:登陆云服务器这一步基本都没问题,
2:输入安装nvm命令:
1curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
3:安装的时候 或许会出现错误:# Failed to connect to raw.githubusercontent.com port 443
原因:由于某些你懂的因素,导致GitHub的raw.githubusercontent.com域名解析被污染了
解决办法:使用国内镜像安装,命令如下
镜像安装1curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash -s -- --mirror=https://npm.taobao.org/mirrors/nvm
刷新配置1source ~/.bashrc
1nvm --version
安装最新的node LTS版本
1nvm install --lts
安装前可以通过:
1n ...
一、进程间的通信方式1. 进程间通信的概念每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把 数据 从 用户空间 拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication)
1.1. 进程通信的目的:
数据传输
一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间
共享数据多个进程想要操作共享数据,一个进程对共享数据
通知事件一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。
资源共享多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁和同步机制。
进程控制有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。
1.2. Linux 进程间通信(IPC)的发展linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的 ...
技术学习
未读认识cpu、核、进程与线程
author:lcw
物理CPU
物理CPU是相对于虚拟CPU而言的概念,指实际存在的CPU处理器,安装在PC主板或服务器上。
物理核
CPU中包含的物理内核(核心)个数,比如多核CPU,单核CPU(古老的CPU)。这个多核或者单核已经集成在CPU内部了。
在linux系统下面的/proc/cpuinfo文件的条目中:
有多少个不同的physical id就有多少个物理CPU。
cpu cores记录了对应的物理CPU(以该条目中的physical id标识)有多少个物理核。
1234567891011121314[root@zyshanlinux-01 ~]# cat /proc/cpuinfoprocessor : 0vendor_id : GenuineIntelcpu family : 6model : 60model name : Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHzstepping : 3microcode : 0x22cpu MHz ...
技术学习
未读Linux网络编程实践[TOC]
一、Linux网络编程框架1、网络是分层的(1)OSI 7层模型
(2)网络为什么要分层
1)各层次之间是独立的。某一层并不需要知道它的下一层是如何实现的,而仅仅需要知道该层通过层间的接口所提供的服务。这样,整个问题的复杂程度就下降了。也就是说上一层的工作如何进行并不影响下一层的工作,这样我们在进行每一层的工作设计时只要保证接口不变可以随意调整层内的工作方式。
2)灵活性好。当任何一层发生变化时,只要层间接口关系保持不变,则在这层以上或以下层均不受影响。当某一层出现技术革新或者某一层在工作中出现问题时不会连累到其它层的工作,排除问题时也只需要考虑这一层单独的问题即可。
3)结构上可分割开。各层都可以采用最合适的技术来实现。技术的发展往往不对称的,层次化的划分有效避免了木桶效应,不会因为某一方面技术的不完善而影响整体的工作效率。
4)易于实现和维护。这种结构使得实现和调试一个庞大又复杂的系统变得易于处理,因为整个的系统已经被分解为若干个相对独立的子系统。进行调试和维护时,可以对每一层进行单独的调试,避免了出现找不到、解决错问题的情况。
能促进标准 ...
Shell编程基础Shell变量设置环境变量1.基本语法
export 变量名=变量值 (功能描述:将 shell 变量输出为环境变量/全局变量)
source 配置文件 (功能描述:让修改后的配置信息立即生效)
echo $变量名 (功能描述:查询环境变量的值)
示意图:
2.快速入门
在/etc/profile 文件中定义 TOMCAT_HOME 环境变量
查看环境变量 TOMCAT_HOME 的值
在另外一个 shell 程序中使用 TOMCAT_HOME
注意:在输出 TOMCAT_HOME 环境变量前,需要让其生效
source /etc/profile
shell 脚本的多行注释
:<<! 内容 ! (==注意换行==)
位置参数变量介绍:当我们执行一个 shell 脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量
比如 : ./myshell.sh 100 200 , 这个就是一个执行 s ...
技术学习
未读在新版的ubuntu中,使用timedatectl 替换了ntpdate来进行时间管理。
查看当前时间状态1timedatectl status
显示如下
系统显示的时间是错误的,错误原因也是显而易见的,使用的是 ==Etc/UTC== 的时区。
因此只要修改时区就能保证时间的正确。
修改时区所有的时区名称存储在 /usr/share/zoneinfo 文件中。
执行命令
1timedatectl set-timezone "Asia/Shanghai"
就可以将时区设为上海时区
重新查看当前时间状态1timedatectl status
此时时间已经正常了。

优点:
环境稳定且免费,可以省出维护服务器的精力和开支
大佬们一般对服务器有很高的要求,一个服务器通常会专门做一件事情,如果挂博客太低的配置没法有很好的访问性能,太高的配置又是资源浪费,中规中矩的配置却又比上不足比下有余,这时候静态博客就是个很好的解决方案。
==主题好看==
方案细则把 Hexo 文件放在 Github 上,每次更新文件都推送到 Github 上,由 Vercel 自动拉取构建
创建 Hexo 项目创建 Hexo 项目直达链接:
Deploy
这时候就到了创建 Hexo 项目的页面了。
左边的 Git Scope 是你的 Github 账号,右边 REPOSITORY NAME 是你账号下 Hexo 博客仓库的名字,你的博客源文件就存放在这里,名称可以自选
项目可见性就保持 Private,这样别人就看 ...