14k13 分钟

2025-01-22🌱上海: ☀️ 🌡️+12°C 🌬️↖14km/h # 说说AQS吧 全称AbstractQueuedSynchronizer (抽象队列同步器),AQS是很多同步器的基础框架,比如ReentranLock、CountDownLatch和Semaphore等都是基于AQS实现的,简单来说,AQS就是起到了一个抽象、封装的作用,其中提供一系列关于同步的排队、入队、加锁、中断等方法,通过实现这些方法,可以生成自定义的同步器。 AQS内部主要维护了一个volatile的int类型的state变量和一个FIFO队列,在state=1的时候表示当前的锁已
42k38 分钟

2025-01-21🌱上海: ☀️ 🌡️+14°C 🌬️↖8km/h # 深入理解线程池原理 # 线程池的创建 # 使用Executors工厂类创建 # 固定大小线程池(FixedThreadPool) // 创建一个固定大小为 5 的线程池 ExecutorService executorService = Executors.newFixedThreadPool(5); Executors.newFixedThreadPool(5):创建一个固定大小为 5 的线程池,核心线程数和最大线程数都为 5。 # 单线程线程池(S
22k20 分钟

2025-01-20🌱上海: ☀️ 🌡️+8°C 🌬️←9km/h 说说Java中HashMap的原理? # 通过源码深入了解HashMap 首先来了解一下比较重要一些变量定义 // 默认初始容量 - 必须是 2 的幂次方。 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // 即 16 // 最大容量,如果构造函数中通过参数隐式指定了更高的值,则使用此最大容量。 // 必须是
30k28 分钟

2025-01-19🌱上海: ☀️ 🌡️+13°C 🌬️↘7km/h # 接口和抽象类有什么区别? # 抽象类 # 1. 定义抽象类 定义抽象类的时候需要用到关键字abstract,同时需要放在class关键字前面。 关于抽象类的命名。在阿里的java开发手册上有强调,“抽象类命名要使用 Abstract 或 Base 开头”。 package com.muzi.abstractinterfaceclass.abstractClassText; // 定义抽象的动物类 public abstract class AbstractAnimal {
9.3k8 分钟

2025-01-18🌱上海: ☀️ 🌡️+13°C 🌬️↑10km/h # 说下你常用的Linux命令 # 常用总结 # 扩展知识 # 如何在linux服务器上查看生产日志? 虽然现在基本生产上都日志收集管理系统,但是我们有时候查看一些特定的日志,还是使用命令比较方便 但是如何优雅的查看生产日志还是需要仔细学习一下的,比如仅使用cat命令来查看日志文件,不但无法查看实时日志,严重的情况还可能影响服务器的运行。那接下来就分别讲解一下不同的查看日志的命令。 # tail命令 这个命令也是常用的日志查看命令,可以查看实时日志的更新,当日志有更新的时候,实时打印到控制台显示。 参
6.1k6 分钟

2025-01-15🌱上海: ☀️ 🌡️+4°C 🌬️↓14km/h 什么是用户态和内核态? # 总结分析 运行模式 权限级别 可执行操作 优势 用户态 较低 不能直接访问硬件或进行特权操作,需通过系统调用让内核执行敏感操作 安全性高,程序问题不影响操作系统稳定性 内核态 最高 可直接访问硬件资源并执行如内存管理、进程调度等特权操作 能高效管理硬件与系统资源 # 深入分析 其实简单来说内核态就是操作系统运行线程,用户态就是线程执行用户自己的程序 用户态不能直接使用系统资源,也不能改变CPU的工作状态,只能访问到用户程序自己的存储空间 内核态可以直接使
16k15 分钟

# I/O模型有哪些? # 总结分析 I/O 模型 特点 阻塞 I/O 调用 I/O 操作时进程阻塞,直到数据准备好或操作完成才继续执行 非阻塞 I/O I/O 操作不阻塞进程,数据未准备好立即返回错误或状态,进程可继续执行其他操作 I/O 多路复用 使用 select、poll、epoll 等系统调用,可同时等待多个 I/O 操作,有就绪的就进行处理 信号驱动 I/O 数据准备好时,内核发信号通知进程进行 I/O 操作,进程接收到信号后再读写数据 异步 I
13k12 分钟

2025-01-15🌱上海: ☀️ 🌡️+4°C 🌬️↓14km/h # 线程和进程有什么区别? 比较项目 进程 线程 定义 资源分配的基本单位,可看作正在运行的程序实例,每个进程有独立内存空间(代码段、数据段、堆栈等),进程间相互独立 CPU 调度的基本单位,属于进程,一个进程可包含多个线程,线程共享进程内存空间和资源(如文件句柄、数据段),但有自己独立的栈和寄存器 资源消耗 创建时需分配独立内存空间和系统资源,创建与切换开销较大 共享进程资源,创建开销小,切换开销远小于进程切换 通信方式 因内存空间相互独立,进程间通信(IPC)复杂,需借助管道、消
14k12 分钟

2025-01-15🌱上海: ☀️ 🌡️+6°C 🌬️↓18km/h # TCP/IP的四层模型是是么? # 什么是TCP/IP协议 TCP/IP协议是一种网络体系模型的代名词,指的是多种协议的协议簇,即包含TCP、IP、MAC、UDP、HTTP、FTP等多种协议,它是四层网络模型,包含应用层、传输层、网络层、链路物理层(网络接口层),和OSI七层网络模型、五层网络模型略有区别,TCP/IP四层模型可以说是OSI七层网络的简化版。如下图所示。 # 网络模型对应的设备及协议 # TCP/IP分层讲解 TCP/IP
22k20 分钟

2025-01-15🌱上海: ☀️ 🌡️+6°C 🌬️↓18km/h # 说说TCP的四次挥手 之前的文章已经提到相关概念,并且做了大概的讲解 具体可看 TCP 和 UDP 有什么区别? - 木子金又二丨的回答记录 - 面试鸭 - 程序员求职面试刷题神器 今天就详细分析下四次挥手的具体细节 # 为什么需要四次挥手? 建立一个连接需要三次握手,而终止一个连接要经过 4次握手。这由 TCP 的半关闭( half-close) 造成的。既然一个 TCP 连接是全双工 (即数据在两个方向上能同时传递), 因此每个方向必须单独地进行关闭。这原则就是当一方完成它的数据发送任务后就能发送