Linux(一)Linux理论

文章目录

    • 一、Linux概述
      • 1.1 体系结构
        • 1.1.1 Linux内核
        • 1.1.2 用户态与内核态
        • 1.1.3 交换空间
        • 1.1.4 CLI和GUI
      • 1.2 开机启动过程
      • 1.3 系统运行级别
      • 1.4 Linux进程
        • 1.4.1 Linux进程通信的方法
        • 1.4.2 Linux进程状态
    • 二、文件
      • 2.1 Linux文件系统
      • 2.2 目录结构
      • 2.3 绝对路径和相对路径
      • 2.4 日志文件
      • 2.5 inode
      • 2.6 硬链接和软链接
    • 三、Shell
      • 3.1 变量类型
      • 3.2 if语句
      • 3.3 数字比较
      • 3.4 case语句
      • 3.5 for语句
      • 3.6 while语句
      • 3.7 函数
      • 3.8 执行Shell脚本的两种方式
      • 3.9 数学运算

一、Linux概述

  Linux是一套免费使用的类Unix操作系统,是一个基于POSIX(Portable Operating System Interface,是IEEE为要在各种UNIX操作系统上运行软件,而定义API的一系列互相关联的标准的总称)和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。
  Linux支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统
  Linux内核主要负责的功能:系统内存管理、软件程序管理、硬件设备管理、文件系统管理。
  Linux和Unix的区别:

LinuxUnix
开源性一款开源操作系统,不需要付费,即可使用一款对源码实行知识产权保护的传统商业软件,使用需要付费授权使用
跨平台性具有良好的跨平台性能,可运行在多种硬件平台上跨平台性能较弱,大多需与硬件配套使用
可视化界面除了进行命令行操作,还有窗体管理系统只是命令行下的系统
硬件环境对硬件的要求较低,安装方法更易掌握对硬件要求比较苛刻,安装难度较大
用户群体用户群体很广泛,个人和企业均可使用用户群体比较窄,多是安全性要求高的大型企业使用,如银行、电信部门等,或者Unix硬件厂商使用,如Sun等

1.1 体系结构

  从大的方面讲,Linux 体系结构可以分为两块:

  用户空间(User Space) :用户空间又包括用户的应用程序(User Applications)、C 库(C Library) 。
  内核空间(Kernel Space) :内核空间又包括系统调用接口(System Call Interface)、内核(Kernel)、平台架构相关的代码(Architecture-Dependent Kernel Code) 。

  • 为什么 Linux 体系结构要分为用户空间和内核空间
      现代CPU实现了不同的工作模式,不同模式下CPU可以执行的指令和访问的寄存器不同。
      Linux 从CPU的角度出发,为了保护内核的安全,把系统分成了两部分。

  用户空间和内核空间是程序执行的两种不同的状态,我们可以通过两种方式完成 用户空间到内核空间的转移:1)系统调用;2)硬件中断。

1.1.1 Linux内核

  操作系统的内核是操作系统的核心部分。它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理。
  Linux内核本身并不是操作系统,它是一个完整操作系统的组成部分。Linux发行商都采用Linux内核,然后加入更多的工具、库和应用程序来构建一个完整的操作系统。
  Linux内核的常见功能:

  • 1、进程管理
      内核负责创建和销毁进程,并处理它们与外部世界的联系(输入和输出)。不同进程间通讯(通过信号,管道,或者进程间通讯原语)对整个系统功能来说是基本的,也由内核处理。另外,调度器,控制进程如何共享CPU,是进程管理的一部分。更通常地,内核的进程管理活动实现了多个进程在一个单个或者几个CPU之上的抽象。
  • 2、内存管理
      计算机的内存是主要的资源,处理它所用的策略对系统性能是至关重要的。内核为所有进程的每一个都在有限的可用资源上建立了一个虚拟地址空间。内核的不同部分与内存管理子系统通过一套函数调用交互,从简单的malloc/free对到更多更复杂的功能。
  • 3、文件系统
      Unix在很大程度上基于文件系统的概念;几乎Unix中的任何东西都可看作一个文件。内核在非结构化的硬件之上建立了一个结构化的文件系统,结果是文件的抽象非常多地在整个系统中应用。
      另外,Linux支持多个文件系统类型,就是说,物理介质上不同的数据组织方式。例如,磁盘可被格式化成标准Linux的ext3文件系统,普遍使用的FAT文件系统,或者其他几个文件系统。
  • 4、设备控制
      几乎每个系统操作终都映射到一个物理设备上。除了处理器,内存和非常少的别的实体之外,全部中的任何设备控制操作都由特定于要寻址的设备相关的代码来进行,这些代码称为设备驱动.。内核中必须嵌入系统中出现的每个外设的驱动,,从硬盘驱动到键盘和磁带驱动器。内核功能的这个方面是本书中的我们主要感兴趣的地方。
  • 5、网络
      网络必须由操作系统来管理,因为大部分网络操作不是特定于某一个进程:进入系统的报文是异步事件。报文在某一个进程接手之前必须被收集,识别,分发。系统负责在程序和网络接口之间递送数据报文,它必须根据程序的网络活动来控制程序的执行。另外,所有的路由和地址解析问题都在内核中实现。
