自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 时间刺客:你的前端应用正在被时区问题“暗杀”!资深工程师的绝地反杀方案

核心问题时区混淆:后端返回的时间字符串(如)无时区标识,前端解析时可能被误认为UTC时间或本地时间。错误表现:时间显示比实际时间多8小时(中国时区UTC+8),导致日期跳转。

2025-03-27 18:27:46 237

原创 参数不是参数,作用域不是作用域——跨语言开发者集体破防的“作用域相对论“

“当你用eval时,你以为你在操控作用域,实则是作用域在操控你。”

2025-03-19 22:25:46 705

原创 揭秘 BEM 命名法:让前端代码自解释的底层逻辑,90% 开发者都踩过的命名坑

BEM是块(Block)、元素(Element)、修饰符(Modifier)的缩写,它是一种用于命名CSS类的约定俗成的规范。通过将页面组件分解为这三个层级,使得代码结构更加清晰,语义更加明确。。

2025-03-12 20:09:00 900

原创 CSS 实现 文本垂直居中

设置为与容器高度相同,使单行文本垂直居中。将容器设置为 Flex 布局,并通过。将容器设置为 Grid 布局,并通过。将内容绝对定位,并通过。

2025-03-12 00:30:00 326

原创 CSS 伪类与伪元素

伪类(Pseudo-class)用于选择元素的特定状态或位置。它以冒号()作为前缀标识符,常见的伪类包括动态伪类、结构伪类等。伪元素(Pseudo-element)用于选择元素的特定部分或生成内容。它与伪类的区别在于,伪元素表示元素内部的内容,逻辑上存在但在文档树中并不存在。CSS3 规定伪元素用双冒号()表示。

2025-03-11 11:15:13 460

原创 CSS 权重:优先级规则

