🚫 Ad Blocker Detected

Please disable your AD blocker to continue using this site. Ads help us keep the content free! please press keyboard F5 to refresh page after disabled AD blocker

請關閉廣告攔截器以繼續使用本網站。廣告有助於我們保證內容免費。謝謝! 關閉後請按 F5 刷新頁面

0%

前言

本篇利用RabbitMQ client來簡單實現MQ功能.

在RabbitMQ中有很重要兩個角色,ProducerConsumer,下面這個範例使用c# console來實現.

我個人覺得APMQ協議和Http協議有點類似,一樣有Header(Properties),body…等等概念.

Producer Code

一開始我們宣告一個 ConnectionFactory 並設置RabbitMQ Server連接參數

  • UserName:使用者帳號
  • Password:使用者密碼
  • HostName:連接FQDN或IP

RabbitMQ預設密碼是 guest

//建立連接工廠
ConnectionFactory factory = new ConnectionFactory
{
    UserName = "guest",
    Password = "guest",
    HostName = "localhost"
};

呼叫factory.CreateConnection 建立連接RabbitMQ連接物件,並呼叫 CreateModel方法建立一個channel Model

Read more »

前言:

如果目前場景遇到一定流程階段,但流程內容依照邏輯或情境不同也有所不一樣. 這時可以考慮使用樣板模式(TemplatePattern)

生活舉例:

因為十二年國教,所以基本上每個人都有上學的經驗

每天上學最少要經歷下面過程(我做一些簡化)

到學校=>上午上課=>吃午餐=>下午上課=>放學回家

可以看到不管是國小、國中、高中 至少都有上述的過程

但每個過程內容可能會依照年級階段不同,也有所不一樣

例如:

  • 吃中餐:高中可能是吃便當,但國小是吃營養午餐,雖然都是吃飯但內容不一樣。
  • 上午上課:都是教數學,但高中教微積分,國小教加減乘除。
Read more »

在Github這邊要先建立兩個Repository

  1. Blog Code
  2. Blog Hosting

Blog Code

這個Repository是利用Hexo cli樣板來撰寫Blog.

像我目前使用的MyBlog

建立完自己的Code Repository後.

將他clone到自己電腦上面.

執行下面幾個步驟

  1. 打開此Repository資料夾
  2. 打開CMD並進入此資料夾
  3. 利用NodeJS NPMnpm install hexo -g 就會開始下載 img
  4. 執行完第三步後再打Hexo init指令,安裝看建立Hexo將檔案.

Blog Hosting

Read more »

前文:

網路上已經有許多Blog託管平台 例如:Google Blog,痞客邦….為何我還要自己寫這篇跟大家分享?

因為上面提供的平台固然好用,但我並無法100%的去修改我想要的樣式或版面.

如果我想要有100%彈性修改我的Blog我就必須建立自己的網站.

但要給別人Hosting需要另外花一筆費用…

就有本次系列文 Github (hosting) + Hexo (Blog) + Appveyor(CICD)

這個搭配有幾個優點:

  1. 完全免費
  2. 使用MarkDown撰寫Blog就是爽.
  3. 練習使用CICD線上工具.
  4. Hexo有許多不一樣絢麗的Theme可以更換且更換方式簡單

撰寫發布流程大概如下圖

img

Read more »

前文:

在Func和Action泛型委託中 有 In , Out 兩個關鍵字

那到底是神麼意思呢?

讓我們一起看下去….

//Action delegate
public delegate void Action<in T>(T obj);

//fun delegate
public delegate TResult Func<in T, out TResult>(T arg);

上面程式碼我列出ActionFunc 委派方法各其中一個重載

我們可以發現到泛型中有關鍵字 inout 這是代表神麼意思呢?

讓我們繼續看下去…..

解說:

分享前先探討一個問題 泛型是否可以父類別指向子類別

Read more »

前文:

這個文章和大家分享解說 Func<>和Action<>

