Linux面試題總結

来源:https://www.cnblogs.com/fengdejiyixx/archive/2019/08/26/11414657.html
-Advertisement-
Play Games

1、簡述Apache兩種工作模式,以及它們之間的區別。答:(1)prefork MPM使用多個子進程,每個子進程只有一個線程來處理一個http請求,直到這個TCP連接被釋放。root主進程在最初建立startserver個子進程後,等待1秒鐘,創建2個進程,再等待1秒鐘,再創建4個進程,直到滿足最小 ...


1、簡述Apache兩種工作模式,以及它們之間的區別。
答:(1)prefork MPM使用多個子進程,每個子進程只有一個線程來處理一個http請求,直到這個TCP連接被釋放。root主進程在最初建立startserver個子進程後,等待1秒鐘,創建2個進程,再等待1秒鐘,再創建4個進程,直到滿足最小空閑進程的數量,這就是預派生的由來。這種模式可以不必在請求到來時再產生新的進程,從而提高了訪問效率。

(2)worker模式使用多個子進程,每個子進程負責接收請求,該進程下多個線程來處理請求。由於線程之間共用地址空間,所以記憶體消耗小,而且資源利用率高,但是一個線程的崩潰會牽連到其他線程,所以一個程式在運行時必須被系統識別為每個線程都是安全的。

(3)woker和prefork的切換,cd /usr/sbin ,mv httpd httpd.prefork,mv httpd.worker httpd,service http restart

2、用iptables添加一個規則允許192.168.0.123訪問本機3306埠

iptables -I INPUT -p tcp -s 192.168.0.123 -d 127.0.0.1 --dport 3306 -j ACCEPT

3、如何對一臺Linux伺服器進行系統性能調優,列舉出參數。

答:主機的存活狀態、系統負載值、CPU的使用率、磁碟IO量,swap進出量,網路流量,資料庫的主從複製狀態、LVS+keepalived的VIP。

4, DNS伺服器的工作原理。

答:首先客戶機的應用進程將待解析的功能變數名稱放在DNS請求報文中,以UDP用戶數據報方式發給本地功能變數名稱伺服器(使用UDP是因為它無連接,開銷小),本地功能變數名稱伺服器查看緩存是否對對應功能變數名稱和IP地址的映射關係,如果有,直接返回IP地址給主機,如果沒有,就將向轉發器發出查詢請求,轉發器是網路上的DNS伺服器,目的是提高解析效率,如果連轉發器也沒有的話,就進行遞歸解析,轉發報文從根功能變數名稱伺服器-頂級功能變數名稱伺服器-二級功能變數名稱伺服器等一直找到完整的功能變數名稱後,進行反向回溯給交本地功能變數名稱伺服器,緩存後再由本地功能變數名稱伺服器將對應的IP地址放在應答報文中,從而主機得到IP地址即可通信。

5、修改第一塊網卡的路徑是什麼。

/etc/sysconfig/network-scripts/ifcfg-eth 0

 

6、 簡述I節點是什麼,並說出Linux 文件系統通過i 節點把文件的邏輯結構和物理結構轉換的工作過程?

答:I節點是一個多級索引的數據結構,它的基本思想是給每個文件賦予一張成為I節點的小表,在這張小表中列出了文件屬性以及文件各數據塊中在磁碟中的地址。那麼它的工作工程:當需要訪問文件時,內核查看文件目錄項找到對象的文件名和I節點號,那麼再通過這個I節點號來找磁碟的地址,實現邏輯結構和物理結構的轉換,返回給數據給用戶顯示。



7、使用shell,建立classl用戶組,再批量建立stu 1--stu30的用戶,並指定用戶組為

classl。

答:vi yonghu.sh

 

#!/bin/bash

 

groupadd class1

for((i=1;i<=30;i=i+1))

do

useradd stu$i -G class1  

done

8、日常監控都需要監控哪些?

1)硬體:CPU:cat /proc/cpuinfo,記憶體: cat /proc/meminfo,硬碟:fdisk -l(dmesg是用來查看硬體信息的)

2)系統:負載:cat /proc/loadavg, uptime查看實時load average、swap,虛擬記憶體:vmstat(參數一s;  2 4),vmstat 5 5(表示在5秒時間內進行5次採樣)。

系統日誌:tail -f /var/log/messages

logwatch一print一range Today一service SSHD一service pam_unix

3)網路:Host_ Alive,Ping,埠,連接

 

9、如何將本地80埠的請求轉發到8080埠,當前主機IP為192.168.16.1,其中本地網卡eth0。

答:#iptables -t nat -A PREROUTING -p tcp -i eth0 -d 192.168.16.1--dport

80 -j REDIRECT --to-port 8080

10、包過濾防火牆與代理應用防火牆有什麼區別,能列舉幾種相應的產品嗎?

答:①包過濾防火牆工作在網路協議IP層,它只對IP包的源地址、目標地址及相應埠進行處理,因此速度比較快,能夠處理的併發連接比較多,缺點是對應用層的攻擊無能為力。②應用代理防火牆將收到的IP包解封裝成高層協議的通訊數據,比如http連接信息,因此能夠對基於高層協議的攻擊進行攔截。缺點是處理速度比較慢,能夠處理的併發數比較少。事實上還有狀態監測防火牆(ip_conntrack):狀態監測防火牆是在當今企業中部署最為常見的。他們建立在基於防火牆保持每個活動連接狀態信息的包過濾上。當有一個新的包到達防火牆時,過濾機制首先檢查這個包是否是當前活動連接(前面已經授權過的)的一部分。只有當這個包沒有出現在當前的活動連接列表裡時,防火牆才會以它的規則庫評估這個包。狀態監測防火牆之所以如此常見是因為:它們是效率最高、性價比最高的防火牆,並且廣泛適用於保護網路的邊界。ASA、PIX、firewall

11、iptables是否支持time時間控制用戶行為,如有請寫出具體操作步驟