1.1.2 用户态与内核态

  Linux的体系架构:分为用户态与内核态。用户态与内核态与内核态是操作系统对执行权限进行分级后的不同的运行模式。
  在cpu的所有指令中,有些指令是非常危险的,如果使用不当,将会造成系统崩溃等后果。为了避免这种情况发生,cpu将指令划分为特权级(内核态)指令和非特权级(用户态)指令。对于那些危险的指令只允许内核及其相关模块调用,对于那些不会造成危险的指令,就允许用户应用程序调用。
  内核态(核心态,特权态):内核态是操作系统内核运行的模式。内核态控制计算机的硬件资源,如硬件设备,文件系统等等,并为上层应用程序提供执行环境。
  用户态: 用户态是用户应用程序运行的状态。应用程序必须依托于内核态运行,因此用户态的态的操作权限比内核态是要低的,如磁盘,文件等,访问操作都是受限的。
  系统调用: 系统调用是操作系统为应用程序提供能够访问到内核态的资源的接口。

  • 用户态切换到内核态的几种方式
      系统调用: 系统调用是用户态主动要求切换到内核态的一种方式,用户应用程序通过操作系统调用内核为上层应用程序开放的接口来执行程序。
      异常: 当cpu在执行用户态的应用程序时,发生了某些不可知的异常。于是当前用户态的应用进程切换到处理此异常的内核的程序中去。
      硬件设备的中断: 当硬件设备完成用户请求后,会向cpu发出相应的中断信号,这时cpu会暂停执行下一条即将要执行的指令,转而去执行与中断信号对应的应用程序,如果先前执行的指令是用户态下程序的指令,那么这个转换过程也是用户态到内核台的转换。

  物理内存RAM(Random Access Memory 随机存储器):物理内存是计算机的实际内存大小,它直接与CPU交换数据,也被称为主存。
  虚拟内存是操作系统为了更高效率使用物理内存的一种概念,它是对物理内存的抽象。Linux上的swap交换空间都是虚拟内存的一种实现技术

1.1.3 交换空间

  swap space是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是他们的组合。简单点说,当系统物理内存吃紧时,Linux会将内存中不常访问的数据保存到swap上,这样系统就有更多的物理内存为各个进程服务。当系统需要访问swap上存储的内容时,再将swap上的数据加载到内存中,这就是我们常说的swap out和swap in。
  简单理解: 当某个应用程序所需的内存空间不够了,那么系统会判断当前物理内存是否还有足够的空闲可以分配给应用程序。如果有,则应用程序直接进入内存运行;如果没有,系统就根据某种算法(如:LRU)挂起一个进程,将挂起的进程交换到虚拟内存Swap中等待,并将应用程序调入内存执行。虚拟内存是被虚拟出来的,可以使用硬盘(不仅仅是硬盘)来作为虚拟内存。这就是为什么当我们运行一个所需内存比我们计算机内存还大的程序时,仍然可以正常运行,并感受不到内存的限制的原因。

1.1.4 CLI和GUI
  • CLI
      命令行界面(command-line interface,CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。也有人称之为字符用户界面(CUI)。
      通常认为,命令行界面(CLI)没有图形用户界面(GUI)那么方便用户操作。因为,命令行界面的软件通常需要用户记忆操作的命令,但是,由于其本身的特点,命令行界面要较图形用户界面节约计算机系统的资源。在熟记命令的前提下,使用命令行界面往往要较使用图形用户界面的操作速度要快。所以,图形用户界面的操作系统中,都保留着可选的命令行界面。
  • GUI
      图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。
      图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。与通过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形用户界面有许多优点。

1.2 开机启动过程

  1. 主机加电自检,加载BIOS硬件信息。
  2. 读取MBR的引导文件(GRUB、LILO)。
  3. 引导Linux内核。
  4. 运行第一个进程init (进程号永远为1)。
  5. 进入相应的运行级别。
  6. 运行终端,输入用户名和密码。

1.3 系统运行级别

运行级别0系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2多用户状态(没有NFS)
运行级别3完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4系统未使用,保留
运行级别5X11控制台,登陆后进入图形GUI模式
运行级别6系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

  注:NFS是Network File System的缩写,即网络文件系统。 
  NFS的基本原则是“容许不同的客户端及服务端通过一组RPC(远程过程调用)分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。

1.4 Linux进程

1.4.1 Linux进程通信的方法
  • 1、管道(pipe)
      管道允许一个进程和另一个与它有共同祖先的进程之间进行通信;
  • 2、命名管道(FIFO)
      类似于管道,但是它可以用于任何两个进程之间的通信,命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建;
  • 3、信号(signal)
      信号是比较复杂的通信方式,用于通知接收进程有某种事情发生,除了用于进程间通信外,进程还可以发送信号给进程本身;Linux除了支持UNIX早期信号语义函数signal外,还支持语义符合POSIX.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD即能实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数的功能);
  • 4、内存映射(mapped memory)
      内存映射允许任何多个进程间通信,每一个使用该机制的进程通过把一个共享的文件映射到自己的进程地址空间来实现它;
  • 5、消息队列(message queue)
      消息队列是消息的连接表,包括POSIX消息对和System V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能成该无格式字节流以及缓冲区大小受限等缺点;
  • 6、信号量(semaphore)
      信号量主要作为进程间以及同进程不同线程之间的同步手段;
  • 7、共享内存 (shared memory)
      它使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。这是针对其他通信机制运行效率较低而设计的。它往往与其他通信机制,如信号量结合使用,以达到进程间的同步及互斥;
  • 8、套接字(Socket)
      它是更为通用的进程间通信机制,可用于不同机器之间的进程间通信。起初是由UNIX系统的BSD分支开发出来的,但现在一般可以移植到其他类UNIX系统上:Linux和System V的变种都支持套接字。
1.4.2 Linux进程状态
  • Linux进程不同的状态
      1、不可中断状态:进程处于睡眠状态,但是此刻进程是不可中断的。不可中断,指进程不响应异步信号。
      2、暂停状态/跟踪状态:向进程发送一个 SIGSTOP 信号,它就会因响应该信号 而进入 TASK_STOPPED 状态;当进程正在被跟踪时,它处于 TASK_TRACED 这个特殊的状态。正被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操作。
      3、就绪状态:在 run_queue 队列里的状态。
      4、运行状态:在 run_queue 队列里的状态。
      5、可中断睡眠状态:处于这个状态的进程因为等待某某事件的发生(比如等待socket 连接、等待信号量),而被挂起。
      6、zombie 状态(僵尸):父亲没有通过 wait 系列的系统调用会顺便将子进程的尸体(task_struct)也释放掉。
      7、退出状态。
  • 这些进程用’ps’命令查看时,对应的符号
      D:不可中断Uninterruptible(usually IO)。
      R:正在运行,或在队列中的进程。
      S:处于休眠状态。
      T:停止或被追踪。
      Z:僵尸进程。
      W:进入内存交换(从内核2.6开始无效)。
      X:死掉的进程。

二、文件

2.1 Linux文件系统

  在Linux操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看作是一个文件
  在Linux系统中,有一个重要的概念:一切都是文件。其实这是Unix哲学的一个体现,而Linux是重写Unix而来,所以这个概念也就传承了下来。在Unix系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。
  Linux支持5种文件类型,如下图所示:

2.2 目录结构

  Linux文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录:

  • /bin: 存放二进制可执行文件(ls、cat、mkdir等),常用命令一般都在这里;
  • /etc: 存放系统管理和配置文件;
  • /home存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示;
  • /usr : 用于存放系统应用程序;
  • /opt: 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里;
  • /proc: 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;
  • /root: 超级用户(系统管理员)的主目录;
  • /sbin: 存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等;
  • /dev: 用于存放设备文件;
  • /mnt: 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;
  • /boot存放用于系统引导时使用的各种文件
  • /lib : 存放着和系统运行相关的库文件 ;
  • /tmp: 用于存放各种临时文件,是公用的临时文件存储点;
  • /var: 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等)等;
  • /lost+found: 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里。

2.3 绝对路径和相对路径

  在Linux系统中,一个文件所在的目录有绝对路径和相对路径两种表示方式。
  绝对路径:描述了在虚拟目录结构中该目录的确切位置,以虚拟目录根目录开始,相当于目录全名。以正斜线开始,比如:/usr/local
  相对路径:允许用户执行一个基于当前目录位置的文件路径。
  在相对路径中:

单点符(.):表示当前目录;
双点符(…):表示当前目录的父目录。

  当前目录和上层目录: ./ ../
  主目录: ~/
  切换目录: cd

2.4 日志文件

  常见的日志文件:

  • /var/log/cron
      这个文件记录了系统例行性工作调度的相关信息,如你的crontab调度有没有实际被进行?进行过程中有没有发生错误?/etc/crontab是否编写正确?在这个日志文件内都可以查询。
  • /var/log/dmesg
      该文件记录系统在开机时内核检测过程中所产生的各项信息。由于centos默认将开机时内核的硬件检测过程取消显示,因此额外将数据记录在此文件中。
  • /var/log/lastlog
      该文件记录了系统上所有帐号最近一次登入系统时的相关信息。lastlog命令就是利用这个文件所记录的信息来显示结果。
  • /var/log/maillog或/var/log/mail/
      该文件或目录记录邮件的来往信息,其实主要记录SMTP和POP3(IMAP)协议提供者所产生的信息。
  • /var/log/messages
      该文件几乎记录了系统发生的所有错误信息(或者是重要的信息),所以这个文件相当重要;如果系统发生莫名的错误时,这个文件是必查的日志文件之一。

2.5 inode

  文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。
  操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个sector组成一个 block。
  文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"
  每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。
  使用 stat 命令可以查看文件的inode信息。每个inode都有一个号码,
Linux/Unix操作系统不使用文件名来区分文件,而是使用inode号码区分不同的文件。
inode也需要消耗硬盘空间,所以在格式化硬盘的时候,操作系统会将硬盘分为2个区域,一个区域存放文件数据,另一个区域存放inode所包含的信息,
存放inode的区域被称为inode table。

2.6 硬链接和软链接

  建立软链接和硬链接的语法:

	# 软链接ln -s 源文件 目标文件# 硬链接ln 源文件 目标文件

  软链接可以理解成快捷方式。它和windows下的快捷方式的作用是一样的;硬链接等于cp -p加同步更新
  软链接文件的大小和创建时间和源文件不同。软链接文件只是维持了从软链接到源文件的指向关系。
  硬链接文件和源文件的大小和创建时间一样。硬链接文件的内容和源文件的内容一模一样,相当于copy了一份。

三、Shell

3.1 变量类型

  • 1、系统定义变量
      系统变量是由系统系统自己创建的。这些变量通常由大写字母组成,可以通过set命令查看。
  • 2、用户定义变量
      用户变量由系统用户来生成和定义,变量的值可以通过命令 “echo $<变量名>” 查看。

3.2 if语句

  示例1:

  if [ condition ]then if [ condition ]then commands1elsecommands2fi    fi

  示例2:

if [ condition ]
then if [ condition ]then commands1else    commands2fi
elsecommands3
fi

3.3 数字比较

  在if-then中使用测试命令( -gt 等)来比较两个数字。示例:

#!/bin/bash
x=10
y=20
if [ $x -gt $y ]
then
echo “x is greater than y”
else
echo “y is greater than x”
fi

3.4 case语句

  示例:

case 变量 in 
值1 )执行动作1;;
值2 )执行动作2;;
值3 )执行动作3;;
....
* )如果变量的值都不是以上的值,则执行此程序;;
esac

  示例2:

case "找工作条件" in给的钱多)给你工作...;;给股份)给你工作...;;有发展前景)可以试试...;;*)bye bye !!
esac

3.5 for语句

  示例:

for 变量 in 循环列表
do
命令1
命令2
….
最后命令
done

  或:

for 变量 in 串行
do执行命令
done

  更详细的for语法可以参考:Shell中for循环的几个常用写法。

3.6 while语句

  如同 for 循环,while 循环只要条件成立就重复它的命令块。示例:

while [ 条件 ]
do
命令…
done

  do-while 语句的基本格式示例:

do
{
命令
} while (条件)

3.7 函数

  函数定义示例:

# func_name 函数名  
function func_name(){#函数体内容
}# func_name 函数名
func_name(){
#函数体内容
}

  函数调用示例:

func_name parm 

  函数体中,可以通过$1 $2 …$9接受函数调用中的变量;函数可以通过return 返回函数执行的结果。

3.8 执行Shell脚本的两种方式

  • 1、直接执行Shell脚本
      示例:
sh sleep.sh
./sleep.sh
  • 2、在后台执行脚本
      一般都是使用&在命令结尾来让程序自动运行(命令后可以不追加空格)。示例:
./sleep.sh &

3.9 数学运算

  bash shell的内置命令let可以进行整型数的数学运算。示例:

#! /bin/bash
…
…
let c=a+b

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

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

相关文章

[SWPUCTF 2021 新生赛]caidao

打开环境 这显示的就是一句话木马呗&#xff0c;直接用中国蚁剑连接&#xff0c;密码是wllm 根目录找到flag

Python Opencv实践 - 手势音量控制

本文基于前面的手部跟踪功能做一个手势音量控制功能&#xff0c;代码用到了前面手部跟踪封装的HandDetector.这篇文章在这里&#xff1a; Python Opencv实践 - 手部跟踪-CSDN博客文章浏览阅读626次&#xff0c;点赞11次&#xff0c;收藏7次。使用mediapipe库做手部的实时跟踪&…

c++输出简单日志带日期时间功能

最近项目需要简单输出日志&#xff0c;用巨大的日志类未免繁琐&#xff0c;于是写了这个简单的日志函数&#xff0c;带日期&#xff0c;MFC下可以直接使用。 直接上代码&#xff1a; template <typename T> std::string ConvertToStringS(T value) {std::stringstream …

nginx转发ingress-nginx问题记录

背景 想直接通过域名访问k8s上的服务. 想到k8s上可以直接通过ingress配置. 不过ingress默认启动的端口3xxxxx. 一般不可能让用户访问我们的服务加上端口. 所以现在要解决直接通过80端口访问ingress的问题. 方案 修改ingress-nginx端口(这个是在网上搜到的方案, 但未选择) 这…

【数据结构和算法】定长子串中元音的最大数目

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一&#xff1a;滑动窗口 2.2 方法二&#xff1a;滑动窗口优化版 三、代码 3.1 方法一&#xf…

Spring Boot构建项目常用注解

忙着去耍帅&#xff0c;后期补充完整.....................................

搭建esp32-idf开发环境并烧入第一个程序

ESP32下载idf并烧入第一个程序 一.官网下载idf安装包二.安装idf三 .测试安装是否成功3.1进入idf控制台3.2 查看安装版本3.3 编译工程 四.下载程序4.1查看所在端口4.2下载程序4.3 监听串口 一.官网下载idf安装包 点击下载 如图&#xff1a; 我们选择离线下载&#xff0c;注意…

Qt 国际化——创建中英文翻译步骤

Qt 国际化——创建中英文翻译步骤 说明&#xff1a;之前我的csdn博客&#xff0c;第一篇文章发表的就是Qt国际化的文章&#xff08;点击打开&#xff09;&#xff0c;写的也过于简单了&#xff1a; 今天&#xff0c;这篇文章再详细的记录下&#xff0c;中英文翻译的步骤。 一…

diffusers-训练自己的模型

一、搭建dataset 基于datasets这个库创建的dataloader&#xff0c;底层代码还待探索 二、修改模型结构&#xff08;非必要&#xff09; 尽量可以利用已有的预训练权重去训练模型&#xff0c;但是权重并不一定能够完全是适配&#xff0c;所以还需要自己来视情况做修改&#xf…

