自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (1)
  • 收藏
  • 关注

原创 豆包编程助手-生产力神器?

本文探讨了豆包编程助手在提高编程生产力方面的应用。使用豆包助手实现MQTT协议的服务端代码。它还提供了代码修复、补全、注释生成等功能,但存在一些限制,如对第三方库的理解不足。豆包助手在简单逻辑代码生成和代码注释方面表现出色,但在复杂场景下需要用户进一步修正。插件的交互设计和语言选择也有待改进。

2024-09-30 23:17:14 730

原创 万字长文详解Java线程池

而如果我们设置更多的线程数,那么当一部分线程正在等待 IO 的时候,它们此时并不需要 CPU 来计算,那么另外的线程便可以利用 CPU 去执行其他的任务,互不影响,这样的话在任务队列中等待的任务就会减少,可以更好地利用资源。1、线程池不在RUNNING状态,线程池调用shutdown等方法关闭线程池后,即便线程池内部依然存在没有执行完的任务正在执行,但是线程池已经关闭,此时再向线程池内提交任务,就会遭到拒绝。线程可以从队列的两端出队任务执行,但通常从自己的那一端出队,而从其他线程的队列另一端窃取任务。

2024-09-29 09:12:01 694

原创 万字长文详解Java线程知识

因为线程之间如果有共享数据,为了避免数据错乱,为了保证线程安全,就有可能禁止编译器和 CPU 对其进行重排序等优化,也可能出于同步的目的,反复把线程工作内存的数据 flush 到主存中,然后再从主内存 refresh 到其他线程的工作内存中,等等。所以,我们在使用其他类时如果会涉及并发场景,那么一定要首先确认清楚,对方是否支持并发操作,以上就是四种需要我们额外注意线程安全问题的场景,分别是访问共享变量或资源,依赖时序的操作,不同数据之间存在绑定关系,以及对方没有声明自己是线程安全的。

2024-09-26 15:22:16 962

原创 Windows安装RocketMQ

这篇文章将为大家详细讲解有关 Windows 如何安装与使用 RocketMQ,希望大家阅读完这篇文章后可以有所收获。本文是基于 Window 系统上搭建的,RocketMq 版本是 5.0.0。

2024-09-03 08:30:00 1881

原创 AI真的可以写出可商用的代码吗?

在使用AI工具进行代码生成时,‌用户可以通过简单的自然语言描述或问题,‌AI便能快速理解并生成相应的代码片段。‌这种交互方式非常直观,‌用户只需提供关键信息和问题,‌AI便能迅速响应并生成匹配的代码。‌AI写代码的体验还体现在其高效性和便捷性上。‌通过AI的帮助,‌开发者可以更加专注于项目的核心逻辑和功能实现,‌而无需在编写基础代码上花费过多时间。‌这不仅能够提高开发效率,‌还能在一定程度上减轻开发者的负担,‌特别是在面对复杂或重复性的编程任务时,‌AI工具能够显著提升工作效率。‌。

2024-08-01 12:48:08 398

原创 八股文-基础知识-int和Integer有什么区别?

而 Integer 是 int 的包装类,它位于 Java 的对象层次,存储在堆内存中,每个 Integer 实例都包含一个 int 类型的字段用于存储值,并提供了一系列对象方法,如数学运算、字符串转换等。此外,Integer 提供了缓存机制,默认情况下-128到127之间的值会被缓存,重复请求时直接返回缓存对象,以提升性能。int 是Java的原始数据类型(Primitive Type),它代表一个整数值,直接存储在内存栈中,占用固定大小的内存空间,不涉及对象的创建和销毁,效率高且内存占用小。

2024-07-29 20:42:38 769

原创 八股文-基础知识-面试题汇总(三)

AIO 是异步 IO 的缩写,虽然 NIO 在网络操作中,提供了非阻塞的方法,但是 NIO 的 IO 行为还是同步的。资源关闭的最佳实践:自从Java 7引入了try-with-resources语句后,对于实现了AutoCloseable接口的资源,如JDBC连接或文件流,更推荐使用try-with-resources来代替传统的try-finally结构,因为它能自动管理资源的关闭,减少了手动编写finally块的必要性,且代码更简洁。这有助于保护方法的实现不被修改,从而确保方法的行为始终如一。

