自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java多线程进阶:从锁策略到线程池的硬核指南

在 Java 并发编程中,锁与线程协作机制是绕不开的核心。本文系统梳理从锁策略、JVM 锁优化(消除 / 粗化)、CAS 与原子类,到 JUC 工具(信号量、CountDownLatch、线程池)的完整知识链条,帮你构建多线程进阶的扎实基础。无论是为了面试还是写出高性能并发代码,这些内容都至关重要。

2026-08-14 23:05:18 185

原创 Java多线程进阶:从锁策略到线程池的硬核指南

在 Java 并发编程中,锁与线程协作机制是绕不开的核心。本文系统梳理从锁策略、JVM 锁优化(消除 / 粗化)、CAS 与原子类,到 JUC 工具(信号量、CountDownLatch、线程池)的完整知识链条,帮你构建多线程进阶的扎实基础。无论是为了面试还是写出高性能并发代码,这些内容都至关重要。

2026-08-14 23:03:10 196

原创 Java 多线程入门到实战:线程安全、线程池与 ThreadLocal 一文吃透

try {break;//注意没有break就是不退出});t.start();if(n==0){

2026-08-14 23:01:14 163

原创 Java网络编程入门:从Socket到UDP/TCP实战,手把手实现可运行Demo

网络编程,说白了就是写代码实现跨主机的通信。套接字(Socket)是一组网络编程相关函数的统称。我们编写网络程序,本质上是在调用操作系统提供的传输层能力。传输层主要涉及两大协议:TCP 和 UDP,二者各自提供了一组 Socket 函数。

2026-08-11 17:30:47 294

原创 深入浅出计算机网络:从 TCP 可靠传输到 DNS 解析核心原理

本文系统梳理计算机网络的核心原理,从应用层的数据交换格式与端口号,到传输层 TCP 的十大核心机制与状态机,再到网络层 IP 协议、路由选择、差错检测以及 DNS 解析。理解这些内容,是掌握 JavaEE 网络编程与排查线上网络问题的重要铺垫。

2026-08-11 17:27:59 332

原创 JVM 核心原理精讲:内存划分、双亲委派与垃圾回收一文搞懂

JVM(Java 虚拟机)是 Java 能够"一次编写、到处运行"的基石,也是 Java 面试中绕不开的高频考点。本文系统梳理 JVM 的内存区域划分、类加载的双亲委派机制,以及垃圾回收的核心算法与主流回收器,帮助你建立起完整且扎实的 JVM 知识框架。

2026-08-10 13:50:19 456

原创 HTTP协议全解:从报文结构到HTTPS加密原理

HTTP(HyperText Transfer Protocol,超文本传输协议)是位于应用层的协议。HTTP/1.1、HTTP/2 的传输层都是 TCP;而 HTTP/3(注意不是 3.0)引入了 QUIC 协议——QUIC 基于 UDP 实现,但自己在应用层重新实现了可靠传输与拥塞控制,弥补了 UDP 不可靠的缺点。此外,在分布式系统中,服务之间的相互调用也越来越常见。Java 微服务兴起后,Spring Cloud 这类框架内部正是通过 HTTP 进行通信,以便与 Spring MVC 无缝衔接。

2026-08-09 22:15:28 602

原创 从零搞懂计算机工作原理:冯·诺依曼体系与 CPU 执行全流程

当我们敲击键盘、运行程序时,底层究竟发生了什么?本文从计算机发展史、冯·诺依曼体系出发,逐步拆解 CPU 的执行流程、编程语言的演进,以及操作系统如何管理进程与内存。理解这些底层原理,是迈入 Java EE 高阶开发前不可或缺的技术铺垫。

2026-08-09 22:12:57 240

原创 Java 文件 IO 从入门到精通:字节流与字符流全解析

这里所说的"文件",指的是硬盘上存储的文件。我们只需调用操作系统提供的 API 来操作文件即可。

2026-08-08 22:12:19 191

原创 网络初始:从 IP 端口到 TCP/IP 五层模型与数据封装分用

在动手写 Java 网络编程之前,先搞清楚“网络到底是怎么工作的”至关重要。本文从网络的演进脉络讲起,依次梳理 IP 地址与端口号、网络协议及其分层思想,并重点剖析 TCP/IP 五层模型与数据收发的封装、分用流程,帮助你建立起一张清晰的网络全景图,为后续 Socket 编程打下扎实基础。

2026-08-08 22:08:23 867 1

原创 2128b题解 cf

摘要 给定一个排列数组,要求通过n轮操作(每轮移除最左或最右元素),构造一个"好数组"(即不存在连续5个严格递增或递减的子序列)。解法采用双指针策略,在奇数轮取较小元素(左移),偶数轮取较大元素(右移),交替选择保证结果满足条件。该方案通过简单的奇偶轮次判断和双指针移动,确保构造的数组符合要求,时间复杂度为O(n)。

2026-07-15 18:12:08 204

原创 2127d

给定一棵树形结构的房子和桥梁,要求为每座桥分配方向,使得从任意房子出发都能到达河流。摘要如下: 问题分析:树必须无环且连通(题目已保证)。关键在于确定桥方向的合法分配方案数。 核心思路: 若桥数≥房子数,直接无解(输出0)。 统计叶子节点,非叶子节点的邻居中叶子节点数需满足约束(非叶子邻居≤2)。 对每个非叶子节点,计算其叶子邻居数的阶乘并累乘到答案中。 最终计算: 若剩余非叶子节点≥2,答案乘以4;否则乘以2。 结果对1e9+7取模。 结论:通过预处理阶乘和分类讨论,算法高效计算出合法方案数。时间复杂度主

2026-07-14 18:45:23 25

原创 Codeforces 2127C - 题解

这篇文章摘要:该算法解决了一个关于数组交换操作的优化问题。核心思路是,A方只需进行一次有效的(i,j)交换,因为B方会立即采取最优策略锁定最大收益。具体步骤:1) 比较并交换a、b数组元素使a元素总是不小于b;2) 计算初始差值总和;3) 对处理后的数组排序;4) 寻找相邻元素间最小的(c[i][0]-c[i-1][1])值;5) 最终结果为初始差值加上两倍的最小差值。该解法通过O(n log n)的排序和线性扫描实现了高效求解。

