第1章 vim主要模式介绍,vim命令模式。

1.1 确保系统已经安装了VIM工具

[root@panda ~]# rpm -qf `which vim`

[root@panda ~]# rpm -qf `which vi`

扩展:

问:vi和vim是同一个软件包安装的吗?

答:NO,vim是vi的增加版,最明显的区别就是vim可以语法加亮,它完全兼容vi

1.2 vim编辑器

1.2.1 模式切换

首次进入文件    ---- 命令模式

出现 “Insert” ---- 编辑模式

输入:          ---- 命令行模式

A:从编辑模式到命令行模式怎样切换?

编辑模式->esc->命令模式->: ->命令行模式

B:字符操作(怎样进入编辑模式?)

进入编辑模式 a i o  A I O

说明:

i 当前字符之前插入 (光标前)

I 行首插入  (行首)

a 当前字符之后插入 (光标后)

A 行尾插入(行尾)

o下一行插入 (另起一行)

O上一行插入(上一行插入)

x 向后删除一个字符        等同于delete

X 向前删除一个字符

u 撤销一步   每按一次就撤销一次

r 替换

================================================

1.2.2 在命令模式下做的操作:

1、  光标定位

hjkl  左下上右

0 和 home键表示切换到行首, $和end键表示切换到行尾

gg 定位到首行 ,  G定位到未行

3gg 或者 3G  快速定位到第3行

/string(字符串)   -----找到或定位你要找的单词或内容,如果相符内容比较多,我们可以通过N、n来进行向上向下查找,并且vi会对查找到的内容进行高亮显示,取消用 :noh

/^d  ----^意思表示以什么开头 ,,查找以字母d开头的内容

/t$   -----$意思表示以什么结尾,,查找以字母t结尾的内容

vim + a.txt  打开文件后,光标会自动位于文件的最后一行

2、  如何对文本进行编辑

删除、复制、粘贴、撤销

y 复制(以字符为单位) :表示对单个字符进行复制,如果要复制整行,用yy(以行为单位)

ð  y$:从光标所在位置复制到行尾

ð  y^:从光标所在位置复制到行首

dd(删除,以行为单位,删除当前光标所在行)

ð  d0:删至行首

ð  d$:删至行尾

p 、P粘贴

x 删除光标所在位置的字符

D 从光标处删除到行尾

u  撤销操作

ctrl+r  还原撤销过的操作,将做过的撤销操作再还原回去,也就是说撤销前是什么样,再还原成什么样

r 替换,或者说用来修改一个字符

3、  如何进入其它模式

a A  o O  i I 都是可以进行插入,编辑模式

: 进入命令行模式

v 进入可视模式

ctrl+v 进入可视块模式

V 进入可视行模式

R 擦除、改写,进入替换模式

你进入以上模式后,想要退出 ,按esc

4、  插入模式中的操作

ctrl+p可以进行补全操作,所需要的内容必须是在当前打开的文件内存在的,它只针对当前文件

1.2.3 V模式(列)

进入v模式 移动光标选择区域、

编程的时候需要进行多行注释:
       1)、ctrl+v 进入列编辑模式

2)、向下或向上移动光标

3)、把需要注释、编辑的行的开头标记起来

4)、然后按大写的I

5)、再插入注释符或者你需要插入的符号,比如"#"

6)、再按Esc,就会全部注释或添加了

删除:再按ctrl+v 进入列编辑模式;向下或向上移动光标 ;选中注释部分,然后按d, 就会删除注释符号。

1.2.4 命令行模式操作

  • :w 保存 save
  • :w! 强制保存
  • :q 没有进行任何修改,退出 quit
  • :q! 修改了,不保存,强制退出
  • :wq 保存并退出
  • :wq! 强制保存并退出
  • :x 保存退出

1.2.5       
调用外部文件或命令

假设:我想要编辑写入我的网卡地址,但是我忘记了,我要查看一下,当前在vim编辑文档

怎么办呢? 要退出文档吗? 这样好麻烦.

在命令行模式下操作:

  • :!ifconfig  调用系统命令
  • !+命令

读取其他文件

:r /etc/hosts

1.2.7 命令行模式

格式 : 范围(其中%所有内容)   s分隔符
旧的内容 分隔符 新的内容  (分隔符可以自定义)

