自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 内存区域划分——垃圾回收

垃圾回收(Garbage Collection,GC)的核心目标是 自动识别并释放 “无用对象” 占用的内存,解放开发者的内存管理负担,同时避免内存泄漏和野指针问题,保障程序稳定性和内存使用效率。上述三种算法均有优缺点,因此主流 GC(如 Java 的 HotSpot VM)采用 “分代收集”—— 根据对象生命周期长短,将堆内存分为新生代和老年代,分别使用合适的算法:​。GC 的第一步是 “标记”—— 区分 “存活对象” 和 “垃圾对象”,核心逻辑是:可达的对象为存活,不可达的为垃圾。

2025-11-07 22:21:22 530

原创 UDP 的报文结构和注意事项

UDP 的核心优势是 “简洁、快速”,适合对延迟敏感但对可靠性要求较低的场景(如实时音视频、DNS、DHCP);其局限性(无可靠性、无流量控制)需通过应用层设计弥补。理解 UDP 报文结构是掌握其传输原理的基础,而关注使用注意事项则是确保应用稳定运行的关键。

2025-10-06 18:52:33 1098

原创 总结 IP 协议的相关特性

IP(Internet Protocol,互联网协议)是 TCP/IP 协议栈的核心,负责在互联网中路由数据包、实现跨网络设备的通信,其核心特性可归纳为以下 6 类,覆盖通信逻辑、地址机制、数据处理等关键维度:

2025-10-03 19:33:30 581 1

原创 从输入URL到展示出页面

从输入 URL 到页面展示,整个过程可简化为 “地址解析→连接建立→数据传输→页面渲染浏览器解析 URL,明确协议、域名、资源路径;DNS 解析域名,获取服务器 IP;与服务器建立 TCP 连接(三次握手);若为 HTTPS,额外进行 TLS/SSL 握手,建立加密连接;浏览器发送 HTTP 请求(携带请求行、请求头、请求体);服务器处理请求,返回 HTTP 响应(携带状态行、响应头、响应体);可选:关闭 TCP 连接(四次挥手);

2025-10-02 20:39:25 953

原创 NAT 机制的工作流程

内网请求→NAT 正向转换(私→公)→外网响应→NAT 反向转换(公→私)→内网接收其中,PAT 通过 “端口区分” 实现单公有 IP 多设备共享,是家庭和中小企业网络的标配;静态 NAT 和端口转发则用于内网设备对外提供服务的场景。

2025-10-02 20:21:42 937

原创 数据链路层

数据链路层是 OSI 七层模型的第二层,位于物理层之上、网络层之下,核心作用是,同时处理物理层可能出现的错误(如比特差错),为上层网络层提供无差错的链路服务。

2025-10-02 20:16:53 955

原创 网络原理初识

格式: 应用数据 → 传输层封装(TCP/UDP) → 网络层封装(IP) → 数据链路层封装(帧) → 物理层(比特) → 传输介质 → 目标物理层 → 目标数据链路层(解封装) → 目标网络层(解封装) → 目标传输层(解封装) → 目标应用层数据 想了解这些概念在实际网络抓包中的表现吗?协议,⽹络协议的简称,⽹络协议是⽹络通信(即⽹络数据传输)经过的所有⽹络设备都必须共同遵 从的⼀组约定、规则。TCP/IP通讯协议采⽤了5层的层级结构,每⼀层都呼叫它的下⼀层所提供的⽹络来完成⾃⼰的需求。

2025-09-24 15:46:02 337

原创 ⽂件内容的读写⸺数据流

InputStream 概述。

2025-09-20 11:34:11 331

原创 文件操作和OI----- File 类的用法

String[] list() 返回File对象代表的目录下的所有文件名。delete() 删除改为不见。File() listFile() 返回File对象代表的目录下的所有文件。

2025-09-20 11:24:44 686

原创 HashTable , HashMap, ConcurrentHashMap之间的区别

想要搞清楚这三个概念之间的区别的话首先得弄清楚这三个概念究竟是什么nullnull。

2025-09-10 21:08:28 849

原创 synchronized的总结

