有效避免使用遞迴

2021-05-22 10:44:14 字數 685 閱讀 5918

例項:

自動化指令碼管理工具,資料儲存在伺服器,讀到客戶端後,需要建立乙個資料結構,從上到下順序為:

folder-->object-->control-->operation-->parameter

folder-->object-->operation-->parameter

folder-->case-->caseprocess-->parameter

通過每個物件的parentid和id來建立資料結構

資料量:folder:350, object:400,control:1000,operation:3000,parameter:2500

常規遞迴:

需要執行的次數為350x400x1000x3000x2500,要完成這樣乙個資料結構,需要超過20分鐘的時間

沒有乙個使用者願意等待這麼長時間的,那麼有沒有辦法讓時間短一些呢?那還是有的

方法:從底層做起,有底向上,將350x400x1000x3000x2500的乘變成+,就能有效節省時間了

迴圈次數3000x2500

迴圈次數1000x3000

遞迴:350x400x1000x3000x2500  = 1050000000000000

不遞迴:1000x3000+3000x2500 + 400x1000+ 350x400 = 11040000

兩相比較,誰快水漫一目了然了

sql注入方式及如何有效避免

首先提及sql注入這個題目,也許大家會笑笑,覺得這是一件比較低階的攻擊方式,但事實上,正是這種不屑,就可能會導致我們 資料庫伺服器被攻擊,甚至伺服器許可權都被提走,這種例子,以不鮮見。以下是我在寫orm時sql注入這塊,所研究的心得,分享給大家,有可能說的不對,還望大家指正。先來看下這段sql qu...

避免使用vector bool

作為乙個stl容器,vector僅僅有兩點不正確。首先。它不是乙個stl容器。其次,它並不儲存bool。除此之外。一切正常。乙個物件要成為容器,就必須滿足c 標準中列出的全部條件。當中乙個條件是,假設c是包括物件t的容器,並且c支援operator,那麼以下的 必須可以被編譯 t p c 0 換句話...

10 避免使用with

程式經常需要對單個物件依次呼叫一系列方法。function status info 複製 function f x,y 複製 變數作用域和物件命名空間之間的衝突使得with 塊異常脆弱。error status connecting status connecting widget.prototyp...