- 博客(239)
- 资源 (9)
- 问答 (1)
- 收藏
- 关注
原创 java写文件优化(1)
增大缓冲区:可以尝试增大的缓冲区,以减少 I/O 次数。多线程异步写入:对于多个文件或大文件,使用线程池并行写入会提高效率。内存映射文件(Memory-mapped files):对于非常大的文件,内存映射文件的方式能显著提高性能。:对于小文件,是一个简单且高效的选择。去掉不必要的封装:如果没有计数需求,避免使用,只保留进行写入。选择合适的方案,依据你的实际数据规模和场景来优化文件写入性能。增大缓冲区大小。
2025-04-04 15:01:37
427
原创 域名配置服务端口
你遇到的错误很可能是因为你没有足够的权限绑定特权端口(如 80 端口)。以 root 用户或通过sudo运行 Java 应用程序;确保没有其他进程占用该端口;检查防火墙和安全组规则;如果使用 SELinux,检查并调整策略。如果你希望绑定到 80 端口,但不想以 root 身份运行 Java 应用,可以考虑使用端口转发工具,如iptables或authbind,将 80 端口的流量转发到高于 1024 的端口上。
2025-03-08 13:51:38
823
原创 package-info.java的作用
是一个为包提供额外元数据的文件,主要用于文档说明、声明包级注解,以及统一管理包的整体信息。虽然不是必需的,但它是一个非常有用的工具,特别是在注释、文档生成和注解的使用场景中。
2025-02-28 20:46:35
302
原创 MySQL 事件调度器
确实是一个更方便且内置的解决方案,可以在 MySQL 服务器端自动定期执行表优化操作,无需依赖外部工具或应用程序代码。这种方式也能减少数据库维护的复杂性,尤其适用于在数据库频繁更新或删除时进行自动化优化。
2025-01-24 21:03:40
570
原创 Centos 8 交换空间管理
参数,可以控制系统何时使用交换空间。值越低,越倾向于使用物理内存而不是交换空间(默认通常为 60)。交换空间不够用,你可以通过扩展现有的交换文件或创建新的交换文件来增加交换空间。首先,选择文件路径和大小(例如,增加 1 GB 交换空间)。这会创建一个 1 GB 的文件(1024 个 1MB 块)。通过这些步骤,你可以灵活地扩展交换空间来满足应用的需求。完成后,你的系统应该有了更大的交换空间。命令检查是否已经成功扩展了交换空间。,可以创建另一个交换文件(例如。激活交换文件,使其立即生效。
2025-01-19 09:40:24
541
1
原创 CentOS 8 如何安装java与mysql
它影响数据库的可靠性、数据安全性以及性能,通常在高并发或对数据安全性有特殊要求的应用场景中需要进行调整。CentOS 8 默认仓库中并不包含 MySQL 8,因此需要通过 MySQL 官方的 YUM 仓库来安装。如果您的系统上安装了多个版本的 Java,您可以通过以下命令设置默认的 Java 版本。现在,您的 CentOS 8 系统上应该已经成功安装了 Java 和 MySQL。按照提示,您可以设置新的 root 密码,移除匿名用户,禁止远程登录等。根据提示选择您需要的版本。
2025-01-10 20:53:39
1048
1
原创 CentOS 8 上搭建SFTP服务
通过禁用密码认证和挑战响应认证,可以确保服务器只使用公钥认证,这会提高 SFTP 安全性并避免认证冲突。错误通常是因为 SSH 连接超时、网络问题或服务器端配置不当引起的。通过调整 SSH 客户端和服务器的超时设置、检查防火墙规则和权限设置,通常可以解决这个问题。如果问题仍然存在,查看日志可以帮助进一步诊断。错误通常是由于 SSH 对于chroot目录的权限要求不满足。你需要确保chroot目录的所有者是root,并且权限设置为 755,且子目录的权限适合用户操作。通过以上操作,应该可以解决问题。
2025-01-04 16:16:06
1466
2
原创 Spring boot对接安全证书
如果只是短期需要继续使用 CentOS 8,可以切换到 Vault 存储库。如果需要长期支持,建议迁移到 AlmaLinux 或 Rocky Linux,以获得社区支持和定期更新。
2025-01-01 13:07:46
1455
原创 kafka常用命令(持续更新)
使用这将列出所有 broker 的 ID,如输出[0, 1, 2]表示有 3 个 broker。如果你的 Kafka 集群不依赖 Zookeeper,可以使用或或者输出中每个 broker 的信息都会显示出来。
2024-12-21 18:30:03
650
原创 kafka-clients之监控
以生产者为例介绍spring如何整合kafka-clients,micrometer,prometheus。上报生产者监控打点可以通过在Spring Boot应用中手动添加Kafka Producer的度量监控,确保Prometheus能够采集到Producer的指标。以下是一个示例代码,其中使用了。
2024-12-13 20:20:12
645
原创 kafka-clients之CommonClientConfigs
是库中一个包含Kafka通用配置项的类,它定义了Kafka Producer、Consumer、Admin等客户端共享的配置。
2024-11-29 21:48:47
864
原创 kafka-clients之生产者发送流程
BufferPool通过clear()方法重置缓冲区,实现内存复用而非释放,从而提升了 Kafka 客户端的发送效率和内存利用率。这种方式在高并发、高吞吐的场景中尤其有优势,因为它能在性能和资源消耗之间取得良好的平衡。
2024-11-23 17:52:34
1072
原创 kafka-clients之max.block.ms
如果不加以控制,Kafka 生产者的阻塞行为(如在send()中阻塞)确实可能反压应用程序线程池,特别是像 Tomcat 这样的线程池可能会被打满,影响应用服务的可用性。为了解决这个问题,可以通过合理配置、使用异步消息发送、引入独立的线程池等方式来防止 Kafka 阻塞问题扩散到应用的关键线程池。即使你使用了异步的send()方法,Kafka 生产者仍然可能由于缓冲区已满或元数据不可用而发生阻塞。这种阻塞可以通过设置、调整和batch.size等方式来缓解。
2024-11-15 23:11:33
1075
1
原创 kafka-clients之ProducerConfig
在Kafka2.4.0版本中,类提供了许多配置参数,用于控制生产者行为。这些参数可以调整Kafka生产者的性能、可靠性和行为。
2024-11-09 09:43:32
955
原创 kafka客户端消费者吞吐量优化
mq消息消费实时性要求不高,期望可以牺牲一部分实时性,换取吞吐量,例如:数据库单条insert优化为batchInsert。优化后结果不符合预期:消费者消费消息的batchSize远小于实际配置的max.poll.records,导致在批量消息达到时想要聚合mq批量操作业务数据效果与单条处理效果类似。的等待时间内,broker 至少有足够的时间来积累消息,最大限度地提高单次拉取的数据量。这个参数决定了消费者拉取消息时的行为,影响数据批量处理的效率和延迟。,尤其是在消息量较小的场景中。这种配置的好处是可以。
2024-11-02 11:37:13
1499
原创 kafka-clients之mq丢失问题
客户端版本为2.6.x,客户端机器可能在尝试连接 Kafka broker 时因为超时断开,导致无法成功接收或更新 metadata由于客户端没有及时感知到broker重新选举的metadata数据,一直尝试向宕机的broker发送mq,在2分钟后超时,最终失败导致部分mq消息丢失如何解决该问题场景?升级版本至2.7.0(含)之上。官方如何修复的该问题可配置的连接超时:引入了参数,允许客户端配置连接建立的超时时间。如果客户端在设定的时间内无法与 broker 建立连接,它将超时并进行失败处理。
2024-10-26 07:29:34
1167
1
原创 G1(Garbage First)垃圾回收实战
年轻代回收(Young GC):只回收新生代,暂停时间短。并发标记:标记老年代中的存活对象,尽量避免停顿。混合回收(Mixed GC):回收新生代和部分老年代对象,减少 Full GC 触发的频率。完全垃圾回收(Full GC):应急阶段,全堆回收,停顿时间长。通过这些阶段的配合,G1 能够平衡应用的吞吐量和暂停时间,适合大堆内存、低延迟要求的应用场景。这表示 G1 垃圾回收器在执行一次 Young GC(年轻代垃圾回收)。
2024-10-19 09:07:01
1069
2
原创 Java内存布局
64位 JVM 不启用指针压缩时:Object Header 大小是16字节。64位 JVM 启用指针压缩时(默认):Object Header 大小是12字节。32位 JVM:Object Header 大小是8字节。JVM在默认情况下启用指针压缩,但如果堆内存超过32GB,就会禁用指针压缩。32GB是压缩指针的最大寻址范围。超过32GB的堆内存中,压缩指针带来的性能提升并不显著,而且需要解压指针反而可能增加开销。
2024-10-01 09:29:45
1029
原创 Mysql主从不一致校验
依赖主从复制依赖于MySQL的复制机制,因此只能检测到复制层面的问题,而无法发现复制日志丢失或数据直接修改导致的不一致。数据一致性保证:工具可以通过设置等选项,确保只检测而不修改数据,也可以与结合使用来修复不一致的数据。通过这种方式,可以在不直接访问从库数据的情况下,有效地检测并报告主从数据不一致问题,为数据库管理员提供了强大的维护工具。
2024-09-27 21:12:38
895
原创 Maven版本号管理
Dependency Management的管理方式很好,代码层面解决不会遗漏,但是需要parent或者bom使用快照版本号打包时动态修改,可以避免生产出现快照包场景,但是需要在打包时确认具体的版本号,或者容易遗漏,例如打包时忘记指定某个版本号,当业务依赖包多的时候,mvn命令会很长很容易出现遗漏或修改错误问题。
2024-09-21 09:03:22
1343
原创 Java泛型类型解析
是针对类的字段,返回字段的泛型类型或具体类型。是针对类或接口,返回定义在类或接口上的类型参数。如果你想获取一个类中字段的实际类型,是合适的方法。如果你想获取类本身定义的类型参数,是正确的方法。表示的是已经用实际类型参数化的泛型类型。例如,是一个。表示的是泛型类型参数本身。例如,T在中是一个。表示完整的参数化类型,而表示泛型类型参数。第一种方式直接通过获取类型,类型信息在运行时已经被擦除,无法获取到实际的泛型类型。最终得到的Type t只是一个原始的类型,没有泛型信息。第二种方式在。
2024-09-07 07:38:17
1085
原创 系统上下文切换分析
这是多任务操作系统的一个重要功能,但频繁的上下文切换可能会导致性能下降,因为每次上下文切换都涉及保存和恢复CPU状态,这会消耗CPU时间。在这种情况下,CPU的总使用率为6.9%(用户+系统),这表明CPU大部分时间是空闲的。在这种情况下,系统CPU使用率很高,特别是系统时间占比显著增加,同时上下文切换次数非常高,表明系统可能由于频繁的上下文切换导致性能瓶颈。在这种情况下,CPU使用率很低,表明系统大部分时间是空闲的,上下文切换次数虽然存在但并未对系统性能造成显著影响。表示上下文切换次数。
2024-08-24 09:19:58
902
原创 Grafana中的rate与irate以及histogram
le标签在 Prometheus 直方图中表示桶的最大延迟值,以 “less than or equal” 的方式来说明。这样设计可以更精确地反映数据分布,并方便进行数学计算和分析。
2024-08-17 08:31:39
2045
原创 Jvm G1与ZGC启动参数
�通过这些参数配置,你可以优化 ZGC 的性能,并获取详细的 GC 和内存分配日志,以便更好地监控和调优 JVM 的内存管理。设置 G1 堆区域的大小为 16M。这个值应该是 2 的幂次方,范围在 1M 到 32M 之间。启用垃圾回收日志文件轮转,最多保留 10 个日志文件,每个文件大小为 20M。这些参数是一个初始的优化建议,你可以根据实际应用的性能表现进行进一步的调整。启用详细的垃圾回收日志记录,并将日志输出到指定文件。内存不足时生成堆转储,并指定堆转储文件的路径。设置初始堆和最大堆大小为 4G。
2024-08-09 22:05:57
1055
原创 Mysql大单表JSON优化
类型优点缺点TEXT兼容性高;无额外的 JSON 数据类型开销没有 JSON 数据类型的内置功能;查询性能较差JSON内置函数和操作符;数据验证;可以创建索引存储 JSON 数据时有额外开销;兼容性问题对于大 JSON 数据,推荐使用 JSON 类型,以利用 MySQL 的内置功能和优化。对于简单的文本存储,TEXT 类型也可以满足需求,但可能需要额外的处理步骤来管理 JSON 数据。
2024-08-04 06:21:22
1314
原创 应用卡顿排查
的合理性直接影响到 MySQL 的性能。一个合理的配置可以减少磁盘I/O,提高查询性能,优化数据库操作。以下是判断监控使用情况查看和相关状态变量。计算和配置按照内存总量的 70% 到 80% 来配置。调整基于实际监控数据和性能测试结果来调整。根据你的监控数据,当前的可能过小。虽然当前较高,但在高负载情况下可能会遇到性能瓶颈。建议增加并根据实际负载和数据量进行调整。同时,关注其他相关配置和硬件性能也很重要。
2024-07-28 08:37:12
489
原创 log4j2启动异步日志与动态修改日志级别
使用异步日志记录器可以全局地处理日志事件,使所有日志记录器异步地处理日志。使用异步追加器可以局部地将特定的追加器配置为异步。通过将日志事件放入队列中处理,异步日志记录可以显著提升应用程序的性能,特别是在高并发环境中。选择合适的方式来启用异步日志记录,并根据需要调整配置文件,以获得最佳性能和日志记录效果。通过以上方法,你可以在 Spring Boot 应用中动态修改日志级别,无论是通过 Actuator 提供的 HTTP 接口还是通过程序内的代码修改。
2024-07-21 06:22:31
1445
原创 ForkJoinPool与ThreadPoolExecutor
ThreadPoolExecutor不多介绍,重点介绍ForkJoinPool,以及二者的区别ForkJoinPool 是 Java 7 引入的一种用于并行计算的框架,特别适合处理递归任务。它是 java.util.concurrent 包的一部分,基于工作窃取算法,可以充分利用多核处理器的并行能力。以下是 ForkJoinPool 的基本用法介绍。ForkJoinPool 基于两个核心操作:我们来实现一个简单的斐波那契数列计算例子。b. 合并排序下面是一个使用 ForkJoinPool 实现合并排序(
2024-06-29 10:49:51
1011
原创 Reactor Mono应用
在微服务架构中,调用远程服务(如REST API或gRPC)时,通常会返回一个单一的结果。这是Mono的一个典型应用场景。使用Mono可以优雅地处理异步操作中的错误。例如,如果某个操作可能会失败,可以返回一个错误的Mono并在订阅时处理错误。Mono可以用来表示和处理异步计算的结果。例如,当你需要从一个异步操作中获取一个值时,可以使用Mono。例如,将一个值转换为另一个类型的值。Mono可以用于在异步操作中管理资源,如文件或连接的打开和关闭。Mono可以用于组合多个异步操作,构建复杂的异步数据流。
2024-06-22 06:30:02
879
原创 EventBus之Reactor实战
Flux.merge: 消费者会接收到先产生消息的生产者的所有消息,然后接收到后产生消息的生产者的消息。消息是按时间顺序发射的。Flux.zip: 消费者只有在两个生产者都有消息时,才会接收到配对好的消息。在第二个生产者开始生成消息之前,消费者不会收到任何消息。选择哪种操作符取决于你的具体需求和希望如何处理消息流的合并。
2024-06-15 07:56:05
1463
原创 mysql undolog管理
在MySQL中,Undo Log(撤销日志)用于支持事务的回滚和MVCC(多版本并发控制)。为了避免Undo Log不断增长,影响系统性能,需要进行合理的清理。MySQL的Undo Log清理策略主要依赖于系统的配置参数和后台线程的操作。
2024-06-07 22:11:51
1591
原创 spring-boot整合Micrometer+Prometheus
Micrometer可以整合Prometheus也可以整合influxDB等时序数据库,主要作用就是桥接,类似于Slf4j与log4j,logback的关系。提供一个通用的打点能力,并将打点数据对接到相应的时序数据库,用户只需要关心何时打点即可。桥接包中的io.micrometer.prometheus.PrometheusMeterRegistry,将打点数据桥接至io.prometheus.client.CollectorRegistry。
2024-05-18 07:28:37
2829
1
原创 Java线程亲和实战
环境:Linux version 5.4.0-1084-aws (buildd@lcy02-amd64-044) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #91~18.04.1-Ubuntu SMP Sun Aug 14 01:24:43 UTC 2022。
2024-04-06 23:13:12
1048
Sybase PowerDesigner16.5破解文件
2017-08-18
jprofiler.linux.windws.64.bit.part1.破解版
2016-07-08
element-ui中的menu菜单改为动态v-for循环生成后选中状态失效问题
2019-11-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人