8.30 总结

1、总结文本编辑工具vim的使用方法;

vim是一种可视化的编辑器

有三种模式:编辑模式、插入模式、末行模式;(使用vim打开文件时默认是处于编辑模式)

模式间的转换:

编辑模式à插入模式

i   在光标所在处插入

a   在光标所在处的后一位进入插入

I   在光标所在行的行首进入插入模式

A   在光标所在行的行尾进入插入模式

o   在光标所在行的下方,另起一新行并进入插入模式

O   在光标所在行的上方,另起一新行并进入插入模式

插入模式à编辑模式

按ESC键即可

编辑模式à末行模式

:   冒号

末行模式à编辑模式

一下或者连续两下ESC按键

退出vim的操作

编辑模式下的ZZ可以执行保存退出(不常用)

:q    在文本内容没有发生变化时可以直接使用q退出

:q!    强制退出,放弃编辑的内容

:wq   正常的保存退出

:wq!   强制保存退出(一般只有root才用的上,root可以忽视文件只读状态)

:w    保存,但不退出

:w!   强制保存,但不退出

光标移动

在编辑模式下hjkl

h    向左移动一下   等同于方向键向左箭头

l    向右移动一下   等同于方向键向右箭头

j    向下移动一下(马老说j是小日本下流)    等同于方向键向下箭头

k    向上移动一下    等同于方向键向上一下

也可以#{h|j|k|l}(#代表数字)

比如:5h就是向左移动5个字符,同理5l就是向右移动5个字符、5j向下5下、5k向上5下

单词之间的移动

编辑模式下

w    跳到下个单词的词首

e    跳到下个单词的词尾

b    调到上个单词的词首

同样支持#{w|e|b}

一次移动#个位置,如:

3w   等于按了3次w,跳到光标处向右第三个单词的词首

3e   跳到从光标所在的单词或向右三个单词的词尾

3b   跳到前三个单词的词首

行首、行尾之间的快速跳转

编辑模式下

0   数字零,跳转至绝对的行首,实际试验中是跳到相对行首而不是绝对行首??

^   脱字符,跳转至行首,如果行首是空白字符,则跳到行首的首字母上

$   跳转至行尾

句子间跳转(不常用)

编辑模式下

)  下一句

(  上一句

段落之间跳转(不常用)

编辑模式下

}   下一段

