【Linux】基础开发工具

news2025/5/23 10:59:25

文章目录

  • 一、软件包管理器
    • 1. Linux下安装软件
      • 补充知识1:操作系统的生态
      • 补充知识2:我的云服务器是怎么知道去哪找软件包的呢?
    • 2. 查看软件包
    • 3. 安装软件
    • 4. 卸载软件
    • 5. 安装源
  • 二、编辑器Vim
    • 1. 命令模式
  • 三、编译器gcc / g++
    • 1. 程序编译流程
      • 补充知识:sudo无法执行的问题
      • 补充知识:理解条件编译

一、软件包管理器

1. Linux下安装软件

  1. 下载软件的源代码,并进行编译,得到可执行程序。
    这种方式需要解决跨平台问题,以及需要手动解决多级依赖问题,一旦出现问题便很难解决,这对于普通用户来说,无疑是一种负担,一般不推荐。
  2. rpm包安装
    把Linux下的软件打成一个包,叫做rpm包,这种方式可能会遇到依赖问题,假设想下载A软件,但A软件可能依赖一些库,通过这种方式下载A软件,只会把A软件下载下来,依赖不会自动下载,遇到的依赖问题需要手动解决。比如想写C语言程序,需要依赖于C语言库,如果没有C语言库,程序就无法运行了。这种方式同样不推荐。
    在这里插入图片描述
  3. 包管理器
    例如:yum / apt,有人把一些常用的软件提前编译好,做成软件包(可以理解为手机上的安装包)放到一个服务器上,然后通过软件包管理器就可以很方便的下载安装好这个已经编译好的软件包。
    软件包和软件包管理器,就好比手机上的"APP"和"应用商店"。
    这种方法会全自动依赖解决:如安装 C 语言编译器gcc,包管理器会自动下载所需的 C 语言库(如libc)、编译工具链等。

强烈推荐普通用户优先使用第三种方法(包管理器,省时省力,避免依赖噩梦。),是最便捷、稳定的安装方式。
在这里插入图片描述

补充知识1:操作系统的生态

什么样的OS(操作系统)是一个好的OS?答:生态好的OS,才是好OS。
OS 本身只是 “舞台”,生态中的应用开发者、硬件厂商、用户社群才是 “演员”。生态越繁荣,OS 的粘性和不可替代性越强。

假设我是一名公司老板,我不是非常懂技术,我想给公司选一个好的操作系统,我找到一个懂技术的员工,让他帮我推荐,并且给我一些可以让我理解的理由。假设我的员工给我推荐的系统是CentOS

