系統在空閒是可以跑一些任務來進行一些統計方面的運算,大多是取資料,插資料,統計資料。這些任務有時候是有依賴關係的,比如a任務統計依賴b任務完成,期初我們把b任務安排在2點跑,a任務3點跑,可是b任務如果在乙個小時內不能完成,在跑a任務的時候就會有問題。那麼必須要保證b任務是完成的情況下才開跑a任務。
所以是不是可以考慮用乙個鍊錶這種資料結構把任務串起來執行,並且也保證每個任務的業務都在**層面上分開。
basetask:
public abstract class basetask {
private string id;
public abstract void execute();
public string getid() {
return id;
public void setid(string id) {
this.id = id;
******basetask:
public abstract class ******basetask extends basetask{
public void execute() {
beforeexecute();
dotask();
donexttask();
afterexecute();
public void donexttask(){
if(nexttasks != null){
for (basetask task : nexttasks) {
task.execute();
public abstract void beforeexecute();
public abstract void afterexecute();
public abstract void dotask();
private string name;
private basetask parenttask;
// 每乙個任務都可以擁有多個後續任務 這些任務都依賴本任務的執行完成
private list nexttasks;
public string getname() {
return name;
public void setname(string name) {
this.name = name;
public basetask getparenttask() {
return parenttask;
public void setparenttask(basetask parenttask) {
this.parenttask = parenttask;
public list getnexttasks() {
return nexttasks;
public void setnexttasks(list nexttasks) {
this.nexttasks = nexttasks;
processgroup:
public abstract class processgroup {
// 每個任務程序執行的第乙個任務邏輯
private basetask firsttask;
public basetask getfirsttask() {
return firsttask;
public void setfirsttask(basetask firsttask) {
this.firsttask = firsttask;
public abstract void beforeprocess();
public abstract void afterprocess();
public void doprocess(){
beforeprocess();
firsttask.execute();
afterprocess();
******processgroup :
public class ******processgroup extends processgroup{
@override
public void beforeprocess() {
system.out.println("beforeprocess");
@override
public void afterprocess() {
system.out.println("afterprocess");
這種抽象侷限性太大,把所有任務串聯起來會導致任務需要手動拆分,依賴關係植入**,難以維護。並且多工依賴依然無法符合要求。
字典樹(多叉樹)
實現乙個 trie 字首樹 包含 insert,search,和 startswith 這三個操作。示例 trie trie new trie 你可以假設所有的輸入都是由小寫字母 a z 構成的。保證所有輸入均為非空字串。總結 這道題是字典樹的應用,在做這道題時花了不少時間,但是確實這個不是什麼難題...
多叉樹轉二叉樹
多叉樹的根結點為二叉樹的根,多叉樹的結點的第乙個兒子變成二叉樹對應結點的左孩子,多叉樹的結點的右兄弟變成二叉樹種該結點的右孩子。如下 c語言 01 include 02 include 03 include 04 include 0506 typedef struct treenode treeno...
多路查詢樹 多叉樹和B樹
一 二叉樹存在的問題 二叉樹需要載入到記憶體,若二叉樹的結點少沒有什麼問題,但是若二叉樹的節點很多 比如1億 可能存在如下問題 1 在構建二叉樹時,需要多次進行 i o 操作 海量資料存在資料庫或檔案中 結點海量,構建二叉樹時速度有影響 問題2 結點海量也會造成二叉樹的高度很大,會降低操作速度。二 ...