ngnix網站服務詳解

一 Nginx的簡介

1 Nginx:

①Nginx 是開源、高性能、高可靠的 Web 和反向代理服務器,而且支持熱部署,幾乎可以做到 7 * 24 小時不間斷運行,即使運行幾個月也不需要重新啟動,還能在不間斷服務的情況下對軟件版本進行熱更新

②Nginx的主要使用場景: 虛擬主機,反向代理,緩存,http ?

③可以跨平臺,配置簡單,內存消耗少,10個nginx才占用150M內存。

④使用的是epoll模型,這種模型是I/O多路復用技術(I/O多路復用是一種技術,它允許一個進程或線程監控多個網絡連接,當其中某個或某幾個連接有數據時,當前程序可以拿到網卡收到的數據進行下一步的處理;),異步非阻塞的模型(異步非阻塞模型可以提高程序的效率,在等待I/O操作完成的同時,可以繼續執行其他代碼。)

⑥nginx支持高并發連接,處理2-3萬并發連接數,官方監測能支持5萬并發。對HTTP并發連接的處理能力高,單臺物理服務器可支持30000~50000個并發請求。(實際操作,很多公司為了服務器的穩定,都會設置在20000個左右)

⑦成本低,且開源,穩定性高,宕機概率非常小;

⑧內置的健康檢查功能,可以允許在服務器宕機的時候,做健康檢查,再發送的請求就不會發給宕機的服務器,會重新提交到其他節點上。

Apache:

Apache是以進程為基礎的結構,進程要比線程消耗更多的系統開支,不太適用于多處理器環境,因此,在一個apache Web站點擴容時,通常是增加服務器或擴充群集節點而不是增加處理器?

nginx的缺點:

nginx不方便處理動態資源,可以進行動靜分離,將動態請求交給后端程序去進行處理。

2 Apache與Nginx的區別?

1 nginx是輕量級,nginx比apache 占用更少的內存及資源;

2 靜態處理,Nginx 靜態處理性能比 Apache 高 ;

3 Nginx可以實現無緩存的反向代理加速,提高網站運行速度;

4 Nginx的性能和可伸縮性不依賴于硬件,Apache依賴于硬件;

5 Nginx支持熱部署,啟動速度迅速,可以在不間斷服務的情況下,對軟件版本或者配置進行升級;

6 nginx是異步進程,基于事件的web服務器,多個連接對應一個進程 ;apache是同步多進程,基于流程的web服務器,單個線程處理單個請求;

7 Nginx高度模塊化,編寫模塊相對簡單,且組件比Apache少

8 nginx抗并發,nginx處理請求是異步非阻塞的,而Apache則是阻塞性的,在高并發下的nginx能夠保持低資源,低消耗高性能。

9 nginx類似于速度,apache類似于功率.

10 nginx在負載均衡方面比較好,apache當流量進程達到極限時,將拒絕新的連接

Nginx對比Apache的優勢:?

輕量級,nginx比apache 占用更少的內存及資源

靜態處理,Nginx 靜態處理性能比 Apache 高?

Nginx可以實現無緩存的反向代理加速,提高網站運行速度

Nginx的性能和可伸縮性不依賴于硬件,Apache依賴于硬件

Nginx支持熱部署,啟動速度迅速,可以在不間斷服務的情況下,對軟件版本或者配置進行升級

nginx是異步進程,多個連接可以對應一個進程 ;apache是同步多進程,一個連接對應一個進程

Nginx高度模塊化,編寫模塊相對簡單,且組件比Apache少

高并發下nginx 能保持低資源低消耗高性能

Nginx 配置簡潔, Apache配置復雜

apache相對于nginx的優點 :

Rewrite比nginx的rewrite強大 (rewrite的主要功能就是實現統一資源定位符URL的跳轉)
模塊多,基本想到的都可以找到
少bug, nginx的bug相對較多
超穩定
Nginx處理動態請求是弱項,動態請求要Apache去做

3 Nginx的進程 ?

Apache和Nginx的默認端口都是80,當你發先Nginx啟動失敗,導致的原因可能就是80端口被占用,而導致服務啟動失敗,可以修改服務的端口,從而實現兩個服務的同時進行

Nginx有兩個進程:

master process:主進程(守護進程),用來管理工作進程,讀取nginx的配置文件信息

worker process:工作進程,用來處理用戶的連接請求

nginx的應用場景

1 可以做web服務器,nginx是一個http服務,可以獨立地提供http服務,可以做靜態服務器;

2 虛擬主機。可以實現一臺服務器,虛擬多個站點,例如基于ip、不同端口、或者不同域名的站點

3 反向代理服務器,負載均衡。當網站的訪問量達到一定的程度時,單臺服務器就不能滿足用戶的請求,此時需要多臺服務器集群,此時可以使用nginx做反向代理,并且多臺服務器可以平均分擔負載,不會讓某臺服務器負載高或者閑置。(也可以使用ip hash技術 進行負載均衡分配)

4 nginx中還可以配置安全管理,比如支持nginx搭建API接口網關,對每一個接口服務進行攔截;

5 nginx還能做緩存服務器;

Nginx 是如何實現高并發的?

?異步,非阻塞,使用了epoll 和大量的底層代碼優化
如果一個server采用一個進程負責一個request的方式,那么進程數就是并發數。正常情況下,會有很多進程一直在等待中
而nginx采用一個master進程,多個woker進程的模式
master進程主要負責收集、分發請求。每當一個請求過來時,master就拉起一個worker進程負責處理這個請求。同時master進程也負責監控woker的狀態,保證高可靠性
woker進程一般設置為跟cpu核心數一致。nginx的woker進程在同一時間可以處理的請求數只受內存限制,可以處理多個請求
Nginx 的異步非阻塞工作方式正把當中的等待時間利用起來了。在需要等待的時候,這些進程就空閑出來待命了,因此表現為少數幾個進程就解決了大量的并發問題

同步和異步

同步:一個服務的完成需要依賴其他服務時,只有等待被依賴的服務完成后,才算完成,這是一種可靠的服務序列。要么成功都成功,失敗都失敗,服務的狀態可以保持一致

異步:一個服務的完成需要依賴其他服務時,只通知其他依賴服務開始執行,而不需要等待被依賴的服務完成,此時該服務就算完成了。被依賴的服務是否最終完成無法確定,因此它是一個不可靠的服務序列

阻塞與非阻塞

阻塞:阻塞調用是指調用結果返回之前,當前線程會被掛起,一直處于等待消息通知,不能夠執行其他業務,函數只有在得到結果之后才會返回。

非阻塞:非阻塞和阻塞的概念相對應,指在不能立刻得到結果之前,該函數不會阻塞當前線程,而會立刻返回

Nginx為什么不使用多線程?

Apache: 創建多個進程或線程,而每個進程或線程都會為其分配 cpu 和內存(線程要比進程小的多,所以worker支持比perfork高的并發),并發過大會耗光服務器資源

Nginx: 采用單線程來異步非阻塞處理請求(管理員可以配置Nginx主進程的工作進程的數量)(epoll),不會為每個請求分配cpu和內存資源,節省了大量資源,同時也減少了大量的CPU的上下文切換。所以才使得Nginx支持更高的并發

nginx 模塊

  • 核心模塊:是 Nginx 服務器正常運行必不可少的模塊,提供錯誤日志記錄 、配置文件解析 、事件驅動機制 、進程管理等核心功能

  • 標準HTTP模塊:提供 HTTP 協議解析相關的功能,比如: 端口配置 、 網頁編碼設置 、 HTTP響應頭設置 等等

  • 可選HTTP模塊:主要用于擴展標準的 HTTP 功能,讓 Nginx 能處理一些特殊的服務,比如:Flash 多媒體傳輸 、解析 GeoIP 請求、 網絡傳輸壓縮 、 安全協議 SSL 支持等

  • 郵件服務模塊:主要用于支持 Nginx 的 郵件服務 ,包括對 POP3 協議、 IMAP 協議和 SMTP協議的支持

  • Stream服務模塊: 實現反向代理功能,包括TCP協議代理 反向

  • 第三方模塊:是為了擴展 Nginx 服務器應用,完成開發者自定義功能,比如: Json 支持、 Lua 支持等

nginx高度模塊化,但其模塊早期不支持DSO機制;1.9.11 版本支持動態裝載和卸載

