Fork me on GitHub

超有用的基础知识总结

String uuid=new RandomUUID().toString().trim().replace("-","")
String exd=filePath.subString(filePath.lastIndexOf(".")+1,filePath.length)
@Value("${upload.filename}")
as weight/weight
mysql:limit number、concat(,,,,)、current_timestamp、date_format(a,'%Y-%m-%d')
oracle:rownum<=10、concat(concat(1,1),1)、||可以连接多个字符、查询出大写、sysdate、nvl(a,0)
sqlserver:select top
to_char(a,'yyyy-MM-dd HH:mm:ss')
to_date(a,'yyyy-mm-dd hh24:mi:ss')
case when a=a then 0 else 1 ifnull(,)
toUpperCase()/toLowerCase()
keywords descripation
var expression=encodeURIComponent(a+b)
布尔类型中的假值
const data={}//对象
const {user,name}=data //取对象的属性
onClick={show}/ onClick={()=>show(id)}
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<meta name="format-detection" content="telephone=no" />
<meta name="format-detection" content="email=no" />
1.闭包的理解
使用闭包主要是为了设计私有的变量和方法。闭包的优点可以避免全局变量的污染,缺点是会常驻内存,增大内存的使用
量,使用不当会造成内存泄漏。
3大特性:1.函数嵌套函数 2.函数内部可以引用外部的参数和变量 3.参数和变量不会被垃圾回收机制回收。
2.xml和json的区别
xml:可扩展标记语言,json:数据交换格式。json的数据体积小传递速度快,json更容易解析,交互更加方便,但描述性较差。
3.如何对网站的文件和资源进行优化?
1.文件合并 2.文件的最小化或者压缩 3.使用cdn内容分发网络进行托管 4.使用缓存(多个域名提供缓存)
4.减少页面加载时间的方法
1.优化图片以及格式 2.优化合并css 3.网址后加斜杠 4.标明高度和宽度 5.尽可能减少http请求
5.如何解决跨域问题(域名、协议、端口不同,后两种只能在服务端解决)
jsonp(动态加载script标签)、document.domain+iframe、window.name、window.postMessage、服务器上设置代理页面
6.document.write和innerHTML的区别
document.write:重新绘制整个页面 innerHTML:可以重绘页面的一部分
7.哪些操作会造成内存泄漏
内存泄漏是指任何对象在不再拥有或需要时仍然存在
serTimeOut的第一个参数为字符串而非函数时,会造成内存泄漏。
闭包、控制台日志、循环(在两个对象彼此应用又一次保留,产生循环)
8.页面从输入url到页面加载完成发生了什么
1.浏览器发送url请求,不管url是页面的url还是页面资源的url,浏览器都会开启一个线程来处理请求,同时在远程DNS服务器启动g一个
DNS查询,使浏览器获得请求对应的ip地址。
2.浏览器与远程web服务器之间通过TCP三次握手建立TCP/ip连接,该握手包括一个同步报文,同步-应答报文,应答报文。三个报文
在浏览器和服务器之间传递。客户端尝试建立通信,服务器应答并接受请求,最后客户端发送该请求已经接收的报文。
3.TCP/ip连接建立,浏览器向服务器发送http的get请求,远程服务器找到资源并使用http响应返回该资源,值为200的http响应状态
4.web服务器提供资源服务,客户端开始下载资源。
9.js的同源策略
同源策略是客户端脚本的重要安全标准,为了防止某个文档或脚本从多个不同源装载。指协议/域名/端口相同,是一种安全协议
指一段脚本只能从读取同一来源的窗口和文档属性。
10.eval
eval能将该对应的字符串解析成js代码并运行,可以用于解析json但效率低。应该避免使用,不安全、耗性能。一次解析成js,一次运行。
11.ie各版本和chrome可以并行下载多少个资源
ie6 2个 ie7和firefox/chrome也都是6个
12.sql注入原理
通过把sql命令插入到web表单提交或者域名请求、页面请求的查询字符串中,最终欺骗服务器执行恶意的sql命令。

