自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网安面试必看:RootKitUnhooker检测工具的使用

Rootkit是一种获取系统root权限的恶意软件,能隐藏自身及关联文件、进程和网络链接。Rootkit Unhooker是专用于检测和清除Rootkit的工具,支持32位Windows系统。主要检测功能包括:SSDT钩子检测恢复(可追踪挂钩模块并清理)、隐藏进程/驱动/文件检测(识别未在系统列表中显示的可疑对象)、隐藏代码检测(发现驱动中的可执行代码片段)、用户模式钩子检测(处理进程注入)以及生成详细报告。该工具通过内核级扫描,有效对抗90%的Rootkit威胁,需管理员权限运行。

2025-07-25 09:59:16 346

原创 Java进阶4:泛型、序列化和反序列化

Java泛型是JDK5引入的类型安全机制,通过参数化类型实现代码复用。摘要包含以下要点: 泛型方法:使用类型参数<>声明,支持多种类型参数(E,T,K,V等),如printArray()可遍历不同类型数组。 类型限定:通过extends约束类型范围,如Comparable<T>限定可比较类型。 泛型类:类名后加类型参数声明,如Box<T>类。 通配符:使用?表示未知类型,支持泛型集合的灵活处理,如List<? extends Number>。 序列化:实现Se

2025-07-25 09:45:29 648

原创 C++课设实践项目:C++构建的学籍管理系统

这篇150字的摘要概括了学生信息管理系统课设的核心内容: 本文介绍了一个基于C++开发的学生信息管理系统课程设计项目。系统采用模块化架构,实现了账户登录(MD5加密)、学生信息增删改查、成绩统计分析和柱状图展示等功能。项目包含控制器、界面、文件读写、数据模型和加密等核心模块,支持管理员和学生两种权限角色,数据以文本文件持久化存储。系统通过控制台界面运行,展示了成绩管理、合格率统计等教学管理功能,适合作为C++面向对象编程的学习案例。文章提供了项目亮点、技术环境、功能截图和源码获取方式,可作为类似课程设计的参

2025-07-24 16:21:51 623

原创 Java进阶3:Java集合框架、ArrayList、LinkedList、HashSet、HashMap和他们的迭代器

本文介绍了Java集合框架的核心概念和常用实现类。主要内容包括:集合框架的设计目标(高性能、互操作性、易扩展性);两种容器类型Collection和Map;主要集合接口List、Set、Queue的区别;常用实现类ArrayList、LinkedList、HashSet的使用方法。重点讲解了ArrayList的动态数组特性及其增删改查操作,LinkedList的链表结构及其适用场景,以及HashSet的无序不重复特性。文章还涉及集合排序、基本类型处理等实用技巧,为Java集合框架的使用提供了全面指导。

2025-07-24 15:42:36 1163

原创 Java进阶2:抽象类、接口、枚举

本文介绍了Java中的抽象类、接口和枚举的概念与用法。抽象类通过abstract关键字定义,不能被实例化,必须被继承才能使用,包含子类共有方法。接口是抽象方法的集合,使用interface声明,支持多继承,类通过implements实现接口。枚举使用enum定义,表示一组常量,内部通过Class实现,具有values()、ordinal()等方法。三者都是Java中重要的抽象机制,分别适用于不同的编程场景。

2025-07-24 15:36:58 700

原创 Java进阶1:面向对象、重载和重写、多态

摘要:本文介绍了Java继承机制的核心概念,包括单继承(extends)和多接口实现(implements),重点讲解了super/this关键字、final修饰符以及构造器的继承规则。详细阐述了方法重写(Override)与重载(Overload)的区别与实现方式,并深入解析了Java多态性的三大必要条件(继承、重写、父类引用指向子类对象)。文中通过动物类与猫类的代码示例,演示了继承体系的构建、方法重写和多态调用,同时对比了Java虚函数机制与C++的区别。最后强调了final修饰符在限制继承和方法重写中