yum安裝nginx

?①yum install -y epel-release? ? ?#安裝epel源 ? centos7 需要安裝epel源??

②yum install nginx -y

[root@localhost ~]# yum install -y epel-release[root@localhost ~]# yum install -y nginx

③ 使用yum安裝的nginx

配置文件位置在:/etc/nginx/nginx.conf;

默認根目錄在:/usr/share/nginx/html;

默認日志文件在:/var/log/nginx/路徑下

二 編譯安裝Nginx服務

1 初步編譯安裝

關閉防火墻,將安裝nginx所需軟件包傳到/opt目錄下

systemctl stop firewalldsystemctl disable firewalld   開機不自啟setenforce 0

2 安裝依賴包?

nginx的配置及運行需要pcre、zlib、openssl等軟件包的支持,因此需要安裝這些軟件的開發包,以便提供相應的庫和頭文件。

yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

3 創建運行用戶、組

(Nginx 服務程序默認以 nobody 身份運行,建議為其創建專門的用戶賬號,以便更準確地控制其訪問權限)?

useradd -M -s /sbin/nologin nginx

4 下載安裝包

先從官網下載安裝包? www.nginx.org.com

?

?步驟如下

rm -rf /var/run/yum.pid  殺死嘗試yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel
安裝依賴包useradd -M -s /sbin/nologin nginx
#新建nginx用戶便于管理cd /opt/
wget http://nginx.org/download/nginx-1.18.0.tar.gz
#官網下載安裝包tar xf nginx-1.18.0.tar.gz 
cd nginx-1.18.0/
#解壓軟件包./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module
添加各種模塊make -j2 && make install
編譯安裝chown -R nginx.nginx /apps/nginx
#修改權限
至此安裝結束ln -s /apps/nginx/sbin/nginx  /usr/sbin/①絕對路徑啟動
/apps/nginx/sbin/nginx   若啟動不起來,看看端口是否被占用,占用關閉pstree -p | grep nginx
②做完軟鏈接直接啟動nginx
[root@localhost ~]#nginx
[root@localhost ~]#pstree -p | grep nginx|-nginx(27991)---nginx(27992)ll /usr/local/sbin/

三 Nginx的初始命令?

啟動Nginx服務
nginx  -t  #檢查nginx服務配置是否正確/usr/local/sbin/nginx  #啟動nginx服務

啟動nginx方法二
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/		#讓系統識別nginx的操作命令
##做軟連接,創建二進制文件到PATH路徑中
##一般是安裝在/usr/local中,就放到/usr/local下的/sbin下還有一種當時是在PATH環境變量中加入nginx程序的目錄,這種不常用

絕對路徑啟動
/apps/nginx/sbin/nginx 
#使用絕對路徑啟動nginxps aux |grep nginx
#查看是否有nginx進程

?創建nginx自啟動文件

