技术学习
未读一个警告首先看下问题的现象,使用@Autowired被idea警告,而使用@Resource则不会:
@Autowired和@Resource的差异来源
@Resource是JSR 250中的内容,发布时间是2006年
@Autowired是Spring2.5中的内容,发布时间是2007年
@Resource是JSR的标准,Spring框架也提供了实现。既然@Autowired是在@Resource之后发布的,应该就有@Resource不能表达的含义或者不能实现的功能。
用法注入方式虽然我们开发中使用最多的方式是属性注入,但其实存在构造函数注意、set方法注入等方式。相比于@Resource支持的属性注入和set方法注入,@Autowired还能支持构造方法注入的形式,@Resource是不行的。
可指定属性@Autowired支持required属性
@Resource支持7个其它属性
bean查找策略
@Autowired是类型优先,如果这个类型的bean有多个,再根据名称定位
@Resource是名称优先,如果不存在这个名称的bean,再去根据类型查找
查找过程@ ...
SpringBoot集成MQTT步骤1. 引入pom依赖123456789101112131415161718192021222324252627282930313233343536373839404142434445464748<dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter</artifactId> </dependency> <!--Spring boot Web容器--> <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--FreeMarker模板视图依赖-->  ...
Emqx简介EMQ X (Erlang/Enterprise/Elastic MQTT Broker) 是基于 ==Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器==。 
EMQ X 设计目标是实现高可靠,并支持承载海量物联网终端的MQTT连接,支持在海量物联网设备间低延时消息路由:  
1. 稳定承载大规模的 MQTT 客户端连接,单服务器节点支持50万到100万连接。2. 分布式节点集群,快速低延时的消息路由,单集群支持1000万规模的路由。3. 消息服务器内扩展,支持定制多种认证方式、高效存储消息到后端数据库。4. 完整物联网协议支持,MQTT、MQTT-SN、CoAP、LwM2M、WebSocket 或私有协议支持。
官方文档:https://docs.emqx.cn/broker/v4.3/getting-started/install.html
MQTT是什么?MQTT全称消息队列遥测传输 (Message Queuing Telemetry Transport)。其主要提供了订阅 ...
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)易于实现和维护。这种结构使得实现和调试一个庞大又复杂的系统变得易于处理,因为整个的系统已经被分解为若干个相对独立的子系统。进行调试和维护时,可以对每一层进行单独的调试,避免了出现找不到、解决错问题的情况。
能促进标准 ...






