自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

呜呼哈

怎么大风越狠 我心越荡 我会变成巨人 踏着力气 踩着梦

  • 博客(84)
  • 资源 (4)
  • 问答 (2)
  • 收藏
  • 关注

原创 Java并发编程:读写锁与普通互斥锁的深度对比

本文对比了Java中的普通互斥锁(synchronized/ReentrantLock)和读写锁(ReentrantReadWriteLock)。普通锁适用于读写均衡或写多场景,提供简单互斥;读写锁在读多写少时性能更优,允许多线程并发读。通过测试数据表明,读多场景下读写锁吞吐量可提升246%。文章还分析了锁的粒度、适用场景、饥饿问题,并给出锁降级/升级的实践建议。最后总结不同场景下的锁选择策略:读写锁适合缓存系统,普通锁适合计数器,强一致性系统推荐互斥锁。建议结合JMH测试和监控工具选择最优方案。

2025-06-03 23:59:22 916

转载 时间复杂度和空间复杂度的概念

算法性能评估涉及时间复杂度和空间复杂度两个关键指标。时间复杂度反映算法的执行时间,采用大O记法表示,如O(n)、O(n²),其估算方法是统计执行次数后去除低阶项和系数。空间复杂度衡量算法内存占用情况,同样用大O表示法。实际应用中需根据场景权衡这两个指标:大数据处理时优先考虑时间复杂度,内存受限时则更关注空间复杂度。通过预先分析算法步骤进行估值,可以高效选择最优算法方案。常见复杂度排序为:O(1)<O(logn)<O(n)<O(n²)<O(2ⁿ)。

2025-06-03 16:14:43 9

原创 为什么 Docker 建议关闭 Swap

项目是否推荐关闭 SwapDocker 生产环境推荐关闭测试环境/内存充足可保持启用(用于调试或开发)Kubernetes 集群节点推荐关闭(尤其在 v1.22 之前)

2025-05-17 17:58:40 876

原创 `ParameterizedType` 和 `TypeVariable` 的区别

