- 博客(45)
- 收藏
- 关注
原创 使用Java ApI 实现Hadoop文件上传
文件传输步骤在connect2HDFS()方法中,通过设置Configuration对象来指定HDFS的URI(在这个例子中为hdfs://192.168.12.133:9000),并初始化一个FileSystem实例fs,用于后续的所有HDFS操作。close()方法用于在完成所有HDFS操作后关闭与HDFS的连接,确保资源被正确释放。上传文件并分类 (uploadAndClassify(File file)):方法接收一个本地文件作为参数。将本地文件上传到HDFS上的相应目录中。
2025-03-31 16:55:09
899
原创 时序数据库:InfluxDB命令行操作
学习 InfluxDB 的命令行操作至关重要,它不仅是与数据库直接交互的工具,也是理解 InfluxDB 核心概念的关键途径。通过命令行,用户可以高效地执行数据库管理、数据查询和插入等任务,深入掌握 InfluxQL 的语法及功能。这对于调试、快速验证想法以及日常运维来说不可或缺。此外,熟练使用命令行有助于提升对 InfluxDB 工作原理的理解,为更复杂的应用开发和系统优化打下坚实基础。
2025-03-30 16:44:30
858
原创 时序数据库:InfluxDB安装与解读
每组field key和field value的集合,即我们需要的字段,如internale[key] = 76[value], external[key]= 18[value]。InfluxDB基于时间序列模型,专注于如监控、传感器数据的时间序列分析,重点在于高效存储和查询带时间戳的数据,支持快速聚合计算及数据保留策略管理。它能够轻松应对高容量时间序列数据的存储与管理,广泛应用于实时分析、监控系统及物联网领域,提供灵活的数据保留策略及强大的聚合功能。每个 shard group 覆盖特定的时间范围。
2025-03-30 15:50:46
876
原创 分布式任务调度框架XXl-job
xxl-job总结在之前写过一篇关于任务调度框架Spring Task的文章,此篇则是被广泛使用的任务调度框架xxl-job。在面对分布式部署、复杂任务调度需求以及需要强大管理和监控能力的场景下,XXL-JOB相较于Spring Task提供了更加全面和专业的解决方案。xxl-job简介XXL-JOB 是一个分布式任务调度平台,由美团点评的中间件研发工程师许雪里开发。它旨在提供一个易于使用、轻量级且易于扩展的任务调度解决方案。XXL-JOB 的核心设计理念包括快速开发、简单学习曲线以及高度的可扩展性。
2025-03-22 15:51:19
988
原创 Spring Task任务调度工具
Spring Task 是 Spring 框架提供的一个轻量级的任务调度工具,它使得在 Spring 应用中执行定时任务变得简单。Spring Task 可以很好地集成到 Spring 的环境中,利用 Spring IoC 容器的优势来管理任务的生命周期和依赖关系。
2025-03-20 15:12:17
737
原创 微信小程序登录流程详解
微信登录开发在现代应用开发中占据着极为重要的地位,尤其在中国市场。通过微信登录,开发者可以利用微信庞大的用户基础,简化用户的注册和登录流程,提高用户体验和转化率。它不仅为用户提供了便捷、快速的登录方式,还能增强应用的安全性,促进用户留存与活跃度。同时,结合微信生态系统的其他功能,有助于实现更深层次的用户互动和服务拓展。
2025-03-18 09:53:59
710
原创 提高开发效率:公共字段自动化填充方案
可以创建自定义注解,并结合AOP技术,在方法执行前后自动注入如创建时间、创建人等信息。这种方法特别适合于需要在多个地方复用的场景,而且不会侵入原有的业务逻辑代码。在真实企业开发中,为了规范化与提高扩展性,我们往往会加入枚举,常量来进行优化设计。首先,假设我们有创建时间,创建人,修改时间,修改人四个公共字段第一步,创建一个常量类(原因:规范化操作)
2025-03-17 20:12:28
814
原创 数据库建模
数据库建模是将现实世界的需求转化为数据库设计的过程,旨在创建一个高效、可靠的数据存储结构。它通常包括三个阶段:概念模型、逻辑模型和物理模型。(通常不直接考虑逻辑模型,而是与概念模型一起设计)概念模型:关注于识别系统中的关键实体及其关系,不涉及具体的技术细节。常用ER图(实体-关系图)来表示。物理模型:将逻辑模型转换成特定DBMS支持的具体实现,包括选择合适的数据类型、索引策略等。无论项目的业务逻辑设计得多么出色,掌握如何创建高效的数据库结构同样是至关重要的技能。
2025-03-17 08:00:20
716
原创 SpringDataRedis存储Redis的数据序列化
序列化是指将对象的状态信息转换为可以存储或传输的形式的过程。在反序列化时,这个过程是相反的,即将这些信息还原成对象。当你将数据存储到Redis中时,如果发现数据变成字节,这通常与序列化方式有关。指在Java环境中使用Redis客户端,默认情况下会使用JDK内置的序列化方式(即Serializable接口及ObjectOutputStream等类来实现对象的序列化)。问题解析兼容性问题:JDK序列化格式是Java特有的,这意味着只有Java程序才能反序列化这些对象。
2025-03-14 18:55:22
1134
原创 保持docker内容器一直运行
首先:确保Docker服务配置为开机自启,这样当虚拟机启动时,Docker也会启动,并按照设定的重启策略自动启动相关容器。创建容器时:当你使用命令启动容器时,可以添加标志并指定一个重启策略。对于希望容器随系统启动而自动启动的需求,推荐使用以nacos为例:加入 设置了重启策略为除非手动停止,否则总是重启。已存在容器时:如果您已经有一个正在运行或已停止的Nacos容器,并希望为其设置或更改重启策略,可以使用命令:实现虚拟机重启后自动恢复容器服务及其所需端口的使用,可以避免或解决以下几个常见问题:避免手动启动服
2025-03-13 20:33:49
569
原创 分布式事务管理:使用Seata简化微服务事务处理
分布式事务是指跨越多个计算机节点或数据库的事务处理过程。在传统的单体应用中,ACID(原子性、一致性、隔离性、持久性)特性相对容易实现。然而,在微服务环境中,由于涉及到不同服务之间的交互,确保这些特性的难度大大增加。例如,在订单处理过程中,既要更新库存系统也要更新支付信息,任何一步失败都可能导致数据不一致。
2025-03-11 15:47:22
1209
原创 微服务Sentinel组件:服务保护详解
下载jar包然后运行如下命令启动控制台:(打开cmd窗口)访问页面,就可以看到sentinel的控制台了:输入用户和密码,都是sentinel,即可登录成功。
2025-03-10 21:13:46
1111
原创 Gateway:网关路由与登录鉴权
每个微服务都有不同的地址或端口,入口不同,请求不同数据时要访问不同的入口,需要维护多个入口地址,前端无法调用nacos,无法实时更新服务列表。
2025-03-09 19:28:19
380
原创 OpenFeign:优雅实现微服务远程调用
OpenFeign 是一个声明式的Web服务客户端,简化了微服务间的HTTP调用。它通过注解方式定义接口和请求方法,自动实现服务间通信的细节,支持负载均衡、错误重试等功能,使得编写分布式应用变得更加容易。主要用于Spring Cloud项目中,增强服务调用的灵活性与可维护性。
2025-03-09 11:23:03
627
原创 Naocs:服务注册与发现实战
Nacos 是一个开源平台,用于动态服务发现配置管理和服务管理,支持微服务架构中的服务注册与发现、配置动态更新及基于权重的负载均衡,简化了分布式系统的构建与维护,提升了服务的灵活性和可靠性。
2025-03-09 10:51:55
765
原创 微服务的认识与拆分
微服务架构通过将应用分解为一组小的、独立的服务来实现,每个服务围绕特定业务功能构建,并能独立部署与扩展。这种架构增强了开发灵活性、提高了系统的可维护性和扩展性,使得团队可以更快地响应变化和市场需求。
2025-03-07 19:28:11
1198
原创 docker的常见命令及概念
由于制作镜像的过程中,需要逐层处理和打包,比较复杂,所以Docker就提供了自动打包镜像的功能。我们只需要将打包的过程,每一层要做的事情用固定的语法写下来,交给Docker去执行即可。然后,添加下列别名(按下键盘的i键,进入编辑模式,然后添加,按下Esc,在输入“:wq”即可): 最后的点是指构建时Dockerfile所在路径,由于我们进入了demo目录,所以指定的是。容器与数据卷的挂载要在创建容器时配置,对于创建好的容器,是不能设置数据卷的。在自定义网络中,可以给容器起多个别名,默认的别名是容器名本身。
2025-03-06 21:03:29
905
原创 MybatisPlus的扩展功能
MyBatis-Plus作为MyBatis的增强工具,提供了代码生成器、插件扩展、静态工具类、枚举类型转换器及JSON类型处理器等增强功能。代码生成器可根据数据库表自动生成实体类、Mapper、Service等代码,提高开发效率。插件如分页插件简化了分页操作。静态工具类如支持链式调用和条件构造。枚举类型转换器使得数据库与Java枚举类型间的数据映射更加便捷。JSON类型处理器则允许直接处理JSON格式数据,增强了数据交互的灵活性。这些功能在项目中分别针对不同场景提供支持,是提升开发效率和代码质量的重要工具。
2025-03-04 21:11:08
943
原创 MybatisPlus的简单应用与常见功能
利用Wrapper生成查询条件,再结合Mapper.xml编写SQL。批量新增IService中的批量新增功能使用起来非常方便。@Test// 准备10万条数据i++) {// 每1000条批量插入一次System.out.println("耗时:" + (e - b));。顾名思义,就是重写批处理的statement语句。修改项目中的application.yml文件,在jdbc的url后面添加参数spring:性能将大大提升。
2025-03-04 19:59:54
838
原创 Elasticsearch:简化大数据分析,使用Elasticsearch进行高效数据聚合
聚合()可以让我们极其方便的实现对数据的统计、分析、运算。
2025-03-04 10:10:22
740
原创 Elasticsearch:驾驭数据浪潮,利用Java API与Elasticsearch DSL构建智能搜索
在当今数据驱动的企业环境中,利用Java API与Elasticsearch DSL构建的智能搜索应用扮演着至关重要的角色。它不仅能够高效处理和分析海量数据,还能提供精准、即时的搜索结果,极大地提升了信息检索的效率和准确性。通过灵活运用DSL查询,企业可以实现复杂的搜索需求,支持决策制定。
2025-03-03 21:04:36
689
原创 Elasticsearch:解锁深度匹配,运用Elasticsearch DSL构建闪电般的高效模糊搜索体验
一般是在特定的字段里查询特定值,属于简单查询,很少单独使用。:以逻辑方式组合多个叶子查询或者更改叶子查询的行为方式。
2025-03-03 20:18:56
1091
原创 探索Elasticsearch:文档的CRUD
在企业环境中,Elasticsearch对文档操作的支持不仅是实现高效搜索的关键,更是数据驱动决策的重要支柱。它通过强大的索引机制和灵活的查询语言,使企业能够实时处理和分析海量文档数据,迅速获取有价值的洞察,从而加速创新、优化运营并提升客户体验。Elasticsearch让文档管理从简单的存储检索升级为智能信息发掘,成为现代企业不可或缺的数据处理引擎。elasticsearch是面向存储的,可以是数据库中的一条商品数据,一个订单信息。文档数据会被序列化为json格式后存储在elasticsearch中。
2025-03-03 10:41:24
1421
原创 探索Elasticsearch:索引的CRUD
在企业环境中,Elasticsearch的索引CRUD(创建Create、读取Read、更新Update、删除Delete)操作是非常基础且频繁使用的功能。这些操作对于管理和维护数据至关重要,尤其是在处理大规模数据集和需要实时搜索与分析的应用场景中。在Elasticsearch中,Index就类似数据库表,Mapping映射就类似表的结构。我们要向es中存储数据,必须先创建Index和Mapping。
2025-03-03 09:33:39
1116
原创 Elasticsearch vs MySQL:倒排索引的搜索优势揭秘
倒排索引支持复杂的查询类型如模糊匹配、短语查询等,并能结合评分机制对结果排序,确保相关性最高的文档优先展示。其分布式架构进一步保证了在处理大规模数据时的性能和可靠性,让实时数据分析成为可能。这使得Elasticsearch在多种应用场景中成为首选的搜索解决方案。
2025-03-02 19:31:50
1084
原创 探索Elasticsearch:认识与安装
Elasticsearch 是一款基于Apache Lucene的开源搜索引擎,在现代数据管理和分析领域占据重要地位。它以其高效的全文搜索、实时数据分析能力和灵活的分布式架构著称,能够处理从GB到PB级别的海量数据。Elasticsearch不仅支持复杂的查询和聚合操作,还提供了便捷的RESTful API接口,易于与各种应用集成。作为Elastic Stack的核心组件之一,它与Logstash(用于数据收集和转换)、Kibana(用于数据可视化)紧密协作,为企业提供强大的日志分析、监控和搜索解决方案。
2025-03-02 16:50:35
477
原创 RabbitMQ——延迟消息的实现
当一个队列中的消息满足下列情况之一时,可以成为死信(dead letter):1.消费者使用或basic.nack声明消费失败,并且消息的requeue参数设置为false2.消息是一个过期消息,超时无人消费3.要投递的队列消息满了,无法投递在消息队列系统中,当一条消息由于未被成功消费而成为死信,并且原队列配置了属性指向特定的交换机时,这个交换机就被称为死信交换机(Dead Letter Exchange, DLX)。随后,这些死信消息会被投递到DLX,并根据其绑定规则路由到与之关联的队列中。
2025-03-01 19:58:37
1078
原创 RabbitMQ—保障消费者的可靠性和机制与策略
在企业级应用中,确保消息队列(MQ)消费者的可靠性和效率是至关重要的。这不仅影响到数据的一致性和准确性,也直接关系到用户体验和业务流程的顺畅运行。保障消费者的可靠性不仅仅是技术层面的问题,更是关乎企业能否实现高效、稳定运营的关键因素。通过实施有效的机制和策略,不仅可以提升系统的整体性能,还能增强客户满意度,促进业务的持续发展。问题:RabbitMQ如何得知消费者的处理状态解决:消费者处理消息时的可靠性解决方案。
2025-03-01 15:25:17
1236
原创 RabbitMQ — 数据持久化实现MQ可靠性
上篇我们实现:publisher发送到MQ的可靠性实现,那么接下来MQ本身对于消息的处理该如何保证可靠呢?
2025-03-01 09:53:12
645
原创 RabbitMQ——消息发送的双重保障机制
每个RabbitTemplate只能配置一个ReturnCallback。@Slf4j@Overridelog.error("触发return callback,");});由于每个消息发送时的处理逻辑不一定相同,因此ConfirmCallback需要在每次发消息时定义。@Test// 1.创建CorrelationData// 2.给Future添加ConfirmCallback@Override// 2.1.Future发生异常时的处理逻辑,基本不会触发。
2025-02-28 21:21:01
1127
原创 微服务学习(5):消息转换器由JDK序列化——JSON序列化
在企业应用中,将消息转换器从JDK序列化改为JSON序列化提升了系统间通信的效率与安全性。JSON作为轻量级数据交换格式,增强了跨平台兼容性,简化了开发与维护。相比JDK序列化,JSON序列化减少了潜在的安全风险,提供了更紧凑的数据表示,有助于降低带宽占用和提高响应速度,从而优化了整体性能,特别适用于分布式系统的数据交换场景。
2025-02-28 19:38:59
739
原创 微服务学习(4):RabbitMQ中交换机的应用
Fanout在MQ中你可以连接为广播。在广播模式下,消息发送流程是这样的:实现要求:可以有多个队列每个队列都要绑定到Exchange(交换机)生产者发送的消息,只能发送到交换机交换机把消息发送给绑定过的所有队列订阅队列的消费者都能拿到消息在Fanout模式中,一条消息,会被所有订阅的队列都消费。但是,在某些场景下,我们希望不同的消息被不同的队列消费。这时就要用到Direct类型的Exchange。在Direct模型下:队列与交换机的绑定,不能是任意绑定了,而是要指定一个。
2025-02-27 20:39:51
1305
原创 微服务学习(3):Work Queues的作用与测试
Work模型的使用:多个消费者绑定到一个队列,同一条消息只会被一个消费者处理,通过设置prefetch来控制消费者预取的消息数量。Work Queues成为优化分布式系统中任务处理流程的理想选择,尤其适用于需要异步处理、负载均衡和系统扩展的应用场景。
2025-02-27 16:33:48
730
原创 微服务学习(2):实现SpringAMQP对RabbitMQ的消息收发
将来我们开发业务功能的时候,肯定不会在控制台收发消息,而是应该基于编程的方式。而Spring的官方刚好基于RabbitMQ提供了这样一套消息收发的模板工具:SpringAMQP。Spring AMQP是Spring框架下用于简化AMQP(高级消息队列协议)应用开发的一套工具集,主要针对RabbitMQ等消息中间件的集成。它提供了基于模板的消息发送和接收方法(如AmqpTemplate),以及用于配置和管理交换机、队列及其绑定关系的机制。解读:实现SpringAMQP对RabbitMQ的消息收发的测试。
2025-02-27 15:47:35
948
原创 微服务学习(1):RabbitMQ的安装与简单应用
RabbitMQ是一个开源的消息队列软件(消息代理),实现了高级消息队列协议(AMQP)。它允许不同应用系统之间、以及分散系统中的各个组件之间通过消息传递进行通信和数据交换,从而实现松耦合的系统设计。RabbitMQ支持多种消息协议,易于在分布式系统中使用,具有高可用性和可扩展性。
2025-02-27 15:05:02
1110
原创 Swagger接口文档:明明加入@RequestBody,但是请求类型不是application/json
如果导到错误,那么swagger框架默认你是表单,提供请求数据类型为表单:application/x-www-form-urlencoded。错误原因:@RequestBody注解的导包错误。应该使用spring-web提供的包,就是第一个。请求数据类型为:application/x-www-form-urlencoded。请求数据类型为:application/json。
2025-02-20 17:09:26
241
原创 报错 :The version cannot be empty
这段代码配置了Maven编译插件maven-compiler-plugin,并指定了Lombok作为注解处理器。例如:lombok提供的日志无法使用,说明:lombok集成失败。在maven打包插件下,如果指定lombok为注解处理器,必须指定版本。我希望在springboot项目中集成lombok,所以在pom.xml中引入了以下依赖。指定Lombok的版本为1.18.20,并将其路径添加到注解处理器路径中。但是在进行项目maven - compile时,报错如下。
2025-02-20 16:53:37
383
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人