主頁 > 企業開發 > 手把手教你從安裝CentOS7.4鏡像開始,搭建IoT視頻監控系統

手把手教你從安裝CentOS7.4鏡像開始,搭建IoT視頻監控系統

2022-10-29 08:01:21 企業開發

摘要:在CentOS7.4服務器版本的環境下安裝nginx服務器、組態檔服務器、流媒體服務器,

本文分享自華為云社區《華為云ECS服務器安裝CentOS7.4鏡像,部署GINX服務器、搭建物聯網視頻監控系統》,作者:DS小龍哥,

在CentOS7.4服務器版本的環境下安裝nginx服務器、組態檔服務器、流媒體服務器, (1)配置NGINX為HTTP服務器,安裝rtmp模塊,完成rtmp視頻推流,支持快取視頻到本地目錄、支持轉為HLS流,通過瀏覽器訪問直播流, (2)部署開機自動啟動程式:方便設定自己的程式為開機啟動,

一、環境介紹

環境介紹: 采用的是華為云的ECS彈性云服務器–鏡像安裝的CentOS7.4 64位 -----是服務器版,非桌面版哦,
在CentOS7.4服務器版本的環境下安裝nginx服務器、組態檔服務器、流媒體服務器,

(1)配置NGINX為HTTP服務器,安裝rtmp模塊,完成rtmp視頻推流,支持快取視頻到本地目錄、支持轉為HLS流,通過瀏覽器訪問直播流,
(2)部署開機自動啟動程式:方便設定自己的程式為開機啟動,

二、Centos中安裝帶rtmp模塊的Nginx

2.1 新安裝的系統可以先安裝一些工具

yum install -y pcre pcre-devel openssl openssl-devel zlib zlib-devel gcc gcc-c++ 
yum install -y vim wget lsof git zip unzip

2.2 獲取Nginx二進制原始碼

聽說srtmp模塊暫時只支持Nginx13-15版本,當前就在官網下載Nginx14

wget http://nginx.org/download/nginx-1.14.2.tar.gz
tar xvf nginx-1.14.2.tar.gz 

2.3 獲取nginx-rtmp-module

wget https://github.com/arut/nginx-rtmp-module/archive/refs/tags/v1.2.1.tar.gz
tar xvf v1.2.1.tar.gz

2.4 編譯nginx

cd nginx-1.14.2
./configure --add-module=../nginx-rtmp-module-1.2.1/ --with-http_ssl_module
make && make install
#建立軟鏈接
ln -s /usr/local/nginx/sbin/nginx /usr/bin

特別說明:

如果在配置時報錯,一般就是缺東西了,安裝了再配置,

比如:報錯 ./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the mo ....
解決:
yum -y install pcre-devel
yum -y install openssl openssl-devel

2.5 修改Nginx的組態檔

打開/usr/local/nginx/conf/nginx.conf檔案,在檔案最后面加入下面的配置,
rtmp {  
    server {  
 listen 8888;   
        application live {  
            live on;  
 }
         }  
}

上面8888是rtmp推流和拉流的埠,

修改nginx.conf之后,重啟nginx服務:

sudo service nginx restart

重啟服務之后,使用netstat -ltn命令查看TCP監聽的埠,確認下Nginx的監聽埠是否正常,
正常情況,一個是我們自己設定的rtmp服務監聽埠8888,還有一個80是Nginx默認的HTTP服務監聽埠,
接下來可以在瀏覽器里輸入本機IP地址:http://127.0.0.1/,查看Nginx服務開啟狀態,

2.6 設定開機啟動

wget http://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx
chmod +x /etc/init.d/nginx
update-rc.d nginx defaults

2.7 控制nginx服務的3個命令: 啟動、停止、重啟

service nginx start
service nginx stop
service nginx restart  或者 nginx -s reload  (運行中生效組態檔)

2.8 進行rtmp推流

服務器搭建好之后,推流和拉流的地址就是: rtmp://<服務器IP地址>:8888/live/<推流存放的目錄>
例如: rtmp://127.0.0.1:8888/live/xl

2.9 nginx保存推流視頻檔案

如果需要讓推流上來的檔案保存下來后續進行查看歷史檔案,可以配置nginx進行保存,

在原來的/usr/local/nginx/conf/nginx.conf組態檔里rtmp模塊中增加新的配置:

record all;
record_unique on;
record_path "./video";  #視頻快取的路徑
record_suffix -%Y-%m-%d-%H_%M_%S.flv;

完整/usr/local/nginx/conf/nginx.conf里的rtmp模塊的配置如下:

