自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(140)
  • 收藏
  • 关注

原创 Netty到底是什么,解决了什么问题,Netty为什么会火,Netty有什么特性

Netty是一个高性能、异步事件驱动的网络应用框架,它基于Java NIO(New Input/Output)开发,并对Java NIO进行了封装和扩展。

2025-01-21 21:12:24 411

原创 Iot物联网 thingsboard源码一次编译通过,java代码编译一次通过

先把sql文件放到这个目录下面,.\thingsboard\application\src\main\data\sql 目录下,再执行ThingsboardInstallApplication.java main方法。ThingsboardInstallApplication.java 第一次执行的时候,需要执行这个main方法,把sql语句执行,插入到pgsql中。自此,thingsboard源码编译,打包,前后端服务启动都正常完成了。2. 确保你的idea工具是使用的指定的jdk,maven版本。

2025-01-09 18:25:15 791

原创 Akka Actor 处理流程简述

2. 通过 ActorSystem 创建 ActorRef,并将消息发送到 ActorRef。6. 邮箱取出一条消息并委派给 Actor 的 receive 方法。4. Dispatcher 依次的将消息发送到 Actor 邮箱中。3. ActorRef 将消息传递到 Dispatcher中。5. Dispatcher 将邮箱推送至一个线程中。1. 创建 ActorSystem。

2025-01-09 16:25:54 147

原创 mysql数据库中,一棵3层的B+树,假如数据节点大小是1k,那这棵B+可以存多少条记录(2100万的由来)

在MySQL的3层B+树中,具体能存储的数据量取决于页大小、每行数据大小和索引项大小。在典型情况下,3层B+树可以存储约几千万行数据(如2000万到4000万行,具体取决于每行数据的大小)。对于更大的数据集,B+树的高度可能会增加,但通常MySQL的B+树高度不会超过4层。请注意,以上计算是基于一些假设条件的,实际存储能力可能会因具体的数据库配置和表结构而有所不同。

2024-12-25 20:32:09 435

原创 docker 镜像安装kafka,依赖安装zookeeper、kafkamanager可视化工具docker-compose安装

docker 镜像安装kafka,依赖安装zookeeper、kafkamanager可视化工具。研究互联网iot平台 thingsboard,需要对接kafka,所以本地起了kafka服务。docker安装:zookeeper/kafka/kafka-manager。2. 启动完成后,输入 http://localhost:9000 进行查询。cluster zookeeper hosts:输入。通过docker-compose进行安装。

2024-12-24 11:24:36 378

原创 【spring】spring框架中使用的设计模式有哪些,经典的设计模式应用,spring框架中哪些地方使用了哪些优秀的设计模式

Spring框架在设计和实现过程中,广泛使用了多种设计模式以增强其灵活性、可扩展性和易用性。此外,Spring框架还使用了其他设计模式,如组合模式、构建者模式等,这些设计模式的运用使得Spring框架更加灵活、可扩展和易于使用。【spring】spring框架中使用的设计模式有哪些,经典的设计模式应用,spring框架中哪些地方使用了哪些优秀的设计模式。

2024-09-15 09:18:04 1110

原创 【spring】spring bean对象生命周期,spring容器如何管理bean,spring容器的名称是叫什么

【spring】spring bean对象生命周期,spring容器如何管理bean,spring容器的名称是叫什么。

2024-09-15 09:12:54 1168

原创 【限流算法】常见的限流算法有哪些,怎么做限流操作

【限流算法】常见的限流算法有哪些,怎么做限流操作在Java应用中实现限流(Rate Limiting)通常是为了控制对资源或服务的访问速率,防止因过载而导致的服务不可用。

2024-09-13 18:02:19 631

原创 【RocketMQ】RockerMQ如何保证数据的可靠性,RockerMQ如何保证数据不丢失

【RocketMQ】RockerMQ如何保证数据的可靠性,RockerMQ如何保证数据不丢失RocketMQ通过一系列机制来确保数据(即消息)在传输和处理过程中不丢失。

2024-09-12 11:25:30 554

原创 【RabbitMQ】RabbitMQ如何保证数据的可靠性,RabbitMQ如何保证数据不丢失,数据存储

【RabbitMQ】RabbitMQ如何保证数据的可靠性,RabbitMQ如何保证数据不丢失,数据存储RabbitMQ通过一系列机制来确保数据(即消息)在传输和处理过程中不丢失。

2024-09-12 11:05:23 1086