[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid
#注意文件位置,如果不對 啟動不了
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
#注意啟動文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
LimitNOFILE=100000[Install]
WantedBy=multi-user.target[root@localhost nginx]#systemctl daemon-reload 
[root@localhost nginx]#systemctl start nginx
[root@localhost nginx]#systemctl status nginx

②停止nginx服務

cat /usr/local/nginx/logs/nginx.pid		#先查看nginx的PID號kill -3 <PID號>kill -s QUIT <PID號>killall -3 nginxkillall -s QUIT nginx
多種方式可以查看nginx進程號
cat /usr/local/nginx/logs/nginx.pid   //查看nginx主進程的PIDpgrep nginx -l   //查看nginx的主進程號和工作進程號lsof -i :80    //查看nginx的主進程號和工作進程號?
ss -ntap | grep nginx  //查看nginx的主進程號和工作進程號?
netstat -ntap | grep nginx  //查看nginx主進程的PID
啟動關閉nginx查看進程?
[root@localhost nginx-1.18.0]# nginx
[root@localhost nginx-1.18.0]# ps aux | grep nginx
root      49343  0.0  0.0  20564   616 ?        Ss   18:39   0:00 nginx: master process nginx
nobody    49344  0.0  0.0  23084  1380 ?        S    18:39   0:00 nginx: worker process
root      49358  0.0  0.0 112824   984 pts/0    S+   18:39   0:00 grep --color=auto nginx
文件夾功能
[root@localhost nginx-1.18.0]# ll /apps/nginx
總用量 4
drwxr-xr-x. 2 root root 4096 2月  21 18:22 conf
drwxr-xr-x. 2 root root   40 2月  21 18:22 html
drwxr-xr-x. 2 root root    6 2月  21 18:22 logs
drwxr-xr-x. 2 root root   36 2月  21 18:24 sbin
[root@localhost nginx-1.18.0]# 
  • conf:保存nginx所有的配置文件,其中nginx.conf是nginx服務器的最核心最主要的配置文件,其他的.conf則是用來配置nginx相關的功能的,例如fastcgi功能使用的是fastcgi.conf和
  • fastcgi_params兩個文件,配置文件一般都有個樣板配置文件,是文件名.default結尾,使用的使用將其復制為并將default去掉即可。
  • html目錄中保存了nginx服務器的web文件,但是可以更改為其他目錄保存web文件,另外還有一個50x的web文件是默認的錯誤頁面提示頁面。
  • logs:用來保存nginx服務器的訪問日志錯誤日志等日志,logs目錄可以放在其他路徑,比如/var/logs/nginx里面。
  • sbin:保存nginx二進制啟動腳本,可以接受不同的參數以實現不同的功能。
③重載nginx服務
kill -1 <PID號>
kill -s HUP <PID號>
killall -1 nginx
killall -s HUP nginx
④nginx的其余命令
①nginx -V 查看安裝了那些模塊②nginx -v 查看版本號③nginx -s 發送信號 后面可以跟stop、reload、quit、reopen④nginx -t 檢查著配置文件語法nginx -g 修改執行用戶ps aux |grep nginx中查看。需要注銷配置文件中的user nginx中。nginx -g "daemon off"前臺運行,默認后臺運行容器中需要使用。⑥nginx -c 指定配置文件,一般用于.service文件中

⑤發信號:日志分割,重新打開日志文件

日志每天要換一次

[root@localhost logs]#ls
access.log  error.log  nginx.pid[root@localhost logs]#mv access.log    access.`date +%F`.log[root@localhost logs]#ls
access.2022-09-27.log  error.log  nginx.pid[root@localhost logs]#kill -USR1 8468[root@localhost logs]#ls
access.2022-09-27.log  access.log  error.log  nginx.pid[root@localhost logs]#
另一種方法

錯誤對比?

創建nginx自啟動文件
注意:創建自啟動前需確保nginx軟件安裝,不僅僅時下載。[root@localhost ~]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid
#注意文件位置,如果不對 啟動不了
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
#注意啟動文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target[root@localhost ~]# systemctl daemon-reload    
#重新加載配置
[root@localhost ~]# systemctl start nginx
[root@localhost ~]# systemctl status nginx
[root@localhost ~]# systemctl stop nginx
[root@localhost ~]# systemctl enable --now nginx
#開機自啟并立即啟動
指定配置

不以配置文件中的為準

[root@localhost nginx]#pstree -p |grep nginx|-nginx(8678)---nginx(9434)
[root@localhost nginx]#vim /apps/nginx/conf/nginx.conf
[root@localhost nginx]#nginx -s reload
[root@localhost nginx]#pstree -p |grep nginx|-nginx(8678)-+-nginx(13336)|             `-nginx(13337)

?

平滑升級?
下載新版本安裝包,重新編譯安裝
[root@localhost ~]#wget https://nginx.org/download/nginx-1.20.2.tar.gz -P /usr/local/src/
#下載安裝包到/usr/local/src/目錄
[root@localhost ~]#cd /usr/local/src/
[root@localhost src]#ls
nginx-1.20.2.tar.gz
[root@localhost src]#tar xf nginx-1.20.2.tar.gz 
[root@localhost src]#cd nginx-1.20.2/
[root@localhost nginx-1.20.2]#ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
[root@localhost nginx-1.20.2]# nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
[root@localhost nginx-1.20.2]# ./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
#重新編譯
[root@localhost nginx-1.20.2]# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  Makefile  man  objs  README  src
[root@localhost nginx-1.20.2]# make
[root@localhost nginx-1.20.2]# cd objs/
#此文件夾中有新版本的nginx運行程序
[root@localhost objs]# ls
autoconf.err  Makefile  nginx  nginx.8  ngx_auto_config.h  ngx_auto_headers.h  ngx_modules.c  ngx_modules.o  src
[root@localhost objs]# ./nginx -v
nginx version: nginx/1.20.2
#查看版本
拷貝新版本至原安裝路徑
[root@localhost objs]# mv /apps/nginx/sbin/nginx /apps/nginx/sbin/nginx.bak
#將低版本的nginx主程序改名
[root@localhost objs]# cp nginx /apps/nginx/sbin/
#將新版本拷入原安裝路徑
[root@localhost objs]# cd /apps/nginx/sbin/
[root@localhost sbin]# ls
nginx  nginx.bak
[root@localhost nginx-1.20.2]# ll /apps/nginx/sbin/
總用量 15308
-rwxr-xr-x. 1 root  root  7896080 2月  20 21:15 nginx
-rwxr-xr-x. 1 nginx nginx 7774624 2月  20 20:52 nginx.bak
[root@localhost nginx-1.20.2]# nginx -v
nginx version: nginx/1.20.2
#nginx文件為新版本
[root@localhost sbin]# /apps/nginx/sbin/nginx -t
#檢查下語法問題

4 生成新進程

[root@localhost nginx-1.20.2]# kill -USR2 `cat /apps/nginx/logs/nginx.pid`
#發送 2 信號[root@localhost sbin]# pstree -p | grep nginx|-nginx(5073)-+-nginx(8717)-+-nginx(8718)|             |             `-nginx(8719)|             |-nginx(5623)|             `-nginx(5624)
[root@localhost sbin]#  ps aux | grep -v grep | grep nginx
root       5073  0.0  0.1  46344  2020 ?        Ss   22:33   0:00 nginx: master process /apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
nginx      5623  0.0  0.1  48856  2092 ?        S    22:37   0:00 nginx: worker process
nginx      5624  0.0  0.1  48856  2084 ?        S    22:37   0:00 nginx: worker process
root       8717  0.0  0.1  46220  3368 ?        S    22:43   0:00 nginx: master process /apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
nginx      8718  0.0  0.1  48756  1992 ?        S    22:43   0:00 nginx: worker process
nginx      8719  0.0  0.1  48756  1992 ?        S    22:43   0:00 nginx: worker process
#生成新的master8717
[root@localhost ~]# cd /apps/nginx/logs
[root@localhost logs]# ls
access.log  error.log  nginx.pid  nginx.pid.oldbin
[root@localhost logs]# cat nginx.pid
8717         #新的master進程
[root@localhost logs]# cat nginx.pid.oldbin
5073         #舊的master進程
192.168.11.4:(下載版本的虛擬機)
[root@localhost ~]# cd /apps/nginx/html
[root@localhost html]# ls
50x.html  index.html
#會有新老兩個進程
[root@localhost html]# dd if=/dev/zero of=/apps/nginx/html/m.img bs=1G count=10
#生成大文件
[root@localhost html]# ll -h
總用量 1.1G
-rw-r--r--. 1 root root 494 2月  21 18:22 50x.html
-rw-r--r--. 1 root root 612 2月  21 18:22 index.html
-rw-r--r--. 1 root root 10G 2月  21 19:44 m.img192.168.11.3:
[root@localhost data]# wget --limit-rate=1M http://192.168.11.4/m.img
#下載文件192.168.11.9:
[root@localhost html]# kill -WINCH `cat /apps/nginx/logs/nginx.pid.oldbin`
#優雅關閉舊進程的worker進程,此時舊進程不會再接收新的任務,后期可以直接退出192.168.11.3:
[root@localhost ~]# curl 192.168.11.4 -I
HTTP/1.1 200 OK
Server: nginx/1.20.2         
#新版本接替接收任務,即升級成功

引入新的升級安裝包:

3)nginx添加到系統服務?

