1.post和get的區(qū)別
此答案原文來自https://blog.csdn.net/qq_15158911/article/details/80966457
GET和POST是HTTP協(xié)議中的兩種發(fā)送請求的方法啄清。
HTTP是基于TCP/IP的關于數(shù)據(jù)如何在萬維網(wǎng)中如何通信的協(xié)議。
所以GET和POST的底層都是TCP/IP俺孙,也就是說辣卒,GET/POST都是TCP鏈接
常用區(qū)別:
1.?GET把參數(shù)包含在URL中掷贾,POST通過request body傳遞參數(shù)
2.?GET請求在URL中傳送的參數(shù)是有長度限制的,POST沒有荣茫。
3.?GET請求的參數(shù)只能是ASCII碼想帅,所以中文需要URL編碼,而POST支持多種編碼方式
最重要的區(qū)別:
GET產(chǎn)生一個TCP數(shù)據(jù)包啡莉;POST產(chǎn)生兩個TCP數(shù)據(jù)包港准。(firefox瀏覽器除外)
對于GET方式的請求,瀏覽器會把http header和data一并發(fā)送出去咧欣,服務器響應200(返回數(shù)據(jù))浅缸;
而對于POST,瀏覽器先發(fā)送header魄咕,服務器響應100 continue疗杉,瀏覽器再發(fā)送data,服務器響應200 ok(返回數(shù)據(jù))蚕礼。
其他的區(qū)別:
1.?GET在瀏覽器回退時是無害的烟具,而POST會再次提交請求。
2.?GET產(chǎn)生的URL地址可以被Bookmark奠蹬,而POST不可以朝聋。
3.?GET請求會被瀏覽器主動cache,而POST不會囤躁,除非手動設置冀痕。
4.?GET請求參數(shù)會被完整保留在瀏覽器歷史記錄里,而POST中的參數(shù)不會被保留狸演。
5.?對參數(shù)的數(shù)據(jù)類型言蛇,GET只接受ASCII字符,而POST沒有限制宵距。
6.?GET比POST更不安全腊尚,因為參數(shù)直接暴露在URL上,所以不能用來傳遞敏感信息满哪。
2.TCP的三次握手與四次揮手
此答案來自https://blog.csdn.net/qq_38950316/article/details/81087809
三次握手過程理解
第一次握手:建立連接時婿斥,客戶端發(fā)送syn包(syn=j)到服務器,并進入SYN_SENT狀態(tài)哨鸭,等待服務器確認民宿;SYN:同步序列編號(Synchronize Sequence Numbers)。
第二次握手:服務器收到syn包像鸡,必須確認客戶的SYN(ack=j+1)活鹰,同時自己也發(fā)送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態(tài)志群;
第三次握手:客戶端收到服務器的SYN+ACK包着绷,向服務器發(fā)送確認包ACK(ack=k+1),此包發(fā)送完畢赖舟,客戶端和服務器進入ESTABLISHED(TCP連接成功)狀態(tài)蓬戚,完成三次握手夸楣。
四次揮手過程理解?
1)客戶端進程發(fā)出連接釋放報文宾抓,并且停止發(fā)送數(shù)據(jù)。釋放數(shù)據(jù)報文首部豫喧,F(xiàn)IN=1石洗,其序列號為seq=u(等于前面已經(jīng)傳送過來的數(shù)據(jù)的最后一個字節(jié)的序號加1),此時紧显,客戶端進入FIN-WAIT-1(終止等待1)狀態(tài)讲衫。 TCP規(guī)定,F(xiàn)IN報文段即使不攜帶數(shù)據(jù)孵班,也要消耗一個序號涉兽。
2)服務器收到連接釋放報文,發(fā)出確認報文篙程,ACK=1枷畏,ack=u+1,并且?guī)献约旱男蛄刑杝eq=v虱饿,此時拥诡,服務端就進入了CLOSE-WAIT(關閉等待)狀態(tài)。TCP服務器通知高層的應用進程氮发,客戶端向服務器的方向就釋放了渴肉,這時候處于半關閉狀態(tài),即客戶端已經(jīng)沒有數(shù)據(jù)要發(fā)送了爽冕,但是服務器若發(fā)送數(shù)據(jù)仇祭,客戶端依然要接受。這個狀態(tài)還要持續(xù)一段時間颈畸,也就是整個CLOSE-WAIT狀態(tài)持續(xù)的時間前塔。
3)客戶端收到服務器的確認請求后,此時承冰,客戶端就進入FIN-WAIT-2(終止等待2)狀態(tài)华弓,等待服務器發(fā)送連接釋放報文(在這之前還需要接受服務器發(fā)送的最后的數(shù)據(jù))。
4)服務器將最后的數(shù)據(jù)發(fā)送完畢后困乒,就向客戶端發(fā)送連接釋放報文寂屏,F(xiàn)IN=1,ack=u+1,由于在半關閉狀態(tài)迁霎,服務器很可能又發(fā)送了一些數(shù)據(jù)吱抚,假定此時的序列號為seq=w,此時考廉,服務器就進入了LAST-ACK(最后確認)狀態(tài)秘豹,等待客戶端的確認。
5)客戶端收到服務器的連接釋放報文后昌粤,必須發(fā)出確認既绕,ACK=1,ack=w+1涮坐,而自己的序列號是seq=u+1凄贩,此時,客戶端就進入了TIME-WAIT(時間等待)狀態(tài)袱讹。注意此時TCP連接還沒有釋放疲扎,必須經(jīng)過2??MSL(最長報文段壽命)的時間后,當客戶端撤銷相應的TCB后捷雕,才進入CLOSED狀態(tài)椒丧。
6)服務器只要收到了客戶端發(fā)出的確認,立即進入CLOSED狀態(tài)救巷。同樣壶熏,撤銷TCB后,就結(jié)束了這次的TCP連接征绸【贸龋可以看到,服務器結(jié)束TCP連接的時間要比客戶端早一些管怠。
3.測試用例常見的設計方法
等價類劃分法淆衷、邊界值分析法、錯誤推測法渤弛、判定表法祝拯、正交實驗法。
1.等價類劃分
就是將測試的范圍劃分成幾個互不相交的子集她肯,他們的并集是全集佳头,從每個子集選出若干個有代表性的值作為測試用例
究竟要劃分到何種程度才合適呢?
你有多少資源和時間晴氨,還有康嘉,看是否值得。畢竟無論你怎么測試籽前,總會有未發(fā)現(xiàn)的缺陷存在亭珍,所以敷钾,先解決容易被發(fā)現(xiàn)的問題再說。
2.正交實驗法
當組合條件不多的時候肄梨,窮舉暫時沒問題阻荒,但是,一旦條件多了众羡,組合個數(shù)就會以指數(shù)形式增長侨赡。這個時候,就要用到正交表了粱侣,通過選出有代表性的測試實例羊壹,達到以少數(shù)代替全面的效果。
4.軟件測試的方法
答案來自https://zhidao.baidu.com/question/492182095.html的回答
1甜害、按是否查看程序內(nèi)部結(jié)構(gòu)分為:
(1)黑盒測試(black-box testing):只關心輸入和輸出的結(jié)果舶掖。
(2)白盒測試(white-box testing):去研究里面的源代碼和程序結(jié)構(gòu)球昨。
2尔店、按是否運行程序分為:
(1)靜態(tài)測試(static testing):是指不實際運行被測軟件,而只是靜態(tài)地檢查程序代碼主慰、界面或文檔可能存在的錯誤的過程嚣州。
(5)動態(tài)測試(dynamic testing),是指實際運行被測程序共螺,輸入相應的測試數(shù)據(jù)该肴,檢查輸出結(jié)果和預期結(jié)果是否相符的過程。
3藐不、按階段劃分:
(1)單元測試(unit testing)匀哄,是指對軟件中的最小可測試單元進行檢查和驗證。
(2)集成測試(integration testing)雏蛮,是單元測試的下一階段涎嚼,是指將通過測試的單元模塊組裝成系統(tǒng)或子系統(tǒng),再進行測試挑秉,重點測試不同模塊的接口部門法梯。
(3)系統(tǒng)測試(system testing),指的是將整個軟件系統(tǒng)看做一個整體進行測試犀概,包括對功能立哑、性能,以及軟件所運行的軟硬件環(huán)境進行測試姻灶。
(4)驗收測試(acceptance testing)铛绰,指的是在系統(tǒng)測試的后期,以用戶測試為主产喉,或有測試人員等質(zhì)量保障人員共同參與的測試捂掰,它也是軟件正式交給用戶使用的最后一道工序若皱。
4、黑盒測試分為功能測試和性能測試:
(1)功能測試(function testing)尘颓,是黑盒測試的一方面走触,它檢查實際軟件的功能是否符合用戶的需求。
(2)性能測試(performance testing)疤苹,軟件性能測試分為:
一般性能測試:指的是讓被測系統(tǒng)在正常的軟硬件環(huán)境下運行互广,不向其施加任何壓力的性能測試。
穩(wěn)定性測試也叫可靠性測試(reliability testing):是指連續(xù)運行被測系統(tǒng)檢查系統(tǒng)運行時的穩(wěn)定程度卧土。
負載測試(load testing):是指讓被測系統(tǒng)在其能忍受的壓力的極限范圍之內(nèi)連續(xù)運行惫皱,來測試系統(tǒng)的穩(wěn)定性。
壓力測試(stress testing):是指持續(xù)不斷的給被測系統(tǒng)增加壓力尤莺,直到將被測系統(tǒng)壓垮為止旅敷,用來測試系統(tǒng)所能承受的最大壓力。
5颤霎、其他測試類型:
回歸測試(regression testing)是指對軟件的新的版本測試時媳谁,重復執(zhí)行上一個版本測試時的用例。
冒煙測試(smoke testing)友酱,是指在對一個新版本進行大規(guī)模的測試之前晴音,先驗證一下軟件的基本功能是否實現(xiàn),是否具備可測性缔杉。
隨機測試(random testing)锤躁,是指測試中所有的輸入數(shù)據(jù)都是隨機生成的,其目的是模擬用戶的真實操作或详,并發(fā)現(xiàn)一些邊緣性的錯誤系羞。
開發(fā)流程
軟件測試的基本流程:
1、單元測試霸琴、集成測試椒振、系統(tǒng)測試和驗收測試(確認測試)。
2沈贝、測試需求分析杠人,測試計劃編寫,測試用例編寫宋下,測試嗡善,缺陷記錄,回歸測試学歧,判斷測試結(jié)束罩引,測試報告提交。
3、測試流程依次如下:
a.需求:閱讀需求猛频,理解需求,與客戶传藏、開發(fā)剔桨、架構(gòu)多方交流屉更,深入了解需求。
b.測試計劃: 根據(jù)需求估算測試所需資源(人力洒缀、設備等)瑰谜、所需時間、功能點劃分树绩、如何合理分配安排資源等萨脑。
c.用例設計:根據(jù)測試計劃、任務分配饺饭、功能點劃分渤早,設計合理的測試用例。
d.執(zhí)行測試:根據(jù)測試用例的詳細步驟瘫俊,執(zhí)行測試用例鹊杖。
e.執(zhí)行結(jié)果記錄和bug記錄:對每個case記錄測試的結(jié)果,有bug的在測試管理工具中編寫bug記錄军援。
f.defect tracking:追蹤leader分配給你追蹤的bug.直到 bug fixed仅淑。
g.測試報告:通過不斷測試称勋、追蹤胸哥,直到被測軟件達到測試需求要求,并沒有重大bug赡鲜。
h.用戶體驗空厌、軟件發(fā)布等……
常用的linux 命令
1.ps查看進程
ps -A??顯示所有進程信息
ps -ef|grep ssh??ps與grep 常用組合用法,查找特定進程
最常用的方法是ps aux,然后再通過管道使用grep命令過濾查找特定的進程,然后再對特定的進程進行操作银酬。
?ps aux | grep program_filter_word
ps -ef |grep tomcat?查看Tomcat是否啟動
如果有一大長長長串的東西出現(xiàn)嘲更,說明tomcat是啟動了,第一個是啟動該進程的用戶揩瞪,第二個是該進程的id赋朦,第三個 是占用CPU的百分比,第四個是占用內(nèi)存的百分比.
2.Kill
-9 sigkill can't be caught or ignored
-15 sigterm
Kill -15 ?大部分程序接收到SIGTERM信號后李破,會先釋放自己的資源宠哄,然后在停止。但是也有程序可以在接受到信號量后嗤攻,做一些其他的事情毛嫉,并且這些事情是可以 配置的。如果程序正在等待IO妇菱,可能就不會立馬做出相應承粤。這相當于正常停止進程暴区,停止進程的時候會釋放進程所占用的資源
也就是說,SIGTERM多半是會被阻塞的辛臊、忽略仙粱。SIGTERM多半是會被阻塞的、忽略
Kill -9 admin的必殺令 不過彻舰,也不是所有的程序都會乖乖聽話缰盏,總有那些狀態(tài)下的程序無法立刻相應。
他們的區(qū)別就好比電腦關機中的軟關機(通過“開始”菜單選擇“關機”)與硬關機(直接切斷電源)淹遵,雖然都能關機口猜,但是程序所作的處理是不一樣的。
3.訪問tomcat
訪問tomcat的bin 目錄:
cd /usr/local/tomcat/bin
使用Tomcat關閉命令 ./shutdown.sh
查看是否關閉?ps -ef|grep java
若還沒有關閉透揣,可用kill -97010(pid的端口號)
再次查看是否關閉?ps -ef|grep java
啟動tomcat ./startup.sh
查看tomcat日志
切換到日志文件夾cdusr/local/tomcat5/logs
ls查看目錄中的文件?ls -F查看目錄中的文件?ls -l顯示文件和目錄的詳細資料?
ls -a 顯示指定目錄下所有目錄與文件济炎,包括隱藏文件
常用的sql 語句
1. 查詢
SELECT * FROM 表名稱
DISTINCT 用于返回不同的值,去掉重復的值
SELECT DISTINCT 字段名 FROM 表名
SELECT COUNT(DISTINCT column_name) FROM table_name 指定列的不同值的數(shù)目
SELECT * FROM table_name WHERE column_name LIKE pattern
%”表示任意字符都符合條件
SELECT * FROM member WHERE name like ‘%price%’;
“price”字前后都含有百分號“%”辐真,這就表示“price”字前面和“price”字后面不管是任何字符都滿足查詢條件须尚,即使“price”字前后沒有字符也符合條件
多個字段排序時,用逗號,隔開
SELECT * FROM 表名 ORDER BY 字段1,字段2
2. 更新
UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值
3. 插入
?插入所有字段:
INSERT INTO 表名稱 VALUES (值1, 值2,....)
插入指定字段:
INSERT INTO 表名(字段1侍咱,字段2...) VALUES (字段1值耐床,字段2值...)
4. 排序
SELECT Company, OrderNumber FROM Orders ORDER BY Company [desc] 升序或降序
5. 關聯(lián)查詢
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P = Orders.Id_P
6.刪除
DELETE FROM 表名 WHERE 字段名=值(條件)
7.英文版的數(shù)據(jù)庫,數(shù)據(jù)庫中的字段值是unicode編碼的
首先看看字段類型是不是 : char ->nchar varchar ->nvarchar text ->ntext
然后在查詢時加入N:select * form table where city=N'上海'
或者
在連接數(shù)據(jù)庫的url后面添加?useUnicode=true&characterEncoding=utf8
8限制查詢結(jié)果集
SELECT TOP 10 * FROM MY_TABLE? --查詢前10條記錄
SELECT TOP 10 PERCENT * FROM MY_TABLE --查詢所有記錄的前10%的記錄