当前位置: 首页 > 编程日记 > 正文

Unix的轻巧“约取而实得”(上篇)

在经过上机操作实践以及掌握Unix系统相关的基础知识之后,可以说已跨进了迈向成功的门槛。接着要登堂入室,继续专进,就必须更加深入的了解Unix基本命令的功能、使用并掌握一些必备的技巧。这一轮学习会有一定难度,需要强烈的求知欲和进取心作为源动力,因为只有“不满足才是向上的车轮”;同时也需要注重学习方法,善用前人总结的“约取而实得”的经验,巧学精进,迎难攻解,从而达到再上台阶之成效。
一、文件系统的相关命令
佛教《百喻经》中有一则三重楼的喻里,说有一个财主,见到他的邻居盖房子,三层楼盖得很漂亮,他也要盖这样的三层楼房子。见工匠在做地基,他就说不要地基,要直接盖第三层楼,因为第三层最高最漂亮。我们都会觉得这个财主很可笑,但在学习知识的过程中,我们可别老想着第三层而忽视打好地基噢!
文件系统相关的命令是操作Unix系统的基础,在《Unix操作系统的入门与基础》一文中我们曾使用过其中的部分命令,下面就再来仔细学习这些命令的使用,继续打好今后盖“三层楼”的“地基”吧。
(一)目录管理
我们可以通过使用mkdir、rmdir与cd命令来创建、删除目录以及改变工作目录,并通过ls命令列表显示目录内容,以达到对目录的有效管理。
(1)mkdir命令的功能是创建目录,并且可同时创建多个目录,格式如下:
mkdir [-p] directory-name(s)
参数p代表在建立指定目录时,如果其父目录不存在,则一同创建。
[例]
mkdir dir1 dir2 dir3   //在当前目录下建立目录dir1、dir2、dir3
mkdir dir1/dir4       //在当前目录下的dir1子目录中创建目录dir4
mkdir –p dir6/dir7    //在当前目录下,由于不存在dir6目录,则先自动创建目录dir6,
//然后创建其子目录dir7
(2)rmdir命令的功能是删除目录,但其只能删除空目录(即目录中不包含文件),故此命令一般较少使用,在后文中会介绍一个更为常用的删除目录命令。rmdir命令的格式如下:
rmdir directory-name(s)
(3)在进行处理文件等的操作过程中难免需要在不同的目录下工作,这时cd命令就能派上用场了。cd命令的功能是改变当前的工作目录,它的命令格式如下:
cd [directory-name]
cd后面的目录可以是绝对路径,也可以是相对路径。如果cd后面不跟路径名,则是回到用户的主目录。如果大家对此处的一些概念不甚熟悉的话,请参见《Unix操作系统的入门与基础》文中的介绍,此处就不再赘述了。下面来看几个例子:
cd dir1      //进入当前目录中的dir1子目录
cd ..       //进入上级目录,即把工作目录改变成当前目录的父目录
cd ../zcl     //回到父目录,同时再进入zcl子目录中
(注:上述三个命令的路径都为相对路径)
cd /home/anray  //把工作目录改变成根目录中的home目录下的anray子目录
(注:此处路径为绝对路径)
此外,使用pwd 命令可以查看当前的工作目录,它显示的是当前工作目录所处的绝对路径。
(4)ls命令的功能是列表显示指定目录中文件及子目录的信息(其实在Unix系统中目录本身也被视为一个文件,但是为了照顾习惯的思维,在叙述时仍然将其区分为文件与目录两类),缺省输出顺序为纵向按字符顺序排列。它常用的命令格式如下:
ls [-altFR] [directory-name]
参数a代表显示所有类型的文件,包括文件名以“.”为第一个字符的隐藏文件。参数t代表按文件最后修改时间的顺序依次排列文件,参数R将会列出指定目录下以及其所有子目录中的文件,使用参数F将会在列表中的每一个目录后面加上“/”,在每个可执行文件后面加上“*”。参数l代表长列表显示目录内容,即列出文件的类型、访问权限、拥有者、文件大小、修改时间及名称等详细信息。下面将介绍一下长列表显示中的信息的含义,“ls –l”命令的使用如下图所示。
在上图长列表显示文件信息的每一行中,
第一列
第1个字符表示文件的类型;
第2-4个字符表示文件所有者对此文件的访问权限;
第5-7个字符表示用户组对此文件的访问权限;
第8-10个字符表示其他用户对此文件的访问权限;
第二列
文件的链接数
第三列
文件的所有者
第四列
文件的用户组名
第五列
文件所占的字节数
第六至八列
文件上一次的修改时间
第九列
文件名
注:此表格中的一些概念在下文会有详细介绍,这里只需先了解一下即可
(二)文件管理
1、文件的创建、编辑与删除
Unix系统中可以使用touch命令来创建新文件,它的命令格式如下:
touch filename(s)
但要指出,touch命令最常用的功能并不是创建文件,而是改变指定文件(或目录)的最后访问时间和修改时间。它的命令格式如下:
touch [-am] [mmddhhmm[yy]] filename(s)
此命令中,若指定文件不存在,则创建之;若已存在,则将指定文件的访问时间和修改时间按参数的要求进行改变。参数a代表只改变访问时间,参数m代表只改变修改时间。参数mmddhhmm[yy]中每隔两位分别表示“月日时分[年]”,用户可利用此参数指定欲设置的时间,若不带此参数,则会自动使用系统当前的默认时间。
[例] 在当前目录下创建新文件document:
touch document
将刚创建的文件document的访问与修改时间改为2005年10月1日0时0分:
touch -am 1001000005 document
大家可不要小视touch命令的此项作用,在软件的实际开发中,有时它还会与企业的客户关系管理策略或企业经济效益密切关联。倘若你所在企业的开发团队协作精神好,工作效率高,或者是改进了相关技术与流程,使原与客户合同中约定的项目完成日期大大提前,为了屏蔽用户知情,避免节外生枝,该命令就派上大用场了。这事我知你知即可,彼此只能心照不宣噢!
文件创建好之后就需要对此文件的内容进行相应的编辑了,在Unix系统中最常使用的编辑工具是vi,在后文中会有专门的章节进行详细介绍,此处先行略过。
在使用Unix系统一段时间之后,大家可能会发现文件数量正在快速增加,而其中的一部分文件可能已经变得过时,或是没有了使用价值,这时就应该及时利用rm命令将此类文件删除了。rm命令的功能是删除文件或目录,它的命令格式如下:
rm [-i] filename(s)
或  rm –r[i] directory-name(s)
使用参数i的目的是给大家一次“买后悔药”的机会。由于Unix系统中的文件一旦删除将极难恢复,因此在删除文件之前一定要慎重。而参数i的作用是在删除文件之前进行逐一询问提醒,是否确实要删除此文件。如果输入y则删除文件,若输入其他字符,文件则会被保留。使用了带参数r的rm命令可用来删除一个目录以及其所有子目录,此时不必受删除目录必须为空目录的条件限制,因此也就更具危险性,大家在使用前应当慎之又慎。
[例]
rm doc1 doc2 doc3   // 直接删除文件doc1、doc2、doc3
rm –i doc1 doc2 doc3  //在删除文件doc1、doc2、doc3时,每删除一个之前先作提示
rm -ri dir1      //删除目录dir1以及其中所含的所有文件与子目录,删除前先作提示
2、文件的查看
常用的查看文本文件的命令有cat、more、head、tail等,下面将逐一进行介绍。
(1)cat命令可以在屏幕上显示出文本文件的内容,它的命令格式如下:
cat filename(s)
不过cat最常见的用法是配合重定向符来清空文件以及将几个文件合并成为一个文件。重定向符的详细用法请参见本文第二章节的内容。
[例]
cat /dev/null > doc.txt  //清空文件doc.txt,/dev/null代表空设备文件(记住使用即可)
cat < doc1.txt >> doc2.txt  //将doc1.txt中的内容保存在doc2.txt的尾部
(2)使用cat命令查看文本文件时会有一个问题,就是它不会分屏显示文件,这样当文件的内容超出一屏时,除了最后一屏的内容之外,上面的内容都将是一闪而过。当然解决的办法Unix也替我们想好了,就是使用more命令来查看此类文件。more命令的格式如下:
more filename
more命令将会以分页的方式显示文本文件内容。当每次将文件内容显示在屏幕上时,如果内容超出一屏,则会在屏幕的左下部显示“ --more--”,并且在其后面显示百分比表示已显示部分占总内容的比例。此后按回车键则会下滚一行,按空格键则会下翻一屏,按“b”字母键可以返回上一屏,按“h”字母键可以获得关于更多功能的帮助;使用“/”加上字符串可以查找指定字符串的内容信息,找到后可以按“n”字母键继续搜索下一个符合要求的内容信息,按“q”字母键则可退出并返回Shell命令提示符状态。
(3)head & tail 命令
head与tail命令的格式如下:
head [-n] filename(s)
tail [-n] filename(s)
head命令的功能是显示一个或多个文件开头n行的内容,tail命令的功能是显示一个或多个文件最后n行的内容。若没有指定参数n,则系统会默认显示10行内容。
(三)文件与目录的访问权限
1、文件访问权限简介
在Unix系统中每个文件(或目录)都包含有一套权限,这些权限决定了谁能访问该文件以及如何访问该文件。通常文件有三种权限:
权限
普通文件的权限
目录的权限
r
读取文件内容
读取文件名称
w
向文件写入信息
建立和删除文件,可以改变文件名等
x
执行文件
使用该目录中的文件
在Unix系统中有三种不同的用户类型,分别是所有者(owner)、用户组成员(group)、其他用户(other)。所有者是指文件的创建者;用户组成员是指由若干个用户组成的组内成员;而除所有者、用户组成员之外的访问者,统称为其他用户。所有者除拥有相关的访问权限外,还有向另两类用户授权之权限。用户组中的成员在同组内可以共享信息,通常某一类或某一项目中的用户会被Unix系统管理员归为一个用户组,每个用户都被授予能访问同组成员文件的权限。其他用户在所有者的授权下可对文件有读、写或执行的权限。
上文中我们曾提到使用“ls –l”命令来显示文件的访问权限。如图中所示:
以文件myfile1为例:
所有者
用户组
其他用户
权限
rw-
r--
r--
含义
可读、可写、不可执行
可读、不可写、不可执行
可读、不可写、不可执行
2、文件访问权限的设置
使用chmod命令可以修改文件的访问权限,chmod命令的格式分为两种:
格式1:chmod symbolic_mode file(s)
格式2:chmod absolute_mode file(s)
(1)格式1:符号模式(symbolic_mode)的命令格式如下:
chmod who op permission(s) file(s)
参数who表示用户类型,它的内容为以下一项或多项:
u
文件所有者
g
用户组
o
其他用户
a
所有用户
参数op表示操作:
+
表示要增加permission指定的权限
-
表示要取消permission指定的权限
=
设置为permission指定的权限,并取消原设置权限
参数permission为权限类型,它的内容为以下一项或多项:
r
表示可读
w
表示可写
x
表示可执行
[例] 以上图为例,要为myfile1的所有者增加执行权限,用户组增加写权限与执行权限,取消其他用户的读权限,使用命令如下:
chmod u+x,g+wx,o-r myfile1   //为不同用户类型设置权限时用“,”分隔
(2)格式2:绝对模式(absolute_mode)的命令格式如下:
chmod xyz file(s)
参数x、y、z分别代表0-7的数字,用来表示所有者、用户组、其他用户对该文件的访问权限。x、y、z所代表的0-7数字的含义如下:
Value
permission
7
r w x
6
r w -
5
r – x
4
r - -
3
- w x
2
- w -
1
- - x
0
- - -
[例] 用绝对模式来完成符号模式中的例子:
chmod 770 myfile1
从对比中大家应该感受到,符号模式会更加直观一些,而绝对模式的数字含义较难记忆,因此设置文件权限时推荐使用符号模式。
(四)文件与目录的移动复制
在Window系统中,我们最熟悉的操作应该莫过于“Ctrl + C”、“Ctrl + V”、“Ctrl + X”了,因为它为我们节省了大量的时间,带来了极大的便利。而在Unix系统中同样为我们准备了cp、mv命令,利用它们可以实现剪刀加糨糊的操作了:)
1、移动或重命名文件(或目录)
利用mv命令可以将一个文件(或目录)从一个目录移到另一个目录中,也可以用于重命名一个文件(或目录)。mv命令的格式如下:
mv [-i] source-file target-file
或  mv [-i] source-directory target-directory
当target-file为文件名时,则相当于文件重命名,target-directory同理。参数i代表在将文件移动到指定目录中时,若已存在同名文件,则将询问是否覆盖已存在的文件,输入y则覆盖,输入其他字符则中止移动,保留原文件。
[例]
mv beans nuts   //将文件beans重命名为nuts
mv file1 file2 /tmp   //将文件 file1和file2移动到目录/tmp中
mv dir1 /export/home/anray  // 将目录dir1包括其所有文件与子目录都移动到目
                                                       // 录/export/home/anray下
