發表文章

程式語言_術語筆記1_副程式的種類

圖片
副程式之種類: 1.單純呼叫型/回傳副程式(Simple Call-Return Subprogram) (1)Def:當副程式被呼叫運行時,程式的控制流程會跳到副程式依序執行整區塊, 當執行完整段副程式則再將控制權交還給主程式,且由主程式呼叫副程式下一次呼叫才會再次被執行。 (2)副程式於控制流程中的五種限制: 1.不可進行遞迴呼叫 2.需要明顯的呼叫陳述 3.副程式每次呼叫都必須執行完畢 4.副程式每次被呼叫時必須立即轉移控制權給它 5.於主程式階層中任一時刻只會有一個程式單元在執行。 2.遞迴副程式(Recursive Subprogram) (1)Def:假設一個副程式A可以呼叫A自己 或者可呼叫副程式B,而B又去呼叫副程式A自己 (2)遞迴種類 1.直接遞迴:副程式自己呼叫自己 E.g. A->A 2.間接遞迴:副程式可透過其他副程式來呼叫自己 E.g. A->B->A *大量使用Recursive Call會造成的問題?? 副程式的呼叫會在啟動系統中建立記憶體(紀錄實體), 若大量使用會造成紀錄實體過多而超過程式預設記憶體限制,然後就當掉。 另一層面於配置記憶體時也會耗費額外的時間,大量使用容易造成效能會降低。 3.例外處裡程式(Exception Handler) 例外一般通常指的就是程式運行時由軟體或硬體造成之異常情況。 當例外發生且被系統偵測到時,系統會自動去找尋一個程式單元來執行並處裡此例外。 4.互動程序/協程(Coroutine) 可以中斷及繼續執行的函式呼叫 在一般的程式語言中,呼叫某個函式時,該函式一定是從頭開始執行: Coroutine則是 當程序啟動另一個程序執行(函式呼叫)時,會先將自己當前狀態儲存起來,等下次被啟動執行時,會由上次執行結束的地方繼續往下執行,而非從頭執行。 http://blog.ez2learn.com/2010/07/17/talk-about-coroutine-and-gevent/ http://www.csl.mtu.edu/cs4411.ck/www/NOTES/non-local-goto/coroutine.html https://www.zhihu.com/question/21483...

T-SQL筆記2_Stored Procedure觀念_為何要使用它_如何建立

圖片
Stored Procedure (預存程序) 是一個 T-SQL 陳述式之集合 有點類似其他語言中的  函數(function) 或是 方法(method , subroutine) 可以透過呼叫這些預存程序之名稱 來執行對應對應陳述式集合(命令集) Stored Procedure優點: 1.為資料庫物件(DataBase Objects) ,存置於DB中 2.將方法功能進行封裝 3.可以確保功能是能夠跨應用程式做調用呼叫的 4.比起常規查詢來的更有效率!!!! 試想假若商業邏輯因過於複雜使SQL陳述過長又龐大 ,這時若仍直接ado.net傳送一大串SQL就會導致網路傳輸量過多也會較耗費時間。 但若改為SP則用戶端(client)只會傳遞SP Name給SQL Server就可節省傳輸量。 為何要學習  Stored Procedure 這項技術?? 在大型企業公司中 多半系統是伴隨著DB(可視為系統命脈) 做連動性交互,也因此時常會遇到 DB之間可能存有同一時間在多個大系統做類似DB操作的程式運行 功能可能一樣 ,也可能不一樣 有的甚至是像打棒球或是接力賽交接棒、傳球之概念般 可能做DB操作回傳之結果 會從A系統做完一些處裡再傳給B系統再跑到C系統去..... 更可能反敘倒回來 所以會有不只一個應用程式(系統) 去對 DB 資料表做搜尋、更新.....等等 由上述示意圖可以看到黃色方框 可以理解為  每個不同部門或者單位各自所掌管之系統 可能都有存在一段程式 是 對DB中做更新的操作的話 假設四個不同應用系統都在Local端 所運行的這區塊程式功能都是做一樣的事情時 當一有功能調整 此時你會有需要對四個地方去做同樣調整 共需要做四次更改 這是違背開發上降低重複動作 設計觀念的 預存程序之優點就在於可以集中控管做功能代碼修改之存取處裡 功能版本統一更新(一次到位) Stored Procedure 就是一種被各個不同應用程式呼叫的一個T-SQL執行命令集 建立  Stored Procedure 假設我們目前要做的一串命令集如下 (會有極高重複使用可能) 1 2 3 4 SELECT ProductID ,...

SQL作資料庫附加過程時吃鱉_在附加資料庫時發生錯誤。請在 [訊息] 資料行中按一下超連結,以取得詳細資料

圖片
資料庫附加動作示範 在附加資料庫時發生錯誤。請在 [訊息] 資料行中按一下超連結,以取得詳細資料 解法1.將 Management Studio用系統管理員重啟 解法2.將 MDF、 LDF檔案放置於如下路徑 C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA 成功附加資料庫!!!!

T-SQL筆記1_變數之宣告與賦值_區域VS全域變數_打印_串接(字串)_變數四則運算_Batch_CAST運算_判別式_迴圈

