const和final
他们干同样的事情,即变量定义后不可修改,但是final应用的场景更多一些。const只能用在top-level,static,local variables。函数里的变量OK,class里的成员变量就不能简单的用const int v = 4这样的句子,只能static const,所以如果只是定义一个变量,那就用final就好了,可以不用考虑一些乱七八糟的事情。
void main() {
final fvar = 'helloworld';
const cvar = 'helloworld';
}
体系机构
法律上的国际标准有7层(OSI/RM),事实上的国际标准有4层(TCP/IP体系结构),教学上综合上述两种结构采用一种五层结构。
一台主机要访问一台服务器,也就是浏览器进程和服务器进程间的基于网络的通信,双方都要经过五层协议的处理。数据经过应用层到物理层,层层封包然后发送出去。接收方通过相反的过程(物理层到应用层)层层解封数据。
Pod
通常每个pod会放一个容器(应用),虽然也可以放多个容器,但是那一般都是有一个主容器,其他一些helper容器或者辅助服务的情况的时候。
每个pod会有他自己的ip地址,不是容器,而是pod。pod之间就通过这个ip地址来交流。但是pod还有一个重要的概念就是ephemeral,就是说他们会很容易挂掉。而当一个pod挂掉后会被重新启动一个新的,并且会被分配一个新的ip。这样的话就很不方便,你是通过ip来通信的,那一旦当pod被重启一个新的后,你就得去做相应调整。所以就有了service。
常用命令
停止:nginx -s stop
启动:nginx
配置重加载(不会关闭nginx):nginx -s reload
查看当前配置文件位置:nginx -t
XSS
js代码通过script标签被注入到html页面,可以通过转义来解决
通过a标签:<a href="javascript:alert('XSS')">come on</a> 点击后href里面的js代码会被执行
更坑爹的是javascript:会被执行,jAvascript这种也会被执行,也就是说javascript:这个东西不管大小写还是前后有空格啥的,都会被执行
最终的解决办法是面对href这种值,只能允许http或者https,来杜绝javascript:这种东西被注入
json字符串中不能含有</script>,否则前面的script标签会被关闭掉
React/Vue时,不使用v-html/dangerouslySetInnerHTML,像href这种能通过javascirpt:来执行代码的标签,要特别注意字符串拼接的问题
使用http-only:通常来说document.cookie能拿到当前网站的,但是如果给cookie加上http-only,前端js就拿不到cookie了。要删除的时候,可以通过类似下面代码删除
res.clearCookie('sid', {
path: '/',
httpOnly: true,
secure: false,
});
来源:https://juejin.im/post/6844903685122703367
VPC
Virtual Private Cloud,能建立一个跨实例分享资源的网络。
为了减少延迟,aws在世界各地有各种Region,一个Region包含很多Availability Zone,Availability Zone是真正包含物理数据中心的地方,为aws provide redundancy。比方说一个Region的有三个Zone 分别为A,B,C,如果遇到什么灾害,A挂了,我们依然能够访问数据,因为数据A中的数据会被同步到B,C。
拿家庭网络来说,首先也是最重要的是你的网络提供商要提供一个你家里到互联网的连接。要使得你的设备能连接到互联网,你需要一个gateway,而modem就是用来当作gateway,modem连接着一个有线或者无线路由,这个路由能使你家中的设备能连接到彼此,并且通过cabel modem访问到互联网。
Functors, Applicative Functors and Monoids
Functors redux
学两个新的 functor 引用,IO 和(->) r
之前有说过,如果某个值的类型是IO String, 那意味着他是一个IO action,执行他会得到一个string,可以用<-符号来绑定结果到一个名字上。我们提到过,I / O action就像是一只有小脚丫的盒子,可以向外移动并为我们从外部获取一些值,我们可以检查拿到的值,但是检查完后要把他包装回IO。