• 假设有 A B C 三个线程, 线程 A 先获取到锁, 然后 B 尝试获取锁, 然后 C 再尝试获取锁, 此时 B 和 C都在阻塞队列中排队等待. 但是当 A 释放锁之后, 虽然 B ⽐ C 先来的, 但是 B 不⼀定就能获取到锁,⽽是和 C 重新竞争,并不遵守先来后到的规则。按照之前对于锁的设定, 第⼆次加锁的时候, 就会阻塞等待. 直到第⼀次的锁被释放, 才能获取到第⼆个锁. 但是释放第⼀个锁也是由该线程来完成, 结果这个线程已经躺平了, 啥都不想⼲了, 也就⽆法进⾏解锁操作. 这时候就会。

2025-08-08 16:59:33 362

原创 线程池的总结

5.threadFactory:创建线程的工厂,参与具体的线程创建工作。通过不同的线程工厂创建出的线程相当于对一些属性进行了不同的初始化设置。*使用Executors.newFixedThreadPool(10)能创建出固定包含10个线程的线程池。4、使用worker线程要做的事情:不停的从BlockingQueue中取任务并执行。newSingleThreadExecutor: 创建只包含单个线程的线程池.newFixedThreadPool: 创建固定线程数的线程池。

2025-07-31 11:24:32 419

原创 泛型的概念与语法

泛型的主要⽬的:就是指定当前的容器,要持有什么类型的对象。此时,就需要把类型,作为参数传递。需要什么类型,就传⼊什么类型。一、泛型:就是适⽤于许多许多类型。从代码上讲,就是对类型实现了参数化。S, U, V 等等 - 第⼆、第三、第四个类型。代表占位符,表⽰当前类是⼀个泛型类。E 表⽰ Element。N 表⽰ Number。V 表⽰ Value。实例化⼀个泛型类对象。

2025-07-29 20:53:03 184

原创 【无标题】

