20145231 《信息安全系統設計基礎》期中總結

20145231 《信息安全系統設計基礎》期中總結

教材學習內容復習

結合課本知識及再次實踐加深理解記憶

按照學習時相關重點知識的順序進行整理歸納

實踐內容:重要命令的使用 gdb調試棧幀(再理解) makefile 編譯運行代碼深入理解局部性

Linux中的重要常用命令

Linux中命令格式為:command [options] [arguments] []表示是可選的,即組成結構為:命令 [選項] [參數]


**man命令**man命令是Linux下的幫助指令,通過man指令可以查看Linux中的指令幫助、配置文件幫助和編程幫助等信息。常用選項:-a:在所有的man幫助手冊中搜索-k:根據關鍵字搜索聯機幫助,是一種模糊搜索-f:關鍵字精確搜索,等價于whatis指令,顯示給定關鍵字的簡短描述信息-P:指定內容時使用分頁程序-M:指定man手冊搜索的路徑參數:數字:指定從哪本man手冊中搜索幫助關鍵字:指定要搜索幫助的關鍵字man -k:常用來搜索,結合管道使用。例句如下:man -k k1 | grep k2 | grep 2

**cheat命令**在linux上,man命令幾乎是萬能的,但它卻不是最高效的。由于它給出的幫助信息很長,在短時間內不好理解,所以在這種情況下,用cheat命令更方便,cheat命令簡單來說,就是告訴你一個命令如何使用。它沒有提供其他額外多余的信息,只通過使用實例告訴你一個命令如何使用。

**grep命令**grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用權限是所有用戶。命令格式:grep [options][options]主要參數:-c:只輸出匹配行的計數-I:不區分大小寫(只適用于單字符)-h:查詢多文件時不顯示文件名-l:查詢多文件時只輸出包含匹配字符的文件名-n:顯示匹配行及行號-s:不顯示不存在或無匹配文本的錯誤信息-v:顯示不包含匹配文本的所有行如果想查找某個宏,我們已知宏保存在include文件夾中,所以可以使用下列語句:grep -nr XXX /usr/include(XXX為所要找的宏)

**find命令**find命令用來在指定目錄下查找文件。任何位于參數之前的字符串都將被視為欲查找的目錄名。如果使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件。并且將查找到的子目錄和文件全部進行顯示。命令格式:find pathname -options [-print -exec -ok ...]參數:pathname:find命令所查找的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄print:find命令將匹配的文件輸出到標準輸出exec:find命令對匹配的文件執行該參數所給出的shell命令,相應命令的形式為'command' { } \;,注意{ }和\;之間的空格ok:和-exec的作用相同,只不過以一種更為安全的模式來執行該參數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓用戶來確定是否執行常用選項:-name:按照文件名查找文件-perm:按照文件權限來查找文件mtime -n +n:按照文件的更改時間來查找文件, - n表示文件更改時間距現在n天以內,+ n表示文件更改時間距現在n天以前-newer file1 ! file2:查找更改時間比文件file1新但比文件file2舊的文件-type:查找某一類型的文件,諸如:b - 塊設備文件,d - 目錄,c - 字符設備文件,p - 管道文件,l - 符號鏈接文件,f - 普通文件-size n:[c] 查找文件長度為n塊的文件,帶有c時表示文件長度以字節計-depth:在查找文件時,首先查找當前目錄中的文件,然后再在其子目錄中查找。

舉例:查找當前目錄下大小大于10K的文件

888584-20161106222341486-1894101719.png


**locate命令**locate命令其實是find -name的另一種寫法,但是要比后者快得多,原因在于它不搜索具體目錄,而是搜索一個數據庫(/var/lib/locatedb),這個數據庫中含有本地所有文件信息。Linux系統自動創建這個數據庫,并且每天自動更新一次,所以使用locate命令查不到最新變動過的文件。為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動更新數據庫。命令格式:locate [選擇參數] [樣式]命令參數:-e:將排除在尋找的范圍之外-1:如果是1則啟動安全模式,在安全模式下,使用者不會看到權限無法看到的檔案。這會使速度減慢,因為 locate必須至實際的檔案系統中取得檔案的權限資料-f:將特定的檔案系統排除在外,例如我們沒有到必要把proc檔案系統中的檔案放在資料庫中-q:安靜模式,不會顯示任何錯誤訊息-n:至多顯示 n個輸出-r:使用正規運算式 做尋找的條件-o:指定資料庫存的名稱-d:指定資料庫的路徑-h:顯示輔助訊息-V:顯示程式的版本訊息

**whereis命令**whereis命令是定位可執行文件、源代碼文件、幫助文件在文件系統中的位置。這些文件的屬性應屬于原始代碼,二進制文件,或是幫助文件。whereis程序還具有搜索源代碼、指定備用搜索路徑和搜索不尋常項的能力。whereis命令只能用于程序名的搜索,而且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。如果省略參數,則返回所有信息。命令格式:whereis [-bmsu] [BMS 目錄名 -f ] 文件名主要參數:-b:定位可執行文件-m:定位幫助文件-s:定位源代碼文件-u:搜索默認路徑下除可執行文件、源代碼文件、幫助文件以外的其它文件-B:指定搜索可執行文件的路徑-M:指定搜索幫助文件的路徑-S:指定搜索源代碼文件的路徑

**which命令**which指令會在PATH變量指定的路徑中,搜索某個系統命令的位置,并且返回第一個搜索結果。which是根據使用者所配置的PATH變量內的目錄去搜尋可運行檔的,所以,不同的PATH配置內容所找到的命令是不一樣的。命令格式:which 可執行文件名稱命令參數:-n:指定文件名長度,指定的長度必須大于或等于所有文件中最長的文件名-p:與-n參數相同,但此處的包括了文件的路徑-w:指定輸出時欄位的寬度-V:顯示版本信息

總結find、locate、which、whereis的區別

which (尋找執行檔) :這個指令是根據PATH這個環境變量所規范的路徑,去搜尋執行檔的檔名,所以,重點是找出執行檔而已,which 后面接的是完整檔名

whereis (尋找特定檔案):搜尋linux數據庫檔案中所記錄的東西,和locate的主要區別在于后面的參數

locate:搜尋linux數據庫檔案中所記錄的東西,后面直接跟檔案的部分名稱就行

find:直接搜索整個硬盤


**sort命令**將文本文件內容加以排序。可針對文本文件的內容,以行為單位來排序。參數:m:將幾個排序好的文件進行合并。n:依照數值的大小排序Linux Bash中,ls . | sort 命令的功能是(顯示當前目錄內容并排序)

**du命令**顯示目錄或文件的大小。du會顯示指定的目錄或文件所占用的磁盤空間。參數:a:顯示目錄中個別文件的大小。b:顯示目錄或文件大小時,以byte為單位。c: 除了顯示個別目錄或文件的大小外,同時也顯示所有目錄或文件的總和

**ls命令**顯示指定工作目錄下之內容(列出目前工作目錄所含之檔案及子目錄)。參數:a:顯示所有檔案及目錄A:同 -a ,但不列出 "." (目前目錄) 及 ".." (父目錄)t:將檔案依建立時間之先后次序列出列出目前工作目錄下所有檔案及目錄;目錄于名稱后加 "/", 可執行檔于名稱后加 "*" : ls -AF
Linux Bash中,把ls命令顯示當前目錄的結果存入ls.txt的命令輸出重定向命令是(ls > ls.txt)

vim gcc gdb make 的學習

詳細內容見博客:(http://www.cnblogs.com/xzh20145231/p/5907518.html)

Vim常用命令總結


插入:i:在當前光標處進行編輯a:在光標后插入編輯

退出:q!:強制退出,不保存:q:退出:wq!:強制保存并退出:wq:保存并退出:w <文件路徑>:另存為
刪除:x:刪除游標所在的字符dd:刪除整行

行間跳轉:nG(n Shift+g):光標移動到第n行

復制與粘貼:nyy:復制光標所在及其后的整行共n行p:代表粘貼至光標后

功能設定:
:set autoindent(ai):設置自動縮進:set cindent(cin):設置C語言風格縮進:set nu:以顯示行號

GCC編譯過程


預處理:`gcc –E hello.c –o hello.i ;gcc –E`調用cpp 產生預處理過的C原始程序編譯:`gcc –S hello.i –o hello.s ;gcc –S`調用ccl 產生匯編語言原始程序匯編:`gcc –c hello.s –o hello.o ;gcc -c `調用as 產生目標文件鏈 接:`gcc hello.o –o hello ;gcc -o` 調用ld 產生可執行文件運行:` ./hello`

GDB調試


進入gdb:gcc -g xxx.c -o xxxgdb xxx查看源碼:(gdb) l:進行行號提示(gdb) b n:在第n行設置斷點(gdb) r:運行代碼,運行至斷點處(gdb) n:單步運行(gdb) c:使程序繼續往下運行,直到再次遇到斷點或程序結束(gdb) q:退出GDB(gdb) watch n:在"n"設置了觀察點,觀察變量的變化情況四種斷點:函數斷點:b 函數名 條件表達式行斷點:b 行數或函數名 條件表達式條件斷點:b 行數或函數名 if表達式臨時斷點:tbreak 行數或函數名 條件表達式

參照 (http://www.cnblogs.com/lxm20145215----/p/5982554.html) 中具體gdb調試指令對棧幀進行再理解

888584-20161106223131518-572971922.png

使用gcc - g example.c -o example -m32指令在64位的機器上產生32位匯編,然后使用gdb example指令進入gdb調試器:

888584-20161129211052193-374495213.png

進入之后先在main函數處設置一個斷點,再run一下,使用disassemble指令獲取匯編代碼,用i(info) r(registers)指令查看各寄存器的值:

888584-20161129211307334-882344378.png

888584-20161129211414271-2078748227.png

可見此時主函數的棧基址為0xffffd068,用x(examine)指令查看內存地址中的值,但目前%esp所指堆棧內容為0,%ebp所指內容也為0

結合display命令和寄存器或pc內部變量,做如下設置:display /i $pc,在每次執行下一條匯編語句時,都會顯示出當前執行的語句。再分別查看每一步%esp,%ebp中值的變化情況:

888584-20161129211538943-1156373369.png

888584-20161129212139131-714659786.png

888584-20161129212156224-1823671984.png

call指令將下一條指令的地址入棧,此時%esp,%ebp和堆棧的值為:

888584-20161129211554693-993494593.png

888584-20161129212214115-1384013040.png

888584-20161129212228318-654744799.png

將上一個函數的基址入棧,從當前%esp開始作為新基址:

888584-20161129212307584-733138861.png

888584-20161129212321256-1164636350.png

888584-20161129212338599-530279408.png

先為傳參做準備:

888584-20161129212447506-1092504760.png

888584-20161129212501927-1153772904.png

888584-20161129212514584-1780238046.png

實參的計算在%eax中進行:

888584-20161129212552318-1165356807.png

f函數的匯編代碼:

888584-20161106222946205-1396684902.png

實參入棧:

888584-20161129212803459-198642941.png

888584-20161129212823943-2019500430.png

888584-20161129212841006-325402336.png

call指令將下一條指令地址入棧:

888584-20161129213117365-2124177517.png

888584-20161129213133615-1318018715.png

888584-20161129213721927-185416860.png

888584-20161129213200912-496329319.png

888584-20161129213213974-1242189733.png

888584-20161129213744490-1975744205.png

計算過程:

888584-20161129214029318-1599759393.png

888584-20161129214043959-961196938.png

888584-20161129214057131-500392028.png

888584-20161129214109943-2058121047.png

888584-20161129214123646-769597151.png

888584-20161129214135381-676491180.png

弾棧(棧頂到%ebp),pop %ebp,%esp增加4字節:

888584-20161129214432849-170301309.png

888584-20161129214445709-725279314.png

888584-20161129214459365-791416823.png

ret指令將棧頂彈給%eip:

888584-20161129214739646-1486129548.png

888584-20161129214754209-917297514.png

888584-20161129214811740-1839588514.png

因為函數f修改了%esp,所以用leave指令恢復。leave指令先將%esp對其到%ebp,然后把棧頂彈給%ebp:(LEAVE指令就相當于 mov esp,ebp 和 pop ebp 兩條指令的執行效果。)

888584-20161129215502521-70452850.png

888584-20161129215515506-98888528.png

888584-20161129215531631-282474089.png

888584-20161129215547021-778561450.png

888584-20161129215602412-892934943.png

888584-20161129215616740-62080389.png

主函數的匯編代碼:

888584-20161106223105705-523283198.png

888584-20161106223212252-1094364050.png

888584-20161106223228815-189727884.png

888584-20161106223248471-314287885.png

888584-20161106223305893-796378996.png

makefile

功能:識別文件代碼是否更新,減少編譯工作量格式為:目標體:依賴文件[tab鍵]各目標體運行命令目標體:由make創建,通常是目標文件或可執行文件依賴文件:創建目標體所依賴的文件運行命令:創建每個目標體時需要的運行命令,必須以tab鍵開頭。使用make的格式:make 目標體

計算機系統簡介

了解計算機的基本構造及各個部分之間的聯系,是對后面章節的一個概括:硬件組成等;

了解編譯器如何編譯;

了解了操作系統提供的抽象表示:文件是對I/O設備的抽象表示,進程是對處理器、主存和I/O設備的抽象表示。

鏈接

靜態庫

靜態庫是一系列的目標文件(.o文件)的歸檔文件((lib+name).a文 件);鏈接階段,選擇靜態庫,后綴名為“.a”;選擇動態庫,后綴名為“.so”。

靜態鏈接庫的生成:gcc -c 文件名.c ar rcsv libxxx.a xxx.o

靜態庫的使用:gcc -o 文件名 文件名.c -L. -lxxx//鏈接到靜態庫

注意:

-L:在庫文件的搜索路徑列表中添加dir目錄

-l:在頭文件的搜索路徑列表中添加dir目錄

共享庫

共享庫的生成:

gcc -fPIC -c xxx.c

gcc -shared -o libxxx.so xxx.o

共享庫的使用:gcc -o main main.c -L. -lxxx

注冊共享庫的方法:將庫文件直接復制到/lib或者/usr/lib目錄下:cp (lib+name).so /lib

信息的表示和處理

詳細內容見博客: (http://www.cnblogs.com/xzh20145231/p/5928371.html)

各種進制之間的轉換以及十六進制加減法;

布爾運算求值;

位級運算的掩碼運算;

邏輯運算和位級運算的區別;

無符號數編碼;

補碼編碼;

有符號數和無符號數之間的轉換;

截斷數字的方法;

補碼的加法,補碼求非;

無符號乘法和有符號乘法;

除以二的冪:無符號:邏輯移位;補碼數:算術移位;

浮點數:IEEE浮點標準;

二進制小數;

規格化的值非規格化的值。

程序的機器級表示

用匯編語言理解指令,理解棧幀

詳細內容見博客:(http://www.cnblogs.com/xzh20145231/p/5967918.html#3534564)

了解機器級編程,學習了IA32指令集,了解指令集體系結構和虛擬地址這兩種抽象在機器級編程中的重要性:

利用object dump進行反匯編以查看匯編指令;

基本數據格式;

操作數指示符:操作數類型:立即數、寄存器、存儲器;相關尋址方式對應的格式;

根據操作數寫出對應值;

數據傳送指令(與Windows系統下指令有所區別),重點理解壓棧和弾棧操作;

加載有效地址指令leal;

控制:條件碼的設置、訪問方式;跳轉指令及其編碼;循環結構(機器級代碼理解:goto代碼);條件傳送指令;switch語句;

過程:棧幀結構;轉移控制:call指令和ret指令;寄存器使用習慣;使用gdb調試幫助理解棧幀的建立和消亡。

處理器體系結構

詳細內容見博客;(http://www.cnblogs.com/xzh20145231/p/5991005.html#3542104)

以Y86為例,指令加硬件實現(HCL語言)

Y86指令及指令編碼;(通過指令能寫出編碼,通過編碼能寫出指令)

Y86異常:值代表的含義;

體會Y86與IA32代碼的區別;

執行popl和pushl指令時處理器行為的不確定性;

組合電路和布爾表達式(HCL語言表示);

ALU算術邏輯單元;

隨機訪問存儲器的讀寫操作;

Y86的順序實現:取指、譯碼、執行、訪存、寫回、更新PC;(會寫每個階段對應的指令)

SEQ硬件結構、SEQ的時序(對應每個階段)。

存儲器層次結構

詳細內容見博客;(http://www.cnblogs.com/xzh20145231/p/6013913.html#3545642)

常見存儲技術:RAM、ROM、磁盤、固態硬盤;(區別及應用)

對比SRAM和DRAM的區別及應用;

非易失性存儲器和只讀存儲器;

訪問主存的方法:讀寫事務;

磁盤:磁盤構造;磁盤容量計算;磁盤操作:尋道時間、旋轉時間、傳送時間;邏輯磁盤塊:映射關系、三元組;訪問磁盤(連接到I/O設備);

局部性:時間局部性、空間局部性:判斷程序好壞;

利用循環體提升程序局部性;

局部性分析:

參考了這篇文章:(http://www.cnblogs.com/dxy1982/p/4194218.html),覺得分析的很好。

存儲器層次結構:高速緩存、緩存不命中。

對課程的意見或建議

謝謝老師特意發表git配置教程還有vim使用教程等指導博客,讓像我這樣動手自學能力不強的同學跟上進度!

代碼托管截圖

888584-20161106223446486-25869249.png

使用find *.|xargs wc -l查找當前目錄以及子目錄中的文件行數

888584-20161106223637971-644233337.png

888584-20161106223651283-2094814772.png

托管鏈接

收獲

時間過得很快,周而復始,一個學期卻早已過半。在本門課的學習中,我自知不夠優秀,對于計算機系統的相關知識很多可能都還是一知半解,實踐能力也不算強,每次破解安裝或使用新的軟件都落于人后,但是我覺得我學習這門課最大的收獲就是:實踐才有收獲。很多時候我們不愿嘗試新事物都是因為畏難情緒,但是只要你下定決心認真去做,也一樣能做好,空有理論而不實踐等于零。

比如:之前忽視了Linux命令學習的重要性,在使用終端時感覺不便,通過本周對Linux命令的再實踐,在以后使用虛擬機終端的過程中相信會受益匪淺,再比如:通過上幾周使用git托管代碼,我發現資料備份以及分類的重要性。還有:看書時不做練習就無法真正理解新知識的核心以及涵義...

學習一門課,不只是掌握其中的相關知識,能夠學到一種學習方式、學習習慣才是最大的收獲(如老師所說的元知識,某些通用于各種學科的知識),現在也開始慢慢理解,為什么說至少要學習兩種編程語言、學習兩種操作系統才能找到所謂的不變量...學習之路,道阻且長,且學且珍惜。

不足

在前期的學習中忽略了對基本命令的實踐與掌握,所以此次總結特意加強了這部分的實踐及記憶,在使用虛擬機終端時,總是不知道對應操作的命令,每次都要去查找,所以對于重要命令的使用一定要熟記于心;在課本學習時,有時會忽略實踐的重要性,導致課本知識不能很好的被消化理解,比如:存儲其結構體系中的程序的局部性,必須要通過敲代碼運行才能直觀對比出差距...慶幸自己及時端正了態度,開始每周真正按照老師的要求去做,夯實了所學知識,繼續努力。

學習進度條

博客量(新增/累積)學習時間(新增/累積)重要成長
目標30篇400小時
第一周2/220/20學習了Linux核心命令
第二周2/421/41學習了vim、gcc、gdb指令
第三周2/620/61學習了信息的表示和處理,了解了二進制在計算機系統中的重要性
第五周2/820/81學習了機器級程序,讀懂匯編代碼
第七周2/1218/118了解了存儲器層次結構及存儲技術
第八周2/1415/133對前幾周內容進行復習

轉載于:https://www.cnblogs.com/xzh20145231/p/6035460.html

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

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

相關文章

資源分享:分享5個冷門而超級實用的在線網站

目錄 1、網站配色-Adobe color 1、YYDS電影 3、藍調music 4、在線藝術圖庫 5、全景看世界 AirPano 1、網站配色-Adobe color 網站&#xff1a;https://color.adobe.com/zh/ 只需要在網上找到一張有你喜歡的顏色的任意圖片或者照片&#xff0c;拖入網頁&#xff0c;Adobe Color …

常用插件:分享12款超級好用的 Chrome 插件

1、dblock Plus&#xff1a;免除廣告困擾你是不是每次搜索百度前幾個都是廣告&#xff1f;有了它&#xff0c;你的搜索結果只有純凈。2. 監聽網絡請求插件simple-extension插件讓每個網站都可以保存/切換Cookies、切換User-Agent&#xff0c;簡單地監聽網絡請求。地址&#xff…

IrregularGridCollectionView處理不定寬度的標簽cell

IrregularGridCollectionView處理不定寬度的標簽cell 效果 源碼 https://github.com/YouXianMing/UI-Component-Collection 中的 IrregularGridCollectionView // // IrregularGridCollectionView.h // IrregularGridCollectionView // // Created by YouXianMing on 16/8/3…

服務端負載均衡和客戶端負載均衡

服務端負載均衡 用戶在App訪問通過80端口請求nginx,ngin來實現負載均衡&#xff0c;分發請求 客戶端負載均衡 Eureka Server注冊中心集群部署&#xff0c;goods_services服務提供者啟動后向Eureka Server注冊中心進行服務注冊 App服務從Eureka Server發現服務 goods_servic…

java上傳和下載文件代碼_JavaWeb中上傳和下載文件實例代碼

一丶先引入上傳下載的lib二丶上傳的的servletpackage com.test.action;import java.io.file;import java.io.fileoutputstream;import java.io.ioexception;import java.io.inputstream;import java.io.outputstream;import java.util.list;import javax.servlet.servletexcept…

kafka java api 刪除_使用Java API創建(create),查看(describe),列舉(list),刪除(delete)Kafka主題(Topic)...

使用Kafka的同學都知道&#xff0c;我們每次創建Kafka主題(Topic)的時候可以指定分區數和副本數等信息&#xff0c;如果將這些屬性配置到server.properties文件中&#xff0c;以后調用Java API生成的主題將使用默認值&#xff0c;先改變需要使用命令bin/kafka-topics.sh --zook…

操作系統:Linux 環境變量配置的 6 種方法

目錄 Linux環境變量配置 Linux讀取環境變量 Linux環境變量配置方法一&#xff1a;export PATH Linux環境變量配置方法二&#xff1a;vim ~/.bashrc Linux環境變量配置方法三&#xff1a;vim ~/.bash_profile Linux環境變量配置方法四&#xff1a;vim /etc/bashrc Linux環境變量…

操作系統:Win10有哪些版本,看完你就知道了

目錄 一、win10家庭版 二、win10專業版 三、win10企業版 四、win10教育版 Win10有四個版本是我們最常見的&#xff1a;win10家庭版、win10專業版、win10企業版、win10教育版。 今天就主要說這4個比較經典的版本&#xff0c;一起來看看吧&#xff01; 一、win10家庭版 一般來說&…

mysql-5.5.8_MySQL5.5.8安裝

一、軟件包a) cmake-2.8.3.tar.gzb) mysql-5.5.8.tar.gz二、安裝步驟a) Tar zxvf cmake-2.8.3.tar.gzb) Cd cmake-2.8.3c) ./bootstrapd) Makee) Make installf) Tar zxvf mysql-5.5.8.tar.gzg) Cd mysql-5.5.8h) 配置參數cmake . -DCMAKE_INSTALL_PREFIX/usr/local/mysql5 \-D…