原创 【BIM模型数据】BIM模型的数据如何存储,BIM大模型数据云端存储,需要考虑哪些因素,BIM模型数据存储和获取

【BIM模型数据】BIM模型的数据如何存储,BIM大模型数据云端存储,需要考虑哪些因素,BIM模型数据存储和获取BIM文件的结构化数据和非结构化数据的存储方式,需要根据数据的特性和使用需求来选择。

2024-09-12 10:51:44 913

原创 【JVM GC核心参数】JVM原理,JAVA 各种垃圾回收器的核心参数,JAVA GC回收器参数配置,核心参数说明

【JVM GC核心参数】JVM原理,JAVA 各种垃圾回收器的核心参数,JAVA GC回收器参数配置,核心参数说明。

2024-09-12 10:48:58 1161

原创 【分布式架构】什么是分布式架构,分布式架构的应用场景有哪些,我什么时候需要考虑分布式架构,系统分布式架构修养考虑哪些因素

想起很早之前,做的单体项目,一个war包,独立部署,后来做了多个节点集群部署,通过nginx负载均衡。那这里,nginx集群+多个tomcat集群 部署,这种架构算分布式架构吗? 答案是:显然不是。 分布式架构是一种将系统拆分成多个独立的子系统,并将这些子系统分布在不同的计算机节点(或称为分布式节点)上,通过网络协议相互通信和协作,共同完成系统功能的架构模式。这种架构模式的设计旨在提高系统的可伸缩性、可靠性和性能。那分布式架构需要考虑哪些因素呢?系统拆分:将一个大型系统拆分成多个

2024-09-11 14:05:04 948

原创 【高并发设计】系统三高是哪三高,高并发,到底QPS达到多少才算高并发,多大的并发才算是高并发,今天我们来简单聊聊

【高并发设计】系统三高是哪三高,高并发,到底QPS达到多少才算高并发,多大的并发才算是高并发,今天我们来简单聊聊在软件开发和互联网技术的语境下,系统三高通常指的是。系统三高共同构成了一个健壮、高效、可靠的系统架构,为用户提供了优质的服务体验。“高并发”这个概念并没有一个绝对的、固定的阈值或标准,因为它取决于多种因素,包括系统的架构、硬件配置、软件优化、网络条件、用户行为模式以及业务的具体需求等。不过,可以从一些常见的角度来理解和衡量高并发。

2024-09-11 13:49:16 1207

原创 【kafka】kafka如何保证数据的可靠性,kafka如何保证数据不丢失

1. 情况一,Producer向kafka发送消息的时候,ack设置的是0,(0就是producer向broker发生数据后,不需要ack确认)如果这个时候broker leader节点宕机,这个时候数据在broker leader中还没有存储,也没有同步到broker follower节点中,数据就会丢失。Producer默认的ack确认值是-1,就是leader接收消息后发生ack确认给producer。当cache满了才刷到磁盘上。2. 情况二,Producer向Kafka发生消息的时候,由于。

2024-09-10 23:30:33 711

原创 【JVM 工具命令】JAVA程序线上问题诊断,JVM工具命令的使用,jstat, jstack,jmap命令的使用

FGCT这一列表示累计进行fullgc的耗时,第三次fgc的时间减去第二次fgc的时间就是第三次fgc花费的时间。【JVM 工具命令】JAVA程序线上问题诊断,JVM工具命令的使用,jstat, jstack,jmap命令的使用。通过jstat命令我们发现问题后就可以通过下面的jstack命令来定位java的哪个线程导致的具体问题。通过这个命令观察内存中最多的对象, 判断内存中积累的数据,监视内存中当前存活的对象内存占用情况。jvm优化就是优化减少fgc次数,同时减少fgc的时间。

2024-09-10 20:54:25 666

原创 【JAVA线上问题解决】JAVA应用程序CPU持续飙高,如何排查问题,如何快速定位问题,解决问题?

【JAVA线上问题解决】JAVA应用程序CPU持续飙高,如何排查问题,如何快速定位问题,解决问题?2. 查询异常进程中的线程情况, 获取异常线程的线程ID。1. top命令获取异常的java进程 PID。4. jstack工具跟踪堆栈定位问题代码。3. 将线程ID转为十六进制。四步教你快速定位问题代码。

2024-09-10 12:48:13 441

原创 【高性能代码】提高代码的性能有哪些方式,如何写出高性能代码,一段代码如何提高这段代码的执行性能,高性能代码开发