特性表示类型已经被参数化的类型泛型类型变量(未指定具体类型)常见形式Map<K, V>TEK是否有实际类型参数✅ 有 (❌ 没有是否代表泛型变量❌✅使用场景获取具体泛型类型信息获取泛型变量本身信息是否能直接用于创建对象❌(运行时被擦除)❌(只是一个变量)

2025-05-16 21:40:29 737

原创 Java 泛型与类型擦除:为什么解析对象时能保留泛型信息?

Java 泛型是编译时特性。在编译后会变为原始类型List。泛型类型参数(如String)仅在编译阶段进行类型检查。场景是否保留泛型原因直接访问List变量的泛型❌ 否类型擦除后运行时无信息解析完整对象(如Event✅ 是类字段的泛型信息保存在元数据中,可通过反射获取使用✅ 是匿名内部类的泛型参数通过父类类型保留Java 的类型擦除机制虽然带来了限制,但通过类结构的元数据和框架的智能处理,我们仍然能在关键场景下“找回”泛型信息。

2025-05-16 21:38:21 968

原创 Docker Compose 的历史和发展

这张图表展示了Docker Compose从V1到V2的演变过程,并解释了不同版本的Compose文件格式及其支持情况。

2025-05-11 20:28:07 494

原创 MyBatis 核心类详解与架构解析:从入门到源码级理解

类名职责简述构建创建SqlSession提供数据库操作 APIExecutorSQL 执行引擎单条 SQL 的封装全局配置管理器JDBC Statement 操作设置 SQL 参数Java 与 JDBC 类型转换结果集处理。

2025-05-04 09:50:10 794

原创 @Validated与@Valid的正确使用姿势

场景是否生效原因基本类型 + 类级别@Validated✅类级别启用校验,参数约束生效。基本类型 + 参数级别@Valid/@Validated❌缺少类级别支持,无法触发校验。对象类型 + 参数级别@Valid/@Validated✅Spring MVC自动处理对象参数校验。对象类型 + 无参数注解❌需要显式标记@Valid或@Validated以触发校验。

2025-04-19 16:09:19 353

原创 JSON 中的反斜杠 `\`

通过上述示例代码和解析,我们可以清楚地看到 JSON 中反斜杠的使用和处理方式。在 JSON 字符串中,反斜杠用于转义特殊字符,确保 JSON 数据的正确解析和表示。在 Java 中,反斜杠也需要使用两个反斜杠进行转义。正确处理这些转义字符对于开发人员来说非常重要,尤其是在处理复杂的 JSON 数据时。

2025-04-03 14:00:38 551

原创 深入解析 JDK 动态代理

JDK 动态代理是 Java 内置的一种代理机制,它允许我们在运行时动态创建一个代理对象。这个代理对象可以拦截对目标对象方法的调用,并在方法调用前后插入额外的逻辑。动态代理的核心是通过类和接口来实现。动态性:代理类的字节码在运行时生成,不需要提前编写代理类的代码。基于接口:只能代理实现了接口的类。灵活性:可以在运行时动态插入额外逻辑,无需修改目标类的代码。首先,我们定义一个login和logout。

2025-04-03 10:36:33 728

原创 @Transactional 注解的行为规则

Spring @Transactional 注解的行为规则

2025-03-04 21:30:00 221

原创 对接扣子双向流式 TTS Demo

对接扣子双向流式语音合成 Demo

2025-02-21 15:56:52 430

原创 优化线程池关闭机制以避免无限循环

方法并设置合理的超时时间,可以有效地避免线程池关闭过程中的无限循环和资源浪费。同时,捕获和处理中断异常可以提高程序的健壮性。希望本文的建议能帮助你在实际开发中更好地管理线程池,确保程序的稳定运行。在多线程编程中,正确关闭线程池是一个重要的任务,以确保程序的稳定性和资源的有效利用。本文将探讨一种常见的线程池关闭机制,并提出优化建议,以避免无限循环和资源浪费。这段代码的目的是等待线程池中的所有任务完成,然后关闭线程池。方法来等待线程池关闭,并设置合理的超时时间。调用 shutdown。

2025-02-13 20:00:00 873

原创 域名的分层结构

域名的分层结构是指域名系统中域名的组织方式,它由不同级别的标签(labels)组成,这些标签通过点(.)分隔。域名的这种分层结构使得域名系统既灵活又可扩展,能够适应不同用户的需求,同时也便于管理和导航。一个完整的域名可以包含多个层级,每个层级都可以进一步细分。

2024-11-14 15:45:17 614

转载 SSE:服务器发送事件

服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE)。本文介绍它的用法。

2024-10-29 17:47:33 203

原创 通用软件版本标识

在软件开发和发布过程中,版本号和标识扮演着重要的角色。它们不仅帮助开发者追踪软件的演变,还让用户了解软件的稳定性和功能。以下是一些常见的软件版本标识,以及它们的含义和用途。

2024-10-21 23:53:57 528

原创 处理Hutool的Http工具上传大文件报OOM

实际上就是把文件全部都加载到了Byte数组中,如果上传的文件过大必定会导致OOM。这里自己写一个服务端的接口看看StreamingMode的header有什么区别。先来测试一下 setChunkedStreamingMode 的效果。header, 来告诉服务端当前请求主体内容的字节数。Hutool 的 HttpRequest中只提供了。方式其实感觉上会更好,不会出现服务端不支持的情况,从异常堆栈信息中可以看出这里使用了。这是修改前会出现OOM的客户端代码。

2024-10-21 11:26:44 1621

转载 kubernetes安装详解

3.关闭防火墙4.修改主机名5.添加hosts解析6.设置k8s内核参数设置内核参数加载内核模块使内核参数生效7.关闭系统swap修改fstab文件,关闭swap的自动挂载。9.安装依赖包10.时间同步11.安装docker-ce软件提示:master节点不需要安装删除自带的docker安装依赖包安装yum源安装docker-ce启动,并设置开机自启[安装设置好flanneld后,再启动docker]11.安装CFSSLcfssl三:创建CA证书

2024-08-15 09:35:05 669

原创 字符集和字符编码

字符集是一个系统,它为每个字符分配一个唯一的编码值。字符集定义了一组字符(如字母、数字、标点符号、控制字符等)。

2024-08-07 12:42:32 511

转载 Spring Boot搭建AI原生应用

什么是「AI原生应用」?简单一句话就是,AI带来应用的最核心价值,如果脱离开 AI,应用将不存在。AI原生应用是指在设计、开发、部署、运营和维护过程中,具有内在安全、可信的AI能力应用,其中AI是功能的自然组成部分。实现一个AI原生应用的过程,往往需要利用数据驱动和基于知识的生态系统,在这一过程中,数据与知识将被消费和生产,以实现新的基于AI的原生功能。在需要时通过学习和自适应的AI增强能力,来替代以往静态的、基于规则的机制。

2024-07-31 16:13:55 255

转载 一个简洁的 YAML 教程

【代码】一个简洁的 YAML 教程。

2024-05-30 14:14:23 100

原创 无缝前端部署

保留旧版本文件:利用 Vue 构建时生成的包含哈希值的静态文件名。分阶段上传:先压缩文件,再上传并解压。监控和自动化部署:使用和 Docker 实现实时监控和自动化部署。通过上述策略,我们可以实现 Vue 应用的无缝部署,减少部署过程中对用户的影响。这种方法不仅适用于 Vue,也可以扩展到其他前端框架和应用。

2024-05-18 22:34:00 525

原创 Dockerfile中的CMD和ENTRYPOINT

与Exec格式不同,使用Shell格式的指令总是使用命令shell。Shell格式不使用JSON数组格式,而是一个常规的字符串。在使用shell格式时系统会自动选择一个命令shell来执行指令,而在使用exec格式时,需要明确指定使用哪个命令shell或其他可执行文件来执行命令。exec格式使得避免使用shell字符串处理成为可能,并且可以使用特定的命令shell或任何其他可执行文件来调用命令。当使用Exec格式并直接执行shell时,就像Shell格式一样,是由shell进行环境变量替换,而不是构建器。

2024-05-05 23:31:21 3239 2

原创 Linux procps-ng - top

程序或窗口名称,取决于显示模式当前时间和自上次启动以来的时间长度用户总数系统负载(1 分钟、5 分钟、15 分钟内的平均进程数),对于单核CPU 1.0表示满负载摘要区交互命令在全屏模式和alternate-display模式下始终可用。它们影响显示的起始行,并确定消息和提示的位置。这些命令总是只影响“当前”窗口/字段组。C:显示滚动坐标切换切换一个信息消息,当消息行没有被使用时会显示。l:负载平均值/正常运行时间切换。

2023-11-19 00:31:14 1669

转载 跨域资源共享 CORS 详解

CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。

2023-10-11 23:16:04 204

原创 Linux网络监控工具 - iftop

iftop 是一个基于 libpcap 库的网络流量监控工具。它通过监听指定网络接口上的数据包,并分析这些数据包的源地址、目标地址、源端口、目标端口、协议等信息,从而实时显示网络流量的相关统计信息。

2023-10-09 23:33:17 3237 3

原创 Linux网络监控工具 - nethogs

nethogs是一个基于命令行的网络监控工具,用于实时监视每个进程的网络流量。它可以显示每个进程使用的带宽、连接数和数据包数量等信息。

2023-10-08 10:21:20 1940

原创 Duration.parse格式说明

Duration.parse是Java 8及以上版本中的一个方法,用于将字符串表示的时间段解析为Duration对象。时间单位(Time Units):使用大写字母表示时间单位,包括年(Y)、月(M)、周(W)、天(D)、小时(H)、分钟(M)和秒(S)。上述代码将字符串"PT2H30M"解析为一个Duration对象,并输出该对象的字符串表示和总分钟数。Duration对象表示的时间段最大单位为天(24小时),不能表示更长的时间段。字符串中的字母大小写敏感,必须使用大写的P、T和H/M/S。

2023-08-02 14:30:45 1419 1

翻译 location匹配规则

介绍了Nginx服务器中的location块,location块根据请求的URI配置Nginx服务器的行为。

2023-05-22 18:32:49 170

转载 MySQL对于相同名称用户但host不同的登陆选择

有时候我们会发现有创建多个相同名称的用户,但是host给的不是相同的,最普遍的是有的小伙伴习惯性的创建 root 用户,系统有默认的 root@‘127.0.0.1’ ,而自己再去创建个 root@‘%’ 或 root@'192.168.20.%'类似这种的,那么存在多个相同名称的了,mysql在登录时候会选择哪个用户来进行登陆呢?记得有块官方文档介绍这一块的,一时没找到,感兴趣小伙伴自己去找下。大致意思应该如下:服务器使用与客户端主机名和用户名相匹配的第一行记录进行授权。

2023-04-03 14:42:58 964

转载 SpringSession

在开始spring-session揭秘之前,先做下热脑(活动活动脑子)运动。为什么要spring-session比较traditional-session方案和spring-session方案JSR340规范与spring-session的透明继承spring-session提供集群环境下HttpSession的透明集成。spring-session的优势在于开箱即用,具有较强的设计模式。

2022-11-06 23:28:56 6982

原创 反编译SpringBoot项目

项目缺失源码,但服务器上有项目的war包,然后需要通过war包反编译出项目源码进行项目的二次开发

2022-10-30 15:05:01 2688

翻译 Jackson 2.12中多态性

在本教程中,我们将探索如何使用Jackson库中基于推理的多态特性。

2022-09-18 17:31:09 673

原创 搭建 Sentry 服务

CentOS7 部署 Sentry 服务

2022-09-17 12:00:17 2046 2

翻译 Jackson Annotation 示例

在本教程中,我们将深入研究 Jackson Annotations。我们将了解如何使用现有注解,如何创建自定义注解,最后如何禁用它们

2022-09-07 23:33:17 278

原创 docker swarm 部署 sentry9.1.2

docker swarm 部署 sentry 9.1.2

2022-09-05 00:18:23 1041

翻译 Jackson ObjectMapper 简介

本教程重点介绍如何理解 Jackson ObjectMapper 类,以及如何将 Java 对象序列化为 JSON,以及如何将 JSON 字符串反序列化为 Java 对象ObjectMapper类的另一个基本功能是注册自定义序列化程序和反序列化程序的能力。在输入或输出JSON响应在结构上与必须序列化或反序列化的Java类不同的情况下,自定义序列化程序和反序列化程序非常有用。super(t);...

2022-08-31 00:11:09 645

原创 Docker 部署 RabbitMQ 集群

为了保证线上环境RabbitMQ的高可用性,需要部署一套集群环境。RabbitMQ集群主要有两方面的优势:高可用、高性能;高可用就是保证其中部分RabbitMQ节点崩溃或停机的情况下应用程序不受影响,高性能就是对RabbitMQ的横向扩展,支持更大量的消息通信。

2022-08-21 01:13:13 2074 1

原创 数字精度问题

前端JS不支持Long类型数字,返回给前端Long类型数据时需要转换为Stringmongodb中默认数字类型也是浮点数类型,在查询数据时要注意属性类型

2022-08-17 00:06:16 442

原创 PowerDesigner处理表名数字脚本

处理表名数字

2022-08-02 14:41:49 172

Maven实战(许晓斌著)完整高清版PDF

《Maven实战》是国内首本公开出版的Maven专著。它内容新颖,基于新发布的Maven 3.0,不仅详尽讲解了 Maven 3.0的所有新功能和新特性,而且还将这些新功能和新特性与Maven 2.0版本进行了对比,以便于正在使用Maven 2.x版本的用户能更好地理解。本书内容全面,以从专家的角度阐释Maven的价值开篇,全面介绍了Maven的安装、配置和基本使用方法,以便于初学者参考;详细讲解了坐标和依赖、Maven仓库、生命周期和插件、聚合与继承等Maven的核心概念,建议所有读者仔细阅读;系统性地阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点和Maven的m2eclipse插件等实用性较强的高级知识,读者可有选择性的阅读;扩展性地讲解了如何Maven和 Archetype插件,这部分内容对需要编写插件扩展Maven或需要编写Archetype维护自己的项目骨架以更便于团队开发的读者来说尤为有帮助。它实战性强,不仅绝大部分知识点都有相应的案例,而且本书还在第4章设计了一个背景案例,后面的很多章节都是围绕这个案例展开的,可操作性极强。   《Maven实战》适合所有Java程序员阅读,无论你是从未使用过Maven,亦或是已经使用Maven很长一段时间了,相信你都能从本书中获得有价值的参考。本书也适合所有项目经理阅读,它能帮助你更规范、更高效地管理Java项目。

2017-05-29

精通Spring 4.x 企业应用开发实战

Spring 4.0是Spring在积蓄4年后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域**开源平台的翘楚地位。Spring 4.0引入了众多Java开发者翘首以盼的基于Groovy Bean的配置、HTML 5/WebSocket支持等新功能,全面支持Java 8.0,*低要求是Java 6.0。这些新功能实用性强、易用性高,可大幅降低Java应用,特别是Java Web应用开发的难度,同时有效提升应用开发的优雅性。本书是在《精通Spring 3.x――企业应用开发详解》的基础上,历时一年的重大调整改版而成的,延续了上一版本“追求深度,注重原理,不停留在技术表面”的写作风格,力求使读者在熟练使用Spring的各项功能的同时透彻理解Spring的内部实现,真正做到知其然并知其所以然。此外,本书重点突出了“实战性”的主题,力求使全书内容体现“从实际项目中来,到实际项目中去”的写作原则。

2017-06-03

HttpClient4.x 教程 PDF

HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

2017-06-25

疯狂Spring Cloud

《疯狂Spring Cloud微服务架构实战》以Spring Cloud为基础,深入讲解微服务开发的相关框架,包括服务管理框架Eureka、负载均衡框架Ribbon、服务客户端Feign、容错框架Hystrix、消息框架Stream等。除了介绍这些微服务相关的框架外,在《疯狂Spring Cloud微服务架构实战》的第11章,还介绍了如何使用Spring Data框架操作各个主流数据库(MySQL、MongoDB、Redis)。在第12章,以一个案例为基础结束本书内容,在该章中讲解了模板引擎Thymeleaf,整本书将会为大家提供一整套微服务应用开发的解决方案。本书适合有一定Java开发基础的技术人员,尤其是正在使用或准备使用微服务构建高并发、大数据应用的技术人员及团队。 https://gitee.com/yangenxiong/SpringCloud/blob/master/《疯狂Spring Cloud》电子书(一).pdf 这里也可以下载哦!

2018-04-22

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

TA关注的人

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