圖片
T-SQL變數之宣告與打印 在T-SQL程式語法中定義變數名稱時 習慣在前方加上@符號(讀作: at) 若宣告時沒給值則預設為NULL T-SQL變數使用上通常就類似一般程式語言用途 你可能用他作一些變數存放 可能作一些迴圈的計數或流程切換等用途 或是存取藉由預存程序(Stored proceddure)或函式(functon)所回傳之資料數值 此外當你在做變數命名時請勿用到保留字(Keyword) https://technet.microsoft.com/zh-tw/library/ms189822(v=sql.105).aspx T-SQL是否也存有  所謂區域變數與全域變數的觀念呢??? 在 Microsoft SQL Server 當中,把所有的變數都當成區域變數,換言之, 所宣告的變數只可在同一個批次、預存程序或該變數所定義的區塊中做使用。 當然你在操作變數時 當你打上  @開頭後 你會發現 Management Studio 的 IntelliSense(自動陳列語法提示) 其實阿 在較早版本的 MS SQL  針對T-SQL變數這塊相關文件中有提到 若想要將宣告之變數歸類為 global variables 則在前頭加上兩個@符號即可 比方像是 @@ROWCOUNT @@IDLE 事實上這是有誤解的!!!這些都是 系統函式而非全域變數!!! 在官方網頁上也可以看到這類敘述章節是被歸類於函式部分的 https://docs.microsoft.com/zh-tw/sql/t-sql/functions/rowcount-transact-sql T-SQL之字串串接(+)與強制轉型(CAST) 在我們嘗試給輸出結果前方加上一串字串時 會出現的常遇錯誤 此時使用之 +  通常是實作 String 的 Concatenation 功能 所以必須對int型態之變數做強制轉型(CAST運算) 那剛剛我們已經知道如何宣告變數並且同時賦予數值 現在來示範 中途才賦值的語法 T-SQL變數之宣告與中途賦值(SET)/(SELECT) 中途指派數值給變數除了用SET 也可以指派比...

SQLite技術筆記_使用VB.NET_跨平台輕量級DB_讀取操作可多工、可動態連結_Serverless_實際操作

圖片
SQLite不是一個用戶端/伺服器結構的資料庫引擎,而是被整合在用戶程式中。 也可視為一種Library 當中有可以調用一些常見資料庫操作的方法。 不僅遵守  ACID 性質 單元性 (Atomicity) 一致性 (Consistency) 隔離性 (Isolation)  持續性 (Durability) 作為嵌入式資料庫,是應用程式、網頁瀏覽器於本地/用戶端儲存資料的常見選擇。 SQLite之設計: 主要優勢: 不像常見的 用戶端/伺服器結構資料庫管理系統(多需要跨process做溝通處裡) SQLite引擎並非緊緊為一個應用程式與之通訊的獨立行程。 又被稱為具有Serverless性質,所以更不需要去擔心Server維護等瑣事。 無論是位在開發上還是部署上都是以 一個function(函式)作為基本單位。 Most SQL database engines are implemented as a separate server process. Programs that want to access the database communicate with the server using some kind of interprocess communication (typically TCP/IP) to send requests to the server and to receive back results. SQLite does not work this way. With SQLite, the process that wants to access the database reads and writes directly from the database files on disk. There is no intermediary server process. There are advantages and disadvantages to being serverless. The main advantage is that there is no separate server process to install, setup, conf...

各種不同類型同事的相處_貓頭鷹X老虎X孔雀X無尾熊

圖片
自上週會議後 接獲的新工作項目 主管在進行描述時的過程 沒錯我的表情如下可以清楚呈現 (武煞煞~~~) 貓頭鷹型 (精確型Conformity) 主管:  這次阿  除了介面上供人員進行操作之外 因為 ....... X%$^&()U)U.... ))J(&T%E$........ 怕人員沒做處裡....... ......所以後段還需要增加一支 ........AutoJob......是要做........... 要再測試一下 查詢資料時哪段過程耗時比較久 , Index要記得加 無尾熊型 (耐心型Pace/Patience) 我: ... OK (OS:我的專案已經從  蜥蜴 進化成  酷斯拉而且又長翅膀了 功能又多啦!!) 主管:後來又將一些事項緣由 從頭到尾講述了一番 並詢問我  你會怎麼做呢  ?? 這塊後續你可能需要做進度紀錄的機制 我: 你會怎麼做?? 這句話還滿動聽的  說實在的!!! 我會嘗試看看 生成本地端紀錄暫時表去儲存當前進度 供後續 Job再度開啟時 去讀紀錄 步驟1 步驟2 ..... 步驟N 但是  這塊需要做過  Run Risk 再功能上線 會再找同事請教看看以往做過類似經驗Case的同事 他討論看看 =============================================================== 過了幾天接獲另一個需求 恩   剛好是我不太擅長  不曾摸過的!!!! 老虎型 (支配型Dominance) 同事A:這個阿  這個我幫你做掉了啦 我:  喔 !!  這麼快呀 ~~那我還是想請教一下這塊處裡問題 需求單實在有點不太懂 同事A: 那當然呀 ...   來來  跟你說這塊 該怎麼修改 =============================================================== ...