自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL 全方位超全优化详细清单

通过以下步骤,可以有效使用EXPLAIN编写并执行 EXPLAIN 查询。分析 EXPLAIN 输出,关注 type、possible_keys、key 和 Extra 列。根据输出信息优化索引、查询条件和表结构。重新执行 EXPLAIN,验证优化效果。

2024-10-27 19:50:57 639

原创 开源项目FaceFusion3.0-AI换脸

FaceFusion是一个开源的AI换脸和增强工具,支持图像和视频处理。它采用最新的深度学习技术,提供了一系列强大的功能,包括人脸替换、人脸增强、唇形同步等。FaceFusion的目标是为用户提供一个易用、高效且功能丰富的AI换脸解决方案。3.0更新了哪些东西。

2024-10-27 18:00:01 438

原创 MyBatis-Plus实现MySQL和Starrocks多数据源整合

项目中有需求要同时使用MySQL和Starrocks,正好整理一下,文末有完整代码包。

2024-10-26 19:09:11 969

原创 快收藏!那些你不知道的 JDK 下载网址大揭秘

ps:还有就是通过idea去下载需要的jdk,这是最快捷的。清华大学开源软件镜像站Adoptium。

2024-10-24 10:48:26 218

原创 国内Maven仓库镜像地址汇总及配置

打开 maven 的配置文件( windows 机器一般在 maven 安装目录的 conf/settings.xml ),在。标签中添加 mirror 子节点,例如。中添加repository子节点,例如。(偶尔需要人机验证,不推荐)Maven仓库示意图。

2024-10-24 09:39:41 543

原创 Java LocalDateTime:日期处理新纪元

然而,令人遗憾的是,在 Java LTS 版本已经发展到 21 的今天,Java 8 引入的这些日期时间类却仍未被大多数开发者熟练掌握。在软件开发的征程中,项目的推进往往如一艘破浪前行的巨轮,然而,一个看似微不足道的日期处理任务,却可能引发一场意想不到的“完美风暴”。的时间信息完美结合,提供了一种不含时区信息的日期时间表示方式,特别适用于那些只需关注本地日期和时间,而无需考虑时区差异的场景。它们分别负责处理无时间的日期和无日期的时间信息,以其简洁而强大的设计,解决了众多日期时间处理中的难题。

2024-10-23 10:11:18 624

原创 征服ES(ElasticSearch)的慢查询实战

在 Elasticsearch(ES)中,进行大数据查询时,常常会由于多种因素而导致性能显著下降。接下来,我们将深入探讨几种常见情况及其相应的解决方案。

2024-10-18 21:53:37 617

原创 轻松实现 API 接口限流:Bucket4j 在 Spring Boot 中的应用

例如,对于一个速率限制为每分钟 100 个请求的应用程序接口,我们可以创建一个容量为 100 的水桶,每分钟填充 100 个令牌。如果在一分钟内收到 70 个请求,少于可用令牌的数量,那么在下一分钟开始时,我们只需再添加 30 个令牌,就能使水桶达到容量。另一方面,如果在 40 秒内用完了所有令牌,我们将等待 20 秒来重新装满令牌桶。在请求消耗令牌的同时,我们也在以某种固定的速度补充令牌。它基于令牌桶算法,提供了强大的限流功能,既可用于独立的 JVM 应用程序,也可用于集群环境。

2024-10-18 21:52:42 909

原创 Git不要只会pull和push,搞上5个提升效率的命令!

今日,为大家带来五个能让你从 Git 菜鸟迅速晋级为老鸟的高效命令,助你在编程之路上如鱼得水。在编程过程中,常常会遇到这样的情况:写了一半的代码,突然领导要求紧急修复一个 bug,而此时手上的改动又不能立即提交。当在开发分支上完成了一个出色的功能,想要快速应用到主分支上展示时,cherry-pick 命令就是最佳选择,它可以将指定的 commit 应用到当前分支。提交代码后,若发现存在问题或不该提交某些内容,软回溯命令就能发挥作用,将 commit 回滚同时保留修改。revert 命令就是你的得力助手。

