測試中--“死鎖”
死鎖:
定義:指兩個或兩個以上的程序在執行過程中,由於競爭資源或者由於彼此通訊而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖進。
產生條件:
- 互斥條件
- 請求和保持條件
- 不剝奪條件
- 環路等待條件
產生原因:
- 競爭資源引起程序死鎖
- 可剝奪資源和不可剝奪資源
- 競爭臨時資源
測試中遇到的例子:
在和團貸聯調的時候因為存在存管戶餘額沒有被消費,然後介面就一直顯示充值中
處理方法是團貸清了資料;
發生的原因後期沒有復現,因為團貸方的邏輯和資料系統,不清楚也無法查詢,只是團貸反饋未被消費的原因是:餘額不足,但實際還款金額足夠,因為導致無法復現和解決,只有等平臺(團貸)方反饋。
通過此問題,得出結論,測試不是萬能的不是什麼問題都能測試到,比如以下原因導致:
1、實際操作的,在測試環境是模擬操作,比如扣款,充值之類的,設計到實際的賬務處理
2、第三方的問題,比如和團貸方聯調,(不能操作和發現其他關聯絡統導致的問題,比如平臺,存管)
3、細節金額考慮不全(涉及金額類)
總之,涉及到金額類的,都不是善茬兒
相關推薦
測試中--“死鎖”
死鎖: 定義:指兩個或兩個以上的程序在執行過程中,由於競爭資源或者由於彼此通訊而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖進。 產生條件: 互斥條件 請求和保持條件 不剝奪條件
Python中死鎖的形成示例及死鎖情況的防止
程序 ast mon error: none args ria 在那 n) 死鎖示例搞多線程的經常會遇到死鎖的問題,學習操作系統的時候會講到死鎖相關的東西,我們用Python直觀的演示一下。死鎖的一個原因是互斥鎖。假設銀行系統中,用戶a試圖轉賬100塊給用戶b,與此同時用戶
手動釋放oracle資料庫中死鎖的物件鎖!
常常有朋友在說他要往資料庫中的某張表插入資料,現在表被別人鎖住了,半天不釋放。 首先可以看見資料庫中沒有物件被鎖定。 SQL> conn /as sysdba 已連線。 SQL> select * from v$locked_object; 未選定行 現在來
導致DllMain中死鎖的關鍵隱藏因子
有了前面兩節的基礎,我們現在切入正題:研究下DllMain為什麼會因為不當操作導致死鎖的問題。首先我們看一段比較經典的“DllMain中死鎖”程式碼。 //主執行緒中 HMODULE h = LoadLibraryA(strDllName.c_str
我來說說作業系統中 死鎖與飢餓的區別辨析
我覺得可以這麼理解死鎖和飢餓的區別,首先死鎖是同步的,飢餓時非同步的。也就是說,死鎖可以認為是兩個執行緒或程序同時在請求對方佔有的資源,飢餓可以認為是一個執行緒或是程序在無限的等待另外兩個或多個執行緒或程序佔有的但是不會往外釋放的資源。 介紹“死鎖”的例子1:如果執
關於J2EE中死鎖問題的研究
2006-07-10 07:00 作者: Michael Nonemacher 出處: bea 大多數重要的應用程式都涉及高度併發性和多個抽象層。併發性與資源爭用有關,並且是導致死鎖問題增多的因素之一。多個抽象層使隔離並修復死鎖環境的工作變得更加困難。 通常,當同時執
JAVA中 死鎖&線程池
創建線程 [] demo ron 就是 sleep ner obj 執行 死鎖現象:DeadLock,當多線程訪問互斥的網絡資源時(共享資源,但是訪問順序相反),由於線程安全問題而加的多層同步,導致程序鎖死現象,稱為死鎖。 解決死鎖的方法:盡量減少加的同步的次數。 死鎖
併發程式設計中死鎖、遞迴鎖、程序/執行緒池、協程TCP伺服器併發等知識點
1、死鎖 定義; 類似兩個人分別被囚禁在兩間房子裡,A手上拿著的是B囚禁房間的鑰匙,而B拿著A的鑰匙,兩個人都沒法出去,沒法給對方開鎖,進而造成死鎖現象。具體例子程式碼如下: # -*-coding:utf-8 -*- from threading import Thread,Lock,RLoc
測試 ThreadPoolExecutor 中遇到的近似死鎖問題
今天在做一個簡單的小test時,發現了ThreadPoolExecutor的一個問題,先列出程式碼:主要功能是往一個連結中插入、刪除資料 連結串列的節點: public class BoundedNode { public Object value;
async、await在ASP.NET[ MVC]中之線程死鎖的故事
div pos ask 其他 flow ron ttpClient com async 場景重構 public ActionResult Index(string ucode) { string userInfo = G
C#中lock死鎖實例教程
文件 校驗 clas style 個人 fault adding 為什麽 mvc 5 在c#中有個關鍵字lock,它的作用是鎖定某一代碼塊,讓同一時間只有一個線程訪問該代碼塊,本文就來談談lock關鍵字的原理和其中應註意的幾個問題: lock的使用原型是: lock(X
C# 串口接收數據中serialPort.close()死鎖
字符 fig ext 判斷 com end 直接 except 之間 最近在做一個有關高鐵模擬倉顯示系統的客戶端程序,在這個程序中要運用串口serialPort傳輸數據,因為每次接收數據結束後要更新UI界面,所以就用到了的Invoke,將更新UI的程序代碼封裝到一個方法中,
【Java TCP/IP Socket】TCP Socket通信中由read返回值造成的的死鎖問題(含代碼)
ray inpu 網絡 數據 code public 文件讀取 情況 從服務器 書上示例 在第一章《基本套接字》中,作者給出了一個TCP Socket通信的例子——反饋服務器,即服務器端直接把從客戶端接收到的數據原原本本地反饋回去。
【Java TCP/IP Socket】深入剖析socket——TCP通信中由於底層隊列填滿而造成的死鎖問題(含代碼)
parameter 兩個 因此 tar 機制 至少 基礎 named 測試 基礎準備 首先需要明白數據傳輸的底層實現機制,在http://blog.csdn.net/ns_code/article/details/15813809這篇博客中有詳細的介紹,在上面的博
基於innodb_print_all_deadlocks從errorlog中解析MySQL死鎖日誌
search 屬於 賦值 lock png rim img 顯示 dea 本文是說明如何獲取死鎖日誌記錄的,不是說明如何解決死鎖問題的。 MySQL的死鎖可以通過show engine innodb status;來查看,但是show engine innodb s
java多線程中的死鎖情況讀書筆記
bubuko 實例 syn 釋放 splay inf info sys 資源 多線程中的死鎖 在前面的分析中,我們知道一個對象可以用Synchronized方法或者其他的加鎖形式來防止別的任務在互斥還沒有釋放的時候就訪問這個對象。 試想一下這樣的情況:某個任務在等待另一個任
【Java TCP/IP Socket程式設計】----深入剖析----TCP資料傳輸中的死鎖和效能
目錄 死鎖問題 資料傳輸效能 案例 --------筆記來自於書籍《Java TCP/IP Socket程式設計》 死鎖問題 在TCP資料傳輸底層實現中(詳細參見https://blog.csdn.net/lili13897741554/article/
Oracle中發生表加鎖、死鎖的原因,檢視,與解決方法
一.表加鎖、死鎖出現的現象 1.對資料庫操作update,insert,delete時候,資料庫無法更新,操作等待時長,操作結果不發生改變 2.在程式中,底層(資料訪問層)操作時候,不成功,資料庫連線超時,無法操作,或者操作等待時長等現象 【加鎖的原理】:比如一個操作在進行修改一表,它
Java中常見死鎖的例項
順序死鎖:過度加鎖,導致由於執行順序的原因,互相持有對方正在等待的鎖 資源死鎖:多個執行緒在相同的資源上發生等待 由於呼叫順序而產生的死鎖 public class Test { Object leftLock = new Object(); Object rightLock
關於在專案中遇到MySQL資料庫死鎖的問題
在MySQL中, 當一個事務去更新某條資料, 還沒有提交的時候, 第二個事務去更新該資料, 則會出現等待獲取鎖超時異常: >> Lock wait timeout exceeded; try restarting transaction 此異