自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM-内存区域、垃圾回收与类加载机制

1.JVM 简介1.JVM 简介JVM 是 Java Virtual Machine 的简称,意为 Java虚拟机。虚拟机是指通过软件模拟的具有完整硬件功能的、运⾏在⼀个完全隔离的环境中的完整计算机系统。常⻅的虚拟机:JVM、VMwave、Virtual Box。其实是仿照一个真实的机器或操作系统,操作系统里对进程地址空间进行了划分区域,因此jvm也进行了内存划分2、JVM 运⾏时数据区。

2026-08-27 19:17:36 350 28

原创 计算机网络核心笔记:打通 TCP/UDP 与 HTTP/HTTPS 底层逻辑(重点下)

负责同一局域网内直连设备之间的数据传输,完成单一跳的数据转发。

2026-08-10 22:45:48 448 16

原创 计算机网络核心笔记:打通 TCP/UDP 与 HTTP/HTTPS 底层逻辑(重点上)

总结。

2026-07-25 18:24:08 2171 22

原创 Socket网络编程入门:UDP+TCP双案例手把手教你写服务器

大家好,今天我们来聊一个Java后端开发绕不开的话题——网络编程。你有没有想过,我们每天刷抖音、逛淘宝、玩网游,这些数据是怎么从服务器传到你手机上的?背后的技术支撑就是网络编程。学会了Socket套接字,你就能自己写服务器、写客户端,真正理解数据是怎么在网络中传输的。这篇文章我会用最通俗的语言,配合完整的代码案例,带你从零入门UDP和TCP两种套接字编程。看完你就能动手写出自己的第一个网络程序!有Java基础、想入门网络编程的同学。

2026-07-11 13:54:23 1815 19

原创 计算机网络体系结构-网络原理初识

语言层:约定用汉语沟通,双方都遵循汉语的表达规则通信设备层:电话机、电话系统负责语音信号的传输两层之间通过固定接口对接,仅在通信设备层变更时,不影响语言层的沟通;仅在语言层变更时,不影响设备层的传输。实际的网络通信会更加复杂,需要分更多的层次。

2026-06-28 16:25:12 1826 14

原创 深入浅出 Java 文件操作与 IO:从文件系统到数据流实战

File 类主要用于处理文件的元信息和路径操作,不涉及文件内容的读写。它提供了一系列方法来创建、删除、重命名文件和目录,以及查询文件的属性信息。文件系统基础:理解文件的概念、树形结构、路径表示、文件类型和权限,以及 "万物皆文件" 的设计思想。File 类:掌握 File 类的核心方法,能够进行文件和目录的创建、删除、重命名、属性查询等操作。数据流体系。

2026-06-07 16:38:02 799 27

原创 Java 多线程进阶:从锁策略到 JUC,一篇吃透并发核心

CAS 的核心是「比较内存值与预期值是否相等」,但存在一个漏洞:如果一个变量的值从 A 改成 B,又从 B 改回 A,CAS 会认为这个变量没有发生过变化,从而执行更新操作,但实际上这个变量已经经历了一次修改过程。就像买二手手机,你无法判断拿到的手机是全新机,还是被人用过之后翻新的新机,虽然外观和初始状态一样,但中间已经经历了变化。死锁是指多个线程同时被阻塞,它们中的一个或全部都在等待某个资源被释放,由于线程被无限期阻塞,程序无法正常终止。

2026-05-19 21:45:09 2542 25

原创 Java 多线程初阶通关指南:从核心概念到实战案例,一篇吃透

线程是轻量级进程,为了解决创建进程的开销比较大的问题这就是多线程的核心思想:将一个大任务拆解为多个小任务,交给不同的执行流并行处理其中张三是主线程(Main Thread),李四、王五是子线程通过共享的volatile变量作为中断标志,线程在循环中判断该标志,决定是否终止运行。// 用volatile保证多线程间的内存可见性@Overridewhile (!isQuit) {

2026-05-11 19:52:58 879 19

原创 Java反序列化漏洞

