主頁 > 企業開發 > JavaScript

JavaScript

2022-03-08 07:39:56 企業開發

什么是JavaScript

一、概述

JavaScript是一門世界上最流行的腳本語言

一個合格的后端人員,必須要精通JavaScript

快速入門

一、引入JavaScript

  1. 內部標簽

    <!-- script標簽(可以放到檔案任何位置):里面寫JavaScript代碼 -->
    <script>
        //......
    </script>
    
  2. 外部引入

    <!-- 外部引入 -->
    <!-- 注意:script標簽必須成對出現 -->
    <script src="https://www.cnblogs.com/ylfmax-blog/archive/2022/03/07/js/demo01.js"></script>
    
    <!-- 不用顯示定義type,默認為javascript -->
    <script type="application/javascript"></script>
    

二、基本語法

// 1.定義變數 [變數型別 變數名 = 變數值]
const score = 70;
// 2.條件控制
if (score === 70) {
    alert("良好");
} else {
    alert("其它");
}
//在瀏覽器的控制臺輸出變數 console.log(score)

// 3.回圈
// while回圈 ( while(){} / do{}while() )
// for回圈 ( for i / forEach()(ES5.1) / for of / for in(ES6) )

瀏覽器必備除錯須知:

image-20220223164807011

三、資料型別

數值、字符、布爾、文本、圖形、音頻、視頻等

  1. 數字 (number)
    js不區分小數和整數

    12 //整數
    12.1 //浮點數
    1.12e2 //科學計數法
    -99 //負數
    NaN //非數值
    Infinity //無窮大
    
  2. 字串

    'abc'
    "abc"
    
  3. 布林值

    true
    false
    
  4. 邏輯運算

    &&
    ||
    !
    
  5. 比較運算子(重要)

    =
    ==	//等于(型別不一樣,值一樣,判斷為true)
    ===	//絕對等于(型別一樣,值一樣,判斷為true)
    

    堅持不要使用==比較

    注意:

    • NaN與所有數值都不相等,包括自己
    • 只能通過isNaN(NaN)來判斷,數值是否為NaN

    浮點數問題

    console.log((1/3) === (1 - (2 / 3))); //false
    

    盡量避免使用浮點數進行運算,存在精度問題

    Math.abs((1/3) - (1 - (2 / 3))) < 0.000000001 //解決方法
    
  6. null 和 undefined

    • null 空
    • undefined 未定義
  7. 陣列
    Java的陣列需要相同型別的物件,JS不需要,

    // 保證代碼的可讀性,盡量使用[]
    let array = [1, 2, 3, null, "hello", true];
    
    array = new Array(1, 2, 3, null, "hello", true);
    
    // 越界輸出undefined
    console.log(array[2]);
    
  8. 物件

    let person = {
        name: "ylf",
        age: 18,
        tags: ["java", "python", "c/c++"]
    };
    
    console.log(person.age);
    

四、嚴格檢查模式

// 嚴格檢查模式,預防JavaScript的隨意性導致的問題(必須寫在第一行)
"use strict";
// 默認為全域變數,建議區域變數都是用let定義
let i = 1;

資料型別

一、字串

  1. 正常字串使用單引號或雙引號包裹

  2. 轉義字符

    \' 單引號
    \n 換行
    \t 制表符
    \u4e2d \u#### unicode字符
    \x41 \x## ascii字符
    
  3. 多行字串

    // 反單引號
    let msg = 
        `Hello,world!
    	nico,nico.
    `;
    console.log(msg);
    
  4. 模板字串

    let msg = "Hello, ";
    console.log(msg + "world!");
    
    let name = "ylf!";
    msg = `你好啊, ${name}`;
    console.log(msg);
    
  5. 字串長度

    string.length
    
  6. 字串的可變性(不可變)
    image-20220223215544704

  7. 大小寫轉換(注意:不是屬性,是方法)

    string.toUpperCase()
    string.toLowerCase()
    
  8. string.indexOf("string")(通過子字串獲取子字串第一個字符位置)

  9. string.substring()(截取字串的一部分,回傳一個新字串)

    [)
    string.substring(1) //從第一個字符截取到最后一個字符
    string.substring(1,3) //[1,3)
    

二、陣列

array可以包含任意的資料型別