最後帶著大家來實現自己的Linq Where

先來看 Func<> ,Action<>原始定義

我們發現Func<> ,Action<> 其實本質就是委託 ,雖然有十幾個重載 但大同小異

public delegate TResult Func<out TResult>();

public delegate void Action<in T>(T obj);

Func固定最後一個泛型參數為方法回傳值,其餘是傳入參數

public delegate TResult Func<in T, out TResult>(T arg);

解說Func:

宣告一個Func<Person,string>委託 _thunkCheckAge
_thunkCheckAge委託指向CheckAge方法
執行_thunkCheckAge委託 (執行CheckAge方法)

Read more »

前文:

成為.Net高手Delegate 是必備武器之一

今天小弟和大家分享我所認知的Delegate

一開始我們先來看看Delegate到底是不是類別


範例解說:

宣告一個 voidDelegate 委託

1
2
3
4
5
6
7
8
public delegate void voidDelegate();

static void Main(string[] args)
{
Console.WriteLine($"delegate is class? {typeof(voidDelegate).IsClass}");

Console.ReadKey();
}

執行結果:Yes 委託是一個特別的類別

但委託物件方式很特別 他在宣告時必須傳入**[建構子參數]** 而建構子參數是**[方法]**

Read more »

裝飾者模式是一個很精美且優雅的模式

本篇範例 文字內容->AES加密->Zip檔附加密碼->輸出儲存

情境
有個需求要做

  • 文字內容->壓縮zip(附上密碼)->輸出儲存
    又改成…

  • 文字內容->AES加密->輸出儲存
    需求又改成….

  • 文字內容->AES加密->Zip檔附加密碼->輸出儲存

可發現需求一直在對於文字內容操作順序做變化,但他們核心離不開對於文字內容的操作

這種情境很適合來使用 [裝飾者模式]

裝飾者模式 有兩個主要角色 被裝飾物件(Decorated) & 裝飾物件(Decorator)

  1. 被裝飾物件(Decorated)就像蛋糕的一樣,
  2. 裝飾物件(Decorator)就是上的水果,奶油,巧克力…等等裝飾物品

一般先有蛋糕被裝飾物件(Decorated),後再將裝飾物品加上去裝飾物件(Decorator)

被裝飾物件(Decorated)如下圖 蛋糕的原型

Read more »

裝飾者模式是一個很精美且優雅的模式

本篇範例 文字內容->AES加密->Zip檔附加密碼->輸出儲存

情境
有個需求要做

  • 文字內容->壓縮zip(附上密碼)->輸出儲存
    又改成…

  • 文字內容->AES加密->輸出儲存
    需求又改成….

  • 文字內容->AES加密->Zip檔附加密碼->輸出儲存

可發現需求一直在對於文字內容操作順序做變化,但他們核心離不開對於文字內容的操作

這種情境很適合來使用 [裝飾者模式]

裝飾者模式 有兩個主要角色 被裝飾物件(Decorated) & 裝飾物件(Decorator)

  1. 被裝飾物件(Decorated)就像蛋糕的一樣,
  2. 裝飾物件(Decorator)就是上的水果,奶油,巧克力…等等裝飾物品

一般先有蛋糕被裝飾物件(Decorated),後再將裝飾物品加上去裝飾物件(Decorator)

被裝飾物件(Decorated)如下圖 蛋糕的原型

Read more »

Base家族以Base64最為出名,這邊會用Base64編碼來做介紹

寫網站應該都用過Base64但你對於他的原理了解嗎?

此篇和大家分享Base家族的秘密


用途:

Base64主要用途是某些系統中只能使用ASCII字符,為了避免某些機器無法識別我們傳輸資料

Base64就是用來將非ASCII字符的數據轉換成ASCII字符的一種方法。

 base64特別適合在http,mime協議下快速傳輸數據(例如我們常使用 Email)

它使用下面表中所使用的字符與編碼。

http://www.asciitable.com/index/asciifull.gif

Read more »