很多时候我们都是缺少一个好的切入点(转)

 开发人员经常会碰到老板或上头安排的项目或需求,是自己完全陌生的领域,这个时候就会非常头痛,搜索引擎能解决大部分这些方面的问题,而有时因为自身问题或干脆找不到解决方案而非常抓狂......虽然干开发有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群等地方,广播出自己的难题,广撒网,看看能不能碰到会的朋友,提示给予一个提示。不过发出这么多询问后,得到的答复都是没接触过这方面的技术[email protected][email protected]能问的地方都问了,还是没有解决办法


  解决办法四:思考以上解决思路是否误入歧途了,寻找新的切入点



  当没有清晰的解决思路时,不妨放下当前问题,先去做其他事情,缓一缓后再重新处理。因为当思路误入歧途,就老是在那个圈圈里面转着,很难跳出来,而缓一缓后,头脑清晰了,就会产生更多新的想法,再慢慢逐个尝试。以前试过碰到很多其他技术问题解决不了时,使用本方法轻松的找到之前被自己忽略的地方,从而找到问题关键点所在,解决了问题

  在这个时候,已经研究了三四天时间了,一点解决思路都没有,心里很急燥,不过只能先强迫自己冷静下来进行认真检讨,从新理顺一下思路:本需求是否可以实现(按BOSS的说法,这是肯定可以做到的,不过从技术角度分析,实现肯定没有问题,就是要找对API才行)?本需求所使用的技术,肯定只要是网络访问、访问需要绑定网卡(MAC)、负载均衡等方面,而查询的关键字应该有问题,查找的资料也存在问题。除了使用C#调用API外,是否考虑使用C++编写插件来给C#调用?......

  最后又花了一天多时间来查询各方面的资料,还是没有办法(主要还是对该领域太陌生了,网上也没有查找到对应的解决办法),那只能使用最后一招绝杀技了......


  解决办法五:寻找大牛来帮忙解决



  IT技术无穷无尽,每个人都有自己最擅长的地方,所以自己处理不了一些问题也是很正常的事情,而专业的事情要交给专业的人来处理,所以必杀技就是到各大技术论坛寻找牛人来帮忙,比如上技术论坛、博客网站等地方发贴寻求帮助

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

  最后在CSDN大牛 陈抒 的帮助下最后搞定了本问题。在此非常感谢他在百忙中,热心的对我提出问题给予回复,同时也感谢在此过程中给予我帮助的kl222 、博客园的lucasFeng等

  具体的解决方法如下:(在多网卡的环境下,只要在访问外网时,指定使用那一个网卡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();


   总结



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

http://www.cnblogs.com/EmptyFS/p/3436111.html

时间: 2024-11-04 17:43:35

很多时候我们都是缺少一个好的切入点(转)的相关文章

WebAPi的可视化输出模式(RabbitMQ、消息补偿相关)——所有webapi似乎都缺失的一个功能

最近的工作我在做一个有关于消息发送和接受封装工作.大概流程是这样的,消息中间件是采用rabbitmq,为了保证消息的绝对无丢失,我们需要在发送和接受前对消息进行DB落地.在发送前我会先进行DB的插入,单表插入,所以在性能上也是能接受的,单表插入做了压测基本上是一到两毫秒的时间,加上消息的发送(有ACK)再加上集群是两个节点的高可用(一个磁盘持久化节点),单台TPS基本上是在2000-3000左右.这对于我们的业务场景来说是够用了.一旦当消息丢失或者由于网络问题.集群问题业务不会中断,消息就算发不

WebAPi的可视化输出模式(RabbitMQ、消息补偿相关)所有webapi似乎都缺失的一个功能

最近的工作我在做一个有关于消息发送和接受封装工作.大概流程是这样的,消息中间件是采用rabbitmq,为了保证消息的绝对无丢失,我们需要在发送和接受前对消息进行DB落地.在发送前我会先进行DB的插入,单表插入,所以在性能上也是能接受的,单表插入做了压测基本上是一到两毫秒的时间,加上消息的发送(有ACK)再加上集群是两个节点的高可用(一个磁盘持久化节点),单台TPS基本上是在2000-3000左右.这对于我们的业务场景来说是够用了.一旦当消息丢失或者由于网络问题.集群问题业务不会中断,消息就算发不

为什么工具类App,都要做一个社区?

非著名程序猿涩郎 非著名程序员,字耿左直右,号涩郎.爱搞机,爱编程,是爬行在移动互联网中的一名码匠! 个人微信号:loonggg,微博:涩郎.专注于移动互联网的开发和研究.本号致力于分享IT技术和程序员工作心得体会. 欢迎大家关注与转载. 为什么工具类App.都要做一个社区? 非著名程序猿 移动互联网的蓬勃发展,以至于应用市场上App数以亿计.工具类App甚多,那天我在知乎上看到了一个问题,那就是:为什么工具类App.无论实用没用,都喜欢加上一个社区呢?当然以下的回答也是五花八门. 并且他们答的

在国外,资深的软件测试人员大多是手动测试,他们厉害之处在于测试用例的设计,但在国内,很多测试人员都把自动化测试当成很厉害的资本,为什么?

导语:”在国外,资深的软件测试人员大多是手动测试,他们厉害之处在于测试用例的设计,但在国内,很多测试人员都把自动化测试当成很厉害的资本,为什么?” 偶然在知乎上看到一篇关注度很高的话题,标题如上. 作为一名从业8年有余的软件测试工程师,并且一直在外企做测试的我, 忍不住想发表一些自己的看法和见解. 我觉得在国内,很多公司或者个人把自动化测试当成一个了不起的资本,根本是源于国内大家对代码的无上崇拜,这也造就了国内现在IT互联网行业内一个鄙视链: 开发---> 测试开发--->自动化测试---&g

缺少一个Windows Mobile设备中心所需要的Windows组件 Activesync4.5安装问题

我在windows server 2008系统上安装 ActiveSync win7下载v6.1 中文安装版(64位)时, 会弹出对话框提示缺少一个Windows Mobile设备中心所需要的Windows组件的问题. 因为你的Windows server  2008系统没有开启桌面体验功能,所以会发生这个问题. 开启桌面体验功能的方法如下: 一.单击"开始"菜单→"运行"命令,输入"services.msc"并回车打开"服务"

如何把Excel中的每一行都存储为一个TXT文档

当Excel中有多行数据时,恰巧我们也需要把每一行数据都存储成一个txt文档,那么我们要手工一个一个Ctrl+c-->Ctrl+v-->Ctrl+s吗?答案是肯定不行的哇,因为本人需要处理一个存储了6万多条数据的文档,为了珍爱生命,那么本人就利用office里的VBA来投机取巧了! 首先利用快捷键Alt+F11,打开Excel的VBA,输入如下代码: Private Sub CommandButton1_Click()     Application.ScreenUpdating = Fals

我们都想有一个机器猫那样的伙伴

我们都想有一个机器猫那样的伙伴,但是却都害怕<终结者>或者<黑客帝国>中的未来.当越来越多的智能设备进入生活,当计算机和互联网将世界变成一个小小的村落,人似乎已经无法知晓,自己在这样的一场洪流当中,会被裹挟着前往何方.我们似乎身不由己.我们好像别无选择. 如果画一条曲线,以横坐标表示时间,以纵坐标表示我们生活变化的程度,很容易就可以看出,这将是一条越来越陡的向上扬起的线条.历史上从来没有像过去一百年这样快速变化的时期,一项技术催生了另一项技术,新的技术又加快了下一代技术的研发进程.

Java项目中每一个类都可以有一个main方法

Java项目中每一个类都可以有一个main方法,但只有一个main方法会被执行,其他main方法可以对类进行单元测试. public class StaticTest { public static void main(String[] args) { Employee[] staff=new Employee[3]; staff[0]=new Employee("Tom",40000); staff[1]=new Employee("Dick",60000); s

windows server 2008 安装Microsoft ActiveSync 6.1提示缺少一个Windows Mobile设备中心所需要的Windows组件

windows server 2008 安装WinCE的同步软件,需要安装Microsoft ActiveSync 6.1版本的. 而不能安装ActiveSync|Microsoft ActiveSync 4.5 版本的. 另外我们在安装时老是弹出对话框提示缺少一个Windows Mobile设备中心所需要的Windows组件. 因为Windows 2008系统没有开启桌面体验功能,所以会发生这个问题. 开启桌面体验功能的方法如下: 一:单击"开始"菜单→"运行"命