let array = [1, 2, 3, null, "hello", true];
  1. 長度

    array.length
    

    注意:給array.length賦值,陣列大小會發生變化:陣列變大,增加下標對應元素為空;陣列變小,元素丟失

  2. indexOf()(通過元素獲取下標索引)

  3. slice()(截取陣列的一部分,回傳一個新陣列)類似字串中的substring()

  4. push(), pop()(尾部)

    push() //將元素壓入到尾部
    pop() //彈出尾部的一個元素
    
  5. unshift(), shift()(頭部)

    unshift() //將元素壓入到頭部
    shift() //彈出頭部的一個元素
    
  6. sort()(排序)

  7. reverse()(元素反轉)

  8. concat()
    image-20220224172344741

    concat()沒有修改陣列,只是回傳一個新陣列

  9. join()(連接符)
    image-20220224172553876

    列印拼接陣列,使用特定的字串連接

  10. 多維陣列
    image-20220224173056717

三、物件

若干個鍵值對

let 物件名 = {
    屬性名: 屬性值,
    屬性名: 屬性值,
    屬性名: 屬性值
}

JavaScript中的鍵都是字串,值為任意物件!

  1. 物件賦值
    image-20220228193910402
  2. 使用不存在的物件屬性不報錯!undefined
  3. 動態刪減屬性
    image-20220228194145657
  4. 動態添加屬性
    image-20220228194252665
  5. 判斷屬性值是否在物件中
    image-20220228194911289
  6. 判斷屬性是否物件自身擁有的
    image-20220228195130136

四、Map和Set

ES6新特性

Map(鍵值對)

let map = new Map([["jack", 12], ["tom", 18], ["ylf", 20], ["jet", 30]]);
console.log(map.get("jack")); //獲取對應的鍵值
map.set("nico", 78); //添加鍵值對
map.delete("nico"); //洗掉鍵值對
console.log(map.has("nico")); //判斷指定鍵值對是否存在

// 遍歷Map
for (let mapElement of map) {
    console.log(mapElement);
}

Set(無序不重復集合)

let set = new Set([3, 1, 1, 2]);
set.add(4); //添加不重復元素到末尾
set.delete(4); //洗掉指定元素
console.log(set.has(4)); //判斷指定元素是否存在

// 遍歷Set
for (let number of set) {
    console.log(number);
}

函式

一、定義函式

// 定義方式一
function 函式名(形參) {
    函式體;
    return 回傳值;
}

// 定義方式二
// function(){} 為匿名內部類,但是可以把結果賦值給變數名,通過變數名呼叫函式
let 函式名 = function(形參) {
    函式體;
    return 回傳值;
}

// 如果沒有執行return,函式也會回傳結果undefined

引數問題

JavaScript函式可以傳入任意個引數,也可以不傳入引數

傳入引數是否合法存在,不合法存在如何規避?

let abs = function(x) {
    // 手動拋出例外來判斷
    if (typeof x !== "number") {
        throw "Not a number!";
    }

    if (x < 0) {
        return -x;
    } else {
        return x;
    }
};

arguments(包含所有傳入函式的引數,是一個陣列)

多引數問題

rest(ES6引入新特性,獲取除了已經定義的引數之外的所有問題)

// 初始方法
if (arguments.length > 1) {
    for (let i = 1; i < arguments.length; i++) {
        console.log(arguments[i]);
    }
}
function fun(a, ...rest) {
    for (let restElement of rest) {
        console.log(restElement);
    }
}

rest引數只能寫在最后面,必須用...標識

二、變數作用域

三、方法

物件里的叫方法

// 定義方法方式(方法就是把函式放入物件里,物件由屬性和方法構成)
let person = {
    name: "YLF",
    birth: 1999,
    // 方法
    age: function () {
        let fullYear = new Date().getFullYear();
        return fullYear - this.birth;
    }
}

面向物件語言中 this 表示當前物件的一個參考,

但在 JavaScript 中 this 不是固定不變的,它會隨著執行環境的改變而改變,

  • 在方法中,this 表示該方法所屬的物件,
  • 如果單獨使用,this 表示全域物件,
  • 在函式中,this 表示全域物件,
  • 在函式中,在嚴格模式下,this 是未定義的(undefined),
  • 在事件中,this 表示接收事件的元素,
  • 類似 call() 和 apply() 方法可以將 this 參考到任何物件,

內部物件

標準物件

image-20220302164401102

一、Date

