kk Blog —— 通用基础


date [-d @int|str] [+%s|"+%F %T"]
netstat -ltunp
sar -n DEV 1

inner join、left join、right join、full outer join、union、union all的区别

https://www.cnblogs.com/logon/p/3748020.html

对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Coding Horror上有一篇文章,通过文氏图 Venn diagrams 解释了SQL的Join。我觉得清楚易懂,转过来。

假设我们有两张表。Table A 是左边的表。Table B 是右边的表。其各有四条记录,其中有两条记录name是相同的,如下所示:让我们看看不同JOIN的不同

1.INNER JOIN

1
SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name

2.FULL [OUTER] JOIN

(1)

1
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name

4.RIGHT [OUTER] JOIN

RIGHT OUTERJOIN 是后面的表为基础,与LEFT OUTER JOIN用法类似。这里不介绍了。

5.UNION 与 UNION ALL

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。UNION 只选取记录,而UNION ALL会列出所有记录。

(1)

1
SELECT name FROM TableA UNION SELECT name FROM TableB

选取不同值

(2)

1
SELECT name FROM TableA UNION ALL SELECT name FROM TableB

全部列出来

(3)注意:

1
SELECT * FROM TableA UNION SELECT * FROM TableB

由于 id 1 Pirate 与 id 2 Pirate 并不相同,不合并

还需要注册的是我们还有一个是“交差集” cross join, 这种Join没有办法用文式图表示,因为其就是把表A和表B的数据进行一个 N*M 的组合,即笛卡尔积。表达式如下:SELECT * FROM TableA CROSS JOIN TableB

这个笛卡尔乘积会产生 4 x 4 = 16 条记录,一般来说,我们很少用到这个语法。但是我们得小心,如果不是使用嵌套的select语句,一般系统都会产生笛卡尔乘积然再做过滤。这是对于性能来说是非常危险的,尤其是表很大的时候。

查看、挂载 window 共享 cifs

挂载共享文件

1
mount -t cifs -o username="administrator",password="123456" //192.168.100.191/bak 100.191_bak

查看共享文件夹

1
smbclient -L //192.168.100.191/ -U administrator%123456

以用户身份登录

以用户身份登录后,能像ftp用户一样,上传和下载文件,用put表示上传,get表示下载

1
smbclient //192.168.100.191/ -U administrator%123456

.smbclient命令说明

?或help 提供帮助

![shell command] 执行所用的shell命令

cd [目录] 切换服务器段指定目录

lcd [目录] 切换到客户端指定目录

dir 或 ls 列出当前目录下的文件

exit 或 quit 退出smbclient

get file1 file2 从服务器上下载文件file1,并以文件名file2保存在本地机上,如果不想改名可以把file2省略

mget file1 file2 file3 filen 从服务器上下载多个文件

md 或 mkdir 在服务器上创建目录

rd 或 rmdir 删除服务器目录

put file1 [file2] 想服务器上传一个文件file1,到服务器上改名为file2 mput file1 file2 filen 向服务器上传多个文件


https://blog.csdn.net/wangerge/article/details/1671959

https://www.csdn.net/tags/MtzakgxsMzkyNDgtYmxvZwO0O0OO0O0O.html

Ubuntu 开启 Apache2 HTTP2支持

Ubuntu 16.04的默认Apache 包中不包含http2,解决方法有2种。

使用PPA源

自行编译mod_http2

方法一,使用ppa源

1
2
3
4
5
sudo add-apt-repository ppa:ondrej/apache2
sudo apt-get update
sudo apt-get install apache2
sudo a2enmod http2
sudo systemctl restart apache2

方法二,自行编译mod_http2

配置Apache

创建配置文件

1
2
3
cat > /etc/apache2/mods-available/http2.load <<EOF
LoadModule http2_module /usr/lib/apache2/modules/mod_http2.so
EOF

将mpm模式由prefork改为mpm event模式

注意: HTTP/2在httpd附带的所有多处理模块中都受到支持。但是,如果您使用prefork mpm,将会有严格的限制。在prefork mod_http2中,每次连接只处理一个请求。但是客户端,比如浏览器,会同时发送很多请求。如果其中一个需要很长时间来处理(或者是长轮询),其他请求将会停止。默认情况下,mod_http2不能在这个限制下工作。原因是,如果您运行的处理引擎不是为多线程准备的,那么现在只选择prefork,例如,它将在多个请求中崩溃。

如果您的设置能够处理它,那么现在配置 event mpm是最好的(如果您的平台支持的话)。

PHP默认安装不能工作在Apache MPM Event模式,请参见PHP配置节解决该问题

1
2
a2dismod mpm_prefork
a2enmod mpm_event

配置网站,在需要启用http2的VirtualHost中增加以下内容。建议在ServerName之后

    HTTPS 网站
1
    Protocols h2 http/1.1
    HTTP 网站
1
    Protocols h2c http/1.1

重启apache,注意如需要配置PHP,这里可以先不重启Apache

1
systemctl restart apache2

配置PHP

请根据使用的PHP版本修改命令。

安装PHP-FPM

1
apt install php7.0-fpm

修改Apache 配置

1
2
3
a2enmod proxy_fcgi setenvif
a2dismod php7.0
a2enconf php7.0-fpm

重启Apache

1
systemctl restart apache2