提高代码的性能是软件开发中一个重要的方面,尤其是在处理大数据、高并发或实时性要求较高的应用时。【高性能代码】提高代码的性能有哪些方式,如何写出高性能代码,一段代码如何提高这段代码的执行性能,高性能代码开发。提高代码性能是一个持续的过程,需要不断地分析、测试和优化。通过上述策略和技术,一点一滴,逐步代码的执行性能。

2024-09-07 16:39:23 452

原创 【大数据Big DATA】大数据解决方案,提供完整的大数据采集,大数据存储,大数据处理,具体业务应用解决方案

大数据解决方案是指利用大数据技术,结合企业实际业务需求,为企业提供数据采集、存储、处理、分析和报告等一站式服务,以帮助企业更好地利用大数据提高运营效率、优化决策制定。

2024-09-06 15:24:58 1478 1

原创 【算法:二分查找】java算法二分查找,如何通过二分查找找到重复元素的第一个,coding

二分查找算法,是基于有序的结果集进行查询的。二分查找的时间复杂度是O(logN)

2024-09-05 13:17:05 380

原创 【JAVA GC垃圾回收器】JAVA GC垃圾回收算法,垃圾回收器,垃圾回收策略总结,可达性分析算法,分代垃圾回收

如果一个对象无法通过根节点到达,那么它就被认为是垃圾,需要被回收的对象。ps: 除了可达性分析算法外还有引用计数算法,也可以标记垃圾对象,但是引用计数法存在一个问题,就是对象循环引用的问题,导致本应该是垃圾的对象不能标记为垃圾。1). 选择合适的垃圾回收器:根据应用程序的特点选择合适的垃圾回收器,例如对于需要低延迟的应用程序,可以选择并发垃圾回收器,比如CMS,G1。3). CMS GC ,最短停顿时间为目标,提高快速响应为目标, 不是默认的垃圾回收器,因为比如内存碎片,STW,配置成本高等原因导致。

2024-09-04 22:24:46 807

原创 【spring系列】spring的AOP是在哪个阶段创建的动态代理对象,spring bean的生命周期中在什么阶段创建的aop动态代理对象,很多人会说第一种,其实还有一种情况也会进行aop

2. 【属性注入时候】还有一种特殊情况,是在Bean的属性注入的时候,存在循环依赖的情况下,也会为循环依赖的Bean通过 MergedBeanDefinitionPostProcessor.postProcessMergedBeanDefinition()方法创建aop。spring的AOP是在哪个阶段创建的动态代理对象,spring bean的生命周期中在什么阶段创建的aop动态代理对象,很多人会说第一种,其实还有一种情况也会进行aop。:然后,为Bean填充依赖注入的属性。

2024-08-28 14:35:30 1605

原创 【mybatis系列】spring是如何整合mybatis将Mapper接口注册为Bean的

【mybatis系列】spring是如何整合mybatis将Mapper接口注册为Bean的Spring整合MyBatis将Mapper接口注册为Bean的原理,主要是通过MapperScannerConfigurer (实现了BeanDefinitionRegistryPostProcessor接口)(或Spring Boot的自动配置)扫描Mapper接口,创建MapperFactoryBean的BeanDefinition实例,并注册到Spring容器中。

2024-08-28 13:53:31 1786 1

原创 【kafa系列】kafka如何保证消息不丢失

【kafa系列】kafka如何保证消息不丢失Apache Kafka通过多种机制来确保消息不丢失,这些机制包括但不限于副本机制、ISR(In-Sync Replicas)机制、ACK(Acknowledgment)机制、幂等生产者(Idempotent Producer)、事务性发送(Transactional Messaging)以及持久化机制等。

2024-08-27 23:44:51 910 2

原创 【java多线程】java同步机制synchronized和Lock的区别

【java多线程】java同步机制Synchronization和Lock的区别Synchronization(通常指Java中的synchronized关键字)和Lock(Java中的一个接口)在Java多线程编程中都用于实现同步机制,显示多线程下数据的安全性,但它们之间存在一些关键的区别。

2024-08-26 15:45:25 369

原创 【多线程】如何保证多线程数据的安全性

【多线程】如何保证多线程数据的安全性保证线程数据的安全是多线程编程中的一个重要问题,它涉及到如何防止多个线程在同时访问共享数据时发生数据不一致或损坏的情况。

2024-08-26 12:25:12 1203

原创 【springboot系列】springboot的jar包为什么可以直接运行呢,为什么是打出来war包,而springboot应用是打出来jar包呢?

