当前位置: 首页 > news >正文

Linux —— nfs文件系统

简介

  NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。

  NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。

  NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。

参考:https://www.cnblogs.com/mchina/archive/2013/01/03/2840040.html

网站数据的一致性--》NFS服务器
压力测试--》ab
监控 --》zabbix

为什么需要nfs服务器?
  保障网站数据的一致性--》不管负载均衡器将请求分配到那台后端的服务器,客户机看到的内容是一样。


nfs服务器是否是最佳的解决方法?
  答案: 不是的
        nfs是比较廉价的解决方法,一般的公司不会采用,性能不是特别棒,建议使用专用的存储服务器。

存储服务器 

SAN
  优点:读写性能好,有灾备
    SAN:区域存储网络
    存储区域网络(Storage Area Network,简称SAN)采用网状通道(Fibre Channel ,简称FC,区别与Fiber Channel光纤通道)技术,通过FC交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。

  缺点: 需要一笔费用

NAS

NAS(Network Attached Storage)网络存储基于标准网络协议实现数据传输,为网络中的Windows / Linux / Mac OS 等各种不同操作系统的计算机提供文件共享和数据备份。
        比较便宜使用tcp/ip网络协议,在日常的生活和工作里使用,例如:可以将所有手机,电脑里的图片集中存储。
        小型带系统的存储设备


nfs是什么?
 网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。

nfs解决了什么问题?
  数据同源: 到同一个地方去拿数据,保障数据的一致性

nfs的优点和缺点
  优点: 随便一台linux服务器都可以搭建,成本非常低,构建非常容易
  缺点: 读取速度有限,跟网络质量,磁盘IO,cpu,内存等因素有关,在传统的tcp/ip网络上传输的
 

原理

 权限的选项

[root@nfs-server ~]# vim /etc/exports/web  192.168.0.0/24(rw,all_squash,sync)
/web  是我们共享的文件夹的路径--》使用绝对路径
192.168.0.0/24 允许过来访问的客户机的ip地址网段
(rw,all_squash,sync) 表示权限的限制 rw 表示可读可写 read and  writero 表示只能读  read-onlyall_squash :任何客户机上的用户过来访问的时候,都把它认为是普通的用户root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器匿名用户no_root_squash  当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员sync  同时将数据写入到内存与硬盘中,保证不丢失数据async 优先将数据保存到内存,然后再写入硬盘,效率更高,但可能丢失数据

搭建过程

1.安装nfs的相关软件
[root@nfs-server ~]# yum install nfs-utils -y
2.启动nfs-server服务
[root@nfs-server ~]# service nfs-server stop
Redirecting to /bin/systemctl stop nfs-server.service
[root@nfs-server ~]# service nfs-server start
Redirecting to /bin/systemctl start nfs-server.service
[root@nfs-server ~]# service nfs-server restart
Redirecting to /bin/systemctl restart nfs-server.service
[root@nfs-server ~]#[root@nfs-server ~]# ps aux|grep nfs
root         431  0.0  0.0      0     0 ?        I    8月01   0:01 [kworker/u128:4-nfsd4]
root         833  0.0  0.3  50304  2932 ?        Ss   8月01   0:00 /usr/sbin/nfsdcld
root        5311  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5312  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5313  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5314  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5315  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5316  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5317  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5318  0.0  0.0      0     0 ?        S    11:02   0:00 [nfsd]
root        5326  0.0  0.1  12320   992 pts/0    S+   11:03   0:00 grep --color=auto nfs
[root@nfs-server ~]#3.原理部分:
nfs服务和rpc到底是如何实现的呢?工作原理ssh-->22
nginx -->80
mysql -->3306时我们就得需要远程过程调用 (RPC) 的服务啦!RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且回报给客户端,让客户端可以连结到正确的端口上去。 那 RPC 又是如何知道每个 NFS 的端口呢?这是因为当服务器在启动 NFS 时会随机取用数个端口,并主动的向 RPC 注册,因此 RPC 可以知道每个端口对应的 NFS 功能。nfs自己并没有去对外监听某个端口号,而是外包给了rpc服务,rpc帮助nfs去监听端口,然后告诉客户机和本机的那个进程对应的端口连续[root@nfs-server ~]# netstat -anplut|grep nfs
[root@nfs-server ~]# netstat -anplut|grep rpc  查看rpc服务相关的端口
tcp        0      0 0.0.0.0:35503           0.0.0.0:*               LISTEN      960/rpc.statd       
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      5304/rpc.mountd     
tcp6       0      0 :::20048                :::*                    LISTEN      5304/rpc.mountd     
tcp6       0      0 :::42099                :::*                    LISTEN      960/rpc.statd       
udp        0      0 0.0.0.0:20048           0.0.0.0:*                           5304/rpc.mountd     
udp        0      0 127.0.0.1:717           0.0.0.0:*                           960/rpc.statd       
udp        0      0 0.0.0.0:42974           0.0.0.0:*                           960/rpc.statd       
udp6       0      0 :::20048                :::*                                5304/rpc.mountd     
udp6       0      0 :::43399                :::*                                960/rpc.statd       
[root@nfs-server ~]# 4.共享文件,编辑/etc/exports文件,写好具体的共享的目录和权限
/etc/exports
[root@nfs-server ~]# vim /etc/exports/web  192.168.0.0/24(rw,all_squash,sync)
/web  是我们共享的文件夹的路径--》使用绝对路径   --》需要自己新建
192.168.0.0/24 允许过来访问的客户机的ip地址网段
(rw,all_squash,sync) 表示权限的限制 rw 表示可读可写 read and  writero 表示只能读  read-onlyall_squash :任何客户机上的用户过来访问的时候,都把它认为是普通的用户root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器匿名用户no_root_squash  当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员sync  同时将数据写入到内存与硬盘中,保证不丢失数据async 优先将数据保存到内存,然后再写入硬盘,效率更高,但可能丢失数据
[root@nfs-server ~]# mkdir /web
[root@nfs-server ~]# cd /web
[root@nfs-server web]#vim   index.html  创建首页文件
index.html [root@nfs-server web]# cat index.html 
sanchuang
fengdeyong  xuzizhen  zhangrenjie
[root@nfs-server web]# 
5.刷新输出文件的列表
[root@nfs-server web]# exportfs -rv
exporting 192.168.0.0/24:/web
[root@nfs-server web]# [root@nfs-server web]# cat /etc/exports
/web  192.168.0.0/24(rw,all_squash,sync)
/download  192.168.0.0/24(rw,all_squash,sync)
/download  192.168.0.190(rw,all_squash,sync)
/download  192.168.0.192(rw,all_squash,sync)
/download  192.168.0.180(rw,all_squash,sync)
[root@nfs-server web]# 
[root@nfs-server web]# mkdir /download   新建/download
[root@nfs-server web]# exportfs -rv
exporting 192.168.0.190:/download
exporting 192.168.0.192:/download
exporting 192.168.0.180:/download
exporting 192.168.0.0/24:/download
exporting 192.168.0.0/24:/web
[root@nfs-server web]# 
复制一点点数据到/download目录下
[root@nfs-server download]# cp /etc/hosts  .
[root@nfs-server download]# tar czf boot.tar.gz  /boot 
tar: 从成员名中删除开头的“/”[root@nfs-server download]# 
[root@nfs-server download]# ls
boot.tar.gz  hosts
[root@nfs-server download]#5.建议关闭防火墙和selinux[root@nfs-server download]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@nfs-server download]# systemctl disable firewalld
[root@nfs-server download]# getenforce 
Disabled
[root@nfs-server download]# 在客户机上挂载nfs服务器上共享的/web和/download目录
[root@web-server2 ~]# yum install nfs-utils -y  安装nfs-utils软件,方便客户机上进行挂载,具有了相关命令了,例如:showmount
[root@web-server2 ~]# showmount -e 192.168.0.139  查看nfs服务器上共享输出了哪些文件夹
Export list for 192.168.0.139:
/web      192.168.0.0/24
/download 192.168.0.0/24
[root@web-server2 ~]# 挂载nfs服务器上的目录到本机上
[root@web-server2 ~]# mkdir   /web  在客户机的本地新建一个目录/web
[root@web-server2 ~]# mount 192.168.0.139:/web   /web  将nfs服务器上的/web目录挂载到本地的/web目录,今后访问本地的/web目录,就是访问到nfs服务器上的/web目录
mount 是挂载的命令,可以理解为一种映射语法:  mount   nfs服务器的目录    本地的目录[root@web-server2 ~]# cd /web
[root@web-server2 web]# ls
index.html
[root@web-server2 web]# ls
index.html  sc.txt
[root@web-server2 web]#[root@web-server2 web]# mkdir /download
[root@web-server2 web]# mount 192.168.0.139:/download   /download
[root@web-server2 web]# cd /download/
[root@web-server2 download]# ls
boot.tar.gz  hosts
[root@web-server2 download]# 客户机上能否有写的权限要看2种权限:1.共享权限 --》/etc/exports文件里的权限,例如ro,rw2.文件系统里的权限  --》/web 在linux里的权限[root@nfs-server web]# ll -d /web
drwxrwxrwx. 3 root root 56 8月   2 11:55 /web
[root@nfs-server web]# ll -d /download
drwxr-xr-x 2 root root 38 8月   2 11:44 /download        ---》nfs客户机挂载后,没有写的权限,因为其他人没有w权限
[root@nfs-server web]# 在nfs服务器上授权
[root@nfs-server web]# chmod a+w /download/
[root@nfs-server web]# ll -d /download
drwxrwxrwx 2 root root 38 8月   2 11:44 /download
[root@nfs-server web]# 在客户机上验证
[root@web-server2 web]# cd /download/
[root@web-server2 download]# mkdir fengdeyong
[root@web-server2 download]# ls
boot.tar.gz  fengdeyong  hosts
[root@web-server2 download]# 后端的real-server到底要把nfs服务器共享的目录挂载到哪里?用户才能看到一样的数据nginx安装目录下的html --》编译安装的[root@web-server2 sczhengbo99]# mount 192.168.0.139:/web /usr/local/sczhengbo99/html/
[root@web-server2 sczhengbo99]# cd /usr/local/sczhengbo99/html/
[root@web-server2 html]# ls
fengdeyong  index.html  sc.txt
[root@web-server2 html]# 

相关命令和文件

mount   挂载

exportfs -rv   相当于重启nfs服务,让修改的/etc/exports文件生效

/etc/exports    共享目录的配置文件

umount   卸载

开机自动挂载nfs文件系统

1. /etc/rc.local

mount  192.168.0.139:/web   /usr/local/sczhengbo/html 

chmod +x /etc/rc.d/rc.local 

2.修改/etc/fstab文件,也可以自动挂载

  /etc/fstab 是linux系统开机会自动根据这个文件里的内容挂载磁盘分区
  fstab  -->file  system  table

192.168.0.139:/web   /usr/local/sczhengbo99/html  nfs    defaults  0 0
192.168.0.139:/web   挂载的分区--》nfs的文件系统
 /usr/local/sczhengbo/html 在本地的挂载点

 nfs 文件系统的类型

 defaults  挂载的选项,使用默认
 0 是否支持dump命令进行备份
 0 是否开机的时候进行分区的文件系统的检查,分区的文件系统是否有问题

相关文章:

Linux —— nfs文件系统

简介 NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位…...

数据降维 | MATLAB实现T-SNE降维特征可视化

数据降维 | MATLAB实现T-SNE降维特征可视化 目录 数据降维 | MATLAB实现T-SNE降维特征可视化降维效果基本描述程序设计参考资料 降维效果 基本描述 T-SNE降维特征可视化,MATLAB程序。 T-分布随机邻域嵌入,主要用途是对高维数据进行降维并进行可视化&…...

蓝桥杯上岸每日N题 (交换瓶子)

大家好 我是寸铁 希望这篇题解对你有用,麻烦动动手指点个赞或关注,感谢您的关注 题目描述 有 N 个瓶子,编号 1∼N,放在架子上。 比如有 5 个瓶子: 2 1 3 5 4 要求每次拿起 2 个瓶子,交换它们的位置。 …...

GMS基本模块TIN、Solids、Modflow2000/2005、MT3DMS、MODPATH。及其在地下水流动、溶质运移、粒子追踪方面的应用

解决地下水数值模拟技术实施过程中遇到的困难,从而提出切实可行的环境保护措施,达到有效保护环境、防治地下水污染,推动经济社会可持续发展的目的。 (1)水文地质学,地下水数值模拟基础理论;&am…...

MySQL数据库中间件Mycat介绍及下载安装(教程)

一,介绍 MyCat是开源的、活跃的、基于Java语言编写的MySQL数据库中间件。可以像使用MySQL一样来使用MyCat,对于开发人员来说根本感觉不到MyCat的存在。 开发人员只需要连接MyCat即可,而具体底层用到几台数据库,每一台数据库服务器…...

【VMware】CentOS 设置静态IP(Windows 宿主机)

文章目录 1. 更改网络适配器设置2. 配置虚拟网络编辑器3. 修改 CentOS 网络配置文件4. ping 测试结果 宿主机:Win11 22H2 虚拟机:CentOS-Stream-9-20230612.0 (Minimal) 1. 更改网络适配器设置 Win R:control 打开控制面板 依次点击&#x…...

机器学习十大算法之七——随机森林

0 引言 集成学习(ensemble learning)是时下非常流行的机器学习算法,它本身不是一个单独的机器学习算法,而是通过在数据上构建多个横型,集成所有模型的建模结果,基本上所有的机器学习领域都可以看到集成学习…...

spring boot 3使用 elasticsearch 提供搜索建议

业务场景 用户输入内容&#xff0c;快速返回建议&#xff0c;示例效果如下 技术选型 spring boot 3elasticsearch server 7.17.4spring data elasticsearch 5.0.1elasticsearch-java-api 8.5.3 pom.xml <dependency><groupId>org.springframework.boot</gr…...

住宅IP:解锁更快速、稳定的互联网,你准备好了吗?

随着互联网的广泛普及&#xff0c;我们对网络的需求也越来越高。无论是工作、学习还是娱乐&#xff0c;我们都希望能够享受到更快速、稳定的互联网连接。而在实现这一目标的过程中&#xff0c;住宅IP正逐渐崭露头角&#xff0c;成为了一种备受关注的解决方案。那么&#xff0c;…...

支持dolby vision的盒子接支持dolby vision的电视,在adaptive hdr时,播放非dv的hdr视频,输出sdr

支持dolby vision的盒子接支持dolby vision的电视&#xff0c;setting选择adaptive hdr&#xff0c;按照这个配置在播放非dv的hdr视频时&#xff0c;会输出sdr。 看起来是很不合理的&#xff0c;高级的产品播放高级的片源&#xff0c;却输出低级的画质。 想要搞清楚这个问题&am…...

使用ffmpeg将WebM文件转换为MP4文件的简单应用程序

tiktok网上下载的short视频是webm格式的&#xff0c;有些程序无法处理该程序&#xff0c;比如roop程序&#xff0c;本文介绍了如何使用wxPython库创建一个简单的GUI应用程序&#xff0c;用于将WebM文件转换为MP4文件。这个应用程序使用Python编写&#xff0c;通过调用FFmpeg命令…...

Prompt-“设计提示模板:用更少数据实现预训练模型的卓越表现,助力Few-Shot和Zero-Shot任务”

Prompt任务&#xff08;Prompt Tasks&#xff09; 通过设计提示&#xff08;prompt&#xff09;模板&#xff0c;实现使用更少量的数据在预训练模型&#xff08;Pretrained Model&#xff09;上得到更好的效果&#xff0c;多用于&#xff1a;Few-Shot&#xff0c;Zero-Shot 等…...

玩转Mysql系列 - 第6篇:select查询基础篇

这是Mysql系列第6篇。 环境&#xff1a;mysql5.7.25&#xff0c;cmd命令中进行演示。 DQL(Data QueryLanguage)&#xff1a;数据查询语言&#xff0c;通俗点讲就是从数据库获取数据的&#xff0c;按照DQL的语法给数据库发送一条指令&#xff0c;数据库将按需求返回数据。 DQ…...

【SpringCloud技术专题】「Gateway网关系列」(1)微服务网关服务的Gateway组件的原理介绍分析

为什么要有服务网关? 我们都知道在微服务架构中&#xff0c;系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢&#xff1f;难道要一个个的去调用吗&#xff1f;很显然这是不太实际的&#xff0c;我们需要有一个统一的接口与这些微服务打交道&#xf…...

【面试刷题】————STL中的vector是如何实现的?

STL&#xff08;Standard Template Library&#xff09;是C标准库中的一部分&#xff0c;它提供了许多常用的数据结构和算法&#xff0c;其中包括了动态数组 vector。 vector std::vector 是一个动态数组&#xff0c;它能够自动调整自己的大小&#xff0c;以适应存储元素的需…...

使用钉钉的扫码会出现多个回调(DTFrameLogin)

官方&#xff1a;地址 标题 出现的问题解决后效果正常使用(按照官网的流程进行使用)自己的理解(路人可忽略该内容&#xff01;) 出现的问题 1692861955468 解决后效果 1692861665687 正常使用(按照官网的流程进行使用) fn.js 该文件就是钉钉官网的js文件&#xff0c;我下载到了…...

Android | 关于 OOM 的那些事儿

作者&#xff1a;345丶 前言 Android 系统对每个app都会有一个最大的内存限制&#xff0c;如果超出这个限制&#xff0c;就会抛出 OOM&#xff0c;也就是Out Of Memory 。本质上是抛出的一个异常&#xff0c;一般是在内存超出限制之后抛出的。最为常见的 OOM 就是内存泄露(大量…...

珠玑妙算游戏

珠玑妙算游戏&#xff0c;OJ练习 一、描述二、方法一三、方法二 一、描述 珠玑妙算游戏&#xff08;the game of master mind&#xff09;的玩法如下&#xff1a; 计算机有4个槽&#xff0c;每个槽放一个球&#xff0c;颜色可能是红色&#xff08;R&#xff09;、黄色&#xf…...

【rust语言】rust多态实现方式

文章目录 前言一、多态二、rust实现多态trait的静态方式还有一种方式可以通过动态分发&#xff0c;还以上面那段代码&#xff0c;比如dyn关键字 泛型方式枚举方式优点&#xff1a;缺点&#xff1a; 总结 前言 学习rust当中遇到了这个问题&#xff0c;记录一下&#xff0c;不对…...

两年半机场,告诉我如何飞翔

为说明如何坐飞机离港&#xff0c;故此记录一篇。何为离港&#xff0c;顾名思义&#xff0c;离开港湾&#xff0c;那何为港湾&#xff0c;便是机场。 机场&#xff0c;一个你可能经常去&#xff0c;亦或不曾去之地。我想&#xff0c;管你去没去过&#xff0c;先说下怎么去&…...

手把手教你用NEWLab搭建智能温控系统(附完整代码)

手把手教你用NEWLab搭建智能温控系统&#xff08;附完整代码&#xff09; 在智能家居和工业自动化领域&#xff0c;温度控制始终是核心需求之一。无论是保持室内舒适环境&#xff0c;还是确保精密设备的稳定运行&#xff0c;一套可靠的温控系统都不可或缺。对于物联网初学者和…...

AI做表工具三强对决:Excel-Agent、ChatExcel、Excel 原生 Agent,谁才是职场数据处理真王者?

