一)nginx的引入epoll后惊群处理:
accept() 和 epoll_wait() 调用,还存在一个惊群的问题。换句话说,当网络 I/O 事件发生时,多个进程被同时唤醒,但实际上只有一个进程来响应这个事件,其他被唤醒的进程都会重新休眠。

其中,accept() 的惊群问题,已经在 Linux 2.6 中解决了;
而 epoll 的问题,到了 Linux 4.5 ,才通过 EPOLLEXCLUSIVE 解决。
为了避免惊群问题, Nginx 在每个 worker 进程中,都增加一个了全局锁(accept_mutex)。这些 worker 进程需要首先竞争到锁,只有竞争到锁的进程,才会加入到 epoll 中,这样就确保只有一个 worker 子进程被唤醒。

简单点说:Apache动辄就会启动成百上千的进程,如果发生惊群问题的话,影响相对较大;但是对Nginx而言,一般来说,worker_processes会设置成CPU个数,所以最多也就几十个,即便发生惊群问题的话,影响相对也较小。
另:高版本的Linux中,accept不存在惊群问题,不过epoll_wait等操作还有。

  假设你养了一百只小鸡,现在你有一粒粮食,那么有两种喂食方法:
你把这粒粮食直接扔到小鸡中间,一百只小鸡一起上来抢,最终只有一只小鸡能得手,其它九十九只小鸡只能铩羽而归。这就相当于关闭了accept_mutex。
你主动抓一只小鸡过来,把这粒粮食塞到它嘴里,其它九十九只小鸡对此浑然不知,该睡觉睡觉。这就相当于激活了accept_mutex。
  可以看到此场景下,激活accept_mutex相对更好一些,让我们修改一下问题的场景,我不再只有一粒粮食,而是一盆粮食,怎么办?
此时如果仍然采用主动抓小鸡过来塞粮食的做法就太低效了,一盆粮食不知何年何月才能喂完,大家可以设想一下几十只小鸡排队等着喂食时那种翘首以盼的情景。此时更好的方法是把这盆粮食直接撒到小鸡中间,让它们自己去抢,虽然这可能会造成一定程度的混乱,但是整体的效率无疑大大增强了。
  Nginx缺省激活了accept_mutex(最新版缺省禁用),是一种保守的选择。如果关闭了它,可能会引起一定程度的惊群问题,表现为上下文切换增多(sar -w)或者负载上升,但是如果你的网站访问量比较大,为了系统的吞吐量,我还是建议大家关闭它。

链接:https://www.jianshu.com/p/129dd4320ae1

二)边缘触发和水平触发主要体现在边缘触发程序复杂还是系统承担这个复杂而用水平触发,边缘触发只通知一次,增加程序处理难度和各种异常处理:
第一种,使用非阻塞 I/O 和水平触发通知,比如使用 select 或者 poll。

根据刚才水平触发的原理,select 和 poll 需要从文件描述符列表中,找出哪些可以执行 I/O ,然后进行真正的网络 I/O 读写。由于 I/O 是非阻塞的,一个线程中就可以同时监控一批套接字的文件描述符,这样就达到了单线程处理多请求的目的。

所以,这种方式的最大优点,是对应用程序比较友好,它的 API 非常简单。

但是,应用软件使用 select 和 poll 时,需要对这些文件描述符列表进行轮询,这样,请求数多的时候就会比较耗时。并且,select 和 poll 还有一些其他的限制。

select 使用固定长度的位相量,表示文件描述符的集合,因此会有最大描述符数量的限制。比如,在 32 位系统中,默认限制是 1024。并且,在 select 内部,检查套接字状态是用轮询的方法,再加上应用软件使用时的轮询,就变成了一个 O(n^2) 的关系。

而 poll 改进了 select 的表示方法,换成了一个没有固定长度的数组,这样就没有了最大描述符数量的限制(当然还会受到系统文件描述符限制)。但应用程序在使用 poll 时,同样需要对文件描述符列表进行轮询,这样,处理耗时跟描述符数量就是 O(N) 的关系。

除此之外,应用程序每次调用 select 和 poll 时,还需要把文件描述符的集合,从用户空间传入内核空间,由内核修改后,再传出到用户空间中。这一来一回的内核空间与用户空间切换,也增加了处理成本。

有没有什么更好的方式来处理呢?答案自然是肯定的。

第二种,使用非阻塞 I/O 和边缘触发通知,比如 epoll。

既然 select 和 poll 有那么多的问题,就需要继续对其进行优化,而 epoll 就很好地解决了这些问题。

epoll 使用红黑树,在内核中管理文件描述符的集合,这样,就不需要应用程序在每次操作时都传入、传出这个集合。
epoll 使用事件驱动的机制,只关注有 I/O 事件发生的文件描述符,不需要轮询扫描整个集合。
不过要注意,epoll 是在 Linux 2.6 中才新增的功能(2.4 虽然也有,但功能不完善)。由于边缘触发只在文件描述符可读或可写事件发生时才通知,那么应用程序就需要尽可能多地执行 I/O,并要处理更多的异常事件。