我們使用yum安裝的服務時,一般啟動方式均為 :systemctl? 服務名? ?操作?。對于源碼安裝后的nginx并不能直接像這樣使用。所以我們可以通過腳本或則系統服務的更改來實現系統服務的啟動方式

方式一:腳本方式

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696478.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696478.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696478.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2月22日作業,按鍵中斷LED燈控制

1.使用GPIO子系統&#xff0c;編寫LED驅動&#xff0c;應用程序測試 mychrdev.c #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #include <linux/io.h> #include <linux/of.h> …

微軟Azure OpenAI的 GPT 接口使用小結

直接使用OpenAI的 GPT服務&#xff0c;在國內環境使用上會一些相關問題&#xff0c;微軟提供了OpenAI的服務&#xff0c;基本上可以滿足的相關的需要。下面提供一些簡單的使用操作&#xff0c;來讓你快速使用到 GPT 的服務。 前提&#xff1a;注冊Azure的賬戶&#xff0c;并綁…

OpenCV中的normalize函數以及NORM_MINMAX、NORM_INF、NORM_L1、NORM_L2具體應用介紹

在OpenCV中&#xff0c;normalize函數用于將圖像或矩陣的值規范化到一個特定的范圍內。這在圖像處理中非常有用&#xff0c;比如在調整圖像的對比度、準備數據進行機器學習處理時。規范化可以提高不同圖像之間的可比性&#xff0c;或是為了滿足特定算法對數據范圍的要求。 nor…

數的反碼和補碼表示

2.反碼 反碼的表示方法是: 正數的反碼是其本身負數的反碼是在其原碼的基礎上,符號位不變&#xff0c;其余各個位取反 [1][000000011原[000000011反[-1][10000001]原[11111110]反 3.補碼 補碼的表示方法是: 正數的補碼就是其本身 負數的補碼是在其原碼的基礎上,符號位不變,其余各…

36、IO進程線程/進程和線程之間的通信練習

一、使用有名管道完成兩個進程的相互通信(提示&#xff1a;可以使用多進程或多線程完成)。 代碼1&#xff1a;創建兩個有名管道文件 #include<myhead.h>int main(int argc, const char *argv[]) {if(mkfifo("./mingtohua",0664)-1)//創建小明向小華發信息的管…

Stable Diffusion 繪畫入門教程(webui)-ControlNet(深度Depth)

上篇文章介紹了線稿約束&#xff0c;這篇文章介紹下深度Depth 文章目錄 一、選大模型二、寫提示詞三、基礎參數設置四、啟用ControlNet 顧名思義&#xff0c;就是把原圖預處理為深度圖&#xff0c;而深度圖可以區分出圖像中各元素的遠近關系&#xff0c;那么啥事深度圖&#xf…

c/c++ | 字符串函數總結 | 為什么總喜歡糾結sizeof 和strlen 呢?

其實時間長了&#xff0c;稍微研究后&#xff0c;再來品味&#xff0c;別有一番滋味 總是看著混亂&#xff0c;但是靜下來看&#xff0c;還是能琢磨透的&#xff0c;只是看著復雜&#xff0c;本質是兩套風格&#xff0c;然后又要有交集&#xff0c;所以就看起來復雜 // 首先字符…

目標管理SMART原則

SMART原則是一種目標管理方法&#xff0c;它包括以下五個要素&#xff1a; 具體性&#xff08;Specific&#xff09;&#xff1a;目標應該是明確的&#xff0c;具體地說明要達成的行為標準。例如&#xff0c;一個目標可能描述為“減少客戶投訴率”&#xff0c;而不是“增強客戶…

本機防攻擊簡介

定義 在網絡中&#xff0c;存在著大量針對CPU&#xff08;Central Processing Unit&#xff09;的惡意攻擊報文以及需要正常上送CPU的各類報文。針對CPU的惡意攻擊報文會導致CPU長時間繁忙的處理攻擊報文&#xff0c;從而引發其他業務的中斷甚至系統的中斷&#xff1b;大量正常…

惠爾頓 網絡安全審計系統 任意文件讀取漏洞復現

0x01 產品簡介 惠爾頓網絡安全審計產品致力于滿足軍工四證、軍工保密室建設、國家涉密網絡建設的審計要求&#xff0c;規范網絡行為&#xff0c;滿足國家的規范&#xff1b;支持1-3線路的internet接入、1-3對網橋&#xff1b;含強大的上網行為管理、審計、監控模塊&#xff1b…

【2024軟件測試面試必會技能】Requests(5):Requests模塊_設置代理

設置代理 代理&#xff08;英語&#xff1a;Proxy&#xff09;&#xff0c;也稱網絡代理&#xff0c;是一種特殊的網絡服務&#xff0c;英文全稱是&#xff08;Proxy Server&#xff09;&#xff0c;其功 能就是代理網絡用戶去取得網絡信息。形象的說&#xff1a;它是網絡信息…

正向代理和反向代理釋義

代理 客戶端 代理 服務端 對客戶端而言&#xff0c;代理是服務端&#xff1b;對服務端而言&#xff0c;代理是客戶端。這個很好理解吧&#xff0c;以祖孫三代關系為例&#xff0c;爸爸在兒子面前是爸爸&#xff0c;爸爸在爺爺面前是兒子。 無論是正向代理還是反向代理&#…

Android14 InputManager-ANR原理

目標窗口查找時&#xff0c;作為派發目標的窗口必須已經準備好接收新的輸入事件&#xff0c;否則判定窗口處于未響應狀態&#xff0c;終止事件的派發過程&#xff0c;并在一段時間后再試。倘若5s后窗口仍然未準備好接收輸入事件&#xff0c;將導致ANR。直接引發ANR的原因有很多…

操作系統學習記錄

系統篇 內核 應用和底層硬件&#xff08;CPU、內存、硬盤等&#xff09;的連接橋梁。 用戶態和內核態 CPU和進程可以在兩種態下運行。 內核態可以直接訪問所有硬件資源&#xff0c;用戶態需要通過“系統調用”陷入到內核態才能否則只能訪問用戶空間地址的內存&#xff08;虛…

P8630 [藍橋杯 2015 國 B] 密文搜索

P8630 [藍橋杯 2015 國 B] 密文搜索 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)https://www.luogu.com.cn/problem/P8630 題目分析 基本上是hash的板子&#xff0c;但實際上對于密碼串&#xff0c;只要判斷主串中任意連續的八個位置是否存在密碼串即可&#xff1b;那么我們…

