平常写代码中遇到的小问题,在此记录之。
1 数组的浅拷贝问题:
js中两个对象(如数组、object)之间如果只是简单的赋值,那就会造成浅拷贝的问题,改动其中一个,会造成改变其他的变量,数组的解决办法有两个:1
21:var array2=array1.slice(0); //因为数组的操作都是返回一个新数组,而不是对原数组进行操作
2 var array2=array2.concat();
对象的深拷贝,目前为止我所看到的解决办法都是用递归实现属性遍历,把属性都赋给新对象。以下代码来自参考博文1
2
3
4
5
6
7Object.prototype.clone = function(){
var o = this.constructor === Array ? [] : {};
for(var e in this){
o[e] = typeof this[e] === "object" ? this[e].clone() : this[e];
}
return o;
}
2 性能优化tips
1.使用一次innerHTML赋值代替构建dom元素,对于大的DOM更改,使用innerHTML要比使用 标准的DOM方法 创建同样的DOM结构快得多。
2.循环次数确定的时候可以展开循环,不使用循环,如果要使用循环,就使用简直迭代效率会更高一些
3 sublime插件
- Markdown preview(渲染markdown成html)
- Emmet(写html)
- SideBarEnhancements(增强右键)
- TortoiseSvn(SVN插件)
- ColorPicker(调起颜色盒)
- HiveOpener在sb中打开文件、文件夹 等
- SublimeLinter 用来检查语法错误的插件,对于写代码来说非常重要,可以避 免很多低级错误 。
- SublimeLinter-jshint 对应的js语法检查(必须有node环境 npm install jshint -g 然后再在sublime下装sublimelinter 再装sublimelinter-jshint)
- less 高亮less语法,less2css 编写less,保存时自动编译为css
- DocBlockr 注释生成器
- 宝玉专栏
- sublime在mac下的指南
4 wamp配置
- 首先修改端口 因为默认的是80端口,一般都被占用了,然后是修改phpmyadmin之类的默认路径
- 错误日志配置 apache的http.conf 每天生成一个日志
ErrorLog “|bin/rotatelogs.exe -l c:/wamp/logs/apache_error-%Y-%m-%d.log 86400”
CustomLog “|bin/rotatelogs.exe -l c:/wamp/logs/access-%Y-%m-%d.log 86400” common - wampserver 2.5 添加alias后无法访问的问题:在相应的alias文件添加Require all granted,其中granted是已授权的意思。这条命令是apache2.4新增加的,用以替代allow,deny以及order指令。
5 红杏插件
- scp的时候不用输入密码:(没有.ssh目录的时候,先新建这个目录)
- linux-如何建立scp安全的信任关系
6 svg
- g元素不支持定位 需要定位是要使用transform=”translate(x,y)”
- rect元素不支持嵌套 可以用g元素来包裹、组织元素
7 this陷阱
8 屏幕尺寸
webview下
小米3 360572
红米note 360567
iphone4s 320416
iphone5 320504
iphone6 375603
iphone6p 414672
mx4 384519
oppo 320459
9 移动端开发meta标签
1 | <meta charset="utf-8"/> |
10 TCP/IP协议
在 TCP/IP 中包含一系列用于处理数据通信的协议:
TCP (传输控制协议) - 应用程序之间通信
UDP (用户数据包协议) - 应用程序之间的简单通信
IP (网际协议) - 计算机之间的通信
ICMP (因特网消息控制协议) - 针对错误和状态
DHCP (动态主机配置协议) - 针对动态寻址
TCP/IP由四个层次组成:网络接口层、网络层、传输层、应用层。
1)网络接口层:
数据链路层是负责接收IP数据包并通过网络发送,或者从网络上接收物理帧,抽出IP数据包,交给IP层。
ARP是正向地址解析协议,通过已知的IP,寻找对应主机的MAC地址。
RARP是反向地址解析协议,通过MAC地址确定IP地址。比如无盘工作站还有DHCP服务。
2)网络层
负责相邻计算机之间的通信。
网络层包括:IP(Internet Protocol)协议、ICMP(Internet Control Message Protocol)
控制报文协议、ARP(Address Resolution Protocol)地址转换协议、RARP(Reverse ARP)反向地址转换协议。Ping命令就是发送ICMP的echo包,通过回送的echo relay进行网络测试。
3)传输层
提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送,即耳熟能详的“三次握手”过程,从而提供可靠的数据传输。
传输层协议主要是:传输控制协议TCP(Transmission Control Protocol)和用户数据报协议UDP(User Datagram protocol)。
4)应用层
向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。
应用层协议主要包括如下几个:FTP、TELNET、DNS、SMTP、NFS、HTTP。
11 HTTP请求头
http请求由三部分组成,分别是:请求行、消息报头、请求正文
请求头信息对照表;1
2
3
4
5
6
7
8
9
10
11GET / HTTP/1.1
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8,en;q=0.6
Cache-Control:max-age=0 //"no-cache" "no-store"
Connection:keep-alive
Cookie:cna=Kzl1Dm22JU0CASp4SmGBdvPA
Host:s24.cnzz.com
If-Modified-Since:Tue, 08 Sep 2015 08:37:47 GMT
Referer:http://botao900422.blog.51cto.com/4747129/1557599
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36
12 +号运算符
1 | console.log(+"2"); //结果是2 |
###14 childNodes1
2
3
4
5
6
7<div id="box">
<div></div>
<div></div>
<div></div>
</div>
var a=document.getElementById("box");
console.log(a.childNodes.length) //7 IE9+ chrome firefox 因为换行符也会算做文本节点 IE8-为3
nodeType=1为元素节点 nodeType=2为属性节点 nodeType=3为文本节点,IE9+ firefox chrome 会把换行符(空白符)也当作文本节点,文本节点的nodeName为”#text”
15常见css缩写语法
- 盒尺寸,比如margin:top right bottom left。如果某个值缺省,原则是left=right,bottom=top,right=top。
- border:width style color
- background:color image repeat attachment position
- font:style variant weight size height family
16 shadowsocks 配置
- 在代理服务器上安装服务端
- 安装pip(如果没有,有的话就不需要安装了) apt-get install python-pip
- 安装shadowsocks pip install shadowsocks
- 运行 ssserver -p 8090 -k password -m rc4-md5 -d start
- 安装客户端 百度网盘
17 vscode配置
- 字体 Monaco 18号
- “editor.wrappingColumn”: 110
- 扩展
- Debugger for Chrome
- Eslint
- JavaScript (ES6) code snippets
- Document This (自动jsdoc)
- Visual Studio Code Settings Sync (同步设置)