自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 垃圾回收介绍

在程序运行过程中,内存管理是至关重要的环节。如果开发者手动管理内存,稍有不慎就可能出现内存泄露、野指针等问题,严重影响程序的稳定性。而垃圾回收机制的出现,为我们解决了这些难题。下面,我们就来总结一下垃圾回收的核心知识点。

2025-07-23 22:49:31 389

原创 类加载过程及双亲委派模型

这里的二进制字节流可以从多种来源获取,比如从本地文件系统中的.class 文件读取、从 JAR 包中读取、通过网络下载、由其他文件生成(如 JSP 文件被编译成.class 文件)等。类加载过程是 JVM 将类的字节流加载到内存并进行处理,最终形成可执行代码的过程,包括加载、验证、准备、解析和初始化五个阶段,每个阶段都有其独特的作用,共同保证了类能够正确地被 JVM 识别和使用。​双亲委派模型则是类加载器遵循的重要机制,它通过层级委派。

2025-07-22 21:57:34 750

原创 IP协议介绍

IPv4使用4个字节作为IP地址,IPv6使用16个字节作为IP地址,2^128,这是一个天文数字,可以保证所有设备IP地址唯一,但是由于IPv6和IPv4不兼容,升级的话需要更换设备,所以现在IPV6普及率较低。形如这个过程,我们逐渐询问接下来的地址,因为网络环境是相当复杂的,任何一个路由器无法存储所有网络信息,不过每个路由器都可以知道附近的网络情况。只给接入网络的设备分配IP地址,因此同⼀个MAC地址的设备,每次接⼊互联网中得到的IP地址不⼀定是相同的。实际偏移的字节数是这个值*8得到的。

2025-07-20 20:53:59 595

原创 TCP协议介绍

TCP协议属于TCP/IP 协议族的传输层协议,主要用于在两台设备之间提供可靠、有序、面向连接的数据传输服务。校验和;序列号(按序到达);确认应答;超时重发;连接管理;流量控制;拥塞控制。

2025-07-19 16:04:50 600

原创 UDP协议介绍

UDP(User Datagram Protocol,用户数据报协议)是 TCP/IP 协议簇中位于传输层的核心协议之一,是一种无连接、不可靠但高效的传输层协议。UDP 以其简洁的报文结构和高效的传输特性,在实时通信等领域发挥着重要作用。它的报文结构简单明了,首部仅 8 字节,数据部分灵活承载应用数据。但同时,UDP 也存在无连接、不可靠、缺乏流量控制和拥塞控制等局限性。在实际应用中,我们需要根据具体的业务需求选择合适的协议。

2025-07-18 14:40:07 741

原创 HTTPS加密流程

对称加密就是加密和解密使用同一个秘钥非对称加密使用一对密钥(公钥和私钥),用公钥加密的数据,只能用对应的私钥解密;用私钥加密的数据(或生成的签名),只能用对应的公钥验证。HTTPS加密过程有三组密钥。

2025-07-17 17:26:17 526

原创 HTTP协议介绍

HTTP(超⽂本传输协议)是一种应用层协议,往往基于传输层的TCP协议实现;

2025-07-16 23:30:05 2163 2

原创 网络基本概念

2、​数据封装:请求数据从应用层开始,逐层经过传输层(添加 TCP/UDP 头部,包含端口号)、网络层(添加 IP 头部,包含 A 和 B 的 IP 地址)、数据链路层(添加 MAC 头部和尾部),最终封装成帧。4、​数据分用:主机 B 接收到帧后,从数据链路层开始逐层剥离头部,依次经过网络层、传输层,最终将请求数据传递到对应的应用程序(根据端口号匹配)。1、发起请求:主机 A 的应用程序(如浏览器)生成请求数据,明确要与主机 B 的某个服务(通过端口号指定,如 80 端口的 HTTP 服务)通信。

2025-07-10 17:45:42 705

原创 HashTable、HashMap 与 ConcurrentHashMap 的区别总结

在java集合框架中,HashTable、HashMap、ConcurrentHashMap都是基于哈希表实现的键值对存储结构,但它们在线程安全性、性能、功能特性等方面存在显著差异,本文将从多个维度对比这三者的区别。

2025-07-07 21:20:00 489 1

原创 总结synchronized

Java中的synchronized是一种内置线程同步机制,具有多种锁特性:开始时采用乐观锁(CAS)和轻量级锁(自旋),在高竞争时升级为悲观锁和重量级锁;它是不公平锁、可重入锁,但不支持读写锁。synchronized可用于同步方法(实例和静态)及代码块,通过锁住对象或Class对象实现线程安全。其锁升级机制包括无锁→偏向锁(记录线程ID)→轻量级锁(CAS自旋)→重量级锁(线程阻塞),根据竞争情况动态调整,优化性能。