作为公司老板,选择操作系统就像给公司选一个 “得力助手”,要考虑它靠不靠谱、花不花钱、好不好用。CentOS 就是这样一位 “全能型助手”,下面说说为什么推荐它:
一个好的操作系统,就像一个 “配套齐全的小区”—— 住的人多(用户多)、设施全(软件多)、物业好(支持强)、治安棒(安全高),住进去省心又舒服。CentOS 正是因为有这样的 “优质生态”,才适合作为公司开发的 “基础设施”(值得入住的好小区)。

  1. 很多大公司都在用 → 很多家庭选择的热门小区
    类比:
    一个地理位置优越、配套完善的小区会吸引很多家庭入住(就像大公司都选择 CentOS)。
    原因:大家都来入住,说明小区 “靠谱”(系统稳定)、“方便”(生态成熟)。
    好处:入住的家庭多(用户基数大),证明小区经过了真实生活的检验,潜在问题早就被发现并改进(如物业提前修好容易积水的路面)。
  2. 大公司使用暴露问题,减少排查成本 → 小区公共问题提前被解决
    类比:
    热门小区住的人多,难免会暴露问题(如电梯故障、停车位不足),但物业会快速响应并解决(就像 CentOS 社区修复漏洞)。
    好处:新入住的家庭(新用户)几乎不会遇到这些 “老问题”,即便遇到也能直接参考物业的 “问题处理手册”(社区文档),省时省力。
    例子:老住户发现小区周边早高峰堵车严重,物业协调开通了社区班车(类似 CentOS 优化网络配置),新住户直接享受解决方案。
  3. 活跃社区有解决文档 → 小区业主群的 “生活攻略”
    类比:
    小区业主群里总有热心业主整理 “生活攻略”:
    哪家超市送货快(软件库推荐);
    如何报修最有效(问题排查流程);
    楼道改造升级通知(版本变更说明)。
    对应 CentOS:社区里的工程师把常见问题解决方案写成文档(如《CentOS 网络配置故障排查指南》),新用户遇到问题时,直接在 “业主群”(论坛)里搜索关键词就能找到答案。
  4. 社区活跃,更新及时 → 小区物业定期升级设施
    类比:
    优质小区的物业会定期升级设施:
    加装智能门禁(系统安全更新);
    改造绿化景观(功能优化);
    引入快递柜、充电桩(支持新硬件 / 软件)。
    对应 CentOS:社区活跃意味着漏洞修复快、新功能迭代及时,就像小区紧跟科技趋势,让住户生活更安全、便捷。
  5. 完整文档,版本变更清晰 → 小区的 “历史规划档案”
    类比:
    小区开发商会留存详细的 “规划档案”:
    哪期工程增加了停车场(版本新增功能);
    哪年更换了供水管道(底层架构升级);
    对应 CentOS:官方文档清晰记录每个版本的变化(如 CentOS 7 vs 8 的差异),方便用户根据需求选择 “一期成熟小区”(稳定版)或 “二期新楼盘”(新版本)。
  6. 庞大用户群体帮忙解决问题 → 小区邻居的热心互助
    类比:
    小区里总有各行各业的热心邻居:
    退休电工帮忙修电路(资深工程师解决底层问题);
    宝妈分享育儿经验(新手互相交流);
    有人自发组织急救知识分享会(技术共享)。
    对应 CentOS:当你遇到罕见问题(如 “最近嗓子很疼,吃药也不好”),在业主群里提问,总有医生邻居结合自己的经验提供方案(如 “可以去某某医院看看,很权威”)。
  7. 丰富的软件库 → 小区周边的 “商业配套”
    类比:
    成熟小区周边有超市、医院、学校、健身房等 “一站式配套”(就像 CentOS 的软件库):
    想跑步?楼下就有健身房(安装开发工具一键完成);
    想买菜?生鲜超市步行 5 分钟(常用软件直接下载);
    甚至能找到 24 小时便利店(冷门工具也能快速获取)。
    对应 CentOS:开发需要的工具、库、框架都能在软件库中找到,无需到处 “跑腿”(手动编译或下载第三方安装包)。
  8. 稳定可靠,不耽误工作 → 小区的 “老牌物业”
    类比:
    CentOS 像一个服务了 10 年以上的老牌物业公司,管理着银行、商场所在的大型写字楼或高端小区。
    特点:
    24 小时在线值守:物业保安全年无休巡逻(类似系统 7×24 小时运行),电梯、水电等基础设施极少故障(系统稳定性高)。
    大机构信赖:银行用它管理金库安保系统,商场用它运行收银和监控系统(大公司用 CentOS 支撑核心业务)。
    例子:
    某小区物业连续 5 年零停电记录,住户开网店、做直播从不担心断网或设备故障(类似电商公司用 CentOS 处理数万笔订单无故障)。
  9. 安全性高,数据有保障 → 小区的 “智能安防系统”
    类比:
    CentOS 的安全机制相当于小区的三重智能安防体系:
    门禁系统(SELinux):
    只有业主刷脸 + 指纹才能进小区(类似 CentOS 的 “权限控制”,非授权程序无法随意访问核心数据)。
    陌生人想硬闯?保安立刻拦截(恶意软件攻击会被 SELinux 直接阻断)。
    定期安全升级(补丁更新):
    物业每月检查安防系统,发现漏洞立即修复(如升级监控摄像头分辨率、加密门禁系统数据),就像给系统 “打疫苗”。
    例子:某小区通过升级智能锁系统,一年内拦截了 12 起技术开锁盗窃企图(类似 CentOS 通过补丁修复漏洞,防止黑客入侵)。
    数据保险柜(加密存储):
    小区的快递柜有独立密码锁(类似 CentOS 的文件加密功能),个人快递信息不会被他人窃取(公司代码和用户数据安全有保障)。
  10. 免费又省钱 → 小区的 “公共设施免费用”
    类比:
    CentOS 就像公立小区,而 Windows Server 等收费系统像私立小区:
    私立小区:每年交高昂物业费(软件许可费),比如 100 户的小区年物业费 50 万(100 台服务器的 Windows 许可费约 30 万元)。
    公立小区(CentOS):
    基础服务免费:绿化、道路、路灯等公共设施维护费用由政府承担(开源免费,无需支付版权费)。
    省钱用途:省下的物业费可以给小区加装儿童乐园、老年活动中心(公司省下的钱可投入开发新功能、拓展业务)。
    对比案例:
    同地段的两个小区,公立小区住户用省下的物业费集体安装了电动车充电桩,而私立小区住户还在为 “是否要分摊充电桩费用” 吵架(类似企业用 CentOS 节省成本,快速推进项目)。