2026-07-14 17:29:40 31

原创 数据库约束

数据库约束概述 数据库约束用于确保数据的准确性和可靠性,主要包括以下类型: NOT NULL约束 强制列不允许存储NULL值 示例:创建表时指定id列不能为空 其他常见约束 数据类型约束 值范围约束 唯一性约束 约束通过在表定义时设置规则(如NOT NULL)来实现,是数据库设计的重要部分,能有效保证数据的完整性和一致性。SQL语句示例展示了如何创建带NOT NULL约束的表。

2025-07-20 18:15:31 817

原创 数据库设计

数据库设计需遵循范式原则:第一范式(1NF)要求每列不可再分;第二范式(2NF)在1NF基础上消除部分函数依赖;第三范式(3NF)在2NF基础上消除传递依赖。实体关系包括一对一(1:1)、一对多(1:N)和多对多(M:N),其中多对多关系需通过中间表实现。合理设计能避免数据冗余和异常,确保数据完整性。

2025-07-20 18:15:01 832

原创 MySQL表操作全攻略

本文介绍了MySQL数据库中的表操作,包括创建、查看、修改和删除表的基本语法和示例。创建表时需要定义表名、列名、数据类型及约束条件;通过SHOW TABLES和DESCRIBE命令可查看表结构;ALTER TABLE语句用于修改表结构,包括添加/修改/删除列;DROP TABLE则用于删除整个表。这些操作是MySQL数据库管理的基础内容,使用时应谨慎操作,特别是删除表会导致数据永久丢失。

2025-07-20 18:14:29 343

原创 SQL常用操作与技巧

SQL基础操作摘要:SQL不区分大小写,语句需以分号结尾。常用操作包括:查看数据库(show databases)、创建数据库(create database name)、显示建库语句(show create database)、选中数据库(use name)、修改数据库(alter database)和删除数据库(drop database)。创建时可指定字符集/校验规则,使用if exists避免重复创建/删除报错。注意数据库名不能是SQL关键字,否则需用反引号包裹。语法错误会终止后续执行,错误提示包含

2025-07-20 18:13:31 179

原创 MYSQL的联合查询

本文介绍了MySQL中联合查询的几种常见用法。首先通过创建用户表(u)、订单表(o)、商品表(p)和订单商品关联表(op)建立了测试环境,展示了各表结构和数据关系。然后详细讲解了简单内联合查询的实现方法,包括笛卡尔积计算、连接条件添加和结果精简。接着展示了内联合分组查询的使用,计算每个用户的总消费金额。最后演示了多表内联合查询,通过连接四张表获取用户的订单和商品信息。文中提供了两种等效语法:传统的逗号分隔表名加WHERE条件和JOIN...ON语法,帮助读者理解不同写法下的查询逻辑。

