程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 開發人員解決不熟悉領域技術難題總結

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

編輯:C#入門知識

  開發人員經常會碰到老板或上頭安排的項目或需求,是自己完全陌生的領域,這個時候就會非常頭痛,搜索引擎能解決大部分這些方面的問題,而有時因為自身問題或干脆找不到解決方案而非常抓狂......雖然干開發有10來年了,但還是會不時碰到這種問題,現做一下總結

 

  前段時間老板出了一個難題給我,具體要求如下:

  服務器上面有兩張網卡分別連接電信和聯通網絡,要求軟件在接到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命令修改路由器的躍點來處理,但是改了後都走躍點低的那個網卡了,不能同時處理多個請求,只能中斷一個個處理,並沒有達到想要的目的。

  其他解決方法就是找不到......

 


 

  解決辦法二:查技術文檔


 

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

  

  由於使用的開發語言是用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),大家一起探討,由於本人工作很繁忙,如果疑問請先留言,回復不及時也請諒解。

  也請觀注博客:

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved