ThinkPHP5.0随学随记

1. 查看最后运行的SQL语句

return DB::getLastSql();

2. 链式查询

低效率方式:

$data1 = Db::name("user")->where("id",27)->select();
$data2 = Db::name("user")-select();

高效率方式:

$data = Db::name("user");
$result1 = $data->where("id",27)->select();
$result2 = $data->select();

然而运行结果发现,在高效模式下,$result2和$result1的返回结果是一样的。如果要去掉$result1的干扰因素,需要这样:

$data = Db::name("user");
$result1 = $data->where("id",27)->order("id","desc")->select();
$result2 = $data->removeOption("where")->removeOption("order")->select();

可以看出,语句变复杂了。
这个问题上需要自己去权衡效率和语句简洁度之间的问题。

CentOS目录结构及常用Linux命令汇总

第一部分:说明

  • 个人总结,随着时间推移不断补充。
  • 如果不是专业的服务器维护工程师,掌握以下这些命令行就可以满足你与服务器进行各种数据交换的需要了(部署项目代码等)。
  • 以下命令在CentOS 8下亲测有效。

第二部分:目录结构

etc

存放系统配置的目录。配置环境变量、服务等。

home

除了root以外,其它用户都在home下有以用户名作为文件夹名称的目录。用户只对自己的文件夹有访问权限。

root

root用户的单独文件夹。用的比较少。

usr和opt

  • usr类似Windows中的C://Program Files
  • opt类似D盘自己指定的安装目录

如果使用usr作为程序目录,则可以在usr/local下新建tmp文件夹,所有安装文件压缩包都上传到tmp目录下。

bin和sbin

bin存放所有用户都能使用的命令文件比如:ls,cat、cd等。
sbin存放只有root管理员可以使用的命令文件比如:fdisk、shutdown、mount

dev

设备文件夹。比如挂载光驱,Windows操作系统下的硬盘等。

srv

服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内。

第三部分:文件夹权限

Linux中的文件属性说明有10位:

  • 第1位:代表当前文件类型。
    • - 文件
    • d 文件夹
    • l 软连接
  • 第2-4位:分别对应当前用户的“读、写、执行”权限。
    • r 可读
    • w 可写
    • x 可执行
    • - 无该权限
  • 第5-7位:当前组的其它用户的“读、写、执行”权限。
  • 第8-10位:非当前组用户的“读、写、执行”权限。

第四部分:命令汇总

1. 理解:~和/,#和$

file
命令行进入后默认显示:
[leon@localhost ~]$
命令格式如下:
[当前用户@当前主机 当前目录]用户权限
当前目录,有三种情况:

  • ~:当前用户的home目录
  • /:root用户的根目录
  • XXX:当前进入的某个目录名称
    用户权限,有两种情况:
  • $:普通用户登陆
  • #:root用户登陆

2. 常用命令。

2.1 pwd

打印工作目录,显示当前文件夹全路径。当前工作目录比较深的时候,想知道当前所在位置时用这个命令。

2.2 cd

进入某个目录。
cd XXX:进入XXX目录
cd ..:回到上级目录
cd /:回到根目录
这里需要注意,和windows不同的是,Linux下cd后面如果跟".."的话,也需要在".."前加空格。

2.3 mkdir

创建新文件夹。
mkdir tmp:在当前目录下创建一个空的tmp目录。

2.4 ls,dir,ll

file
ls:列出目录(Linux命令,有着色)
dir:列出目录(Windows命令,无着色)
ll:列出目录详情
-a 属性,列出隐藏文件。Linux中,以.开头的文件是隐藏文件。

2.5 vi,vim

vi XXX:编辑文件XXX(无着色)
vim XXX:编辑文件XXX(vi高级版,有着色)
如果文件不存在就创建这个XXX文件。

2.6 vi和vim指令

i键:进入编辑模式
Esc键:退出编辑模式
:wq 保存编辑并退出
:q 文件没有编辑的情况下退出
:q! 强制退出,如果编辑了则不会保存编辑的内容。

2.7 cat、more、less、most、head、tail、tailf

cat:查看某文件的全部内容
more和less和most:分屏查看某文件的内容
file
head [-n]:查看文件前n行,默认查看文件前10行。
tail [-n]:查看文件末n行,默认查看文件末10行。
tailf [-n]:当该文件被编辑时,动态查看文件末n行,默认查看文件末10行。比如查看动态日志。

2.8 touch

touch demo.java 新建空文件demo.java

2.9 echo

echo "hello" >> demo.xml
将字符串hello添加到demo.xml末尾
echo "helloworld" > demo.xml
将字符串helloworld覆盖demo.xml文件内容

2.10 ifconfig

类似于Windows中的ipconfig,查看网卡信息。

2.11 reboot

重启机器

2.12 加压缩:tar zxvf 文件名

比如:tar zxvf apachetomcat.tar.gz
z:文件是否具有gzip(.tar.gz,.tgz)属性
x:释放文件,拆包
v:解压缩过程中显示文件
f:指定被处理的文件名

2.13 压缩:tar zcvf 打包后文件名.tar.gz /要打包的文件(夹)路径

比如:
tar zcvf backup.tar.gz /bin

tar cvf backup.tar /bin
z:以gzip(.tar.gz)方式压缩
c:打包
v:压缩过程中显示文件
f:指定被处理的文件名
说明:当时用winrar解压tar.gz文件时,我们会发现,文件往往需要解压两次,第一次解压为tar文件,解压tar文件后才会是打包的文件。其实,使用tar命令时,如果不加z,那么tar的作用仅仅是打包,如果加了z,则是在打包基础上再使用gzip压缩一遍。所以tar.gz的文件实际上是经过“打包”和“压缩”两道工序的产物,这和我们平时使用windows下rar打包压缩一次完成的理念稍微有点不同

2.14 复制命令:cp和cp -r

cp 源文件路径 新文件路径
cp -r 源文件夹路径 新文件夹路径

2.15 剪切(重命名):mv

mv 源文件路径 新文件路径
mv 源文件名 新文件名

2.16 删除:rm

rm 文件名,删除文件
rm -f 文件名,强制删除文件
rm -r 文件夹名,删除文件夹
rm -rf 文件夹名,强制删除文件夹

2.17 clear

清空当前屏幕内容
快捷键Ctrl+l

2.18 ip add和dhclient

ip add查看本地ip地址
dhcclient 获取ip地址
dhclient -r释放ip地址

3.19 systemctl

systemctl start 服务名,开启某个服务
systemctl stop 服务名,停止某个服务
systemctl status 服务名,某个服务当前状态
systemctl restart 服务名,重启某个服务
systemctl enable 服务名,将某个服务添加为自启动
比如,查看当前防火墙服务的状态:
systemctl status firewalld

3.20 grep和find

grep 关键字 文件名:在文件中查找关键字
find 路径 -name 文件名:在指定路径查找指定文件

3.21 ps,top和kill

ps -ef:查看所有进程的最后状态信息(静态)
ps -ef|grep XXX:查看与XXX相关的进程
top:查看所有进程的动态信息
kill -9 进程PID:结束进程

3.22 groupadd,useradd,passwd

groupadd 组名
useradd -g 组名 用户名
passwd 用户名

3.23 su

su 用户名:切换到某用户,如果切换到root,直接su

3.24 chmod

  • 更改文件权限9位标识法
    chmod u=rwx,g=rwx,o=rwx abc.sh
    使abc.sh文件所有组的所有用户可:读写运行
  • 更改文件权限3位标识法
    chomod 666 abc.sh
    有关9位标识法和3位标识法请参考:http://www.moonlightgate.com/archives/217

3.25 firewall-cmd

  • 查看当前开放的端口信息
    firewall-cmd --list-all
  • 永久开放某端口号(比如8066)
    firewall-cmd --zone=public --add-port=8066/tcp --permanent
    firewall-cmd --reload

3.26 apt-get,aptitude,yum,dnf

都是包安装程序命令:
dnf > yum > aptitude > apt-get

3.27 curl

返回网址对应的html信息:

curl http://www.baidu.com

3.28 make

Linux下,源码的安装一般由3个步骤组成:
配置(configure)、编译(make)、安装(make install)

  • ./configure:运行目录下的configure文件,作用是检测系统配置,生成makefile文件,以便你可以用make和make install来编译和安装程序。
  • make:进入文件目录下,如果有makefile文件,就运行make命令,这个过程是进行文件的编译。
  • make install:编译完成后,make install命令用来安装。

重要的./configure --prefix=路径:

  • ./configure --prefix=路径:作用是编译的时候用来指定程序存放路径。
  • 如果在make前不指定prefix,则可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr/local/share。
  • 卸载这个程序的时候,要么在原来的make目录下用一次make uninstall(前提是make文件指定过uninstall),要么去上述目录里面把相关的文件一个个手工删掉。
  • 指定prefix,直接删掉一个文件夹就够了。

使用make前需先安装gcc和g++

yum install gcc automake autoconf libtool make
yum install gcc-c++