C# Web實時消息后臺服務器推送技術-GoEasy

越來越多的項目需要用到實時消息的推送與接收&#xff0c;怎樣用C#實現最方便呢&#xff1f;我這里推薦大家使用GoEasy, 它是一款第三方推送服務平臺&#xff0c;使用它的API可以輕松搞定實時推送&#xff01; 瀏覽器兼容性&#xff1a;GoEasy推送 支持websocket 和polling兩種…

硬件知識:打印機常見的故障及維護,值得收藏

一、打印時不出墨癥狀 打印機在聯機或自檢時&#xff0c;打印頭有動作&#xff0c;但打印不出墨。故障分析 這一情況發生&#xff0c;有多方面原因&#xff0c;可能包括噴頭故障&#xff0c;清潔單元故障&#xff0c;電鍍及電路板故障等&#xff0c;但在排除了噴頭故障后可以這…

mac下SecureCRT連接阿里云服務器最新教程

一.首先進入自己的阿里云管理控制臺 地址 https://ecs.console.aliyun.com/?spm5176.6660585.774526198.1.57c96bf8inrLvC#/home 二&#xff1a;輸入密碼 三&#xff1a;點擊密碼重置 四&#xff1a;打開SecureCRT 點擊加號 五&#xff1a;點擊continue 六&#xff1a;在Ho…