2024-07-27 16:28:41 487

原创 八股文-基础知识-面试题汇总(早期)

反射在运行状态中,对任意一个类都能够知道它的属性及方法,并且都能够调用它任何方法;这种动态获取信息以及动态调用对象方法的功能称为反射。抽象类只能单继承,接口可以多实现。抽象类可以有构造方法,接口中不能有构造方法。抽象类中可以有成员变量,接口中没有成员变量,只能有常量(默认就是 public static final)抽象类中可以包含非抽象的方法,在 Java 7 之前接口中的所有方法都是抽象的,在 Java 8 之后,接口支持非抽象方法:default 方法、静态方法等。

2024-07-27 16:27:48 306

原创 八股文-基础知识-面试题汇总(二)

线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

2024-07-26 21:18:10 327

原创 八股文-基础知识-面试题汇总(一)

Java 程序在执行子类的构造方法之前,如果没有用 super()来调用父类特定的构造方法,则会调用父类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用 super()来调用父类中特定的构造方法,则编译时将发生错误,因为 Java 程序在父类中找不到没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事且没有参数的构造方法。

2024-07-26 21:17:27 1005

原创 从0到1使用Docker部署java项目详解

Docker部署Java项目相比传统部署方式,在环境一致性、配置管理、可扩展性和安全性等方面具有显著优势。然而,它也带来了学习成本、资源消耗和复杂度增加等挑战。

2024-07-25 17:05:04 1149

原创 【EMQX实践】手撸一个MQTT-BROKER

在MQTT生态系统中,两个关键组件负责建立连接、发布和订阅消息:MQTT客户端和MQTT代理(Broker)。客户端是连接物联网设备的接口,负责发送和接收消息;而代理则作为中央枢纽,负责消息的路由和分发,确保信息能够准确、及时地传递给目标客户端。

2024-07-25 08:00:00 841

转载 【EMQX实践】物模型

我们知道,智能电灯的状态,要么是打开,要么是关闭;当进行控制时,这两种状态还会相互转换。此外,有些灯还可以根据需求设置不同的亮度、颜色和色温等。属性的特点是可读可写。也就是说,应用程序可以读取属性,也可以设置设备的属性。我们还可以看到类似的例子,比如环境监测设备的温度、湿度这两个属性等。

2024-07-25 08:00:00 63

原创 【EMQX实践】EMQX 配置及运用

在先前一系列精心策划的篇章中,我们已深入浅出地剖析了EMQX的安装流程、丰富功能及其独特优势,更详尽地探讨了如何在Java的SpringBoot应用框架中巧妙设计架构、精心编织代码。而今,本文旨在引领您跨越理论至实践的桥梁,聚焦于如何在真实应用场景中迅速部署EMQX以构建高效网关服务,并实现与具体业务逻辑的无缝数据交流与互动,从而加速您的项目落地与价值实现。

2024-07-24 08:00:00 1122

原创 【EMQX实践】如何感知设备上下线

当消息发布到这个主题时,EMQX会按照特定的分发策略(如随机、轮询、粘性、哈希等)将消息分发给共享组中的一个客户端,确保每个消息只被一个客户端接收并处理。EMQX在此场景中属于设备连接网关关键节点,EMQX不紧紧只是消息中间件的作用,我们更需要监控哪些设备什么时候连接上线,又在什么时候断开下线。在MQTT协议中,当设备客户端连接或断开与EMQX服务器的连接时,EMQX会发布相应的上下线事件到特定的系统主题。EMQX发生设备断开连接的系统消,此时服务端将接收到设备断开消息,感知到设备下线。

2024-07-24 08:00:00 1508

原创 【EMQX实践】SpringBoot集成EMQX客户端组件

客户端上下文主要管理MQTT连接信息、MQTT连接、断开连接、消息推送、主题订阅等。

2024-07-23 08:00:00 1258

原创 【EMQX实践】0到1实现EMQX客户端组件

*** @Description emqx-client 上下文/*** Description: EMQX 建立连接/*** Description: EMQX 关闭连接/*** Description: EMQX-CLIENT 是否在线/*** Description: EMQX-CLIENT 推送消息/*** Description: 关闭 EMQX-CLIENT//订阅的系统topic/**/**