{   上一段

行间移动

编辑模式下

#G   跳转到指定行,如8G,就是跳转至第八行的行首

G    跳转至文章的尾行

gg   跳转至文章的首行

末行模式下,直接指明数字即可完成跳转

:3    代表跳至第三行

编辑操作

编辑模式下

x   删除光标所在的字符

#x   一次删除#个字符(向右)

dd   删除一整行

#dd   删除连同本行以及向下一共#行

d可以结合单词跳转、行首、行尾跳转完成定位删除,如:

dw   删除光标所在处至下个单词词首之间的字符

de   删除光标所在处至下个单词尾部之间的字符,基本上算是删除下个单词

db   删除光标所在处至上个单词词首之间的字符

d^   删除光标所在处至行首之间的字符

d$   删除光标所在处至行尾之间的字符

d0   删除光标所在处至行首之间的字符(绝对行首)

#d{w|e|b}  一次删除多个

p    粘贴(put ,paste)可以粘贴最后一次删除的内容

p    小写,粘贴光标之后

P    大写,粘贴光标之前

行级别的粘贴,p(小写)光标所在行向下另起一新行粘贴,P(大写)光标所在行向上另起一新行粘贴

y   复制操作,使用方法和d一样

yy   复制一整行

#yy   向下连同本行一共#行进行复制

和d一样可以结合单词、行首、行尾的跳转动作进行复制

dw   复制光标所在处至下个单词词首之间的字符

de   复制光标所在处至下个单词词尾之间的字符

db   复制光标所在处至上个单词词首之间的字符

y^   复制光标所在处至行首之间的字符

y$   复制光标所在处至行尾之间的字符

#y{w|e|b}  一次复制多个

c   change,替换操作

cc  删除整行并进入插入操作

#cc   连同本行向下一共#行删除并进入插入操作

c^   删除光标所在处至行首之间的内容,并进入插入操作

c$   删除光标所在处至行尾之间的内容,并进入插入操作,与C(大写)效果一样

cw   删除光标所在处至下个词的词首之间的字符并进入插入操作

ce   删除光标所在处至下个词的词尾之间的字符并进入插入操作

cb   删除光标所在处至上个单词词首之间的字符并进入插入操作

#c{w|e|b}  一次替换多个

r   替换光标所在处的单个字符,一次只做一次替换

撤销动作

u   undo  撤销修改

#u   撤销#次修改(默认只保存50次修改)

Ctrl+r    还原撤销内容

.   重复上一次动作

编辑模式下的翻屏操作

Ctrl+f    下一屏

Ctrl+b    上一屏

Ctrl+d    向下半屏

Ctrl+u    向上半屏

文本搜索

/PATTERN    从头部向下搜索

?PATTERN    从尾部向上搜索

n           下一个

N           上一个

文本替换操作(末行模式)

地址定界

:startline[,endline]

:#  第#行

:.  当前行

:$  尾行

:%  全文

:+#  指定位置向下#行

:-#  指定位置向上#行

如   :10,+8d  删除10到18行的内容;  :10,-8d   删除10行到第2行的内容

文本替换命令(末行模式)

格式    s/要查找的内容/要替换的内容/修饰符

其中”/”  是分隔符,可以使用查找或替换中不包含的符号来替换,如@、#等

“要查找的内容”   支持正则表达式

“要替换的内容”   不支持正则表达式,但可以使用后向引用\1  \2 ……

修饰符   i表示忽略大小写,g表示全局global

PS:“要替换的内容”使用&引用“要查找的内容”的全部内容

多文件模式

vim   [option ]  file ……

+#   打开文件并跳转至第#行,vim +3  file,打开file并定位至第3行

:next  下一个文件

:prev   上一个文件

:first  第一个文件

:last   最后一个文件

:wall   全部保存

:qall   全部退出

:wqall  全部保存退出

多窗口模式

vim  -o  file1  fiel2 ……   水平分割打开多个文件

vim  -O file1  fiel2 ……   垂直分割打开多个文件

窗口之间跳转ctrl+w,arrow(方向键)

单个文件也可以进行窗口分割

Ctrl+w,s    水平分割

Ctrl+w,v    垂直分割

显示属性定义(末行模式)

:set  nu  显示行号      :set nonu关闭显示行号

:set  hlsearch  搜索高亮显示    :set  nohlsearch 关闭搜索高亮

:set  autoindent (:set ai)   开启自动缩进   :set noautoindent  (:set noai)

:set  ignorecase (:set ic)  忽略大小写      :set  noignorecase  (:set noic)

:set showmatch  (:set sm) 开启高亮显示括号配对   :set noshowmatch  (:set nosm)

vim配置文件

全局配置文件  /etc/vimrc

个人配置文件  ~/.vimrc  默认不存在,新建保存即可

2、总结文件查找命令find的使用方法;

文件查找功能可以使用locate和find

locate   根据数据库查找文件,所有查找的结果不会很全,必要时执行updatedb更新数据库

find 用法

find  [option] [PATH]  [条件]  [处理动作]

查找条件:

根据名称来查找

-name “文件名”  文件名写法支持globbing(通配符)

-iname  “文件名”  忽略文件名大小写

根据属主、属组来查找

-user  unsername

-group  groupname

-uid  #   根据uid查找

-gid  #   根据gid查找

-nouser     查找没有属主的文件

-nogroup    查找没有属组的文件

条件组合,与、或、非

-a    查找条1 -a  查找条件2 –a……   -a可省略

-o    查找条件1 –o 查找条件2 –o ……

-not   使用!也行

按照文件类型查找

-type

f    普通文件

d    目录文件

l    链接文件

b    块文件

c    字符文件

p    管道文件

s    套接字

按照文件大小查找

-size  +|-   常用单位有K M G

-size   #k    查找大于#-1 小于等于#k的文件

-size   +#k   查找大于#k的文件

-size   -#k   查找小于等于#-1k的文件

根据时间戳查找

以天为单位

-atime   [ +|-]  #

-ctime   [ +|-] #

-mtime   [ +|-] #

举个例子:

-4  表示小于等于4

4   表示大于4但小于5天

+4  表示大于等于5天

以分钟为单位

-mmin

-cmin

-amin

根据权限查找

-perm [+|-] MODE

指明MODE不是+、- 表示精确匹配

+   任何一类的权限,只要对应用户位能够包含其中一类即可

-   每一类用户权限都要包含对应位的权限

处理动作

-print   结果输出值屏幕,默认及时如此

-ls     显示详情

-exec  COMMAND {}  \;  直接执行没有交互提醒操作,{}代表find搜索到的值,\;是固定语法格式结尾

-ok   COMMAND {} \;   效果等同于-exec ,但是每一步操作需要用户确认,有交互提醒

注意:

find  能够一次性找到所有符合条件的文件,并一同传递给后面的命令,但有些命令不支持过长的参数,可以使用:

find  XXXX |  xargs COMMAND

3、总结bash环境变量的相关内容;

bash配置文件生效范围,存在两类:

全局类

/etc/profile  /etc/profile.d/*.sh

/etc/bashrc

个人类

~/.bash_profile

~/.bashrc

按照功能划分(profile类、bashrc类)

profile类,为交互式登录shell提供配置

/etc/profile  /etc/profile.d/*.sh

~/.bash_profile

功用:1、定义环境变量如PATH PS1等;2、运行的命令脚本

bashrc类,为非交互式登录shell提供配置

/etc/bashrc

~/.bashrc

功用:1、定义命令别名;2、定义本地变量

变量类型

环境变量    作用于当前shell进程及子进程

本地变量    作用于当前shell进程,子进程不生效

局部变量    作用与仅当前shell进程中某代码片段

位置变量    $0 $1 $2  ……

特殊变量    $?

变量定义方式:

bash内嵌变量,可以直接调用,其中内嵌了如PATH  PS1等

用户自定义变量

变量名=值   变量存储格式默认均采用字符形式,可以不经声明之间使用

查看:set

pstree  命令,查看进程树

定义环境变量

export  变量名=值   本地变量声明为环境变量

declare  -x  变量名=值   等同于export

查看:env  printenv export

撤销变量

unset  变量名

引用变量

${变量名}

bash中引号的作用

“”  双引号,弱引用

‘’  单引号,强引用

``    反引号,引用其命令执行的结果

交互式、非交互式登录shell的区别:

交互式:需要输入用户名和密码 ,如终端登录;  su -  username用户切换

非交互式:不需要输入用户名和密码,如图形界面下右击打开终端 ;  su  username切换(不加-)

配置文件的作用次序

交互式:

/etc/profile à /etc/profile.d/*.sh à /etc/bashrc  à  ~/.bash_profile à ~/.bashrc

非交互式

~/.bashrc  à /etc/bashrc à /etc/profile.d/*.sh

编辑配置文件后生效方法:

可以重新登录shell; source  file  或者./PATH/FILE 执行(注意重复执行,结果可能或重复添加)

4、总结Linux文件系统上的特殊权限(SUID、SGID、Sticky)的知识点;

进程的安全上下文

前提是进程有属主,文件有属主和属组

1、用户能否将某个可执行文件启动为进程,取决于用户对文件有没有执行权限

2、程序启动后,程序的属组就是用户,即程序的发起者,进程的属组是发起者的基本组

3、进程拥有的访问权限,取决于其属组的访问权限

进程的属主同文件的属主,则应用属主权限

进程的属主同文件的属组,则应用属主权限

否则应用文件的其他权限

特殊权限

SUID

如果属主有执行权限,显示为s  ,否则显示为S

功用:对于一个可执行的文件来敬,任何用户运行此程序为进程时,进程的属主不在是发起者本人,而是可执行程序文件自己的属组

chmod u+s    添加UID权限

SGID

功用:当目录的属组有写权限,且拥有SGID权限时,那么所有属于此目录的属组,且以属组身份在此目录新建文件或目录是,新文件或目录的属组不是创建者所属的基本组,而是目录的属组

chmod g+s  DIRECTORY

特殊权限位sticky

chmod o+t

除了root和文件的属主用户有删除文件,其他人都不可以删除

5、总结Linux磁盘管理、文件系统相关知识点及其相关命令的使用方法;

硬盘分类

机械式硬盘

SSD固态硬盘

机械式

track  磁道

sector  扇区  512bytes

cylinder  柱面,分区的基本单位

MBR  master boot record

512bytes

其中前446字节:bootloader

64  filesystem allocation  table (FAT)

每16个字节表示一个分区

硬盘接口类型

IDE

SCSI

SATA

SAS

USB

设别硬盘设备:/dev/sd[a-z],标记同一设备上的不通过分区/dev/sd[a-z][1-]

1-4  主分区或扩展分区标识

5+  逻辑分区标识

设备文件也称为特殊文件

[[email protected] ~]# ll /dev/sda*
brw-rw---- 1 root disk 8, 0 Aug 24 16:33 /dev/sda
brw-rw---- 1 root disk 8, 1 Aug 24 16:33 /dev/sda1
brw-rw---- 1 root disk 8, 2 Aug 24 16:33 /dev/sda2
brw-rw---- 1 root disk 8, 3 Aug 24 16:33 /dev/sda3
brw-rw---- 1 root disk 8, 4 Aug 24 16:33 /dev/sda4
brw-rw---- 1 root disk 8, 5 Aug 24 16:33 /dev/sda5

设备号:

主设备号major (8)     次设备号minor  (0-5)

major   设备类型

minor   同一类型下不同设备

分区原因:分割存储空间,为多个小的空间,每个空间可以独立使用文件系统

分区工具

常见:fdisk   parted  sfdisk

fdisk  命令   (据说:同一块硬盘上最多支持管理15个分区)

-l   DEV 列出磁盘信息

fdisk  DEV    分区管理自命令

p  显示

n  创建

d   删除

t   修改磁盘id

l   列出支持的ID

w  保存退出

q   放弃修改并退出

创建完成之后,查看内核是否已经识别新的分区

cat /proc/partions

重读磁盘分区

centos5:   partprobe  【DEVICE】

centos6、7:  partx   kpartx

partx

-a   add

-n  number

partx -a -n /dev/sda6   添加sda6到内核

partx  -a  -n  4:6 /dev/sda    一次添加4-6分区

partx   -a DEVICE,全部添加,不过已添加的会报错

kpartx  -af DEVICE  强制添加硬盘分区

Linux 文件系统管理

Linux 文件系统:  ext2  ext3  ext4  xfs btrfs swap

光盘文件系统:  iso9660

windows:  fat32  ntfs

网络文件系统:  nfs   cifs

日志型文件系统:  (ext3  ext4xfs  btrfs)

swap 交换分区(把硬盘空间当作内存来使用)  内存不足时,把暂时不用的放到swap中存放,类似于windows中的虚拟内存

创建文件系统

在分区上执行格式化(高级格式化)

创建工具mkfs

检测工具fsck(fsck.ext4用来检测ext4系列)

mkfs  -t TYPE  DEVICE

blkid  DEVICE   查看分区LABEL  UUID,文件系统类型等信息

mkfs -t ext4  = mkfs.ext4

ext 系列文件系统的专用管理工具

mke2fs  -t  {ext2|ext3|ext4}

-b   BLOCK  1024  2048 4096  字节

-L    LABEL   设定卷标

6、复制/etc/grub.cfg配置文件至/tmp目录,用查找替换命令删除/tmp/grub.cfg文件中的行首的空白字符;

Centos6中没有grub.cfg,使用/etc/grub.conf来演示

:%s/^[[:space:]]//

7、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首加一个#; 原有空白字符保留;

:%[email protected]^\([[:space:]]\)@#\[email protected]

为什么不用/进行分割?因为后面用到了\(\),所以看上去不够一目了然,所以使用@来进行分割

8、替换/tmp/functions文件中的/etc/sysconfig/init为/var/log;

:%s#/etc/sysconfig/init#/var/log#

还可以使用#进行分割,如果查找或者替换的内容中不含这个字符

9、删除/tmp/functions文件中所有以#开头,且#后面至少跟了一个空白字符的行的行首#;

:%[email protected]^#\([[:space:]]\)@\[email protected]

要查找的内容中可以有正则表达式,而替换中的内容不可以有,但可以使用后项引用(\1)

10、查找/var目录属主为root,且属组为mail的所有文件;

[[email protected] ~]# find  /var/ -user root -group mail -ls
525473    4 drwxrwxr-x   2 root     mail         4096 Sep  2 10:12 /var/spool/mail

11、查找/usr目录下不属于root、bin或hadoop的所有文件;

[[email protected] ~]# find /usr/  -not \( -user root -o -user bin -o -user hadoop \) -ls
402139   12 -rwsr-xr-x   1 abrt     abrt        10296 Jul 25 00:08 /usr/libexec/abrt-action-install-debuginfo-to-abrt-cache

注意事项:-not后面的\(\) 前后需要空格隔开

12、查找/etc目录下最近一周内其内容修改过,且属主不为root或hadoop的所有文件;

[[email protected] ~]# find /etc/ -mtime -7 -not \( -user root -o -user hadoop \) -ls
1179660    4 drwxr-xr-x   2 779      hadoop       4096 Sep  2 13:38 /etc/mytest

13、查找当前系统上没有属主或属组,且最近一周内曾被访问过的所有文件;

[[email protected] ~]# find / \( -nouser -o -nogroup \) -mtime -7 -ls
1179660    4 drwxr-xr-x   2 779      hadoop       4096 Sep  2 13:38 /etc/mytest
526066    0 -rw-rw----   1 779      mail            0 Aug 31 18:26 /var/spool/mail/bash
917513    0 --w--w--w-   1 779      root            0 Aug 31 18:10 /tmp/b
918351    4 drwx------   4 1001     1001         4096 Sep  2 13:43 /home/database
917516    4 drwx------   4 779      779          4096 Sep  2 13:43 /home/bash
find: `/proc/1090/task/1090/fd/5‘: No such file or directory
find: `/proc/1090/task/1090/fdinfo/5‘: No such file or directory
find: `/proc/1090/fd/5‘: No such file or directory
find: `/proc/1090/fdinfo/5‘: No such file or directory

14、查找/etc目录下大于20k且类型为普通文件的所有文件;

[[email protected] ~]# find /etc/ -size +20k -type f -exec ls -ldh {} \;

查找出来的太多,就不贴上来了

15、查找/etc目录下所有用户都没有写权限的文件;

[[email protected] ~]# find /etc/ -not -perm +222 -ls
1179988  352 -r--r--r--   1 root     root       359773 Aug 19 23:51 /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
1179991  208 -r--r--r--   1 root     root       211626 Aug 19 23:51 /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem

所有用户都没有写权限 = 不是任何个一个用户包含写权限

16、查找/etc目录下至少有一类用户没有执行权限的文件;

[[email protected] ~]# find /etc/ -not -perm -111

至少有一类用户没有执行权限  =  不是 每一类用户都有执行权限

17、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户拥有写权限的文件;

[[email protected] ~]# find /etc/init.d/ -perm -113

-111 是每位用户都包含执行权限,其他用户还要有写权限,就在其他用户位上+2即可 = -113

18、让普通用户能使用/tmp/cat去查看/etc/shadow文件;

[[email protected] ~]# ll /etc/shadow
---------- 1 root root 1206 Sep  2 13:42 /etc/shadow
[[email protected] ~]# chmod u+s /tmp/cat 
[[email protected] ~]# ll /tmp/cat
-rwsr-xr-x 1 root root 48568 Sep  6 11:14 /tmp/cat

分析:普通用户执行cat,那么此cat的进程属主为执行者本人,而此执行者本人不属于passwd中的属主、属组,所以按照shadow的的o权限位,是不能读的,给/tpm/cat添加上SUID权限,那么普通用户执行cat的进程属主就为root,虽然shadow的属主为没有权限,但root具有至高无上的权限,依然能够读取

[[email protected] ~]# su - hadoop
[[email protected] ~]$ /tmp/cat /etc/shadow
root:$6$qHghFv2SnmPJgsKM$JbGecAAkkhJQsRO4eLGMScdCe3HCzZF2QXoHskXDMEM7FT3NxwiLzurqyYFiXrG5gQfv1rutpAeMuTcyUKwQm/:16666:0:99999:7:::
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
……

19、创建目录/test/data,让某组内普通用户对其有写权限,且创建的所有文件的属组为目录所属的组;此外,每个用户仅能删除自己的文件;

先分析下:

让某组内普通用户对其有写权限,chmod  g=rwx  /test/data

且创建的所有文件的属组为目录所属的组  chmod  g+s  /test/data

每个用户仅能删除自己的文件  chmod s+t  /test/data

验证:

[[email protected] data]# ll -d /test/data/
drwxrwsr-t 2 root hadoop 4096 Sep  6 12:00 /test/data/
[[email protected] data]$ touch aa
[[email protected] data]$ ll
total 0
-rw-r--r-- 1 user1  hadoop 0 Sep  6 12:01 aa
-rw-rw-r-- 1 hadoop hadoop 0 Sep  6 12:02 bb

查看/test/data的权限,SUID,sticky

[[email protected] data]$ whoami
user1
[[email protected] data]$ ll
total 0
-rw-r--r-- 1 user1  hadoop 0 Sep  6 12:01 aa
-rw-rw-r-- 1 hadoop hadoop 0 Sep  6 12:02 bb
[[email protected] data]$ rm  -rf bb
rm: cannot remove `bb‘: Operation not permitted

删除另外一个用户的文件被拒绝

时间: 2024-08-19 06:17:15

8.30 总结的相关文章

百度,宫颈癌和房和附件是房价将阿斯顿发

http://www.ebay.com/cln/vnqus-aoi2rh42/ebay/157776573019/2015.01.30 http://www.ebay.com/cln/vnqus-aoi2rh42/ebay/157776590019/2015.01.30 http://www.ebay.com/cln/vnqus-aoi2rh42/ebay/157776608019/2015.01.30 http://www.ebay.com/cln/vnqus-aoi2rh42/ebay/15

百度,换房间啊回复大花洒减肥哈的时间放假了圣诞节

http://www.ebay.com/cln/yous-ypfkprfc/ebay/157911546014/2015.01.30 http://www.ebay.com/cln/yous-ypfkprfc/ebay/157911557014/2015.01.30 http://www.ebay.com/cln/yous-ypfkprfc/ebay/157911568014/2015.01.30 http://www.ebay.com/cln/dinjag.bwlw17m/ebay/15814

日志文件cpm

08/30/14 11:19:29,856 INFO =============CDN BaseLib is starting......!================ pid = 5894 [src/main.cpp:417] 08/30/14 11:19:29,857 TRACE Enter InitThreadPool() [src/main.cpp:260] 08/30/14 11:19:29,857 TRACE Exit InitThreadPool() [src/main.cpp

即刻开始使用Kotlin开发Android的12个原因(KAD 30)

作者:Antonio Leiva 时间:Jul, 11, 2017 原文链接:https://antonioleiva.com/reasons-kotlin-android/ 这组文章已到最后了,它们是非常实用的.今天我想谈谈为什么我认为学习Kotlin是非常有趣的. 虽然, Kotlin现在已是官方支持的开发Android APP的编程语言,而你仍可能觉得没有足够的理由进行改变.在这些年以来,Java已经证明其能力,为什么要改变? 这是我认为转换到Kotlin不是一个冒险的赌注,而是你可以做的

cygwin + git + nat123 30元搭建公网可访问的git服务器

首先参考上一篇安装服务器上的CYGWIN: http://jingyan.baidu.com/article/7e440953eabd742fc0e2efae.html 上一篇中已经加入了GIT相关的包,这里就不再赘述. 然后添加git用户,在CYGWIN客户端输入: net user git 123 /add 一般只是GIT用户用的话不需要加入管理员组. 随后切换windows用户,使用git用户登录,启动一次cygwin这时cygwin会自动创建用户的个人目录/home/git/以及更新其他

30分钟掌握ES6核心内容

ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. 虽然目前并不是所有浏览器都能兼容ES6全部特性,但越来越多的程序员在实际项目当中已经开始使用ES6了.所以就算你现在不打算使用ES6,但为了看懂别人的你也该懂点ES6的语法了... 在我们正式讲解ES6语法之前,我们得先了解下Babel. Babel Babel是一个广泛使用的ES6转码器,可以将

Autodesk PowerMill 2017 SP1 v21.0.30.64.1203015 1DVD

Isotropix.Clarisse.iFX.v3.0.SP3.Win64 1CD Mentor.Graphics.Calibre.2016.1.Linux 2DVD Progman Oy MagiCAD for Revit MEP 2016.4 UR-1 and 2015.11 1DVD Simulation.Lab.Software.SimLab.Composer.7.v7.2.0.MacOSX 1CD Stat-Ease.Design.Expert.v10.0.3.1.Win64 1CD

Centos7.1 for MySQL5.6.30源码安装

预备工作: OS:Centos7.1 DATABASE: mysql-5.6.30.tar.gz 1. 创建mysql帐号 创建用户和用户组   [[email protected] ~]# groupadd mysql       [[email protected] ~]# useradd -g mysql mysql   [[email protected] ~]# passwd mysql 2.验证安装包 先验证之前是否安装过mysql,若存在mysql相关包,则rpm -e逐个删除(建

StackOverflow程序员推荐:每个程序员都应读的30本书

“如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本,你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西.” 很多程序员响应,他们在推荐时也写下自己的评语.以前就有国内网友介绍这个程序员书单,不过都是推荐数 Top 10的书.其实除了前10本之外,推荐数前30左右的书籍都算经典,伯乐在线整理编译这个问答贴,同时摘译部分推荐人的评语.下面就按照各本书的推荐数排列. 1. <代码大全>史蒂夫·迈克康奈尔 推荐数:1684 “优秀的编程实践的百科全书,&l

PAT Acute Stroke (30)

题目描述 One important factor to identify acute stroke (急性脑卒中) is the volume of the stroke core. Given the results of image analysis in which the core regions are identified in each MRI slice, your job is to calculate the volume of the stroke core. 输入描述: