zoukankan      html  css  js  c++  java
  • 超有用的基础知识总结

    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;
        };

  • 相关阅读:
    【线程间通信:代码示例:分析问题原因:修正代码】
    【死锁问题】
    【解决线程安全问题:通过Lock锁对象】
    【解决线程安全问题:同步方法】
    【解决线程安全问题:同步代码块】
    【线程实现的两种方式及区别】
    小阳的贝壳
    小石的妹子
    SPFA模板+dfs版检测负环
    逆序对模板
  • 原文地址:https://www.cnblogs.com/cosyer/p/6673765.html
Copyright © 2011-2022 走看看