第三种,使用异步 I/O(Asynchronous I/O,简称为 AIO)。在前面文件系统原理的内容中,我曾介绍过异步 I/O 与同步 I/O 的区别。异步 I/O 允许应用程序同时发起很多 I/O 操作,而不用等待这些操作完成。而在 I/O 完成后,系统会用事件通知(比如信号或者回调函数)的方式,告诉应用程序。这时,应用程序才会去查询 I/O 操作的结果。

异步 I/O 也是到了 Linux 2.6 才支持的功能,并且在很长时间里都处于不完善的状态,比如 glibc 提供的异步 I/O 库,就一直被社区诟病。同时,由于异步 I/O 跟我们的直观逻辑不太一样,想要使用的话,一定要小心设计,其使用难度比较高。

工作模型优化

了解了 I/O 模型后,请求处理的优化就比较直观了。使用 I/O 多路复用后,就可以在一个进程或线程中处理多个请求,其中,又有下面两种不同的工作模型。

第一种,主进程 + 多个 worker 子进程,这也是最常用的一种模型。这种方法的一个通用工作模式就是:

主进程执行 bind() + listen() 后,创建多个子进程;
然后,在每个子进程中,都通过 accept() 或 epoll_wait() ,来处理相同的套接字。
比如,最常用的反向代理服务器 Nginx 就是这么工作的。它也是由主进程和多个 worker 进程组成。主进程主要用来初始化套接字,并管理子进程的生命周期;而 worker 进程,则负责实际的请求处理。我画了一张图来表示这个关系。
示例五:显示每个进程的上下文切换情况(-w)
pidstat -w -p 2831









PID:进程id
Cswch/s:每秒主动任务上下文切换数量
Nvcswch/s:每秒被动任务上下文切换数量
Command:命令名

示例六:显示选择任务的线程的统计信息外的额外信息 (-t)
pidstat -t -p 2831
$pidstat -t -p 4194
Linux 4.20.3-1.el7.elrepo.x86_64 (levoo-web_php_bj_cp_101_200_228_135)   02/03/19        _x86_64_        (1 CPU)

15:51:17      UID      TGID       TID    %usr %system  %guest    %CPU   CPU  Command
15:51:17        0      4194         -    0.00    0.00    0.00    0.00     0  minivtun
15:51:17        0         -      4194    0.00    0.00    0.00    0.00     0  |__minivtun


链接:https://www.jianshu.com/p/3991c0dba094
centos6.8不能安装最新版git的解决办法:
1  Install WANDisco repo package:
yum install http://opensource.wandisco.com/centos/6/git/x86_64/wandisco-git-release-6-1.noarch.rpm

2 Install the latest version of Git 2.x:
yum install git

3 Verify the version of Git that was installed:
git --version


来自链接:https://www.jianshu.com/p/ab98dd540919
option + command+esc  #发现微信截图让微信程序死了,于是用这个快捷键呼出后强制退出后系统好了。

注64位系统

第一步下载 wget http://www.rarlab.com/rar/rarlinux-x64-5.3.0.tar.gz
第二步解压 tar -zxvf rarlinux-x64-5.3.0.tar.gz
第三步     进入解压出的“rar”文件夹 cd rar
第四步    进行配置 make
       显示如下表示成功
mkdir -p /usr/local/bin

mkdir -p /usr/local/lib

cp rar unrar /usr/local/bin

cp rarfiles.lst /etc

cp default.sfx /usr/local/lib
可以用rar命令开始解压 
rar x test.rar //解压 test.rar 到当前目录
压缩
rar test.rar ./test/ //将 test目录打包为 test.rar
---------------------
原文:https://blog.csdn.net/weixin_41404058/article/details/80304869
部分应用可使用common+n快捷键
相信不少使用 Mac 的朋友对 OS X 里的时间显示都有很大意见,只能显示当前日期,功能缺失得很厉害,所以不少朋友都使用第三方的日历软件来取代系统自带的,像 Fantastical。不过 Fantastical 是一款收费软件,如果想要免费软件的话,其实大家还可以试试这款 Itsycal。
官方网站:https://www.mowglii.com/itsycal/

http://www.apprcn.com/itsycal.html


brew install tree

来自:https://blog.csdn.net/xidiancoder/article/details/72654583
brew install iproute2mac
来自:https://blog.csdn.net/u010164190/article/details/79474309

实用工具-》网络工具-》Traceroute
来自:https://blog.csdn.net/qq_38789531/article/details/82734646
密钥登陆能,发现SSH不行,提示:
$ssh -l xiangdong 10.244.25.**
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

到:
$ssh -l xiangdong 10.244.25.**
xiangdong@10.244.25.89's password:


实践OK办法,能密钥能密码:
cat  /etc/ssh/sshd_config|grep -E "PermitRootLogin|UsePAM|PasswordAuthentication"

UsePAM yes  #改成NO后出现需要密钥,还登陆不了。后修改为yes后重启oK service sshd restart
PermitRootLogin yes
PasswordAuthentication yes