2、复制文件(或目录)
利用cp命令可以将一个文件(或目录)从一个目录复制到另一个目录中,命令格式如下:
cp [-i] source-file(s) destination-directory
或  cp –r[i] source-directory(s) destination-directory
参数i代表在将文件复制到指定目录中时,若已存在同名文件,则将询问是否覆盖已存在的文件,输入y则覆盖,输入其他字符则中止复制,保留原文件。当复制文件到指定目录,或许会期望赋予此复制的文件不同于源文件的文件名,则只需将新文件名放在目标目录名之后,用“/”隔开即可。当需要将一个目录连同它的所有子目录一起复制到目标目录中时,可使用参数r。
[例]
cp beans apple  //将文件beans复制到同目录下并改文件名为apple
cp beans apple dir1 //同时复制两个文件beans与apple到当前目录下的子目录dir1中
cp apple dir2/orange  //将文件apple复制到当前目录下的子目录dir2中,并改名为orange
cp -r dir1 dir2       //将目录dir1中的所有文件以及其所有子目录复制到目录dir2中
(五)其它常用命令
1、man命令
man命令用于查看帮助信息,常用的命令格式有:
man name
或   man –k keyword
[例]
man      //查看man的使用方法
man ls    //查看ls命令的帮助信息
在查看帮助信息过程中,按回车键则会下滚一行,按空格键则会下翻一屏,按“b”字母键可以返回上一屏,使用“/”加上字符串可以查找指定字符串的内容信息,找到后可以按“n”字母键继续搜索下一个符合要求的内容信息,按“q”字母键则可退出并返回Shell命令提示符状态。
2、clear命令
clear命令的功能是清理屏幕,每次操作Unix系统时间长了,屏幕上的信息难免显得有些凌乱,这时clear一下是不是觉得眼前一下子“清静”了许多:)
3、date命令
date命令的功能是显示系统时间,并可修改系统时间。date命令的格式如下:
date [mmddhhmm[yy]]
date命令后若无参数,则会显示系统当前的默认时间。若要修改系统时间,则输入参数的顺序依次为“月日时分年”。如要将当前系统时间修改为2005年10月1日0时0分,则可使用如下命令:
date 1001000005
4、cal命令
cal命令的功能是显示日历。
[例1] 要查看2005年的全年日历:
cal 2005
[例2] 要查看2005年5月份的日历:
cal 5 2005
二、特殊字符的使用
先说一个事例:一次有位朋友问我有没有办法把某英语辅导软件中加密的数据搞到手,我想也没想,立刻翻箱倒柜去找出各种解密工具。大半个小时后,正在我毫无头绪之际,这位朋友跑来说自己已搞掂了这个软件的使用授权。问他,说只是给软件作者打了个电话。由此想到Unix中的一些特殊字符,往往平时操作中不曾想到去用它,而是墨守成规地进行自己所熟悉的步骤,实际上是在用那些老笨的方法。如能想到并熟知Unix中特殊字符的功能及使用技巧,就会像我这位聪明的朋友一样取得事半功倍的效果。
(一)通配符的使用
文件名是命令中最常见的参数,大家可能经常会碰到这样的情况,就是仅知道文件名的一部分,或者是想同时引用多个具有相同扩展名或以相同字符串开头的文件。Shell中提供了一套被称作通配符的符号,它们能搜索、匹配并产生一个文件名列表,通配符包括“*”、“?”、“[]”。用户执行以包含通配符的文件名为参数的命令之后,Shell会自动去搜索匹配文件并返回所发现的一个文件名列表,然后Shell就会用这些文件名作为命令的参数了。
星号“*”用于指代以特定字符串开始或结束的文件名,问号“?”代表文件名称中的单一字符,即“*”可替代文件名中任意长度的字符串,而“?”只能替代一个字符。方括号“[]” 的作用是使用户确定所需搜索的有效字符集,任何在“[]”里的字符都将被匹配。此外,在“[]”中可使用“-”来指定一个字符集范围,这样就不必手动的一个个列出来了。
请看下面的例子:
假设当前目录下有8个文件doc1,doc2,doc3,docA,docB,docC,docD,document,分别对其进行如下操作:
ls doc*  //显示出doc1,doc2,doc3,docA,docB,docC,docD,document
ls doc?  // 显示出doc1,doc2,doc3,docA,docB,docC,docD
ls doc[13AD]  // 显示出doc1,doc3,docA,docD
ls doc[A-C]    // 显示出docA,docB,docC
ls doc[1-8]  // 显示出doc1,doc2,doc3
(二)命令分隔符“;”的使用
有时某些用户可能想在一行中运行多个命令,那么可以在这一行中输入多个命令,命令间用“;”相隔,如:
mkdir tmp; cp file1 tmp/file2; ls -l tmp
Unix会顺序执行以上三条命令,要注意的是在命令间使用分隔符“;”,只代表命令执行的先后顺序。
(三)重定向符的使用
用户欲执行一个命令,当然是要先输入此命令,系统默认的标准输入设备是键盘,而执行命令后的结果通常显示在系统默认的标准输出设备显示器上。但是,Unix系统具有重定向功能,即将标准输出重定向则可将命令的处理结果存入指定的文件,而非显示在屏幕上;将标准输入重定向则可把指定的数据文件作为输入源,而非从键盘输入数据。
重定向符如下:
<
从一个文件或设备重定向输入
>
重定向输出到一个文件或设备,如文件不存在则创建该文件,如文件已存在则覆盖该文件
>>
重定向输出到一个文件或设备,并将输出信息追加到已存在文件的尾部
例如:
cal 5 2005 > doc1.txt   //将2005年5月份的日历保存在文件doc1.txt中
cal 6 2005 >> doc1.txt  //将2005年6月份的日历保存在文件doc1.txt尾部
//此时文件doc1.txt中保存了5、6两个月的日历
cat < doc1.txt > doc2.txt  //将doc1.txt作为输入源,把其中的内容保存在doc2.txt中
(四)管道符“|”的使用
有时可能会需要将一个命令的标准输出发送给另一个命令使用,而非发送到一个目标文件,这时就需要使用Unix提供的管道符“|”在这两个命令间架起一条连接管道。管道符“|”的作用就是从“|”左边的命令接受输出数据并发送给“|”右边的命令作为输入数据。
如:ls -l /etc | more
管道符“|”的功能非常强大且很有用,利用它可以实现一些复杂的操作。在下一节关于信息查找命令部分,我们将会看到它的一些应用。
(五)其它特殊字符
美元符“$”是一个特殊操作符,当其置于变量名前面时,变量名会被变量值所代替。因此通常都是通过在变量名前加上“$”来引用该变量的值,“$”也常被称为变量取值符。
Unix中可以使用三种引号符:
(1)单引号(’ ’):功能是让系统原样输出单引号中所含的内容。
(2)双引号(“ ”):双引号中的字符串若含有通配符,则系统会先进行通配后再输出;若含有变量取值符“$”,则系统会先进行变量取值后再输出。
(3)反引号(` `):反引号中所含的内容必须是一个命令,这样它会先执行此命令,然后把命令执行的结果返回输出。
对于上述几个特殊字符,在下文关于Shell脚本编程部分大家会看到具体的应用例子。此外,常见的特殊字符还有“.”代表用户所在的当前目录,“..”代表用户所在的当前目录的父目录,“~”代表用户登陆系统的主目录。