4. Far jar的启动Main函数是JarLauncher,它负责创建一个LaunchedURLClassLoader,这是一个自定义的类加载器,用来加载boot-lib下面的jar,2. springboot应用打包之后,生成一个Fat jar(就是jar包中包含jar),包含了应用依赖的jar包和spring boot loader相关的类。【springboot系列】springboot的jar包为什么可以直接运行呢,为什么是打出来war包,而springboot应用是打出来jar包呢?

2024-08-25 20:51:36 732

原创 【springboot系列】springboot的启动原理,springboot应用是如何启动的

通过扫描类路径中的组件和配置类(由和等注解指定)来加载Bean定义。注解激活了自动配置的魔法,它告诉Spring Boot基于添加到项目中的jar依赖,尝试去猜测并配置你可能需要的Bean。自动配置类会在应用上下文中被条件化地执行。

2024-08-25 20:27:14 385

原创 【springboot系列】springboot的自动装配原理,为什么要自动装配呢?

如果默认的自动装配策略不能满足需求,开发者可以通过编写自定义的自动配置类来覆盖或扩展自动配置。这些自定义的自动配置类同样需要遵循Spring Boot的约定,包括使用条件注解、定义bean等。

2024-08-25 20:20:14 392

原创 【mysql系列】阿里巴巴的规范里为什么不建议3张表以上的left join查询,mysql left join查询是怎么实现的,为什么要禁止多表的left join查询

block nested loop join 基于缓存的嵌套循环,就是用到了 buffer, 当外循环查询的时候,查询到的数据会放在多个join buffer中 然后内循环的时候,每行数据和每个buffer中的数据进行比较,从而检查查询次数, 复杂度是。知道了上面这3种情况后,就知道表越多, 表中数据越多的时候,join查询的性能会越来越低。index nested loop join 基于索引的嵌套循环,好点,当内循环的查询,可以使用到索引的时候,就会根据索引进行查询,

2024-08-21 16:18:42 491

原创 【mysql系列】mysql exists 和in查询的区别,什么时候用exists查询什么时候用in查询呢,哪个效率高呢

1. 子查询是数据量小的查询(小表),这个时候就用in 查询,子查询会优先查询。select A from t where id in (select t_id from t2 where ...) -- in查询,括号内的子查询会优先查询。2. 子查询是数据量大的查询(大表),这个时候就用exists 查询,外层查询会优先查询。select A from t where exists (select 1 from t2 where ...)-- exists 查询,前面的查询会优先查询。

2024-08-21 16:17:12 530

原创 【mysql系列】mysql left join查询如何优化,left join查询需要注意哪些地方

(左连接)查询是数据库查询中非常常见的一种操作,它用于从两个或多个表中返回左表(LEFT JOIN左边的表)的所有记录,以及右表(LEFT JOIN右边的表)中匹配的记录。查询的性能,尤其是在处理大型数据集时。然而,请注意,每个查询和数据库环境都是独特的,因此最好通过实际测试来确定哪些优化策略对你的情况最有效。像上面的left join查询,Table_a 要求是小表,table_b 是大表,满足小表驱动大表的规范。总结就是:小表驱动大表,join条件的列都是建立了索引,where条件的列都建立了索引。

2024-08-21 15:59:55 1821

原创 【mysql系列】在MySQL查询优化中,有一条,“小表驱动大表查询“,根据这个思路我们可以从哪些地方去优化mysql查询呢join查询,in查询,exists查询等等

【mysql系列】在MySQL查询优化中,有一条,"小表驱动大表查询",根据这个思路我们可以从哪些地方去优化mysql查询呢join查询,in查询,exists查询等等A X B = C可以理解小表在前,大表在后。即A是小表,B是大表。在MySQL查询优化中,"小表驱动大表查询"(Small Table Driving Large Table Query)是一种优化策略,其核心思想是在执行连接(JOIN)操作时,让较小的表(或称为结果集较小的表)作为驱动表,去连接较大的表。

2024-08-20 19:41:05 944

原创 mysql order by的执行原理,以及优化思路,怎么优化order by

MySQL 提供了 tmp_table_size 参数限制了内存临时表的大小,默认值是 16M,如果临时表大小超过了tmp_table_size,那么内存临时表就会转成磁盘临时表。上面这两种排序如果待排序的数据量大小没有超过sort_buffer_size大小,那么还是在 sort_buffer中排序,速度快。, 它表示MySQL用于排序行数据的长度的一个参数,如果单行的长度超过这个值,MySQL 就认为单行太大,就使用rowid 排序,否则使用全字段排序。rowid排序需要两次回表,可排序的数据多。

