開篇語略;
下圖來引出話題:
場景:
個人使用者投遞簡歷,由於繁多的業務邏輯判斷和資料庫的不斷讀取(這裡就不用多說了吧),當個人使用者單個/批量投遞簡歷的時候,點選投遞按鈕之後會很長一段時間等待返回結果。
需求:
提公升使用者體驗,解決點選投遞按鈕之後的漫長等待,給人一種流暢感,當然不能去掉哪些業務邏輯判斷。。
設計:
將投遞簡歷的資料先存放到記憶體中(不需要參雜任何業務邏輯判斷,單純的儲存起來),直接返回投遞提示。
做乙個獨立的投遞簡歷方法,把複雜耗時的操作放到這個方法中,然後操作儲存起來的資料。
用非同步的方法執行後台任務來呼叫此方法,執行簡歷的投遞入庫。
實現:(這裡簡單了解一下用到的方法)
資料的儲存:queue(佇列)
system.collections.queue類表示物件的先進先出集合,儲存在 queue 中的物件在一端插入,從另一端移除。
queue能對集合進行順序處理(先進先出),能接受null值,並且允許重複的元素.
先行參考:
非同步的執行:task(任務)
task 跟執行緒不是一對一的關係,有點類似執行緒池,但 task 相比執行緒池有很小的開銷和精確的控制。
強烈推薦:
封裝好的task方法:
測試**:
///簡單的梳理一下 有什麼好的建議或意見都可以提出來! 哇哈哈…///投遞簡歷
///public
class
postresumequeue-"
, resumeid, infoid));
}//////
非同步執行任務 投遞簡歷
/// ///
public
static
void
postresumetodbasync()
//////
投遞簡歷入庫
/// ///
public
static
void
postresumetodb()
} }
}
梳理乙個產品的步驟
作為乙個平台 專案 負責人,必須要做到對產品有把控力,沒有人比你更熟悉它。列舉平台有幾個應用,包括未來的半到一年要做的應用。能夠明確每乙個產品是幹什麼的,解決什麼問題的!梳理出每乙個應用的主流程,並畫出來,能夠快速描述出來。梳理出每乙個應用的核心名詞,每乙個應用都會有比較內聚的名詞,如果是舊的系統基...
通過celery非同步處理以乙個查詢任務
今天介紹通過celery實現乙個非同步任務。有這樣乙個需求,前端發起乙個查詢的請求,但是發起查詢後,查詢可能不會立即返回結果。這時候,發起查詢後,後端可以把這次查詢當作乙個task,並立即返回乙個能唯一表明該task的值,如taskid 使用者後面可以通過這個taskid 隨時檢視結果 使用者收到這...
掛起乙個任務
掛起乙個任務 描述 呼叫此函式去掛起乙個任務,如果傳送到ostasksuspend 的任務的優先順序是要掛起的任務或者是 os prio self,那麼這個任務將被掛起。引數 prio 需要掛起任務的優先順序。如果指定os prio self,那麼這個任務將自己掛起,再發生再 次排程。返回 os n...