發表文章

目前顯示的是 5月, 2024的文章

[Program] 三分鐘連猴子都能理解的遞迴核心

圖片
  不論您是否有寫過程式,本文目的就是讓任何人都可以在三分鐘理解遞迴的核心。 遞迴是程式中很常使用的到,但對於初學者來說確實有一點門檻,本篇就以[反向重組字串]範例說明。 目標: 反向重組字串,假設我有一個字串為"ABCD",我要反向重組字串為"DCBA"。 這個看似很容易,但是 如果有10000個字呢?  這時候就可用使用程式的 遞迴 來完成了。 反向重組字串,我們從人類的角度看,就是: 『把最後一個字記錄下來,並且把那個字移除,並組合起來』 然後不斷重複這個邏輯對吧,這就是遞迴! 而程式中就會把這個邏輯定義成一個方法 function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 遞迴我認為可以拆解成兩個字,對照本範例如下: *把最後一個字記錄下來,並且把那個字移除 => 「遞」 *資料組合起來 => 「迴」 *要執行「迴」的步驟時,須要觸發判斷條件,也就是終止「遞」的步驟,否則就是無窮迴圈!! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 而把這個過程轉成一個固定邏輯,重複使用該邏輯就是遞迴的核心!!! 遞迴的核心就是 "自己" 呼叫 "自己" ! 也因為自已呼叫自己,會有一層一層往內傳、多層嵌套的概念,就向俄羅斯娃娃一樣~ 那先用一張圖,快速理解 反向重組字串 的過程。 後面用文字說明主邏輯: 1. 第一次呼叫方法,傳入 'ABCD' ,紀錄最後一碼 'D' ,並移除 'D' ,將 'ABC' 往下傳。 2. 第二次呼叫方法,傳入 'ABC' ,紀錄最後一碼 'C' ,並移除 'C' ,將 'AB' 往下傳。 3. 第三次呼叫方法,傳入 'AB' ,紀錄最後一碼 'B' ,並移除 'B' ,將 'A' 往下傳。 4. 第四次呼叫方法,傳入 'A' ,紀錄最後一碼 'A' ,並移除 'A...

[Web] 使用 OpenSSL 建立開發測試用途的自簽憑證(Self-Signed Certificate)和設置Domain Name

圖片
  這次要實作 OpenSSL 來建立自簽憑證和設置Domain Name,這個憑證是用來做開發測試用途,不是真正的憑證,所以不用花錢買,只要自己建立就可以了。 本次多數都是參照保哥的文章,由於我使用 windows,如果是 linux 或其他系統的話,請參照 保哥的文章。 實作環境: 本機 以下示範如何在 Windows 主機使用 OpenSSL 建立 CA 憑證。 一. 第一步是要取得 OpenSSL。建議使用 Cmder,以下也以 Cmder 示範。( https://cmder.app/  下載mini版本即可。) 二. 建議目錄放置產生的憑證,以 D:\SSL 示範 三. 建立 ssl.conf 設定檔,內容如下: [req] prompt = no default_md = sha256 default_bits = 2048 distinguished_name = dn x509_extensions = v3_req [dn] C = TW ST = Taiwan L = Taipei O = miketest1234 CA OU = miketest1234 CA emailAddress = miketest1234@mail.com CN =  .miketest1234.net [v3_req] subjectAltName = @alt_names [alt_names] DNS.1 =  .miketest1234.net DNS.2 = *.localhost DNS.3 = localhost IP.1 = 127.0.0.1 四. 透過 OpenSSL 命令產生私密金鑰(server.key) 與 自簽憑證檔案(server.crt): openssl req -x509 -new - nodes - sha256 - utf8 - days 3650 - newkey rsa : 2048 - keyout server .key -out server .crt - config ssl .conf 五. 透過 OpenSSL 命令產生 PKCS#12 憑證檔案 ( .pfx 或  .p12),此步驟要輸入密碼來保護憑證檔案。 ope...

[Web] Nginx+IIS+asp.net mvc 實現負載平衡(load balancing)

圖片
  當網站的人數使用量增加時,會出現效能、吞吐量...議題,所以常見的做法就是負載平衡,簡單說就是同個系統重複建置(例如建置4個: A, B, C, D),但是透過一個主要的入口,系統自動分配使用者訪問到A, B, C, D其中一個系統,達到分散流量的目的。 本次目的: 使用 Asp.net + Mvc + NGinx + IIS 分布式部署和負載平衡,一個網站分布式部署四個port分別是8001~8004,並且我使用nginx會設定port 8888,並且由系統自動分配導至 8001~8004 其中一個。 Step1: 建立Asp.net mvc網站 (這邊就是新開專案而已。) Step2: IIS建立網站 執行發佈後,發佈檔複製四個,每一個的Index.chtml都給上對應編號1~4。 並建立四個網站,port從 8001~8004 Step3: 安裝 Nginx (官網: https://nginx.org/en/download.html ) 我使用的是 windows 版,版本是 1.20, 安裝後就解壓縮。 。 Step4: 設定 Nginx 將 conf\nginx.conf 內容置換為以下。 worker_processes 1 ; events { worker_connections 1024 ; } http { include mime.types; default_type application/octet-stream; sendfile on ; keepalive_timeout 65 ; #gzip on; upstream myapp { server 127.0.0.1:8001 ; server 127.0.0.1:8002 ; server 127.0.0.1:8003 ; server 127.0.0.1:8004 ; } server { listen 8888 ; location / { proxy_pass http://mya...