2025-07-20 09:47:45 1227

原创 数据库操作

本文总结了MySQL数据库表的基本操作指南:1)查看表需先use数据库;2)创建表使用create table语句定义列名和类型;3)注释可用#或comment;4)desc命令查看表结构;5)修改表包括添加列(add)、修改类型(modify)、删除列(drop)和重命名列(rename)四种操作;6)删除表用drop table命令。这些操作涵盖了表的创建、查看、修改和删除等基本管理功能,其中修改表属于低频操作,具体语法不必强记。

2025-06-02 22:28:00 136

原创 我对泛类的一些初步了解

这就是泛型的内容了,还有通配符这里先不讲。

2025-04-26 13:05:12 365

原创 异常的一些理解

异常是在程序执⾏过程中发⽣的⼀种特殊情况或错误状态。它打断了程序的正常流程,需要特别处理。像算数异常,数组越界等都是异常因为我们可能会在实际工作中出现一些其他的异常是java没有的因此我们也可以自定义一些异常if(a==0){}else{super();System.out.println("gg了");}finally {

2025-04-03 20:14:07 954

原创 java的类

public class关键字 cat类名{变量名}方法在这里面class是关键字,cat是类名,moo是成员变量,dew是方法。

2025-03-22 14:27:15 220

原创 java中的简单引用的讲解

本质是java没有指针,因此无法在函数内直接修改传过来的参数,因此引入了引用这一概念。

2025-03-15 16:28:31 410

原创 java初学(这里只讲解与c不同的部分)

java与c的数组定义有较大区别这里给出两个代码上面为Java下面为cint[] a=new int [5]//这是java的定义int a[5]//这是c的定义我们可以很明显的发现两者的数据类型不一样,java的是int [ ]而c是int 型个人认为java的类型更符合数组的含义,提前声明数组;

2025-03-15 15:42:23 307

原创 二叉树的初步了解——堆

堆就是用数组存储位置的完全二叉树,但他存储的数据有规律,从完全二叉树中我们可以发现一个规律子树的下标分别为(母树下标*2)和(母树下标*2+1),而母树的下标为(子树/2)。2.大小根堆这里以大根堆为例,什么是大根堆?就是指对每棵树来说,他存的值大于自己的所有子树,而小于自己的所有母树。而小根堆也是这样这是堆的实现和一些较复杂的问题的实现,想学明白的话需要掌握顺序表和字母树之间的关系。本人在写文方面是新手,如果有实现上的问题可以评论区直接问。

2025-02-20 21:52:22 772

原创 队列和栈的实现

首先让我们分析一下队列的逻辑,先进先出,因此头插和尾删是十分频繁的,因此如何更快的实现头插尾删十分重要。用双向链表的原因是可以通过头结点直接访问尾节点,因此这里也可以用带哨兵位的的单向链表,只要保留尾节点的直接访问即可这样的时间复杂度为1;而使用顺序表的时间复杂度尾插为1,头删为n;首先让我们分析一下栈的逻辑,先进后出,因此尾插和尾删是十分频繁的,而这里最方便的就是顺序表,同时两个操作的时间复杂度都是1;

2025-02-18 20:27:01 349

原创 顺序表的实现

这里的顺序表指的是可以自动扩容的的顺序表。新手写文章如有问题可以题;

2025-02-18 19:15:18 215

原创 关于单向和双向循环链表相关

双向链表和单向链表的实现

2025-02-18 18:34:45 511

原创 关于扫雷的实现

扫雷的实现

2025-01-10 15:50:30 395

原创 关于二分查找我的一点看法

关于使用二分查找,首先它由两方面组成,第一方面是查找定值,而第二方面是查找是否满足条件,查找定值很简单,只要寻找值并输出即可,找不到输出-1;而满足条件往往更为复杂,首先题目的答案范围往往要是连续的,其次我们往往需要编写一个check函数去检测mid的值是否满足题意,从而得出答案。因此我认为二分不是只能应用于查找数组,也可以查找题干中如1-1000这样的值。

2024-12-22 09:45:50 169

空空如也

空空如也

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

TA关注的人

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