kk Blog —— 通用基础


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

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

ffmpeg 缩小视频、合并视频

https://blog.csdn.net/weixin_45049908/article/details/103962451

使用ffmpeg修改和压缩视频文件格式

更改视频文件格式

1
/root/ffmpeg-5.0/ffmpeg -y -i test.mp4 out.mp4

压缩视频文件

1
2
3
4
5
6
7
8
9
10
11
12
13
/root/ffmpeg-5.0/ffmpeg -y -i test.avi -s 400x240 -vcodec libx264 -preset fast -b 80000 -r 25 out.mp4

-y: 当已存在out.mp4是,不提示是否覆盖。
-i : test.avi 输入文件名,可以自己修改路径和名字
-s: 400x240 输出的分辨率,注意片源一定要是16:9的不然会变形
-vcodec -libx264: 输出文件使用的编解码器。
-preset fast: 使用libx264做为编解码器时,需要带上这个参数。
-b: 80000 视频数据流量,用-b xxx表示使用固定码率,数字可更改;还可以用动态码率如:-qscale 4和-qscale 6,4的质量比6高(一般用80000就可以了,否则文件会很大)
-acodec: aac 音频编码用AAC
-ac 2 声道数1或2
-ar: 48000 声音的采样频率
-ab: 128 音频数据流量,一般选择32、64、96、128#-vol 200 200%的音量,可更改(如果源文件声音很小,可以提升10到20倍1000%~2000%)
-r: 25 帧数

下载m3u8文件

1
/root/ffmpeg-5.0/ffmpeg -i "http://a.com/b.m3u8" out.mp4

合并 mp4

1
2
3
4
5
6
7
8
9
10
cat ff1
file k4_1.1.1_大数据案例.mp4
file k4_1.1.2_大数据.mp4
file k4_1.1.3_数与数据.mp4
file k4_1.2_数据科学.mp4
file k4_1.3_“思维”辨析.mp4


cat ff.sh
/root/ffmpeg-5.0/ffmpeg -f concat -safe 0 -i ff1 -c copy k4_f1.mp4

mp4 转 ts, 合并 ts 为 mp4

1
2
3
/root/ffmpeg-5.0/ffmpeg -i 9.2.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 9.2.ts

/root/ffmpeg-5.0/ffmpeg -i "concat:1.1.ts|1.2.ts|2.1.ts|2.2.ts|2.3.ts|2.4.ts|3.1.ts|3.2.ts" -acodec copy -vcodec copy -absf aac_adtstoasc oo1.mp4

截取视频

1
2
3
/root/ffmpeg-5.0/ffmpeg -i p0.mp4 -c copy -t 1800 -copyts p1.mp4

/root/ffmpeg-5.0/ffmpeg -i p0.mp4 -c copy -ss 00:20:00 -to 00:30:00 -copyts p2.mp4

命令调整图片大小、格式等

https://www.cnblogs.com/lyl0618/p/13904216.html

convert

减少图片的存储大小

1
convert image.jpg -resize 50% image_new.jpg

mogrify

修改图片的大小

1
mogrify -resize 800X600 file.jpg

file.jpg 将被调整到 800*600 的大小。注意,如果原始图片的大小是 1200*900 ,那么图片不能被调整到 800*1200 ,而只能调整到800*550

转换图片格式

1
mogrify -format png test.jpg

将test.jpg转换到test.png

减少图片的存储大小

1
mogrify -quality 80% surendra.jpg 

这是通过降低图片质量达到降低存储大小的效果。

identify

获取图片信息

1
2
3
identify test.jpg

identify -verbose test.jpg