1.永远不要信任用户的输入,要对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和双"-"进行转换等。
2.永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。
3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4.不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息。

13.优雅降级和渐进增强
优雅降级:针对不同版本的I实现hack,为那些无法支持功能的浏览器提供候选方法,以降低体验的方法来实现正常访问。
渐进增强:在支持基本功能的前提下,逐渐增加新式浏览器才支持的功能。
14.浏览器多个标签页如何通信
localstorage/cookies等本地存储方式
15.css种link和@import的区别
1.link是html标签,@import是css提供的
2.页面加载时,link同时被加载,而@import引用的css会等到页面加载完后才会加载
3.@import在ie5以上才会被识别
4.line样式的权重高于@import的样式。
16.http1.1和http2的区别
1.http2.0采用了二进制格式而非文本格式
2.http2,0是完全的多路复用,非有序的并阻塞的只需要一个连接即可实现并行
3.使用报头压缩,降低了带宽开销
4.http2.0让服务器可以将响应主动推送到缓存当中。

17.移动端性能优化
避免使用css3动画,开启硬件加速。适当使用touch事件代替click事件,避免使用css3渐变阴影效果。是页面的性能杀手.
18.Etag
浏览器下载组件的时候会将它们下载到缓存中。如果需要获取相同的组件,浏览器会检查组件的缓存时间,如果已经过期则重新请
求,服务器判断缓存有效的话会返回304响应,重用组件。判断方法:1.etag 2.last-modified
19.栈和队列的区别
栈的插入删除操作都是在一段进行的,而队列是在两端进行的。队列先进先出,栈先进后出。栈只允许在表尾一段进行
插入和删除,而队列只允许在表尾删除,在表头插入。
20.TCP传输的三次握手策略
为了准确无误地把数据送达目标处,TCP协议采用了三次握手策略。用TCP协议把数据包送出去后,TCP不会对传送 后的情况置之不理,它一定会向对方确认是否成功送达。握手过程中使用了TCP的标志:SYN和ACK。
发送端首先发送一个带SYN标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束
若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。

1、创建数组
var array = new Array();
var array = new Array(size);//指定数组的长度
var array = new Array(item1,item2……itemN);//创建数组并赋值

2、取值、赋值
var item = array[index];//获取指定元素的值
array[index] = value;//为指定元素赋值

3、添加新元素
array.push(item1,item2……itemN);//将一个或多个元素加入数组,返回新数组的长度
array.unshift(item1,item2……itemN);//将一个或多个元素加入到数组的开始位置,原有元素位置自动后移,返回  新数组的长度
array.splice(start,delCount,item1,item2……itemN);//从start的位置开始向后删除delCount个元素,然后从start的位置开始插入一个或多个新元素

4、删除元素
array.pop();//删除最后一个元素,并返回该元素
array.shift();//删除第一个元素,数组元素位置自动前移,返回被删除的元素
array.splice(start,delCount);//从start的位置开始向后删除delCount个元素

5、数组的合并、截取
array.slice(start,end);//以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素
array.concat(array1,array2);//将多个数组拼接成一个数组

6、数组的排序
array.reverse();//数组反转
array.sort();//数组排序,返回数组地址

7、数组转字符串
array.join(separator);//将数组原因用separator连接起来

列了这么都就是没有发现删除数组元素的方法!于是查了一些资料找到了解决方法。
删除数组元素需要扩展Array原型prototype.

Array.prototype.del=function(index){
        if(isNaN(index)||index>=this.length){
            return false;
        }
        for(var i=0,n=0;i
            if(this[i]!=this[index]){
                this[n++]=this[i];
            }
        }
        this.length-=1;
    };

posted @ 2017-04-06 15:40  cosyer  阅读(164)  评论(0编辑  收藏  举报