- 博客(34)
- 收藏
- 关注
原创 教你使用开源的Firefly/流萤主题模板免费搭建自己的个人博客网站并托管到Cloudflare Pages和github pages
本文介绍了两种部署个人博客网站的方法:Cloudflare Pages和GitHub Pages。Cloudflare Pages部署无需本地安装依赖,通过GitHub仓库同步后自动构建,全球访问速度快;GitHub Pages需要本地安装依赖并打包,部署后可能遇到Jekyll兼容性问题,需创建.nojekyll文件解决。文章详细说明了从代码拉取、Git操作到部署的完整流程,包括SSH密钥配置等常见问题解决方案,并提供了两种方式的访问地址示例。推荐使用Cloudflare Pages获得更稳定的访问体验。
2025-10-25 23:56:30
1065
1
原创 Git版本管理工具入门及常用命令讲解---小白版
本文以编写"西红柿炒鸡蛋"菜谱为例,生动讲解Git版本控制工具的基本使用。从安装Git开始,逐步演示了初始化仓库、提交修改、查看历史、回溯版本、创建分支、合并修改等核心操作,并介绍了远程仓库的配置与协作方法。通过这个生活化的示例,读者可以快速掌握Git的基本工作流程,包括:如何跟踪文件变更、管理不同版本、处理分支合并,以及如何与团队成员协作开发。文章特别强调了git status、git log等常用命令的重要性,并提供了完整的命令总结表,适合Git新手作为入门教程。
2025-09-20 23:05:22
1225
原创 AES加密算法详细加密步骤代码实现--身份证号码加解密系统
本文介绍了一个基于Python开发的AES-256-CBC加密工具,主要用于身份证号码加解密。系统从底层实现了AES算法核心组件(S盒、轮常量、密钥扩展等),支持多密钥管理、密钥指纹验证和历史记录功能。采用CBC加密模式,每次加密生成随机IV,确保安全性。系统提供图形化界面,包含密钥生成/导入、加密/解密、历史记录查看等功能模块,所有数据本地存储。配套文件包括密钥存储、密文记录和解密历史三个核心JSON文件。该系统适合需要安全存储身份证信息的场景,但需注意密钥备份和合法使用。
2025-09-05 16:23:58
660
原创 AES加密算法原理讲解--基于AES-256加密算法实现身份证号码的加解密程序项目讲解
本教程详细讲解了一个基于AES-256算法的身份证号码加解密Python实现项目。项目采用CBC工作模式和PKCS7填充方案,从底层实现AES算法的加解密全过程,包括:1)密钥扩展算法,将256位密钥扩展为14轮轮密钥;2)加密流程的字节替换、行位移、列混淆和轮密钥加操作;3)解密流程的逆向运算。教程通过具体示例演示了如何对18位身份证号进行分组加密,并详细说明了CBC模式下IV的使用、密钥指纹生成以及加解密过程中的矩阵运算。该项目完整实现了AES-256的加解密过程,不依赖现有加密库,有助于深入理解对称加
2025-09-03 16:59:00
978
原创 3、栈和队列
本文介绍了栈和队列两种基本数据结构。栈遵循后进先出(LIFO)原则,包括顺序栈(数组实现)和链式栈(链表实现),详细讲解了它们的存储结构、核心操作及C语言实现代码。队列遵循先进先出(FIFO)原则,涵盖循环队列(数组实现)和链式队列(链表实现),重点分析了循环队列的空/满判断方法。最后对比了栈与队列的核心区别、实现方式的优缺点及适用场景,为数据结构选择提供了指导。
2025-08-19 20:19:14
1182
原创 2、双向链表与通用型容器
本文系统介绍了双向链表及其通用型容器的设计与实现。双向链表通过prev_p和next_p双指针支持双向遍历,相比单向链表在删除、逆向遍历等场景更高效。文章详细阐述了节点结构、初始化、增删查改等核心操作,重点解析了头插法、尾插法的指针调整逻辑。针对通用型容器,提出基于双向循环链表的实现方案,通过数据与容器分离的设计理念,利用宏定义支持任意数据类型存储。比较显示,双向循环链表通过首尾相连提升尾操作效率至O(1),而通用容器通过用户自定义函数实现数据逻辑的解耦。两种结构各有适用场景,前者适合简单数据存储,后者适于
2025-08-15 01:25:48
915
原创 1、顺序表与单向链表总结
本文系统介绍了数据结构的核心概念与两种基础线性表实现。主要内容包括:1)数据结构基本概念,区分线性/非线性关系和顺序/链式存储;2)算法性能分析,重点讲解时间/空间复杂度与常见量级;3)顺序表的实现原理与操作特性,强调其随机访问优势和插入删除劣势;4)单向链表的设计结构与关键操作,突出指针操作的灵活性;5)对比两种结构的存储方式、访问效率、容量管理等核心差异。文章指出,顺序表适合查询频繁场景,链表更适合动态数据操作,实际应用需根据具体需求选择合适结构或组合使用。
2025-08-15 01:24:37
906
原创 15、C语言预处理知识点总结
摘要: C语言程序编译分为预处理、编译、汇编、链接四个阶段。预处理阶段通过宏定义(#define)实现文本替换(无参宏、带参宏),支持符号拼接(##)和字符串化(#);条件编译(#ifdef、#ifndef等)控制代码选择性编译,常用于调试和跨平台适配;头文件(#include)管理公共声明,需配合#ifndef防止重复包含。预处理本质为文本操作,不涉及语法检查,合理使用可提升代码可读性(如宏替代常量)、模块化(头文件分离声明与实现)及灵活性(条件编译)。开发时需注意宏的括号优先级、头文件规范及路径引用。
2025-08-14 14:29:37
986
原创 14、C 语言联合体和枚举知识点总结
本文介绍了C语言中联合体(union)和枚举(enum)的关键概念与应用。联合体的核心特性是成员共享内存空间,同一时刻仅一个成员有效,常用于节省内存或表达互斥属性。枚举则通过有意义的标识符表示离散整数值,提高代码可读性。文章详细阐述了二者的定义语法、初始化方式、内存布局及典型应用场景,并对比了枚举与宏定义的优缺点。最后强调联合体适合处理多种数据格式表示,而枚举则适用于有限状态管理,合理使用这两种数据结构能显著提升代码的简洁性和可维护性。
2025-08-14 14:27:30
1079
原创 13、C 语言结构体尺寸知识点总结
本文系统讲解了C语言结构体尺寸计算的核心概念与方法。首先介绍了CPU字长和地址对齐的基础原理,指出数据对齐对CPU存取效率的影响。接着详细解析了变量m值的计算规则,以及不同数据类型在32/64位系统中的对齐要求。重点阐述了结构体尺寸的计算步骤,包括确定最大m值、计算最小对齐尺寸和调整成员排列顺序,并通过示例说明成员排列对结构体尺寸的影响。最后针对跨平台开发,提出了使用可移植整型和编译器扩展属性来确保结构体可移植性的解决方案。文章强调"大尺寸在前"的排列原则和sizeof验证的重要性,为编
2025-08-14 14:25:42
1294
原创 12、C 语言结构体基础总结
本文总结了C语言结构体的核心知识点:首先介绍了结构体的基本概念和三种定义方式(普通定义、typedef别名、带标签的typedef);其次讲解了结构体初始化的两种方法(顺序初始化和指定成员初始化);然后详细说明了结构体成员的引用方式(普通变量用".",指针用"->");接着分析了结构体数组和指针的应用场景;最后强调了使用注意事项,包括内存对齐、字符串赋值、动态内存管理等。结构体作为C语言封装复杂数据的重要机制,掌握其定义、初始化、引用及扩展形式,能有效处理现实中
2025-08-14 14:21:52
509
原创 11、C 语言字符串函数总结
本文总结了C语言中常用字符串处理函数的核心知识点,包括字符串查找函数(strchr/strrchr/strstr)、长度计算(strlen)、复制操作(strcpy/strncpy)、比较函数(strcmp/strncmp)、拼接函数(strcat/strncat)和分割函数(strtok)等。详细说明了各函数的功能、参数、返回值及注意事项,强调字符串处理中的终止符'\0'的重要性,并提供了典型示例代码。特别指出无长度限制函数的安全风险,建议优先使用带长度检查的版本。掌握这些函数有助于高效处理字符串操作,是
2025-08-14 14:19:21
1014
原创 10、C语言函数应用总结
本文总结了C语言函数应用的核心知识点:1)函数基础,包括定义与分类、参数传递机制(值传递)、局部变量与栈内存管理;2)特殊函数类型,包括递归函数的实现要点、静态函数的作用域限制和回调函数的动态绑定机制;3)函数设计规范,强调封装性、参数检查和安全返回值。重点剖析了函数调用时的内存管理机制,特别指出栈内存自动分配释放的特点及其常见错误(如返回局部变量地址)。同时强调了递归的终止条件、静态函数的文件隔离作用以及回调函数的灵活性优势,为C语言函数的高效使用提供了系统指导。
2025-08-14 14:16:53
668
原创 9、C 语言内存管理知识点总结
本文总结了C语言程序的内存管理核心知识,包括进程内存布局及各区域特性。C程序运行时内存分为:内核区(不可访问)、用户区(代码段、数据段、堆和栈)以及不可访问区。栈内存自动管理,存储临时数据但空间有限;数据段存放静态变量和常量,生命周期持久;堆内存需手动分配/释放,空间大但易引发内存泄漏等问题。文章详细对比了各内存区域的管理方式、存储内容及增长方向,强调合理使用static关键字和规范堆内存操作的重要性,为编写高效健壮的C程序提供基础指导。
2025-08-14 14:13:58
969
原创 8、C 语言指针进阶总结
本文总结了C语言指针进阶的核心知识点:1.指针语法结构由数据类型和指针名组成,可解析复杂指针类型;2.指针与多维数组的对应关系,需匹配维度与指针层级;3.特殊指针类型包括字符指针(字符串操作)、多级指针(指针数组)、void指针(类型转换)、const指针(常量限定)和函数指针(回调机制);4.使用注意事项涵盖指针偏移量计算、野指针防范和const关键字的语义差异。掌握这些知识对处理复杂数据结构和内存操作至关重要。
2025-08-14 14:11:38
931
原创 7、C 语言数组进阶知识点总结
本文总结了C语言数组的进阶知识点,包括数组名的双重含义(代表整个数组或首元素地址)、下标运算符[]的本质(指针运算的简写)以及字符串常量的特性(匿名数组、存储在常量区)。此外,还介绍了三种特殊数组类型:零长数组(用于结构体动态拓展)、不定长数组(自动确定长度)和变长数组(运行时确定长度)。核心注意事项包括数组退化、字符串操作区分、特殊数组适用场景以及避免越界访问。掌握这些知识有助于更安全高效地操作数组和字符串。
2025-08-14 13:58:37
839
原创 6、C 语言指针初阶知识点总结
本文总结了C语言指针的核心知识点。首先介绍了指针基础概念,包括内存地址、基地址和取址符的用法。其次讲解了指针定义与本质,强调指针必须初始化以避免野指针危险。在特殊指针部分,重点区分了野指针和空指针的特性及使用注意事项。最后阐述了指针运算规则,包括指针大小、加减运算及其在数组遍历中的应用。文章特别强调指针安全使用规范,如避免越界访问、及时释放内存等注意事项,为初学者提供了完整的指针知识框架。
2025-08-14 13:57:05
650
原创 5、C 语言数组知识点总结
C语言数组核心知识点总结:1.数组是连续存储的同类型变量集合,定义时需指定固定大小;2.数组名、首元素地址和整个数组地址数值相同但作用范围不同;3.可通过下标或指针访问元素,但需注意数组越界问题;4.多维数组按行优先存储,字符数组需注意'\0'结束符;5.数组作为函数参数会退化为指针,需额外传递长度信息;6.不能直接对数组整体赋值或比较,需逐个元素操作。掌握这些要点能有效避免数组使用中的常见错误。
2025-08-14 13:55:21
994
原创 4、C 语言控制流总结
C语言控制流核心知识点摘要:本文系统梳理C语言控制流机制,涵盖分支结构(if/switch)、循环结构(while/do-while/for)和跳转语句(break/continue/goto)。重点解析:1)if-else与switch的适用场景及注意事项;2)三种循环结构的特性和转换关系;3)跳转语句的合理使用场景;4)const修饰符的限制条件。特别强调常见错误点:如遗漏break导致的switch穿透、混淆==与=、循环变量错误修改等,并给出各类控制结构的选用策略。通过指纹识别状态机等实例,展示控制
2025-08-14 13:52:34
872
原创 3、C 语言运算符总结
本文总结了C语言中各类运算符的核心知识点,包括算术、关系、逻辑、位运算等。详细介绍了运算符的功能、使用方法及注意事项,重点讲解了自增/自减运算的前后缀区别、逻辑运算符的短路特性、位运算的实用技巧等。同时强调了运算符优先级和结合性规则,并提供了经典应用案例(如无中间变量交换两数、寄存器位操作等)。文章还涵盖了sizeof、条件运算符等特殊运算符的使用要点,为C语言编程提供了全面的运算符参考。
2025-08-14 13:49:10
728
原创 2、C 语言数据类型总结
本文总结了C语言数据类型的核心知识点,包括整型、浮点型、字符型、字符串型和布尔型等。详细介绍了各类数据类型的定义、内存存储方式、格式控制符以及常量变量的概念。重点讲解了整型的修饰符、进制转换和补码存储原理,浮点型的IEEE754标准,字符型的ASCII编码,以及字符串的存储方式。此外还涵盖了标准输入函数的使用技巧、数据类型的本质与转换规则,以及提高代码可移植性的整型解决方案。这些内容为C语言开发者提供了全面的数据类型参考指南。
2025-08-14 13:45:40
1344
原创 C语言基本的常识及相关原理
《C语言基础与开发规范》摘要:介绍了C语言程序结构三要素(声明、定义、调用),重点讲解了头文件、main函数、printf函数和转义字符的使用方法。详细说明了man帮助手册的分册分类(1-3册为核心)和查询技巧,推荐了cppreference等在线文档资源。最后强调了代码规范要求,包括标识符命名规则、缩进格式、空格使用等排版技巧,并提供了VS Code等编辑器的快捷操作方式。
2025-08-14 11:24:19
610
原创 VSCode中搜索插件显示“提取扩展时出错。Failed to fetch”问题解决!
大致的问题如下,在VSCode的插件商店搜索插件时提示如下:导致的情况有以下几点:1、代理问题,如果是代理引起的,可以继续使用代理后也能搜索和安装插件。2、还有可能是你的所连接的网络设置了防火墙,比较典型的是校园网,可能学生遇到的可能性大。3、还有可能是你电脑的环境变量中有类似HTTP_PROXY或HTTPS_PROXY之类的变量,4、其它问题。
2025-03-21 20:18:45
7422
2
原创 Hbase完全分布式安装教程,详细版
命令:ln -s /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml /opt/module/hbase-2.4.6/conf/core-site.xml。echo ---------- hbase 停止 ------------命令:scp -r /opt/module/hbase-2.4.6/ zq@hadoop102:/opt/module/echo ---------- hbase 启动 ------------
2025-03-01 15:12:46
1622
原创 Hbase伪分布安装教程,详细版
要配分布式的话第一个要改为true,我们现在是伪分布所以也要改为true,版本和我的一样的就找我这样做就行,版本和我的不同的,没有的配置就加上,不同的改了和我的一样即可。根据自己的安装软件的位置解压,/opt/module/是我的安装路径:tar -zxvf hbase-2.4.6-bin.tar.gz -C /opt/module/直接在文件的最后添加如下内容保存并退出,第一个改为自己的JDK安装路径,第二个改为自己的Hbase安装路径,第四个为true是使用Hbase自带的zookeeper。
2025-03-01 14:26:18
1305
原创 用IDEA基于Spark3.4.1和Scala2.12.18的Spark项目开发,并用Maven管理依赖的方法教程,并给出常用的IDEA版本与Maven版本兼容性的对照表
第一个为Maven的主目录,就是你解压的Maven安装包的路径,到bin文件夹的上一级路径,第二个是settings.xml文件的路径,刚才修改的那个文件的路径,第三个是本地仓库的路径,就是刚才创建的那个repository文件夹的路径。本次教程用到的Scala版本为2.12.18,版本,IDEA版本为2019.2.3版本(所以Maven版本最好选择3.6.1以下的版本,这里用的是3.5.4),Spark为3.4.1版本。点击浏览,根据自己的scala2.12.x版本的安装目录选择里面的lib目录点OK。
2025-01-24 00:21:41
1613
原创 教你看scala版本和spark版本是否兼容,以及需要下载的Maven包与JDK版本之间是否兼容,如何在pom.xml中写相关组件的配置等,用作IDEA中spark项目开发,并用Maven管理相关依赖
因此,确保Maven支持的JDK版本与你安装的JDK版本匹配是至关重要的,你不需要考虑Maven版本是否与你的Spark版本或Scala版本是否兼容。大数据专业的同学有没有在初次学习Spark大数据分析的时候,老是搞不清楚Scala版本与Spark的那个版本兼容,该分别使用哪一个版本呢?我们点击表中2.12的字样就可以跳转到如何写配置的界面,我们可以看到Spark3.4.1版本且用的是Scala2.12.x版本的Spark-core在pom.xml中应该如下写配置,其它组件的也是同样的查看方法。
2025-01-21 18:14:04
1839
原创 C语言图书管理系统,大学C语言与数据结构项目
这是一个我大一刚学C语言的时候自己写的一个图书管理系统的项目,其中的功能包括图书管理员的用户注册、用户登录、用户注销、修改用户名及密码、增删改查图书信息、借阅与归还系统、数据本地化等一系列功能,即使是你关闭系统然后下次再开启系统,里面的数据也不会丢失。如果再次入库,然后输入的ISBN码为刚才已经入库的01,则不能入库,这时可以通过输入3修改已有的图书信息,下面的图片中可以看到现需要输入插入的位置,如果一本图书都没有的话则不会提示。输入8会看到所有借阅的信息,如果没有归还的,归还日期那里默认为0。
2025-01-17 19:52:40
868
原创 解决hive数据仓库执行Map任务时,Map任务中的容器(container)超过了虚拟内存限制导致任务失败的问题
可以调整YARN的配置(也就是修改yarn-site.xml配置),增加每个容器的虚拟内存限制。具体可以通过设置yarn.nm.vmem-pmem-ratio参数来调整,它控制了虚拟内存和物理内存的比例。(默认的也为2.1倍)yarn.nm.vmem-pmem-ratio:这个参数定义了NodeManager(工作节点)上每个容器的虚拟内存与物理内存的比例。打开 yarn-site.xml 文件,找到或添加以下配置项:(先关闭自己的集群,根据自己的Hadoop安装位置进去,Hadoop集群的配置看。
2024-12-12 20:18:13
1902
原创 用IDEA开发基于Spark3.4.1和Scala2.12.18的Spark项目的sbt方式配置,超详细哦
注:本次我用到的Scala版本为Scala2.12.18版本,Spark版本为3.4.1版本,IDEA版本为IntelliJ IDEA 2019.2.3 x64版本(IDEA版本如果是其它的版本的话,可能有些许地方不一样,但都是同样的道理)),sbt版本用默认就行(IDEA版本和我一样的就像我一样即可),scala版本选择2.12.18版本,最后点击finally。找下面图中的内容输入变量名,点击浏览目录,到解压的目录的bin文件夹所在的同级路径下点击确定再确定。//创建SparkContext对象。
2024-12-10 20:53:38
2368
原创 教你用FFmpeg音视频命令行工具轻松转换视频格式,以及合并带m3u8文件的片段视频成一个完整的视频,不讲原理,直接上干货
其中0fc645dce8b4d0be334e8831db6c77d0_local.m3u8为m3u8文件,合并的时候只需要换这里就行,如下是我在某视频平台下载的带m3u8文件的ts格式视频片段的视频文件,可以看到我们下载下来的文件中有两个m3u8文件,我们需要的是名字带local的这个即可。在当前的地址栏输入cmd回车,然后输入合并命令,记得改命令中的m3u8文件名,可以看到合并完后在当前路径的最后会有我们合并的mp4格式的视频文件。进入后选择用户环境变量配置即可(要配置系统变量也行),然后点击编辑。
2024-12-09 20:20:49
1265
原创 C语言动态哆啦A梦源码分享,无需编程基础,小白轻松运行,顺便解决Visual Studio 2022里c++的源文件.cpp文件里无法使用C语言scanf()函数的问题
右键此文件然后用记事本打开,将刚才的那条宏定义给复制进去保存即可,如果是无法保存或已经存在了无法修改,请在桌面或其他地方建同样的文件输入同样的内容,复制进去就行,原来存在的选择替换原文件。下载好了运行,点下一步,然后安装VC++2022版的就可以了,会检测你是否安装过,存在的就不用安装了,文档有需要的可以安装上,完成后直接关闭即可。下载好后运行,进来以后,如果是初次安装需要下载安装,我的是原来就有的所以会显示更新,如果原来就有的请点击修改按钮,选择配置下载并安装好。打开上面的网址,选择下载社区版。
2024-12-08 14:45:08
826
原创 kafka和zookeeper单节点及集群安装,超详细
说明:本集群用的是三台服务器组成,我的主节点为hadoop101,其它两个节点分别为hadoop102和hadoop103(注意直接用主机名需要配置IP映射关系,前面已经配置过的就不用管,没有配置的就用IP),伪分布(单节点用的是hadoop100),配置的时候需要修改的地方直接将我的主机名修改为自己对应的主机名(IP)就行(其中典型的就是脚本编写的时候需要修改)。echo ---------- zookeeper $i 启动 ------------至此单节点的zookeeper和kafka安装完成。
2024-12-07 13:31:44
2410
原创 Hadoop伪分布及集群配置,保姆级教程
-----------------------------------------------------至此模板机配置完成---------------------------------------------即时生效:对于当前已经登录的用户来说,修改/etc/profile.d/my_env.sh不会立即生效,而修改/etc/profile也不会立即生效,都需要新的登录会话才能看到更改。echo " --------------- 启动 historyserver ---------------"
2024-12-06 22:57:29
945
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