2025-07-23 08:43:47 316

原创 Node.js:连接Mysql、JXcore打包

本文介绍了如何使用Node.js连接和操作MySQL数据库,以及使用JXcore打包Node.js应用。内容包括:1) 安装mysql驱动并配置连接;2) 执行查询、插入、更新和删除等数据库操作示例;3) 使用JXcore打包Node.js应用的方法,包括打包命令和运行方式。文中提供了详细的代码示例和输出结果,帮助开发者快速实现Node.js与MySQL的交互以及应用打包。

2025-07-23 08:39:56 247

原创 Node.js:RESPful API、多进程

本文介绍了REST架构风格和Node.js多进程编程。REST是一种基于HTTP协议的软件架构风格,通过GET、POST、PUT、DELETE等方法操作资源。文章演示了使用Node.js创建RESTful Web服务,包括获取用户列表、添加/删除用户等功能。对于Node.js多进程,介绍了child_process模块的exec()方法,该方法可以创建子进程执行命令并获取输出。代码示例展示了如何调用子进程执行命令并处理返回结果。REST和Node.js多进程都是构建高性能Web应用的重要技术。

2025-07-22 22:43:48 994

原创 Node.js:Web模块、Express框架

本文介绍了Web服务器基础及Node.js实现。主要内容包括:1)Web服务器概念与主流服务器(Apache/Nginx/IIS);2)使用Node.js创建Web服务器示例,演示文件服务功能;3)Node.js客户端实现;4)Express框架简介,包含安装方法和基本应用实例;5)Express中请求与响应对象的核心属性和用法。文章提供了完整的代码示例,帮助理解Node.js构建Web服务的基本流程和Express框架的核心特性。

2025-07-22 22:39:10 435

原创 Node.js:常用工具、GET/POST请求的写法、工具模块

本文介绍了Node.js中util模块的常用功能及GET/POST请求处理。util模块提供了callbackify(将async函数转为回调风格)、inherits(实现原型继承)、inspect(对象转字符串)等工具方法。GET请求可通过url.parse解析URL参数,POST请求则需监听data/end事件获取请求体内容。文章还简要提及了Node.js的其他核心模块(OS、Path、Net等)及其作用。这些工具模块和请求处理方法是Node.js开发的基础知识点。

2025-07-20 17:13:44 1120

原创 Node.js:函数、路由、全局对象

本文介绍了Node.js函数与全局对象的关键概念。主要内容包括:1) JavaScript函数作为参数传递的两种方式(具名和匿名函数);2) Node.js路由实现原理,通过url模块解析请求路径;3) 全局对象global及其常用属性(__filename、__dirname等);4) 定时器函数(setTimeout/setInterval)和标准控制台输出方法;5) process对象及其事件处理机制。这些知识点涵盖了Node.js开发中函数式编程、路由处理、全局变量管理和进程控制等核心内容,为Nod

2025-07-20 17:12:00 825

原创 Node.js:Stream、模块系统

摘要:本文介绍了Node.js中的Stream流操作、模块系统及相关应用。Stream是一个抽象接口,分为可读、可写、双工和转换流类型,通过事件机制处理数据。文章演示了文件读写、管道传输和压缩解压等流操作示例。模块系统部分说明了如何创建和引用模块,包括函数模块和对象模块,并解析了模块加载优先级策略(缓存>原生>文件)。服务端模块通过require方法加载,http等原生模块优先从内置模块加载而非文件系统。

2025-07-19 20:04:58 687

原创 Node.js:EventEmitter、Buffer

本文介绍了Node.js中的EventEmitter和Buffer模块的核心概念与用法。EventEmitter是Node.js事件驱动的基础,支持事件监听和触发,提供了添加、移除、触发事件等方法,并支持error事件处理。Buffer模块用于处理二进制数据,提供了创建缓冲区、读写数据以及与JSON转换的功能,支持多种编码格式。文章通过代码示例演示了EventEmitter的事件绑定与触发,以及Buffer的创建、写入、读取和JSON转换等操作。