let date = new Date();
console.log("date: ");
console.log(date);
console.log("星期: ");
console.log(date.getDay());
console.log("月: ");
console.log(date.getMonth());
console.log("日: ");
console.log(date.getDate());
console.log("年: ");
console.log(date.getFullYear());
console.log("時: ");
console.log(date.getHours());
console.log("分: ");
console.log(date.getMinutes());
console.log("秒: ");
console.log(date.getSeconds());
console.log("時間戳: ");
// 表示從 1970 年 1 月 1 日 00:00:00 UTC 到給定日期之間經過的毫秒數
console.log(date.getTime());

二、JSON

早期所有資料傳輸習慣使用XML檔案

  • JSON(JavaScript Object Notation, JS 物件簡譜) 是一種輕量級的資料交換格式
  • 簡潔和清晰的層次結構使得 JSON 成為理想的資料交換語言
  • 易于人閱讀和撰寫,同時也易于機器決議和生成,并有效地提升網路傳輸效率

JSON 與 JS 物件的關系

JSON 是 JS 物件的字串表示法,它使用文本表示一個 JS 物件的資訊,(JSON)本質是一個字串,

如:

var obj = {a: 'Hello', b: 'World'}; //這是一個js物件,注意js物件的鍵名也是可以使用引號包裹的,這里的鍵名就不用引號包含
var json = '{"a": "Hello", "b": "World"}'; //這是一個 JSON 字串,本質是一個字串

JSON(格式字串) 和 JS 物件(也可以叫JSON物件 或 JSON 格式的物件)互轉(JSON.parse 和 JSON.stringify),

要實作從JSON字串轉換為JS物件,使用 JSON.parse() 方法:

var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //結果是 {a: 'Hello', b: 'World'}  一個物件

要實作從JS物件轉換為JSON字串,使用 JSON.stringify() 方法:

var json = JSON.stringify({a: 'Hello', b: 'World'}); //結果是 '{"a": "Hello", "b": "World"}'  一個JSON格式的字串

說句不嚴謹的話:JSON.parse() 就是字串js 物件, JSON.stringify()就是 js 物件字串,它們前提是要 json 格式才有意義,

三、Ajax

  • 原生的js寫法 xhr 異步請求
  • JQuery封裝的方法 $("選擇器").ajax("")
  • axios請求

面向物件編程

一、什么是面向物件

JavaScript,Java,C#

類(JavaScript中又稱原型物件)

物件

二、原型繼承

let student = {
    name: "student",
    age: 0,

    run: function () {
        console.log(this.name + ", run!");
    }
};

let me = {
    name: "ylf"
};

me.__proto__ = student;

三、class繼承

定義類

// ES6之前
function Student(name) {
    this.name = name;
    // this.hello = function f() {
    //     alert("Hello");
    // }
}
Student.prototype.hello = function () {
    alert("Hello");
}

class關鍵字是ES6引入的

// ES6之后
class Student {
    constructor(name) {
        this.name = name;
    }

    hello() {
        alert("Hello");
    }
}
// class繼承
class Pupil extends Student {
    constructor(name, grade) {
        super(name);
        this.grade = grade;
    }

    play() {
        alert("play");
    }
}

本質還是原型繼承

image-20220302211234353

四、原型鏈

操作BOM物件(重點)

一、瀏覽器

Javascript 和瀏覽器的關系:Javascript誕生是為了能夠在瀏覽器運行

BOM(Browser Object Model):瀏覽器物件模型

內核

  • IE 6 - 11
  • Chrome
  • Safari
  • FireFox

三方

  • QQ瀏覽器
  • 360瀏覽器

二、window物件(重要)

window代表瀏覽器視窗

window.innerHeight
182
window.innerWidth
1488
window.alert('hello')

三、navigator物件

封裝了瀏覽器的資訊

navigator.appName
'Netscape'
navigator.appVersion
'5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 Edg/98.0.1108.62'
navigator.platform
'Win32'

盡量避免使用navigator物件,因為它會被認為修改

四、screen物件

// 螢屏解析度
screen.width
1536
screen.height
864

五、location物件(重要)

代表當前頁面的URL資訊

host: "developer.mozilla.org"
href: "https://developer.mozilla.org/zh-CN/docs/Web/API/Window/outerHeight"
protocol: "https:"
reload: ? reload() // 重繪網頁
// 設定新的地址
location.assign('https://www.baidu.com/')

六、document物件(重要)

代表當前頁面

獲取具體的檔案樹節點

<ul id="ul">
    <li>Java</li>
    <li>C++</li>
    <li>Python</li>
</ul>