转载于:https://www.cnblogs.com/jacklaw/archive/2007/05/24/758252.html

相关文章:

操作系统2--操作系统结构

操作系统结构 操作系统的结构需要从这几个方面来考虑:他为用户提供了哪些服务和界面,系统各个组成部分及其相互关系 操作系统的操作 大致可分为:进程管理,主存管理,文件管理,辅存管理和IO管理 进程管理 进程的创建和结束进程的挂起和恢复进程锁\进程交互\进程死锁的规则内存管理…

Windows环境下启动Mysql服务提示“1067 进程意外终止”的解决方案

2019独角兽企业重金招聘Python工程师标准>>> 在Windows服务里启动Mysql服务时提示“1067 进程意外终止”。 此时我们打开计算机管理查看Windows日志&#xff0c;如下图所示&#xff1a; 完整错误提示如下&#xff1a; The server option lower_case_table_names is …

不使用任何框架实现CNN网络

文章目录一、 问题描述二、 设计简要描述三、程序清单四、结果分析五、调试报告六、实验小结一、 问题描述 基于Numpy和函数im2col与col2im来实现一个简单的卷积神经网络&#xff0c;将其用于手写体识别。 二、 设计简要描述 机器学习的三个基本步骤—— 程序设计思路——(…

关于刘冬大侠Spring.NET系列学习笔记3的一点勘正

