主頁 > 企業開發 > JavaScript基礎

JavaScript基礎

2020-09-17 12:53:42 企業開發

JavaScript Base

一 概述

1 什么是JavaScript

簡稱JS,是一種運行于JS解釋器或執行引擎中的腳本代碼,是一種瀏覽器解釋型的語言,主要用來實作頁面的互動與動態效果,

2 JS的組成

  • 核心語法 -ECMAScript 規范了JS的基本語法

  • 瀏覽器物件模型 -BOM Browser Object Model,提供了一系列操作瀏覽器的方法

  • 檔案物件模型 -DOM Document Object Model ,提供了一系列操作的檔案的方法

二 JS使用方式

1 系結在元素標簽中,主要指JS事件

事件 :用戶在元素上所激發的行為操作(單擊) 語法 :

<div onclick="alter('hello javascript!')">click me</div>

? JS 操作如果涉及代碼非常多,一般會抽離出來單獨寫在JS檔案中,如果是簡單的代碼,可以以屬性值字串的形式書寫

2 檔案中,使用標簽

語法 :

<script>
		JS代碼
</script>

注意 :標簽可以書寫在檔案的任意位置,書寫多次,但是不同的位置會影響代碼最終的執行效果,

3 外部鏈接

語法 :

<script src=https://www.cnblogs.com/monkey-code/p/"'https://cdn.bootcss.com/jquery/3.2.1/core.js'"></script>

? src 引入的外部資源是網頁加載所必須的一部分,網頁在加載src檔案時,會等待檔案加載完畢再執行后面的代碼 ? href 網頁在加載href檔案時,不會等待加載完畢,邊加載邊向后執行 常用操作 :

三 基礎語法

1 JS 是由陳述句組成的

  • JS陳述句可以由運算子,關鍵字,運算式組成

  • JS陳述句必須以英文分號結束;

  • JS中嚴格區分大小寫 console.log(); 正確寫法 Console.log(); 錯誤寫法

  • 所有涉及的標點符號,必須使用英文的

2 JS中的注釋

  • 單行注釋 //

  • 多行注釋 /* 注釋文本 */

四 JS的變數與常量

1 變數

  1. 創建變數

    1. 先宣告,后賦值,使用關鍵字 var 進行宣告 宣告 :var 變數名; 賦值 :變數名 = 值;

    2. 宣告的同時賦值 var 變數名 = 值;

      var name = "monkey";
      console.log(name);
      document.write(name);
      alter(name);
      
  2. 使用注意

    1. 宣告變數時,關鍵字var可以省略,不建議省略,容易出問題
    2. 變數如果只宣告,未賦值,var a; 變數默認值為 undefined
  3. 變數名的命名規范

    1. 不能與JS中的關鍵字和保留字沖突(var default break class function for while do...name)

    2. 自定義的變數名可以由數字,字母,下劃線,$組成,不能使用數字開頭

      var $ = 20;
      
    3. 變數名稱嚴格區分大小寫

      var name = 'monkey';
      var Name = 'Monkey';
      
    4. 命名盡量有意義一些,做到見名知意

    5. 多個單詞組成變數名,采用小駝峰標識

      var userName = 'monkey';
      
  4. 變數的使用方式

    1. 賦值 賦值符號 = 作用 :將賦值符號右邊的值賦給左邊的變數

      var name = 'monkey'
      
    2. 訪問

      1. 直接輸出

        console.log(name);
        
      2. 變數出現在賦值符號右邊,表示訪問變數的值

        var name = 'monkey';
        var myStr = 'My name is '+name;   //myStr: My name is monkey
        

2 常量

  1. 一經宣告就不允許再被修改的資料就是常量

  2. 語法 :

    const 常量名 = 值;
    

    注意 :

    1. 常量在宣告的同時必須賦值

    2. 為了與變數名區分,常量名一般采用全大寫的方式

      const PI = 3.14159;
      
  3. 操作小數位 保留小數點后 n 位

    toFixed(n);
    var num = 3.1415926;
    var res = num.toFixed(2);    // 3.14
    

五 資料型別

1 基本資料型別(簡單資料型別)

(1) number 型別

數字型別,表示32位的整數或者是64位的浮點數 1 位元組 = 8 位 整數占4位元組 浮點數占8位元組

  1. 整數 常用的:十進制表示方法 八進制:以數字0開頭 以8為基數,采用0-7八個數字來表示,逢8進1

    //0*8(0) + 1*8(1)
    var num = 010;
    var num2 = 011;
    
  2. 十進制轉八進制,需要先將十進制轉換為二進制,再將二進制轉換為八進制 十六進制:以 0x 為前綴

