Resume

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 个人信息牛慧升男/1993烟台大学--软件工程两年工作经验博客地址博客园博客地址:http://www.cnblogs.com/alvin-niuCSDN博客地址:http://blog.

个人信息

  • 牛慧升
  • 男/1993
  • 烟台大学--软件工程
  • 两年工作经验
  • 博客地址

    • 博客园博客地址:http://www.cnblogs.com/alvin-niu
    • CSDN博客地址:http://blog.csdn.net/alvin930403
    • Git地址:https://github.com/AlvinNiu
  • 联系方式

    • 18310110978
    • niuhuisheng2468@gmail.com
  • 意向

    • 地点:上海
    • 岗位:爬虫工程师

工作经历

  • 2015.10——至今
  • 亿海蓝(北京)数据技术股份公司
  • 数据爬虫工程师、.Net研发工程师

个人技能

  • 主要分为后端开发、前端开发、数据库开发
  • 后端开发

    • 熟练掌握 ASP.NET MVC开发技术。
    • 熟练掌握 .net Remoting wcf 等分布式开发技术。
    • 深入理解HTTP协议。
    • 熟练掌握 winform 桌面应用程序开发技术。
    • 熟练掌握 C# ,.net Framework 类库,多线程,正则表达式。
    • 熟练使用PhantomJS框架,并使用该框架对那些进行页面加密的网站进行采集。
    • 了解Entity Framework的用法,并在实际用在项目中。
    • 了解Java的语法,开发过Java web项目。
  • 前端开发

    • 熟练掌握html5,css,jquery 等语法。
    • 熟练掌握JQuery的用法。
    • 熟悉E-charts框架,使用该框架制作图表。
  • 数据库开发

    • 熟练掌握Sql语法的使用。
    • 熟练掌握 sql server ,mysql 等关系数据库的开发和管理。
    • 在开发中偶尔使用MongoDB数据库。

项目经验

  • 想要技术成长,必须经过项目的洗礼
  • 企业项目

    • 拖车互助网(20gp.cn)

      产品是深圳的分公司的产品,由北京开发及维护。
      该产品从开发到维护持续了近两年的时间,这个产品是实时的请求网站,并获取到相关的PDF文件。
      该产品从设计到管理是我负责的,最初经运营人员讲解业务需求,我来搭框架以及设计实现方式。
      该产品动用了4个人,其中有人负责前端开发,有人负责工具的开发,有人负责数据库的开发,我来负责数据采集以及协调大家,并为大家讲解技术上如何实现的需求。
      该产品涉及到了积分,在设计时要格外注意积分规则的设计,以及方便财务对账。
      该产品用到的技术:MVC4、Remoting、ClickOnce、正则表达式等。在该产品中使用了自己写的日志类。所有可能出现的网络错误及异常都会被捕获,并且记录在日志中。
      该产品中遇到的困难以及解决方法:
      1.别人使用了PDF控件,但是该控件要依赖于IE浏览器,并且控件的稳定性有待商榷。所以我们截获了该网站传输给该控件的内容,自己使用Itext技术写了PDF文件,只要得到的一模一样的文件即可。
      2.原网站使用初级验证码:使用OCR技术,破解验证码
      3.原网站使用有噪点与噪线的验证码:通过识别验证码,去噪。获取样本,只要成功率在80%以上则可使用。
      4.使用高级的验证码:使用人工打码技术。
      5.面对原网站的条形码,我们采取生成条形码技术翻译成C#语言。
      6.JS加密 ,解决办法,把原网站的JS加密程序下载下来,使用PhantomJS,获取到加密后的值。请求即可。
      7.封锁IP,原网站对IP地址进行封锁,使用代理池中的IP,随机请求。让他们封无可封。
      8.封锁账号,同一个账号请求太多。我采取多账号,多IP随机请求。
      9.原网站支付通道容易堵死。当我检测到支付通道堵死的时候,我会提示用户,暂时停止支付。待缓解之后,继续。
    • I跟踪(www.igenzong.com)

      采集所有船公司的网站,获取相关船公司的集装箱信息,以及船舶信息,把所有采集到的数据存储到数据库中。在请求数据库的时候,使用的是Entity FrameWork 框架
      其中涉及到使用WebRequest请求,使用正则表达式匹配到自己想要的数据。
      其中会遇到一系列困难,例如:登录验证、验证码、JS加密、封锁IP等等。这些措施都会被我一一解决掉。
    • 金科信港口信息接口(data.jkx.tuochebao.com)
      产品介绍:为金科信TMS提供港口信息的接口,该产品的从开始搭框架到开发均是我一个人。 使用技术:使用MVC4,框架 .NET Framework 4.5.2。随机代理采集数据,使用Remoting技术,使用网站直接调用服务的接口,使用服务保持回话。Web提供的接口,全是实时采集与实时提交信息,未与数据库打交道。如果出错,使用Log4net捕获。查日志即可。如果代理出错或者失效,会有代理平台记录。
    • OpenAIP(open.shipxy.com/Doc)
      产品介绍:为船讯网的APP与微信公众号,提供数据接口。 使用技术: 该产品使用的是MVC4,框架.NET Framework 4.0,直接使用ADO.NET 技术来访问数据库,在程序中直接写存储过程,事务来获取数据,以及对数据操作。 并未使用Entity FrameWork框架,由于该接口是为微信和APP,所以效率一定要高,使用这种反射,虽然能增加开发的效率,但是运行效率并不高。
    • 拖车宝(www.tuochebao.com)
      产品介绍:为拖车宝APP提供后台支持,提供接口。该产品的业务逻辑比较复杂,所以维护起来相当难。由于业务交错复杂,程序也跟着业务走,发生改动则需处处小心。 使用技术:MVC4、框架.NET Framework 4.0、使用Log4net记录日志、多线程编程。
    • 海洋气象数据采集
      产品介绍:海洋气象数据是为船讯网做服务的,由于采集的是全球的气象数据,所以数量非常大,并且对效率要求非常高。 使用技术: Windows Service、多线程编程、异步编程、MySql数据库、WebRequest,其中还涉及到,要与C++团队进行对接。 项目中涉及三个方面,采集数据、处理数据、存储数据。采集数据与存储数据比较慢,可以利用硬件的DMA 技术。使用异步请求。但是处理数据就必须使用多线程了,由于处理数据速度相对较快,本项目采取队列的方法,把采集到的数据放到队列中、处理数据处理之后,放入到另一个队列,等待存储数据的异步线程去使用。计算出相对合适的线程数,达到效率最高。

    • 爬地图

      采集地图上的船舶信息,随时跟踪船舶的位置。
      该项目从设计到开发只有我一个人负责。
      用到的技术:Windows Service、MySql、正则表达式。
  • 个人项目

    • 爬虫类库

      使用C#开发,WebRequest作为基础,把请求封装起来,用起来可以只传输一个地址,就可以获取到请求返回的内容。
      另外,开发者还可以自定义。该项目我已经开源,在GitHub上可以找到。
      地址:https://github.com/AlvinNiu/NewSpider
      
    • 代理池

      使用C#开发,通过获取网络上所有的免费代理,使用服务保持一个永远处于活跃状态的代理池,为了爬虫封IP所用。使用MySql数据库,具体实现方法,见面详细了解
      地址:

自我评价

爱讲道理的程序员

致谢

感谢看到最后,希望与您一起共事。

相关文章
|
7月前
|
JavaScript 前端开发
【报错】unhandled error during execution of watcher callback
JavaScript错误`unhandled error during execution of watcher callback`在Echarts图表渲染时出现,通常是因数据未获取到就尝试渲染导致。解决方法是在渲染前添加非空判断,如`if(value){开始渲染数据}`或`if(value !== undefined){开始渲染数据}`,确保数据加载完成后再执行渲染。
888 0
已解决 RuntimeError: There is no current event loop in thread ‘Thread-1‘.
Jetson Xavier NX 报错 RuntimeError: There is no current event loop in thread 'Thread-1'.异常错误,已解决
618 0
已解决 RuntimeError: There is no current event loop in thread ‘Thread-1‘.
|
3月前
crash命令 —— task
crash命令 —— task
ResizeObserver loop completed with undelivered notifications
ResizeObserver loop completed with undelivered notifications
|
前端开发
The following tasks did not complete: first Did you forget to signal async completion?
The following tasks did not complete: first Did you forget to signal async completion?
|
Java Spring
Redisson BUG: Failed to submit a listener notification task. Event loop shut down?
Redisson BUG: Failed to submit a listener notification task. Event loop shut down?
1454 0
|
Python
may have been in progress in another thread when fork() was called.
may have been in progress in another thread when fork() was called.
142 0
may have been in progress in another thread when fork() was called.
|
Java 开发者
为什么不推荐使用 stop、suspend 方法中断线程?
我们知道像stop、suspend这几种中断或者阻塞线程的方法在较高java版本中已经被标记上了@Deprecated过期标签,那么为什么她们曾经登上了java的历史舞台而又渐渐的推出了舞台呢? 到底是人性的扭曲还是道德的沦丧呢,亦或是她们不思进取被取而代之呢,如果是被取而代之,那么取而代之的又是何方人也,本文我们将一探究竟。
252 0
为什么不推荐使用 stop、suspend 方法中断线程?

热门文章

最新文章