为什么选 CentOS?就像选 “省心小区”

CentOS 优势小区类比核心价值
大公司在用热门小区,入住率高经过检验,风险低
问题暴露早,排查成本低物业提前解决公共问题少走弯路,节省时间
社区活跃有文档业主群攻略齐全遇到问题随时可查,操作简单
更新及时物业定期升级设施安全有保障,功能与时俱进
用户群体庞大邻居热心互助再小众的问题也有人帮忙解决
软件库丰富周边商业配套齐全开发所需工具 “应有尽有”
稳定可靠10 年零重大故障的老牌物业保障业务连续运行,不耽误赚钱
安全性高智能门禁 + 定期安防升级保护公司数据和客户信息安全
免费省钱公立小区免交高昂物业费降低 IT 成本,省下来的钱能花在刀刃上

上面提到的这些就是操作系统的生态

简单来说,生态就像一个操作系统的 “朋友圈” 和 “资源库”,包括它能兼容的软件、能提供的服务、有多少人用它、遇到问题有没有人帮忙等等。

操作系统的不同,其实不是技术上的不同,本质上是生态 / 群体的不同,这个世界是人的世界,只要人 / 群体不同,那么配套的东西便不同 —— 技术只是载体,生态和群体需求才是核心驱动力
在这里插入图片描述

上面我们提到,是有人把一些常用的软件提前编译好,做成软件包后,才能通过yum / apt这样的包管理器进行下载,那么这些软件肯定都是由代码构成的,那么这些代码是谁写的呢?为什么有人会免费提供特定社区,提供软件,还发布?还提供云服务器让你下载?软件包服务器是个服务器,是需要用钱买的啊,钱是从何而来的呢?

在这里插入图片描述

  1. 代码是谁写的?
    程序员自己写的:
    有的是公司雇的程序员(比如谷歌工程师写安卓代码),有的是个人爱好者(比如学生课余写小程序),还有的是 “开源大佬”(比如 Linux 系统是 Linus 大神带着社区一起写的)。

  2. 为什么免费写?
    为了名气:写得好会被大厂看到,找工作更容易(比如在 GitHub 上秀代码)。
    公司让写的:比如华为开发鸿蒙系统,需要配套软件,程序员就会写开源软件吸引别人用鸿蒙。
    兴趣驱动:就像有人喜欢写小说、画画,有些程序员喜欢写代码分享给别人用。
    为了推广:这个开发者干脆就是那个写操作系统的人,他肯定不希望自己写的操作系统没人用。

  3. 为什么有人免费提供软件和服务器?
    软件免费的原因:
    推广系统:比如微软想让大家用 Windows,就配套开发免费的办公软件(早期 Office 免费试用)。
    开源理念:有些程序员觉得软件应该免费共享,比如 Linux 系统就是免费的,大家一起改进。

  4. 服务器费用谁出?
    大公司出钱:比如谷歌、亚马逊用开源软件赚钱,就会捐钱给开源项目(比如每年给 Linux 基金会捐几亿美金)。
    靠服务赚钱:虽然软件免费,但公司可以卖 “售后服务”(比如给企业定制功能、技术支持),用赚的钱养服务器。
    大家凑钱:小项目靠用户捐款(比如你用某个免费软件,觉得好用可以捐 10 块钱)。

举个简单例子:
比如安卓系统:
代码是谷歌和很多程序员一起写的,谷歌想让更多人用安卓手机,所以免费给手机厂商用。
手机厂商(比如三星、小米)用安卓系统卖手机赚钱,就会给谷歌交 “服务费”,或者内置谷歌的广告服务,谷歌用这些钱养服务器、维护系统。
还有很多程序员自己开发安卓 App(比如微信),免费给用户用,靠广告、会员赚钱。

一句话总结:
程序员写代码免费分享,可能是为了名气、公司任务或兴趣;大公司出钱养服务器,因为他们能通过软件生态赚钱(比如卖硬件、服务、广告),小项目就靠大家捐钱或自愿维护。
所以开源本质是一种商业模式,一个软件 / 操作系统 开源了,就有人用,就有人花钱。先用开源 “圈人”,再靠生态 “变现”。

补充知识2:我的云服务器是怎么知道去哪找软件包的呢?

  1. 软件包查找的核心逻辑
    云服务器通过 配置文件 记录软件源地址,系统命令(如 apt install / yum install)会根据这些地址去下载软件包。
  2. 镜像源的作用
    国外服务器慢 / 不稳定:直接访问国外官方源(如 Ubuntu 官方源)速度慢,且可能受网络限制。
    国内镜像站:高校(如清华、中科大)和企业(如阿里云、华为云)会同步国外源的软件包到国内服务器,提供高速下载(镜像站 = 国外源的 “国内拷贝”)。
  3. 云服务商的定制
    默认替换为国内镜像:华为云、阿里云等会在系统初始化时,自动将软件源配置为自家镜像站(如华为云的 repo.huaweicloud.com),无需手动修改。
    优势:速度快、稳定,且部分云商可能对软件包做过兼容性优化(如适配自家云服务器硬件)。

在这里插入图片描述

2. 查看软件包

通过yum list指令可以罗列出当前一共有那些软件包,由于软件包的数目可能非常多,一般和grep指令搭配使用,筛选出我们关注的包。
在这里插入图片描述

3. 安装软件

查完如果存在就可以安装了:yum install -y sl
正常安装一个软件系统会询问是否进行安装,-y选项表示:是的,我要安装,-y可以在任意位置出现。
如果我们使用的是普通用户,我们会发现没有权限安装。
在这里插入图片描述
安装软件的本质是文件拷贝,是受到权限约束的。所以安装软件时,我们需要用root或者sudo提权
在这里插入图片描述
在这里插入图片描述
Linux下的软件,root安装了,其他人都可以用;一般而言,软件只要安装一次,其他人都能用。

4. 卸载软件

通过yum remove -y 某软件
在这里插入图片描述
卸载完成,无法执行sl指令
在这里插入图片描述

总结:关于yum安装 / 卸载软件

  1. root / sudo提权
  2. yum list | grep xxx,查看
  3. yum install [-y] xxx,安装
  4. yum remove [-y] xxx,卸载

需要注意一点,yum 安装软件只能串行安装,安装完一个软件才能安装下一个软件

5. 安装源

centos下安装源一般在/etc/yum.repos.d路径下
在这里插入图片描述

