主頁 > 後端開發 > Nginx常見問題

Nginx常見問題

2021-09-16 13:23:20 後端開發

Nginx常見問題

 

    衣帶漸寬終不悔,為伊消得人憔悴,

 

1、什么是Nginx?

Nginx是一個 輕量級/高性能的反向代理Web服務器,他實作非常高效的反向代理、負載均衡,他可以處理2-3萬并發連接數,官方監測能支持5萬并發,現在中國使用nginx網站用戶有很多,例如:新浪、網易、 騰訊等,

2、為什么要用Nginx?

  • 跨平臺、配置簡單、方向代理、高并發連接:處理2-3萬并發連接數,官方監測能支持5萬并發,
  • 記憶體消耗小:開啟10個nginx才占150M記憶體 ,nginx處理靜態檔案好,耗費記憶體少,
  • 而且Nginx內置的健康檢查功能:如果有一個服務器宕機,會做一個健康檢查,再發送的請求就不會發送到宕機的服務器了,重新將請求提交到其他的節點上,
  • 節省寬帶:支持GZIP壓縮,可以添加瀏覽器本地快取,
  • 穩定性高:宕機的概率非常小,
  • 接收用戶請求是異步的,

3、為什么Nginx性能如此之高?

因為他的事件處理機制、異步非阻塞事件處理機制,運用了epoll模型,提供了一個佇列,排隊解決,

4、Nginx如何處理請求?

nginx接收一個請求后,首先由listen和server_name指令匹配server模塊,再匹配server模塊里的location,location就是實際地址,
1 server { # 第一個Server區塊開始,表示一個獨立的虛擬主機站點
2  listen 80; # 提供服務的埠,默認80 
3  server_name localhost; # 提供服務的域名主機名 
4  location / { # 第一個location區塊開始 
5    root html; # 站點的根目錄,相當于Nginx的安裝目錄 
6    index index.html index.htm; # 默認的首頁檔案,多個用空格分開 
7     } # 第一個location區塊結果 
8 }
View Code

5、什么是正向代理和反向代理?

  • 正向代理就是一個人發送一個請求直接就到達了目標的服務器,
  • 反方代理就是請求統一被Nginx接收,nginx反向代理服務器接收到之后,按照一定的規則分發給后端的業務處理服務器進行處理,

6、使用反向代理服務器的優點是什么?

反向代理服務器可以隱藏源服務器的存在和特征,它充當互聯網云和web服務器之間的中間層,這對于安全方面來說是很好的,特別是使用web托管服務時,

7、Nginx的優缺點?

優點:
  • 1. 占記憶體小,可實作高并發連接,處理回應快,
  • 2. 可實作http服務器、虛擬主機、方向代理、負載均衡,
  • 3. Nginx配置簡單,
  • 4. 可以不暴露正式的服務器IP地址,
缺點:
  • 1. 動態處理差:nginx處理靜態檔案好,耗費記憶體少,但是處理動態頁面則很雞肋,現在一般前端用nginx作為反向代理抗住壓力,

8、Nginx應用場景?

  • 1. http服務器,Nginx是一個http服務可以獨立提供http服務,可以做網頁靜態服務器,
  • 2. 虛擬主機,可以實作在一臺服務器虛擬出多個網站,例如個人網站使用的虛擬機,
  • 3. 反向代理,負載均衡,當網站的訪問量達到一定程度后,單臺服務器不能滿足用戶的請求時,需要用多臺服務器集群可以使用nginx做反向代理,并且多臺服務器可以平均分擔負載,不會應為某臺服務器負載高宕機而某臺服務器閑置的情況,
  • 4. nginx中也可以配置安全管理、比如可以使用Nginx搭建API介面網關,對每個介面服務進行攔截,

9、Nginx目錄結構有哪些?