2024-10-18 21:49:37 916

原创 后端程序员必备:15个MySQL表设计的经验准则

若无特殊理由,建议将字段定义为 NOT NULL。原因如下:可以防止出现空指针问题。NULL 值存储需要额外空间,且会使比较运算更为复杂,让优化器难以优化 SQL。NULL 值可能导致索引失效。若将字段默认设置成一个空字符串或常量值不影响应用逻辑,可将该字段设置为 NOT NULL。

2024-10-17 21:25:43 724

原创 JDK 21更新:switch语句的类型模式匹配与守卫模式

JDK 21中的switch语句和表达式的增强,使得Java语言在处理复杂条件和类型检查方面更加灵活和强大。类型模式匹配、守卫模式、模式匹配的switch表达式、改进的类型推断以及增强的错误检测能力,使得代码更加简洁、易读和易于维护。这些改进不仅提高了开发效率,还为开发者提供了更强大的工具来编写更加可靠和可维护的代码。

2024-10-17 21:25:03 363

原创 Starrocks的表引擎选择及表属性的设置详细说明

Starrocks的表引擎选择及表属性的设置详细说明

2024-10-12 10:49:07 1109

原创 Starrocks表的数据库字段类型及与MySQL 的差异

最近有用到Starrocks,实际使用中基本可以当作mysql来使用,但是数据库字段还是有所不同的。

2024-10-12 10:46:28 669

原创 Java 创建的对象存放分析

创建对象的时候,对象是在堆内存中创建的。但堆内存又分为新生代和老年代,新生代又细分为 Eden 空间、From Survivor 空间、To Survivor 空间。那创建的对象到底在哪里?

2024-10-11 09:39:12 523

原创 Java 对象的内存分配流程

Java 堆的内存布局,由 年轻代 (Young Generation) 和老年代 (Old Generation) 组成,默认情况下按照1 : 2`的比例来分配空间。其中年轻代又被划分为三个不同的区域:Eden 区、From Survivor 区、To Survivor 区,默认情况下按照8 : 1 : 1`的比例来分配空间。Java 堆的内存布局,可以用如下图来概括。当创建的对象不再被使用了是需要被回收掉的,以便腾出空间给新的对象使用,这就是对象的垃圾回收,也就是对象的 GC。

2024-10-11 09:38:59 737

原创 class 文件分析

Java 是跨平台的,JVM 作为中间层,自然要针对不同的操作系统提供不同的实现。通过不同操作系统的 JVM,源代码就可以不用根据不同的操作系统编译成不同的二进制可执行文件了,跨平台的目标也就实现了。那这个 class 文件到底是什么玩意呢?它是怎么被 JVM 识别的呢?编写一段简单的 Java 代码,文件名为 Hello.java。点击编译按钮后,IDEA 会自动生成一个名为 Hello.class 的文件,在的对应包目录下。

2024-10-10 09:20:37 666

原创 Java 8 的内存结构

由于java是一门高级语言,离硬件底层比较远,有时候无法操作底层的资源,于是,java添加了native关键字,被native关键字修饰的方法可以用其他语言重写,这样,就可以写一个本地方法,然后用C语言重写,这样来操作底层资源。当然,使用了native方法会导致系统的可移植性不高,这是需要注意的。int a=1;//这个1便是字面量//iloveu便是字面量。

2024-10-10 09:19:37 641

原创 小巧简单的JAVA字节码开源编辑器

jclasslib,可以理解他是一个工具,用于查询已编译成JAVA类的各种文件的实际内容,也可以通过jclasslib直接进行这些类文件的编写,jclasslib自带一个库,可以方便用户快速读写编辑类文件。引入JAVA类后,可以看到其,一般信息、常量池、接口、字段、方法、属性,并且可以分别进行查阅。jclasslib 可以切换中文、英文、波兰文、德文,并且可以自动识别系统当前使用语言;jclasslib,同时可以支持linux、mac、windows、unix多个平台。