oralce之存儲過程

一&#xff1a;--循環向表emp中插入數據 1 declare 2 maxnumber number:10000;3 v_count number;4 begin5 v_count :0;6 FOR x IN 1..maxnumber7 LOOP8 v_count :v_count1;9 insert into emp (empno,ename,job,mgr,sal,comm) 10 valu…

java 日期calendar_java時間對象Date,Calendar和LocalDate/LocalDateTime

一、簡介Date&#xff1a;java.util.Date包&#xff0c;包含日期&#xff0c;時間&#xff0c;毫秒數。Calendar&#xff1a;java.util.Calendar包&#xff0c;abstract修飾&#xff0c;Date的很多方法已經過時遷移到了Calendar類上。LocalDate/LocalDateTime&#xff1a;java.…

IIS實現服務器反向代理用法介紹

今天給打擊分享IIS實現服務器反向代理用法&#xff0c;感興趣的可以學習一下&#xff01;場景&#xff1a;本地電腦啟動了兩個網站地址分別為&#xff1a;http://127.0.0.1:8081/Sitehttp://127.0.0.1:8082/Test要實現同一個端口訪問&#xff1a;http://127.0.0.1:8080/Sitehtt…

java if else過多_Spring Boot中如何干掉過多的if else!

需求這里虛擬一個業務需求&#xff0c;讓大家容易理解。假設有一個訂單系統&#xff0c;里面的一個功能是根據訂單的不同類型作出不同的處理。訂單實體&#xff1a;service接口&#xff1a;傳統實現根據訂單類型寫一堆的if else&#xff1a;策略模式實現利用策略模式&#xff0…