默认是每一行的第一个符合要求的词   (/g全部)

:1,3s/bin/xuegod    替换第1到3行中出现的第一个bin进行替换为xuegod

:1,3s/bin/xuegod/g  替换第1到3行中查找到所有的bin进行替换为xuegod

:3s/bin/xuegod 
--->注意特殊符号的使用

:%
s/do/xuegod/gi 将文本中所有的do替换成xuegod,并且忽略do的大小写

:%
s@a@b@g          将文本中所有的a替换成b

1.2.8 设置环境

临时设置

:set nu 
设置行号

:set ic 
不区分大小写

:set list 
显示控制字符

:set nonu 取消设置行号

:set noic  
取消

:set ai 自动缩进,比如换行操作,设置这个功能后,可以在下次操作时进行自动换行

:noh   取消高亮显示

永久设置环境

/etc/vimrc 
设置后会影响到系统所有的用户

~/.vimrc  
只影响到某一个用户,没有自己建一个

1.2.9 vim打开多个文件

[root@panda ~]# vim -o /etc/passwd /etc/hosts

[root@panda ~]# vim -O /etc/passwd /etc/hosts

ctrl+ww 
在文件之间进行切换

大写O左右分屏,小写的o上下分屏

1.2.10 比较文件内容

[root@xuegod63 ~]# diff /etc/passwd mima

[root@panda mnt]# vimdiff /etc/passwd mima

1.3其它编辑器

1.3.1 nano编辑器

默认安装的,使用方法:

nano
a.txt

注意:脱字符(^)表示Ctrl键,比如^X表示的就是ctrl+x;Alt-键被表示为一个M,因此Alt+W 被写成了M-W,后面跟的大小字母都没有问题

1.3.2 emacs编辑器

默认没有安装,它支持图形和控制台模式

[root@panda mnt]# yum list emacs

[root@panda mnt]# yum -y install emacs

[root@panda mnt]# which emacs

/usr/bin/emacs

在控制台使用

[root@panda mnt]# emacs a.txt

说明:

保存当前缓冲区到文件
C-x  C-s

退出emacs并停止程序 C-x  C-c

将新文件添加到缓冲区
C-x  C-f (如果你不知道文件名称,可以按下回车,会启动一个文件浏览器)

上面的命令需要键入两次

其它一些操作命令:

C-p    上移一行

C-b    左移一字符

C-f     右移一字符

C-n    下移一行

M-a    移到当前句首

M-e    移到当前句尾

M-v    上翻页

C-v     下翻页

M-<    移动到文本的首行

M->    移动到文本的尾行

M-d    剪切光标当前所在位置之后的单词

C-k    剪切光标当前所在位置至行尾的文本

M-k    剪切光标当前所在位置至句尾的文本

C+空格  选中你要的文本,可以连续选择一块区域。结束选择用C-w

C-y
  粘贴  (如果你做了多次的剪切,那么在粘贴时,可以通过M-y进行选择)

C-s    从缓存区域中从光标当前位置到尾部执行前向查找

C-r    从缓存区域中从光标当前位置到尾部执行后向查找

C-x
2  将窗口水平拆分成两个

C-x
3  将窗口竖向拆分成两个

C-x
o(字母o)  切换窗口

C-x
0(数字0) 关闭当前所在窗口

C-x
1(数字1) 关闭除当前所在窗口之外的所有窗口

1.3.3 GHOME编辑器gedit

[root@panda mnt]# gedit a.txt /mnt/a.txt

第2章 恢复Linux下误删除的文件

删除文件和文件夹

rm -rf  文件名或目录名


-r  递归删除(可以删除目录和目录里面的东西)


-f  强行删除

ext4文件系统上删除文件,可以恢复: extundelete

windows恢复误删除的文件:  final
data v2.0 汉化版  和  easyrecovery

Linux文件由三部分组成:文件名,inode(索引节点),block(块)

a.txt    à       inode          à    block

文件名    存放文件元数据信息       真正存放数据

inode表,包含的一些经常使用的重要信息:

Ÿ   inode编号

Ÿ   文件类型

Ÿ   文件的链接数量,有多少文件名指向这个INODE

Ÿ   属主的UID

Ÿ   属主的组ID

Ÿ   文件的大小