yum源一般分为两类,一个是稳定软件源,一个是扩展软件源。
稳定源(基础源):官方维护的核心软件包,如系统组件、常用稳定工具(如 CentOS 的 BaseOS、AppStream),适合生产环境。
扩展源(额外源):社区或第三方提供的非核心软件包(如 EPEL 源的 nginx、Docker 官方源),用于补充功能。
扩展软件源包含稳定软件源的新版本,部分的新版本在经过时间的验证后,会迁移到稳定源里。
在这里插入图片描述

二、编辑器Vim

vim是一个专注的编辑器,多模式的编辑器
vim的模式:
在这里插入图片描述
默认打开vim就是命令模式,命令模式是vim的核心和精华。命令模式存在的意义就是提高代码编写的效率。
注意:插入模式和底行模式是不能进行切换的,需要先切换到命令模式再做切换。
如果不知道自己所处什么模式,可以无脑esc键,再做切换,因为命令模式可以切换到任意模式。

1. 命令模式

gg:光标定位到最开始
shift + g = G:光标定位到最结尾
某个数字 + gg:光标定位到某行最开始
某个数字 + shift + g:光标定位到某行最结尾
shift + 4 = $:光标定位到当前行末尾
shift + 6 = ^:光标定位到当前行开头(内容的最开头,不包含空格)
H(左键),J(下键,jump跳下去),K(上键,king高高在上),L(右键)
我们现在的键盘不是有上下左右键吗,为什么要用HJKL呢?
答:老式键盘里没有上下左右键。
在这里插入图片描述在这里插入图片描述
数字n + w / b:光标以单词为单位进行前 / 后移动