CSS 权重(Specificity)是浏览器用来决定哪个样式规则优先级更高的机制。当多个样式规则同时作用于同一个元素时,权重高的规则会覆盖权重低的规则。权重的计算基于选择器的类型,通常用四组数字表示,例如0,0,0,0。行内样式(如):权重为1,0,0,0。ID 选择器(如#myDiv):权重为0,1,0,0。类选择器、伪类选择器、属性选择器(如.myClass:hover):权重为0,0,1,0。元素选择器、伪元素选择器(如div::before):权重为0,0,0,1。通配符和继承:权重为。

2025-03-11 10:58:57 914

原创 JDBC与数据库连接池

JDBC为Java程序员提供了一套用于数据库操作的接口API。通过JDBC,Java程序员可以连接任何提供了JDBC驱动程序的数据库系统,从而完成对数据库的各种操作。JDBC的核心思想是“面向接口编程”,即Java程序员只需要面向JDBC API编程,而不需要关心底层数据库的具体实现。JDBC是Java操作数据库的核心技术,通过JDBC API,Java程序员可以轻松连接和操作各种数据库。为了提高数据库操作的效率和安全性,我们可以使用。

2025-03-06 20:27:20 481

原创 Java 多线程

进程是计算机中已运行的程序,它是一个动态执行的过程。例如,同时运行的浏览器、QQ 和代码编辑器就是三个不同的进程。线程是操作系统能够进行运算调度的最小单位。一个进程可以包含多个线程,线程是进程中的实际运作单位,因此也被称为轻量级进程。总结进程:程序的执行实例。线程:进程中的执行单元,多个线程可以共享进程的资源。线程的创建:可以通过继承Thread类、实现Runnable接口或实现Callable接口来创建线程。线程休眠:使用方法使线程休眠。线程状态:线程有六种状态,分别是NEWRUNNABLE。

2025-03-05 18:57:52 381

原创 Java 日期和时间

日期2020-10-24:2020 年 10 月 24 日。1998-6-14:1998 年 6 月 14 日。时间带日期的时间:例如,表示 2020 年 10 月 24 日 8 时 30 分 23 秒。不带日期的时间:例如11:22:33,表示 11 时 22 分 33 秒。由于地球上的不同地区存在时差,因此准确定位一个时刻需要加上时区信息。GMT/UTC 加时区偏移:例如GMT+08:00或UTC+08:00表示东八区。缩写表示:例如CST。

2025-03-05 18:52:46 440

原创 【JAVA面试题】Spring、Spring MVC、Spring Boot、Spring Cloud的区别与联系

Spring:提供了IoC和AOP等核心功能,是企业级应用开发的基础。Spring MVC:基于Spring的Web框架,专注于Web应用开发。:简化了Spring应用的配置和开发,适合快速构建微服务。:基于Spring Boot的微服务治理框架,专注于分布式系统的开发和管理。如果是传统的Web应用,可以选择Spring + Spring MVC。如果是快速开发微服务,可以选择Spring Boot。如果是分布式系统,可以选择Spring Boot + Spring Cloud。

2025-03-05 10:40:55 2746

原创 【Java面试】重载(Overload)和 重写(Override)的区别

重载:发生在同一个类中,方法名相同但参数列表不同,与返回值类型和访问修饰符无关。重写:发生在父子类中,方法名、参数列表和返回值类型必须相同,访问修饰符不能更严格,抛出异常范围不能更大。理解重载和重写的区别,能够帮助我们在实际开发中更好地设计类和方法,同时也能在面试中从容应对相关问题。

2025-03-04 20:23:35 567

原创 【JAVA面试题】String、StringBuffer、StringBuilder的区别及使用场景

String:适用于字符串内容不经常变化的场景,如常量字符串、配置信息等。:适用于单线程环境下需要频繁修改字符串内容的场景,优先使用。:适用于多线程环境下需要频繁修改字符串内容的场景,特别是当多个线程共享同一个字符串变量时。String:不可变,线程安全,适合字符串内容不经常变化的场景。:可变,非线程安全,性能高,适合单线程环境下频繁修改字符串内容的场景。:可变,线程安全,性能稍低,适合多线程环境下频繁修改字符串内容的场景。

2025-03-04 20:09:20 373

原创 Mycat 与分布式 ID 生成方案

Mycat是一个开源的分布式数据库中间件,主要用于解决数据库分库分表、读写分离、负载均衡等问题。它支持 MySQL 协议,可以像使用单机数据库一样使用分布式数据库。

2025-03-04 08:00:00 923

原创 关于 SPU、SKU 和多对一关系的解释

通过 SPU 和 SKU 的设计,可以有效地管理商品的通用信息和具体库存信息,适用于电商、零售等场景。,指的是一个标准化的产品模型或模板。它定义了产品的基本属性,但不涉及具体的库存或销售信息。,指的是具体的库存商品。它是商品的最小库存单位,用于管理具体的库存和销售。在数据库设计中,SPU 和 SKU 的关系可以通过。

2025-03-04 07:00:00 496

原创 为什么 Map 不能直接使用 iterator()?深入理解 Java 中 Map 的遍历方式

Map没有iterator()方法,因为它存储的是键值对,而不是单个元素。你可以通过entrySet()获取键值对的集合,然后使用Iterator遍历。也可以使用增强 for 循环或 Lambda 表达式来更简洁地遍历Map。

2025-03-03 20:10:14 580

原创 【JAVA面试题】为什么局部内部类和匿名内部类只能访问局部 final 变量?

在 Java 中,和是两种常见的内部类形式。它们可以直接访问外部类的成员变量和方法,但在访问时,有一个限制:只能访问被final修饰的局部变量。本文将从和两个方面,深入解析这一限制的原因。

2025-03-03 20:09:17 1101

原创 【JAVA面试题】final 关键字

在 Java 中,final是一个非常重要的关键字,用于表示。它可以修饰类、方法、变量等,具体作用因修饰对象的不同而有所差异。本文将从三个方面,详细解析final的作用和使用场景。

2025-03-03 19:57:00 592

原创 【JAVA面试题】== 和 equals() 的区别与使用场景

在 Java 面试中,==和equals()的区别是一个高频考点。理解它们的底层原理和使用场景,对于掌握 Java 基础知识至关重要。本文将从和三个方面,深入解析==和equals()的区别。

2025-03-03 19:12:56 1134

原创 【JAVA面试题】设计模式之原型模式

原型模式核心价值避免重复初始化,提升对象创建性能简化复杂对象创建流程深浅拷贝区别浅拷贝:复制值类型+引用地址(共享引用对象)深拷贝:完全复制值类型和引用对象(递归克隆)实现深拷贝的三种方式递归实现Cloneable(如本文示例)序列化/反序列化(实现Serializable)使用第三方库(Apache Commons Lang3)JDK中的原型应用注意事项深拷贝可能引发循环引用问题需要处理final字段的特殊情况考虑使用原型管理器管理多种原型。

2025-03-03 18:26:55 548

原创 分布式图片管理方案

阿里云对象存储服务(Object Storage Service,简称 OSS)是一种海量、安全、低成本、高可靠的云存储服务,适用于图片、视频、文档等非结构化数据的存储和管理。

2025-03-03 08:00:00 852

原创 单点服务(Single Point of Service)

单点服务是一种简单且常用的设计模式,适用于小型系统或功能单一的场景。它的优点是简单易用、集中管理,但也存在单点故障、性能瓶颈和扩展性差等问题。在实际应用中,可以通过高可用架构、负载均衡、服务拆分和容灾备份等方式来克服单点服务的缺点。根据具体场景选择合适的解决方案,可以提升系统的稳定性和性能。关键词:单点服务、单点故障、高可用、负载均衡、微服务、SSO、配置中心、日志收集。

2025-03-03 07:00:00 775

原创 【JAVA面试题】JDK、JRE、JVM 三者区别和联系

JDK:Java 开发工具包,包含 JRE 和开发工具,用于开发和编译 Java 程序。JRE:Java 运行时环境,包含 JVM 和核心类库,用于运行 Java 程序。JVM:Java 虚拟机,负责执行字节码,实现 Java 的跨平台特性。JDK是开发者的工具箱。JRE是程序运行的环境。JVM是程序执行的引擎。

2025-03-02 17:04:17 1240

原创 【JAVA面试题】什么是面向对象?谈谈你对面向对象的理解。

面向对象(Object-Oriented Programming,OOP)是一种编程范式,它将现实世界中的事物抽象为对象,并通过对象之间的交互来解决问题。与面向过程不同,面向对象更注重参与者(对象)以及它们各自的职责。面向对象是一种强大的编程思想,它将现实世界中的事物抽象为对象,并通过封装继承和多态三大特性,提高了代码的复用性扩展性和维护性。

2025-03-02 16:36:09 357

原创 Java 序列化与反序列化

被序列化的类必须是EnumArray或类型。如果类不是枚举类型或数组类型,则必须实现接口,否则会抛出异常。

2025-03-02 00:37:32 639

原创 电商行业技术背景与架构演进

电商行业的技术背景和架构演进反映了互联网技术的快速发展。从早期的单体架构到如今的分布式服务架构和流计算架构,电商系统在不断演进中解决了高并发、高可用、高性能和海量数据处理等挑战。未来,随着人工智能、大数据、区块链等新技术的应用,电商行业的技术架构将继续演进,为用户提供更加智能和便捷的购物体验。

2025-03-02 00:14:53 901

原创 Java 输入输出流

在计算机中,输入/输出(Input/Output,缩写为 I/O)是指信息处理系统(如计算机)与外界(可能是人类或其他信息处理系统)之间的通信。输入是系统接收的信号或数据,输出是从系统发送的信号或数据。在 Java 中,输入和输出可以理解为 Java 程序与外部环境之间的数据交换。Java 程序可以从外部环境(如键盘、文件、网络等)读取数据,也可以将数据写入外部环境(如屏幕、文件、网络等)。java.io:较旧的 I/O 包,提供了基础的输入输出功能。java.nio。

2025-02-28 15:48:20 979

原创 Java 注解

Java 注解是一种特殊的语法元数据,它可以被添加到 Java 代码中的类、方法、字段、参数和包等元素上。注解本身不会影响代码的执行,但它可以通过反射机制在运行时被读取和处理。注解的作用类似于标签,它可以为代码添加额外的信息或标记。例如,@Override注解用于标记子类中重写父类的方法,编译器会检查该方法是否正确重写了父类的方法。自定义注解是 Java 注解的核心内容之一。通过自定义注解,开发者可以为代码添加特定的标记或元数据。自定义注解的步骤通常包括创建注解、定义注解参数、使用元注解配置注解。

2025-02-28 14:40:32 512

原创 Java 反射机制

通过掌握反射机制,开发者可以深入理解 Java 的动态特性,并解锁高阶开发能力(如自研框架)。然而,反射是一把双刃剑,合理使用方能发挥其最大价值。是 Java 在运行时动态获取类信息、操作类属性与方法的能力,其核心在于。

2025-02-27 14:29:58 889

原创 基于 Java 的客户端-服务器架构的车位管理系统

该项目是一个典型的客户端-服务器架构的 Java 应用,实现了基本的用户登录、注册和车位信息查看功能。通过分层设计和模块化开发,代码结构清晰,易于扩展和维护。连接数据库进行数据操作。的客户端-服务器架构的。进行网络通信,并通过。

2025-02-27 10:35:25 789

原创 Java 关键字 volatile

是 Java 中的一个关键字,用于修饰变量,确保多线程环境下的可见性和有序性。它主要用于解决以下两个问题:在多线程环境中,每个线程都有自己的工作内存(缓存),线程对变量的操作通常是在工作内存中进行的。如果没有同步机制,一个线程对变量的修改可能不会立即反映到主内存中,其他线程也就无法看到最新的值。问题:效果:Java 编译器和处理器可能会对指令进行重排序以优化性能,但这可能导致多线程环境下的行为不符合预期。 可以禁止指令重排序,确保代码的执行顺序符合程序员的意图。问题:效果:解决方案:状态标志:

2025-02-27 09:24:01 1047

原创 辨析:throw 和 throws

throw和throws都与异常处理相关,但它们的用途和行为完全不同。

2025-02-27 09:17:14 316

原创 synchronized

synchronized是 Java 中的一个关键字,用于实现线程同步,确保多个线程在访问共享资源时的线程安全。它的主要作用是防止多个线程同时执行某个代码块或方法,从而避免数据不一致或竞态条件(Race Condition)的问题。

2025-02-27 09:15:48 319

原创 Java 平台的三个版本

Java 的成功得益于其跨平台能力、丰富的生态系统以及持续的更新和发展。尽管 Java ME 的市场份额下降,但 Java SE 和 Java EE(Jakarta EE)仍然是现代软件开发的重要工具。

2025-02-27 09:01:52 660

原创 类、对象与认知的抽象关系

关于“类”的这三句话,分别从技术、抽象关系和认知三个层面进行了解释。这三句话共同说明,类不仅是编程工具,更是人类抽象思维和认知过程的体现。

2025-02-27 08:45:21 560

原创 Java泛型

泛型的核心思想是将类型像参数一样传递。在Java的集合类中,泛型的应用十分常见。例如,这里的<String>就是泛型,尖括号中间的数据类型被称为实际类型参数,且实际类型参数的数据类型只能为引用数据类型。以为例,类名后面的<E>就是泛型的定义,E是Java泛型的通配符,可理解为一个占位符,使用时才确定类型。此处的命名不受限制,但最好有一定含义,如的泛型定义为K表示KeyV表示Value。在这个例子中,我们在类的定义处定义了泛型,在类内部定义了一个T类型的number变量,并为其添加了。

2025-02-25 07:30:00 1090

原创 Java 枚举类

枚举类是一种特殊的类,用于定义一组固定的常量。枚举类的每个常量都是该类的一个实例,且这些实例在编译时就已经确定。SUNDAYMONDAYTUESDAY等。MALEFEMALE。示例enum Day {Java 5.0 之前:通过普通类“改装”为枚举类。Java 5.0 之后:使用enum关键字定义枚举类。在 Java 5.0 之前,枚举类需要通过普通类来实现。// 性别枚举类// 私有化构造器// 定义常量。

2025-02-25 05:30:00 329

原创 Java 包装类

Java 有 8 种基本数据类型,为了能将这些基本数据类型当作对象来使用,Java 为每个基本类型都提供了对应的包装类。包装类可以分为 3 大类:Number、Character、Boolean。

2025-02-25 03:30:00 677

原创 Java 异常处理

异常即程序中的错误,可分为编译期间错误和运行期间错误。编译期异常:语句漏写分号、关键字拼写错误等,编译器会在编译期间明确提示错误。例如,语句漏写分号时,Java 编译器会指出“需要 ‘;’”。运行期异常:如数组下标越界,程序编译阶段正常,但运行时会抛出异常。自定义异常需定义一个类,继承Throwable类或其子类。Java 内置异常类通常可描述大部分异常情况,但当内置异常无法满足业务需求时,可自定义异常。super("我的自定义异常");

2025-02-25 02:15:00 546

原创 Java Scanner 类

Scanner是一个简单的文本扫描器,可解析基础数据类型和字符串。它位于java.util包下,使用时必须用import。

2025-02-25 00:45:00 245

原创 Java String 类

在 Java 编程里,字符串操作十分常见,而String类作为 Java 标准库的核心类,用于表示不可变的字符序列。任何对字符串的修改操作都会返回一个新的字符串对象,不会改变原始字符串。本文将详细介绍String类的常用方法,并结合示例代码帮助理解。

2025-02-25 00:00:00 1303

空空如也

空空如也

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

TA关注的人

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