1、要在桌面上创建新文件夹,请单击桌面并按[shift + cmmand + n]。

2、按下步骤一所示的按钮后,桌面此时会创建个未命名文件夹。如果不小心按多了,创建了多个文件夹,要撤消,请按cmmand + z。


来自:https://zhidao.baidu.com/question/1239552110247618779.html
野蛮其精神,文明其体魄。
重复就是力量,数量堆死质量。
伏久者飞必高,开先者谢独早。
利用 Redis 事务特征
redis 事务是原子操作,可以保证订单处理的过程中数据没有被其它并发的进程修改。
示例代码:

使用 ab 测试
$ ab -t 20 -c 10 http://192.168.1.104:9509/

经测试结果对比,redis 事务方式优于文件排他锁方式,而文件排他锁方式中,非阻塞模式优于阻塞模式。

更多,来自:https://199508.com/post/2054
chrome://settings/content/notifications
尽管置位已禁止:
已禁止【V】
禁止:

允许:
【V】URL #这个打开了,还是会推送的,得删掉这些URL就正常了。当时以为上面禁止就全禁止了,实则不然。
打开终端:
control+`  (ESC按键下面那个`)
选择左上角Code ,选择【首选项】选择 【设置】搜索 终端 选择【终端】在右侧下翻,找到如下位置Terminal › Integrated: Font Family,修改红色方框中的值即可修改终端字体大小。Terminal › Integrated: Font Size字号设置大一些就好了。monospace 字体。 终端里的Iterm符号显示不出来,换字体:https://yq.aliyun.com/articles/691268  VS Code 内置的终端就能正确显示 Zsh 主题的箭头:https://www.jianshu.com/p/6837eaa4f4aa


通过匹配文本打开文件:Mac: command + T

切换标签:control + option + 左剪头或右剪头。

一次搜索所有文件的文本:Mac: Command + Shift + F

鼠标列选择: option + shift + 左键单击

前提是先选中多行shift + 鼠标左键,再在所选中列的末尾进行列编辑: shift+option+i

列编辑之批量替换当前文件中所有匹配的文本:Mac: command + F2。

列编辑之复制光标向上或者向上批量添加内容:Mac: Control + Option +向上箭头,向下则是:Shift+Control + Option +向上箭头。

列选择之单词左选择:shift+option+command+向左键
列选择之单词右选择:shift+option+command+向右键

选择查找匹配的所有匹配项: option+enter  

将选择添加到下一个查找匹配,依次找出文中所有的当前选中的单词: command + d
一次性找出文所有的当前选中的单词: contorl + shift + l
切换侧栏可见:command+b

光标到行首:command+向左键
光标到行尾:command+向右键

Vscode从文本过滤所有IP并粘贴到新文档的步骤:
1)command + option + F 替换
2)([0-9]{1,3}[\.]){3}[0-9]{1,3}
3)点选上后面的*
4)option + enter 选中所有匹配项。
(一次性正则选中所有匹配到的代码:option + enter 选中所有匹配项。)
5)command + c 复制所有所选择IP。

VS Code 匹配中文: [\u4e00-\u9fa5]

Mac下的Vscode鼠标选择列:
Shift+Option+鼠标左键

移至文件的开头/结尾:
Mac: command + Home键开头,Mac: command + End键结尾。(Home/End分别是向左和向右键)

向上/向下移动一行:Mac: option+ 向下箭头,Mac: option向上箭头。

重复的行之向上向下复制一行:
option+shift+向上键/option+shift+向下键

插入一行: Shift + enter

删除一行:Mac: command + Shift + K。

删除上一个单词:Mac: option + delete。

逐个选择文本
Mac: option + Shift +右箭头
Mac: option + Shift +左箭头

选择左侧/右侧的所有内容:
Mac: command + Shift + Home/End
苹果笔记本没home键,可以用组合键实现

tab标签选项卡选择
option+commad+左/右

右侧滚动条上下移动长文阅读:
control+option+上/下

查看正在运行插件
打开命令面板(Ctrl + Shift + P)并输入Show running extensions来查看所有你安装的正在运行的插件。

vscode删空行: ^\s*$\n

vscode 字符串尾加换行符:
option+command+F替换
正则:$
换成:\n

删除光标所在行尾多余空格:
command + K command + X

附:
左方向键是HOME
右方向键是END
上方向键是page up
下方向键是page down

来自:https://blog.csdn.net/d_lds/article/details/63683624
背景:关于Go的一协程和通道,PHP也是可以的。
技术:
也就是说三次访问以最长那个,在一些微信请求时以PHP-FPM进行阻塞时,80进程也就400个请求,用这个swoole的请求也就不存在这个问题,可以实现同时发出curl请求,而不是卡在那儿。

也即使是Mysql的访问,用协程,如果一次卡20秒,那么影响也就那一个请求,而不是所有的后面请求就排队等待,这也就是它的优势。

其实现方式,应该是用socket的句柄结合Epoll的事件驱动经过reactor的挂起和唤醒,用到系统的内核进行通知,性能是很不错的。也就是说:
1)必须开端口。
2)那个句柄数要设置大一些才行,一般设置个10万左右。
3)协程对内存的要求较高,内存大一些好。