诚如他第22楼“只因渴求等待”提出的疑问一样&#xff0c;他的下面那一段代码是存在一点点问题的&#xff0c; XElement root XElement.Load(fileName);var objects from obj in root.Elements("object") select obj; 如果照搬照抄刘冬大侠的这段代码那是不会成功读…

什么叫做KDJ指标

什么叫做KDJ指标 KDJ指标的中文名称是随机指数&#xff0c;最早起源于期货市场。 KDJ指标的应用法则KDJ指标是三条曲线&#xff0c;在应用时主要从五个方面进行考虑&#xff1a;KD的取值的绝对数字&#xff1b;KD曲线的形态&#xff1b;KD指标的交叉&#xff1b;KD指标的背离&a…

vim常用命令总结 (转)

在命令状态下对当前行用 &#xff08;连按两次&#xff09;, 或对多行用n&#xff08;n是自然数&#xff09;表示自动缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n排版&#xff0c;相当于一般IDE里的code format。使用ggG可对整篇代码进行排版。 vim 选择文本&…

敏捷过程、极限编程和SCRUM的关系

极限编程是最知名的敏捷开发过程&#xff0c;SCRUM是最经典的极限编程。 层次关系从大到小是&#xff1a;敏捷过程>极限编程>SCRUM

C#双面打印解决方法(打印word\excel\图片)