Ÿ   文件所使用的磁盘的块的实际数量

Ÿ   文件数据block的位置

Ÿ   最近一次修改的时间

Ÿ   最近一次访问的时间

Ÿ   最近一次更改的时间

在LINUX中,它内部不是通过文件名来识别文件的,而是通过inode号码,对于linux系统,文件名就是给inode号码起的一个绰号或乳名

我们操作一个文件/etc/passwd,比如打开一个文件,系统内部总的来说要经过三个过程:

1、  首先找到这个文件名对应的inode号码

2、  通过这个inode号码,获取inode信息

3、  根据inode信息,找到这个文件的数据在物理存储上的block的位置,并把它提取出来

2.1 查看inode号:

常识: 每个文件,最少有一个inode号。

[root@xuegod63 ~]# dumpe2fs  /dev/sda5

2.2 块-block

block块:真正存储数据的地方

块大小是可以改变的

假设我们的块大小为 2M,而我们现在的数据为101M ,那么我们需要多少个块呢?

101/2 需要50还是51个块

为什么删除比复制快?

创建一个文件a

删除的操作

又新建了一个文件

UMOUNT

如何避免误删除的文件内容被覆盖???

卸载需要恢复文件的分区:或以只读的方式挂载

2.3 实战:在RHEL6上恢复被误删除的文件

下载extundelete

http://sourceforge.net/   
开源软件发布中心

2.3.1 准备测试分区:

添加硬盘,并查看

分区硬盘

[root@xuegod63 ~]# fdisk /dev/sdb

Device contains neither a valid DOS
partition table, nor Sun, SGI or OSF disklabel

Building a new DOS disklabel with disk
identifier 0xb8cb07c0.

Changes will remain in memory only,
until you decide to write them.

After that, of course, the previous
content won't be recoverable.

Warning: invalid flag 0x0000 of
partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is
deprecated. It's strongly recommended to

switch off the mode (command 'c') and change display units to

sectors (command 'u').

Command (m for help): n

Command action

e   extended

p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-652, default 1):

Using default value 1

Last cylinder, +cylinders or
+size{K,M,G} (1-652, default 652):

Using default value 652

Command (m for help): p

Disk /dev/sdb: 5368 MB, 5368709120 bytes

255 heads, 63 sectors/track, 652
cylinders

Units = cylinders of 16065 * 512 =
8225280 bytes

Sector size (logical/physical): 512
bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes /
512 bytes

Disk identifier: 0xb8cb07c0

Device Boot      Start         End      Blocks  
Id  System

/dev/sdb1               1         652    
5237158+  83  Linux

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition
table.

Syncing disks.

[root@xuegod63 ~]# ls /dev/sd*

/dev/sda 
/dev/sda1  /dev/sda2  /dev/sda3 
/dev/sda4  /dev/sda5  /dev/sdb 
/dev/sdb1

格式化硬盘

[root@xuegod63 ~]# mkfs.ext4 /dev/sdb1

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

327680 inodes, 1309289 blocks

65464 blocks (5.00%) reserved for the
super user

First data block=0

Maximum filesystem blocks=1342177280

40 block groups

32768 blocks per group, 32768 fragments
per group

8192 inodes per group

Superblock backups stored on blocks:

32768,
98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done

Creating journal (32768 blocks): done

Writing superblocks and filesystem
accounting information: done

This filesystem will be automatically
checked every 38 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

创建挂载点,并进行挂载

[root@xuegod63 ~]# mkdir /sdb1

[root@xuegod63 ~]# mount /dev/sdb1 /sdb1/

[root@xuegod63 ~]# df |tail -1

/dev/sdb1        5154852 
141304   4751692   3% /sdb1

复制一些测试文件,然后把这些文件再删除:

安装tree命令:

[root@localhost Packages]# rpm -ivh
tree-1.5.3-2.el6.x86_64.rpm

warning: tree-1.5.3-2.el6.x86_64.rpm:
Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY

Preparing...               
########################################### [100%]

1:tree                   ###########################################
[100%]

[root@xuegod63 b]# tree /sdb1/

/sdb1/

├── a

│   └── b

│       ├──
aa.txt   ---这是一个空文件

│       └── c

│           └── a.txt

├── a.txt

├── hosts