10、Nginx組態檔和nginx.conf有哪些屬性模塊?

 1 worker_processes 1; # worker行程的數量 
 2 events { # 事件區塊開始 
 3 worker_connections 1024; # 每個worker行程支持的最大連接數 
 4 } # 事件區塊結束 
 5 http { # HTTP區塊開始 
 6  include mime.types; # Nginx支持的媒體型別庫檔案 
 7  default_type application/octet-stream; # 默認的媒體型別 
 8  sendfile on; # 開啟高效傳輸模式 
 9  keepalive_timeout 65; # 連接超時 
10 server { # 第一個Server區塊開始,表示一個獨立的虛擬 主機站點
11  listen 80; # 提供服務的埠,默認80 
12  server_name localhost; # 提供服務的域名主機名 
13  location / { # 第一個location區塊開始 
14   root html; # 站點的根目錄,相當于Nginx的安裝目錄 
15   index index.html index.htm; # 默認的首頁檔案,多個用空格分開 
16   } # 第一個location區塊結果 
17  error_page 500502503504 /50x.html; # 出現對應的http狀態碼時,使用50x.html回應客戶
18  location = /50x.html  { # location區塊開始,訪問50x.html
19   root html; # 指定對應的站點目錄為html 
20   } 
21     }......
View Code

11、Nginx靜態資源?

靜態資源訪問,就是存放在nginx的html頁面,我們可以自己撰寫,

12、如何用Nginx解決前端跨域問題?

使用Nginx轉發請求,把跨域的介面寫成調本域的介面,然后將這些介面轉發到真正的請求地址,

13、Nginx虛擬主機怎么配置?

  • 1、基于域名的虛擬主機,通過域名來區分虛擬主機——應用:外部網站,
  • 2、基于埠的虛擬主機,通過埠來區分虛擬主機——應用:公司內部網站,外部網站的管理后臺,
  • 3、基于ip的虛擬主機,
基于域名的虛擬主機: 需要建立與域名相對于的專案目錄/data/tjt、 /data/ttt目錄,windows本地hosts添加虛擬機ip地址對應的域名決議;對應域名網站目錄下新增index.html檔案,
 1 #當客戶端訪問www.tjt.com,監聽埠號為80,直接跳轉到data/tjt目錄下檔案 
 2 server {
 3  listen 80; 
 4  server_name www.tjt.com; 
 5  location / { 
 6   root data/tjt; 
 7   index index.html index.htm; 
 8    } 
 9 }
10 #當客戶端訪問www.ttt.com,監聽埠號為80,直接跳轉到data/ttt目錄下檔案 
11 server {
12  listen 80; 
13  server_name www.ttt.com; 
14  location / { 
15   root data/ttt; 
16   index index.html index.htm; 
17    } 
18  }
View Code

基于埠的虛擬機:

使用埠來區分,瀏覽器使用域名或ip地址:埠號 訪問,
 1 #當客戶端訪問www.tjt.com,監聽埠號為8080,直接跳轉到data/tjt目錄下檔案 
 2 server {
 3  listen 8080; 
 4  server_name www.tjt.com; 
 5  location / { 
 6   root data/tjt; 
 7   index index.html index.htm; 
 8   } 
 9 }
10 #當客戶端訪問www.tjt.com,監聽埠號為80直接跳轉到真實ip服務器地址 127.0.0.1:8080 
11 server { 
12  listen 80;
13  server_name www.tjt.com;
14  location / { 
15   proxy_pass http://127.0.0.1:8080; 
16   index index.html index.htm;
17  } 
18 }
View Code

14、location的作用是什么?

location指令的作用是根據用戶請求的URI來執行不同的應用,也就是根據用戶請求的網站URL進行匹配,匹配成功即進行相關的操作,

15、location語法?

注意:~ 代表自己輸入的英文字母,

16、location正則案例

 1 #優先級1,精確匹配,根路徑 
 2 location =/ {
 3  return 400; 
 4 }
 5 #優先級2,以某個字串開頭,以av開頭的,優先匹配這里,區分大小寫
 6 location ^~ /av {
 7  root /data/av/; 
 8 }
 9 #優先級3,區分大小寫的正則匹配,匹配/media*****路徑 
10 location ~ /media {
11  alias /data/static/; 
12 }
13 #優先級4 ,不區分大小寫的正則匹配,所有的****.jpg|gif|png 都走這里 location ~* .*\.(jpg|gif|png|js|css)$ {
14  root /data/av/; 
15 }
16 #優先7,通用匹配 
17 location / {
18  return 403; 
19 }
View Code

17、Nginx怎么做限流?

Nginx限流就是限制用戶請求速度,防止服務器受不了,限流演算法有以下3種方法:
  • 1. 正常限制訪問頻率(正常流量),
  • 2. 突發限制訪問頻率(突發流量),
  • 3. 限制并發連接數,
Nginx的限流都是基于漏桶流演算法, 正常限制訪問頻率(正常流量)
  • 限制一個用戶發送的請求,設定Nginx多久接收一個請求,
  • Nginx中使用ngx_http_limit_req_module模塊來限制的訪問頻率,限制的原理實質是基于漏桶演算法原理來實作的,在nginx.conf組態檔中可以使用limit_req_zone命令及limit_req命令限制單個IP的請求處理頻率, 
