原创 深度優先搜索解決迷宮最短路徑問題

在之前的文章裏我們介紹了深度優先遍歷的思想,並且以數組全排列爲例子實現了算法編碼,本篇我們通過深度優先搜索解決迷宮最短路徑問題。用程序實現查詢從迷宮入口到終點的最短路徑,需要越過障礙物,並且不能超出迷宮界限。 算法圖解 假如有如下

原创 Nginx+IIS實現負載均衡

當我們的網站PV值達到很大時,單機部署已經頂不住併發的訪問量,這時通常需要部署多個站點做負載均衡。IIS實現負載均衡比較常用的方式是Server Farms/NLB/Nginx,其中Server Farms和NLB比較簡單無腦,安

原创 C#廣度優先遍歷算法

在上一篇中我們通過深度優先搜索找到迷宮從入口到終點的最短路徑,這次我們換一種思路,通過一層一層擴展的方法來找到終點,擴展時每發現一個點就將這個點加入到隊列中,直至走到終點位置爲止,即廣度優先搜索(BFS)。 算法圖解 依然是以下面

原创 C#深度優先遍歷實現全排列

假如讓你說出123三個數字的全排列你可以很快說出來123,132,213,231,312,321,但是讓你說出1~20總共20個數字的全排列是不是就沒那麼簡單了呢?本篇我們就通過C#運用深度優先算法實現全排列 算法圖例 假如有編號

原创 C#攻克反爬蟲之代理IP爬取

目前很多大型網站在反爬蟲時採取IP限制策略,限制同一個IP的請求頻率及次數,或者同一IP在達到請求次數後強制登陸驗證等。此時我們就需要用到代理IP來突破限制,此篇我們介紹通過DotnetSpider框架爬取西刺高匿代理IP的過程。

原创 C#攻克反爬蟲之谷歌瀏覽器調用

在上一篇爬蟲博客中,我們講述了應對IP訪問限制的策略,即爬取代理IP並不斷改變代理的方式。但是某些網站不僅在訪問時做了限制,而且在返回網頁時也做了巧妙的處理,比如在頁面加載時調用js動態請求內容等。這種情況就不是簡單的發出一個ge

原创 基於Quartz搭建的可擴展Windows定時服務框架

最近一個項目中需要做郵件提醒和文件轉發的定時服務,由於該系統已經存在N多定時任務,且已安裝多個window服務,由於不想修改以前的服務,也不想繼續追加越來越來多的服務,於是決定寫一個通用的可擴展的windows定時服務框架。下面講

原创 分佈式之Session共享

在上一篇博文中我們通過Nginx+IIS實現了一個簡單的負載均衡,那麼隨之而來的問題就是多個站點在切換時如何共享Session信息,本篇介紹在.net中通過Redis實現分佈式站點的Session共享,並且無需修改原項目的Sess

原创 C# Redis使用及幫助類

C# Redis使用及幫助類環境準備C#操縱RedisC# Redis幫助類 環境準備 目前官網已經沒有window版本的安裝文件了,window環境需要到github下載,地址如下:https://github.com/micr

原创 數據結構之隊列和棧

數據結構之隊列和棧隊列簡介隊列實現棧簡介拖板車遊戲遊戲玩法編碼實現 不知道大家有沒有玩過一個叫《拖板車》的撲克遊戲(貌似暴露了年齡。。),本篇我們嘗試讓計算機來玩這個遊戲,並且我們在確定雙方的牌和順序後就能立馬知道誰將是贏家。在

原创 排序算法——冒泡排序.net實現

排序算法——冒泡排序.net實現基本思想算法圖例編碼實現總結分析 基本思想 冒泡排序的思想就是每次比較兩個相鄰的元素,如果它們的順序錯誤就把它們位置交換,直到所有元素位置正確。 算法圖例 例如我們需要將12 35 99 18 76

原创 排序算法——快速排序.net實現

排序算法——快速排序.net實現基本思想算法圖例編碼實現總結分析 基本思想 通過一趟排序將要排序的數據分割成獨立的兩個部分,一部分的所有數據都比另一部分所有的數據都要小,然後按照此方法對這兩部分的數據分別進行快速排序,整個排序的過