最近需要按顺序打印word、excel、图片&#xff0c;其中有的需要单面打印&#xff0c;有的双面。网上查了很多方法。主要集中在几个方式解决 1、word的print和excel的printout里设置单双面 2、printdocument里的printsettings的duplex设置单双面 试过之后效果都不好&#xff0c;…

【leetcode】589. N-ary Tree Preorder Traversal

题目如下&#xff1a; 解题思路&#xff1a;凑数题1&#xff0c;话说我这个也是凑数博&#xff1f; 代码如下&#xff1a; class Solution(object):def preorder(self, root):""":type root: Node:rtype: List[int]"""if root None:return []re…

MSDN Visual系列:创建Feature扩展SharePoint列表项或文档的操作菜单项

原文&#xff1a;http://msdn2.microsoft.com/en-us/library/bb418731.aspx在SharePoint中我们可以通过创建一个包含CustomAction元素定义的Feature来为列表项或文档添加一个自定义操作菜单项(Entry Control Block Item)。我们可以添加自定义命令到默认的SharePoint用户界面中。…

评审过程中,A小组发现了5个缺陷,B小组发现了9个缺陷,他们发现的缺陷中有3个是相同的。请问:还有多少个潜在的缺陷没有发现?

分析&#xff1a;这一个“捉-放-捉”问题 背景&#xff1a; 求解&#xff1a; 可以将A看成是第一次捕捉&#xff0c;发现了5个缺陷&#xff0c;全部打上标记 B看成是第二次捕捉&#xff0c;发现了9个缺陷&#xff0c;其中有3个有标记 那么可以算出系统中一共存在的缺陷数量为…