2024-08-20 15:41:19 674

原创 JAVA并发集合有哪些?除了你熟悉的ConcurrentHashMap,还用过哪些并发集合

LinkedBlockingDeque是双向链表实现的(指定大小)双向并发阻塞队列,该阻塞队列同时支持FIFO和FILO两种操作方式。一个维度是阻塞与非阻塞,所谓阻塞指的是当队列已满时,入队操作阻塞;take会阻塞,pull不会阻塞没取到就返回null,队头获取数据,对尾添加数据,单向的FIFO。非阻塞,是双向链表实现的无界队列,该队列同时支持FIFO和FILO两种操作方式。非阻塞,是单向链表实现的无界队列,该队列按 FIFO(先进先出)排序元素。是数组实现的线程安全的有界的阻塞队列。

2024-08-20 14:18:37 1311

原创 【分布式事务】-Seata作为一款优秀的分布式事务解决方案,提供了多种可实现的事务模式,以满足不同的业务场景XA(强一致性、性能更差),AT(弱一致性、性能更好)

Seata(Simple Extensible Autonomous Transaction Architecture)是一款开源的分布式事务解决方案,它提供了高性能和简单易用的分布式事务服务。【分布式事务】-Seata作为一款优秀的分布式事务解决方案,提供了多种可实现的事务模式,以满足不同的业务场景XA(强一致性、性能更差),AT(弱一致性、性能更好)综上所述,Seata的四种分布式事务模式各有优缺点和适用场景,用户可以根据实际需求选择合适的事务模式。

2024-08-15 17:51:49 399

原创 【分布式事务】-分布式事务的实现方式多种多样,每种方式都有其特定的应用场景和优缺点。以下是几种常见的分布式事务实现方式,2PC,TCC,消息表

两阶段提交是最常见的分布式事务实现方式之一。它包含两个阶段:准备阶段(Prepare Phase)和提交阶段(Commit Phase)。在准备阶段,协调者(Coordinator)向所有参与者(Participants)发送准备(Prepare)请求,参与者执行事务操作但不提交,而是将操作结果(可以提交或中止)报告给协调者。如果所有参与者都准备好提交,协调者在提交阶段会向所有参与者发送提交(Commit)请求;如果有一个参与者无法提交,则所有参与者都会被指示中止(Abort)。

2024-08-15 17:47:29 891

原创 JAVA中new Object对象占用多少字节,Java对象的组成是哪些?Java对象头的组成又是哪些,MarkWord是什么,有什么作用?

JAVA中new Object对象占用多少字节,Java对象的组成是哪些?Java对象头的组成又是哪些,MarkWord是什么,有什么作用?

2024-08-15 00:22:58 1124

原创 JDK提供的一系列用于监控、管理和调试Java应用程序的工具(命令)你知道有哪些吗?jps,jinfo还有哪些,一文讲清楚这些命令的作用和用法jps,jinfo,jstat,jstack,jmap

JDK提供的一系列用于监控、管理和调试Java应用程序的工具(命令)你知道有哪些吗?jps,jinfo还有哪些,一文讲清楚这些命令的作用和用法jps,jinfo,,jstat,jstack,jmap,JDK提供了一系列用于监控、管理和调试Java应用程序的工具,这些工具对于开发人员和系统管理员来说非常有用。尝试用一篇文章讲清楚这些工具的作用和用法:每个工具我把它的全称都打出了,方便大家记忆!

2024-08-14 20:11:06 778

原创 【单点登录】CAS单点登录,这种方式是基于浏览器WEB端的,我们常见的A网站登录后,要实现B网站自动登录,就是通过这个实现

【单点登录】CAS单点登录,这种方式是基于浏览器WEB端的,我们常见的A网站登录后,要实现B网站自动登录,就是通过这个实现基于CAS(Central Authentication Service)的单点登录(SSO)在Java中的实现通常涉及几个主要组件:CAS服务器、CAS客户端(通常是Web应用),以及可能的票据验证服务。CAS是一个开源的、企业级、独立的SSO解决方案,支持多种客户端类型(如Java、.NET、PHP、Perl、Apache等)和多种认证协议。

2024-08-13 21:59:46 436

空空如也

空空如也

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

TA关注的人

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