** 安装模块
- 使用pip安装包1234567pip install numpypython // 进入交互式命令行type(变量) // 查看变量的类型dir(variable) // 查看变量的属性hasattr(variable, attribute) // 查看变量是否有某种属性Ctrl+D // 退出交互式命令行
** 安装模块
|
|
TCP(Transmission Control Protocol 传输控制协议)面向连接的,可靠的,基于字节流的传输层通信协议。
第一次握手:客户端发送连接请求报文段,SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认。
第二次握手:服务器收到SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时自己发送SYN请求信息,SYN位置为1,Sequence Number为y;服务器将上述所有信息放到一个报文段(SYN+ACK报文段)中,一并发给客户端,此时服务器进入SYN_RECV状态。
第三次握手:客户端收到服务端的SYN+ACK报文段,然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕后,客户端和服务端都进入ESTABLISHED状态,完成TCP三次握手。
完成了三次握手,客户端和服务端就可以开始传送数据。
第一次分手:主机1(可以是客户端,也可以是服务器端),设置Sequence Number和Ackowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;
第二次分手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,同意你的关闭请求;
第三次分手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态;
第四次分手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL(通常为2分钟)后依然没有收到回复,则证明Server端已正常关闭,那么,主机1就可以关闭连接了。
##
|
|
|
|
同构
React组件既可以在浏览器端渲染,也可以在服务器端渲染产生HTML,代码可以运行在不同的环境下,这种方式叫“同构”
服务端渲染
对于来自浏览器的HTTP请求,服务器通过访问存储器或者访问别的API服务等方式获得数据,然后根据数据渲染生成HTML返回给浏览器,浏览器只需要把HTML渲染出来。
服务器端的API支持
传统的模板库就是DOM树的操作,将HTML字符串插入到网页中,无论如何优化都有它的极限。
React的Virtual DOM工作原理,配合生命周期函数的应用,性能不是字符串替换的模板库能够比拟的。
完全浏览器渲染的缺点:
首页性能,首页加载白屏问题
不利于SEO
React同构
用户第一请求页面时候,node服务端做初始渲染,node服务端接受到请求后,把需要用的HTML渲染成HTML字符串,返回给客户端,之后,客户端接管渲染的控制权限
NODE服务端渲染
Redux在客户端提供应用初始所需的state,客户端把服务端返回的state作为初始的state
发送响应前用ReactDOMServer.renderToString(el)渲染初始的HTML,渲染时会计算所生成HTML的校验和,并存放在根节点的属性data-react-checksum中
服务端最后一步就是把初始组件的HTML和初始state注入到客户端能够渲染的模板中。
state的传递通过script标签来吧preloadedState赋给window.INITIAL_STATE
注入js bundle文件
客户端就可以通过window.INITITIALSTATE__来获取preloadedState,
浏览器客户端渲染
从window.INITIAL_STATE得到初始的state,并传递给createStore()
页面加载js后,打包JS启动,调用React.render()重新渲染一遍React组件,在重新计算DOM树之后,也会计算一遍校验和,和服务器的校验和做一个对比,如果二者相同,就没有必要做DOM操作了。然后会与服务端渲染的HTML的data-react-id属性做关联。这会把新生成的React实例与服务端的虚拟DOM连接起来。因为同样适用了来自Redux Store的初始state,并且view组件代码是一样的,结果就是我们得到了相同的DOM
如果服务器端渲染和浏览器端渲染产生的内容不一致,用户会先看到服务器端渲染的内容,浏览器端生成的DOM树,覆盖掉服务器产生的HTML,用户会看到一次闪烁。
实现同构一定要保正服务器端和浏览器段渲染的结果一致。
|
|
node –inspect来调试,在需要调试的地方设置下debugger, 在chrome浏览器中,打开commandline中提示的调试地址
open index.html : 在 浏览器中打开页面
d 列出在会话访问的目录列表,输入列表前的序号,即可直接跳转
|
|
在.zshrc文件中配置要加载的插件
快速打开文件
在.zshrc,.bash_profile中添加
|
|
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
解决思路:
按圈进行循环,一个圈的循环包括从左上-右上,右上-右下,右下-左下,左下到左上,完成一圈数值的设定
|
|
移动端下,一般设置1px的边线,但在高清屏幕的手机中浏览时,会变粗,并没有显示1px。
|
|
把viewport的宽度设置为实际的设备物理宽度,css的1px就等于设备的1px
https://github.com/amfe/article/issues/17
https://segmentfault.com/a/1190000008619063
DOM中元素继承HTMLElement
自定义的元素继承HTMLUnknowElement
元素定义包含:
|
|
相等操作符分为两种,一种是相等(==)和不相等(!=),另一种是全等(===)和不全等(!==)。
相等和不相等操作符进行比较的时候,如果数据类型不相同,会强制类型转换,再进行比较
全等和不全等操作符进行比较的时候,不会进行类型转换,直接比较
不同数据类型转换规则
表达式 | 值 | 原因 |
---|---|---|
null == undefined | true | |
NaN == NaN | false | NaN不等于NaN |
0 == false | true | false转换为0 |
1 == true | true | true转换为1 |
2 == true | true | true转换为1, 1不等于2 |
[] == false | true | []调用toString转化为””,””字符串转换为0 |
[1] == 1 | true | [1]调用toString转化为”1”,”1”字符串转换为1 |
[] == 0 | true | []调用toString转化为””,””字符串转换为0 |
{} == false | false | {}调用toString->”[object Object]”->NaN,false->0 |
{} == “[object Object]” | true | {}调用toString转换为”[object Object]”, |
{} == 0 | false | |
{} == false | false | {}调用toString->”[object Object]”->NaN, NaN==0 |
{} == {} | false | 两个对象,分别保存在不同的内存地址中 |
[] == [] | false | 两个对象,分别保存在不同的内存地址中 |
[1] == [1] | false | 两个对象,分别保存在不用的内存地址中 |
|
|
由此可见,对象会先调用valueOf试图转换成基本类型值, 如转换不成会再尝试调用toString方法。
|
|
|
|
| keybinding | operate |
| command+Q | 退出当前应用 |
| command+M | 最小化当前应用 |
| command+T | 切换当前窗口打开的应用 |
| command+H | 快速隐藏当前应用 |
| command+Shift+Delete | 清除废纸篓 |
| Control + A | 移动到行首 |
| Control + E | 移动到行尾 |
| Control + B | 向前移动一个字符 |
| Control + F | 向后移动一个字符 |
which tern //查看安装路径
top //显示所有进程
kill -9 pid //结束pid进程
|
|
|
|
echo ‘eval “$(perl -I$HOME/lib/lib/perl5 -Mlocal::lib=$HOME/lib)”‘ >>~/.bashrc
echo ‘eval “$(perl -I$HOME/lib/lib/perl5 -Mlocal::lib=$HOME/lib)”‘ >>~/.zshrc
| keybinding | operate |
| command + Shift + T | 重新打开之前关闭的标签页 |
| command+ Option+I | devtools |
| command + , | chrome 设置 |
| command + L | 快速选中地址栏 |
下载workflow工作流,双击安装工作流,自动添加的alfred
生成一个token
gh-auth
|
|
ifconfig
|
|
查看perl的版本号
|
|
运行文件
|
|
常用命令
|
|
mac os下安装local::lib模块
|
|
使用模块
|
|