<script>
    let ul = document.getElementById("ul");
    console.log(ul);
</script>

獲取cookie

document.cookie
'BAIDUID_BFESS=A57FC6971D87A9172CD9952274273C6B:FG=1; BIDUPSID=A57FC6971D87A9172CD9952274273C6B; PSTM=1645402825; BD_UPN=12314753; baikeVisitId=37443825-845d-443f-aacd-9504a8d0e3eb; RT="z=1&dm=baidu.com&si=gpeanogruej&ss=l09ccw1h&sl=2&tt=1m3&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf&ld=24y&ul=e6v0&hd=e6xc"; ZD_ENTRY=bing; BD_HOME=1; H_PS_PSSID=34429_35106_31253_34584_35871_35908_35946_35972_35984_35315_26350; BA_HECTOR=a42k0l248la1850he71h210ue0q'

截取cookie原理

服務器端可以設定cookie為httpOnly保證安全

七、history物件

代表瀏覽器歷史記錄

history.forward()
history.back()

操作DOM物件(重點)

DOM:檔案物件模型

瀏覽器網頁就是一個DOM樹形結構

  • 更新DOM節點
  • 遍歷DOM節點
  • 洗掉DOM節點
  • 添加DOM節點

操作DOM節點需要先獲取它!

一、獲取DOM節點

// 對應css選擇器
let elementsByTagName = document.getElementsByTagName("h1");
let elementById = document.getElementById("paragraph");
let elementsByClassName = document.getElementsByClassName("paragraph");
let container = document.getElementById("container");

let children = container.children; // 獲取父節點的所有子節點
let parentNode = elementById.parentNode; //獲取父節點

這是原生代碼,之后盡量使用JQuery

二、更新DOM節點

<div id="container">

</div>

<script>
    let elementById = document.getElementById("container");
</script>
  • 更新文本

    elementById.innerText = 123 // 修改文本值
    elementById.innerHTML = "<strong>123</strong>" // 可以決議HTML文本標簽
    
  • 操作CSS

    elementById.style.color = "red"; // 屬性值使用字串
    elementById.style.fontSize = "50px" // -轉駝峰命名問題
    

三、洗掉DOM節點

步驟:先獲取父節點,然后通過父節點洗掉自己

<div id="container">
    <h1>標題一</h1>
    <p id="paragraph">段落一</p>
    <p >段落二</p>
</div>

<script>
    let elementById = document.getElementById("paragraph");
    let parentNode = elementById.parentNode; //獲取父節點
    parentNode.removeChild(elementById);
</script>

注意:洗掉節點時是動態的,children是時空變化的

四、創建和插入DOM節點

節點為空時,使用 innerText 或者 innerHTML 可以添加DOM節點,但不為空時,其會覆寫原來的DOM節點

追加DOM節點

<p id="outerParagraph">外部段落</p>
<div id="container">
    <p id="innerParagraph1">內部段落一</p>
    <p id="innerParagraph2">內部段落二</p>
    <p id="innerParagraph3">內部段落三</p>
</div>

<script>
    let outerParagraph = document.getElementById("outerParagraph"); 
    let container = document.getElementById("container");
    // DOM父節點追加一個已存在的DOM節點
    container.appendChild(outerParagraph); 
    // 創建新DOM節點,并追加到DOM父節點后面
    let htmlParagraphElement = document.createElement("p");
    // htmlParagraphElement.setAttribute("id", "newNode");
    htmlParagraphElement.id = "newNode";
    htmlParagraphElement.innerText = "newNode";
    container.appendChild(htmlParagraphElement);
</script>

向前插入DOM節點

<p id="outerParagraph">外部段落</p>
<div id="container">
    <p id="innerParagraph1">內部段落一</p>
    <p id="innerParagraph2">內部段落二</p>
    <p id="innerParagraph3">內部段落三</p>
</div>

<script>
    let outerParagraph = document.getElementById("outerParagraph");
    let innerParagraph2 = document.getElementById("innerParagraph2");
    let container = document.getElementById("container");
    container.insertBefore(outerParagraph, innerParagraph2);
</script>

操作表單(驗證)

一、什么是表單

目的:提交資訊

二、獲取和修改表單提交資訊

<form action="#" method="post">
    <span>用戶名:</span> <input type="text" id="username"> <br>
    <input type="radio" id="male" name="sex" value="https://www.cnblogs.com/ylfmax-blog/archive/2022/03/07/male"> 男
    <input type="radio" id="female" name="sex" value="https://www.cnblogs.com/ylfmax-blog/archive/2022/03/07/female"> 女