var num3 = 0x35;

注意 : 使用console.log()輸出整數時,不管用哪一種進制表示,都會轉成十進制輸出

  1. 小數

  2. 小數點計數法 3.14

  3. 指數計數法 1.5e3

    e表示以10為底 e后面的數字表示10的次方數 1.5e3 = 1.5 * 10(3)

(2) string 型別

可以由 Unicode 的字符,數字或標點來組成

注意 :字串在使用時必須使用''或""引起來

  1. 每個字符都有對應的Unicode碼

  2. 查看字符的Unicode碼 var s1 = '張'; 方法 :charCodeAt(index) 作用 : 用來查看指定位置的字符對應的Unicode編碼 注意 :

  3. 字串中的字符都對應有一個下標,參考陣列的存盤方式,下標從0開始

    var s = "hello";
    s.charCodeAt(2);
    
  4. Unicode 編碼中前128位與ASCII碼值一致

  5. 可以查看中文字符對應的Unicode碼,如果想把中文的Unicode碼值轉換成字符,需要先將碼值轉換為16進制,再進行漢字字符的轉換 轉換16進制: toString(16);

    var s = "張";
    var r = s.charCodeAt(0);
    r = r.toString(16);
    

    16進制字串轉換漢字字符

    "5f20"
    添加\u轉義
    var s = "\u5f20";
    注意 :
    不能寫 var s = "\u"+"5f20";
    語法錯誤
    
    1. 中文范圍 "\u4e00" ~ "\u9fa5"
    2. 轉義字符 \n :換行 \t : 制表符 " : " ' : ' \ : \

(3) boolean 布爾型別

用來表示真或假 注意 : 布爾型別表示真或假,是可以參與數學運算的,true = 1 / false = 0

(4) undefined 型別

  1. 變數宣告未賦值時,為undefined
  2. 如果訪問物件不存在的屬性時,也為undefined

(5) null 型別

空型別

2 判斷資料型別

typeof 使用 :

var n = "asda";
console.log(typeof n);
console.log(typeof(n));

3 參考資料型別(復雜資料型別)

陣列 函式 物件

六 資料型別轉換

相同資料型別的變數進行運算時,保持資料型別一致

1 隱式型別轉換(自動轉換)

  1. number + string 當字串與其他資料型別相加時, + 表示字串的拼接,不再是數學運算 轉換規則 :將非字串型別的資料轉換成字串之后進行拼接,最終結果為字串

    var num = 15;
    var str = "18";
    var r1 = num + str; // "1518"
    var r2 = 15 + 18 + "18"; // "3318"
    var r3 = "18" + 15 + 18; //"181518"
    var r4 = 15 + "18" + 15; //"151815"
    
  2. boolean + string 將布爾型別轉換為字串進行拼接

    var n = true;
    var r = n + "你好"; // "true你好"
    
  3. number + Boolean 將布爾型別轉換為數字進行數學運算 true = 1; false = 0;

     var n = true + 15; // 16
     var n1 = false + 20; //20
    

2 強制型別轉換

  1. toString() 將任意非字串型別的資料轉換為字串型別,并回傳轉換后的結果

    var n = 100;
    var r = n.toString();
    console.log(typeof n,typeof r);
    
  2. Number() 將數字字串或者是布林值轉換成number型別,如果字串中包含非數字字符,轉換失敗,會回傳NaN (Not a Number)

    var r = Number("35.5"); //35.5
    var r2 = Number(true); // 1
    var r3 = Number("18a"); //NaN
    
  3. parseInt() 決議字串中的數字,只決議字串開頭中的數字,如果字串不是以數字開頭的,都回傳NaN,并且只決議整數

var r = parseInt("18.2a"); //18
var r2 = parseInt("a18");  //NaN
var r3 = parseInt(35.5);   //35

? 如果parseInt方法的引數不是字串,會自動先使用toString()轉換成字串,之后再進行決議

  1. parseFloat() 作用等同于parseInt(),決議結果包含小數部分
var r = parseFloat("35.5"); //35.5

注意 :如果字串中出現指數計數法表示的小數 "1.5e3",都視為是小數

七運算子

1 賦值運算子

? = ? 將右邊的值賦給左邊變數

2 算數運算子

  1. 
    
      • / % //加 減 乘 除 取余
2. ++ --  自增或自減運算子
變數的自增和自減指的是在自身基礎上進行 +1或-1 的操作