通过序列化文件流之后,在反序列化成对象,调用重写的readObject方法,并且重写的readObject方法是可以控制的,此时就会执行恶意代码,这就是反序列化漏洞,此时这个例子是比较简单,这里只是给个思路,要想达成反序列化漏洞还是比较难的,首先必须别人的代码中有一个类似上面定义好的类,利用自定义的readObject方法执行,寻找重写readObject方法的类。我们注意上面定义的Person类,它继承了Serializable接口,如果要将一个对象进行序列化,必须继承这个接口。

2026-04-25 20:10:09 629 11

原创 Java据结构深度解析:AVL 树与红黑树

二叉搜索树高效但易退化,平衡二叉树是解决方案AVL 树绝对平衡,查找快、修改慢,适合静态数据红黑树近似平衡,增删高效,是工程首选两者时间复杂度均为O(log₂N),红黑树实用性更强平衡二叉树是数据结构的核心考点,也是后端开发、算法面试的高频内容,吃透 AVL 树和红黑树,能帮你轻松搞定有序存储的核心问题~

2026-04-13 20:53:17 716 11

原创 Java算法之排序

排序算法是算法学习的入门,也是进阶的基石。学习排序算法,绝不是死记硬背代码,而是要理解每个算法的核心思想、设计逻辑和适用场景,对于面试而言,快速排序、归并排序、堆排序是绝对的高频考点,必须做到能手写实现、能分析复杂度、能讲清优化方案;对于实际开发而言,我们要理解 JDK 排序 API 的底层逻辑,根据业务场景选择合适的排序方案。

2026-04-08 19:41:50 807 13

原创 Java 搜索型数据结构全解:二叉搜索树、Map/Set 体系与哈希表

二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树1.如果树为空树,即根== null,直接插入2.如果树不是空树,按照查找逻辑确定插入位置,插入新结点1.1. cur是root,则2. cur不是rootcur是,则3. cur不是rootcur是,则2.1. cur是root,则2. cur不是rootcur是,则3. cur不是rootcur是,则3.1. 需要使用。

2026-03-28 16:46:00 2185 7

原创 深入浅出 Java 优先级队列 PriorityQueue:堆的实现与应用

equals的比较只能返回bool类型,判断是不是一样的,comparable comparator 返回类型都是整形,可以比较大小,本身区别,comparable 一般在类里面使用,comparator脱离类使用。而接下来的comparable,我们需要继承这个comparable接口,并且需要传类过去,然后就是重写这个接口的方法,就是public int compareTo(),随后我们用c1和c2比较的方式就是。c1==c2这个比较地址,而默认的equals,如下,也是和c1==c2类似。

2026-03-21 12:59:19 2070 1

原创 Java 数据结构精讲:二叉树遍历算法与底层实现剖析

本文摘要: 本文系统介绍了树型结构和二叉树的定义、性质及操作。首先阐述了树的基本概念(根节点、度、层次等)和表示方法,重点讲解了二叉树的两种特殊类型(满二叉树和完全二叉树)及其性质。详细说明了二叉树的存储结构(顺序/链式)和基本操作,包括前序/中序/后序/层序遍历的实现方法(递归与非递归),以及计算节点数、查找节点、判断树结构等常见算法。最后介绍了二叉树在构建、转换等方面的应用实例,如根据遍历序列构建二叉树、二叉搜索树转双向链表等典型问题解决方案。全文通过代码示例和图示相结合的方式,全面展示了二叉树的理论知

2026-03-16 13:15:17 1814 2

原创 Java数据结构-栈与队列

我们的思想是从数组里面获取每个元素进行遍历,其中如果取出来的是右括号,则进行入栈操作,如果是遇到左括号,选判断栈里面是否为空,为空则左括号多于右括号,则返回false,如果栈不为空,接下来取出栈顶元素,和左括号进行匹配,匹配上了,进行出栈操作,如果匹配不上return false,依次这样循环下去,最后判断栈是否为空,栈不为空则右括号多于左括号。3、模拟获取栈顶元素,其实就是把不为空的size元素移动到另一个队列里面,然后定义零时变量c,当获取到最后一个元素时,返回c。栈中的数据元素遵守后进先出。

2026-03-12 11:13:31 1644 2

原创 Java 数据结构精讲:顺序表与 ArrayList 的深度解析