Dell PowerVault TL4000 磁带机卡带问题

最近一段时间Dell PowerVault TL4000 磁带机故障频繁&#xff0c;昨天我在管理系统里面看到Library Status告警&#xff1a;HE: sled blocked, error during sled movement to rotation position Code: 8D 07 &#xff0c;Dell工程师根据Code: 8D 07判断是磁带卡带了&#xff0…

【git】git入门之把自己的项目上传到github

1. 首先当然是要有一个GIT账号&#xff1a;github首页 2. 然后在电脑上安装一个git&#xff1a;git首页 注册和安装这里我就不说了。我相信大家做这个都没有问题。 3. 上述两件事情做完了&#xff0c;就登陆到github页面 1&#xff09;首先我们点标注【1】的小三角&#xff0c;…

Java面试查漏补缺

一、基础 1、&和&&的区别。 【概述】 &&只能用作逻辑与&#xff08;and&#xff09;运算符&#xff08;具有短路功能&#xff09;&#xff1b;但是&可以作为逻辑与运算符&#xff08;是“无条件与”&#xff0c;即没有短路的功能&#xff09;&#xf…

selenium之frame操作

前言 很多时候定位元素时候总是提示元素定位不到的问题&#xff0c;明明元素就在那里&#xff0c;这个时候就要关注你所定位的元素是否在frame和iframe里面 frame标签包含frameset、frame、iframe三种&#xff0c;frameset和普通的标签一样&#xff0c;不会影响正常的定位&…