AttributeError: module ‘_winapi‘ has no attribute ‘SYNCHRONIZE‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【SplaTAM】基于RGB-D类型SplaTAM的定位与重建

SplaTAM ubuntu配置与运行记录 1. 资料收集2. 环境配置与运行注意问题3. 在线运行 近期各种定会涌现出一种新的基于高斯的方法&#xff0c;备受关注&#xff0c;这里我们也来学习下sota效果的slam用于定位和重建。 1. 资料收集 coda link3D Gaussians 2.1 Dynamic 3D Gaussian…

猫罐头评测:五大平价猫罐头排行榜揭晓!

想必铲屎官都知道给猫咪长期吃主食罐头的好处了吧&#xff01;主食罐头不仅营养丰富&#xff0c;还能让猫咪顺便补充水分。有时候猫咪食欲不佳&#xff0c;一罐主食罐头就能让它们胃口大开呢。 通过本文&#xff0c;我将与大家分享我做宠物医生6年间发现的一些好用的猫罐头&…

超声功率放大器的技术方案是什么

超声功率放大器是一种用于超声波领域的放大器&#xff0c;主要用于将输入的小功率信号放大为高功率的超声波信号。在医学、工业和科学研究等领域&#xff0c;超声功率放大器被广泛应用于超声成像、无损检测、清洗和材料处理等方面。下面将详细介绍超声功率放大器的技术方案和工…

推荐算法架构7:特征工程

1 概述 特征工程[1]&#xff08;Feature Engineering&#xff09;是推荐算法的基础&#xff0c;它对收集到的原始数据进行解析和变换&#xff0c;从而提取出模型所需要的信息。通过挖掘丰富和高质量的特征&#xff0c;并对其进行合理的处理&#xff0c;可以提升模型预估准确度…

判断数据是否为整数--函数设计与实现

#定义函数&#xff1a;is_num(s),判断输入的数据是否整数。 #(1)判断是否是数字 def is_num(s):if s.isdigit(): #isdigit()是一个字符串方法&#xff0c;用于检查字符串是否只包含数字字符。如果字符串只包含数字字符&#xff0c;则返回True&#xff1b;否则返回Falsereturn T…

知识付费小程序源码系统:支持视频课程+音频课程+图文课程+完整的代码包 带搭建安装教程

近年来&#xff0c;人们对于知识的需求越来越大&#xff0c;知识付费行业也逐渐崛起。但是&#xff0c;目前市场上有很多知识付费平台存在一些问题&#xff0c;如内容质量参差不齐、用户体验不佳、支付安全问题等。知识付费小程序源码系统的出现很好的解决了这些问题&#xff0…

【Vue中给输入框加入js验证_blur失去焦点进行校验】

【Vue中给输入框加入js验证_blur失去焦点进行校验】 通俗一点就是给输入框加个光标离开当前文本输入框时&#xff0c;然后对当前文本框内容进行校验判断 具体如下&#xff1a; 1.先给文本框加属性 blur“validatePhoneNumber” <el-input v-model“entity.telephone” blur…

如何用docke启动redis?(解决双击docker服务闪退问题)

要使用Docker启动Redis服务&#xff0c;您可以按照以下步骤进行操作&#xff1a; 安装Docker&#xff1a; 如果您还没有安装Docker&#xff0c;请先在您的系统上安装Docker。您可以从Docker官方网站获取安装说明。 https://www.docker.com/get-started/ 2.在Docker Hub上查找R…

2023 英特尔On技术创新大会直播 |我感受到的“芯”魅力

文章目录 每日一句正能量前言AI时代&#xff0c;云与PC结合为用户带来更好体验全新处理器&#xff0c;首次引入针对人工智能加速的NPU大模型时代&#xff0c;软硬结合带来更好训练成果后记 每日一句正能量 成长是一条必走的路路上我们伤痛在所难免。 前言 在2023年的英特尔On技…

DC电源模块在工业自动化中的关键应用案例分析

BOSHIDA DC电源模块在工业自动化中的关键应用案例分析 DC电源模块在工业自动化中有许多关键应用案例&#xff0c;以下是其中的一些&#xff1a; 1. 电机控制系统&#xff1a;在工业自动化中&#xff0c;电机控制是非常常见的应用。DC电源模块用于为电机提供稳定的直流电源&…