</form>

<script>
    let username = document.getElementById("username");
    let male = document.getElementById("male");
    let female = document.getElementById("female");
    //獲取文本框提交資訊 username.value
    //修改文本框提交資訊 username.value = 'https://www.cnblogs.com/ylfmax-blog/archive/2022/03/07/123'

    //獲取單選框提交資訊
    if (male.checked = true) {
        console.log(male.value);
    }
</script>

三、表單提交驗證及密碼MD5加密

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>表單提交驗證及密碼MD5加密</title>

        <!-- MD5工具類 -->
        <script src="https://cdn.bootcss.com/blueimp-md5/2.12.0/js/md5.min.js"></script>
    </head>
    <body>
        <!--
        表單系結事件
        1.事件處理程式的回傳值
        在JavaScript中通常事件處理程式不需要有回傳值,這時瀏覽器會按默認方式進行處理;
        但很多情況下需要使用回傳值,來判斷事件處理程式是否正確進行處理,
        2.回傳值型別:boolean值
        瀏覽器根據回傳值的型別決定下一步如何操作,當回傳值為true,進行默認操作; 當回傳值為 false,阻止瀏覽器下一步操作,
        3.基本語法:事件句柄=“return 函式名(引數);"
         -->
        <form action="https://www.baidu.com" method="post" onsubmit="return check()">
            <p>
                <span>用戶名:</span>
                <input type="text" name="username" id="username">
            </p>
            <p>
                <span>密碼:</span>
                <input type="password" name="password" id="password">
            </p>
            <p>
                <!-- 按鈕系結事件 onclick 被點擊 -->
                <input type="submit" value="https://www.cnblogs.com/ylfmax-blog/archive/2022/03/07/提交">
            </p>
        </form>

        <script>
            function check() {
                let username = document.getElementById("username");
                let password = document.getElementById("password");
                // MD5加密
                password.value = https://www.cnblogs.com/ylfmax-blog/archive/2022/03/07/md5(password.value);
                return false;
            }
        </script>
    

JQuery

JQuery庫,里面存在大量的JavaScript函式

一、JQuery入門

  1. 下載JQuery

image-20220304215145889

  1. 引入JQuery

    <!-- 方法一:CDN引入 -->
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <!-- 方法二:下載JQuery鏈接引入 -->
    <!-- <script src="https://www.cnblogs.com/ylfmax-blog/archive/2022/03/lib/jquery-3.6.0.js"></script> -->
    
  2. 使用JQuery

    <a href="https://www.cnblogs.com/ylfmax-blog/archive/2022/03/07/#" id="test-jquery">超鏈接</a>
    <script>
        // JQuery使用語法:$(選擇器).事件(事件函式)
        $("#test-jquery").click(function () {
            alert("Hello, JQuery!");
        })
    </script>
    

二、選擇器

jQuery API 中文檔案 | jQuery API 中文在線手冊 | jquery api 下載 | jquery api chm (cuishifeng.cn)

三、事件

滑鼠事件、鍵盤事件、其它事件

獲取滑鼠當前坐標

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>獲取滑鼠當前坐標</title>

        <script src="https://www.cnblogs.com/ylfmax-blog/archive/2022/03/lib/jquery-3.6.0.js"></script>

        <style>
            body {
                height: 500px;
            }
            span {
                width: 100px;
                height: 100px;
                display: block;
            }
        </style>
    </head>
    <body>
        滑鼠當前坐標:<span id="coordinate"></span>

        <script>
            // 當頁面加載完畢之后,回應事件
            $(function () {
                $("body").mousemove(function (coordinate) {
                    $("#coordinate").text("X坐標:" + coordinate.pageX + "\t" + "Y坐標:" + coordinate.pageY);
                });
            })
        </script>
    </body>
</html>

四、操作DOM物件

// 操作文本
//text(),html() 無參獲取文本值,有參設定文本值 html()可以決議HTML文本標簽
console.log($("#test-ul li[name=python]").text());
console.log($(".java").html());
// 操作CSS
$(".java").css({"color": "red", "font-size": 50});
// 元素展示和隱藏
$(".java").hide() //本質disply: none
$(".java").show()

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

標籤:其他

上一篇:為什么不呼叫派生類解構式?

下一篇:革命性創新,影片殺手锏 @scroll-timeline

標籤雲
其他(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