├── lost+found

└── passwd

3.3.4 删除文件并卸载分区:

如何避免误删除的文件内容被覆盖???

卸载需要恢复文件的分区(卸载当前目录必须退出当前才行):或以只读的方式挂载

3.3.5 上传extundelete到linux中:

从windows上传extundelete文件到linux,安装xmanager或者CRT

[root@xuegod63 ~]# ls

anaconda-ks.cfg  Downloads                  mia.txt   Pictures  
xuegod.txt

c.txt            extundelete-0.2.4.tar.bz2  mima     
Public

Desktop          install.log                Music     Templates

Documents        install.log.syslog         new1.txt  Videos

[root@xuegod63 ~]# tar jxf
extundelete-0.2.4.tar.bz2

[root@xuegod63 ~]# ls

anaconda-ks.cfg  Documents          extundelete-0.2.4.tar.bz2  mia.txt 
new1.txt  Templates

c.txt            Downloads          install.log                mima     Pictures 
Videos

Desktop          extundelete-0.2.4  install.log.syslog         Music    Public   
xuegod.txt

[root@xuegod63 ~]# cd extundelete-0.2.4

[root@xuegod63 extundelete-0.2.4]# ls

acinclude.m4  autogen.sh  
configure     depcomp    
LICENSE      Makefile.in  README

aclocal.m4    config.h.in 
configure.ac  install-sh  Makefile.am 
missing      src

[root@localhost extundelete-0.2.4]# ./configure

Configuring extundelete 0.2.4

configure: error: Can't find ext2fs library

解决:

[root@localhost extundelete-0.2.4]# rpm -ivh /mnt/Packages/e2fsprogs-devel-1.41.12-18.el6.x86_64.rpm

warning: /media/RHEL_6.5 x86_64 Disc
1/Packages/e2fsprogs-devel-1.41.12-18.el6.x86_64.rpm: Header V3 RSA/SHA256
Signature, key ID fd431d51: NOKEY

Preparing...               
########################################### [100%]

1:e2fsprogs-devel       
########################################### [100%]

现在重新编译安装

[root@localhost extundelete-0.2.4]#
./configure

Configuring extundelete 0.2.4

Writing generated files to disk

[root@localhost extundelete-0.2.4]# make
&& make install


make:编译,把源代码编译成可执行的二进制文件


make install 安装

make -s all-recursive

Making all in src

extundelete.cc:571: 警告:未使用的参数‘flags’

Making install in src

/usr/bin/install -c extundelete '/usr/local/bin'

3.3.6 开始恢复

可以通过以下几种方法来进行恢复:


通过inode节点恢复


通过文件名恢复


恢复某个目录,如目录a下的所有文件:


恢复所有的文件

[root@localhost ~]# mkdir /test          #创建一个目录用来存放恢复的数据和目录

[root@localhost ~]# cd /test/

首先先查看一下删除文件的节点号

[root@xuegod63 test]# extundelete /dev/sdb1 --inode 2

由此可知,根目录的inode值为2

NOTICE: Extended attributes are not
restored.

Loading filesystem metadata ... 40
groups loaded.

Group: 0

Contents of inode 2:

0000 | ed 41 00 00 00 10 00 00 cd b5 1e
58 cc b5 1e 58 | .A.........X...X

0010 | cc b5 1e 58 00 00 00 00 00 00 03
00 08 00 00 00 | ...X............

0020 | 00 00 00 00 08 00 00 00 61 21 00
00 00 00 00 00 | ........a!......

0030 | 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 | ................

0040 | 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 | ................

0050 | 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 | ................

0060 | 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 | ................

0070 | 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 | ................

0080 | 1c 00 00 00 80 d5 79 00 80 d5 79
00 2c e7 b2 5d | ......y...y.,..]

0090 | 74 b4 1e 58 00 00 00 00 00 00 00
00 00 00 00 00 | t..X............

00a0 | 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 | ................

00b0 | 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 | ................

00c0 | 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 | ................

00d0 | 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 | ................

00e0 | 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 | ................

00f0 | 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 | ................

Inode is Allocated

File mode: 16877

Low 16 bits of Owner Uid: 0

Size in bytes: 4096

Access time: 1478407629

Creation time: 1478407628

Modification time: 1478407628