1 #定義限流維度,一個用戶一分鐘一個請求進來,多余的全部漏掉 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/m; 
2 #系結限流維度 
3 server{
4  location/seckill.html{
5   limit_req zone=zone;
6   proxy_pass http://lj_seckill; 
7   } 
8 }
View Code 1r/s代表1秒一個請求,1r/m一分鐘接收一個請求, 如果Nginx這時還有別人的請求沒有處理完,Nginx就會拒絕處理該用戶請求,  突發限制訪問頻率(突發流量)
  • 限制一個用戶發送的請求,設定Nginx多久接收一個,
  • 上面的配置一定程度可以限制訪問頻率,但是也存在著一個問題:如果突發流量超出請求被拒絕處理,無法處理活動時候的突發流量,這時候應該如何進一步處理呢?Nginx提供burst引數結合nodelay引數可以解決流量突發的問題,可以設定能處理的超過設定的請求數外能額外處理的請求數,我們可以將之前的例子添加burst引數以及nodelay引數,
1 #定義限流維度,一個用戶一分鐘一個請求進來,多余的全部漏掉 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/m; 
2 #系結限流維度 
3 server{
4  location/seckill.html{
5   limit_req zone=zone burst=5 nodelay;
6   proxy_pass http://lj_seckill; 
7   } 
8 }
View Code 這里多了一個 burst=5 nodelay; 多了這個可以代表Nginx對于一個用戶的請求會立即處理前五個,多余的就慢慢來落,沒有其他用戶的請求我就處理你的,有其他的請求的話Nginx就漏掉不接受你的請求, 限制并發連接數 Nginx中的ngx_http_limit_conn_module模塊提供了限制并發連接數的功能,可以使用limit_conn_zone指令以及limit_conn執行進行配置,一個簡單的例子如下:
 1 http {
 2  limit_conn_zone $binary_remote_addr zone=myip:10m; 
 3  limit_conn_zone $server_name zone=myServerName:10m; 
 4 }
 5 server {
 6  location / {
 7   limit_conn myip 10;
 8   limit_conn myServerName 100;
 9   rewrite / http://www.lijie.net permanent;
10  }
11 }
View Code 上面配置了單個IP同時并發連接數最多只能10個連接,并且設定了整個虛擬服務器同時最大并發數最多只能100個鏈接,當然,只有當請求的header被服務器處理后,虛擬服務器的連接數才會計數,剛才有提到過Nginx是基于漏桶演算法原理實作的,實際上限流一般都是基于漏桶演算法和令牌桶演算法實作的,

18、漏桶流演算法和令牌桶演算法?

漏桶演算法 漏桶演算法是網路世界中流量整形或速率限制時經常使用的一種演算法,它的主要目的是控制資料注入到網路的速率,平滑網路上的突發流量,漏桶演算法提供了一種機制,通過它,突發流量可以被整形以便為網路提供一個穩定的流量,也就是我們剛才所講的情況,漏桶演算法提供的機制實際上就是剛才的案例:突發流量會進入到一個漏桶,漏桶會按照我們定義的速率依次處理請求,如果水流過大也就是突發流量過大就會直接溢位,則多余的請求會被拒絕,所以漏桶演算法能控制資料的傳輸速率,

令牌桶演算法

令牌桶演算法是網路流量整形和速率限制中最常使用的一種演算法,典型情況下,令牌桶演算法用來控制發送到網路上的資料的數目,并允許突發資料的發送,Google開源專案Guava中的RateLimiter使用的就是令牌桶控制演算法,令牌桶演算法的機制如下:存在一個大小固定的令牌桶,會以恒定的速率源源不斷產生令牌,如果令牌消耗速率小于生產令牌的速度,令牌就會一直產生直至裝滿整個令牌桶,

19、為什么要做動靜分離

  • Nginx是當下最熱的Web容器,網站優化的重要點在于靜態化網站,網站靜態化的關鍵點則是是動靜分離,動靜分離是讓動態網站里的動態網頁根據一定規則把不變的資源和經常變的資源區分開來,動靜資源做好了拆分以后,我們則根據靜態資源的特點將其做快取操作,
  • 讓靜態的資源只走靜態資源服務器,動態的走動態的服務器,
  • Nginx的靜態處理能力很強,但是動態處理能力不足,因此,在企業中常用動靜分離技術,
  • 對于靜態資源比如圖片,js,css等檔案,我們則在反向代理服務器nginx中進行快取,這樣瀏覽器在請求一個靜態資源時,代理服務器nginx就可以直接處理,無需將請求轉發給后端服務器tomcat,若用戶請求的動態檔案,比如servlet、jsp則轉發給Tomcat服務器處理,從而實作動靜分離,這也是反向代理服務器的一個重要的作用, 