2025-07-19 20:02:41 1117

原创 C++必看:关于多态下基类函数参数的调用问题

C++虚函数实现运行时多态的关键在于通过基类指针或引用调用时,实际执行的函数版本由对象动态类型决定。虚函数的多态性与函数参数类型无关,参数是否为指针不影响多态决议过程。当参数本身是基类指针时,其多态行为与调用者的多态行为相互独立。虚函数机制依赖于编译器生成的虚函数表和虚指针,在运行时动态确定函数调用。

2025-07-18 10:05:42 304

原创 C++必看:关于引用的多重引用问题

四种C++声明分析: A(int a, &ra = a, &&ref = ra;)错误,右值引用&&ref不能直接绑定左值ra; B(int &refa[10];)错误,C++不支持引用数组; C(int a, &ra = a, &*refp = &ra;)错误,&*refp语法无效; D(int* pi, *&pref = pi;)正确,pref是对指针pi的合法引用。 总结:涉及引用和指针的声明需注意绑定规则和类型匹

2025-07-18 10:02:55 433

原创 C++必看:左值和右值问题

摘要: C++中的左值(lvalue)和右值(rvalue)是表达式分类的核心概念。左值具有持久身份,可被命名、取地址(如变量int x),常出现在赋值左侧;右值则是临时对象(如字面量42或表达式x+1),无持久地址,生命周期短暂。C++11引入右值引用(&&)后,右值细分为纯右值(临时值)和将亡值(可移动对象,如std::move(x))。关键区别在于左值可修改且持久,右值临时且不可直接修改。这一分类对赋值、引用绑定及移动语义(避免拷贝)至关重要。

2025-07-17 09:09:24 674

原创 Node.js:REPL、回调函数、事件循环

Node.js概述:REPL环境提供交互式命令执行功能,支持变量、多行表达式和下划线变量获取结果。采用事件驱动模型,通过回调函数实现异步非阻塞I/O操作,提升并发性能。事件循环机制基于观察者模式,内置events模块可创建/触发自定义事件。示例演示了阻塞与非阻塞代码的区别,以及事件绑定与触发的实现方式,体现了Node.js单线程但高并发的特性。

2025-07-17 09:07:39 712

原创 C++必看:子类引用绑定到父类问题

C++允许子类对象赋值给父类引用,这是面向对象多态性的核心特性。子类必须直接或间接继承父类,且父类方法需声明为虚函数才能实现动态绑定。关键注意事项包括:避免对象切片(应使用引用或指针而非直接赋值)、虚函数的使用(确保正确多态行为)以及访问权限限制(父类引用无法直接访问子类特有成员)。典型应用场景如工厂模式,通过基类引用操作不同派生类对象。正确使用该特性需遵循继承关系、虚函数机制,并警惕对象切片问题。

2025-07-16 09:33:52 313

原创 Node.js:创建第一个应用

Node.js是基于Chrome V8引擎的JavaScript运行环境,支持服务器端编程。它扩展了JavaScript的应用场景,可用于开发服务器、API、命令行工具和实时应用等。Node.js应用由引入模块、创建服务器和请求处理三部分组成。NPM是其包管理工具,支持模块安装(本地/全局)、卸载、更新和搜索。通过package.json文件管理项目依赖,使用npm init创建模块,npm publish发布模块。淘宝镜像可加速国内下载速度。Node.js简化了服务器开发流程,使JavaScript成为全

2025-07-16 09:32:23 517

原创 网安面试必看:内存马的排查思路

内存马是一种隐蔽性强的恶意软件,通过将恶意代码注入系统内存实现攻击。其工作流程包括注入代码、修改执行流程、隐藏进程和接收控制命令。查杀内存马可采取使用进程管理工具、分析网络流量、使用安全检测工具和升级安全补丁等方法。内存马主要分为servlet-api型和字节码增强型两类。排查思路包括判断注入方式、分析流量特征、检查中间件漏洞和框架漏洞等。内存马因其隐蔽性已成为主要网络攻击手段之一。

