Joyber 发布的文章

服务器负载过高(卡死)

#查看80端口连接数最多的20个IP

netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20

查看并发数

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

前面的 netstat -n是netstat的命令,window和linux都可以用,结果显示内容差不多

后面的 awk'/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 是linux下的命令,主要作用是对netstat输出的结果进行过滤和处理

运行这一句之后,显示的结果类似如下:

TIME_WAIT 27       
FIN_WAIT1 435
FIN_WAIT2 89
ESTABLISHED 82
SYN_RECV 64
CLOSING 4
LAST_ACK 90

这些结果代表啥意思呢?如下:

TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
ESTABLISHED:代表一个打开的连接
SYN-RECV:再收到和发送一个连接请求后等待对方对连接请求的确认
SYN-SENT:再发送连接请求后等待匹配的连接请求
CLOSING:等待远程TCP对连接中断的确认
CLOSED:没有任何连接状态
CLOSE-WAIT:等待从本地用户发来的连接中断请求
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
LISTEN:侦听来自远方的TCP端口的连接请求

语法和兼容性

paint-order: normal | [ fill || stroke || markers ]
//||表示或者,可以并存,因此下面的写法都是合法的:

paint-order: normal;

paint-order: fill;
paint-order: stroke;
paint-order: markers;

paint-order: fill markers;
paint-order: markers stroke;
...

paint-order: fill markers stroke;
paint-order: markers fill stroke;
paint-order: stroke markers fill;
...

原文链接:
https://www.zhangxinxu.com/wordpress/2020/01/css-paint-order/comment-page-1/#comment-401898

在局部容器使用 overscroll-behavior 属性:
语法:

overscroll-behavior: [ contain | none | auto ]{1,2}


/* 单个关键字值 */
overscroll-behavior: auto;     /* 默认值 */
overscroll-behavior: contain;
overscroll-behavior: none;

/* 两个值,分别表示x方向和y方向 */
overscroll-behavior: auto contain;

兼容性
目前Safari浏览器尚不支持,Chrome和Firefox浏览器均支持,IE浏览器则有近似效果属性-ms-scroll-chaining代替,不过需要window 8及其以上版本的系统:
https://caniuse.com/#search=overscroll-behavior

例子:

.child-div{
    overscroll-behavior: contain;
    -ms-scroll-chaining: contain; 
}

TouchSlide 1.1 在展示显示元素不是100%宽度的时候,将元素宽度改为父级宽度的问题,导致不能显示部分第2个元素。问题是元素被使用了父级宽度导致的,滑动宽度还应加上左右margin的宽度:

微信图片_20191209143351.png

需要修改的地方:

//130行
var slideW= conBox.parentNode.clientWidth;// mainCell滑动距离
//修改为以下内容
    var winW = conBox.clientWidth;
    var elW = conBox.children[0].clientWidth; // 元素宽度
    var elWrate = elW / winW; //元素宽度比例
    var slideMl= getStyleVal(conBox.children[0], 'marginLeft');
    var slideMr= getStyleVal(conBox.children[0], 'marginRight');
    var slideW= elW + slideMl+slideMr;// mainCell滑动距离

//159行
for ( var i =0; i<tempSize; i++ ){  conBox.children[i].style.cssText="display:table-cell;vertical-align:top;width:"+slideW+"px"  }
//修改为
for ( var i =0; i<tempSize; i++ ){  conBox.children[i].style.cssText="display:table-cell;vertical-align:top;width:"+elW+"px"  }

//修改orientationChange方法

    var orientationChange = function(){
        winW = twCell.clientWidth;
        elW = winW * elWrate; // 元素宽度
        slideW= elW + slideMl+slideMr;// mainCell滑动距离

        conBox.style.width = tempSize*slideW +"px";
        for ( var i =0; i<tempSize; i++ ){  conBox.children[i].style.width=elW+"px";  }
        var ind = effect == "leftLoop"? index+1:index;
        translate(  -ind*slideW ,0 );
    }