(C++)将整型数组所有成员初始化为0的三种简单方法

#include<cstdio> #include<cstring>int main(){//1.方法1 int a[10] {};//2.方法2 int b[10] {0};//3.方法3 注意&#xff1a;需要加 <cstring>头文件 int c[10];memset(c,0,sizeof(c));for(int i0;i<9;i){printf("a[%d]%d\n",i,a[i]);}prin…

(C++)对用户输入的整形数组进行冒泡排序

#include<cstdio>//冒泡排序的本质在于交换 //1.读入数组 //2.排序 //3.输出数组 int main(){int a[10];printf("%s","请依次输入数组的10个整型元素&#xff1a;\n");for(int i0;i<9;i){scanf("%d",&a[i]);} int temp 0;for(int …

U3D的Collider

被tx鄙视的体无完肤&#xff0c;回来默默的继续看书&#xff0c;今天看u3d&#xff0c;试了下collider,发现cube添加了rapidbody和boxcollider后落在terrain后就直接穿过去了... 找了一会原因&#xff0c;看到一个collider的参数说明&#xff1a; 分别选中立方体和树的模型&…

限制程序只打开一个实例(转载)

当我们在做一些管理平台类的程序&#xff08;比如Windows的任务管理器&#xff09;时&#xff0c;往往需要限制程序只能打开一个实例。解决这个问题的大致思路很简单&#xff0c;无非是在程序打开的时候判断一下是否有与自己相同的进程开着&#xff0c;如果有&#xff0c;则关闭…

