博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
概念整理
阅读量:7191 次
发布时间:2019-06-29

本文共 5891 字,大约阅读时间需要 19 分钟。

  1. 1:编程中的“同步、异步”的理解

    同步:是指各语句执行结束的顺序与语句执行开始的顺序相同,做完一件事情才能做另一件事情

    异步:是指各语句执行结束的顺序与语句执行开始的顺序并不一定相同,做一件事情,不影响做其它事情

    2:event loop

    上图中,主线程运行的时候,产生堆(heap)和栈(stack),栈中的代码调用各种外部API,它们在"任务队列"中加入各种事件(click,load,done)。只要栈中的代码执行完毕,主线程就会去读取"任务队列",依次执行那些事件所对应的回调函数。执行栈中的代码(同步任务),总是在读取"任务队列"(异步任务)之前执行。

    1 (function() { 2     console.log('this is the start'); 3     (function(){ 4         console.log('222'); 5     })(); 6     setTimeout(function cb() { 7 console.log('this is a msg from call back'); 8 },1000); 9 10 console.log('this is just a message'); 11 12 setTimeout(function cb1() { 13 console.log('this is a msg from call back1'); 14 }, 0); 15 console.log('this is the end'); 16 })(); 17 // "this is the start" 18 // ”222“ 19 // "this is just a message" 20 // "this is the end" 21 // "this is a msg from call back1" 22 // "this is a msg from call back"

    上面代码中的setTimeout方法是一个异步任务,意味着只有当前脚本的所有代码执行完,系统才会去读取"任务队列"。

    3:网站打不开的原因及解决方法:

    一、服务器/空间不稳定

    和你选择的服务器或空间有关,打个比方,网站好比一个球,放在了一个摇摇晃晃的托盘上,用户想看看这个球可是抓不住又看不清。这时如果把球放在一个稳固的托盘上,把球稳稳拖住,流失的用户自然大大减少。

     解决方案:

    找个稳定的服务器很重要,至于靠谱的云主机怎么选,无外乎几点:

    1、品牌(见仁见智,只是参考因素,不是选择标准),如果你真的没有这方面的经验,可以选择品牌有保证的

    2、性价比,这个是最重要的,因为贵的不一定是好的,便宜的也不一定差。综合来说还是要看值不值

    以上两点是选择的门槛,选择后可以还需要判断这家的产品稳定性、访问速度等方面的性能如何,需要结合实际情况作判定

    推荐商家:

    阿里云:品牌大,技术值得认可,但用户量很多,服务跟不上,同时价格有些贵

    推荐指数:★★★★☆

    小鸟云:新品牌,同样值得信赖,国内来说性价比很高

    推荐指数:★★★★☆

    华为云:主流服务商,“上不碰应用,下不碰数据”,客户服务也很好

    推荐指数:★★★★☆

  2. 二、访问IP受限

    IP被拒绝访问,或者用户与网站之间的通信异常

    (注:这种情况只是其中一种,正常需要先判断网站是不是被攻击了,高峰期还是带宽不足等等情况导致的)

    解决方案:

    1、IP被限制了:换个ip访问;或者使用代理服务器伪装访问

    2、通信异常:重启电脑,或者路由设备

  3. 三、本地DNS缓存

    还有一种情况是由于域名重新解析后,本机访问域名还是指向原来的IP,这主要是因为本地DNS缓存导致的

    解决方案:

    更新DNS!可以选择电脑自动更新,需要时间,如果是有需求的可以手动清空缓存

    具体步骤:

    1、开始-运行-cmd

    2、运行:ipconfig /displaydns,查看下本机已缓存的dns信息

    3、运行:ipconfig /flushdns,清空DNS缓存

    4:主流浏览器内核及CSS3中一些私有属性的css前缀

    现代浏览器的内核,主流内容主要有(Firefox浏览器)、(熟悉的有Safari、Chrome等浏览器)、(Opera浏览器)、Trident(IE浏览器)。

    根据不同的内核,一些私有属性的css前缀不一样 

    WebKit内核   css前缀 -webkit-  

    Mozilla内核   css前缀 -moz-

    Trident内核   css前缀 -ms- 

    Opera 内核   css前缀 -o- 

    5:定义函数方法

    1:函数声明

    1 function functionName(arg0, arg1, arg2) { 2     //   函数体3 }

    函数声明的一个重要作用就是函数声明提升,意思是在执行代码之前会想读取函数声明。这意味着可以把函数声明放在调用它的语句后面。

    1 sayHi();2 function sayHi(){3     alert("Hi!");4 }

    这例子不会报错,因为在代码执行之前会先读取函数声明。

    2:函数表达式(第二种创建函数的方式),最常见的一种形式如下

    var functionName = function(arg0, arg1, arg2){     //函数体   };

    函数表达式与其他表达式一样,在使用前必须先赋值,否则报错:

    1 sayHi(); //错误,函数还不存在2 var sayHi = function(){3      alert("Hi!");4 };

    note:如下情况时要选用第二种。

    1 //不要这样做2 if(condition){3     function sayHi(){4         alert("Hi!");5     }6 } else {7     function sayHi(){8         alert("Yo!");9     }   }
    1 //可以这样做       2 var sayHi; 3     if(condition){ 4         sayHi = function(){ 5             alert("Hi!"); 6         }; 7     } else { 8         sayHi = function(){ 9             alert("Yo!");10     };11 }

    6:深拷贝与浅复制

    1 //浅复制2 function extendCopy(p){3     var c = {};4     for(var i in p){5         c[i] = p[i]; 6     }7     c.uber = p ;8     return c ;9 }
    1 //深拷贝 2 function deepCopy(p,c){ 3     var c = c || {}; 4     for(var i in p){ 5         if(typeof p[i] === 'object'){ 6             c[i] = (p[i].constructor === Array)? []:{}; 7             deepCopy(p[i],c[i]); 8         }else{ 9             c[i]=p[i];10         }11     }12     return c;13 }

     7立即执行函数

    1 (function(a){ 2     console.log(a);   //firebug输出123,使用()运算符 3 })(123); 4  5 (function(a){ 6     console.log(a);   //firebug输出1234,使用()运算符 7 }(1234)); 8  9 function sayhi(m){console.log(m)}("hi");      //不会执行10 !function sayhi(m){console.log(m)}("hi");    //立即执行,输出hi11 +function sayhi(m){console.log(m)}("hi");    //立即执行,输出hi12 ~function sayhi(m){console.log(m)}("hi");    //立即执行,输出hi13 var s=function sayhi(m){console.log(m)}('hi');//立即执行,输出hi

    前面两种( function(){…} )()和( function (){…} () )是立即执行函数的常用写法;第九行是个匿名函数,并不会立即执行,因为js将其当成是函数定义;其后三个前面分别加了一些符号,js就会将其解析成表达式,就会立即执行。第四个是真正意义上的函数表达式,所以,会立即执行,输出结果。

     8获取UA

    1 function whatBrowser(){2     document.Browser.Name.value=navigator.appName;3     document.Browser.Version.value=navigator.appVersion;4     document.Browser.Code.value=navigator.appCodeName;5     document.Browser.Agent.value=navigator.userAgent;6 }

    9样式优先级

    !important > 行内style > id > class > tag   (在同级样式按照申明的顺序后出现的具有更高的优先级)

     10:Promise的实现

    1 function getNumber(){ 2     var p = new Promise(function(resolve,reject){ 3         //做一些异步操作 4         setTimeout(function(){ 5             var num = Math.ceil(Math.random()*10);//生成一个1-10的随机数 6             if(num<=5){ 7                 resolve(num); 8             }else{ 9                 reject("数字太大了");10             }11         },2000);12     });13     return p;14 }15 getNumber()16 .then(function(data){17     console.log("resolved");18     console.log(data);19     console.log(somedata);//此处的somedata未定义20 })21 .catch(function(reason){22     console.log("rejected");23     console.log(reason);24 })

    11:dom事件

    HTML事件:

    <input type="button" value="Click Me" οnclick="alert(&quot;Clicked&quot;)" />

    在HTML中定义事件的处理程序可以包含要执行的具体操作,也可以调用在页面其他地方的脚本,如下

        <script type="text/javascript">

            function showMessage(){

                alert("Hello world!");

            }

        </script>

        <input type="button" value="Click Me" οnclick="showMessage()" />

     

    DOM0级事件处理方式:

    <p id="ppp">我们都是好孩子</p>

    document.getElementById("ppp").οnclick=function(){

    alert(1);
    }
    document.getElementById("ppp").οnclick=function(){
    alert(2);
    }

    最后只弹出2,后1个把前面覆盖

     

    DOM2级事件处理方式(可添加多个事件处理,而且可以是同一事件类型,不同效果叠加,先后执行):

    document.getElementById("ppp").addEventListener("click",function(){

    alert(1);
    })

    document.getElementById("ppp").addEventListener("click",function(){

    alert(2);
    })

    不仅不会覆盖,点击后先后弹出1和2 

    12:HTTP请求方法

    根据HTTP标准,HTTP请求可以使用多种请求方法。

    HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

    HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

    序号 方法 描述
    1 GET 请求指定的页面信息,并返回实体主体。
    2 HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
    3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
    4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
    5 DELETE 请求服务器删除指定的页面。
    6 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
    7 OPTIONS  允许客户端查看服务器的性能。
    8 TRACE 回显服务器收到的请求,主要用于测试或诊断。

转载于:https://www.cnblogs.com/Hale-Proh/p/6698845.html

你可能感兴趣的文章
X5内核浏览器video自动全屏解决办法-canvas
查看>>
网络管理中的常见软件和管理维护
查看>>
myeclipse2014如何添加源码反编译工具插件
查看>>
ASP.NET网站入侵第二波(LeaRun.信息化快速开发框架 已被笔者拿下)
查看>>
Ehome项目服务器端由Eclipse切换到IDEA
查看>>
Making the Grade (bzoj1592)
查看>>
Redis.py客户端的命令总结【一】
查看>>
AlertDialog错误
查看>>
Tiling 简单递推+大数
查看>>
iOS开发UI篇—Quartz2D使用(绘制基本图形)
查看>>
java web servlet
查看>>
几个博客
查看>>
v4l2
查看>>
JS倒计时
查看>>
(new Function("return " + json))();
查看>>
mscrm 4.0 报表服务器报错
查看>>
SVM原理简介
查看>>
TLV----Demo讲解
查看>>
iphone-common-codes-ccteam源代码 CCUILocalNotification.m
查看>>
指针数组和数组指针差异
查看>>