面试题:一个HTTP请求的过程

我们平时浏览网页的时候,会打开浏览器,输入网址后按下回车键,然后就会显示出你想要浏览的内容。在这个看似简单的用户行为背后,到底隐藏了些什么呢?
对于普通的上网过程,系统其实是这样做的:浏览器本身是一个客户端,当你输入URL的时候,首先浏览器会去请求DNS服务器,通过DNS获取相应的域名对应的IP,然后通过IP地址找到IP对应的服务器后,要求建立TCP连接,等浏览器发送完HTTP Request(请求)包后,服务器接收到请求包之后才开始处理请求包,服务器调用自身服务,返回HTTP Response(响应)包;客户端收到来自服务器的响应后开始渲染这个Response包里的主体(body),等收到全部的内容随后断开与该服务器之间的TCP连接。
继续阅读面试题:一个HTTP请求的过程

linux chmod -R 777 / 之后的修复过程

如果一旦误操作导致linux根目录下面的所有文件改为了777。

那么这时候一定不要重启电脑,找一台新的机器执行

getfacl -R / > acl.bak

然后传到这台机器上再执行

setfacl --restore=acl.bak

如果出故障机器已经重启过了,那可能就麻烦一些。因为帐户认证系统已经损坏了,登录不成功。 继续阅读linux chmod -R 777 / 之后的修复过程

win10 sqlserver2016开启远程访问

1 先以window用户登录Microsoft SQL Server Management Studio

在Sql链接上面右键属性=>安全性=>服务器身份验证=>修改为【Sql Server和Windows身份验证模式】

返回到链接界面打开链接=>点击安全性=>登录名=>选择sa右键属性=>修改为Sql Server身份验证并设置密码,然后点击左侧状态将登录选择为已启用

继续阅读win10 sqlserver2016开启远程访问

ES6中用起来很爽的几点

1 剪头函数的this指针问题

this指向的固定化,并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,而是引用外层的this。这也避免了之前js代码中保存this指针的代码.


// ES6
function foo() {
setTimeout(() => {
console.log('id:', this.id);
}, 100);
}

// ES5
function foo() {
var _this = this;

setTimeout(function () {
console.log('id:', _this.id);
}, 100);
}

继续阅读ES6中用起来很爽的几点

ES6语法中常量对象的一个有趣的问题

对于复合类型的变量,变量名不指向数据,而是指向数据所在的地址。const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变,所以将一个对象声明为常量必须非常小心。

const foo = {};
foo.prop = 123;
foo.prop
// 123
foo = {}; // TypeError: "foo" is read-only

继续阅读ES6语法中常量对象的一个有趣的问题

Gearman static变量注意的点

记录下Gearman下面static变量会遇到的问题.


class Ticket{
static public function config(){
return []//从数量库中获取;
}

static public function getTicketConfig($itype){
static $configHash;
$configHash or $configHash = self::config();
return $configHash[$itype]?$configHash[$itype]:[];
}
}

 

这行代码如果在常规的BS架构中是可以减少数据库请求次数的,config()方法中的数据会在下一次请求的时候同步变化,在本次请求中是保持不变的.

继续阅读Gearman static变量注意的点

飞机加油面试题

已知:

每个飞机只有一个油箱,飞机之间可以相互加油,注意是相互,没有加油机,一箱油可供一架飞机绕地球飞半圈。

问题:

为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?

A:所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场

B:所有飞机从同一机场,同一方向起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场

下面就是答案:至少需要三架飞机。

继续阅读飞机加油面试题

swift之时间戳之间转化

1.时间转时间戳函数

/**
    时间转化为时间戳
    :param: stringTime 时间为stirng
    :returns: 返回时间戳为stirng
*/
static func stringToTimeStamp(stringTime:String)->String {

    var dfmatter = NSDateFormatter()
    dfmatter.dateFormat="yyyy年MM月dd日"
    var date = dfmatter.dateFromString(stringTime)

    var dateStamp:NSTimeInterval = date!.timeIntervalSince1970

    var dateSt:Int = Int(dateStamp)
    print(dateSt)
    return String(dateSt)

}

2. 时间戳转时间函数
继续阅读swift之时间戳之间转化