開發人員解決不熟悉領域技術難題總結

  開發人員常常會碰到老闆或上頭安排的項目或需求,是本身徹底陌生的領域,這個時候就會很是頭痛,搜索引擎能解決大部分這些方面的問題,而有時由於自身問題或乾脆找不到解決方案而很是抓狂......雖然幹開發有10來年了,但仍是會不時碰到這種問題,現作一下總結編程

 

  前段時間老闆出了一個難題給我,具體要求以下:c#

  服務器上面有兩張網卡分別鏈接電信和聯通網絡,要求軟件在接到A請求時,使用電信網卡訪問網絡,接到B請求時,使用聯通網卡訪問網絡,必須能多線程處理請求。還給了提示,說他聽他朋友講,使用路由功能就能夠簡單實現了服務器


 

  解決辦法一:有問題上度娘,找谷哥


 

  拿到問題後,第一時間先認真分析需求,看看它會涉及幾個技術點,那些本身熟悉的能搞定的,那些是陌生須要尋求幫助的網絡

 

  上面需求看起來很簡單並且又給出了提示,簡單分析了一下,可能會涉及到的技術點有:網絡訪問、訪問須要綁定網卡(MAC)、負載均衡、多線程、可能涉及路由等技術。心想使用度娘應該很快能夠找出答案了,說幹就幹,在度娘那裏輸入:「c# winform 綁定網卡 」、「c# HttpWebRequest綁定網卡」、「c#綁定MAC」、「c# 自動選擇網卡」、「C# winform多網卡下設置指定網卡網關」、「C# Winform tcp/ip 通信」、「c# route」、「c# route 切換路由」、「c# MAC網卡 負載均衡」、「多網卡綁定 負載均衡」、「c# 路由」、「c# 路由編程」......多線程

  找了半天,只找到一些不是很靠譜的解決辦法,好比使用CMD命令修改路由器的躍點來處理,可是改了後都走躍點低的那個網卡了,不能同時處理多個請求,只能中斷一個個處理,並無達到想要的目的。負載均衡

  其餘解決方法就是找不到......tcp

 


 

  解決辦法二:查技術文檔


 

  當第一種方法不行時,那隻能查看幫助文檔、開發語言相關的技術資料學習

  

  因爲使用的開發語言是用C#開發的,因此按老闆的提示,拼命的查找路由相關的資料(被導入了誤區了... T_T)網站

  除了找到修改路由器的躍點方法外,沒有查到其餘辦法搜索引擎

 


  解決辦法三:要多使用團隊的力量


  我的解決不了的時候,這時就要動用關係,問問身邊的同事、朋友或技術Q羣等,看有沒有好的解決方案,不少時候咱們都是缺乏一個好的切入點,你們討論一下,一般靈感就來了,或者有的朋友提出了一些好的想法或提示,按着這個思路設置關鍵字去查詢或查看相關資料,難題不再是問題。因此通常來講(除非特殊的技術難題),這種方法都能解決問題,之前不少技術難題,都是同事朋友幫忙一塊兒解決的,效率特別高。

 

  以上辦法解決不了後,只能向同事、朋友、技術Q羣等地方,廣播出本身的難題,廣撒網,看看能不能碰到會的朋友,提示給予一個提示。不過發出這麼多詢問後,獲得的答覆都是沒接觸過這方面的技術......@_@......能問的地方都問了,仍是沒有解決辦法

 


  解決辦法四:思考以上解決思路是否誤入歧途了,尋找新的切入點


  當沒有清晰的解決思路時,不妨放下當前問題,先去作其餘事情,緩一緩後再從新處理。由於當思路誤入歧途,就總是在那個圈圈裏面轉着,很難跳出來,而緩一緩後,頭腦清晰了,就會產生更多新的想法,再慢慢逐個嘗試。之前試過碰到不少其餘技術問題解決不了時,使用本方法輕鬆的找到以前被本身忽略的地方,從而找到問題關鍵點所在,解決了問題

 

  在這個時候,已經研究了三四天時間了,一點解決思路都沒有,內心很急燥,不過只能先強迫本身冷靜下來進行認真反省,重新理順一下思路:本需求是否能夠實現(按BOSS的說法,這是確定能夠作到的,不過從技術角度分析,實現確定沒有問題,就是要找對API才行)?本需求所使用的技術,確定只要是網絡訪問、訪問須要綁定網卡(MAC)、負載均衡等方面,而查詢的關鍵字應該有問題,查找的資料也存在問題。除了使用C#調用API外,是否考慮使用C++編寫插件來給C#調用?......

  最後又花了一天多時間來查詢各方面的資料,仍是沒有辦法(主要仍是對該領域太陌生了,網上也沒有查找到對應的解決辦法),那隻能使用最後一招絕殺技了......

 


  解決辦法五:尋找大牛來幫忙解決


  IT技術無窮無盡,每一個人都有本身最擅長的地方,因此本身處理不了一些問題也是很正常的事情,而專業的事情要交給專業的人來處理,因此必殺技就是到各大技術論壇尋找牛人來幫忙,好比上技術論壇、博客網站等地方發貼尋求幫助

 

  本問題已經到了最後山窮水盡的時候,本想在各技術論壇發貼詢問的,但想一想本身沒有太多時間刷貼,因此厚着臉皮上博客園和CSDN找一些大牛的博客,看他們那些對這一塊比較熟悉,而後直接發郵件或直接留言給他們,請求他們幫忙。

  最後在CSDN大牛 陳抒 的幫助下最後搞定了本問題。在此很是感謝他在百忙中,熱心的對我提出問題給予回覆,同時也感謝在此過程當中給予我幫助的kl222 、博客園的lucasFeng等

 

  具體的解決方法以下:(在多網卡的環境下,只要在訪問外網時,指定使用那一個網卡IP來對外發包,就能夠很是簡單的實現一開始所說的功能了)

//設置對外訪問所使用網卡的IP
string sendingIp = "192.168.0.1";
//設置對外訪問所使用的端口
int sendingPort = 5000;
Uri uri = new Uri("http://google.com");
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(uri);
//獲取對外訪問的包,並指定使用那個IP(網卡)與端口來發送數據包
ServicePoint sp = ServicePointManager.FindServicePoint(uri);
sp.BindIPEndPointDelegate =
    (servicePoint,remoteEp,retryCount) =>
         {
             return new IPEndPoint(IPAddress.Parse(sendingIp),sendingPort);
         };
//提交請求並獲取返回結果
var data = new StreamReader(wr.GetResponse().GetResponseStream()).ReadToEnd();

 


   總結


  對於初學者來講,會常常碰到各類各樣的需求和問題,但並非每個人都能很幸運身邊有一位大牛,能夠隨時幫忙解決各類問題,因此大多數仍是要考本身來解決,這就須要使用相關的技巧。運用好的技巧可讓本身少走彎路,節省時間成本。另外過多的依賴別人,也會壓縮本身的成長空間,並且大牛們也會很是的煩初學者本身都沒有認真研究就隨便亂提問題(多數提出的都是一些很初級的問題)。

 

  本文章爲原創內容,轉載請保留下面信息。

  發表本編內容,只要主爲了和你們共同窗習共同進步,有興趣的朋友能夠加加Q羣:327360708 或Email給我(1654937#qq.com),你們一塊兒探討,因爲本人工做很繁忙,若是疑問請先留言,回覆不及時也請諒解。

  也請觀注博客:http://www.cnblogs.com/EmptyFS/

相關文章
相關標籤/搜索