其他命令:
yy:复制当前行
n + yy:复制n行
p:把复制的内容粘贴到当前行的下一行
n + p:粘贴n行
u:撤销(undo)
ctrl + r:反撤销,对u进行撤销
注意:撤销和反撤销,在退出vim后再重新打开就无法操作了,不会保存关闭之前的历史操作,只要不退出vim就一直可以撤销操作。
dd:剪切当前行,或者说是删除当前行(不再粘贴了,那不就是删除了嘛)
n + dd:剪切n行
x:删除光标所在字符
n + x:向后删除n个字符,包括光标内的内容
X:删除光标之前的一个字符
n + X:删除光标之前的n个字符,不包括光标内的内容
shift + ` (esc下面的按键)= ~:快速大小写转换
n + r:向后选中包括光标在内的n个字符,(小范围文本选中,可以进行替换操作)
shift + r = R:切换到替换模式,从现在开始,所有输入都替换原有内容

aio:从命令模式切换到插入模式,a切换到插入模式,并且光标向后移动一位;o切换到插入模式,并且新起一行,光标移动到下一行开头

shift + zz:保存并退出vim
底行模式:
w:保存
q:退出vim
wq:保存并退出vim
!:表示强制操作,可以和上面三个操作合并
set nu:设置行号
set nonu:取消行号

/{关键词}:从当前位置向下搜索包含 {关键词} 的内容。
?{关键词}:从当前位置向上搜索包含 {关键词} 的内容。
n:跳转至下一个搜索结果(与 / 配合向下搜索时使用)。
N:跳转至上一个搜索结果(与 ? 配合向上搜索时使用或反向导航)。
!{指令}:临时执行 Shell 命令
vs 文件名:分屏显示另一个文件
ctrl + ww:光标切换到下一个文件

补充一些实用命令:
ctrl + v:切换到视图模式
可以直接从视图模式shirf + i直接切换到插入模式
操作示例,批量化注释操作:

  1. ctrl + v切换到视图模式

  2. hjkl选中目标区域
    在这里插入图片描述

  3. shift + i切换到插入模式

  4. //进行注释
    在这里插入图片描述

  5. Esc切换到命令模式,自动就批量化注释好了
    在这里插入图片描述

注释文件中全部内容如何操作?

  1. gg光标移动到最开始
  2. ctrl + v视图模式
  3. shift + g光标移动到最结尾
  4. shift + i切换到插入模式
  5. //注释
  6. Esc切换到命令模式,自动批量化注释
    在这里插入图片描述

批量化去注释:

  1. ctrl + v
  2. hjkl:选中区域,注意这里需要选中两列
  3. d:删除

事实上视图模式下,不止能进行注释操作,他本是上就是对文本的批量化编辑操作,批量化注释的本质就是批量化给文本加上//,实际上还可以加上任意内容,如下:
我在hello world中间批量化加上了hello,操作和刚刚类似,这里便不做赘述。
在这里插入图片描述

底行模式命令
%s/原文本/新文本/[g]
把原文本替换成新文本,把前者替换成后者
g(global)加上g就替换所有的原文本,不加的话默认只替换每行的第一个原文本

命令行操作
当gcc编译时,已经明显的知道错误在第几行,可以在打开vim时+行号,这样打开vim时光标自动跳转到目标行
例如:vim test.c +15
在这里插入图片描述
在这里插入图片描述

! + 历史命令的开始符:执行以开始符开头的最近的历史命令。

修改vim配置文件
root用户下的vim配置一般不要修改,这里便不做讲解
在普通用户的家目录下,创建一个.vimrc 的隐藏文件,如果有就直接用

三、编译器gcc / g++

1. 程序编译流程

  1. 预处理(进行宏替换 / 去注释 / 条件编译 / 头文件展开等)
    指令:gcc -E test.c [-o test.i],如果不加-o选项,输出结果直接打印到显示器上,不方便我们查看,带上-o选项,所有输出结果写入到文件test.i中去。

-E选项,表示,从现在开始进行程序的翻译,做完预处理便停下来
可以看到,test.c中的M在test.i中被替换成了6(宏替换操作),test.c中的注释在test.i中被去除了,test.c中的条件编译在test.i中也被处理了,而且预处理后的test.i一下子变成了800多行代码,这是因为预处理进行了头文件展开。从下图可以直观的看出以上这些变化。
在这里插入图片描述

  1. 编译(生成汇编)
    把C语言翻译成汇编语言
    -S选项,表示,从现在开始进行程序的翻译,做完编译,形成汇编,便停下来
    在这里插入图片描述

  2. 汇编(生成机器可识别代码)
    -c选项,表示,从现在开始进行程序的翻译,汇编完成,便停下来
    在这里插入图片描述
    此时test.o已经变成了二进制文件,但它并不能执行,test.o叫做可重定位目标二进制文件
    在这里插入图片描述

  3. 链接(生成可执行文件或库文件)
    把我们的.o 文件和库文件进行链接,才能形成可执行文件
    gcc test.o -o test
    把test.o与库文件进行链接,形成可执行文件
    在这里插入图片描述
    程序翻译的过程巧记,-ESc,和键盘上左上角的按键字母相同,只需要记住S是大写的就好了。
    文件后缀分别为.iso,和镜像文件的后缀是相同的

补充知识:sudo无法执行的问题

首先切换到root
在这里插入图片描述
更改root下的/etc/sudoers文件即可让普通用户拥有sudo提权的能力
在这里插入图片描述
可以:set nu设置一下行号,在大约100行的位置可以看到如下内容,复制一下root所在行,粘贴一下,将用户名改成你的普通用户名就可以了。
在这里插入图片描述

补充知识:理解条件编译

条件编译有什么用呢?
我们用过许多软件,例如爱奇艺,腾讯视频,再比如剪映,等等,这些软件都分为基础版和专业版,视频软件就是将用户分为普通用户和VIP用户,那么这些公司在维护底层代码的时候是维护一份代码还是两份代码呢,普通用户一份,VIP用户一份?
答案是:只维护一份代码,因为如果维护两份代码的话,当版本升级时所有的工作例如测试,更新代码,都需要进行双份工作,增加了人力。那一份代码是如何做到区分两个版本的呢?
答案是:条件编译,条件编译通过预处理器指令(如 #ifdef、#if)在同一代码库中实现功能裁剪,是软件多版本维护的核心技术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2383832.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCV计算机视觉实战(7)——色彩空间详解

OpenCV计算机视觉实战(7)——色彩空间详解 0. 前言1. RGB/BGR 色彩空间2. HSV / Lab 色彩空间3. 颜色直方图分析与可视化小结系列链接 0. 前言 本文深入探讨了三种常见色彩空间:RGB/BGR、HSV 与 CIELAB,并介绍了 OpenCV 中色彩空…

【AI模型学习】上/下采样

文章目录 分割中的上/下采样下采样SegFormer和PVT(使用卷积)Swin-Unet(使用 Patch Merging) 上采样SegFormer(interpolate)Swin-Unet(Patch Expanding)逐级interpolate的方式反卷的方…

Unity Shader入门(更新中)

参考书籍:UnityShader入门精要(冯乐乐著) 参考视频:Bilibili《Unity Shader 入门精要》 写在前面:前置知识需要一些计算机组成原理、线性代数、Unity的基础 这篇记录一些学历过程中的理解和笔记(更新中&…

嵌入式学习的第二十六天-系统编程-文件IO+目录

一、文件IO相关函数 1.read/write cp #include <fcntl.h> #include <sys/stat.h> #include <sys/types.h> #include <stdio.h> #include<unistd.h> #include<string.h>int main(int argc, char **argv) {if(argc<3){fprintf(stderr, …

珠宝课程小程序源码介绍

这款珠宝课程小程序源码&#xff0c;基于ThinkPHPFastAdminUniApp开发&#xff0c;功能丰富且实用。ThinkPHP提供稳定高效的后台服务&#xff0c;保障数据安全与处理速度&#xff1b;FastAdmin助力快速搭建管理后台&#xff0c;提升开发效率&#xff1b;UniApp则让小程序能多端…

KNN模型思想与实现

KNN算法简介 核心思想&#xff1a;通过样本在特征空间中k个最相似样本的多数类别来决定其类别归属。"附近的邻居确定你的属性"是核心逻辑 决策依据&#xff1a;采用"多数表决"原则&#xff0c;即统计k个最近邻样本中出现次数最多的类别 样本相似性度量 …

fscan教程1-存活主机探测与端口扫描

实验目的 本实验主要介绍fscan工具信息收集功能&#xff0c;对同一网段的主机进行存活探测以及常见服务扫描。 技能增长 通过本次实验的学习&#xff0c;了解信息收集的过程&#xff0c;掌握fscan工具主机探测和端口扫描功能。 预备知识 fscan工具有哪些作用&#xff1f; …

腾讯2025年校招笔试真题手撕(三)

一、题目 今天正在进行赛车车队选拔&#xff0c;每一辆赛车都有一个不可以改变的速度。现在需要选取速度差距在10以内的车队&#xff08;车队中速度的最大值减去最小值不大于10&#xff09;&#xff0c;用于迎宾。车队的选拔按照的是人越多越好的原则&#xff0c;给出n辆车的速…

怎样通过神经网络估计股票走向

本博文将教会你如何通过神经网络建立股票模型并对其进行未来趋势估计&#xff0c;尽管博主已通过此方法取得一定利润&#xff0c;但是建议大家不要过分相信AI。本博文仅用于代码学习&#xff0c;请大家谨慎投资。 一、通过爬虫爬取股票往年数据 在信息爆炸的当今时代&#xf…

【RocketMQ 生产者和消费者】- 生产者启动源码-上报生产者和消费者心跳信息到 broker(3)

文章目录 1. 前言2. sendHeartbeatToAllBrokerWithLock 上报心跳信息3. prepareHeartbeatData 准备心跳数据4. sendHearbeat 发送心跳上报请求5. broker 处理心跳请求5.1 heartBeat 处理心跳包5.2 createTopicInSendMessageBackMethod 创建重传 topic5.3 registerConsumer 注册…

Python----循环神经网络(Word2Vec的优化)

一、负采样 基本思想&#xff1a; 在训练过程中&#xff0c;对于每个正样本&#xff08;中心词和真实上下文词组成的词对&#xff09;&#xff0c;随机采样少量&#xff08;如5-20个&#xff09;负样本&#xff08;中心词与非上下文词组成的词对&#xff09;。 模型通过区分正…

Simon J.D. Prince《Understanding Deep Learning》

学习神经网络和深度学习推荐这本书&#xff0c;这本书站位非常高&#xff0c;且很多问题都深入剖析了&#xff0c;甩其他同类书籍几条街。 多数书&#xff0c;不深度分析、没有知识体系&#xff0c;知识点零散、章节之间孤立。还有一些人Tian所谓的权威&#xff0c;醒醒吧。 …

开搞:第四个微信小程序:图上县志

原因&#xff1a;我换了一个微信号来搞&#xff0c;因为用同一个用户&#xff0c;备案只能一个个的来。这样不行。所以我换了一个。原来注册过小程序。现在修改即可。注意做好计划后&#xff0c;速度备案和审核&#xff0c;不然你时间浪费不起。30元花起。 结构&#xff1a; -…

Seata源码—7.Seata TCC模式的事务处理一

大纲 1.Seata TCC分布式事务案例配置 2.Seata TCC案例服务提供者启动分析 3.TwoPhaseBusinessAction注解扫描源码 4.Seata TCC案例分布式事务入口分析 5.TCC核心注解扫描与代理创建入口源码 6.TCC动态代理拦截器TccActionInterceptor 7.Action拦截处理器ActionIntercept…

【语法】C++的map/set

目录 平衡二叉搜索树 set insert() find() erase() swap() map insert() 迭代器 erase() operator[] multiset和multimap 在之前学习的STL中&#xff0c;string&#xff0c;vector&#xff0c;list&#xff0c;deque&#xff0c;array都是序列式容器&#xff0c;它们的…

vue vite textarea标签按下Shift+Enter 换行输入,只按Enter则提交的实现思路

注意input标签不能实现&#xff0c;需要用textarea标签 直接看代码 <template><textareav-model"message"keydown.enter"handleEnter"placeholder"ShiftEnter 换行&#xff0c;Enter 提交"></textarea> </template>&l…

深入理解 PlaNet(Deep Planning Network):基于python从零实现

引言&#xff1a;基于模型的强化学习与潜在动态 基于模型的强化学习&#xff08;Model-based Reinforcement Learning&#xff09;旨在通过学习环境动态的模型来提高样本效率。这个模型可以用来进行规划&#xff0c;让智能体在不需要与真实环境进行每一次决策交互的情况下&…

仿腾讯会议——视频发送接收

1、 添加音频模块 2、刷新图片&#xff0c;触发重绘 3、 等比例缩放视频帧 4、 新建视频对象 5、在中介者内定义发送视频帧的函数 6、完成发送视频的函数 7、 完成开启/关闭视频 8、绑定视频的信号槽函数 9、 完成开启/关闭视频 10、 完成发送视频 11、 完成刷新图片显示 12、完…

从3.7V/5V到7.4V,FP6291在应急供电智能门锁中的应用

在智能家居蓬勃发展的当下&#xff0c;智能门锁以其便捷、安全的特性&#xff0c;成为现代家庭安防的重要组成部分。在智能门锁电量耗尽的情况下&#xff0c;应急电源外接移动电源&#xff08;USB5V输入&#xff09; FP6291升压到7.4V供电可应急开锁。增强用户在锁具的安全性、…

【人工智障生成日记1】从零开始训练本地小语言模型

&#x1f3af; 从零开始训练本地小语言模型&#xff1a;MiniGPT TinyStories&#xff08;4090Ti&#xff09; &#x1f9ed; 项目背景 本项目旨在以学习为目的&#xff0c;从头构建一个完整的本地语言模型训练管线。目标是&#xff1a; ✅ 不依赖外部云计算✅ 完全本地运行…