2025-07-05 22:27:33 530

原创 线程池相关介绍

线程池是管理多线程任务执行的关键技术,通过复用线程资源避免频繁创建销毁开销。Java线程池包含7个核心参数:核心/最大线程数、空闲超时时间、任务队列、线程工厂和拒绝策略。ThreadPoolExecutor的工作流程是:先使用核心线程处理任务,队列满则创建新线程至最大值,最后触发拒绝策略。Executors类提供了四种常用线程池:FixedThreadPool、CachedThreadPool、SingleThreadExecutor和ScheduledThreadPool.

2025-07-03 22:42:11 581

原创 多线程案例——单例模式

单例模式是一种确保类仅有一个实例的设计模式,适用于全局对象管理场景。主要实现方式包括饿汉式(类加载时创建实例,简单但可能浪费资源)和懒汉式(延迟加载需处理线程安全)。针对懒汉式的线程安全问题,可通过同步锁和双重检查锁(配合volatile防止指令重排序)优化。该模式在配置管理、日志系统等需要全局唯一对象的场景中具有重要应用价值。

2025-07-01 22:44:16 526

原创 线程安全问题

线程安全是多线程编程中最核心的问题之一。理解线程安全问题的根源,掌握各种解决方案的适用场景和优缺点,是编写高质量并发程序的基础。在实际开发中,应优先考虑使用Java并发包提供的高级工具类,而非自己实现同步机制,这样既能保证正确性,又能提高开发效率。

2025-07-01 12:09:52 925

原创 java线程状态

状态变化简易图实例化│▼NEW (新建)│▼│ (可运行) │ ││ │ ││ │ 竞争锁失败 ││ ▼ ││ BLOCKED (阻塞) ││ │ ││ │ 获取到锁 ││ ▼ │▼ │ │WAITING (无限等待) ││ │ │▼ ▼ │TIMED_WAITING (超时等待) ││ │ ││ │ 超时/被唤醒 │││ 执行完成▼TERMINATED (终止)

2025-05-08 16:15:48 781

原创 Thread类的基本用法

每个Thread对象,只能start一次,因此上每次想创建一个新线程必须创建一个新的Thread类1.1继承Thread类@Overridet.start();// 注意是调用start()而不是run()*必须重写run()方法;通过start()方法启动新线程;不能直接调用run()方法,这样不会创建新线程1.2、实现 Runnable 接口@Overridet.start();1.3、使用Lambda 表达式});t.start();

2025-05-04 22:39:00 685

原创 栈和队列相关实现

思路:入栈:1、普通栈一定要放,最小栈放的原则是,如果最小栈为空,则放;模拟出队:判断第二个栈是不是空的,如果是,直接取出栈顶元素,如果不为空,将栈1中元素全部放到栈2,取出栈顶元素。模拟出栈:把不为空的队列中size-1个元素放到另一个队列中,最后剩下的这个就是我们模拟出栈的元素。如果采用尾插法入栈:入栈时间复杂度O(n),如有last,为O(1),但是出栈一定是O(n)(1)队列实现栈:两个队列,模拟入栈:放到不为空的队列当中;(2)用栈实现队列:两个栈,模拟入队:放到第一个栈;

2025-05-01 20:07:32 458

原创 进程与线程

总结:进程是资源分配的单元,线程是CPU调度的单元;3、eg浏览器的一个标签页可能用一个线程加载页面,另一个线程播放视频,共享浏览器的内存空间。1、性能:线程切换比进程切换快得多,适合高并发任务(如Web服务器处理大量请求)。3、eg同时运行的浏览器和音乐播放器是两个独立的进程,它们的内存和资源完全隔离。1、多进程:需要高稳定性(如浏览器每个标签页独立进程)、隔离性(如安全沙箱)。2、多线程:需要高效协作(如游戏渲染+逻辑线程)、高并发(如数据库连接池)。:一个进程崩溃通常不会影响其他进程(稳定性高);

2025-05-01 19:33:24 384

原创 数据结构第六章 树和二叉树