Deletion Time: 0

Low 16 bits of Group Id: 0

Links count: 3

Blocks count: 8

File flags: 0

File version (for NFS): 0

File ACL: 0

Directory ACL: 0

Fragment address: 0

Direct blocks: 8545, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0

Indirect block: 0

Double indirect block: 0

Triple indirect block: 0

File name                                       | Inode
number | Deleted status

.                                                
2

..                                                2

lost+found                                        11

passwd                                           
12             Deleted

hosts                                            
13             Deleted

a.txt                                             14             Deleted

a                                                
131073         Deleted

方法1:通过inode节点恢复

[root@xuegod63 test]# extundelete
--restore-inode 12 /dev/sdb1

NOTICE: Extended attributes are not
restored.

Loading filesystem metadata ... 40
groups loaded.

Loading journal descriptors ... 66
descriptors loaded.

[root@xuegod63 test]# ls

RECOVERED_FILES

[root@xuegod63 test]# cd RECOVERED_FILES/

[root@xuegod63 RECOVERED_FILES]# ls

file.12

[root@xuegod63 RECOVERED_FILES]# ll

total 4

-rw-r--r-- 1 root root 1664 Nov  6 13:00 file.12

[root@xuegod63 RECOVERED_FILES]# diff file.12
/etc/passwd

# 没有任何输出,说明结果一样

[root@xuegod63 RECOVERED_FILES]# vi file.12

[root@xuegod63 RECOVERED_FILES]# mv file.12
passwd

[root@xuegod63 RECOVERED_FILES]# ls

passwd

方法二,通过文件名恢复

[root@xuegod63 test]# extundelete
--restore-file hosts /dev/sdb1

NOTICE: Extended attributes are not
restored.

Loading filesystem metadata ... 40
groups loaded.

Loading journal descriptors ... 66
descriptors loaded.

Successfully restored file hosts

[root@xuegod63 test]# cd RECOVERED_FILES/

[root@xuegod63 RECOVERED_FILES]# ls

hosts 
passwd

[root@xuegod63 RECOVERED_FILES]# diff hosts
/etc/hosts

方法三:恢复某个目录,如目录a下的所有文件

[root@xuegod63 test]# extundelete
--restore-directory a /dev/sdb1

NOTICE: Extended attributes are not
restored.

Loading filesystem metadata ... 40
groups loaded.

Loading journal descriptors ... 66
descriptors loaded.

Searching for recoverable inodes in
directory a ...

7 recoverable inodes found.

Looking through the directory structure
for deleted files ...

4 recoverable inodes still lost.

[root@xuegod63 test]# ls

RECOVERED_FILES

[root@xuegod63 test]# cd RECOVERED_FILES/

[root@xuegod63 RECOVERED_FILES]# ls


hosts  passwd

[root@xuegod63 RECOVERED_FILES]# tree a

a

└── b

└── c

└── a.txt

2          
directories, 1 file

注意:不支持恢复空文件

方法四:恢复所有的文件

[root@xuegod63 test]# extundelete
--restore-all  /dev/sdb1

NOTICE: Extended attributes are not restored.

Loading filesystem metadata ... 40
groups loaded.

Loading journal descriptors ... 66
descriptors loaded.

Searching for recoverable inodes in
directory / ...

7 recoverable inodes found.

Looking through the directory structure
for deleted files ...

0 recoverable inodes still lost.

[root@xuegod63 test]# ls

RECOVERED_FILES

[root@xuegod63 test]# cd RECOVERED_FILES/

[root@xuegod63 RECOVERED_FILES]# ls


a.txt  hosts  passwd

删除前后的数据:

extundelete在恢复文件的时候能不能自动创建空文件和目录?

答:不能。

REHL7  xfs系统  可以的

版本6不支持xfs,只有ext4,所以用extundelet

 版本7用xfsdump备份,用xfsrestore恢复