系统三大杀手,一是内存拷贝(PHP内核支持写时拷贝)、二是系统调用、进程线程切换,而协程经过测试PHP切换一次150纳秒,而Go得160纳秒。

========================================================================================
#cat  curl.php  



php curl.php
PHP Fatal error:  Swoole\Coroutine\Http\Client::__construct(): need to use `--enable-openssl` to support ssl when compiling swoole. in /data/www/coding.jackxiang.com/curl.php on line 6
[2019-07-22 16:53:17 $4830.0]   WARNING swManager_check_exit_status: worker#0 abnormal exit, status=255, signal=0

curl 127.0.0.1:8000
curl: (52) Empty reply from server

重新编译:



configure: WARNING: unrecognized options: --enable-coroutine ,最新版本好像把这个给去了。

/usr/local/src/swoole-src-4.4.1/include/swoole.h:591:25: fatal error: openssl/ssl.h: No such file or directory
#include <openssl/ssl.h>

还是不行,参考了一下:
http://www.21yunwei.com/archives/5196

重新phpize再来一次就好了,估计是和phpize生成的configure有关吧。

mv  /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/swoole.so /usr/local/php/ext/.
mv: overwrite ‘/usr/local/php/ext/./swoole.so’? y
启动服务端:
#php curl.php
strace -ff -o /tmp/s.txt -tt php curl.php

连接测试:
curl 127.0.0.1:8000

得到三个网站的返回。


背景:在CentOS里修改错了,怎么办呢?于是用下面的方法实现了重新还原,再修改,这种情况修改后最后新开终端,否则发现错了再也进不去root后,无法修改,还好有这个办法可行。

通过 pkexec visudo 修改了 /etc/sudoers 文件,文件格式错误,结果无法使用 sudo,无法修改回去了,咋办?

在网上搜索半天,找到一个风骚的解决办法:

假设你是通过 ssh 连接服务器,那就创建两个连接会话。
在第一个会话中,使用这个命令获取进程 PID:
echo $$
在第二个会话中,用下面的命令启动授权代理:
pkttyagent --process [PID]
回到第一个会话,运行命令:
pkexec visudo
再回到第二个会话,输入当前用户的密码。
回到第一个会话,发现已经可以编辑 /etc/sudoers 了!!!
谁能告诉我这里的授权机制是什么?原文链接在这里:
https://askubuntu.com/a/1053617/297291
背景:发现Nginx启动时都会去创建/usr/lcoal/nginx/logs下面的文件,且越写越大,而能不能去掉或不写入日志,乃至放别的非nginx 的安装目录呢,说是不能,也有说能的。
禁用错误日志的语法是可以的,但是文档声明在读取配置之前使用默认日志文件。(这似乎是合理的,因为它会如何告诉你你的配置有错误)
mkdir /usr/local/nginx/logs/  #先让它启动起来,但是经过下面配置后不会再写入日志了。
nginx.conf里:
user www;                  
worker_processes 3;

worker_rlimit_nofile 51200;
error_log /dev/null crit;
http {
      access_log off;
}