2024-07-23 08:00:00 1085

原创 【EMQX实践】EMQX Dashboard使用教程

EMQX Dashboard是EMQX Broker的一个内置Web管理控制台,它为用户提供了一个直观且功能丰富的界面来监控、管理和配置EMQX集群。本文主要介绍实践中常用的功能。

2024-07-22 08:15:00 1937

原创 雷军年度演讲:干一行,爱一行

在2024年07月19日,雷军发表了自己的年度演讲。这是我第一次完整的听完演讲,感受颇多。互联网上经常留行一句话:“你或许不喜欢小米,但是没有办法不喜欢雷军”。尤其是雷总所阐述的“干一行,爱一行”这一篇章,其深邃的内涵如同烙印般镌刻在我的记忆深处,激起了心中无尽的涟漪与深刻的思考。

2024-07-22 08:00:00 710

原创 【EMQX实践】EMQX 主题

MQTT 主题本质上是一个 UTF-8 编码的字符串,是 MQTT 协议进行消息路由的基础。MQTT 主题类似 URL 路径,使用斜杠 / 进行分层:下面以设备//设备端product/deviceId/event/property/post // 发布 设备属性上报product/deviceId/service/property/set // 订阅 设备属性设置product/deviceId/service/property/set_reply // 发布 设备属性设置_响应//服务端。

2024-07-20 09:16:12 1065

原创 【EMQX实践】EMQX集群

除了运行单个 EMQX 节点,EMQX 本身支持分布式集群架构,能够在保证高可用性、容错性和可扩展性的同时,处理大量的客户端和消息。通过使用 EMQX 集群,您可以在一个或多个节点发生故障时仍然保持集群运行,从而享受到容错和高可用性的好处。相比与之前版本,EMQX 5.0 集群采用了新的,单节点能支持 500 万 MQTT 设备连接,集群可扩展至 1 亿并发 MQTT 连接。

2024-07-20 08:15:00 959

原创 【EMQX实践】IOT网关技术方案

以EMQX为核心构建稳定、安全、高效的IoT网关,需要充分利用EMQX的强大基础架构、高可靠性、实时监控与运维、端到端数据加密、细粒度访问控制、多协议支持、高性能、灵活的扩展性和强大的数据处理能力等特点和优势。同时,还需要结合具体的业务场景和需求,进行定制化的开发和配置,以确保IoT网关的稳定、安全和高效运行。服务作为微服务系统的一部分,采用服务端多实例部署方式时,为确保系统的稳健运行,MQTT客户端代码必须体现高度的可维护性、可重用性、模块化和灵活性。EMQX集群具备下面优点。

2024-07-19 08:15:00 745

原创 【EMQX实践】MQTT BROKER 技术选型

通过前文的介绍和对比,我们可以看到,每个 MQTT Broker 都有其独特的优点,适合不同的部署场景。EMQX 具有高扩展性和企业级功能,适合在云端部署,EMQX 社区活跃。

2024-07-19 08:15:00 203

原创 【EMQX实践】Windows上安装EMQX及其配置使用教程

是 EMQX 开源的一款跨平台 MQTT 5.0 客户端工具,它支持 macOS、Linux、Windows,并且支持自定义脚本模拟测试、MQTT 消息格式转换、日志记录等多个功能。您可通过 MQTTX 一键式的连接方式和图形界面,您可轻松测试 MQTT/TCP、MQTT/TLS、MQTT/WebSocket 连接。在 EMQX 中配置 TCP 监听器,需在 EMQX 安装目录下的 etc 文件夹中的 emqx.conf 文件添加 listeners.tcp 配置项。公众号: java程序猿技术。

2024-07-18 09:00:00 4245

原创 【EMQX实践】EMQX 快速入门

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种轻量级的、基于发布/订阅(publish-subscribe)模式的消息中间件通信协议,特别适合于资源有限的设备和网络带宽受限的环境。该协议由IBM公司在1998年设计并开发,现已成为物联网(IoT)、机器对机器(M2M)通信、移动应用以及实时数据传输等领域广泛应用的标准之一。主要用于物联网(IoT)、移动互联网以及远程传感器等低带宽、高延迟、不可靠网络环境下的通信。轻量级协议。

