目录
在我们平时生活中,操作系统用的最多的是Windows系统,如果你是土豪从小到大都是iPhone、Mac之类的电子产品,那你应该不会来做程序员吧(所以你就看不到这篇文章),在Windows系统下,系统的整个磁盘会被拆分为不同的磁盘分区,而且每个磁盘会分配一个不同的盘符,比如 C:\、D:\ 等等,每个磁盘分区都单独存放自己的文件,它们有自己的根目录,每个磁盘分区的起点就是它们的根目录,比如 C:\、D:\ 就相当于 C 盘和 D 盘的根目录了,如果想要找到一个文件,我们只要依次进入该文件所在的磁盘分区即可(这里假设是D盘),然后在进入该分区下的目录,最终找到这个文件。而Linux 操作系统也有目录的概念,只是Linux 和Windows 的磁盘管理有一点区别,Linux 是将整个磁盘进行统一的管理,不存在C:\、D:\ 等盘符,Linux整个系统只有一个根目录 "/",所有的文件和目录都是在这个根目录下,它表示 Linux 文件系统的起点,因为在Linux系统中一切都是文件,其中的目录、字符设备、光盘、打印机等都被抽象成了文件,所以平时和我们打交道的都是文件。
另外要注意一点,在Linux 中目录之间的间隔使用的是正斜线 (forward slash)"/",而 Windows中用的是反斜线 (back slash)"\"。
Linux系统在安装的时候系统会建立一些默认的目录,每个目录都有其特殊的功能,所以下面我们对 Linux 系统中的目录结构以及经常使用到的概念进行一个完整介绍。
下面来简单介绍一下这些目录的含义(红色标注为重点):
文件的路径是用来帮助我们定位到某个文件的,一般文件的路径分为绝对路径和相对路径。
简单举例:
1)、绝对路径
例如我们进入:/usr/local/bin 目录下。
2)、相对路径
我们首先回退到/usr/local目录,然后相对于这个目录进入/bin 目录。
或者 又或者直接使用绝对路径
两个特殊的目录:
注意:绝对路径和相对路径二者的使用完全看自己怎么选择,两者各有利弊,绝对路径可以在任何目录下进入其它任何目录中,可以保证他的路径是绝对正确的,但是如果目录文件很多则需敲一段很长的路径。而相对路径在有同名的目录下非常的方便,但是如果要在不同命的目录下进入到其它目录就很麻烦(不使用绝对路径的情况),首先得退到根目录,然后才能进入其它目录。
①、相对路径的用途:例如现在有三个目录分别为:
像这样的目录我们使用相对路径是非常方便的,如果我想从/usr/local/packages/etc目录进入到/usr/local/packages/bin目录,可以直接使用 cd ../bin ,这样非常的方便。
②、绝对路径的用途:绝对路径由于将路径全部完整的写出来了,所以是非常准确的。所以路径是写在 shell scripts 中的路径,那么最好使用绝对路径,虽然可能路径非常长,但是这种写法是绝对不会出错的。
这里注意一点:系统bin目录下和sbin目录下是存放“指令”对应的可“执行程序文件”目录,其中bin目录是所有用户都可以使用里面的命令,而sbin目录文件对应指令都是"root"用户可以执行的指令,普通用户不能使用该目录里的命令,所以普通用户和和root用户的开头是有区别的:
下面来介绍Linux中的基本命令。
用户、用户组和其他人的基本概念:
linux里,并没有像windows的net user,net localgroup这些方便的命令来治理用户.
Xwindows界面的就不说了.
1)在终端里.其实只需要查看 /etc/passwd文件就行了.
2)看第三个参数:500以上的,就是后面建的用户了.其它则为系统的用户或者用cat /etc/passwd |cut -f 1 -d :
========================
1)、useradd:命令用于创建新的用户,默认的用户家目录会被存放在/home目录中,默认的Shell解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组。。
语法格式为:useradd [选项] 用户名
常用选项:
简单举例:
在上面的命令中,表示创建一个普通用户并指定家目录的路径、用户的UID以及Shell解释器。这里注意/sbin/nologin,它是终端解释器中的一员,与Bash解释器有着天壤之别。一旦用户的解释器被设置为nologin,则代表该用户不能登录到系统中。
然后用 id username 命令来查看用户的信息:
2)、passwd:用于修改用户密码、过期时间、认证信息等(root管理员在Linux系统中修改自己或他人的密码时不需要验证旧密码,这一点特别方便)。
语法格式为:passwd [选项] [用户名]
常用选项:
简单举例:
3)、groupadd:命令用于创建用户组。
语法格式为:groupadd [选项] 群组名
常用选项:
创建用户组的步骤非常简单,例如使用如下命令创建一个用户组linuxgroup,简单举例:
4)、groupdel:用于删除创建的用户组。格式:groupdel 用户组名
5)、groupmod:用于修改用户组。
语法格式为:groupmod [选项] 用户组名
常用选项:
简单实例(就不实际运行了):groupmod –g 10000 –n group3 group2
6)、usermod:命令用于修改用户的属性。
语法格式为:usermod [选项] 用户名
常用选项:
简单举例:
--将用户zhangsan加入到root用户组中,这样扩展组列表中则会出现root用户组的字样,而基本组不会受到影响:
--修改用户zhangsan的用户UID值:
7)、userdel:用于删除用户。
语法格式为:userdel [选项] 用户名
常用选项:
注意:一般在实际的删除用户时,都不会删除用户的home目录。
pwcov 注:同步用户从/etc/passwd 到/etc/shadow
pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;
finger 注:查看用户信息工具
id 注:查看用户的UID、GID及所归属的用户组
chfn 注:更改用户信息工具
su 注:用户切换工具
sudo 注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;
visudo 注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;
sudoedit 注:和sudo 功能差不多;
grpck
grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,假如/etc/gshadow 不存在则创建;
grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件。
————————————————
在Linux系统中一切都是文件,但是每个文件的类型不尽相同,而且每个文件的访问权限也不相同,因此Linux系统使用了不同的字符来加以区分文件的类型访问权限,如下所示。
我们查看跟目录下的所有文件:
这里就以home目录为例,下面来简单分析一下。
其中第一列代表这个文件的类型与权限,第一个字符代表这个文件的类型(目录、文件或链接文件等):
后面的字符为3个一组,第一组为“文件所有者的权限”,即文件的所有者才能进行读写执行的操作。第二组为“用户组的权限”,只要是在这个组的用户都权限。第三组为“其它非本用户组的权限”。
----更改文件属性命令:
1)、chgrp:更改文件所属用户组
语法格式为:chgrp [-R] 属组名 文件名
参数选项
2)、chown:更改文件所有者,也可以同时更改文件属组
语法格式为:chown [–R] 属主名 文件名 或者 chown [-R] 属主名:属组名 文件名
参数选项:
3)、chmod:更改文件的权限
语法格式为:chmod [选项] 文件名
文件权限的设置方法有两种,分别是使用数字和符号来进行权限更改,推荐使用数字,现在我们来学习:
①、数字类型改变文件权限
Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。先复习一下刚刚上面提到的数据:文件的权限字符为:[-rwxrwxrwx] , 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:[-rwxrwx---] 分数则是:
所以等一下我们设定权限的变更时,该文件的权限数字就是 770。变更权限的指令 chmod 的语法是这样的:
# chmod [-R] xyz 文件或目录
选项与参数:
简单举例:
假如将文件权限改为:[-rwxr-xr],可以发现有些权限没有,那么权限的分数则为:[4+2+1][4+0+1][0+0+0]=750,所以执行:chmod 750 filename。
===============================
②、数字类型改变文件权限
还有一个改变权限的方法,从之前的介绍中我们可以发现,基本上就九个权限分别是:
那么我们就可以使用 u, g, o 来代表三种身份的权限。此外, a 则代表all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看:
来实践一下:
如果我们需要将文件权限设置为 [-rwxr-xr--] ,可以使用 chmod u=rwx,g=rx,o=r filename 来设定。
如果我们需要将文件权限均设置为可写,可以使用 chmod a+w filename 来设定。
如果我们需要将文件权限去掉而不更改其它的属性,可以使用 chmod a-x filename 来设定。
1)、cd:[change directory] 切换工作目录。
语法格式为:cd [目录名]
例如:
2)、pwd:[print working directory] 打印当前工作目录。
语法格式为:pwd
只要输入pwd命令就可以打印当前目录,例如:
3)、ls:[list] 打印当前所有目录和文件。
语法格式为:ls [选项] [目录或文件名]
注意:如果ls 命令后边是目录,会显示目录下包含的文件信息,如果是文件名则会显示该文件的信息,如果没有跟任何参数则显示当前工作目录下包含的文件信息。
常用选项:
=======================
简单举例:
4)、mkdir:[make directory] 创建目录。
语法格式为:mkdir [选项] 目录名
常用选项:
5)、cp:[copy] 复制文件或目录
语法格式为:cp [选项] 源文件或目录 目标文件或目录
常用选项:
6)、mv:[move] 移动文件或目录
语法格式为:mv [选项] 源文件或目录 目标文件或目录
常用选项:
7)、rm:[remove] 删除文件或目录
语法格式为:rm [选项] 文件或目录
常用选项:
8)、touch:用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
语法格式为:touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]
关机、重启的命令有:shutdown、reboot、halt、poweroff。其中关机命令用的最多的是shutdown,重启用reboot,所以我们通常只用记住shutdown和reboot这两个目录即可。因为Linux系统的关机、重启是比较重要的操作,所以只有root权限才能操作shutdown、reboot等命令。
1)、shutdown:将系统关机或者重启。
语法格式为:shutdown [选项] 时间 警告
常用选项:
简单举例:
=============================================
2)、reboot:将系统重启,等同于 shutdown –r now
3)、halt:将系统关机,等同于shutdown –h now 和 poweroff
4)、sync:将数据由内存同步到硬盘中。目前shutdown、reboot、halt等命令在关机是都会调用sync这个工具,但是你如果不放心也可以自己多次执行这个目录。
linux中经常会用到将内容输出到某文件当中,只需要在执行命令后面加上>或者>>号即可进入操作。
注意:这两个语法在Shell编程中非常有用,所有我们必须要理解。
简单举例:
tee 是一个在 Unix 和类 Unix 系统(包括 Linux)中的命令行实用程序,它从标准输入读取数据,并将其内容输出到标准输出和一个或多个文件中。
基本的 tee 命令的使用方式如下:
command | tee outputfile
在这个例子中,command 是你想要执行的任何命令,outputfile 是你想要将输出写入的文件名。command 的输出将会同时显示在终端(即标准输出)和 outputfile 文件中。
例如,如果你想要显示一个目录的内容并将结果保存到一个文件中,你可以使用以下命令:
ls -l | tee directory_contents.txt
这将会在终端显示 ls -l 命令的输出,并将相同的输出写入 directory_contents.txt 文件中。
tee 命令的名字来源于 T 形管道的形状,这是一个允许流体同时流向两个方向的管道类型。在这种情况下,数据(或"流体")从 command 流入 tee,然后被分流到标准输出和文件中。
1. 系统/文件/网络
df -lh 查看磁盘的使用情况以及文件系统被挂载的位置
fdisk -l 查看磁盘分区表及分区结构
stat display file or filesystem status
uname "什么系统",-r "查看内核版本"
du "查看文件占用空间"
dmesg "系统信息"
netstat "由于参数众多,不一一详细写,端口信息"
lsmod 命令,用于列出当前 linux 系统中加载的模块。当驱动开发人员编写好驱动代码,并生成驱动代码对应的驱动模块后,可以通过 insmod xxx.ko 将驱动模块(.ko)加载到 linux 操作系统中。最后,通过 lsmod 命令就可以看到 xxx.ko 已经加载到 linux 系统当中了。
cat /proc/cpuinfo
getconf LONG_BIT 查看是32位还是64位
cat /proc/cpuinfo - CPU (i.e. vendor, Mhz, flags like mmx)
cat /proc/interrupts - 中断
cat /proc/ioports - 设备IO端口
cat /proc/meminfo - 内存信息(i.e. mem used, free, swap size)
cat /proc/partitions - 所有设备的所有分区
cat /proc/pci - PCI设备的信息
cat /proc/swaps - 所有Swap分区的信息
cat /proc/version - Linux的版本号 相当于 uname -r
uname -a - 看系统内核等信息
如何看出redhat的版本以及更新版本(7.3?8.0?)
cat /etc/redhat-release
查看PCI信息: lspci
例子: lspci |grep Ethernet 查看网卡型号
查看USB设备: cat /proc/bus/usb/devices
查看键盘和鼠标:cat /proc/bus/input/devices
查看系统硬盘信息和使用情况:fdisk & disk - l & df
查看各设备的中断请求(IRQ): cat /proc/interrupts
dmidecode查看硬件信息,包括bios、cpu、内存等信息
dmesg | more 查看硬件信息
ls /dev 命令用于查看系统中的驱动设备,包括字符设备、块设备。一个驱动模块可以注册多个设备文件。
如字符设备 i2c-0 ~ i2c-4,这5个都是字符设备,它们的主设备号都是 89,此设备号为 0 ~ 4。
同理,块设备 loop0 ~ loop7,它们的主设备号都是 7,此设备号为 0 ~ 7。
查看系统体系结构:uname -a
modprobe 命令是 Linux 系统中用来加载和卸载内核模块的命令。它会在 /1b/modules/$(uname -r)/ 目录下寻找相应的内核模块文件,并将其插入或卸载出内核
在 Ubuntu 系统中,modprobe 命令通常需要使用 sudo 权限来执行,例如:
sudo modprobe some module
这个命令会尝试加载名为 some_module 的内核模块
如果你想查看已经加载的内核模块,可以使用 1smod 命令
Ismod
这个命令会列出当前已经加载的内核模块列表
如果你需要了解更多关于 modprobe 和内核模块的信息,可以查看相关的文档,例如 man modprobe 和 man Ismod。
curl是一个命令行下的web客户端,可以在命令行下执行常见的web访问、自动web请求等操作,之前的文章中虫虫曾经专门介绍过。本文我们来总结一下curl使用代理服务器的用法。
Web代理服务器充当客户端和目标服务器之间的中介。客户端首先访问代理,然后代理执行它并将结果返回给客户端。
有些Web站点是有限制的,我们无法直接通过当前IP直接访问目标站点;还有一些站点对访问请求是有一定限制,而我们在请求数据时候为了请求速度也需要突破IP限制。通过使用代理服务,我们就可以突破上述限制。
Ubuntu作为一款常用的Linux系统,有着Linux下常用的使用命令行操作模式。下面为大家介绍一些管理软件包的常用命令。下面的命令需要在终端下输入,任何实用‘sudo’作为前缀的命令都需要拥有root访问权限,所以会被提示输入密码。
Ubuntu中软件包的查询方法:
Dpkg 使用文本文件来作为数据库.通称在 /var/lib/dpkg 目录下. 通称在 status 文件中存储软件状态,和控制信息. 在 info/ 目录下备份控制文件, 并在其下的 .list 文件中记录安装文件清单, 其下的 .mdasums 保存文件的 MD5 编码.
dpkg -l
如果系统使用时间长,安装了许多包查看不便时,可以使用翻页查看
dpkg -l | lessyexiang@ubuntu:<etc>$ dpkg -l | less
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-===================================-==========================================-============-===============================================================================
ii accountsservice 0.6.40-2ubuntu11.3 amd64 query and manipulate user account information
ii adduser 3.113+nmu3ubuntu4 all add and remove users and groups
ii amd64-microcode 3.20180524.1~ubuntu0.16.04.1 amd64 Processor microcode firmware for AMD CPUs
ii apparmor 2.10.95-0ubuntu2.10 amd64 user-space parser utility for AppArmor
ii apt 1.2.15ubuntu0.2 amd64 commandline package manager
每条记录对应一个软件包, 注意每条记录的第一, 二, 三个字符. 这就是软件包的状态标识, 后边依此是软件包名称, 版本号, 和简单描述.
第一字符为期望值,它包括:
u 状态未知,这意味着软件包未安装,并且用户也未发出安装请求.
i 用户请求安装软件包.
r 用户请求卸载软件包.
p 用户请求清除软件包.
h 用户请求保持软件包版本锁定.
第二列,是软件包的当前状态.此列包括软件包的六种状态.
n 软件包未安装.
i 软件包安装并完成配置.
c 软件包以前安装过,现在删除了,但是它的配置文件还留在系统中.
u 软件包被解包,但还未配置.
f 试图配置软件包,但是失败了.
h 软件包安装,但是但是没有成功.
第三列标识错误状态,可以总结为四种状态. 第一种状态标识没有问题,为空. 其它三种符号则标识相应问题.
h 软件包被强制保持,因为有其它软件包依赖需求,无法升级.
r 软件包被破坏,可能需要重新安装才能正常使用(包括删除).
x 软包件被破坏,并且被强制保持.
也可以以统配符模式进行模糊查询, 比如我要查找以nano字符开始的所有软件包:
dpkg -l nano*
dpkg -L xxx
可以查看该软件安装的目录和文件。
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
可以清除一些残留无用的配置。
apt-cache stats
可以统计已经安装包的数量,大小,占用空间等。
apt-cache show xxx
可以看到某个包的源、版本等信息。
dpkg -S filename :在当前安装的包里查找文件。
apt-cache depends xxx
apt-cache rdepends xxx
yexiang@ubuntu:<etc>$ apt-cache rdepends lirc
lirc
Reverse Depends:
lirc-x
vdr
mythbuntu-live-autostart
mythbuntu-lirc-generator
lirc-x
liblircclient0
kremotecontrol
inputlirc
freevo-lirc
banshee-extension-lirc
apt-cache search filename
dpkg -r 卸载软件包.不是完全的卸载,它的配置文件还存在.
dpkg --info "软件包名" --列出软件包解包后的包名称.
dpkg -l --列出当前系统中所有的包.可以和参数less一起使用在分屏查看.
dpkg -l |grep -i "软件包名" --查看系统中与"软件包名"相关联的包.
dpkg -s 查询已安装的包的详细信息. dpkg -L 查询系统中已安装的软件包所安装的位置.
dpkg -S 查询系统中某个文件属于哪个软件包.
dpkg -I 查询deb包的详细信息,在一个软件包下载到本地之后看看用不用安装(看一下呗).
dpkg -i 手动安装软件包(这个命令并不能解决软件包之前的依赖性问题),如果在安装某一个软件包的时候遇到了软件依赖的问题,可以用apt-get -f install在解决信赖性这个问题.
dpkg -reconfigure 重新配置
dpkg -P 全部卸载(但是还是不能解决软件包的依赖性的问题)
apt-cache 加上不同的子命令和参数的使用可以实现查找,显示软件,包信息及包信赖关系等功能.
apt-cache stats 显示当前系统所有使用的Debain数据源的统计信息.
apt-cache search +"包名",可以查找相关的软件包.
apt-cache show +"包名",可以显示指定软件包的详细信息.
apt-cache depends +"包名",可以查找软件包的依赖关系.
apt-get upgrade 更新系统中所有的包到最新版
apt-get install 安装软件包
apt-get --reindtall install 重新安装软件包
apt-get remove 卸载软件包
apt-get --purge remove 完全卸载软件包
apt-get clean 清除无用的软件包
在用命令apt-get install之前,是先将软件包下载到/var/cache/apt/archives中,之后再进行安装的.所以我们可以用apt-get clean清除/var/cache/apt/archives目录中的软件包.
Debian系统中所有的包信息都在/var/lib/dpkg下.其中/var/lib/dpkg/info目录中保存了各个软件包的信息及管理文件.每个文件的作用如下:
以 ".conffiles" 结尾的文件记录软件包的配置列表.
以 ".list" 结尾的文件记录了软件包的文件列表,用户可在文件当中找到软件包文件的具体安装位置.
以 ".md5sums" 结尾的文件记录了md5信息,用来进行包的验证的.
以 ".config" 结尾的文件是软件包的安装配置角本.
以 ".postinst" 角本是完成Debian包解开之后的配置工作,通常用来执行所安装软件包相关的命令和服务的重新启动.
以 ".preinst" 角本在Debain解包之前运行,主要作用是是停止作用于即将升级的软件包服务直到软件包安装或和升级完成.
以 ".prerm" 脚本负责停止与软件包关联的daemon服务,在删除软件包关联文件之前执行.
以 ".postrm" 脚本负责修改软件包链接或文件关联,或删除由它创建的文件.
/var/lib/dpkg/available是软件包的描述信息.
包括当前系统中所有使用的Debian安装源中所有的软件包,还包括当前系统中已经安装和未安装的软件包.
文章浏览阅读3.5w次。图文记录苹果开发者账号(公司级)和邓白氏编码(D-U-N-S)申请流水过程申请于2015.05-06份,算是较新的版本,有需要可以参考下_legal entity name d-u-n-s庐 number
文章浏览阅读1.1k次,点赞2次,收藏8次。哎呀我的妈妈咪呀,我来讲讲我为啥要写这篇文章。我tm之前用IDEA写Java 电脑项目习惯了,创建项目的时候就直接 新建项目,然后Java > Maven啥的,弄一大堆,然后写好页面和Servlet之后运行tomcat之后,用localhost:8080/项目名称/servlet名直接是找不到资源,搞我心态搞了现在tmb一个月,现在我总算明白了,那个初始模板可能有些插件/模块啥的自己不知道引用哪些,所以先开始总是报红,然后在web.xml里面写也tmd爆红,我真是服了!_idea2023社区版提供web开发吗
文章浏览阅读2w次,点赞9次,收藏49次。引言:黑盒测试是从软件的外部对软件实施测试,也常形容为闭着眼睛测试。在接下来的学习中将介绍几种常用的黑盒测试方法,其中包括等价类划分、边界值分析、决策表测试等。1. 等价类划分测试等价类划分是一种典型的黑盒测试方法,该方法完全不考虑程序的内部结构,只根据对软件的要求和说明,即需求规格说明,把程序输入域划分成若干个部分,然后从每个部分中选取少数有代表性的数据作_一个循环条件为≤时,却错误写成<,用哪种测试方法能够找到这个错误
文章浏览阅读227次。通过对等事务复制可以在拓扑中的任何节点插入、更新或删除数据并将数据更改传播到其他节点。由于可在任何节点上更改数据,因此在不同节点上进行的数据更改可能会相互冲突。如果在多个节点上修改了某一行,则将该行传播给其他节点时可能会导致冲突..._对等冲突检测错误
文章浏览阅读839次,点赞5次,收藏18次。由于互联网技术的快速发展,使得各部门都是以数字化、信息化、无纸化的发展趋势,随着趋势的发展,各种决策系统、辅助系统也应运而生,其中,图片推荐系统就是其中的重要组成部分。
文章浏览阅读1.9w次,点赞2次,收藏6次。在linux上使用bash XXX.sh执行脚本时,提示“for reading(No such file or directory)”。问题原因:因为操作系统是windows,在windows下编辑的脚本,所以有可能有不可见字符。脚本文件是DOS格式的即每一行的行尾以\r\n来标识, 其ASCII码分别是0x0D, 0x0A.解决方法:可以有很多种办法看这个文件是DOS格式的还是U..._linux系统虚拟机中输入vars.sh显示未找到文件
文章浏览阅读7.5k次,点赞3次,收藏12次。浮点数不能精确的表示十进制数,并且即使是最简单的数学运算也会产生误差。该错误是由于浮点数的存储方式引起的。_python float 精度
文章浏览阅读1.3w次,点赞21次,收藏115次。HT合泰单片机入门教程系列文章目录前言一、合泰单片机的优势二、HT-IDE3000安装1.HT-IDE3000下载2.HT-IDE3000安装总结系列文章目录# 第一章 HT单片机环境搭建目录系列文章目录前言一、合泰单片机的优势二、HT-IDE3000安装1.HT-IDE3000下载2.HT-IDE3000安装总结前言工作已经很长一段时间,虽然还是菜鸟一只。但还是有点心得体会。写合泰单片机系列教程的原因:一、是为了记录自己学习过程和学习经历(ps:当初毕业进公司接触到的第一个就是为一款已_合泰单片机入门教程
文章浏览阅读7.1k次。传感器是第二代智能手机的重要标志之一。可以毫不客气地说,现在市面上的Android手机和平板电脑(TV除外)都内置了传感器。否则很多游戏和应用就无法使用了。Android SDK支持的传感器并不是每一部Android设备都支持所有的传感器。大多数Android设备只支持一部分传感器。例如,方向传感器(电子罗盘)、重力传感器(屏幕翻转、赛车游戏等)。动作(Motion)传感器环境(E_导出智能手机中的传感器数据
文章浏览阅读6.4k次,点赞2次,收藏16次。背景**基于公司已给出的结果上做出调整(公司只给出了top10),画KEGG富集通路的气泡图,初始文件如下图代码演示> getwd() #显示工作目录> setwd() #如果上述显示不是想要的路径,可以新建一个文件夹然后设置成工作目录,方便一些原始文件以及结果图片的存放> install.packages("ggplot2",destdir="D:/RData/R-win-4.0.2/R-4.0.2/R-packages",lib="D:/RData/R-win-4.0.2_ggplot 高低通路kegg
文章浏览阅读2.3k次。简介实际上,所有的前台程序都可以分为View以及Model两个层次,Model层使用字面量以及JS特性创建数据模型,并搭载用户数据,View层则以用户友好的方式呈现Model层数据,并提供友好的交互方式。那么如何连接View和Model这两个层次呢?如果写过J2EE程序,那么最经典的连接方式就是MVC模式了,通过控制器进行View以及Model的交互。而另一种异军突起的方式,则是MVVM了,使_vue innerhtml $
文章浏览阅读277次,点赞4次,收藏4次。深度学习人脸识别:InsightFace-REST 全方位解析项目地址:https://gitcode.com/SthPhoenix/InsightFace-RESTInsightFace-REST 是一个基于深度学习的人脸识别 RESTful API 服务,它提供了一个简洁而强大的接口,使得开发者能够轻松地在自己的应用中集成高精度的人脸检测、识别和属性分析功能。项目概述InsightFa...