在 Java 集合框架中,ArrayList 是一个普通类,实现了 List 接口,是对静态顺序表的封装和增强,也是我们实际开发中使用的动态顺序表。ArrayList 的扩容可以概括为三个核心步骤无参构造初始化为空数组,此时容量为 0;首次添加元素:触发扩容,会将容量设置为默认的 10;后续扩容触发条件:当(添加元素后元素个数超过数组容量)时,调用grow()扩容;扩容规则:默认1.5 倍扩容,若 1.5 倍容量满足不了实际需求,则直接使用实际需要的容量;若超过,则扩容至,容量溢出则抛出;扩容本质。

2026-03-08 16:31:44 1844 2

原创 Java数据结构-LinkedList与链表

LinkedList的底层是双向链表结构链表后面介绍,由于链表没有将元素存储在连续的空间中,元素存储在单独的节 点中,然后通过引用将节点连接起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。

2026-03-06 18:36:57 509 3

原创 Java数据结构准备知识

初步结论,i是存在一个范围,不在这个范围里面,返回新的对象,新对象用==比较,他的地址不一样,就会得出false, 其中low=-128,high=127 【-128 127】总共256数字。此时规定传入的参数只能是Number或者Number子类,此时这里就出现了界限,上面的String不是Number或子类,所以就会报错。泛型是编译时期的一种机制,在运行的时候没有泛型的概念【在JVM里面没有泛型的概念】在定义泛型类时,有时需要对传入的类型变量做一定的约束,可以通过类型边界来约束。

2025-12-25 15:30:31 700 2

原创 Java SE入门之认识异常(SE结束)

上面需要注意的是,finally后面的代码,只有try出现异常之后,才会执行,当正常输入10后,try-catch-finally后面的sc.close()不会执行,所以就把sc.close()放到finally里面去,不管是否出现异常,都会执行。上面的就是test方法里面没有处理异常,main方法调用了test,接下来就会交给main方法处理,结果main方法没有处理,最终JVM处理。如果真正要对异常进行。时异常类型不匹配,即异常不会被成功捕获,也就不会被处理,继续往外抛,直到。

2025-12-20 15:36:10 972 3

原创 JavaSE入门 继承&多态

在子类构造方法中,并没有写任何关于基类构造的代码,但是在构造子类对象时,先执行基类的构造方法,然后执。对于已经投入使用的类,尽量不要进行修改。在继承体系中,子类将父类中的方法和字段继承下来了,那在子类中能否直接访问父类中继承下来的成员呢?总结:成员方法没有同名时,在子类方法中或者通过子类对象访问方法时,则优先访问自己的,自己没有时。通过子类对象访问父类与子类中不同名方法时,优先在子类中找,找到则访问,否则在父类中找,找到。如果访问的成员变量子类中无,则访问父类继承下来的,如果父类也没有定义,则编译报错。

2025-12-16 09:58:19 923 1

原创 JavaSE入门(四)数组的定义&String类

数组:可以看成是。

2025-12-11 10:34:50 1014 1

原创 JavaSE入门 抽象类&接口

compareTo 方法. 而compare是Comparable接口里面的一个方法,如果要去使用,要让Student类去实现接口,即implements Comparable<Student>,后面是关于泛型编程,了解一下即可,这样弄好了接口以后,再去实现接口的方法,即是 public int comparaTo(Object o)在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,中,类和类之间是单继承的,一个类可以实现多个接口,接口与接口之间可以多继承。

2025-12-03 15:14:15 1046 1

原创 JavaSE初步入门(三)程序控制&方法的使用

方法就是一个代码片段类似于C语言中的函数。方法存在的意义不要背重在体会):1.是能够模块化的组织代码当代码规模比较复杂的时候).2.做到代码被重复使用一份代码可以在多个位置使用3.让代码更好理解更简单4.直接调用现有方法开发不必重复造轮子。

2025-11-28 19:00:26 766

原创 Vulhub靶场复现系列之CVE-2023-37941

具有元数据数据库写入权限的已认证用户可以插入恶意的Pickle有效载荷,当应用程序反序列化这些数据时,会导致Superset服务器上的远程代码执行。该应用程序使用Python的。首先我们来到Vulhub靶场目录下面,切换到CVE-2023-37941下面,使用docker compose up -d启动。上面可以随便给名字,然后点击保存以后,点击三个点,点击share里面的copy...,这个地址需要存着等会会用。来到这里以后用上节的方式去绕过登录验证,这里就不讲了,具体是CVE-2023-27524。