dao.xml

<select id"selectItemkindByPolicyNo" resultMap"BaseResultMap" parameterType"java.util.List"> select * from prpcitemkind kind where kind.PolicyNo in <foreach collection"list" item"item&q…

(C++)字符数组初始化的两种方法

#include<cstdio> //字符数组的两种赋值方法 int main(){//1.方法一char str1[14] {I, ,l,o,v,e, ,m,y, ,m,o,m,.};for(int i 0;i<13;i){printf("%c",str1[i]);}printf("\n");//2.方法二&#xff0c;直接赋值字符串(注意&#xff0c;只有初始化…

SQL Server 中update的小计

update中涉及到多个表的&#xff1a; 1.update TableA set a.ColumnCb.ColumnC from TableA a inner join TableB b on a.ColumnDb.ColumnD 这样是不对的&#xff0c;报错如下&#xff1a; 消息 4104&#xff0c;无法绑定由多个部分组成的标识符 “xxxx” 虽然前面的TableA和后…

MFC中的字符串转换

在VC中有着一大把字符串类型。从传统的char*到std::string到CString&#xff0c;简直是多如牛毛。期间的转换相信也是绕晕了许多的人&#xff0c;我曾就是其中的一个。还好&#xff0c;MS还没有丧失功德心&#xff0c;msdn的一篇文章详细的解析了各种字符串的转换问题&#xff…

tf.nn.relu

tf.nn.relu(features, name None) 这个函数的作用是计算激活函数 relu&#xff0c;即 max(features, 0)。即将矩阵中每行的非最大值置0。 import tensorflow as tfa tf.constant([-1.0, 2.0]) with tf.Session() as sess:b tf.nn.relu(a)print sess.run(b) 以上程序输出的结…

(C++)字符数组的四种输入输出方式

scanf/printf%s getchar()/putchar() 前者不带参数后者带 gets()/puts() 二者都带参数&#xff0c;为一维字符数组或二维字符数组的一维 运用指针scanf/printf或getchar/putchar #include<cstdio> //字符数组的3种输入输出方式int main(){//1.scanf/printf%schar st…

css制作对话框

当你发现好多图都能用css画出来的时候&#xff0c;你就会觉得css很有魅力了。//我是这么觉得的&#xff0c;先不考虑什么兼容问题 像漫画里出现的对话框&#xff0c;往往都是一个对话框然后就加入一个箭头指向说话的那一方&#xff0c;来表示这个内容是谁述说的。 今天认真学了…

Git相关二三事(git reflog 和彩色branch)【转】

转自&#xff1a;https://www.jianshu.com/p/3622ed542c3b 背景 git太常用了&#xff0c;虽然&#xff0c;用起来不难&#xff0c;但也有很多小技巧的东西... 1. 后悔药 哪天不小心&#xff0c;写完代码&#xff0c;没commit,直接reset了或者checkout了&#xff0c;怎么办&…

MS SQL入门基础:备份和恢复系统数据库

系统数据库保存了有关SQL Server 的许多重要数据信息&#xff0c;这些数据的丢失将给系统带来极为严重的后果&#xff0c;所以我们也必须对系统数据库进行备份。这样一旦系统或数据库失败&#xff0c;则可以通过恢复来重建系统数据库。在SQL Server 中重要的系统数据库主要有ma…

(C++)输入输出字符矩阵(二维字符数组)的三种方法

想输出一个这样的字符矩阵 CSU ZJU PKUscanf和printf #include<cstdio> #include<cmath>int main(){char schools[3][3];printf("请输入&#xff1a;\n");for(int i0;i<2;i){scanf("%s",schools[i]);}printf("以下为输出&#xff1a…

C# async await 学习笔记2

C# async await 学习笔记1&#xff08;http://www.cnblogs.com/siso/p/3691059.html&#xff09; 提到了ThreadId是一样的&#xff0c;突然想到在WinForm中&#xff0c;非UI线程是无法直接更新UI线程上的控件的问题。 于是做了如下测试&#xff1a; using System; using System…