iptables -A INPUT -p ICMP --icmp-type 8 -m time --timestart 00:00:00 --timestop 23:59:59 --weekdays Mon -j DROP

限制在每個星期一的0點0分0秒到23點59分59秒這個時間段內,所有icmp協議報文的應答都會拒絕,

12、Linux常見打包工具並寫相應解壓縮參數?

答:①用tar調用bzip2將file1,file2,file3生成壓縮包

        tar -jcvf file.tar.bz2 file{1,2,3}  解壓:tar -jxvf file.tar.bz2

 ②用tar調用gzip將file1,file2,file3生成壓縮包

        tar -zcvf file.tar.gz file{1,2,3}  解壓:tar -zxvf file.tar.gz

③.用tar調用xz將file1,file2,file3生成壓縮包

        tar -Jcvf file.tar.xz file{1,2,3} 解壓:tar -Jxvf file.tar.xz

13、當用戶在瀏覽器當中輸入一個網站,說說電腦對dns解釋經過那些流程?註:本地dns還沒有緩存。

答:a.用戶輸入網址到瀏覽器

b.瀏覽器發出DNS請求報文

c.電腦首先查詢本機HOSTS文件,看是否存在,存在直接返回結果,不存在,繼續轉發請求報文

d.電腦按照本地DNS的順序,向合法dns伺服器查詢IP結果,

e.合法dns返回dns結果給本地dns,管理該域的本地dns伺服器緩存本結果,直到緩存時間過期,才再次查詢此結果。

14、DNS什麼使用TCP,什麼時候使用UDP,為什麼這麼設計?

答:DNS在區域複製的使用TCP,因為主功能變數名稱伺服器傳輸數據到輔助功能變數名稱伺服器,必須得保證我們傳輸的數據是可靠的,是沒有差錯的;那麼在瀏覽器發出DNS請求報文的時候使用UDP,原因是為了減少它的開銷,無連接,把這個數據包扔了就走,什麼都不用管。

15、請解釋FTP控制連接的工作模式?

答:①在主動模式下,FTP客戶端隨機開啟一個大於1024的埠N向伺服器的TCP 21號埠發起連接,然後開放N+1號埠進行監聽,並向伺服器發出PORT N+1命令(用來告訴伺服器連接它的哪個新埠)。伺服器接收到命令後,會用其本地的FTP數據埠(通常是20)來連接客戶端指定的埠N+1,進行數據傳輸。

②在被動模式下,FTP客戶端隨機開啟一個大於1024的埠N向伺服器的21號埠發起連接,同時會開啟N+1號埠。然後向伺服器發送PASV命令,通知伺服器自己處於被動模式(此埠是空閑的、可用的)。伺服器收到命令後,會開放一個大於1024的埠P進行監聽,然後用PORT命令通知客戶端,自己的數據埠是P。客戶端收到命令後,會通過N+1號埠連接伺服器的埠P,然後在兩個埠之間進行數據傳輸。

總的來說,主動模式的FTP是指伺服器主動連接客戶端的數據埠,被動模式的FTP是指伺服器被動地等待客戶端連接自己的數據埠。

附:傳輸模式是二進位模式和ASCII文本模式,常用ftp命令有get、put、ls、dir

16、vi file    