PHP學習筆記1——html標簽以及頭部元素頁面布局

html是一種超文本標識符號&#xff0c;用來在網頁中指定顯示頁面格式顯示 基本格式 <!doctype html> <html><head><title></title> </head><body> </body></html> 包含聲明&#xff0c;框架html&#xff0c;頭部head&a…

怎么把公眾號文章鏈接做成二維碼?掃碼查看公眾號推文的方法

公眾號是現在給用戶分享內容的一種方式&#xff0c;通過輸出優質的公眾號文章內容來為關注者提供信息和內容。當我們發布公眾號文章后&#xff0c;有些情況下會需要將公眾號內容生成二維碼之后&#xff0c;印刷到傳單、展板上來顯示&#xff0c;那么如何將公眾號的文章鏈接轉二…

Commonjs 和 Es Module詳解

一 前言 今天我們來深度分析一下 Commonjs 和 Es Module&#xff0c;希望通過本文的學習&#xff0c;能夠讓大家徹底明白 Commonjs 和 Es Module 原理&#xff0c;能夠一次性搞定面試中遇到的大部分有關 Commonjs 和 Es Module 的問題。 帶上疑問開始今天的分析&#xff1a; …

數字化轉型導師堅鵬:城市數字化轉型頂層規劃方法

城市數字化轉型頂層規劃方法 課程背景&#xff1a; 很多城市存在以下問題&#xff1a; 不知道如何系統地開展數字化轉型工作&#xff1f; 不清楚如何科學地制定數字化轉型戰略&#xff1f; 不知道如何高效地實施數字化轉型戰略&#xff1f; 課程特色&#xff1a; 有…

基于SpringBoot的在線拍賣系統設計與實現(源碼+調試+LW+PPT)

項目描述 臨近學期結束&#xff0c;還是畢業設計&#xff0c;你還在做java程序網絡編程&#xff0c;期末作業&#xff0c;老師的作業要求覺得大了嗎?不知道畢業設計該怎么辦?網頁功能的數量是否太多?沒有合適的類型或系統?等等。今天給大家介紹一篇基于SpringBoot的在線拍…