root依然不行,修改UsePAM no,还是不行,后来加一个irdcops帐号且能 sudo ,也就用它去SSH就行了:
$ssh -l root 10.244.25.**
root@10.244.25.**'s password:
Permission denied, please try again.

==================================
首先:配置ssh服务器配置文件。

在root 用户下才能配置。

vi /etc/ssh/sshd_config

权限设为no:

#PermitRootLogin yes

#UsePAM yes

#PasswordAuthentication yes

如果前面有# 号,将#号去掉,之后将yes修改为no。

修改之后为:

PermitRootLogin no

UsePAM no

PasswordAuthentication no

权限设为yes:

RSAAuthentication yes

PubkeyAuthentication yes

(2)重启sshd服务

systemctl restart sshd.service

systemctl status sshd.service #查看ssh服务的状态

#systemctl start sshd.service  #开启ssh服务

#sytemctl enable sshd.service #ssh服务随开机启动,还有个disabled

#systemctl stop sshd.ervice #停止

正常情况下应该是Active:active(running)
摘自:https://www.cnblogs.com/xubing-613/p/6844564.html
用了这么久的MAC,一直在找这个剪切文件的方法。


今天没事在网上找别的东西时偶然的发现了关于MAC下剪切的快捷键!
和大家分享一下!!

首先选中文件,按Command+C复制文件;

然后按Command+Option+V;就可以把你的文件剪走了!


在这里补充一下,我这里讲的是剪切文件夹,不是剪切文本和文字!Command+X只能剪切文字文本之类的!

来自:https://bbs.feng.com/read-htm-tid-5861420.html
引言
习惯了使用markdown 输入法,便什么都是用 md 来编写,可惜目前文件双击都是使用 xcode 打开的。右键选择打开方式,无法更改默认打开方式(和 windows 不同),才发现,默认打开另有地方。只需三步完美设置,请看下列步骤:
步骤
一、右键选中文件,点击显示简介

二、在显示简介标签页,点击下拉框选中我们需要打开的软件
这里我使用的简洁优美小众的 Typora,好产品值得推荐

三、所有格式都用它打开,得点选:使用此应用程序打开所有这种类型的文稿。【全部更改...】 <==点它。

来自:https://blog.csdn.net/lovechris00/article/details/79935134
Windows10自带剪贴板,前提是将系统升级到win10 1809的更新及其以上,才会有系统的剪贴板,我们可以尝试更新win10系统解决。
打开方法:
下载文件
,放到这儿:C:\Windows\System32\clipbrd.exe


picindex=3" target="_blank">https://jingyan.baidu.com/album/574c5219f8073f2c8d9dc198.html?picindex=3
https://jingyan.baidu.com/article/3d69c551a9a4d8b1cf02d7b1.html

按WIN+V键即可打开剪贴板查看器。

1)Windows下有一个复制粘贴的,免费开源的 Windows 管理剪贴板,让你处理文字更高效:Ditto,快捷键个人设置的是 Ctrl + Shift + D,Mac下也需要有这样一款软件。
2)贴贴板 – 高效易用的剪贴板工具[macOS]:  https://www.appinn.com/tie-tie-ban-for-macos
快捷键:  Ctrl+1  or  fn+option+F1 or option + 1
自己一直在用,very good!
1、Mac(Paste破解版)

     百度网盘下载链接:https://pan.baidu.com/s/1ZxfHW0YJ5-ibepIPh8XC7g

     使用方法:先按Command+C复制文本或图片,然后按Command+Shift+V(快捷键可自定义)选择历史粘贴对象。

   【如果安装后打开时提示:已损坏,移到废纸篓。

      解决方法: 在隐私里面打开任意来源

      具体做法:打开终端\ 输入命令:sudo spctl --master-disable  (master前面为两短-) 

      此时去mac的系统偏好设置\安全性与隐私,可以看到下图,就解决问题了。



2、Win(多款)

    百度网盘下载链接:https://pan.baidu.com/s/1wG1vlg2v12za48IuPVovJg  

    使用方法:按Ctrl+~ 选择历史粘贴对象。


原文:https://blog.csdn.net/kzadmxz/article/details/81413141
背景:在Mac上向linux上拷文件时,想和Win一样贴上全路径,怎么得到文件的全路径?

mac下如何复制文件路径:  option+command+C

查看文件的文件路径快捷键:option+command+p键

如何查看问件的时间:shift + command + p

From: https://blog.csdn.net/cdqn10086/article/details/70216350
在macos下安装ansible主要有三种方法,建议采用源码安装的方法安装ansible。
brew安装(需要安装homebrew模块)
brew install ansible

From: https://www.jianshu.com/p/873975e0abb8
Demon:
code ~/.bashrc

根据终端命令行使用 bash 还是 zsh 选择编辑环境变量的文件。

bash,写入 ~/.bash_profile

zsh, 写入 ~/.zshrc

阅读全文
以下四条命令搞定,谁用谁知道



来自:https://blog.csdn.net/weixin_40545512/article/details/82685927
分页: 14/272 第一页 上页 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 下页 最后页 [ 显示模式: 摘要 | 列表 ]