当 AI 遇上 Excel&#xff0c;传统制表、数据清洗、复杂分析的低效困局被彻底打破。当前市场上&#xff0c;Excel-Agent、ChatExcel、Excel 原生 Agent 模式 是 AI 表格领域的三大主流选择&#xff0c;但三者在技术逻辑、使用体验、数据安全、实战效能上差异显著。作为专为 Exc…...

LightOnOCR-2-1B部署指南:快速搭建你的私有OCR识别服务

LightOnOCR-2-1B部署指南&#xff1a;快速搭建你的私有OCR识别服务 1. 认识LightOnOCR-2-1B 你是否遇到过需要从大量图片中提取文字的场景&#xff1f;比如扫描的合同、拍照的会议记录&#xff0c;或者历史档案数字化&#xff1f;传统的OCR解决方案要么识别准确率不高&#x…...

别再只会复制代码了!用CubeMX配置STM32F407的PWM驱动TB6612,从原理到实战一次搞懂

从零构建PWM电机控制系统&#xff1a;STM32F407与TB6612的深度实践指南 引言&#xff1a;为什么你需要摆脱复制粘贴的陷阱 在实验室里&#xff0c;我见过太多学生面对电机控制项目时的第一反应——打开搜索引擎&#xff0c;寻找"STM32 PWM驱动电机代码"&#xff0c;然…...

丹青识画与Unity引擎结合:打造沉浸式虚拟博物馆体验

丹青识画与Unity引擎结合&#xff1a;打造沉浸式虚拟博物馆体验 想象一下&#xff0c;你漫步在一个精心构建的虚拟博物馆里&#xff0c;墙上挂着梵高的《星月夜》、达芬奇的《蒙娜丽莎》。你被一幅画深深吸引&#xff0c;举起手机&#xff08;在虚拟世界里&#xff09;&#x…...

宝藏分享!实用AI写教材工具,快速产出低查重专业教材!

AI写教材工具&#xff1a;提升创作效率的利器 在撰写教材的过程中&#xff0c;总会遇到一种令人沮丧的“慢节奏”。尽管框架与资料已经准备就绪&#xff0c;内容创作却常常陷入困境&#xff1a;一句话反复推敲数十分钟&#xff0c;还是觉得表达不够完美&#xff1b;章节间的衔…...

如何用ViGEmBus实现Windows内核级游戏手柄模拟:架构解析与实践指南

如何用ViGEmBus实现Windows内核级游戏手柄模拟&#xff1a;架构解析与实践指南 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus是一款Windows内核模…...

FreeRTOS定时器防抖实战:用STM32 HAL库+按键中断,告别按键连击烦恼

FreeRTOS定时器防抖实战&#xff1a;用STM32 HAL库按键中断&#xff0c;告别按键连击烦恼 在嵌入式开发中&#xff0c;按键处理看似简单却暗藏玄机。我曾在一个智能家居项目中遇到这样的尴尬场景&#xff1a;用户按下墙壁开关时&#xff0c;本该只触发一次的动作&#xff0c;由…...

Phi-3-mini-128k-instruct低资源部署效果:4GB显存流畅运行实测

Phi-3-mini-128k-instruct低资源部署效果&#xff1a;4GB显存流畅运行实测 最近在折腾一些边缘设备上的AI应用&#xff0c;发现一个挺有意思的现象&#xff1a;很多开发者手头只有一些“古董级”的显卡&#xff0c;比如GTX 1650或者移动端的MX系列&#xff0c;显存也就4GB左右…...

从零到部署:手把手教你用Django+OpenCV搭建一个能识别交通标志的“智能眼”(附完整源码)

实战指南&#xff1a;用DjangoOpenCV构建高精度交通标志识别系统 1. 环境配置与项目初始化 在开始构建交通标志识别系统前&#xff0c;需要准备完善的开发环境。以下是经过验证的配置方案&#xff1a; 核心工具栈选择&#xff1a; Python 3.9&#xff08;推荐3.10.6版本&#x…...