2024-10-09 09:10:15 183

原创 为什么用元空间替换永久代

首先需要明确的是,以下讨论的HotSpot虚拟机,其他类型的虚拟机,例如JRockit与J9等,压根就没有永久代的概念。因此,下面所说的“虚拟机”都是HotSpot版本的。要想理解这种变化的原因,需要先理解方法区、永久代与元空间的概念与之间的关系。

2024-10-09 09:09:41 1924

原创 Java 类加载的几个阶段

如果要查找类加载器,通过方法可以获取。从运行结果可以看到,当前的类加载器是,它的上一级是,再上一级是null。其实的上一级是有类加载器的,它叫Bootstrap ClassLoader,是一个启动类加载器,由 C++ 实现,不是 ClassLoader 子类,因此以 null 作为结果返回。这几种类加载器的层次关系,可以用如下图来描述。在虚拟机启动后,会优先初始化Bootstrap Classloader。

2024-10-08 09:21:12 966

原创 浏览器指纹及其应用

浏览器指纹是由电子前哨基金会(EFF)首席科学家 Peter Eckersley 在 2012 年提出,它利用浏览器自由传输的一些属性来生成和人类指纹一样具有标识作用的字符串。那么常见的浏览器指纹有哪些呢?指纹因子:指浏览器对外的公开属性,如userAgent可以通过获取;colorDepth可以通过获取。稳定性:指刷新浏览器而指纹因子对应的取值不会发生改变。如colorDepth它表示屏幕的颜色深度,在谷歌浏览器中其取值为 24,刷新浏览器后其取值依然是 24。那么它就是稳定的指纹因子。

2024-10-08 09:20:41 1058

原创 Java 类加载过程

开发人员可以通过继承 java.lang.ClassLoader类的方式实现自己的类加载器,以满足一些特殊的需求。

2024-10-07 08:42:28 1030

原创 Java内存区域

Java内存区域。

2024-10-07 08:41:55 736

原创 JVM 内存布局

我们先来说堆。堆是 OOM 故障最主要的发生区域。它是内存区域中最大的一块区域,被所有线程共享,存储着几乎所有的实例对象、数组。所有的对象实例以及数组都要在堆上分配,但是随着 JIT 编译器的发展与逃逸分析技术逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化发生,所有的对象都分配在堆上也渐渐变得不是那么“绝对”了。Java 堆是垃圾收集器管理的主要区域,因此很多时候也被称做“GC 堆”。从内存回收的角度来看,由于现在收集器基本都采用分代收集算法,所以 Java 堆中还可以细分为:新生代和老年代。

2024-10-07 08:41:26 905

原创 JVM 内存区域 堆

堆是JVM中相当核心的内容,因为堆是JVM中管理的最大一块内存区域,大部分的GC也发生在堆区,那接下来就让深入地探究一下JVM中的堆结构。需要明确,一个JVM实例只存在一个堆内存,堆区在JVM启动的时候就被创建,其空间大小也被确定下来,但堆空间的大小是可以通过JVM参数调节的,所有的线程共享堆。

2024-10-07 08:40:54 748

原创 Java类的生命周期浅析

简单一句话概括,类的加载阶段就是:找到需要加载的类并把类的信息加载到jvm的方法区中,然后在堆区中实例化一个java.lang.Class对象,作为方法区中这个类的信息的入口。那简单来说,java类被jvm进行加载到卸载的过程,就是java类的一生,称之为java类的生命的周期。jvm对类的加载时机没有明确规范,但对类的初始化时机有:只有当类被直接引用的时候,才会触发类的初始化。区别于对象的初始化,类的初始化所做的一起都是基于类变量或类语句的,也就是说执行的都是共性的抽象信息。类就是对象实例的抽象。