2025-07-16 09:24:05 536

原创 C++必看:[malloc、new、free和delete的比较]、[#define和const的比较]、[*p++、*(p++)、(*p)++、*++p、++*p的比较]、[inline和宏的比较]

C++内存管理与运算符解析 内存分配方面,new/delete与malloc/free的主要区别在于构造函数/析构函数的调用。new会调用构造函数并分配内存,delete先调用析构函数再回收空间,而malloc/free仅处理内存不调用构造/析构函数。 #define与const在预处理阶段、类型检查、内存分配和代码展开方式上存在显著差异。const具有类型安全性和内存分配优势,而#define是简单的文本替换。 指针运算符优先级方面,后置++优先级高于*,前置++与*同级。不同组合会产生不同的指针移动和值

2025-07-15 10:09:26 595

原创 C++必看:列表初始化、不能声明为虚函数的、const同名函数的调用优先级问题、指针和引用的区别

C++关键特性摘要:1)初始化列表必须用于const成员、引用成员、无默认构造函数的类成员及父类;2)构造函数、静态函数、全局/友元函数不能声明为虚函数,内联虚函数行为复杂;3)同名const函数调用优先级取决于调用对象const性,非const对象优先调用非const版本;4)指针与引用核心区别:引用必须初始化且不可更改,不能为空,而指针更灵活可修改和为空。虚函数调用时,const版本选择取决于调用上下文而非动态绑定。

2025-07-15 10:00:23 681

原创 C++必看:关于const关键字用法的总结

