`
aijuans
  • 浏览: 1548139 次
社区版块
存档分类
最新评论

开发人员解决不熟悉领域技术难题总结

 
阅读更多

开发人员经常会碰到老板或上头安排的项目或需求,是自己完全陌生的领域,这个时候就会非常头痛,搜索引擎能解决大部分这些方面的问题,而有时因为自身问题或干脆找不到解决方案而非常抓狂......虽然干开发有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技术无穷无尽,每个人都有自己最擅长的地方,所以自己处理不了一些问题也是很正常的事情,而专业的事情要交给专业的人来处理,所以必杀技就是到各大技术论坛寻找牛人来帮忙,比如上技术论坛、博客网站等地方发贴寻求帮助

 

  本问题已经到了最后山穷水尽的时候,本想在各技术论坛发贴询问的,但想想自己没有太多时间刷贴,所以厚着脸皮找一些大牛的博客,看他们那些对这一块比较熟悉,然后直接发邮件或直接留言给他们,请求他们帮忙。

 

 

  具体的解决方法如下:(在多网卡的环境下,只要在访问外网时,指定使用那一个网卡IP来对外发包,就可以非常简单的实现一开始所说的功能了)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//设置对外访问所使用网卡的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();

 


 

  总结


  对于初学者来说,会经常碰到各种各样的需求和问题,但并不是每一个人都能很幸运身边有一位大牛,可以随时帮忙解决各种问题,所以大多数还是要考自己来解决,这就需要使用相关的技巧。运用好的技巧可以让自己少走弯路,节省时间成本。另外过多的依赖别人,也会压缩自己的成长空间,而且大牛们也会非常的烦初学者自己都没有认真研究就随便乱提问题(多数提出的都是一些很初级的问题)。

 

13
6
分享到:
评论
6 楼 w156445045 2013-12-19  
两块网卡,两个IP,
设置一个路由表,就可以解决

就是请求道那个IP 然后转发到哪去
很简单。
没博主想的这么复杂。
计算机网络的基础知识而已。
5 楼 coolbamboo2008 2013-12-19  
博主说的方法很好
4 楼 skzr.org 2013-12-18  
从dns层面应该也能解决,根据来源判断网络类型然后解析域名ip时,给指定网络的ip给对方。
3 楼 cwqcwqmax9 2013-12-18  
J-sean   
J-sean 写道
或者多看看牛人的blog:http://dh.daniushow.com/

不错 看看去
2 楼 beowulf2005 2013-12-17  
我刚看完第三段,就想说指定IP不就好了。呵呵。

不过楼主解决问题的方式还是挺好的。
1 楼 white_crucifix 2013-12-17  
博主幸苦了

相关推荐

    大数据开发工程师的岗位职责.docx

    6、为项目相关开发人员提供大数据技术指导及解决大数据平台应用中遇到的技术难题; 7、良好的团队合作与沟通能力。 任职要求: 1、本科及以上学历,2年以上大数据应用开发经验; 2、具备Java、Python、Scala其中两种...

    软件技术专业人才需求调研报告.doc

    2 对软件人才的需求分析 随着我国信息化进程的深入,软件技术专业的就业行业领域也正在逐步扩大, 软件技术专业毕业生可选择从事科研活动、教育事业、企业开发、事业单位、技术岗位 和管理岗位等单位和部门从事...

    New of GWT Introduction--GWT开发快速入门

    Ajax是 Asynchronous JavaScript and XML(以及 DHTML 等)的缩写,由XHTML、CSS、JavaScript、XMLHttpRequest、XML等技术组合而成,是当前Web应用开发领域的热门技术,用于创建更加动态和交互性更好的Web应用程序,...

    轻量级Java EE企业应用实战——Struts 2+Spring+Hibernate整合开发chap2

    本书是《轻量级J2EE企业应用实战》的第二版,同时还融合了《整合Struts+Hibernate+Spring...尤其适合于对Struts 2、Spring、Hibernate了解不够深入,或对Struts 2+ Spring+Hibernate整合开发不太熟悉的开发人员阅读。

    轻量级Java EE企业应用实战 源码

    这是第一版的光盘,下面是第三版的介绍 ,呵呵!看清楚哦 本书介绍了java ee领域的三个开源...尤其适合于对struts 2、spring、hibernate了解不够深入,或对struts 2+spring+hibernate整合开发不太熟悉的开发人员阅读。

    嵌入式系统/ARM技术中的基于SOPC技术在嵌入式工业以太网中的应用

     以上这些系统的开发平台并不完全针对工业以太网的应用情况,因为芯片设计公司并不完全熟悉工业以太网的需要。因此在实际应用当中经常出现硬件资源浪费或者资源不够的问题,并且开发系统往往需外接PLD芯片来进行...

    轻量级Java EE企业应用实战(第3版)免费(分为3部分).part2.rar

    总共三部分! 本书是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、...尤其适合于对Struts 2、Spring、Hibernate了解不够深入,或对Struts 2+Spring+Hibernate整合开发不太熟悉的开发人员阅读。

    数据库审计系统技术方案.docx

    此外,对于使用IT外包和代维的大型机构而言,如何限制外部人员对核心业务系统的访问权限也是一个难题,外包方的技术工程师可能在开发业务系统的时候留下后门或者幽灵帐号,为将来侵入核心业务系统埋下隐患。...

    数据库审计系统技术方案(1).docx

    此外,关于使用IT外包和代维的大型机构而言,如何限制外部人员对核心业务系统的访问权限也是一个难题,外包方的技术工程师可能在开发业务系统的时候留下后门或者幽灵帐号,为今后侵入核心业务系统埋下隐患。...

    数据库审计系统技术方案.doc

    此外,对于使用IT外包和代维的大型 机构而言,如何限制外部人员对核心业务系统的访问权限也是一个难题,外包方的技术 工程师可能在开发业务系统的时候留下后门或者幽灵帐号,为将来侵入核心业务系统埋 下隐患。...

    数据库审计系统技术方案(1).doc

    此外,对于使用IT外包和代维的大型机构而 言,如何限制外部人员对核心业务系统的访问权限也是一个难题,外包方的技术工程师 可能在开发业务系统的时候留下后门或者幽灵,为将来侵入核心业务系统埋下隐患。...

    SOPC在嵌入式工业以太网控制器中的应用

     以上这些系统的开发平台并不完全针对工业以太网的应用情况,因为芯片设计公司并不完全熟悉工业以太网的需要。因此在实际应用当中经常出现硬件资源浪费或者资源不够的问题,并且开发系统往往需外接PLD芯片来进行...

    小白学习Java,记录Java基础.rar

    Java 不但可以用来开发网站后台、PC 客户端和 Android APP,还在数据分析、网络爬虫、云计算领域大显身手。 从学术的角度讲,Java初学者需要花费不少时间来熟悉面向对象的概念、语法和编程思想。那如何正确入门Java...

    antlr4权威指南

    这意味着,在学会了ANTLR语法之后,你就可以重回自己熟悉的Java领域来实现真正的语言类应用程序。  ANTLR 3的LL(*)语法分析策略不如ANTLR 4的ALL(*)强大,所以ANTLR 3为了能够正确识别输入的文本,有时候不得不进行...

    《C++算法程序设计》

    以解决现实生活中的许多难题。在程序开发过程中通常需要做到如下两点:一是高效地描述数 据;二是设计一个好的算法,该算法最终可用程序来实现。要想高效地描述数据,必须具备数 据结构领域的专门知识;而要想设计一...

    数据结构与算法C++版

    以解决现实生活中的许多难题。在程序开发过程中通常需要做到如下两点:一是高效地描述数 据;二是设计一个好的算法,该算法最终可用程序来实现。要想高效地描述数据,必须具备数 据结构领域的专门知识;而要想设计一...

    一款《华创通用信息系统》,各种信息管理,全部搞定!

    传统的管理软件是由专业人员开发出来的,其管理范围及功能特征是固定的,如财务管理、资产管理、售后服务等软件,其操作界面、信息格式等都已定死,很难根据自身业务特点进行调整,要找到一款适合自己的软件并不容易...

Global site tag (gtag.js) - Google Analytics