2024-10-06 12:39:52 814

原创 深入理解 Java 对象的内存布局

介绍了 Java 对象在 JVM 中的内存布局,整体可以分为:对象头、实例数据、对齐填充三个部分。第一部分的对象头包括了对象运行时数据和类型指针。其中对象运行时数据包括:哈希码、GC 分代年龄、锁状态标志等,类型指针指向对象类型元数据,确定对象是哪个类的实例。第二部分是实例数据,是真正存储的有效信息,包括各个类型的字段。第三部分是对齐填充,因为 JVM 要求对象起始地址必须是 8 字节的整数倍,所以必须有对齐填充来占位。

2024-10-06 11:15:36 797

原创 JVM 内存区域划分

在谈 JVM 内存区域划分之前,先来看一下 Java 程序的具体执行过程,画了一幅图。Java 源代码文件经过编译器编译后生成字节码文件,然后交给 JVM 的类加载器,加载完毕后,交给执行引擎执行。在整个执行的过程中,JVM 会用一块空间来存储程序执行期间需要用到的数据,这块空间一般被称为运行时数据区,也就是常说的 JVM 内存。所以,在谈 JVM 内存区域划分的时候,其实谈的就是这块空间——运行时数据区。了解官方出品的《Java 虚拟机规范》规范可以更方便地深入地理解 JVM。

2024-10-05 09:48:56 565

原创 浏览器指纹

此时回顾一下,WebAssebmly的定义,应该会清晰很多了。它不是一种语言,而是规定了一种虚拟指令集,可以作为各个语言的编译目标,然后通过wasm的虚拟机运行到浏览器还有其他各个平台中。对于前端领域,当前Webassembly在某些场景下可以有效提高前端项目的性能,并且可以将C/C++领域的一些优秀的库通过编译直接运行到浏览器中。如果前端遇到了性能的问题,不妨可以考虑下WebAssmbly的方案。

2024-10-05 09:48:23 840

原创 6 个 Java 工具,轻松分析定位 JVM 问题

其中,S0 表示 Survivor0 区占用百分比,S1 表示 Survivor1 区占用百分比,E 表示 Eden 区占用百分比,O 表示老年代占用百分比,M 表示元数据区占用百分比,YGC 表示年轻代回收次数,YGCT 表示年轻代回收耗时,FGC 表示老年代回收次数,FGCT 表示老年代回收耗时。jstat 定时输出的特性,可以方便持续观察程序的各项指标。同样,如果没有条件使用图形界面(毕竟在 Linux 服务器上,主要使用命令行工具),又希望看到 GC 趋势的话,可以使用 jstat 工具。

2024-10-04 11:16:09 607

原创 如何在Spring Boot中有条件地运行CommandLineRunner Bean

PS 使用 Spring Boot 3.1.2 进行测试。

2024-10-04 11:15:42 424

原创 强大的JVM监控工具

在生产环境中,经常会遇到各种各样奇葩的性能问题,所以掌握最基本的JVM命令行监控工具还是很有必要的名称主要作用jps查看正在运行的Java进程jstack打印线程快照jmap导出堆内存映像文件jstat查看jvm统计信息jinfo实时查看和修改jvm配置参数jhat用于分析heapdump文件。

2024-10-03 08:29:32 1137

原创 Spring Boot 和 MyBatis-Plus凑一块儿了,这份教程你得看

通过以上步骤,我们完成了 Spring Boot 项目与 MyBatis-Plus 的集成。MyBatis-Plus 简化了大量繁琐的 CRUD 操作,提高了开发效率。通过结合 Spring Boot 的强大功能,我们可以更快速地构建高效、稳定的企业级应用。

2024-10-03 08:28:53 1561 1

原创 10 个最佳 Golang 库

