- 博客(168)
- 收藏
- 关注
原创 【操作系统】计算机硬件软件知识汇总
以下解析使用CentOS 6.1版本的操作系统进行讲解,采用Sysinit模式的进行初始化,如果你的操作系统没有类似/etc/rc.d这些目录,那么你的操作系统可能是采用Systemd模式进行初始化,虽然模式不同,但是要实现的基本功能都是差不多的。
2023-10-12 16:56:24
467
原创 【算法】KMP算法的next数组的数学原理以及推导过程
本文详细解析了KMP算法中next数组的数学原理与构建过程,这些原理构成了KMP算法高效匹配的核心机制。
2026-01-07 10:52:23
559
原创 【神经网络】超参调优策略(二):Batch Normalization批量归一化
Batch Normalization(批归一化)是一种通过规范化神经网络各层激活值分布来加速训练的技术。它通过对每个mini-batch数据进行标准化处理(均值为0、方差为1),并引入可学习的缩放平移参数γ和β,有效解决了深层网络中梯度消失/爆炸问题。该方法具有三大优势:大幅提升训练速度、降低对初始值的敏感性、抑制过拟合。实验表明,使用BatchNorm的网络在不同初始值下都能快速收敛,而未使用的网络在初始值不当时可能完全无法学习。文中还详细解释了方差计算(区分总体与样本方差)和标准化公式,并提供了基于M
2025-12-18 15:22:15
815
原创 【神经网络】超参调优策略(一):权重初始值调优——防止梯度消失和表现力受限
本文探讨了神经网络权重初始化的关键问题。研究表明:1)全零初始化会导致神经元对称性问题;2)随机初始化不当会引起梯度消失或表现力受限;3)针对不同激活函数应使用特定初始化方法:sigmoid/tanh推荐Xavier初始化(标准差为1/√n),ReLU推荐He初始化(标准差为√2/n)。通过实验对比不同初始化方法对各层激活值分布的影响,证实采用适配的初始化策略能有效维持信号传播稳定性,避免梯度消失问题,显著提升网络训练效果。
2025-11-20 10:54:04
382
原创 师兄师兄怎么办
本文讲述了一个热爱探究事物原理的年轻人从沉迷游戏到专业成长的历程。从小对游戏机制充满好奇却不被理解,到大学选择机器人专业系统学习编程和硬件知识。在钻研过程中经历了困惑与突破,最终将零散知识串联起来,并开始分享所学,开发游戏项目,向更高阶的计算机领域探索。作者始终保持着对游戏的热爱初心,通过音乐、绘画等方式延续这份热情,并希望帮助和自己一样爱钻研的人。文章展现了从问而无人到为人解惑的成长蜕变。
2025-10-24 12:25:11
946
原创 【人工智能】神经网络的优化器optimizer(四):Adam自适应动量优化器
Adam优化器是一种结合动量和自适应学习率的深度学习优化算法,通过计算梯度的一阶矩和二阶矩实现参数更新。其核心优势在于:1)采用偏差修正技术解决初始阶段估计偏差问题;2)融合动量机制和自适应学习率特性,相比SGD、Momentum和RMSProp等优化器具有更快的收敛速度;3)每个参数独立调整学习率。实验表明,带偏差修正的Adam在参数更新轨迹和损失收敛上都优于未修正版本,使其成为深度学习中最常用的优化器之一。
2025-10-23 10:06:09
1783
1
原创 【统计学基础】KS(Kolmogorov-Smirnov)统计量
KS统计量是一种衡量两个概率分布差异的非参数检验方法,常用于模型评估和异常检测。其核心是计算两个累积分布函数的最大绝对差值,取值范围0-1,值越大区分能力越强。计算步骤包括数据排序、分箱处理、累积比例计算和取最大差值。Python可通过scipy.stats.ks_2samp实现,也可自定义函数计算模型正负样本KS值。应用场景包括:评估二分类模型区分度(KS≥0.4表示强区分能力)、检验数据分布一致性(如本福特定律检测财务数据异常)。文中提供了完整的KS计算代码示例,以及结合本福特定律搭建数据造假检测系统的
2025-10-16 09:26:04
920
原创 【银河麒麟V10 SP1的kysec安全模块】程序无权限在/opt、/usr等路径下创建、追加日志,使用chmod、chown等指令也报无权限
摘要:软件在/opt路径创建日志文件后重启服务出现写入权限问题,常规权限修改无效。经排查可能是SELinux或KYSEC安全模块的限制。SELinux通过强制访问控制和标签机制管理权限,可用getenforce查看状态,通过修改/etc/selinux/config永久关闭。KYSEC是银河麒麟系统的内核级防护,通过白名单机制控制文件访问,可用getstatus查看状态,修改/etc/kysec/kysec.conf可永久禁用。建议先确认具体受限于哪种安全机制再针对性处理。
2025-09-22 09:03:38
927
原创 【人工智能】神经网络的优化器optimizer(三):RMSProp动态自适应学习率优化器
RMSProp是Hinton在2012年提出的优化算法,针对AdaGrad算法学习率过早衰减的问题进行改进。其核心创新在于采用指数加权平均法动态调整学习率,通过衰减因子平衡新旧梯度信息,使学习率保持有效调整能力。相比AdaGrad的全局梯度累积,RMSProp赋予近期梯度更高权重,特别适合非平稳目标(如RNN)和深层网络训练。算法维护状态变量记录梯度平方的指数衰减平均值,通过均方根实现参数自适应更新:梯度振荡剧烈时降低学习率,平缓时增大学习率。典型超参数γ取0.9左右,在保持训练稳定性的同时避免了后期更新停
2025-08-26 14:40:59
1192
原创 【深度学习】通俗易懂的基础知识:指数加权平均
指数加权平均是一种时间序列数据的加权计算方法,其核心特点是数据权重随时间呈现指数级衰减。近期数据获得更高权重,而早期数据影响逐渐减弱,通过衰减因子β(0<β<1)控制历史数据权重分布。β值越小(如0.1),曲线越贴近原始数据但抗噪性差;β值越大(如0.98),平滑效果越强但滞后越明显。相比普通平均的等权重计算,指数加权平均能更敏感地反映短期趋势变化,适用于需要动态平衡历史与当前数据的场景,如神经网络优化、温度趋势分析等。数学推导表明,该方法通过递推公式实现权重指数衰减,总权重收敛于1。
2025-07-29 15:42:58
1153
原创 Ubuntu+Nginx+php+SQLite3+typecho手动搭建个人博客
本文详细介绍了在Ubuntu系统上搭建Typecho个人博客的完整流程。首先通过apt安装Nginx和PHP(包含必要扩展),并验证服务状态。接着配置Nginx支持PHP解析,创建站点配置文件。然后下载Typecho程序,解压到网站目录并设置权限。完成部署后,通过浏览器访问即可进入Typecho安装界面,按照指引完成博客配置。该教程涵盖了从环境搭建到博客上线的全过程,包括服务管理、配置文件修改和权限设置等关键步骤,最终实现一个功能完整的个人博客系统。
2025-07-01 15:09:09
1177
原创 【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景
2025-06-06 14:49:40
1664
原创 【人工智能】神经网络的优化器optimizer(一):Momentum动量优化器
随机梯度下降法(SGD)是神经网络中用于优化参数的一种方法,通过沿梯度方向更新参数来最小化损失函数。然而,SGD在处理非均向函数时效率较低,容易陷入局部最小值。为解决这一问题,引入了动量优化器(Momentum),它通过引入物理中的动量概念,利用历史梯度信息调整更新方向,使得优化过程更加平滑,有助于跳出局部极小值并加快收敛速度。Momentum方法通过指数加权平均累计历史梯度,减少了震荡并提高了优化效率。在实际应用中,Momentum的公式经过简化,省略了部分计算步骤,降低了计算复杂度和代码实现难度,同时与
2025-05-20 10:00:00
2255
原创 【神经网络】python实现神经网络(四)——误差反向传播的基础理论
有了上面的基础,我们就可以看一下各个层是如何反向传播的了,首先是点乘层Affine,我们来复习一下,矩阵的乘积运算的要点是使对应维度的元素个数一致。另外,在各个变量的上方标记了它们的形状(比如,计算图上显示了X的形状为(2,),X·W的形状为(3,) 等)。需要注意的是,偏置在正向传播时是被分别加在dot(X,W)的各个数据之上,因此,反向传播时,各个数据的反向传播的值需要汇总为偏置的元素。反向传播时,会将上游的值乘以−y^2(正向传播的输出的平方乘以−1 后的值)后,再传给下游。
2025-04-14 12:21:43
1296
原创 【神经网络】python实现神经网络(一)——数据集获取
在文章中,我们大致了解神经网络的正向信息传导、反向传导以及学习过程的大致流程,现在我们正式开始进行代码的实现,首先我们来实现第一步的运算过程模拟讲解:正向传导。本次代码实现将以“手写数字识别”为例子。
2025-03-04 17:02:12
1688
原创 【Docker】 Manifest与Buildx:多架构镜像管理的解析与实践
manifest包含了镜像的层、标签、作者等关键信息,并支持多架构镜像的管理。通过Manifest List,开发者能够为同一应用提供适用于不同架构的镜像,从而确保其在各类平台上的兼容性。实际上是把不同操作系统和架构打包成独立的一个镜像,用户拉去镜像时根据用户的实际使用场景自动选择合适的架构镜像。manifest本身不能直接用于打包镜像,只是用于创建和管理包含多个不同镜像的清单列表(manifestlist),构建多架构镜像使用buildx技术进行。
2025-02-06 15:24:09
1006
原创 【C++游戏程序】easyX图形库还原游戏《贪吃蛇大作战》(三)
我们这次来补充一些游戏细节,以及增加吃食物加长角色长度等设定玩法,也是本游戏的最后一篇文章。
2024-12-06 11:23:56
664
原创 【python】将word文档内容转换为excel表格
在日常工作中,我们经常需要将Word文档中的内容提取并转换为Excel表格,以便进行数据分析和处理。本文将介绍如何使用Python编写一个简单的程序,将Word文档中的内容转换为Excel表格。
2024-11-22 18:23:49
2039
原创 【C++游戏程序】easyX图形库还原游戏《贪吃蛇大作战》(二)
终于忙完这段时间的项目、考证了,接下来将继续填之前的坑了。书接上回本次将使得角色和AI动起来,实现键盘控制,同时使得AI可以动起来以及一些细节补充。
2024-11-20 16:42:27
956
原创 【软考高级架构】关于分布式数据库缓存redis的知识要点汇总
分布式数据库缓存指的是在高并发的环境下,为了减轻数据库的压力和提高系统响应时间,在数据库系统和应用系统之间增加一个独立缓存系统。
2024-10-24 11:02:31
1764
原创 【架构设计】安全架构设计
在当今以计算机、网络和软件为载体的数字化服务几乎成为人类社会赖以生存的手段,与之而来的计算机犯罪呈现指数上升趋势,因此,信息的可用性、完整性、机密性、可控性和不可抵赖性等安全保障有位重要,为满足这些诉求,离不开好的安全架构设计。GB/T 9387.21995 给出了基于OSI参考模型的7层协议之上的信息安全体系结构。
2024-08-27 17:17:35
3084
原创 【国产化系统】MySQL安装
配置完成后进行数据库初始化操作。ALTER USER 'root'@'localhost' IDENTIFIED BY '初始化密码' PASSWORD EXPIRE NEVER;如果出现”mysql>”即为正常安装。请记住这个随机初始密码!不然后续步骤将无法进行!初始化成功后将出现随机的初始密码,这里输入的密码是上面说的随机初始密码!此时密码将被修改为“root”
2024-07-24 14:12:08
1454
原创 【C++游戏程序】easyX图形库还原游戏《贪吃蛇大作战》(一)
游戏完成图如图下所示:大体框架就如上面所示,后面我们将针对各个要点进行详细的要点拆分。
2024-06-14 15:01:23
1560
1
原创 【操作系统】从实模式进入保护模式
从实模式进入到保护模式(不知道为什么要进入的保护模式的可以参考文章:【操作系统】CPU的保护模式与实模式的区别),我们需要进行以下几个步骤: 为什么要打开就不在此赘述了,详细可以查看之前写过的文章:【计算机组成】实模式/保护模式下地址分段(基段地址+偏移地址)的原因,总的来说是旧的CPU(8086/8088之类的)在实模式下地址线为20位(A0~A19),最大寻址空间为0xFFFFF,超出部分会被地址回卷到0重新开始。但是进入到保护模式下我们需要去访问更大的内存空间,所以需要将“地址回卷”这个功能关闭掉
2024-05-22 12:11:26
1806
1
原创 【操作系统】段描述符、全局描述符表和选择子
与实模式不同的是,保护模式下内存段不再是简单地用段寄存器加载一下段基址然后乘以16位结合偏移地址得出实际要访问的内存地址,而是通过选择子在全局描述符表中找到对应的段描述符,CPU从段描述符中提取段基址,再与偏移地址结合得出实际要访问的内存地址。
2024-04-09 19:00:00
1918
1
原创 【算法】不懂数学原理也能看得懂的KMP算法
举个例子,excel表格大家都用过吧,在表格内按下“Ctrl+F”可以弹出“查找和替换”功能,输入我们想要查找的关键字,系统就会帮我们定位到具体的位置,没有找到就上报具体的错误信息,KMP算法的作用就和excel表格的“查找”功能一样,帮你从一堆字符串中找到你想要的字符。 当然你也可以参考力扣的这题: 我们按照以下的例子进行说明: 我们要在文本串中找到模式串所在的位置,需要用到经过next函数计算出来的next数组: 至于这个数组是怎么算出来的先暂时别
2024-02-01 19:00:00
787
原创 【操作系统】调用硬盘并且实现MBR与Loader的过渡——原理篇
前文(【操作系统】优化MBR程序:让MBR调用显存吧)中的MBR程序仅有512字节大小,完全不能将内核成功加载到内存并且运行,所以我们需要在另一个程序中完成初始化环境以及加载内核的任务,这个程序称之为Loader加载器,本文我们就将实现MBR与Loader的交接部分,从硬盘上把loader加载到内存,并且将接力棒交付给它。再次之前,我们需要明白怎么调用硬盘。【计算机组成原理】磁盘的基本结构,不在此赘述。),硬盘控制器属于IO端口,端口是位于IO控制器上的寄存器。
2024-01-27 10:58:13
775
原创 【操作系统】优化MBR程序:让MBR调用显存吧
显卡用于连接CPU和显示器,我们调用显示器时,其实就是利用显卡提供的IO接口间接地对显示器进行操作,所以显卡也称之为显示适配器。【操作系统】BIOS与MBR之间的过渡实践),使我们的程序通过直接操作显卡来输出,显卡给我们的输入接口有显存和端口,而本文中主要用到显存。【操作系统】BIOS开机自检)就可以知道,内存布局中关于显存地址分布如下:显卡支持三种模式:文本模式、黑白图形模式以及彩色图形模式,本文中我们将使用文本模式,以实现类似Linux控制台风格的字符界面。
2024-01-11 21:00:00
2167
原创 【操作系统】BIOS与MBR之间的过渡实践
【操作系统】MBR主引导目录结构以及作用,我们了解到BIOS在检测完内存、显卡,把硬盘等一系列外设简单检测之后,下一步将和主引导程序MBR进行交接,将主控权交付给下一位嘉宾,至此BIOS的任务就完成了继续睡去,本篇文章我们来开始编写一个简单MBR程序,并且让其完成从BIOS过渡到MBR这个过程,至于MBR的本质工作(启动引导程序等)我们将在之后逐步完善其内容。
2024-01-09 19:00:00
1060
原创 【操作系统】CPU的保护模式与实模式的区别
内存寻址空间扩展到4G之后,原来的寻址方式已经不能满足需求了,按照原来的寻址方式,段基址左移4位与段内偏移地址相加就是实际的物理地址,而在4G的地址空间里,左移4位已经不能满足了,需要左移16位(也就是2的16次方),才能访问到32位的地址空间,这显然是不切实际的。通过以上代码可以看到,第二行和第五行的机器码分别为B83412和B834120000,这两者都是通用的操作码B8,不同模式下都是同样的操作码,可见寻址方式和操作数类型都是相同的,不同的是一个是16位寄存器ax,一个是32位寄存器eax。
2023-12-11 21:00:00
2403
原创 【操作系统】Bochs安装和配置
Bochs是使用C++编写的高度可移植开源IA-32(X86)PC模拟器,能在大多数流行的平台上运行。它包括模拟Intel x86 CPU、常见I/O设备和自定义BIOS。Bochs可以被编译以模拟许多不同的x86 CPU,从386早期到最新的x86-64英特尔和AMD处理器甚至可能还没有进入市场。Bochs能跑仿真中的大多数操作系统(例如DOS),Linux或Windows。
2023-11-23 20:00:00
3936
原创 【计算机组成】实模式/保护模式下地址分段(基段地址+偏移地址)的原因
这个结果也只能到达17位,还不够16位(两个n位的数无论多大,其相加的结果也不会超过n+1位,原因很简单,因为即使n位的数能表示的最大数相加,也只是相当于乘以2,数值上与往左移动了1位而已),虽说直接使用立即数手动指定20位的地址也可以,但那是利用了程序员自身的软件办法来补了硬件的这个坑,但是作为一个严谨的CPU硬件,如果寄存器确实不支持1MB的寻址空间,那就写不支持就好,但是既然写了寄存器寻址支持1MB的寻址宽度,那么就得自圆其说。什么用都没有,直接扔掉,也就相当于把地址对1MB取模了。
2023-11-07 21:00:00
1230
原创 【计算机组成原理】CPU的工作原理
顺序执行时,CPU修改PC的过程就是简单地加1,转移执行时,后续指令的地址会根据当前指令的地址加上转移的偏移量得到,或者根据转移指令给出的直接转移地址得出。比如进行减法运算时,会先将被减数去除暂存在AC中,再从内存中取出减数,然后通AC的被减数相减,所得到的结果送至AC中,运算结果是放在累加器中的。,这个程序计数器PC就像个悬赏榜一样,告诉CPU任务发起人在哪里,让CPU去指定的地址找任务发起人,执行相应的指令。,识别该指令规定的操作,向操作控制器发出具体的控制信号,控制各部件工作,完成所需的功能。
2023-11-02 19:00:00
655
原创 【C语言】五分钟学会一个小游戏-4399的吉普赛读心术
在4399平台上面有一个游戏叫吉普赛神秘读心术,大概长成这个样子:这是我小时候的童年震撼,懵懂无知的我每次都觉得特别厉害,不知道为什么每次都能读到我的图案出来。游戏的规则也很简单:在99以内的数字里面任意挑选一个数字,比如23,那么就将两个数字相加2+3=5,再将这个数和之前的数字相减23-5=18,最后找到数字18的图案,点击水晶球,水晶球就会显示出来你心里的那个图案。
2023-10-26 07:00:00
902
规则文件编写程序(C++)
2022-09-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