20、Nginx怎么做動靜分離?

只需要指定路徑對應的目錄,location/可以使用正則運算式匹配,并指定對應的硬碟中的目錄,如下:
1 location /image/ {
2  root /usr/local/static/;
3  autoindex on; 
4 }
View Code

21、Nginx負載均衡演算法的實作以及策略?

為了避免服務器崩潰,大家會通過負載均衡的方式來分擔服務器壓力,將對臺服務器組成一個集群,當用戶訪問時,先訪問到一個轉發服務器,再由轉發服務器將訪問分發到壓力更小的服務器,Nginx負載均衡實作的策略有以下五種: 輪詢(默認) 每個請求按時間順序逐一分配到不同的后端服務器,如果后端某個服務器宕機,能自動剔除故障系統, 
1 upstream backserver {
2  server 192.168.0.12; 
3  server 192.168.0.13; 
4 }
View Code

權重weight

weight的值越大分配到的訪問概率越高,主要用于后端每臺服務器性能不均衡的情況下,其次是為在主從的情況下設定不同的權值,達到合理有效的地利用主機資源,
1 upstream backserver {
2  server 192.168.0.12 weight=2;
3  server 192.168.0.13 weight=8; 
4 }
View Code 權重越高,在被訪問的概率越大,如上例,分別是20%、80%, ip_hash(IP系結) 每個請求按訪問IP的哈希結果分配,使來自同一個IP的訪客固定訪問一臺后端服務器, 并且可以有效解決動態網頁存在的session共享問題,
1 upstream backserver {
2  ip_hash;
3  server 192.168.0.12:88;
4  server 192.168.0.13:80; 
5 }
View Code

fair(第三方插件)

  • 必須安裝upstream_fair模塊,
  • 對比 weight、ip_hash更加智能的負載均衡演算法,fair演算法可以根據頁面大小和加載時間長短智能地進行負載均衡,回應時間短的優先分配,
1 upstream backserver {
2  server server1;
3  server server2;
4  fair; 
5 }
View Code 哪個服務器的回應速度快,就將請求分配到那個服務器上, url_hash(第三方插件)
  • 必須安裝Nginx的hash軟體包,
  • 按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器,可以進一步提高后端快取服務器的效率,
1 upstream backserver {
2  server squid1:3128;
3  server squid2:3128;
4  hash $request_uri;
5  hash_method crc32; 
6 }
View Code

22、Nginx如何配置高可用?

當上游服務器(真實訪問服務器),一旦出現故障或者是沒有及時相應的話,應該直接輪訓到下一臺服務器,保證服務器的高可用,
 1 server {
 2  listen 80;
 3  server_name www.lijie.com;
 4   location / {
 5   ### 指定上游服務器負載均衡服務器
 6   proxy_pass http://backServer;
 7   ###nginx與上游服務器(真實訪問的服務器)超時時間 后端服務器連接的超時時間_發起握手等 候回應超時時間
 8   proxy_connect_timeout 1s; 
 9   ###nginx發送給上游服務器(真實訪問的服務器)超時時間 
10   proxy_send_timeout 1s; 
11   ### nginx接受上游服務器(真實訪問的服務器)超時時間 
12   proxy_read_timeout 1s;
13   index index.html index.htm; 
14  }
15 }
View Code

23、Nginx如何判斷IP不可訪問?

1 # 如果訪問的ip地址為192.168.9.115,則回傳403 
2 if ($remote_addr = 192.168.9.115) {
3  return 403; 
4 }
View Code

24、Nginx如何限制瀏覽器訪問?

1 ## 不允許谷歌瀏覽器訪問 如果是谷歌瀏覽器回傳500 
2 if ($http_user_agent ~ Chrome) {
3  return 500; 
4 }
View Code

25、Rewrite全域變數是什么?

 

 

 

 

衣帶漸寬終不悔

      為伊消得人憔悴

 

 

 

 

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

標籤:Java

上一篇:Spring Boot中使用@Async的時候,千萬別忘了執行緒池的配置!

下一篇:Python 做簡單的登錄系統

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

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more