2025-11-26 16:34:56 590

原创 Vulhub靶场复现之Superset

环境准备靶场环境ubuntu24python3.12具体流程如下,在ubuntu系统里面下好了vulhub靶场以后解压,然后是进入到vulhub文件夹里面,可以看到里面有很多相关漏洞的练习,今天我们练习的是superset,cd superset 可以进入在进入第一个文件夹里面,直接使用docker compose up -d 就会开始启动靶场,其中使用ss -lnt可以查看端口,其中再次使用docker compose stop 可以停止靶场。

2025-11-20 12:12:53 655 1

原创 JavaSE初步入门(二)运算符

上述 + 和 < 等就是运算符,即:对操作数进行操作时的符号,不同运算符操作的含义不同。 作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。Java中运算符可分为以下:算术运算符(+ - * /)、关系运算符(< > ==)、逻辑运算符、位运算符、移位运算符以及条件运算符等。2. 算术运算符 1. 基本四则运算符:加减乘除模(+ - * / %) 注意: 都是二元运算符,使用时必须要有左右两个操作数 int / int 结果还是int类型,而且会向下取整 in

2025-11-15 17:04:07 562

原创 JavaSE初步入门(一)数据类型&运算符

在程序中,除了有始终不变的常量外,有些内容可能会经常改变,比如:人的年龄、身高、成绩分数、数学函数的。强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。特点:数据范围大的到数据范围小。不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。浮点数与整数在内存中的存储方式不同,不能单纯使用 的形式来计算。必会存在一定的精度误差,因此浮点数是个近似值,并不是精确值。使用方式二定义后,在使用前如果没有赋值,则编译期间会报错。推荐使用方式一定义,如果没有合适的初始值,可以设置为。

2025-11-10 16:24:12 944

原创 初识Java—语言发展历程

如上展示的就是最简单的一个Java程序,可能同学们看到后一头雾水,可以说,Java的main方法应该是当前主流编程语言中最“长”的。语言在设计初期,赶上了互联网发展的风口,当时就瞄准了互联网开发,凭借稳定的性能表现和较。跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。指令就是按照自己的指令集来组织的,但是在具体硬件环境中运行时,系统并不能识别,因为。中,数据类型具有固定的大小,这消除了代码移植时令人头疼的主要问题。验的程序员、 课程和第三方厂商的数量。

2025-11-06 09:18:29 1089

原创 DNSlog探测技术漏洞

1、域名和IP的关系一个ip对应多个域名2、DNS的作用在计算机的世界通信里面,两台计算机通信需要相互的逻辑地址,就是ip地址,他的组成是四个八位二进制组成,每一个范围就是十进制0-255,但是这个地址特别长,并且不好记,于是就诞生了dns域名系统,比如我们ping一下百度网址,下面出现ip地址,域名的出现是方便我们记忆,去浏览相关服务器,常见.com edu gov 等等。

2025-10-26 07:43:30 1092

原创 PHP反序列化漏洞

上面就是定义一个类的格式,例如下面class定义类名,其中定义成员变量一定要加声明var也可以定义函数(方法),在当前类里面调用变量,需要加this,代表当前类,然后下面的需要将类实体化,才能调用里面的函数,另外也可以将没有初始值的sex进行赋值而关于public 以及protected private三个声明之间其中public代表公共的,protect代表包含 priva代表私有,被public修饰的成员变量可以在类的内部或者外部调用,而其他两个只能在类的内部调用。

2025-10-23 16:43:08 224 1

原创 web十大漏洞之逻辑漏洞

逻辑漏洞就是基于开发人员设计程序的时候,逻辑不严密,导致攻击者可以修改、绕过或者中断整个程序,让程序按照开发人员的预料之 外去执行。

2025-10-13 10:15:00 1750 1

原创 web十大漏洞之jwt渗透

从安全性的角度来看,至少存在两个潜在的问题。1、缺乏机密性-我们能够轻松解码有效载荷payload(和报头header)。2、用户插入另一个操作(例如删除)并绕过授权靶场:https://authlab.digi.ninja/Leaky_JWT打开上面靶场以后,就会出现下面的样子,把框里的内容直接解密就可以了,base64具体实现方式 1、算法为none 2、算法修改 3、签名失败问题 4、暴力破解 5、密钥泄露 6、令牌刷新。