1、定义:给定n个结点的集合,结点编号为1~n,再给定一个等价关系,由等价关系产生所有结点的一个划分,每个结点属于一个等价类,所有等价类是不相交的。若它有左孩子结点,将左孩子结点进队。(2)在森林T中选取两棵根结点权值最小的子树作为左、右子树构造一棵新的二叉树,且置新的二叉树的根结点的权值为其左、右子树上根的权值之和。度为1的结点称为单分支结点,度为2的结点称为双分支结点,依次类推。(1)、满二叉树:所有分支结点都有左孩子结点和右孩子结点,并且叶子结点都集中在二叉树的最下一层,这样的二叉树称为满二叉树。

2024-05-04 19:32:13 739 1

原创 第五章 递归(数据结构)

(2)执行pow(x,10)的递归调用顺序是: pow(x,10) → pow(x,5) → pow(x,2) → pow(x,1) 共发生4次递归调用。设大问题Hanoi(n,x,y,z)的执行时间为T(n),则小问题Hanoi(n-1,x,y,z)的执行时间为T(n-1)。设大问题Hanoi(n,x,y,z)的占用空间为S(n),则小问题Hanoi(n-1,x,y,z)的占用空间为S(n-1)。(2)每次执行递归调用之前,把递归函数的值参和局部变量的当前值以及调用后的返回地址进栈。

2024-04-22 23:10:06 2727

原创 指针的相关实现

回调函数就是一个通过函数指针调用的函数。如果把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数例如:使用函数指针实现计算器:首先我们需要定义四个运算函数:返回两个整数的和。:返回两个整数的差。:返回两个整数的乘积。:返回两个整数的商。menu():打印出计算器的菜单选项。:接受一个函数指针作为参数,然后提示用户输入两个操作数,并调用该函数指针指向的函数来计算结果,最后打印结果。定义一个整型变量input,用于存储用户的选择。

2024-04-19 21:09:16 335 1

原创 第四章 串和数组(数据结构python)

an-1),其中,A是数组名,ai(0≤i≤n-1)是数组A中序号为i的元素。,a0,n-1],…KMP算法的下一次比较si/tnext[1],而next[1]=0,并且t0=t1,说明一定有si≠tnext[1]  nextval[j]=nextval[next[j]]=-1。(1)如果有tj=tk成立,可以直接推出si≠tk成立,没有必要再做si/tk的比较,直接置nextval[j]=nextval[k](nextval[next[j]]),即下一步做si/tnextval[j]的比较。

2024-04-16 16:39:42 576 1

原创 第三章 栈和队列

1.1、栈(stack)是一种只能在同一端进行插入或删除操作的线性表。表中允许进行插入、删除操作的一端称为栈顶(top),表的另一端称为栈底(bottom)。栈的插入操作通常称为进栈或入栈(push),栈的删除操作通常称为退栈或出栈(pop)。1.2、主要特点① 后进先出,即后进栈的元素先出栈。② 每次进栈的元素都作为新栈顶元素,每次出栈的元素只能是当前栈顶元素。③ 栈也称为后进先出表或者先进后出表。

2024-04-02 15:08:42 808 1

原创 深入理解指针

数组传参的本质是传递了数组首元素的地址,所以形参访问的数组和实参访问的数组是同一个数组的,函数形参的部分理论上应该是使用指针变量来接收首元素的地址,在函数内部sizeof(arr)计算的是一个地址的大小,而不是数组的大小,正是因为函数的参数部分的本质是指针,所以函数内部是没办法求数组元素个数的。函数指针变量应该是存放函数地址的,未来通过地址能够调用函数的,函数名就是函数的地址,当然也可以通过&函数名来获得函数的地址,如果要将函数的地址存放起来,就得创建函数指针变量,函数指针变量的写法和数组指针非常类似。

2024-03-28 16:36:24 751 1

原创 第二章 线性表

线性表是具有相同特性的数据元素的一个有限序列。特征:所有数据元素类型相同。线性表是有限个数据元素构成的。线性表中数据元素与位置相关,即每个数据元素有唯一的序号。

2024-03-25 21:40:00 1529

原创 数据结构第一章

所涉及的数据元素的集合以及数据元素之间的关系,由数据元素之间的关系构成结构*算法是对特定问题的求解步骤的一种描述1、数值类型:int ,float,bool,complex*python内置的type()函数可以用来查询变量所指的对象类型*数值类型是不可变的数据类型2、字符串类型(1)字符串运算符+:字符串连接,a+b:"HelloPython"*:重复输出字符串,a*2:"HelloHello"[ ]:通过索引获取字符串中的字符,a[1]=e。

2024-03-18 16:17:50 2015 3

原创 分支与循环

主要讲述分支与循环基本内容与简单的练习,有if语句,switch语句,while循环,do-while循环,for循环

2023-12-16 10:30:43 72 2

空空如也

空空如也

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

TA关注的人

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