```js
var n = 5;
n ++; // n = n + 1;
console.log(n); // 6
++ n;
console.log(n); // 7

注意:

1. 自增或自減運算子在單獨與變數結合時,放前和放后沒有區別

2. 如果自增或自減運算子與其他運算子結合使用,要區分前綴和后綴,做前綴,那就先++/--,再進行賦值或其他運算,如果做后綴,就先結合其他運算子,再進行++ / --

```js
var num = 5;
var res = num ++;
console.log(num,res); // 6 5
```

?	如果是 var res = num ++;

```js
var num = 5;
var res = ++ num;
console.log(num,res); // 6 
```

*先找變數 ,從變數位置從右向左結合運算子*

3 關系運算子(比較運算子)

		>    大于
		>=	 大于等于
		<	 小于
		<=	 小于等于
		==	 相等
		!=	 不等
		===	 恒等
		!==  不恒等
		注意 :關系運算的結果為布爾型別
  1. 數字與字串進行比較

    首先會自動將字串轉換為數字再進行比較,如果轉換成功,按照數字之間的比較進行運算;如果轉換失敗,會變成數字與 NaN之間的比較,結果永遠都為False

    "10" > 5; // true
    "10a" > 5; //false
    "你好" > 5; //fasle
    
  2. 字串之間的比較,進行每位字符Unicode碼的比較, 當前位如果相同,就后移至下一位再次進行比較, 當前位如果不同,直接出結果

    "10" > "5"; // false
    "ab" > "ac"; //false
    "張三豐" > "張無忌"; //false
    
  3. == === / != !==

  4. 相等 :== 用于判斷兩個值是否相等,在比較時,會自動轉換資料型別,只要值相等,結果就為True

    1. 恒等 :=== 用于判斷兩個變數的資料型別和值是否完全相等,不會進行資料型別轉換,只有當運算元的資料型別保持一致,值相等,才為True

      "10" == 10; //true
      "10" === 10; // false
      
    2. 不等 :!= 在兩端值不相等的情況下,回傳True 不恒等 :!== 兩個運算元中,資料型別與值只要有一個不相等,就回傳True,否則是False

    "10" != 10; //false
    "10" != "10"; //false
    "10" !== 10; //true
    "10" !== "10"; //false
    

4 邏輯運算子

進行多項比較,并將結果組合為單一的布林值 && :邏輯與 等同于 python and,左右為運算式,只有兩個運算式的結果都為真,邏輯與的結果才為真 || :邏輯或 等同于 python or ,只要有一個條件為真,結果就為真 ! :邏輯非 等同于 python not ,對現有條件的結果進行取反操作

  1. 條件1 && 條件2 條件1 條件2 結果

取值 true true true

? true false false

? false true false

結果 false false false

  1. 條件1 || 條件2

    條件1 條件2 結果


取值 true true true

? true false true

? false true true

結果 false false false

  1. !條件 直接取反 非真即假,非假即真

5 位運算子

程式中所有的資料在計算機中都是以二進制存盤的,位運算,就是對二進制位進行操作

  1. 按位與 :& 將整數轉換為二進制形式,每一位都進行與操作

     	011 &  101
     		et :
     			0 1 1
     		& 1 0 1
     		-------------
     			0 0 1
    
  2. 注意 : 任何數字與 1 進行位與操作,結果為1時,表明運算元為奇數,結果為0,運算元為偶數,所以可以用來判斷數字奇偶

3 & 1 -> 011 & 001 -> 001
2 & 1 -> 010 & 001 -> 000
  1. 按位或 :|

     	3 | 5
     		011
    
     	|	101
    

			111
  1. 按位異或 :^ 兩個數字的二進制位進行比較,相同則為0,不同則為1

     	3 | 5
     		011
    
     	|	101
    

			111

注意 :^ 操作可以在不借助第三方變數的情況下,交換兩個變數的值

var a = 3,b = 5;				

  			1. 普通做法
  				var c = a;
  				a = b;
  				b = c;
  			2. ^
  				a = a ^ b; -> a = 6;
  				b = a ^ b; -> 6 ^ 5 ->110 ^ 101 ->011
  				a = a ^ b; -> 6 ^ 3 ->110 ^ 011 ->101

6 三目運算子

三目運算子,有三個運算元 類似: 單目運算子(一元運算子)++ -- !typeof,只有一個運算元的運算子; 雙目運算子(二元運算子)+ - * / % && || >...有兩個運算元的運算子 語法 : 條件運算式 ?運算式1 :運算式2; 先判斷條件運算式的結果,為真,執行運算式1;為假,執行運算式2

	var a = 150;
	var res = a > 120? "偏胖,該減肥了" :"正好,不胖不瘦";
	consoole.log(res);

八 流程控制陳述句

? 控制當前代碼的執行順序 ? 流程陳述句結構 :

1 順序結構

? 按照代碼書寫順序,從上到下執行

2 分支(選擇)結構

? 根據條件選擇某一段代碼執行

(1)if 結構

語法 :

	if (條件){
		//待執行的陳述句
		//只有條件為真,才執行{}里的陳述句
	}
  • if()后面的可以省略,省略之后,只控制該結構下的第一條陳述句

  • 條件盡可能是布爾型別的

  • 任何非0值都為真,0為假,以下情況,條件的結果都為假 if(0) if(0.0) if("") if(NaN) if(undefined) if(null)

(2)多重分支結構

if(條件1){
    //條件為真時執行
    	} else if(條件2){
    		//條件1為假,并且條件2為真時執行
    	} else if(條件3){
    		//條件2為假,條件3為真時執行
    	}
    	...
else{}

(3)switch 陳述句

switch (變數) {
			case 值1 :
				//如果變數的值與case給出的值相等,就會執行 :后面的代碼段
				代碼塊;
				break; //跳出switch陳述句,不再向后進行匹配,可以省略
			case 值2 :
				代碼塊;
				break;
			case 值3 :
				代碼塊;
				break;
			...
			default :
				代碼塊; // 所有case都匹配失敗之后執行的默認陳述句
}
  • 變數與case 值的匹配,是用===恒等判斷的,只有資料型別與值都相等才能匹配成功

    var a = 10;
      	switch (a) {
      		case '10':
      			代碼塊
      	}
    
  • break 表示跳出switch判斷,后面的判斷陳述句不執行

  • default關鍵字用于在運算式不匹配前面給出的任何一種情形時,最終執行的操作

3 回圈結構

  • 作用 重復執行某段代碼

  • 回圈三要素 回圈變數 回圈條件 回圈體

(1)while 回圈

  1. 語法:

    while (回圈條件){
     回圈體
    }
    
  2. 執行流程

    1. 定義回圈變數
    2. 執行回圈體
    3. 更新回圈變數
    4. 判斷回圈條件,條件成立,重復2-3-4,條件不成立,結束回圈

(2)do-while回圈

  1. 語法

    do{
     回圈體
    }while(回圈條件);
    

(3)while 與 do-while區別:

? while回圈先判斷回圈條件,為真才執行回圈體; do-while回圈不管條件是否成立,先執行回圈體,后判斷回圈條件,即使回圈條件不成立,也會執行一遍回圈體

(4)for回圈

  1. 語法
	for(1.定義回圈變數; 2.判斷回圈條件; 3.更新回圈變數)
	{
	  回圈體
	}
  1. 回圈流程

    1. 定義回圈變數
    2. 判斷回圈條件
    3. 條件成立,執行回圈體
    4. 更新回圈變數
  2. for 回圈與 while回圈的區別

    1. 相同點 :執行流程相同
    2. 不同點 : while 回圈常用于不確定回圈次數的場合 for 回圈常用于確定回圈次數的場合
  3. 回圈控制

    1. break break用在回圈體中,表示跳出回圈,結束整個回圈,并且回圈體中break后面的代碼都不執行
    2. continue continue用在回圈體中,表示跳出本次回圈,開始下一次回圈
  4. 回圈的嵌套 允許在一個回圈中嵌套另一個回圈 語法 : for(var i = 1; i ? 9; i ++){ //行

     for(var j = 1; j <= 9; j ++){ //列
    
     }
    

九 函式和作用域

函式定義

? 就是一段待執行的代碼塊

函式作用

? 實作多條陳述句的封裝 ? 實作代碼復用

函式使用

  1. 函式的宣告
  2. 函式的呼叫 注意 :函式先宣告后呼叫(JS中非強制)

函式語法

(1) 函式宣告

  1. 語法
function 函式名 (引數串列) {
	函式體;
	回傳值
}
  1. JS中函式宣告使用function關鍵字

  2. 函式名自定義,遵照變數命名規范,見名知意

  3. 引數串列,引數表示函式體執行所需要的資料,可以為空,為空時()不能省略;多個引數之間使用,隔開

	function sum (a,b){
		return a + b;
	}
  1. 回傳值 使用return關鍵字,將函式體內部執行的結果傳遞給外界使用,只能回傳一個值,回傳值不需要的話,可以省略return
function showFn(){
		console.log("hello");
	}

注意 :return一定要寫在函式體的末尾,return關鍵字后面的代碼都不執行

  1. 匿名函式
var fn = function (){
	函式體
};

(2) 函式呼叫

  1. 語法

    函式名(10,20);
    var res = 函式名(10,20);
    
  2. 函式引數分為形參和實參,函式宣告時,使用形參,函式呼叫時,傳遞實參 形參 :代號 實參 :具體的資料 傳參的程序,就是給函式中形參變數賦值的程序

  3. 函式如果有回傳值,在呼叫時,需要定義變數接識訓傳值

變數的作用域

(1)含義

變數的作用域指的是變數起作用的范圍

(2)分類 :

  1. 全域作用域 處在全域作用域中的變數就是全域變數 2. 在function之外通過var宣告的變數都是全域變數,在任何地方都可以訪問 3. 宣告變數時,省略var關鍵字,一律是全域變數,推薦使用var關鍵字,不要省略

  2. 區域作用域 (JS中區域作用域指的是函式作用域) 區域作用域中的變數就叫區域變數 5. 在函式內部使用var關鍵字宣告的變數都是區域變數,只在當前函式作用域中可以訪問,外界無法訪問 6. 區域變數出了函式就不能訪問了

    注意 : 在函式中訪問變數,

     1. 如果當前函式中沒有該變數,就訪問全域作用域中的變數
     2. 如果當前函式中定義了該變數,全域中也有相同的變數名,函式就近訪問變數
    

十 陣列及API

定義

? Array 陣列是一個有序的元素序列,陣列中的元素會自動分配下標,從0開始,方便讀寫

陣列創建

  1. 創建空陣列

    var arry_name = [];  // 
    var 陣列名 = new Array();  //
    
  2. 創建陣列的同時初始化元素

    var arry_name = [elem1,elem2,...];
    var arry_name = new Array(elem1,elem2,...);   // 只包含一個引數時表述創建的陣列長度
    
    var arr = new Array(5);   // 創建長度為 5 的陣列
    

陣列使用

  1. 獲取陣列的長度 屬性 : length 使用 :陣列名.length; //獲取陣列長度

  2. 訪問陣列元素 陣列中每一個元素都有對應的下標 元素的下標范圍 0 → length-1 語法 :陣列名[下標];

  3. 設定陣列元素 語法 :陣列名[下標] = value;

  4. 清空陣列中元素 arr.length = 0;

  5. 回圈遍歷陣列

    for(var i = 0; i < arr.length; i ++){
     arr[i];
    }
    

陣列的API

  1. toString() 作用 :將陣列中的元素轉換為字串回傳 回傳值 :字串

     var arr = [1,2,3];
     var s = arr.toString();
     console.log(s); //"1,2,3"
    
  2. join() 作用 :將陣列中的元素連接成一個字串并回傳 回傳值 :字串 引數 :可選,如果省略引數,默認元素之間使用,連接, 可以給引數,指定元素之間的連接符

  3. reverse() 作用 :反轉陣列元素 回傳值 :陣列,會改變陣列的原有結構

    var arr = [10,20,30];  //[30,20,10]
    console.log(arr.reverse());
    
  4. sort() 作用 :對陣列中元素進行排序 回傳值 :陣列,會改變陣列原有結構 引數 :可選,自定義排序函式, 默認按照元素的Unicode碼升序排列

    1. 升序的排序函式

      function sortAsc(a,b){
        return a-b;
      }
      arr.sort(sortAsc);
      

      解釋 :

      1. sortAsc函式接收兩個引數, 會自動將陣列中相鄰的兩個元素傳遞給引數
      2. 如果回傳值>0,交換兩個元素的位置,否則不變
    2. 匿名函式作為排序函式,直接寫在()中

        arr.sort(function (a,b){ return b-a;});
      

陣列的進出堆疊操作

堆疊結構 :遵循先進后出原則 堆疊操作可以快速操作陣列中的頭尾元素

1. push(data)
		入堆疊操作,向陣列的尾部添加元素,可以是一個或多個
		回傳值 :回傳新陣列的長度

```js
arr[arr.length] = 'hello';
arr.push("Hi");
arr.push(10,20); //多個資料之間只用,隔開
```
  1. pop() 出堆疊操作,洗掉陣列尾部元素 回傳值 :回傳被洗掉的元素
  2. unshift() 向陣列頭部添加一個或多個元素 回傳最終陣列的長度
  3. shift() 洗掉陣列中頭部元素 回傳被洗掉的元素

二維陣列

陣列中每個元素又是一個陣列

var arr = [[10,9,8],[2,3,4],[3,0,3]];
console.log(arr.length); //3
		//向二維陣列中添加元素
arr[1][2] = 50;
		//訪問二維陣列中元素
console.log(arr[2][0]); //30

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/65762.html

標籤:JavaScript

上一篇:JavaScript工具函式大全【轉】

下一篇:前端開發工程師都能做什么?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more