1-5-vim编辑器的使用的更多相关文章

  1. 玩转Vim 编辑器

    一:VIM快速入门 1.vim模式介绍 以下介绍内容来自维基百科Vim 从vi演生出来的Vim具有多种模式,这种独特的设计容易使初学者产生混淆.几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数 ...

  2. Linux vim编辑器使用详解

    在Linux中,主要编辑器为vi或者vim,本文围绕vim做简单的讲解说明: Linux默认自带vi(vim)编辑器,其程序包为: [root@xuegod163 ~]# rpm -qf `--1.8 ...

  3. REDHAT一总复习1 vim编辑器的使用 删除所有者列 删除指定行

    将文件/home/student/vimfile.txt 复制到server 上的/home/student/longlisting.txt . 根据下列要求,使用vim编辑器更改 /home/stu ...

  4. Linux笔记:使用Vim编辑器

    Vi编辑器是Unix系统上早先的编辑器,在GNU项目将Vi编辑器移植到开源世界时,他们决定对其作一些改进. 于它不再是以前Unix中的那个原始的Vi编辑器了,开发人员也就将它重命名为Vi improv ...

  5. VIM编辑器简单总结

    第一讲小结  1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键.         h (左移)       j (下行)       k (上行)     l (右移)  2. ...

  6. Linux Vim编辑器使用简单讲解

    在Linux中,主要编辑器为vi或者vim,本文围绕vim做简单的讲解说明:Linux默认自带vi(vim)编辑器,其程序包为:[root@linuxidc.com ~]# rpm -qf `whic ...

  7. linux学习笔记--vi与vim编辑器

    vi编辑器全名为Visual Interface,即为可视化接口,类似于Windows中的记事本 vim相当于是vi的一个升级版本,包含vi的一切操作命令,vim相对于vi做了哪些提升: 1.vim支 ...

  8. 初探VIM编辑器

    初探VIM 引言---什么是Vim? 接触Linux这么久,想必对于一切皆文件的哲学思想已经不陌生了.因此,学习并掌握用一款Linux文本编辑器,对于玩转LInux来说,是很有必要的. vi编辑器是U ...

  9. vim编辑器详解

    vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim).vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率. vi是“visual interface”的 ...

  10. 如何让vim编辑器永久显示行号

    在Linux环境下的编辑器有vi.vim.gedit等等.进入这些编辑器之后,为了方便我们需要编辑器显示出当前的行号,可偏偏编辑器默认是不会显示行号的.我们有二种办法可以解决: 第一种是,手动显示:在 ...

随机推荐

  1. <Linux> xm 命令

    xm console     <域ID>         ctrl+ ] 退出虚拟机到宿主 xm reboot      <域ID> xm pause       <域I ...

  2. 【32.89%】【codeforces 719A】Vitya in the Countryside

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  3. [Grid Layout] Describe a grid layout using named grid lines

    We can use named grid lines to describe our grid layout. Let’s see how to apply this to our grid-tem ...

  4. MVC 设置项目默认起始页和多级目录的路由配置

    我们新建一个MVC的项目 默认的路由是这样的,但是由于一些需求,我们需要对Controllers按照一些规则分类. 比如说我们在Controllers下面建了一个School的文件夹,然后建了一个St ...

  5. mysqlsla安装

    #下载mysqlsla https://github.com/daniel-nichter/hackmysql.com   yum install perl-ExtUtils-CBuilder per ...

  6. 利用PS把多张psd格式的图片转换为一张PDF格式

    最近为公司做了一版电子样册,所有图片都是包含多图层高清晰的psd格式,要做成一个PDF文件的电子样册,发给客户看,面对这些零散的图片,本来打算利用在线合成:在线网址 https://smallpdf. ...

  7. [Ramda] Refactor to Point Free Functions with Ramda using compose and converge

    In this lesson we'll take some existing code and refactor it using some functions from the Ramda lib ...

  8. RPC与REST的差别

    一:RPC RPC 即远程过程调用, 非常easy的概念, 像调用本地服务(方法)一样调用server的服务(方法). 通常的实现有 XML-RPC , JSON-RPC , 通信方式基本同样, 所不 ...

  9. HDU 1502 - dp + 压位

    传送门 题目大意: 3*n的字符串,A.B.C分别有n个,w(X)代表X字母出现的次数,要求该字符串的所有前缀中w(A) >= w(B) >= w(C),问合法方案数有多少. 题目分析: ...

  10. Java数组定义学习的一些随笔

    //一维数组的定义 int[] arr1 = new int[3];//arr1 = {1,2,3}: 错误 int[] arr2 = new int[]{1,2,3};//int[] arr2 = ...