2024-07-18 08:15:00 1389

原创 【EMQX实践】MQTT发布_订阅

MQTT(Message Queuing Telemetry Transport)是一个轻量级的发布/订阅消息传输协议,它被设计为开放、简单、易于实现,并且能够在带宽有限或不稳定的网络环境中工作。MQTT广泛应用于物联网(IoT)场景,其中设备之间需要高效率地交换消息。

2024-07-17 08:15:00 631

原创 【EMQX实践】MQTT的QoS

选择QoS等级时,需要根据应用场景的具体需求来权衡。QoS 0提供了最高的传输效率,但无法保证消息的送达;QoS 1在保证消息至少送达一次的同时,可能会产生重复消息;QoS 2提供了最严格的传输保证,确保消息只送达一次,但传输开销最大。开发者应根据消息的重要性、网络环境、系统资源和应用的容忍度来选择最合适的QoS等级,以实现高效且可靠的消息通信。关注公众号【 java程序猿技术】获取EMQX实践系列文章。

2024-07-17 08:15:00 866

原创 【EMQX实践】MQTT连接_断开

在MQTT协议中,建立连接和断开连接是通过特定的控制报文来完成的。

2024-07-16 00:47:18 766

原创 【EMQX实践】MQTT基本概念

MQTT,作为一种专为物联网(IoT)设备间通信而精心设计的发布/订阅协议,它摒弃了HTTP传统的请求/响应模式,转而采用了一种更为灵活的事件驱动机制。这种机制允许MQTT以推送的方式将消息直接传递给客户端,从而实现了实时性和效率的优化。该架构的核心优势在于其解耦设计,它有效地将数据的生产者和消费者分离,消除了两者之间的直接依赖关系。这种解耦不仅增强了系统的灵活性和可维护性,还为实现高度可扩展的解决方案提供了可能。

2024-07-16 00:44:32 685

原创 【EMQX实践】专栏

在技术的海洋中,Java 的世界无疑是宽广而深邃的,它如同无垠的汪洋,充满了无尽的探索与学习的机会。过去的五年里,我专注于电商领域,深耕于营销与供应链的业务逻辑,积累了宝贵的经验。然而,2023年,我踏上了新的征程,踏入了物联网(IoT)的奇妙世界,业务重心也随之转向了这片全新的领域。尽管我对IoT技术栈有初步的了解,但深知隔行如隔山,我面临的是一次巨大的技术转型。而此次转型的挑战更是前所未有的——我需要在短时间内搭建起一个全新的微服务系统,并构建一个稳定、安全、可靠的MQTT设备网关。这无疑是对我技术能

2024-07-15 08:30:00 426

原创 Windows安装PostgreSQL

PostgreSQL是一种功能齐全的对象-关系型数据库管理系统(ORDBMS),它以加州大学伯克利分校计算机系开发的POSTGRES项目为基础,经过多年的发展,已成为一个高度可扩展、支持多种数据类型、具备复杂查询能力的数据库系统。在Windows系统上安装PostgreSQL,可以为用户提供便捷的数据管理解决方案。

2024-07-15 08:15:00 844

原创 Windows安装免费Navicat Premium Lite

近日,Navicat 正式推出一款免费的数据库管理开发工具——Navicat Premium Lite。这款软件是针对入门级用户而设计的,支持基础的数据库管理和协同合作功能。虽然它的功能与 Navicat Premium 17 有较大差异,但足以满足初级用户的绝大部分需求。对于刚接触数据库管理的新手用户来说,它无疑是一个非常好的入门工具。

2024-07-15 08:00:00 992

原创 【EMQX实践】如何感知设备上下线?

当消息发布到这个主题时,EMQX会按照特定的分发策略(如随机、轮询、粘性、哈希等)将消息分发给共享组中的一个客户端,确保每个消息只被一个客户端接收并处理。EMQX在此场景中属于设备连接网关关键节点,EMQX不紧紧只是消息中间件的作用,我们更需要监控哪些设备什么时候连接上线,又在什么时候断开下线。在MQTT协议中,当设备客户端连接或断开与EMQX服务器的连接时,EMQX会发布相应的上下线事件到特定的系统主题。您可点击 File 数据源对应的操作栏下的 设置 按钮查看或更改 ACL 文件中配置的授权规则。

2024-05-11 14:40:59 1023 2

原创 final、finally、finalize有什么区别?

由于final变量一旦初始化后不可再赋新值,所以在多线程环境下,程序员可以不必为final变量的同步操心,这无疑减轻了同步控制的负担,同时也规避了进行不必要的防御性复制操作,进而提升了代码的简洁性和效率。通过Cleaner,开发者可以确保在对象被垃圾收集器最终回收之前,操作系统级别的资源(如文件描述符等)得到妥善释放,从而降低了资源泄露的风险,并提高了程序的整体健壮性和稳定性。在后续的教程或专栏中,将进一步详细介绍Java中各种引用类型,包括幻象引用及其在资源回收中的具体应用。

2024-04-30 22:21:10 1054

原创 Spring AI 来啦,快速上手

Spring AI项目的推出,为Java企业级应用带来了新的发展机遇。它将AI技术与Spring框架完美融合,简化了AI功能的集成过程,让开发者能够更高效地构建智能化应用。Spring AI不仅提供了丰富的工具和库,还集成了NLP、机器学习等核心功能,降低了开发者使用AI技术的门槛。随着AI技术的不断发展和普及,Spring AI有望为开发者打开更多创新的大门,推动软件行业的持续进步。未来,Spring框架将继续引领企业级应用开发的潮流,与AI技术共同创造更多价值,为企业创造更大的竞争优势。

2024-04-29 18:21:27 811 1

原创 EMQX 实践

任何新的订阅者订阅与该保留消息中的主题匹配的主题时,都会立即接收到该消息,即使这个消息是在它们订阅主题之前发布的。默认情况下,消息会被转发给所有匹配的订阅者。EMQX Dashboard 提供了开箱即用的认证与权限管理功能,用户仅通过用户界面,就可以快速实现客户端认证授权机制的配置,无需编写代码或手动编辑配置文件,即可对接各类数据源与认证服务,实现各个级别与各类场景下的安全配置,以更高的开发效率获得更安全的保障。在发布消息的客户端和订阅的客户端之间充当中介,将所有接收到的消息转发到匹配的订阅客户端。

2024-03-17 19:33:35 1225 1

原创 EMQ X 快速入门

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种轻量级的、基于发布/订阅(publish-subscribe)模式的消息中间件通信协议,特别适合于资源有限的设备和网络带宽受限的环境。该协议由IBM公司在1998年设计并开发,现已成为物联网(IoT)、机器对机器(M2M)通信、移动应用以及实时数据传输等领域广泛应用的标准之一。主要用于物联网(IoT)、移动互联网以及远程传感器等低带宽、高延迟、不可靠网络环境下的通信。轻量级协议。

2024-03-16 21:01:35 3046

原创 Exception和Error有什么区别?

在面试过程中,面试官往往会针对这些细节进行进一步的询问。例如,他们可能会问到你对哪些特定的Error、Exception或RuntimeException有所了解?为此,我精心绘制了一个简洁的类图,并列举了一些典型的例子,供你参考。通过熟悉这些例子,你至少能够对Throwable、Exception、Error的基本分类和常用子类有一个清晰的认识。在这些子类型中,有些特别重要,需要重点理解。

2024-03-15 16:42:02 1027

原创 MQTT BROKER 技术选型

每个 MQTT Broker 都有其独特的优点,适合不同的部署场景。EMQX 具有高扩展性和企业级功能,适合在云端部署,EMQX 社区活跃。

2024-03-15 09:39:35 1508

原创 Windows安装EMQX

EMQX 是一款高性能、分布式且针对物联网 (IoT) 场景优化的 MQTT 消息中间件。它由 EMQ Technologies 开发,支持大规模设备连接,并提供了丰富的功能集以满足现代 IoT 通信需求。

2024-03-14 14:52:42 8677 8

EMQX的Windows安装包

EMQX的Windows安装包

2024-07-03

idea使用文档.zip

idea入门学习. Intellij IDEA作为现在Java开发主流的工具,是必须要掌握的。因此,好好研究它是很有必要的。

2019-09-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除