#RTMP服務
rtmp {  
    server {  
 listen 8888;   
            application live {  
            live on;  #開啟實時
record all;
 record_unique on;
 record_path "./video";  #視頻快取的路徑
 record_suffix -%Y-%m-%d-%H_%M_%S.flv;
 }
         }  
}

配置之后執行命令nginx -s reload重啟服務器即可,

2.10 rtmp直播流轉為hls直播流

什么是HLS直播流?

HLS 全稱是 HTTP Live Streaming,是一個由 Apple 公司提出的基于 HTTP 的媒體流傳輸協議,用于實時音視頻流的傳輸,目前HLS協議被廣泛的應用于視頻點播和直播領域,原理介紹
HLS 跟 DASH 協議的原理非常類似,通過將整條流切割成一個小的可以通過 HTTP 下載的媒體檔案,然后提供一個配套的媒體串列檔案,提供給客戶端,讓客戶端順序地拉取這些媒體檔案播放,來實作看上去是在播放一條流的效果,由于傳輸層協議只需要標準的 HTTP 協議,HLS 可以方便的透過防火墻或者代理服務器,而且可以很方便的利用 CDN 進行分發加速,并且客戶端實作起來也很方便,
HLS 把整個流分成一個個小的基于 HTTP 的檔案來下載,每次只下載一些,HLS 協議由三部分組成:HTTP、M3U8、TS,這三部分中,HTTP 是傳輸協議,M3U8 是索引檔案,TS 是音視頻的媒體資訊,

HLS協議編碼格式要求:

視頻的編碼格式:H264
音頻的編碼格式:AAC、MP3、AC-3
視頻的封裝格式:ts
保存 ts 索引的 m3u8 檔案

配置/usr/local/nginx/conf/nginx.conf將RTMP流轉為HLS流,

在http模塊的server配置里增加新的配置:

location /live_hls{
  types {
  #m3u8 type設定
  application/vnd.apple.mpegurl m3u8;
  #ts分片檔案設定
  video/mp2t ts;
}
#指向訪問m3u8檔案目錄
alias ./m3u8File; #和rtmp模塊里的hls_path設定路徑一樣
add_header Cache-Control no-cache; #禁止快取
}

在rtmp模塊的server配置里增加新的配置:

hls on;   #開啟hls
hls_path ./m3u8File;  #hls的ts切片存放路徑 (這是個目錄,會自動創建的)
hls_fragment 2s; #本地切片長度
hls_playlist_length 6s;#HLS播放串列長度

/usr/local/nginx/conf/nginx.conf檔案的完整的配置如下:

worker_processes  1;   #Nginx行程數,建議設定為等于CPU總核數
events {
 worker_connections  1024;  #作業模式與連接數上限
}
rtmp_auto_push on;
#RTMP服務
rtmp {  
    server {  
        listen 8888;   
        application live {  
            live on;  #開啟實時
record all;
 record_unique on;
 record_path "./video";  #視頻快取的路徑
 record_suffix -%Y-%m-%d-%H_%M_%S.flv;

 hls on;   #開啟hls
 hls_path ./m3u8File;  #hls的ts切片存放路徑
 hls_fragment 2s; #本地切片長度
 hls_playlist_length 6s;#HLS播放串列長度
 }
         }  
}
#HTTP服務
http {
    include       mime.types;
 default_type  application/octet-stream;
 sendfile        on;
 keepalive_timeout  65;
    server {
        listen       8099;
 server_name  localhost;
        location / {
            root   html;
 index  index.html index.htm;
        }
        location /live_hls{
 types{
    #m3u8 type設定
application/vnd.apple.mpegurl m3u8;
#ts分片檔案設定
video/mp2t ts;
}
#指向訪問m3u8檔案目錄
alias ./m3u8File;
add_header Cache-Control no-cache; #禁止快取
}
        location /control{
 rtmp_control all;
}

location /stat{
 rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl{
 root ./nginx-rtmp-module-master;
}
 # redirect server error pages to the static page /50x.html
 #
 error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

配置之后重啟服務器即可,

按照前面的配置,RTMP推流地址和HTTP訪問地址如下:

RTMP推流和拉流地址: rtmp://127.0.0.1:8888/live/video01
那么對應的HTTP的訪問地址:http://127.0.0.1:8099/live_hls/video01.m3u8

說明: 轉為HLS流之后,如果瀏覽器支持HLS流就可以直接輸入地址播放,一般手機瀏覽器都支持的,比如:蘋果手機的自帶瀏覽器,QQ瀏覽器等瀏覽器都支持直接播放HLS流,PC機的谷歌瀏覽器默認是不支持的,

2.11 NGINX配置HTTP檔案服務器

在5.8小節里介紹了如何配置NGINX保留RTMP推流的視頻檔案,如果想做一個直播回放,歷史記錄查看的播放器,那么就可以將rtmp視頻快取的目錄作為HTTP檔案服務器訪問的根目錄,通過訪問這個根目錄獲取目錄下檔案的索引,得到視頻檔案的訪問地址就可以直接進行播放,就能做一個視頻回放播放器,

在http模塊里新增加一個server配置,并填入新的配置,詳細內容如下:

server {
 listen       8090;
 server_name  localhost;
 location / {
root ./video;  #指定哪個目錄作為Http檔案服務器的根目錄,如果你這里寫了file就是你的根目錄,那么訪問的時候file就不會出現在目錄中
autoindex on;   #設定允許列出整個目錄
autoindex_exact_size off; #默認為on,顯示出檔案的確切大小,單位是bytes,改為off后,顯示出檔案的大概大小,單位是kB或者MB或者GB
autoindex_localtime on; #默認為off,顯示的檔案時間為GMT時間,改為on后,顯示的檔案時間為檔案的服務器時間
charset utf-8; #防止檔案亂碼顯示, 如果用utf-8還是亂碼,就改成gbk試試
        }
}

特別說明: nginx是支持配置多個server配置,監聽不同的埠,可以給檔案服務器單獨設定一個監聽埠,專門作為檔案遍歷使用,

/usr/local/nginx/conf/nginx.conf檔案的完整的配置如下:

worker_processes  1;   #Nginx行程數,建議設定為等于CPU總核數
events {
 worker_connections  1024;  #作業模式與連接數上限
}
rtmp_auto_push on;
#RTMP服務
rtmp {  
    server {  
        listen 8888;   
        application live {  
            live on;  #開啟實時
record all;
 record_unique on;
 record_path "./video";  #視頻快取的路徑
 record_suffix -%Y-%m-%d-%H_%M_%S.flv;

 hls on;   #開啟hls
 hls_path ./m3u8File;  #hls的ts切片存放路徑
 hls_fragment 2s; #本地切片長度
 hls_playlist_length 6s;#HLS播放串列長度
 }
         }  
}
#HTTP服務
http {
    include       mime.types;
 default_type  application/octet-stream;
 sendfile        on;
 keepalive_timeout  65;
server {
 listen       8090;
 server_name  localhost;
 location / {
root ./video;  #指定哪個目錄作為Http檔案服務器的根目錄,如果你這里寫了file就是你的根目錄,那么訪問的時候file就不會出現在目錄中
autoindex on;   #設定允許列出整個目錄
autoindex_exact_size off; #默認為on,顯示出檔案的確切大小,單位是bytes,改為off后,顯示出檔案的大概大小,單位是kB或者MB或者GB
autoindex_localtime on; #默認為off,顯示的檔案時間為GMT時間,改為on后,顯示的檔案時間為檔案的服務器時間
charset utf-8; #防止檔案亂碼顯示, 如果用utf-8還是亂碼,就改成gbk試試
        }
}

    server {
        listen       8099;
 server_name  localhost;
        location / {
            root   html;
 index  index.html index.htm;
        }

        location /live_hls{
 types{
    #m3u8 type設定
application/vnd.apple.mpegurl m3u8;
#ts分片檔案設定
video/mp2t ts;
}
#指向訪問m3u8檔案目錄
alias ./m3u8File;
add_header Cache-Control no-cache; #禁止快取
}
        location /control{
 rtmp_control all;
}

location /stat{
 rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl{
 root ./nginx-rtmp-module-master;
}
 # redirect server error pages to the static page /50x.html
 #
 error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

訪問檔案測驗: http://127.0.0.1:8090

三、Linux下開機啟動的執行流程

3.1 開機執行腳本順序

第一步:init /etc/inittab
第二步:啟動相應的腳本,并且打開終端
rc.sysinit
rc.d(里面的腳本)
rc.local
第三步:啟動login登錄界面 login
第四步:在用戶登錄的時候執行sh腳本的順序,每次登錄的時候都會完全執行的
/etc/profile.d/file
/etc/profile
/etc/bashrc
/root/.bashrc
/root/.bash_profile

3.2 Linux中修改環境變數及生效方法

修改/etc/profile 或者 /etc/bashrc 可以讓環境變數全部用戶全域生效(需要重啟系統),
修改~/.bash_profile 或~/.bashrc對當前用戶全域有效(需要重啟系統),

如果需要立即生效,修改完之后用source命令執行,如:
source .bash_profile

3.3 rcX.d的啟動級別

一般有開機自啟動的需求時,一般會在/etc/rc.local檔案中寫命令列或腳本執行命令的方式來實作,也可以在/etc/profile檔案里實作(不建議),

現在很多Linux發行版,默認是沒有/etc/rc.local這個檔案或者沒有去執行,而使用的是/etc/rcX.d,

rcX.d并不是指這個目錄或者檔案就是叫rcX.d,這其中的X對應是0~6這7個數字,不同的數字對應著不同的級別

查看當前系統/etc/rcX.d目錄:

[root@ecs-c687-ecrs work]# ls /etc/ | grep rc
bashrc
csh.cshrc
inputrc
mail.rc
rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d
rc.d
rc.local
vimrc
virc
wgetrc

通過runlevel命令查看當前系統的啟動級別:

我當前使用的是CentOS7.4服務器版本,啟動級別如下:

[root@ecs-c687-ecrs ]# runlevel
N 3

查看/etc/rc3.d/目錄下檔案的詳細資訊:

[root@ecs-c687-ecrs ~]# ls /etc/rc3.d/ -l
total 0
lrwxrwxrwx. 1 root root 20 Feb 14 2022 K50netconsole -> ../init.d/netconsole
lrwxrwxrwx. 1 root root 17 Feb 14 2022 K90network -> ../init.d/network
lrwxrwxrwx 1 root root 19 Sep 15 22:07 S12hostguard -> ../init.d/hostguard
lrwxrwxrwx 1 root root 24 Feb 14 2022 S50multi-queue-hw -> ../init.d/multi-queue-hw

可以看到該目錄下的檔案都是鏈接檔案,而且都是指向/etc/init.d中的shell腳本或者其他可執行檔案,它們的命名方式基本都是以S或者K開頭,其后緊跟一個數字,數字后則是鏈接檔案的名字,這個名字可以自行定義,

命名規則解釋如下:

以K90network為例:
K表示stop,S表示start,(表示需要傳入引數),也就是說開機自啟動命令會向腳本傳入start或者stop,在腳本里可以收到引數$1進行一些判斷,完成一些不同情況下的邏輯處理,比如:開機執行什么代碼,關機執行什么代碼,
90 表示腳本執行等級,(通常越小越優先)
network與/etc/init.d下的腳本檔案名稱保持一致,

3.4 利用rcX.d實作開機自動執行腳本

比如:需求是開機之后創建一個檔案,并向檔案里存放一些資料,

(1)先在/etc/init.d目錄下創建一個up_demo.sh腳本,撰寫腳本代碼:

#!/bin/bash
echo $0 $1 >> /home/up_test.txt

修改腳本權限:

[root@ecs-c687-ecrs init.d]# chmod 777 /etc/init.d/up_demo.sh 
[root@ecs-c687-ecrs init.d]# ls up_demo.sh -l
-rwxrwxrwx 1 root root 76 Sep 16 14:13 up_demo.sh

(2) 在/etc/rc3.d目錄里,創建軟連接, (因為我的系統啟動級別為3)

[root@ecs-c687-ecrs rc3.d]# ln -s /etc/init.d/up_demo.sh S10up_demo
[root@ecs-c687-ecrs rc3.d]# ls -l
total 0
lrwxrwxrwx. 1 root root 20 Feb 14 2022 K50netconsole -> ../init.d/netconsole
lrwxrwxrwx. 1 root root 17 Feb 14 2022 K90network -> ../init.d/network
lrwxrwxrwx 1 root root 22 Sep 16 14:17 S10up_demo -> /etc/init.d/up_demo.sh
lrwxrwxrwx 1 root root 19 Sep 15 22:07 S12hostguard -> ../init.d/hostguard
lrwxrwxrwx 1 root root 24 Feb 14 2022 S50multi-queue-hw -> ../init.d/multi-queue-hw

(3)重啟系統,進入到/home目錄下查看檔案內容,可以看到開機啟動成功,內容已經寫到up_test.txt檔案里了,

 Welcome to Huawei Cloud Service
[root@ecs-c687-ecrs ~]# cd /home/
[root@ecs-c687-ecrs home]# ls
lib_run.sh  up_test.txt  video  work  work_pc  work.tar.gz
[root@ecs-c687-ecrs home]# cat up_test.txt 
/etc/rc.d/init.d/up_demo.sh start
[root@ecs-c687-ecrs home]# 

 

點擊關注,第一時間了解華為云新鮮技術~

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

標籤:Html/Css

上一篇:form里面有的select框需要設定成固定值展示給用戶看,但是又不讓用戶進行變更。

下一篇:面試題 JS 不能不會的內容

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