在 Golang 的世界里,我们能够发现诸多优秀的特性,其中包括高效的垃圾回收机制、丰富多样且实用的库以及标准的类型系统。Golang 非常适合用于系统编程,它也常被人们称作“包”。Go 语言之所以被称为 Golang,是因为它在编程语言 GO 的基础上,汇集了许多可重用的代码组件,这些组件为开发者提供了极大的便利。在 Go 语言中,包的作用举足轻重。它不仅在组织和结构化代码方面发挥着关键作用,还显著提高了代码的可读性、可重用性以及可维护性。

2024-10-02 17:32:59 816

原创 Bruno:拥有 11.2k star 的免费开源 API 测试工具

Bruno 直接在您的电脑文件夹中存储您的 API 信息。我们使用纯文本标记语言 Bru 来保存有关 API 的信息。Bruno 是一款全新且创新的 API 客户端,旨在革新 Postman 和其他类似工具。您可以使用 Git 或您选择的任何版本控制系统来对您的 API 信息进行版本控制和协作。Bruno 客户端下载地址。

2024-10-02 17:32:31 342

原创 Java的栈帧和动态链接是什么?

在 Java 的面试过程中,不可避免的一个面试题那就是 JVM,而 JVM 的面试题中,有各种,比如在堆中会被问到的关于垃圾回收机制的相关问题,在栈中会被问到入栈以及出栈的过程,来聊一下关于栈的相关问题,比如,栈帧和动态链接指的是什么?总的来说,符号引用转为直接引用是Java类加载过程中解析阶段的一个重要步骤,它确保了符号引用能够被正确地解析为内存中的直接引用,从而实现Java程序的正常运行。:指向运行时常量池的方法引用,使得方法中的符号引用在运行时可以直接定位到引用的目标,比如某个类的成员或者方法。

2024-10-01 09:20:38 647

原创 Cyberduck网络鸭-访问远程文件客户端新选择

Cyberduck 是一款适用于 macOS 和 Windows 的自由文件传输客户端。适用于 Linux、macOS 和 Windows 的命令行界面 (CLI)。核心库用于Mountain Duck。(例如 FTP、SFTP、WebDAV、Amazon S3 等)访问和管理远程文件。支持macOS 和 Windows。

2024-10-01 09:19:47 968

原创 TiDB 开源分布式关系型数据库

简介:TiDB 是一款定位于在线事务处理/在线分析处理的融合型数据库产品,实现了一键水平伸缩,强一致性的多副本数据安全,分布式事务,实时 OLAP 等重要特性。同时兼容 MySQL 协议和生态,迁移便捷,运维成本极低。

2024-09-30 16:15:48 1111

原创 OceanBase企业级分布式关系数据库

OceanBase 数据库是阿里巴巴和蚂蚁集团不基于任何开源产品,完全自研的原生分布式关系数据库软件,在普通硬件上实现金融级高可用,首创“三地五中心”城市级故障自动无损容灾新标准,具备卓越的水平扩展能力,全球首家通过 TPC-C 标准测试的分布式数据库,单集群规模超过 1500 节点。产品具有云原生、强一致性、高度兼容 Oracle/MySQL 等特性, 承担支付宝 100% 核心链路,在国内几十家银行、保险公司等金融客户的核心系统中稳定运行。

2024-09-30 16:15:03 1123

原创 云原生数据库 PolarDB

云原生数据库 PolarDB 是阿里云自研产品,在存储计算分离架构下,利用了软硬件结合的优势,为用户提供秒级弹性、高性能、海量存储、安全可靠的数据库服务。100%兼容MySQL和PostgreSQL生态,支持分布式扩展,高度兼容Oracle语法。

2024-09-30 16:14:03 1182

200+最常见Java面试题参考答案(嗯嗯).pdf

200+最常见Java面试题参考答案,共200多道题,全面讲解

2019-07-08

空空如也

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

TA关注的人

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