Linux基础知识

news2024/11/28 14:53:12

目录

流行的Linux发行版本

Linux系统的启动顺序

禁止使用ping命令

鉴定故障解决办法

user 不在 sudoers 文件中。此事将被报告解决办法

修改文件或目录的所属用户与权限

1、chgrp:更改文件属组

2、chown:更改文件属主,也可以同时更改文件属组

处理目录的常用命令

 读取文件内容

 文件解压缩

Linux系统用户管理

Linux系统用户组的管理

实例1:

 Linux磁盘管理

df

du

fdisk

磁盘格式化

磁盘挂载与卸除

Linux vi/vim

Linux yum命令

yum常用命令

国内 yum 源

安装步骤

Linux apt命令 

apt 常用命令

Shell教程

Shell脚本

Shell环境

Shell变量基础

Shell 参数传递

Shell 运算符

算术运算符:

关系运算符

布尔运算符

逻辑运算符

字符串运算符

文件测试运算符


流行的Linux发行版本

Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。

Linux系统的启动顺序

  • 内核的引导。
  • 运行 init。
  • 系统初始化。
  • 建立终端 。
  • 用户登录系统。

禁止使用ping命令

通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

要想重新允许,则将1变为0即可:

echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

鉴定故障解决办法

su root鉴定故障是因为在安装linux系统时没有给root用户设置密码,重新设置密码即可:sudo passwd root

user 不在 sudoers 文件中。此事将被报告解决办法

以root用户登录、给/etc/sudoers加写权限。

vim /etc/sudoers

添加如下行即可:

修改文件或目录的所属用户与权限

  • chown (change owner) : 修改所属用户与组。
  • chmod (change mode) : 修改用户的权限。

在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。

  • 当为 d 则是目录
  • 当为 **** 则是文件;
  • 若是 l 则表示为链接文档(link file);
  • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。

 更改文件属性:

1、chgrp:更改文件属组

语法:

chgrp [-R] 属组名 文件名

 参数选项

  • R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

2、chown:更改文件属主,也可以同时更改文件属组

语法:

chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

 如果我们需要将文件权限设置为 rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定.

处理目录的常用命令

  • ls(英文全拼:list files): 列出目录及文件名
  • cd(英文全拼:change directory):切换目录
  • pwd(英文全拼:print work directory):显示目前的目录
  • mkdir(英文全拼:make directory):创建一个新的目录

  • rmdir(英文全拼:remove directory):删除一个空的目录
  • cp(英文全拼:copy file): 复制文件或目录
  • rm(英文全拼:remove): 删除文件或目录
  • mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称

 读取文件内容

# 输出文件内容
cat 文件名

# 输出指定行
# 从头部输出(指定行)内容,默认10行
head [-n number] 文件名
# 从尾部输出(指定行)内容,默认10行
tail [-n number] 文件名

 文件解压缩

tar

解包:tar zxvf filename.tar

打包:tar czvf filename.tar dirname

gz命令

解压1:gunzip filename.gz

解压2:gzip -d filename.gz

压缩:gzip filename

.tar.gz 和  .tgz

解压:tar zxvf filename.tar.gz

压缩:tar zcvf filename.tar.gz dirname

压缩多个文件:tar zcvf filename.tar.gz dirname1 dirname2 dirname3.....

bz2命令

解压1:bzip2 -d filename.bz2

解压2:bunzip2 filename.bz2

压缩:bzip2 -z filename

.tar.bz2

解压:tar jxvf filename.tar.bz2

压缩:tar jcvf filename.tar.bz2 dirname

bz命令

解压1:bzip2 -d filename.bz

解压2:bunzip2 filename.bz

.tar.bz

解压:tar jxvf filename.tar.bz

z命令

解压:uncompress filename.z

压缩:compress filename

.tar.z

解压:tar zxvf filename.tar.z

压缩:tar zcvf filename.tar.z dirname

zip命令

解压:unzip filename.zip

压缩:zip filename.zip dirname

Linux系统用户管理

添加用户:useradd 选项 用户名

参数说明:

  • 选项:
    • c comment 指定一段注释性描述。
    • d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
    • g 用户组 指定用户所属的用户组。
    • G 用户组,用户组 指定用户所属的附加组。
    • s Shell文件 指定用户的登录Shell。
    • u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
  • 用户名:指定新账号的登录名

例1:useradd -d /home/zhen -m zhen

此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录 /home/sam(/home为默认的用户主目录所在的父目录)。

例2:useradd -s /bin/sh -g group -G adm,root zhen

此命令新建了一个用户gem,该用户的登录Shell是 /bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。

这里可能新建组:#groupadd group及groupadd adm

增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。

删除账号:userdel 选项 用户名

常用的选项是 r,它的作用是把用户的主目录一起删除。

例1:userdel -r zhen

修改账号:usermod 选项 用户名

常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。

另外,有些系统可以使用选项:-l 新用户名

这个选项指定一个新的账号,即将原来的用户名改为新的用户名。

用户口令管理:passwd 选项 用户名

可使用的选项:

  • l 锁定口令,即禁用账号。
  • u 口令解锁。
  • d 使账号无口令。
  • f 强迫用户下次登录时修改口令。

例如,假设当前用户是sam,则下面的命令修改该用户自己的口令:

$ passwd
Old password:******
New password:*******
Re-enter new password:*******

 如果是超级用户,可以用下列形式指定任何用户的口令:

# passwd sam
New password:*******
Re-enter new password:******* 

为用户设置空口令:passwd -d zhen

锁定用户账户:passwd -l zhen

Linux系统用户组的管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

新建用户组:groupadd 选项 用户组

可以使用的选项有:

  • g GID 指定新用户组的组标识号(GID)。
  • o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

 例1:

# 此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。
groupadd group1

 例2:

# 此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。
groupadd -g 101 group2

删除用户组:groupdel 用户组

修改用户组:groupmod 选项 用户组

常用的选项有:

  • g GID 为用户组指定新的组标识号。
  • o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
  • n新用户组 将用户组的名字改为新名字

实例1:

groupmod -g 102 group2

 此命令将组group2的组标识号修改为102。

实例2:

groupmod –g 10000 -n group3 group2

此命令将组group2的标识号改为10000,组名修改为group3。

切换到其他用户组:newgrp 组名

这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。

批量添加用户:

 Linux磁盘管理

Linux 磁盘管理常用三个命令为 dfdu 和 fdisk

  • df(英文全称:disk full):列出文件系统的整体磁盘使用量
  • du(英文全称:disk used):检查磁盘空间使用量
  • fdisk:用于磁盘分区

df

df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

语法:df [-ahikHTm] [目录或文件名]

选项与参数:

  • a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
  • k :以 KBytes 的容量显示各文件系统;
  • m :以 MBytes 的容量显示各文件系统;
  • h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
  • H :以 M=1000K 取代 M=1024K 的进位方式;
  • T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
  • i :不用硬盘容量,而以 inode 的数量来显示

du

inux du 命令也是查看使用空间的,但是与 df 命令不同的是 Linux du 命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍 Linux du 命令。

语法:du [-ahskm] 文件或目录名称

选项与参数:

  • a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
  • h :以人们较易读的容量格式 (G/M) 显示;
  • s :列出总量而已,而不列出每个各别的目录占用容量;
  • S :不包括子目录下的总计,与 -s 有点差别。
  • k :以 KBytes 列出容量显示;
  • m :以 MBytes 列出容量显示;

fdisk

fdisk 是 Linux 的磁盘分区表操作工具。

语法:fdisk [-l] 装置名称

选项与参数:

  • l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。

磁盘格式化

mkfs [-t 文件系统格式] 装置文件名

选项与参数:

  • t :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)

磁盘挂载与卸除

Linux 的磁盘挂载使用 mount 命令,卸载使用 umount 命令。

磁盘挂载语法:

mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n]  装置文件名  挂载点

磁盘卸载命令 umount 语法:**umount [-fn] 装置文件名或挂载点

选项与参数:

  • f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
  • n :不升级 /etc/mtab 情况下卸除。

例子:树莓派优盘挂载与卸除

优盘插入前:

优盘插入后:

可见多了一个分区sda4

df -h查看磁盘情况:(插入后已自动挂载到/media/pi/振这个位置)

 手动卸载:(umount /dev/sda4)

 将优盘重新挂载到/home/pi/zhen目录下(目录不存在则需要创建)

访问时发现挂载点为只读的解决办法:**sudo mount -o uid=pi,gid=pi /dev/sda4 /home/pi/zhen

-o 参数指定下用户和用户组即有了权限。

创建挂载点的时候记得也付下权限 mkdir -m 777 文件夹

其他权限问题:待研究

靠谱的解决权限问题的方案:

树莓派4B挂载U盘,修改owner,权限等失败问题解决_雨痕云的博客-CSDN博客

Linux vi/vim

第一部分:一般模式可用的光标移动、复制粘贴、搜索替换等

 

 

 第二部分:一般模式切换到编辑模式的可用的按钮说明

 第三部分:一般模式切换到指令行模式的可用的按钮说明

特别注意,在 vi/vim 中,数字是很有意义的!数字通常代表重复做几次的意思! 也有可能是代表去到第几个什么什么的意思。

举例来说,要删除 50 行,则是用 『50dd』 对吧! 数字加在动作之前,如我要向下移动 20 行呢?那就是『20j』或者是『20↓』即可。

Linux yum命令

yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令。

yum 语法:yum [options] [command] [package ...]

  • **options:**可选,选项包括-h(帮助),-y(当安装过程提示选择全部为 "yes"),-q(不显示安装的过程)等等。
  • **command:**要进行的操作。
  • **package:**安装的包名。 

yum常用命令

    1. 列出所有可更新的软件清单命令:yum check-update
    1. 更新所有软件命令:yum update
    1. 仅安装指定的软件命令:yum install <package_name>
    1. 仅更新指定的软件命令:yum update <package_name>
    1. 列出所有可安裝的软件清单命令:yum list
    1. 删除软件包命令:yum remove <package_name>
    1. 查找软件包命令:yum search <keyword>
    1. 清除缓存命令:
    • yum clean packages: 清除缓存目录下的软件包
    • yum clean headers: 清除缓存目录下的 headers
    • yum clean oldheaders: 清除缓存目录下旧的 headers
    • yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers

国内 yum 源

网易(163)yum源是国内最好的yum源之一 ,无论是速度还是软件版本,都非常的不错。

将yum源设置为163 yum,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到。

安装步骤

首先备份/etc/yum.repos.d/CentOS-Base.repo

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载对应版本 repo 文件, 放入 /etc/yum.repos.d/ (操作前请做好相应备份)

  • CentOS5 :http://mirrors.163.com/.help/CentOS5-Base-163.repo
  • CentOS6 :http://mirrors.163.com/.help/CentOS6-Base-163.repo
  • CentOS7 :http://mirrors.163.com/.help/CentOS7-Base-163.repo
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
mv CentOS6-Base-163.repo CentOS-Base.repo

 运行以下命令生成缓存

yum clean all
yum makecache

除了网易之外,国内还有其他不错的 yum 源,比如中科大和搜狐。

中科大的 yum 源,安装方法查看:Centos 镜像使用帮助 - LUG @ USTC

sohu 的 yum 源安装方法查看: http://mirrors.sohu.com/help/centos.html

Linux apt命令 

apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

apt 命令执行需要超级管理员权限(root)。

apt 语法:apt [options] [command] [package ...]

  • options:**可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
  • command:**要进行的操作。
  • package:安装的包名。

