kk Blog —— 通用基础


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

PHP 使用 +1month、-1month 的问题

https://blog.csdn.net/qq_32737755/article/details/92690573

经常会有人被strtotime结合-1 month, +1 month, next month的时候搞得很困惑, 然后就会觉得这个函数有点不那么靠谱, 动不动就出问题. 用的时候就会很慌…

比如 2018-07-31 这天执行代码:

1
date("Y-m-d",strtotime("-1 month"))

怎么输出是的2018-07-01? 上个月的最后一天不应该是2018-06-30吗?

我们来模拟下date内部的对于这种事情的处理逻辑:

1
2
1. 先做-1 month, 那么当前是07-31, 减去一以后就是06-31.
2. 再做日期规范化, 因为6月没有31号, 所以就好像2点60等于3点一样, 6月31就等于了7月1

怎么办

只用每月1号处理

从PHP5.3开始呢, date新增了一系列修正短语, 来明确这个问题, 那就是”first day of” 和 “last day of”, 也就是你可以限定好不要让date自动”规范化”:

1
2
3
4
var_dump(date("Y-m-d", strtotime("last day of -1 month", strtotime("2017-03-31"))));
//输出2017-02-28
var_dump(date("Y-m-d", strtotime("first day of +1 month", strtotime("2017-08-31"))));
输出2017-09-01

vpn CONNECT方法

https://www.cnblogs.com/xyl1932432873/p/7735866.html

CONNECT这个方法的作用就是把服务器作为跳板,让服务器代替用户去访问其它网页,之后把数据原原本本的返回给用户。这样用户就可以访问到一些只有服务器上才能访问到的网站了,这就是HTTP代理。

假如我想通过代理访问这个博客(www.web-tinker.com),我就需要建立一个TCP连接,连接到服务器监听的那个端口,然后给服务器发送一个HTTP头。下面就是这个HTTP头的内容:

1
2
3
4
5
CONNECT www.web-tinker.com:80 HTTP/1.1
Host: www.web-tinker.com:80
Proxy-Connection: Keep-Alive
Proxy-Authorization: Basic *
Content-Length: 0

所有的HTTP头都是类似的,第一行是方法名、主要参数、HTTP版本。接着一行一个参数,最后用两个换行来结束。这个地方应该填写验证的用户名和密码。

发送完这个请求之后,就是服务器端响应请求了。如果用户名和密码验证通过,就会返回一个状态码为200的响应信息。虽然状态码是200,但是这个状态描述不是OK,而是Connection Established。

1
HTTP/1.1 200 Connection Established

如果用户名和密码验证不通过。会返回一个407的状态码,状态表述是Unauthorized。表示没有权限访问代理服务器。

1
HTTP/1.1 407 Unauthorized

验证通过之后,我们就可以做普通的HTTP操作了。完全可以把现在的代理服务器看作是请求连接的Internet服务器,也就是说可以像直接访问普通的服务器一样,使用GET、POST等方法来请求Internet服务器上的页面了。我们在发送CONNECT请求的时候就已经告诉了服务器我们需要访问的Internet服务器,上面我用了这个博客的网址。现在我们要访问这个博客的主页就可以发送一个简单的GET请求。

1
2
3
GET / HTTP/1.1
Host: www.web-tinker.com
Content-Length: 0