前言:
為何我會選用Hxeo來當作Blog框架?
有下面幾個原因:
- 因為建立於本地端,所以可以更方便離線進行編輯
- 使用
Markdown語法撰寫Blog,更方便、通用、容易上手 - 搭配線上
CICD工具部署於Github上,完全零成本 - 中文文件資源多
- 支援多樣不同樣板,可隨心所欲切換風格
- 開源社群活躍
- 基於NodeJs擁有豐富的差件
建立自己的Hexo
安裝 Node.js
首先先安裝 Node.js 官網下載安裝
安裝完後使用CMD
node -v
npm -v
查看是否安裝成功.
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 刷新頁面
為何我會選用Hxeo來當作Blog框架?
有下面幾個原因:
Markdown 語法撰寫Blog,更方便、通用、容易上手CICD工具部署於 Github 上,完全零成本首先先安裝 Node.js 官網下載安裝
安裝完後使用CMD
node -v
npm -v
查看是否安裝成功.
Autofac 是個IOC容器 不懂IOC 參考 我之前寫
的IOC(控制反轉),DI(依賴注入) 深入淺出~~
小弟之前有一個開源框架【C#】 AOP輕型框架 AwesomeProxy.Net 介紹使用 裡面簡單介紹 AOP核心概念和如何實作!
Autofac 有寫一個 Autofac.Extras.DynamicProxy 把AOP和IOC容器融合的框架
在Autofac使用AOP 需要實現下面幾個步驟
本次範例我們從資料庫中撈取時間資料出來,並使用Thread.Sleep(5000) 作出延遲,判斷時間是否前後一致。
我們撰寫一個快取的攔截器繼承IInterceptor 介面,並實現Intercep方法
其中 IInvocation 參數有許多有用的資料
這幾個欄位是我們比較常用的資訊
雖然容器眾多但要解決的問題和概念是一樣
今天使用Autofac 介紹一下IoC容器
不了解 IoC 概念可參考 我之前寫 IOC(控制反轉),DI(依賴注入) 深入淺出~~
眼尖的讀者會發現我把Ioc跟容器這兩個字使用兩個不同顏色
原因是Autofac這個框架其實做到兩個概念.
之前有和大家分享使用CASE WHEN 搭配聚合函數實現樞紐分析
但今天如果我們要轉換成行的列希望是動態依照目前資料庫的欄位要處理呢?
我們可以使用Dynamic pivot
``Dynamic pivot 核心概念其實是把我們要使用的pivot SQL`語法動態產生出來
CREATE TABLE T(
userName VARCHAR(100),
Price int,
Dt DATE
);
INSERT INTO T VALUES ('Tom',100,'2017-01-01');
INSERT INTO T VALUES ('Amy',200,'2017-01-02');
INSERT INTO T VALUES ('Tom',1311,'2017-01-03');
INSERT INTO T VALUES ('Tom',122,'2017-03-01');
INSERT INTO T VALUES ('Tom',111,'2017-04-01');
INSERT INTO T VALUES ('Amy',232,'2017-05-01');
INSERT INTO T VALUES ('Tom',2312,'2017-05-02');
INSERT INTO T VALUES ('Tom',23,'2017-05-03');
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);
SET @SQL = STUFF((SELECT distinct ',SUM(CASE WHEN Dt = '''+ CAST(Dt AS VARCHAR(10)) +''' THEN Price ELSE 0 END) AS ' + QUOTENAME(Dt)
FROM T
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)')
,1,1,'');
SET @query = 'SELECT userName,'+@cols+' FROM T GROUP BY userName' ;
EXECUTE sp_executesql @query
因為範例我們使用 SQL SERVER
所以使用 FOR XML PATH 語法將我們** CASE WHEN pivot SQL **語法產生並把他附值給 @cols 變數
SET @cols = STUFF((SELECT distinct ',SUM(CASE WHEN Dt = '''+ CAST(Dt AS VARCHAR(10)) +''' THEN Price ELSE 0 END) AS ' + QUOTENAME(Dt)
FROM T
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)')
,1,1,'')
某些專案因為歷史久遠沒有Source Code,但有個需求需要異動裡面的程式該怎麼辦??
難道只能整個反組譯,查看程式碼翻一份做新的嗎?
不~~其實有辦法直接對於DLL進行修改
只需使用 ** Reflexil 搭配 ILSpy 或其他支援的反組譯軟體 **
Reflexil 是一個組譯編輯器插件目前支援 Reflector, ILSpy 和 Telerik’s JustDecompile.
下載連結
Reflexil **Release 2.2 搭配 ILSpy version 3.2
之前有介紹 (SQL Server) CTE RECURSIVE (遞迴)製作月曆 在Oracle 有提供一個精簡的語法產生階層資料 CONNECT BY
CONNECT BY 有幾個常用Key Word.
LEVEL 目前在樹節點第幾階層START WITH 設定哪筆做為起始點開始樹PRIOR 用於指定父資料欄位製造出的階層樹,概念如下
[圖來自Oracle]
<code class="language-sql">SELECT X + LEVEL
FROM (
SELECT 0 X
FROM DUAL
)
CONNECT BY LEVEL <= 10
此範例使用 LEVEL 在 CONNECT BY 上當條件 建立列值到LEVEL 大於等於 10
本篇利用RabbitMQ client來簡單實現MQ功能.
在RabbitMQ中有很重要兩個角色,Producer和Consumer,下面這個範例使用c# console來實現.
我個人覺得APMQ協議和Http協議有點類似,一樣有Header(Properties),body…等等概念.
一開始我們宣告一個 ConnectionFactory 並設置RabbitMQ Server連接參數
RabbitMQ預設密碼是 guest
//建立連接工廠
ConnectionFactory factory = new ConnectionFactory
{
UserName = "guest",
Password = "guest",
HostName = "localhost"
};
呼叫factory.CreateConnection 建立連接RabbitMQ連接物件,並呼叫 CreateModel方法建立一個channel Model
Autofac 是個IOC容器 不懂IOC 參考 我之前寫
的IOC(控制反轉),DI(依賴注入) 深入淺出~~
小弟之前有一個開源框架【C#】 AOP輕型框架 AwesomeProxy.Net 介紹使用 裡面簡單介紹 AOP核心概念和如何實作!
Autofac 有寫一個 Autofac.Extras.DynamicProxy 把AOP和IOC容器融合的框架
在Autofac使用AOP 需要實現下面幾個步驟
本次範例我們從資料庫中撈取時間資料出來,並使用Thread.Sleep(5000) 作出延遲,判斷時間是否前後一致。
我們撰寫一個快取的攔截器繼承IInterceptor 介面,並實現Intercep方法
其中 IInvocation 參數有許多有用的資料
這幾個欄位是我們比較常用的資訊