apt 常用命令

  • 列出所有可更新的软件清单命令:sudo apt update

  • 升级软件包:sudo apt upgrade

    列出可更新的软件包及版本信息:apt list --upgradeable

    升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade

  • 安装指定的软件命令:sudo apt install <package_name>

    安装多个软件包:sudo apt install <package_1> <package_2> <package_3>

  • 更新指定的软件命令:sudo apt update <package_name>

  • 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show <package_name>

  • 删除软件包命令:sudo apt remove <package_name>

  • 清理不再使用的依赖和库文件: sudo apt autoremove

  • 移除软件包及配置文件: sudo apt purge <package_name>

  • 查找软件包命令: sudo apt search <keyword>

  • 列出所有已安装的包:apt list --installed

  • 列出所有已安装的包的版本信息:apt list --all-versions

Shell教程

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。

Shell脚本

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。

业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。

由于习惯的原因,简洁起见,本文出现的 "shell编程" 都是指 shell 脚本编程,不是指开发 shell 自身。

Shell环境

Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。

Linux 的 Shell 种类众多,常见的有:

  • Bourne Shell(/usr/bin/sh或/bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • Shell for Root(/sbin/sh)

Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell。

在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash

#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。

Shell变量基础

#!/bin/bash
# 定义一个变量
NAME="ZHEN"

#使用变量$
echo "My Name is ${NAME}"

for skill in CPP JAVA NODEJS;do
	echo "I am good at ${skill}Language"
done

# 只读变量的定义
myVar="onlyreadVar"
readonly myVar
myVar="changemyVar"

# 删除变量
unset myVar
echo ${myVar}

str='this is a string'
# 单引号限制1:引号中任何字符串原样输出,单引号中的变量是无效的
# 单引号限制2:单引号中不能出现单独的一个引号(对单引号转移也不行),但可以成对出现

myname="mazhen"
str="hello, I know you are \"${myname}\"!\n"
echo -e ${str}
# 双引号优点:双引号里可以有变量;双引号里可以出现转义字符


# 拼接字符串
a="hello"
b="hello, "${a}"!"
b1="hello, ${a}!"
echo $b $b1

b2='hello, '$a'!'
b3='hello, ${a}!'

echo $b2 $b3

# 获取字符串长度
string="abcd"
echo ${#string} #输出 4


# 提取字符串
string="runoob is a great site"
echo ${string:1:4} # 输出 unoo

# 查找字符串
string="runoob is a great site"
echo `expr index "$string" io` #输出4

# 定义数组
arr=(1 2 3 4)
arr1=(
1
2
3
4
)

arr2[0]=1
arr2[1]=22222

# 读取数组
var1=${arr2[1]}
echo $var1


# 获取数组长度
length=${#arr1[@]}
echo "arr1 length is $length"

# 多行注释 除了多行# 还可以写成下面:
:<<EOF
dddd
ddd
dddd
EOF

Shell 参数传递

可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……

#!/bin/bash
# author zhen

echo "Shell 传递参数实例!"
echo "执行的文件名:$0"
echo "第一个参数为:$1"
echo "第二个参数为:$2"
echo "第三个参数为:$3"

# echo "please input your name:\n"
# read name
#echo "your name is ${name}"

echo "参数个数为:$#"
echo "传递的参数作为一个字符串显示:$*"

# $* 和 $@
echo "-- \$* 演示 --"
for i in "$*"; do
	echo $i
done

echo "-- \$@ 演示 --"
for i in "$@";do
	echo $i
done

Shell 运算符

Shell 和其他编程语言一样,支持多种运算符,包括:

  • 算数运算符
  • 关系运算符
  • 布尔运算符
  • 字符串运算符
  • 文件测试运算符

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。

expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

例如,两个数相加(注意使用的是反引号 ` 而不是单引号 '):

#!/bin/bash

val=`expr 2 + 2`
echo "两数之和为 : $val"

# 两数之和为 : 4

算术运算符:

注意:

  • 乘号(*)前边必须加反斜杠(\)才能实现乘法运算;
  • if...then...fi 是条件语句,后续将会讲解。
  • 在 MAC 中 shell 的 expr 语法是:$((表达式)),此处表达式中的 "*" 不需要转义符号 "\" 。

关系运算符

关系运算符只支持数字,不支持字符串,除非字符串的值是数字。 

布尔运算符

逻辑运算符

字符串运算符

文件测试运算符


 ---------------------------------------------------------------------暂停----------------------------------------------------

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

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

相关文章

Agent 与对象的辨析

如果说对象是70年代以来软件界最激动人心的革新之一&#xff0c;那么&#xff0c;Agent的相关理论和技术&#xff0c;为分布式开放系统的设计与实现提供了新的途径&#xff0c;可以称之为软件开发的又一重大突破。讨论问题的前提是概念的澄清&#xff0c;什么是对象&#xff1f…

【学习笔记49】JavaScript的this指向

一、this指向 每一个函数内部都有一个关键字thisthis的值, 和函数的调用有关, 与函数书写无关 1. 普通调用方式 一个普通的全局函数, 在正常调用的情况下, this window function fn() {console.log(this); }fn() // this window2. 函数放置到对象 如果将函数放置到对象…

图数据技术护航网络安全 - Neo4j 大中华区总经理 方俊强

网络数字化及人工智能为许多行业来革命性的进步&#xff0c;但与此同时&#xff0c;网络安全领域产生的问题也日益严峻。人工智能进攻性风险和网络威胁领域的发展正在重新定义企业安全&#xff0c;从而给企业带来了更高的挑战。如何守护网络安全&#xff0c;成为企业深化数字化…

CSDN第十一场竞赛

目录 1.比赛详情 2.竞赛详情 3.原题回顾 (1).圆小艺 思路模拟 代码实现 (2). K皇把妹 思路模拟 代码实现 (3).筛选宝物 思路模拟 代码实现 (4).圆桌 思路模拟 代码实现 4.总结 1.比赛详情 报名地址&#xff1a;https://edu.csdn.net/contest/detail/24?utm_sou…

目标检测论文解读复现之二十:基于改进Yolov5的地铁隧道附属设施与衬砌表观病害检测方法

前言 此前出了目标改进算法专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果&#xff0c;并且多少改进点能发什么水平的文章&#xff0c;为解决大家的困惑&#xff0c;此系列文章旨在给大家解读最新目标检测算法论文&#xff0…

14个SpringBoot优化小妙招

1. 定义配置文件信息 有时候我们为了统一管理会把一些变量放到 yml 配置文件中 例如 用 ConfigurationProperties 代替 Value 使用方法 定义对应字段的实体 Data // 指定前缀 ConfigurationProperties(prefix "developer") Component public class DeveloperPro…

力扣(LeetCode)813. 最大平均值和的分组(C++)

动态规划 本题需要用到前缀和&#xff0c;前缀和需要将下标 iii 后移一位&#xff0c;所以我们将状态的下标 iii 也后移一位&#xff1b;由于状态转移依赖于 j−1j-1j−1 &#xff0c;我们将 jjj 的下标后移一位。 class Solution { public:double largestSumOfAverages(vecto…

2022天梯赛练习集(2022.9-2022.10)

使用函数判断完全平方数 没有加&#xff08;int&#xff09;过不了 int IsSquare(int n){if((int)sqrt(n) * sqrt(n) ! n) return 0;else return 1; } 使用函数求余弦函数的近似值 double funcos(double e, double x){double sum 1, item 1;for(int i 0; fabs(item) >…

Tmuxs -高效使用Linux terminal

Tmuxs -高效使用Linux terminal前言what&#xff1f;重要概念安装Tmux 常用命令Tmux 常用内部命令窗口&#xff08;window&#xff09;指令&#xff1a;面板&#xff08;pane&#xff09;指令&#xff1a;如何用鼠标调整pane大小配置生效参考配置参考前言 这个利器绝对可以提升…

eMMC编程基础 -(二)eMMC基础介绍

eMMC编程基础 -&#xff08;二&#xff09;eMMC基础介绍1 eMMC 简介1.1 eMMC系统概述1.2 eMMC 的整体架构如下图片所示&#xff1a;2 Flash Memory1 eMMC 简介 eMMC 是 embedded MultiMediaCard 的简称。 eMMC 是对 MMC 的一个拓展&#xff0c;以满足更高标准的性能、成本、体…

文件包含笔记

很多语言支持使用包含文件&#xff0c;这样允许开发者把可重复使用的代码存入单个文件中&#xff0c;在未来需要使用时&#xff0c;将它包含在其他代码文件中即可使用。 如果是像 C/C 这种编译语言&#xff0c;即使可以包含任意文件&#xff0c;若没有调用其中函数也不会有什么…

【从零开始学微服务】05.微服务的优势和不足

大家好&#xff0c;欢迎来到万猫学社&#xff0c;跟我一起学&#xff0c;你也能成为微服务专家。 没有“银弹” 在一些电影中&#xff0c;“银弹”被视作能迅速杀死狼人的武器&#xff0c;是杀死狼人的灵丹妙药。“银弹”常被比喻为解决复杂问题的良方或高招。 由于软件的复杂…

11.27

一.进制转换 这道题的思路就是先把每个数模对应的进制.再除以,就得到对应的, 因为可能会有16进制,所以直接弄一个字符串数组,按照"0123456789ABCDEF"顺序存储,再用模找里面对应的就可以了 但是有可能是负数,所以我们需要在此之前判断一下 如果用字符串临时拼接会产…

2008年武汉高校630操作系统真题B卷

操作系统————核心系统软件 竞争计算机系统资源的基本单位————进程 UNIX————分时操作系统 操作系统中必不可少的调度————进程调度 进程和程序的本质区别————前者是动态后者是静态 磁带————顺序存储文件 某进程在运行过程中需要等待从磁盘上读入数…

tensorflow-serving docker模型部署(以mnist为例)

✨ 博客主页&#xff1a;小小马车夫的主页 ✨ 所属专栏&#xff1a;Tensorflow 文章目录前言一、环境介绍二、tensorflow-serving docker安装三、单模型部署 (以官方demo saved_model_half_plus_two_cpu为例)1、docker模型部署2、python requests模型预测四、多模型部署 (以mni…

算法提升:图的拓扑排序算法

目录 概念 思路 代码 概念 拓扑序列&#xff1a;一些活动&#xff0c;其中某些活动必须在另一些活动完成之后才能开始&#xff0c;一定是无环的有向图&#xff0c;称为AOV网。 拓扑排序&#xff0c;其实就是对一个有向图构造拓扑序列的过程。构造时会有两个结果&#xff1a…

Go中赋值和转换关系

Go中的赋值跟类型转换: 在java中反射是可以获取继承关系,而go语言实际是不支持继承的,所以必须是相同的类型才能使用AssignableTo(),ConvertibleTo() package mainimport ("fmt""reflect" )type User struct {Name string } func demo(){user:User{Name:…

C#语言实例源码系列-实现自定义屏保

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 &#x1f449;关于作者 众所周知&#xff0c;人生是一个漫长的流程&#xff0c;不断克服困难&#xff0c;不断反思前进的过程。在这个过程中…

Class文件结构

文章目录1.概述1.1 字节码文件的跨平台性1.2 Java的前端编译器1.3 透过字节码指令看代码细节2. 虚拟机的基石:Class文件3. Class文件结构3.1 魔数3.2 Class文件版本号3.3 常量池3.4 访问标识3.5 类索引、父类索引、接口索引集合3.6 字段表集合3.7 方法表集合3.8 属性表集合4. 使…

No.178# 混沌工程相关内容梳理

引言随着公司规模业务的快速增长&#xff0c;数以千计甚至万计的微服务&#xff0c;依赖的各类组件越来越多。分布式体系架构体系越来越复杂&#xff0c;没有任何一个人能够掌控所有复杂的耦合性。也就是说复杂性无法避免&#xff0c;不可能再回到单体应用&#xff0c;也无法彻…