自动拆箱(Auto-unboxing)是 Java 中的一种自动转换机制,允许将包装类(如。自动装箱(Autoboxing)是 Java 中的一种自动转换机制,允许将基本数据类型(如。频繁的装箱和拆箱会产生额外的对象创建和方法调用,可能影响性能,尤其在循环中需注意。频繁的装箱和拆箱会产生额外的对象创建和方法调用,可能影响性能,尤其在循环中需注意。这种转换是编译器提供的语法糖,在运行时会被转换为对包装类的。这种转换是编译器提供的语法糖,在运行时会被转换为对包装类的。比较包装类对象时,比较的是引用而非值。

2025-07-29 20:45:09 926

原创 时间和空间复杂度

算法效率分析分为两种:第⼀种是时间效率,第⼆种是空间效率。时间效率被称为时间复杂度,⽽空间效率被称作空间复杂度。时间复杂度主要衡量的是⼀个算法的运⾏速度,⽽空间复杂度主要衡量一个算法所需要的额外空间。

2025-07-28 19:45:25 643

原创 volatile关键字的作用

Java 编译器和处理器为了优化性能,可能会对指令进行重排序。在单线程环境下,重排序不会影响结果,但在多线程环境下可能导致问题。在多线程环境下,每个线程可能会将变量从主内存拷贝到 CPU 缓存中进行操作。如果变量没有被声明为。,当一个线程修改了变量的值,其他线程可能无法立即看到最新的值,甚至完全看不到。一、保证内容的可见性。

2025-07-26 17:19:36 202

原创 单例模式(保证线程安全)

线程安全的问题发生在首次创建实例的时候,如果在多个线程中调用getlnsance方法就可能导致创建出多个实例。加上 synchronized 可以改善这⾥的线程安全问题.类加载的时候不创建实例,第一次使用时才创建实例。一旦实力已经创建好了,后面的线程再多也没有问题。加入synchronized就可以解决这种问题。如果在多线程中沿用上面的懒汉模式是不安全的。单例模式具体的实现方式有很多,最常见的是。类加载的时候同时创建实例。

2025-07-26 17:14:24 224

原创 wait 与notify

一.wait()方法wait()/wait(long timeout):让线程进入等待notify()/notifyAll():唤醒在当前对象上等待的线程wait,notify,notifyAll都是Object类的方法一.wait()方法wait需要搭配synchronized来使用,脱离synchronized使用会直接抛出异常在以上的代码之中,当执行到object.wait()之后就一直等待下去,我们此时就需要使用到另外一个方法唤醒的方法notify()

2025-07-26 16:53:48 268

原创 线程安全问题的原因和解决方案

假设有 A B C 三个线程, 线程 A 先获取到锁, 然后 B 尝试获取锁, 然后 C 再尝试获取锁, 此时 B 和 C。synchronized 会起到互斥效果, 某个线程执⾏到某个对象的 synchronized 中时, 其他线程如果也执⾏。都在阻塞队列中排队等待. 但是当 A 释放锁之后, 虽然 B ⽐ C 先来的, 但是 B 不⼀定就能获取到锁,如果多线程环境下代码运行的结果是符合我们的预期的,与单线程环境下的结果一样,则说明这个线程是安全的。是操作系统线程调度的⼀部分⼯作.

2025-07-24 20:39:47 282

原创 Java线程的几种状态

所以,之前我们学过的 isAlive() ⽅法,可以认为是处于不是 NEW 和 TERMINATED 的状态都是活着。BLOCKED 表⽰等待获取锁, WAITING 和 TIMED_WAITING 表⽰等待其他线程发来通知.⼯作⼈员开始接待,排在队伍中也是属于该状态,即可被服务的状态,是否开始服务,则看调度器的。刚把李四、王五找来,还是给他们在安排任务,没让他们⾏动起来,就是 NEW 状态;RUNNABLE: 可⼯作的. ⼜可以分成正在⼯作中和即将开始⼯作.状态,⾄于这些状态的细分,我们以后再详解;

2025-07-23 19:24:39 197

原创 Thread 类的基本用法

Thread.currentThread().isInterrupted() 判断指定线程的中断标志被设置,不清除中断标志。public bollean isInterrupted() 判断对象关联的线程的标志位是否设置,调用后不清除标志位。System.out.println("这⾥是线程运⾏的代码");也是我们⽐较熟悉⼀组⽅法,有⼀点要记得,因为线程的调度是不可控的,所以,这个⽅法只能保证。通过共享的标记来进⾏沟通(使用自定义的变量作为标志位)

2025-07-22 20:10:55 622

原创 Thread 类及常⻅⽅法

Thread() 创建线程对象。Thread(Runnable targert) 使用Runnable对象创建线程。Thread(Runnable target,String name) 创建线程对象,并命名。Thread t3 = new Thread("这是我的名字");

2025-07-22 18:02:23 273

原创 认识Thread

⼀个线程就是⼀个 "执⾏流". 每个线程之间都可以按照顺序执⾏⾃⼰的代码. 多个线程之间 "同时" 执⾏ 着多份代码.位同事李四、王五⼀起来帮助他,三个⼈分别负责⼀个事情,分别申请⼀个号码进⾏排队,⾃此就有。此时,我们就把这种情况称为多线程,将⼀个⼤任务分解成不同⼩任务,交给不同执⾏流就分别排队。之前我们主要描述的是个⼈业务,即⼀个⼈完全处理⾃⼰的业。⼀家公司要去银⾏办理业务,既要进⾏财务转账,⼜要进⾏福利发放,还得进⾏缴社保。了三个执⾏流共同完成任务,但本质上他们都是为了办理⼀家公司的业务。

2025-07-22 17:34:55 803

原创 JAVA 数据结构

变量的包装型:int=>Integer long=>Long short=>Short byte=>Byte float=>Float char=>Character boolean=>Boolean。//long=>int ,数据范围由大到小,需要强转,否则编译失败。#自动类型转换:当数据类型小的转换为数据类型大的时候会进行自动类型转换。#对于short、byte这种比4个字节小的会先提升为4个字节的int。*不同类型的数据运算时,数据类型小的会自动被提升到类型大的。例如:int a=100;

2025-02-28 19:26:58 315

原创 励志学好Java的小韩

5.关于我最想进入的一家IT公司,切实一点的话,在一个小厂里拥有也一个稳定的工作,当然在像网易,腾讯,字节跳动这些大厂拿到offer必然是我的就业阶段的必然追求。3.为了学好编程,我打算制定一个学习方案,在课上做好笔记,在课后做好计算机编程实践的工作,并加强与同学们之间有关编程方面经验的交流。4.为了学好编程,一定要有时间的付出,因此我打算花每天两小时一周尽量超过15个小时研究编程。2.大一开始接触编程,励志要学好编程,考虑工作中对Java的要求,我一定要学好它。1.我是小韩,来自江苏理工学院。

2024-11-21 10:42:37 164

空空如也

空空如也

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

TA关注的人

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