我的2015很快就要过去了。明天开始休假,今天也是今年最后一天上班了,阶段性工作即将告一段落。以后当然还有很多需要完成的任务,但这之前我可以过一个轻松的元旦节了。作为一个C#程序员,作为一个刚入行不久但满怀憧憬希望的菜鸟,做一下总结对以后的路只会有好处。
这一年,我从一个几乎与网络信息技术隔绝的环境来到信息爆炸的科技行业,从几乎要忘记键盘什么样子的状态到慢慢的捡起以前落下的基础知识,收获还是比较明显的。而在这段时间中,当初那些同学和朋友已经工作满3年,各方面已经超出我很多,我才刚来到起点准备出发,我一向不是个运气好的人,或许是因为性格不够主动的原因,很多东西都会与我擦肩而过,机会像暴风骤雨般向我袭来,都被我一一避过。很多时候都悲催的望着身边的同学朋友不断的跳槽和加薪,不断的在群里面述说自己的得意之事。经常也告诉自己刚开始工作,不能太在乎薪水了,应该以学技术为第一要务,应该以锻炼身体和交朋友为重要目标。在一个公司里一定要先稳定下来,趁年轻多吃些苦,多学点核心技术,将来不怕找不到高薪工作。
至少,目前看来,这样的想法是没有害处的。毕竟,这么长的时间足可以拉开很大的距离,所以我要迎头赶上。
这是我毕业的第一个公司,公司整体氛围还是可以的,平时大家吃饭下班的有说有笑,关系比较融洽,公司那么多人基本上都熟悉了。研发部的老大待人温和,豪爽,有什么不懂不会的都会细心解答,和大家熟了之后我就充分发挥了脸皮厚的特长,男的叫哥,女的就叫姐,有什么疑难问题就会相互讨论研究。从他们解决问题的方式和思路中,我慢慢也学会了很多方法,最近我问的问题逐渐少了,偶尔会有不明白的地方也会问老大。很奇怪,有时候自己怎么想也想不通想不到的问题,只要把他请来,我的思路立马就开阔了。总体来说这个问题他们没给我实质性的帮助,我自己想到了这个问题的解决办法,但让我自己来想恐怕还要好久。有时候甚至于直接卡壳,大脑短路,无法继续下去。形成了思维定势,自己很难有所突破,停下来,想一想,或者去放松一下,再来解决这个问题,思路就来了。
下面简单回顾一下,这半年来的工作历程:
6月份,我刚来到公司,在此感谢部门陈经理给我机会进行二次面试,正式因为如此,我才有机会站在这里讲话,第一个星期在待在工程部,学习和了解一些基本元器件的作用和性能以及柜子的线路布局。当时没觉得有什么作用,直到调试程序的时候才明白其必要性。第二周,学习串口通信SerialPort编程、Socket等网络通信编程、多线程编程、同步和异步编程、NetWorkStream网络流编程这些编程都属于通信编程,接着熟悉各种调试工具,如何将康海时代、计算机等设备连接在一起。这些东西都是为以后的采集服务作铺垫。第三周,DIY程序读取传感设备数据,学习Task编程,并行运算及C#3.0新加入的LINQ写法。第四周,开始熟悉农气物联网项目解决方案的结构,尝试写WebApi Demo(这里虽然写出来了,但是还不能灵活运用,尤其是各种路由方法)。
7月份,第五周,试着做了几个功能简单MVC示例。学编写技术说明文档,在写文档的过程中,意识到文档格式的重要性和规范性。接着,去铜陵现场调试,并初步了解现场的实际情况。第六周,撰写庐江的各种文档,这也为以后写文档找模板提供了方便。第七周,进入到气象局的项目之中,气象局项目比较庞大,功能多,数据表也不少,当时仿照着类似企业实景抓拍写了一个实景抓拍的服务,存在一些问题,现在想来,一是对这种lamda和linq代码写法不习惯,二是整体结构表与表之间的关系不熟悉导致的。第八、九周,接到一个任务,为了以后调试设备的方便,编写一个Modbus调试工具,当时没有用Modbus库,按照指令格式的文档拼凑出来的,写得很费劲,花了不少时间,也没有达到好的效果。虽然现在勉强可以进行使用了,但由于适用传感器设备范围有限,导致使用较少,以后我会重新去编写,这样不仅方便调试,还可以减少很多不必要的时间花费,尤其在现场中发挥作用会更加明显。第十周,又接到一个新的任务编写气象局数据库配置工具,显然,在这次,吸取上次的教训,时间没有超过预期,功能基本实现,存在的不足就是依然存在一些bug,原因是思维不够缜密加之测试不够全面。但依然有所收获。
8月份,一直配合经理在弄气象局的项目,这之中,也学到不少知识,业务方面更加熟悉,而代码水平也稍微提高了一些。比如Sqlite数据库使用和特点,各种标准Modbus或非标准Modbus设备的特征,方法和字段的特性,一些封装的类库NewLife、XCode、XAgent的使用。
9月份,月初搞了一个沙盘系统,当然都是在原有项目的基础上添砖加瓦,winform真的不好用,在屏幕分辨率问题上搞了很久,最后也只是将就着可以使用了。期间,也是埋在气象局的项目之中。7月份到如今,气象局的项目一直没有停过。
10月份,月底的时候,去金寨现场进行调试。关于网络的实际应用理解进一步加深,设备的调试运行数据采集都有了更全面更透彻的掌握。
11月份,初步了解Quartz作业调度。月底,又去金寨进行调试。
12月份,学习avalon前端新的mvvm框架。已能看懂代码,并写些简单的示例,但缺乏灵活运用的经验,搭建网关管理系统DAL和BLL。下旬,去合肥职业技术学院部署网站及现场调试。
以上是半年来的工作情况。在这里,将我所收获的知识以及不足之处总结如下:
1.对于网络通信编程,这在之前是没接触的东西,但真正用到了却并不觉得陌生,因为很多聊天工具基本上都会用网络编程。在这里特别说一下在使用的Socket编程,Socket是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换。一般是C/S模式,进程通信完全是异步的而且基于TCP/IP。
2.Modbus工业上常用的协议。它仅仅是一个协议,应用范围很广,熟悉并掌握它是调试的必备基础。
3.C#3.0中的LINQ和lamda表达式,首先说一说lamda表达式,在2.0中有的时候会用到匿名委托,却很少使用,写起来也比较麻烦,但有了lamda之后,开始觉得不是好理解,但是用习惯了就会发现,一旦理解了就喜欢这种写法,很方面,减少了很多代码。LINQ的使用方便,压缩了代码量,有点像在vs中写sql语句执行sql语句的感觉,所以上手容易。
4.Sqlite是一款轻量级的数据库,占用资源很低,API开源,调用方便,但在高并发的服务器上无法使用。
5.新生命组件Newlife功能很强大,包括使用的Modbus类库、Net类库,进行网络通信可以直接调用.Net中TransportFactory类。至少现在还有一些功能没有接触到。
6.新生命X组件数据映射框架XCode,可以为你的数据库直接生成实体类和具有基本业务的业务类,当然也可以通过模版引擎XTemplate生成自定义你想要的样子。
7.新生命X组件服务组件XAgent,作为服务组件,如果是以前去写一个服务的话,估计得花老长的时间,大量的时间花费在写业务代码的过程中,但用这个就非常的方便,十几行代码就能搞定,而且可在配置文件中进行一些想要的配置参数。
8.Quartz作业调度才开始接触,还没有太多的想法,就是觉得比之前在app配置文件中配置服务的时间方便多了,而且可以扩展更多的实用的功能。比如,在特定时间段内需要某些服务启动或者关闭。
9.MVC是一种软件设计模式,将业务逻辑、数据、界面显示分离开来,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。而ASP.NET Web API,我的理解是把以前的一般处理程序中使用的HTTP编程给放到处理业务的类文件中去了,这样使用http通信更加方便,它也向MVC一样支持路由,可协商内容的格式,加入过滤的机制,实现认证、异常处理。最重要是的它可以进行托管,比如托管到IIS中,也可以托管在进程中的。依旧可以使用它的路由特性,做一些API。
10.Avalon这个框架觉得很强大,具体到什么地步,还没机会去体会,因为好长时间没有接触前端的代码,反而觉得有点陌生了,这需要在下次的网关管理系统项目中加深理解。
11.前端上,很多知识有所遗忘。后台中,对于一些代码虽然看得懂,也能模仿一下,但抛开模板,有些东西写起来比较困难,主要原因还是部分代码没有进一步深入理解,去研究为什么这么写,这么写有什么好处,还有什么方式可以实现以及更好的解决方法。缺乏这类问题的思考和重视,这在今后的工作中会注意这些。
以上是我的年终总结,有不对不正的地方,请领导批评指正!
2015年12月31日
研发部:赵虎