C++ const用法总结 const关键字在C++中用于限制变量修改,增强代码安全性和可读性。主要用法包括: 基础用法: 常量声明:const int x = 10; 指针常量:int* const ptr(指针不可变) 常量指针:const int* ptr(内容不可变) 函数参数: 值传递:void func(const int x)(限制内部修改) 引用传递:void func(const int& x)(避免拷贝且保护数据) 指针传递:void func(const int* x)(保护指

2025-07-14 13:57:34 1023

原创 C++必看:<<左移操作 和 >>右移操作的相关问题

C++中的位操作符<<和>>的补位规则不同。左移<<总是低位补0,但若修改有符号数的符号位会导致未定义行为。右移>>则分两种情况:无符号数高位补0(逻辑右移),有符号数高位补符号位(算术右移)。建议位运算优先使用无符号类型,避免未定义行为。对有符号数需要逻辑右移时,可先转为无符号类型再操作。

2025-07-14 13:53:21 383

原创 C++必看:C++的运算符重载

摘要: C++运算符重载的返回值选择取决于语义、性能和使用场景。**算术运算符(如+、-)通常返回新对象(如Complex),因其需生成独立结果;而赋值类运算符(如=、+=)和访问类运算符(如[])**返回引用(如Complex&),以支持链式操作和直接修改。返回对象确保安全性但可能拷贝,返回引用高效但需注意生命周期。特殊运算符(如后置++返回对象,前置++返回引用)需结合语义设计。成员函数重载适用于紧密关联对象的运算符(=、[]、->等),非成员函数(如友元)适用于对称操作(如a+b和b+a

2025-07-13 21:27:21 1054

原创 C++必看:关于static_cast和dynamic_cast问题

C++中static_cast和dynamic_cast是两种类型转换运算符: static_cast在编译时进行类型转换,适用于基本类型转换和类层次中的向上/向下转换,但不做运行时检查,存在安全隐患; dynamic_cast在运行时通过RTTI检查类型安全,仅适用于多态类(需虚函数),转换失败会返回nullptr或抛出异常,安全性高但性能较低。 static_cast类似C风格强制转换但更规范,适用于确定类型关系的场景;dynamic_cast适合需要运行时类型安全的复杂类层次转换。

2025-07-13 21:22:34 788

原创 C++必看:很重要的C++内存对齐模型

摘要:本文探讨了C++中空类和空结构体的内存模型问题,以及结构体内存对齐机制。空类/结构体的sizeof为1字节,添加普通成员函数不影响大小,但虚函数会引入虚表指针(4/8字节)。结构体对齐遵循系统资源分配规则,其大小为对齐要求的整数倍(最小8字节或最大成员大小)。嵌套结构体需特殊处理,对齐到所有成员的最大对齐数。代码示例展示了不同结构体布局对内存占用影响,并提及了修改对齐数的方法。

2025-07-13 09:12:26 277

原创 C++必看:运算符优先级问题

这篇文章总结了C++运算符的优先级规则,分为六个层级和特殊运算符。最高优先级是括号和成员访问,其次是单目运算、算术运算、位运算、比较和逻辑运算,最后是赋值和逗号运算。特殊运算符如三目运算符和移位运算符也有明确的优先级位置。文章通过简洁的口诀帮助记忆,如“括号优先,点箭头紧跟”和“乘除模,加减后”。这些规则对于编写正确且高效的C++代码至关重要。

2025-07-13 09:11:25 439

原创 C++必看:内存上的大小端问题

本文通过代码示例分析了x86架构的字节序特性。代码中定义了一个32位整数a=0xabcd1234,将其地址转换为char*后取第一个字节赋值给char变量b。由于x86采用小端序(低字节存储在低地址),变量a的起始地址存储的是最低字节0x34,因此b的值为0x34(十进制52)。通过printf验证了该结果,并指出在大端序架构下结果会不同(0xab)。结论强调在x86机器上,b的值确定为0x34(52)。

2025-07-03 09:08:44 290

原创 C++必看:构造函数修饰符

C++构造函数虽然没有传统修饰符,但有多种特殊特性影响其行为:explicit防止隐式转换;=default要求默认实现;=delete禁用构造;constexpr支持编译期构造。此外还有委托构造(减少代码重复)、初始化列表(高效初始化)、继承构造(复用基类构造器)等机制。这些特性赋予构造函数灵活性,但注意构造函数不能是虚函数或静态函数。这些"修饰"方式共同完善了C++对象构造的控制能力。

2025-07-02 09:34:41 489

原创 C++必看:符号与溢出问题

摘要:C++中整数分为有符号(signed)和无符号(unsigned)类型,主要区别在于能否表示负数。有符号整数采用二进制补码存储,溢出时是未定义行为;无符号整数直接二进制存储,溢出时遵循模运算规则。类型大小和范围因平台而异,如int通常为4字节(-2^31到2^31-1)。混合运算可能引发意外类型提升,建议使用<limits>检查边界。关键区别在于:有符号可表负数但溢出危险,无符号范围更大且溢出可预测。

2025-07-01 15:46:42 888

原创 C++必看:C++构造函数的初始化顺序

本文总结了C++继承体系中构造函数和虚函数的调用规则:1)构造函数调用顺序为:虚基类→非虚基类(按声明顺序)→成员对象(按声明顺序)→派生类自身;2)构造函数中的虚函数调用静态绑定到当前类;3)拷贝构造函数在对象初始化而非赋值时调用;4)子类虚函数声明不影响父类静态绑定,仅对后续继承有效,多态性需从基类开始启用。文中通过代码示例演示了这些规则的具体表现,包括虚函数表切换时机和虚函数绑定机制。

2025-07-01 15:21:53 1691

原创 C++必看:C++深拷贝和浅拷贝

摘要: 浅拷贝仅复制对象表层值(含指针地址),可能导致内存共享;深拷贝则完全复制对象及其动态内存,创建独立副本。典型场景中,涉及指针成员、容器存储指针或类赋值操作时需深拷贝,可通过自定义拷贝构造函数实现;而纯值类型、智能指针或临时对象通常无需深拷贝。智能指针(如std::shared_ptr)已自动处理资源管理,简化拷贝逻辑。关键区别在于是否需避免资源共享问题。(150字)