2025-10-09 09:30:00 1506 1

原创 web十大漏洞之RCE漏洞

一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。而,如果,设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从而控制整个后台服务器。因此,如果需要给前端用户提供操作类的API接口,一定需要对接口输入的内容进行严格的判断,比如实施严格的白名单策略会是一个比较好的方法。&| ||------------ %0a 回车符号 %0d 换行。

2025-10-01 12:27:58 663

原创 web十大漏洞之SSRF漏洞

定义:SSRF Server-Side Request Forgery 服务器端请求伪造:是一种由攻击者构造形成 由服务端发起请求的一个安全漏洞如何造成的SSRF漏洞呢,首先我们来了解下linux系统中一个命令curl,使用curl访问一些网址他是以纯文本返回的而在我们的php里面curl是这样的当然如果我们要使用php里面curl是需要安装一个扩展在php.ini配置文件里面有一个extension=php_curl.dll它的功能如下获取网页资源——爬虫。

2025-09-24 14:26:04 420 1

原创 单链表的代码

【代码】单链表的代码。

2025-09-22 13:53:17 126

原创 web十大漏洞之XXE漏洞

这里是一个关于微信支付调用接口的漏洞,用户买东西的时候,商家会给出微信支付码,然后呢支付成功后,会把结果返回给商家,于是乎,在回调通知的时候,如果商家服务器没有做任何安全措施,有人就可以插入webXML实体,这样就会对商户平台造成安全威胁,还有一种就是,没有支付所需购买商品的钱。直接调用通知支付结构,伪造一个支付成功的通知。像上面,如果有一些防火墙禁止外部扫描的端口,但是并不代表本机操作,而XXE漏洞就是可以利用这个特性,可以绕过安全限制,同理用bp抓包,将3306设置为关键字,就可以扫描出所有监听端口。

2025-09-18 10:45:00 805

原创 web十大漏洞之文件包含漏洞

这里需讲到一个目录穿越的,我们在文件系统中,../表示返回上一级目录,在linux系统中也是一样的,根据我们对linux系统熟悉,只需要多加一、几个../就可以回到根目录,然后呢直接去找etc/passwd里面的隐私文件。下面这种就是,限制了action目录下面的.txt文件,但是前面我们依然可以使用目录穿越,去越过目录限制,但是后面的.txt文件我们使用上一章用到的%00,去截断后面的。/usr/local/app/php5/lib/php.ini //PHP相关设置。

2025-09-16 08:15:00 542

原创 web十大漏洞之文件上传漏洞

same_name接收到参数,不是数组,直接来到下面,取元素最后一个,就是png,随后进行文件拼接,两个拼接元素,第一个就是上面数组第一个元素,而第二个是上面下标减一的元素,其中我们没有对下标为一的元素进行赋值,所以为空,最后文件为1.php进行上传。他的意思是将body列表内容替换成black,在返回文件,其中1.php ,由于php在那个黑名单里面,就会将php替换成空,于是1.就上传不了,其他就没有限制,这里我们可以双写。后面将这个hack.png上传,但是也是和前面一样的,打开文件包含页?

2025-09-12 08:30:00 846

原创 web十大漏洞之CSRF

由于用户在访问B时携带了A的cookie,网站A不知情接收了恶意请求,执行了非法操。* 用户访问恶意网站B,该网站B的页面发起对网站A的请求。* 用户登录信任网站A,并在本地生成cookie。1、通过图片的img src属性,自动加载,发起。2、构建一个超链接,用户点击以后,发起GET请。2、用于日志记录、分析流量来源、页面访问统计。* 用户未登出网站A,cookie未失效。3、构建一个自动提交的表单(隐藏),用户访。窃取Token —— 反射型XSS漏洞。包括验证码、短信、密码、人脸等等。

2025-09-06 13:15:00 699

原创 基于顺序表数据结构通讯录项目

【代码】基于顺序表数据结构通讯录项目。

2025-08-25 19:58:47 210

空空如也

空空如也

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

TA关注的人

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