结果:
du -sh /usr/local/nginx/logs/*
4.0K    /usr/local/nginx/logs/access.log
4.0K    /usr/local/nginx/logs/error.log

来自:https://cloud.tencent.com/developer/ask/54829


我在启动nginx时使用-p参数解决了这个问题,例如:

/home/ubuntu/nginx/sbin/nginx -c /home/ubuntu/nginx/conf/nginx.conf -p /data/logs/nginx
这将在配置中指定的任何日志路径前面加上前缀目录。

这个能指向别的目录,但是Nginx会加个 logs/error.log 这样的log,如:
/data/logs/nginx/logs/error.log

来自:https://cloud.tencent.com/developer/ask/54829
FreeBSD 上的成功步骤:


来自:https://mp.weixin.qq.com/s?__biz=MzU3NTgyODQ1Nw==&mid=2247486217&idx=1&sn=0bc9d610e69a32f0a8f230a554cd8489&chksm=fd1c738fca6bfa9994751642ed544f5a4db957ee58a816b57c10c3da2d26d5be5e108a27b322&scene=27#wechat_redirect
对于同一个SLB下的服务器N台访问自己的VIP,会出现1/N的的概率访问不通的解释:
S-->SLB-->D
16.1.1.1 -> 18.1.1.1->出现在SLB里访问的口当SLB的VIP向自己进行回包时,查路由表时,发现源地址一样,导致SLB不再转包,原因是源的目的地址都一样:
X@eth10 IP 18.1.1.1 > 18.1.1.1: S 4229408411:4229408411(0) win 64240 cmss  #这俩地址一样了于是不再转发,于是发的包没有回收到,于是出现业务上卡住了。



防火墙经过地址转换抓包详解:
https://blog.csdn.net/shiyuqi_blog/article/details/90230186
防火墙DNAT与SNAT详谈:
https://blog.51cto.com/luosea/1686022

R表示收到,X表示发出,R@eth1是从eth1口收到数据包。X@eth2是从2口发出数据包
16.1.1.1>18.1.1.2 表示IP 16.1.1.1发给IP 18.1.1.2
Seq后面的数是序列号 request和reply的号一致就是一个数据包

抓包过程详解:
防火墙eth1口收到16.1.1.1发给18.1.1.2的request数据包
接着从eth2口这个request数据包转发出去
然后防火墙eth2口收到18.1.1.2发给16.1.1.1的reply数据包
防火墙再从eth1口转发这个reply给16.1.1.1
---------------------
作者:一只认真的鱼
来源:CSDN
原文:https://blog.csdn.net/shiyuqi_blog/article/details/90230186
版权声明:本文为博主原创文章,转载请附上博文链接!



echo strrpos("jack.txt",".");
4

如果你有一个文件名,你需要从PHP中删除扩展名(extension),有很多方法可以做到这一点。这里有三种方法。

使用pathinfo()函数

pathinfo()函数返回一个包含dirname,basename,extension和filename的数组。或者,您可以传递一个PATHINFO_常量,并返回完整文件名的那一部分:

$filename ='filename.html';
$without_extension = pathinfo($filename, PATHINFO_FILENAME);
如果文件名包含完整路径,则仅返回不带扩展名的文件名。


使用basename()函数

如果扩展名是已知的并且对于所有文件名是相同的,则可以将第二个可选参数传递给basename()以告诉它从文件名中删除该扩展名:

$filename ='filename.html';
$without_extension = basename($filename,'.html');
如果文件名包含完整路径,则仅返回不带扩展名的文件名。

使用substr和strrpos

$filename ='filename.html';
$without_extension = substr($filename, 0, strrpos($filename, "."));
如果文件名包含完整路径,则返回没有扩展名的完整路径和文件名。您可以使用basename()来删除路径,例如:

basename(substr($filename, 0, strrpos($filename, ".")));
尽管它比使用pathinfo慢。

速度比较

使用PHP 5.4在Mac上以10,000,000次循环运行其中的每一个:

pathinfo:10.13秒
basename:7.87秒
substr / strrpos:6.05秒
basename(substr / strrpos):11.98秒
如果文件名不包含完整路径,或者如果它不重要,那么substr / strrpos选项似乎是最快的。

如果文件名包含路径并且您不想要路径但确实知道要删除的扩展名是什么,那么basename似乎是最快的。

如果文件名包含路径,则不需要路径,也不知道扩展名是什么,那么使用pathinfo()选项。

结论

还有很多其他方法可以做到这一点,有些可能会更快。在很多情况下,速度可能并不那么重要(运行pathinfo的10秒钟毕竟是10万次)。这篇文章的目的是展示一些用PHP从文件名中删除扩展名的方法。


来自:http://www.webkaka.com/tutorial/php/2019/050857/
Centos7修改grub启动菜单等待时间:
vi /boot/grub2/grub.cfg

找到并更改启动时间(timeout)


From:https://www.cnblogs.com/OceanF/p/9837554.html
1、错误描述
[sdb] No Caching mode page found
[sdb] Assuming drive cache:write through
....
Could not boot
/dev/root does not exist

2、进入安装选择内核界面时,按下e键

vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet
更改为(即更改inst.stage2=hd:后面的内容即可)
vmlinuz initrd=initrd.img inst.stage2=hd:/dev/sdb1:/ quiet

说明:
sdb1是你系统安装系统所在的U盘的挂载名称,可以通过 ls /dev/sd*获取。
我的是:/dev/sda /dev/sdb /dev/sdb1

一般是sdb1,因为硬盘一般是sda,可能会有不同,具体看情况。

再按下CTRL + X 快捷键即可继续安装了。

实践来自:https://blog.51cto.com/407866527/2109066
路径含有空格导致误删文件
史上最经典的要数下面这个bumblebee项目了,这个项目本来不出名,不过,程序在其安装脚本install.sh里的一个bug让这个项目一下子成了全世界最瞩目的项目。



那我们该如何防范这种问题呢?

(1)良好的编程习惯:变量加引号防止扩展

path="/usr/local /sbin"

# rm -rf $path

rm -rf "$path"



那我们该如何防范这种问题呢?

(1)良好的编程习惯:变量加引号防止扩展

rm -rf "~"

(2)如果不确定,删除之前 echo 或 find 一下,看变量被扩展成啥了

echo rm -rf "~"

rm -rf ~

echo rm -rf ~

rm -rf /home/work



cd 切换目录失败,导致文件被误删

cd ooxx_path_not_exsit

rm -rf *.exe


5、终极解决方案



不要使用 root 操作系统资源,这样至少不会删除系统文件。

6、在登录 shell 下使用友好的提示符

友好的命令提示符能时刻提醒操作者当前在哪个路径下,避免错误的路径下操作文件。


来自:https://mp.weixin.qq.com/s/_aRRFK4fwnp4uSLQ4tOOhA
分页: 1/333 第一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 下页 最后页 [ 显示模式: 摘要 | 列表 ]