2025-07-01 15:20:10 95

原创 渗透测试入门必读:什么是Java CC链攻击

摘要:Java CC链(Call Chain)是指Java类间方法调用形成的依赖关系链,当其中存在安全漏洞时可能被攻击者利用。CC链问题属于常见Java漏洞,攻击者可利用不安全的类调用链执行恶意代码,如远程命令执行或数据窃取。典型例子包括JDK的AnnotationInvocationHandler反序列化漏洞和Spring SpEL表达式注入。防范关键点在于识别调用链中安全检查不足的构造函数,并防止恶意参数传递。开发中需严格检查类库间的调用关系,及时修复漏洞,以保障Java应用安全。(150字)

2025-06-30 16:42:57 261

原创 Python基本功:Flask后端框架的使用

Flask是一个轻量级Python Web框架,配置简单,包含路由、参数传递、模板渲染等功能。主要特点包括:通过装饰器定义路由;支持GET/POST参数传入;可进行重定向和404处理;提供JSON接口;支持模板继承与传参;内置调试模式;可自定义静态文件路径。基本配置包括创建Flask实例、设置入口点、运行应用等。还支持异常捕获、请求头获取、URL别名等功能,是开发小型Web应用的理想选择。

2025-06-30 16:29:46 646

原创 网安面试必看:Cobalt Strike、metasploit流量分析

本文分析了Cobalt Strike和Metasploit的流量特征。Cobalt Strike的流量架构包括teamserver、C2服务器和beacon主机,其HTTP/HTTPS/DNS通信具有特定模式,如checksum8路径验证、心跳请求和异常DNS记录。Metasploit V4采用模块化架构,包含辅助、渗透、后渗透等模块,其bind_tcp流量虽加密但仍保留MZ标头特征。两种工具都可通过修改配置规避部分检测,但某些强特征(如checksum8响应和JA3指纹)难以完全消除。分析这些特征有助于检

2025-06-30 16:12:03 659

原创 渗透测试入门必读:关于Java后端中的反序列化以及框架漏洞的那些事儿

Java安全漏洞与关键技术解析 摘要:本文梳理了Java相关核心概念与常见安全漏洞。关键技术包括:JNDI(命名目录服务接口)、RMI(远程方法调用)、反序列化机制、反射等。重点分析了反序列化漏洞成因,即通过重写readObject()方法嵌入恶意代码。典型案例包括FastJSON漏洞(利用AutoType功能)和WebLogic漏洞(XMLDecoder反序列化、T3协议漏洞等)。WebLogic还涉及SSRF漏洞,可通过换行符构造特殊请求。文章还介绍了Java Web三大组件(Servlet、Filte

2025-06-29 21:11:50 844

原创 python多线程编程

单线程模式下,python执行函数是一步一步来的,先执行上面函数,结束后再执行下面函数。这是main2函数,我做了另外一些事情,第2步这是main1函数,第2步。这是main1函数,第4步这是main2函数,我做了另外一些事情,第4步。这是main2函数,我做了另外一些事情,第5步这是main1函数,第5步。这是main2函数,我做了另外一些事情,第6步这是main1函数,第6步。这是main2函数,我做了另外一些事情,第2步。这是main2函数,我做了另外一些事情,第4步。

2023-03-18 16:43:00 254

原创 【数据结构课设】稀疏矩阵的三元组存储和转置 C语言

稀疏矩阵的三元组表示法,C语言实现,数据结构课程设计源代码。对于稀疏矩阵来说,如果我们还是用100×100的方式来存储的话,显然是非常浪费的,因此我们可以采用一种稀疏矩阵的压缩存储方式,即三元组方式。

2023-03-07 12:49:38 1166

原创 DC1靶场练习记录

Vulnhub系列靶场攻略,第一期DC-1

2023-03-05 14:30:18 318

空空如也

空空如也

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

TA关注的人

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