50 16 * * * rm -r /abc/* #每天下午4:40刪除

55 17 * * * umount /dev/hdc #卸載CDROM

0 8-18/1 * * * cut -f 1 /xyz/x1 >> /backup/bak01.txt

#每天的8:00-18:00時間段內每隔1小時,都會截取/xyz/x1的第一列(每行第一個域)的數據以追加的方式放入到/backup/bak01.txt文件中

50 5 * * 1 tar -zcvf backup.tar.gz /data 每周星期一的下午5:50將/data目錄下所有文件打包並壓縮

root@yhc#: crontab file #這樣也能進行定時任務而不用edit

17、linux啟動過程簡述:載入BIOS、讀取MBR、Boot Loader、載入內核、/sbin/init進程會讀取/etc/inittab文件,並依據此文件來進行初始化工作、init進程執行rc.sysinit(載入一系列配置信息)、啟動內核模塊、執行不同運行級別的腳本程式、執行/etc/rc.d/rc.local(用來用戶自定義啟動信息)、執行/bin/login程式,進入登錄狀態。

 啟動第一步--載入BIOS

當你打開電腦電源,電腦會首先載入BIOS信息,BIOS信息是如此的重要,以至於電腦必須在最開始就找到它。這是因為BIOS中包含了CPU的相關信息、設備啟動順序信息、硬碟信息、記憶體信息、時鐘信息、PnP特性等等。在此之後,電腦心裡就有譜了,知道應該去讀取哪個硬體設備了。

啟動第二步--讀取MBR

眾所周知,硬碟上第0磁軌第一個扇區被稱為MBR,也就是Master Boot Record,即主引導記錄,它的大小是512位元組,別看地方不大,可裡面卻存放了預啟動信息、分區表信息。

系統找到BIOS所指定的硬碟的MBR後,就會將其複製到0×7c00地址所在的物理記憶體中。其實被覆制到物理記憶體的內容就是Boot Loader,而具體到你的電腦,那就是lilo或者grub了。

啟動第三步--Boot Loader

Boot Loader 就是在操作系統內核運行之前運行的一段小程式。通過這段小程式,我們可以初始化硬體設備、建立記憶體空間的映射圖,從而將系統的軟硬體環境帶到一個合適的狀態,以便為最終調用操作系統內核做好一切準備。

Boot Loader有若幹種,其中Grub、Lilo和spfdisk是常見的Loader。

我們以Grub為例來講解吧,畢竟用lilo和spfdisk的人並不多。

系統讀取記憶體中的grub配置信息(一般為menu.lst或grub.lst),並依照此配置信息來啟動不同的操作系統。

啟動第四步--載入內核

根據grub設定的內核映像所在路徑,系統讀取記憶體映像,併進行解壓縮操作。此時,屏幕一般會輸出“Uncompressing Linux”的提示。當解壓縮內核完成後,屏幕輸出“OK, booting the kernel”。

系統將解壓後的內核放置在記憶體之中,並調用start_kernel()函數來啟動一系列的初始化函數並初始化各種設備,完成Linux核心環境的建立。至此,Linux內核已經建立起來了,基於Linux的程式應該可以正常運行了。

啟動第五步--用戶層init依據inittab文件來設定運行等級

內核被載入後,第一個運行的程式便是/sbin/init,該文件會讀取/etc/inittab文件,並依據此文件來進行初始化工作。

其實/etc/inittab文件最主要的作用就是設定Linux的運行等級,其設定形式是“:id:5:initdefault:”,這就表明Linux需要運行在等級5上。Linux的運行等級設定如下:

0:關機

1:單用戶模式

2:無網路支持的多用戶模式

3:有網路支持的多用戶模式

4:保留,未使用

5:有網路支持有X-Window支持的多用戶模式

6:重新引導系統,即重啟

關於/etc/inittab文件的學問,其實還有很多,在後序文章中設計到的,賣個關子,敬請期待,呵呵

啟動第六步--init進程執行rc.sysinit

在設定了運行等級後,Linux系統執行的第一個用戶層文件就是/etc/rc.d/rc.sysinit腳本程式,它做的工作非常多,包括設定PATH、設定網路配置(/etc/sysconfig/network)、啟動swap分區、設定/proc等等。如果你有興趣,可以到/etc/rc.d中查看一下rc.sysinit文件,裡面的腳本夠你看幾天的

啟動第七步--啟動內核模塊

具體是依據/etc/modules.conf文件或/etc/modules.d目錄下的文件來裝載內核模塊。

啟動第八步--執行不同運行級別的腳本程式

根據運行級別的不同,系統會運行rc0.d到rc6.d中的相應的腳本程式,來完成相應的初始化工作和啟動相應的服務。

啟動第九步--執行/etc/rc.d/rc.local

你如果打開了此文件,裡面有一句話,讀過之後,你就會對此命令的作用一目瞭然:

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don’t

# want to do the full Sys V style init stuff.

rc.local就是在一切初始化工作後,Linux留給用戶進行個性化的地方。你可以把你想設置和啟動的東西放到這裡。

啟動第十步--執行/bin/login程式,進入登錄狀態

此時,系統已經進入到了等待用戶輸入username和password的時候了,你已經可以用自己的帳號登入系統了。:

18、解釋I節點在文件系統中的作用?

答:I節點一種邏輯結構和物理結構進行轉換的多級索引文件結構。在Linux文件系統中,是以塊為單位存儲信息的,為了找到某個文件在存儲空間的位置,用i節點對一個文件進行索引。I節點描述了文件屬性和各數據塊在磁碟上位置的一張小表。文件屬性包括文件大小、創建時間、最後訪問時間、存取許可權等保護信息。但是i節點是不保存文件名的。文件名是保存在一個文件目錄項中。每一個目錄項中都包含了文件名和i節點。

19、 什麼是符號鏈接,什麼是硬鏈接?符號鏈接與硬鏈接的區別是什麼?

答:鏈接分硬鏈接和符號鏈接。符號鏈接可以建立對於文件和目錄的鏈接。符號鏈接可以跨磁碟分區,符號鏈接的文件類型位是I,鏈接文件具有新的i節點;硬鏈接不可以跨磁碟分區。它只能建立對文件的鏈接,硬鏈接的文件類型位是-號,且硬鏈接文件的i節點同被鏈接文件的i節點相同。

20、簡述進程的啟動、終止的方式以及如何進行進程的査看。

在 Linux中啟動一個進程有手工啟動和調度啟動兩種方式: (1) 手工啟動

用戶在輸入端發出命令,直接啟動一個進程的啟動方式。可以分為:

①前臺啟動:直接在SHELL中輸入命令進行啟動。

②後臺啟動:啟動一個目前並不緊急的進程,如列印進程。

(2) 調度啟動

系統管理員根據系統資源和進程占用資源的情況,事先進行調度安排,指定任務運行的時間和場合,到時候系統會自動完成該任務。

經常使用的進程調度命令為:at、batch、crontab。進程查看ps -aux | grep httpd,進程終止kill-9 進程號。

21、Linux硬碟分了多少個塊?

答:linux硬碟組織方式為:引導區、超級塊、索引結點、數據塊、目錄塊;其中超級塊中包含了關於該硬碟或分區上的文件系統的整體信息,如文件系統的大小等,超級決包含了i節點表和空閑塊表等的文件系統信息;超級塊後面的數據結構是索引結點,包含了針對某一個具體文件的幾乎全部信息,如文件的存取權、所有者、大小、建立時間以及對應的目錄塊和數據塊等:數據塊是真正存儲文件內蓉的位置。但是索引結點中不包括文件的名字,文件名是放在目錄塊里的。目錄塊里包含有文件的名字以及此文件的索引結點編號。

22、NTFS與FAT的區別?

答:NTFS的特性相比FAT有很多優點。①提供文件和文件夾的安全性,支持加密和設置許可權②高可靠性,NTFS是一種可恢復的文件系統,並且支持壞簇映射,檢測出現錯誤的磁碟區域 ,標記並將數據存儲在其他區域③NTFS支持磁碟配額管理,另外支持對文件、文件夾以及分區的壓縮。④NTFS採用了更小的簇,4KB左右,避免了對磁碟空間的;浪費。那麼FAT記錄文件分配表的格式,缺點是僅用於單用戶系統,而且沒有防止碎片的措施,並且易受損害。

23、http://a.domain.com/1.html http://b.domain.com/1.html

 http://c.domain.com/1.html   http://a.domain.com/2.html

 http://b.domain.com/2.html  http://a.domain.com/3.html

統計網站出現的次數,並按數字由大到小進行排列?

答:awk ‘BEGIN{FS=”/”}{arr[$3]++}END{for (domain in arr){print arr[domain],domain}}’| sort -r

FS(Field separator)字元域分隔符表示操作的時候以什麼為分割符,$3就是功能變數名稱,-r是按自然數從大到小反向排序。

輸出如下:

3 a.domain.com

2 b.domain.com

1 c.domain.com

24、如何用mysql 命令進行備份和恢復?,以test庫為例

答:mysqldump備份:mysqldump -u root -p 123456 -h 127.0.0.1 test > testbackup.sql   // -p是password,前面都是連著寫的,輸出資料庫到test.sql文件中

mysqldump還原:mysql -u root -p 123456  -h 127.0.0.1  test< testbackup.sql  //將test.sql文件輸入到mysql數據系統中,進行恢復,恢復的時候直接加mysql,不用dump。直接跟資料庫名稱即可

25、如何掛載windows共用的目錄?

答:mount -t cifs -o username=administrator,password=admin //192.168.1.1/share/ /windows/ #optional非強制的,可選的,CIFS是公共的或開放的SMB協議版本,Common Internet File System通用網路文件系統,並由Microsoft使用,/windows/是我們的掛載點。

26、源目節點的網路是互通的,最少列出五種傳輸文件的服務

答:NFS、FTP、Samba、通過雲盤服務訪問別人共用的文件相當於就使用http協議、rsync(remote synchronize)遠程同步伺服器。

27、請介紹Bind的智能DNS的原理?

答:智能DNS的功能是可以智能的判斷訪問網站的用戶,然後根據不同的訪問者把功能變數名稱分別解析成不同的地址。如訪問者是網通用戶,智能DNS伺服器會把功能變數名稱對應的網通IP地址解析給這個訪問者。如果電信用戶,智能DNS伺服器會把功能變數名稱對應的電信IP地址解析給這個訪問者。智能就體現在這兒。那麼基本的原理就是在配置文件中設定了 view,在每個view 都有客戶端的本地DNS負責的IP 地址段,bind 伺服器根據請求解析客戶端的本地DNS,匹配不同的view,再根據該view 的配置,找到相應的配置文件進行查詢,將解析的IP地址結果返回給請求的客戶端,相當於一個二級索引結構。

28、如果得到隨機的字串,長度和字串中出現的字元表可定義,並將字串倒序顯示,如

把0123456789 作為基準的字串字元表,產生一個6 位的字串642031,列印出的字串為

130246,使用awk編程。

答:awk -v count=6 'BEGIN

{srand( );str="0123456789";len=length(str);for(i=count;i>0;i--)

marry[i]=substr(str,int(rand()*len),1);for(i=count;i>0;i--)

printf("%c",marry[i]);printf("\n");for

(i=0;i<=count;i++) printf("%c",marry[i]);printf("\n")}'

838705

507838

29、如何查看當前Linux 系統的狀態,如CPU 使用,記憶體使用,負載情況等.

答:Linux 系統中/proc是個偽文件目錄,不占用系統空間,及時的反應出記憶體現在使用的進程情況......其中許多文件都保存系統運行狀態和相關信息

對於/proc中文件可使用文件查看命令瀏覽cat其內容,文件中包含系統特定信息:

cpuinfo 主機CPU 信息

filesystems 文件系統信息

meminfo 主機記憶體信息

version Linux 記憶體版本信息

diskstatus 磁碟負載情況

另外top 命令可以動態的顯示伺服器健康狀況的使用情況. free 命令呢可以查看真實使用的記憶體 一般用free -m 。使用lsof (list open files)是一個列出當前系統打開文件的工具使用lsof -i:8080, -i 用以顯示符合條件的進程情況

ps -aux 可以查看詳細的每個進程的使用狀況,還有uptime查看負載命令

dmesg 也是常用來查看系統性能及硬體的命令

30、解釋top命令和vmstat命令

答:top命令:查看CPU狀態、記憶體狀態、進程狀態、交換分區狀態,系統啟動時間以及負載情況。vmstat 2 1現給定時間間隔的伺服器的狀態值,包括伺服器的CPU使用率,記憶體使用,虛擬記憶體交換情況,IO讀寫情況,2表示每個兩秒採集一次伺服器狀態,1表示只採集一次。如果不加1就一直採集。

 

vmstat 5 6

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 3029876 199616 690980 0 0 0 2 3 2 0 0 100 0 0

31、用sed命令和cat將test.txt所有回車替換為空格?

答:cat test.txt | tr "\n" " "   ;sed 's/\n/ /g' test.txt; route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 ;

 sed '1c Hi' ab                #第一行代替為Hi

 sed '1,2c Hi' ab             #第一行到第二行代替為Hi

 sed s/\'//g  替換單引號為空

格式:sed 's/要替換的字元串/新的字元串/g'   (要替換的字元串可以用正則表達式)

32、匹配ipv4的正則表達式?

答:?代表匹配前面的子表達式零次或一次,,{n},n是一個非負整數,匹配確定的n次,2[0-4]/d取值範圍是200-249,/d代表0-9的十進位,[01]代表0或1中的一個。

250——255,用正則可以寫成:25[0-5];

200——249可以這樣寫:2[0-4]/d;

0——199有些麻煩,不過可以繼續分拆,這樣寫起來更加簡單明瞭,0——9、10——99、100——199,這樣分開考慮,就得到了三個式子:/d、/d/d(有冗餘)、1/d/d,這三個式子我們可以像合併同類項一樣把它們合併到一起:[01]?/d?/d

這樣,一段地址的表達式就是:2[0-4]/d |25[0-5]|  [01]?/d?/d意思就是這三大類地址選一個即可

(2[0-4][0-9]|25[0-5]|[0-1]?[0-9]?[0-9].) 這是一個IP地址加上小點的表達式,邏輯或語句代表前面可有可不有,只要有一個就算成功。

匹配這樣的地址有3個欄位,最後一個欄位不加小點

(2[0-4][0-9]|25[0-5]|[0-1]?[0-9]?[0-9].) {3}2[0-4][0-9]|25[0-5]|[0-1]?[0-9]?[0-9]

33、prefork和worker模式的切換?

答:1.將當前的prefork模式啟動文件改名
mv httpd httpd.prefork
2.將worker模式的啟動文件改名
mv httpd.worker httpd
3.修改Apache配置文件
vi /usr/local/apache2/conf/extra/httpd-mpm.conf
找到裡邊的如下一段,可適當修改負載等參數:
<IfModule mpm_worker_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
4.重新啟動服務
/usr/local/apache2/bin/apachectl restart
即可換成worker方式啟動apache2

34、請寫出apache2.X版本的兩種工作模式,以及各自工作原理。如何查看apache當前所支持的模塊,並且查看是工作在哪種模式下? 

答案:prefork的工作原理是:用進程的一個線程響應用戶請求,控制進程在最初建立“StartServers”個子進程後,為了滿足MinSpareServers設置的需要創建一個進程,等待一秒鐘,繼續創建兩個,再等待一秒鐘,繼續創建四個……如此按指數級增加創建的進程數,最多達到每秒32個,直到滿足MinSpareServers設置的值為止。這種預派生的模式可以不必在請求到來時再產生新的進程,從而減小了系統開銷以增加性能。 worker是一個進程下多個線程來響應多個用戶請求的MPM。由於共用系統資源,所以記憶體消耗小,但是一個線程崩潰會牽連當前所有線程。可以通過命令httpd -l,可以查看apache當前的模塊,如果帶有worker.c就是工作在worker模式下,如果有prefork.c就是工作在prefork的模式下。

35、如何看到用戶登錄日誌?

答:more /var/log/secure是記錄了所有用戶登陸信息 ,who /var/log/wtmp可以幹了些什麼?root賬戶下輸入su - username,切換到username下輸入history,能看到這個用戶歷史命令,預設最近的1000條。還可以用last命令顯示自從文件第一次創建以來登錄過的用戶

35、Linux中utmp,wtmp,lastlog,messages各文件的作用

1、有關當前登錄用戶的信息記錄在文件utmp中;======who命令2、登錄進入和退出紀錄在文件wtmp中;========w命令3、最後一次登錄文件可以用lastlog命令察看;4、messages======從syslog中記錄信息

36、Apache nginx lighttpd 各優缺點,適合那些場合?

答:一般來說nginx主要用於負載均衡, 他對於處理靜態頁面比較好,其次,占用記憶體低。lighttpd存在對Flash streaming和對fastcgi的支持,占用記憶體也比較低,但是不如nginx那麼穩定,apache龐然大物一個,模塊化集成,功能強大,比較穩定。場合:Apache 後臺伺服器(主要處理php及一些動態請求 ),Nginx  前端伺服器(利用它占用系統資源少得優勢來處理靜態頁面大量請求),Lighttpd 圖片伺服器

37、RAID0,1,5,0+1的含義?

答:raid0 就是把多個(最少2個)硬碟合併成1個邏輯盤使用,數據讀寫時對各硬碟同時操作,不同硬碟寫入不同數據,速度快。
 raid1就是同時對2個硬碟讀寫(同樣的數據)。強調數據的安全性。比較浪費。
 raid5也是把多個(最少3個)硬碟合併成1個邏輯盤使用,數據讀寫時會建立奇偶校驗信息,並且奇偶校驗信息和相對應的數據分別存儲於不同的磁碟上。當RAID5的一個磁碟數據發生損壞後,利用剩下的數據和相應的奇偶校驗信息去恢復被損壞的數據。相當於raid0和raid1的綜合。
 raid10就是raid1+raid0,比較適合速度要求高,又要完全容錯,最少需要4塊硬碟(註意:做raid10時要先作RAID1,再把數個RAID1做成RAID0,這樣比先做raid0,再做raid1有更高的可靠性)

38、dmesg命令中看到ip_conntrack:table full,dropping packet,如何解決?

答:原因是一些TCP連接從來就沒有釋放過,所以導致這種問題。首先 cat /proc/sys/net/ipv4/ip_conntrack_max(1): 加大ip_conntrack_max 值:

echo "81920" > /proc/sys/net/ipv4/ip_conntrack_max,這個效果是暫時的, 如果要每次開機都使用新的數值, 需將上述指令寫入 /etc/rc.d/rc.local

(2)降低 ip_conntrack timeout 時間,

echo "600" > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established

39、常用命令實例:

(1)列印出含有空行的行號:grep -n ^$ b.bash |awk 'BEGIN{FS=":"}{print$1}'

其中分隔符等價於awk -F ":"  '{print $1}’

(2)列印文件的第2行到第5行:sed -n '2,5p' b.bash

(3)把文件中第10行的sum改為yhc:sed '10s/sum/yhc/g'  b.bash

(4)在匹配式樣“done”的行之後插入一空行:sed  '/done/G' b.bash (G附加暫存空間到模式空間)

(5)在文件第10行首添加5個空格:sed  '10s/^/     /g'   b.bash

(6)從a.log文件中提取包含“warning”或者“fatal”,同時不包含“IGNOR”的行,然後提取“:”分割的第五個欄位

 egrep 'WARNING|FATAL' a.log | egrep -v 'IGNOR' | awk -F ":" '{print $5}'

 

40、在Shell環境下,如何查看遠程Linux系統運行了多少時間?

答:ssh user@被監控主機ip "uptime"

在每個月的第一天備份並壓縮/etc目錄下的所有內容,存放在/root/backup目錄下,文件名為yymmdd_etc,shell程式fileback.sh存放在/usr/bin目錄下?

 #!/bin/bash

   filename=`date +%y%m%d`_etc.tar.gz    #date +%y%m%d直接就能輸出160612

   cd /etc

   tar -zcvf $filename *

   mv $filename /root/backup/   #必須先要創建這個文件才行。

#echo * * 1 * * root ./fileback.sh & >>/etc/crontab   

41、介紹下LVS負載模式和調度演算法?

答:(1)DNAT模式:畫圖說明

(2)隧道模式:調度器在數據報文的頭部再添加一個IP地址的,類似於在VPN中, 公有IP封裝在外,私有IP在內,RS收到後再進行解封裝,這種情況主要用於遠程站點,比如說有台伺服器部署在美國,他要求調度器和RS都要支持隧道協議。

(3)DR直接路由模式,要求RS和調度器共用一個VIP,並且他們的真實IP都處於同一個網段,以便發出ARP請求,在調度器的出介面將目的MAC地址替換為RS的目的MAC地址並轉發出去,RS收到數據包處理後,直接返回客戶端,不經過調度器了。

調度演算法分為靜態調度和動態調度,比如輪詢和加權最少連接。

42、linux上進程有5種狀態:
1. 運行(正在運行或在運行隊列中等待)
2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信號)
3. 不可中斷(收到信號不喚醒和不可運行, 進程必須等待直到有中斷發生)
4. 僵死(進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用後釋放)
5. 停止(進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號後停止運行運行)

43、30道面試題

(1)、查看http的併發連接數與其TCP連接狀態

netstat -n | awk '/^tcp/ {++b[$NF]} END {for(a in b) print a, b[a]}'

(2)、linux如何掛載windows的共用文件夾

mount -t cifs -o username=WindowsLogin,password=passwordinWindows//16.187.190.50/test    /mnt/   (-o optional 可選的)

(3)統計出apache的access.log中訪問量最多的5個IP:

 cat access_log | awk  '{print $1}' | sort | uniq -c | sort -n -r | head -5  

(uniq命令可以去除排序過的文件中的重覆行,-c  :進行計數,sort -n,你有沒有遇到過10比2小的情況。我反正遇到過。出現這種情況是由於排序程式將這些數字按字元來排序了,排序程式會先比較1和2,顯然1小,所以就將10放在2前面。我們如果想改變這種現狀,就要使用-n選項,來告訴sort,“要以數值來排序”,-r代表降序排序)

(4)ps aux 中的VSZ代表什麼意思,RSS代表什麼意思

VSZ:虛擬記憶體集,進程占用的虛擬記憶體空間

RSS:物理記憶體集,進程占用實際物理記憶體空間

a 顯示所有與終端相關的進程,由終端發起的.
x 顯示所有與終端無關的進程.
u 顯示用戶導向的用戶列表.

(5)Linux系統的開機啟動順序

載入BIOS–>讀取MBR–>Boot Loader–>載入內核–>用戶層init根據inittab文件來設定系統運行的等級(一般3或者5,3是多用戶命令行,5是界面)–>init進程執行rc.syninit–>啟動內核模塊–>執行不同級別運行的腳本程式–>執行/etc/rc.d/rc.local(本地運行服務)–>執行/bin/login,就可以登錄了。

(6)保存當前磁碟分區的分區表

dd 命令(diskcopy):指定大小的塊拷貝一個文件,在複製的同時進行轉換。

dd if=/dev/sda   of=./mbr.txt  bs=1 count=512

(7)符號鏈接與硬鏈接的區別

我們可以把符號鏈接,也就是軟連接 當做是 windows系統里的 快捷方式。

硬鏈接 就好像是 又複製了一份.

ln 3.txt 4.txt   這是硬鏈接,相當於複製,不可以跨分區,但修改3,4會跟著變,若刪除3,4不受任何影響。

ln -s 3.txt 4.txt  這是軟連接,相當於快捷方式。修改4,3也會跟著變,若刪除3,4就壞掉了。不可以用了。

(8)如何查看二進位文件的內容

我們一般通過hexdump命令 來查看二進位文件的內容。

(9)在1-39內取隨機數

echo $[$RAMDOM %40] ,RANDOM 隨機數,%39 取餘數

(10)顯示/etc/inittab中以#開頭,且後面跟了一個或者多個空白字元,而後又跟了任意非空白字元的行

grep "^# \{1,\} [^  ]"  /etc/initab

(11)顯示/etc/inittab中包含了:一個數字:(即兩個冒號中間一個數字)的行

grep “\:[0-9]\{1\}}\:” /etc/inittab   #{1}確定前面的匹配一次

(12)怎麼把自己寫的腳本添加到服務裡面,即可以使用service命令來調用?

mv test /etc/init.d/    chmod +x /etc/init.d/test   chkconfig –add  test   service test start

寫一個腳本,命名為test,最後chkconfig test on所有等級運行時都開啟test服務

(13)1)第一個參數為URL,即可下載的文件;第二個參數為目錄,即下載後保存的位置;2)如果用戶給的目錄不存在,則提示用戶是否創建;如果創建就繼續執行,否則,函數返回一個51的錯誤值給調用腳本;3)如果給的目錄存在,則下載文件;下載命令執行結束後測試文件下載成功與否;如果成功,則返回0給調用腳本,否則,返回52給調用腳本

#!/bin/bash

#function:download a onefile

url=$1

dir=$2

download()

{

[ ! -d $dir ] && read -p "no such file,do you want to creat it?(y/n)" answer

if[ $answer eq "y"|"Y" ];then

mkdir ./dir/

else

exit 51

fi

cd $dir  #進入該目錄就能自動保存文件

wget $1>&/dev/null

[ $? eq 0 ]&&exit 0 || exit 52

}

download $url $dir  #調用此函數

[ $# -ne 2 ]&& echo "Usage:sh $0 URL,directory"

(14)、將文件file1的前20行、文件file2的最後15行合併成一個test?

head -20 file1>test && tail -15 file2 >> test

(15)、移動.txt文件,並按大小排序顯示

#!/bin/bash

for file in `ls ./*.txt`

do

mv $file /tmp/

done

ls -al /tmp/ | sort -nr -k5   key位置

(16)設置DNS、網關

echo "nameserver 202.16.53.68" >> /etc/resolv.conf

route add default gw 192.168.1.1

(17)比如兩個文件file1和file2,刪除兩個文件中共同的部分,留下兩個文件中獨自有的部分

第一種:grep -v -f file1 file2 && grep -v -f file2 file1   -v表示反向匹配invert match,前一部分輸出文件2中的內容,但是剔除包含在文件1中的內容,f指定範本文件,其內容有一個或多個範本樣式,讓grep查找符合範本條件的文件內容,格式為每一列的範本樣式

第二種:awk '{print $0}' file1 file2|sort|uniq -u >1.txt表示依次讀取file1 file2,列印出每行,NR是行號,$0代表整行。命令uniq,進行報告或者忽略重覆的行,參數-u,表示只是列印出唯一的行

第三種:comm -3 file1 file2 預設輸出有三列:只在file1中有的行、只在file2中有的行、在file1和file2中共有的行。有參數-1 -2 -3,分別來抑制輸出對應的列,解決一切疑難雜症

(18)獲取遠程伺服器的主機名

ssh 192.168.1.1 cat /etc/sysconfig/network |awk -F “=”’/HOSTNAME/ {print $2}’

(19)刪除指定時間之前的文件

第一種:location=”/root/sqlback”,find $location -mtime +30 -type f |xrags rm -f刪除30天前的東西。再加入定時任務文件crontab -e :10 4 1 * * /bin/bash deletesqlback.sh

第二種:find /root/sqlback/ -mtime +30 -type f -name *.gz -exec rm -f {} \;

(20)取出兩個文件的並集(重覆的行只保留一份)
cat file1 file2 | sort | uniq
取出兩個文件的交集(只留下同時存在於兩個文件中的文件)
cat file1 file2 | sort | uniq -d(repeated只輸出重覆的行)
刪除交集,留下其他的行
cat file1 file2 | sort | uniq –u(uniq只顯示唯一的行)

(21)通過apache訪問日誌access.log 統計IP和每個地址訪問的次數,按訪問量列出前10名。

cat /var/log/httpd/access_log |awk ‘{print $1}’|sort -r |head -10 |uniq -c

uniq  -c :uniq本身具有輸出功能,並且-c選項對輸出結果相同行的次數統計

(22)、編寫IPTABLES使用內網某台機器的80埠可以在公網訪問,假設公網IP為10.10.1.1 ,實現192.168.1.0/24段的NAT?

iptables -t nat  -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 10.10.1.1

(  1.PREROUTING:可以在這裡定義進行目的NAT的規則,因為路由器進行路由時只檢查數據包的目的ip地址,所以為了使數據包得以正確路由,我們必須在路由之前就進行目的NAT; 2.POSTROUTING:可以在這裡定義進行源NAT的規則,系統在決定了數據包的路由以後在執行該鏈中的規則。)

 

44、你覺得伺服器通常會出現哪些故障,請試著舉例說出解決思路?

答:(1)系統無法正常啟動

a、grub損壞(MBR損壞、grub配置文件丟失)

b、某文件系統無法正常掛載、驅動不相容

c、因為某個自啟服務故障,從而導致無法啟動系統

d、用戶無法登陸系統(bash程式損壞)

e、開機發出滋滋滋的響聲(記憶體條接觸不好,硬碟扇區損壞)

(2)機器頻繁重啟、風扇故障、電源不供電

(3)外網無法訪問自己(涉及到路由交換、DNS、物理線路、防火牆策略問題)

解決思路:①觀察伺服器故障現象,註意報錯消息②查看相應的系統日誌,排障由廣到深,

逐步縮小範圍③理解故障發生的原因最好的辦法是人為使其重現故障,涉及到修改文件時,必須備份原文件,或者將這個故障機器的文件與正常運作的機器的文件進行對比,最好還原為預設配置。平時做的準備工作也很重要,不要經常更新為好,備份工作的習慣更是要深入到靈魂,條件反射。

45、你能說運維工程師主要做什麼工作嗎?

答:一是網路基礎設施:保障物理上的安全,如機房、伺服器、路由交換設備、用戶PC正常運作;二是網路操作系統:防漏洞、防入侵、使用許可權、密鑰管理;三是網路服務:用戶身份認證、安裝配置、排障;四是用戶操作使用培訓教育;五是制定完善的網路運營維護文檔、日誌管理;六是系統備份、數據災難恢復機制,這也是最難的一點。

46、有多台伺服器需部署相同應用文件,文件會持續更新,你用什麼方式實現不同伺服器間的文件同步?

答:這個問題很常見,可是又沒有很完美的解決方案。最直觀的想法是寫入第三方雲平臺,只要聯網,知道用戶密碼,就能實現多點登錄這個賬號;第二個方案,參考一下DNS的主功能變數名稱伺服器和輔助功能變數名稱伺服器的區域複製功能,能不能有所想法。第三個方案,我想這個同步問題早就被人研究了,一定有其他大公司開發出了同步備份系統軟體,我們只需要去搜一下就可以去使用了,可能要花點租金,但是值得。比如filegee企業文件同步備份系統、rsync軟體。

47、64位和32位操作系統有何不同?

答:(1)很明顯,運算速度不同,即CPU處理能力64位比32位高一倍

(2)64位操作系統只能安裝在64位的電腦上,而32位操作系統既能安裝在32位電腦,又能安裝在64位的電腦上

(3)電腦的地址位寬會影響虛擬記憶體的大小和定址能力

* 如果要對32位系統進行擴展記憶體,使用PAE物理地址擴展技

48、chroot /mnt/sysimage做何理解?有何作用?

答:將/mnt/sysimage作為根目錄,原有系統的根目錄都被掛載到了/mnt/sysimage目錄下。在經過 chroot 之後,在新根下將訪問不到舊系統的根目錄結構和文件,這樣就增強了系統的安全性。chroot 的作用就是切換系統的根位置,而這個作用最為明顯的是在系統初始引導磁碟的處理過程中使用,從初始 RAM 磁碟 (initrd) 切換系統的根位置並執行真正的 init。另外,當系統出現一些問題時,我們也可以使用 chroot 來切換到一個臨時的記憶體系統。

49、Nginx相對於Apache優點:

1)高併發響應性能非常好,官方Nginx處理靜態文件併發5w/s

2)反向代理性能非常好。(可用於負載均衡)

3)記憶體和cpu占用率低。(為Apache的1/5-1/10。)

4)功能較Apache少(常用功能均有)

5)對php可使用cgi方式和fastcgi方式。

50、cgi和fastgcgi的區別?

答:首先CGI是用來web伺服器進程和動態網頁程式交互的一種協議,fastcgi和其原理一樣,不同的是fastcgi處理完一個請求後不會終止整個進程,而是出於掛起狀態等待下一個請求的到來,這樣它就避免了像cgi那樣頻繁創建進程,從而提高它的訪問效率。

51、多進程與多線程,請問有什麼區別?

答:(1)進程:子進程是父進程的複製品。
(2)線程:一個進程可以容納多個線程,相對進程而言,線程是一個更加接近與執行體的概念,它可以與同進程的其他線程共用資源,但擁有自己的棧空間,擁有獨立的執行序列。兩者都可以提高程式的併發度,提高程式運行效率和響應時間。同時,線程適合於在SMP機器上運行,而進程則可以跨機器遷移。根本區別就一點:用多進程每個進程有自己的地址空間(address space),線程則共用地址空間。所有其它區別都是由此而來的:
(1)速度:線程產生的速度快,線程間的通訊快、切換快等,因為他們在同一個地址空間內。(2)資源利用率:線程的資源利用率比較好也是因為他們在同一個地址空間內。
(3)同步問題:線程使用公共變數/記憶體時需要使用同步機制還是因為他們在同一個地址空間內。

52、time_filename.txt 改成filename_time.txt。例如20111111_me.txt改成me_201111111.txt要如何修改?

答:#! /bin/sh

for eachfile in `ls -l`

do

 filename=${eachfile%.txt}

 filehead=`echo $filename | awk -F _ '{print $1 }'`

 filelast=`echo $filename | awk -F _ '{print $2 }'`

 mv $filename.txt ${filelast}_$filehead.txt

done

53、線程的優缺點是什麼?什麼情況不用線程?什麼情況使用線程提高效率?

答:優點:相比進程,線程是一個更接近執行體的概念,一個進程內可以擁有多個線程,他們可以併發運行,共用地址空間,而且線程產生的速度快,線程調度之間切換也快,那麼因為共用地址空間體現的優點是:系統開銷小,資源率利用比較高。

缺點:線程之間的同步機制非常繁瑣,(互斥鎖、讀寫鎖、條件變數、線程信號),線程之間也會發生死鎖,一個線程崩潰的時候  ,會牽連到其他線程。

使用線程的情況:線程適合在對稱多處理機上運行

54、buffer和cache有何區別?

答:緩存是用來加速從硬碟中讀取數據的,一個程式讀取了一個數據,先放在緩存里,下一個程式再來需要的時候,直接調用緩存即可,因為很顯然記憶體的存取速度要大於硬碟嘛,而緩衝是用來加速向硬碟寫入數據的,我保存數據到硬碟,不是立刻生效,而是在記憶體緩衝積累到一定程度後,再全部放入硬碟,避免硬碟被頻繁操作,從而影響系統的運行情況。他們二者本質都是記憶體,不能被進程調用,只能被Linux內核使用。

55、 有一web伺服器,一天某用戶投訴上某個網站速度很慢,如果你是伺服器的管理員,請問 你如何查找原因?

答:首先我自己要試一下訪問這個網站的速度如何?從而判斷是客戶端那邊有問題還是服務端有問題,因為客戶端涉及到網路擁塞和DNS解析的問題。那麼我主要負責服務端這邊的問題,如果我這邊也不行的話,先從這台主機的系統本身故障入手,先看日誌/var/log/messages,如果日誌沒什麼反應的話,我再去看web服務日誌的情況,看是不是有惡意訪問,比如DDOS攻擊,造成正常用戶無法得到應答,如果這邊也沒問題的話,就要涉及到PHP響應慢和MySQL響應慢的問題了。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這幾天整理了一些常見的面試題,整理成一個系列給大家分享一下,機會是給有準備的人,面試造火箭,工作擰螺絲,不慌,共勉。 ...
  • .NETCore CSharp 中級篇2 5 本節內容為常見實用類和方法的使用 String.Format string.format方法是一個字元串格式化類,它裡面的一些寫法是對字元串進行指定格式的轉換。 String.Format 方法的幾種定義: String.Format (String, ...
  • Docker的使用越來越多,安裝也相對簡單。本文使用視頻的方式展示在CentOS7系統中安裝Docker,本文更適合於準備入門學習Docker的童靴 ...
  • 最近感悟天命,偶有所得,故而打算收徒若幹,以繼吾之傳承。 有緣者,可破瓶頸,領悟架構師思維,指日可待。 ...
  • .NET Core跨平臺部署於Docker(Centos)- 視頻教程 ...
  • 前端js代碼: 後臺C#代碼: ...
  • 1.開始 DocumentFormat.OpenXml是ms官方給一個操作office三大件新版文件格式(.xlsx,.docx,.pptx)的組件;特色是它定義了OpenXml所包含的所有對象(たぶん),能做到精確微調文件內容格式;因此它沒有EppPlus那麼容易上手,性能也很看使用者的水平。。 ...
  • 我們知道,將某個類型的多個文件從一個目錄移動到另一個目錄很簡單,但同時移動多種類型的多個文件或許會很麻煩,這裡介紹一些讓你在 Linux 中移動多種文件類型的小技巧。 同時移動多種文件類型 方法1: 假設 的目錄中有多種類型的文件,如 .pdf .doc .mp3 .mp4 .txt 等,我們先來查 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...