职场二三年

2016年,我大三。暑假前做后一堂java web实训课结束,我开始寻找实习岗位。面上了一家公司,初出茅庐,不问福利,不问将来,只想找个实习工作,于是没多想就接受了offer。

公司规模不大,业务是做税务发票相关,使用ssm 框架进行开发。涉世不深,对目前市面上的技术一无所知,于是开始照葫芦画瓢的开始了我的码农生涯。

ssm框架的注解实现方式,令我感叹,真的是好神奇!竟会有如此方便的编程方法,打开了我的眼界

实习了近4个月,发现该公司并没有让我感到有体现自己价值的地方,千篇一律的对着业务逻辑重复劳动。同时对于学校要求的实习任务也结束了。开始了另谋高就之路。

自打离开了该公司,面试了各种大小公司,屡次碰壁。同年12月,最终被一个初创不久的小公司接收。面试时,他们问了我许多的技术问题,我也尽我所能的去展示自己,把自己会的尽量表达,不会的也尽可能的去猜测。问的问题有 nio,bio,多线程,数据库,spring框架,当时的我应对这些问题还是一知半解的,为了尽可能的表达,我将刚准备的区块链小知识也述说了一番,让他们看到我对互联网行业的热情。

入职,他们在面试我的时候,看到了我相关知识的不足,给了我一份学习的资料。让我用一周时间先完善一下自己的知识系统,并在一周后进行知识汇报演讲。演讲???当时听到这个任务即兴奋又紧张,平时在校园里也从没来没有演讲经验,现在要给各位同事进行知识分享,这不是班门弄斧吗?既然是任务,那我就要好好的完成领导任务,也借此机会提高一下自身表达能力,及对知识的见解能力。到了演讲那天,自身表现仍然有许多不足,对于知识的串讲,及理解都不够顺畅,条理清晰。看来冰冻三尺非一日之寒,仍然需要更多的打磨才行。

给我安排开发的第一个任务,公司运营的是图书馆业务相关的SaaS系统,由于任务较为紧急,他们把一个简单的模块功能给我开发,虽然公司所用框架完全由自己开发的,但是业务使用上与ssm框架也有异曲同工之妙,照葫芦画瓢也是容易上手的。稍微熟悉一下代码管理工具如svn,便能进行开发。在这个开发过程中,领导也多次检查我的代码,让我养成良好的编码习惯。如在功能块加备注,代码格式,换行,缩进。在此,编程思想还未涉及。仅仅是让代码格式整洁

之后,又有一个关于ftp文件传输的javafx 项目,javafx对于我来说也是陌生的。随着项目的开始,对javafx也开始了探索之路。javafx用起来与Android编程类似,用一个场景搭建内容,使用控件。

javafx的标记语言有它自带的格式,fxml,支持css。该项目涉及到的内容,jdbc,http请求,页面的布局设计。上传文件使用多线程传输,参数配置功能,数据显示等基本功能。

接下来,公司划分部门,将技术部拆分多个部门,各自负责自己部门的项目, 而我则被划分到大数据运维组。首先需要开发一个统计业务网站上所产生的内容进行统计分析的一个平台,在该平台上,技术人员可以提交自己的代码进行自己需求的配置。因此该平台所需要支持动态编译(jar包读取,java代码配置),数据流的读取,线程池处理。接收日志数据我们使用了kafka技术,接收kafka的消息,再流通到我们的系统里,由自己的配置代码进行处理。在这个项目里,从设计开始到编码到发布,从头到尾都是我再执行,虽然这个过程中碰过很多的坑,面向对象思想缺失,代码可扩展性问题,设计模式问题都是层出不穷,建模,画时序图,类图,用例图,当时面对这些时是最头疼的,因为并不能完全明白领导所想要的需求,也欠缺设计软件的经验,画了一些时序图,便思绪阻塞,不知接下来该如何进行。在领导的检查,监督之下,逐步重构修改,才有了一个较合理实现。在这个过程中,我需要开始重视软件设计模式,代码可读性,可维护性,可扩展性,还有抽象思维的培养。

到了2018年,公司又有新的计划,需要我们大数据组探索利用hadoop,spark等主流大数据栈进行实现,在我研究了2个月左右,发现并不适用公司现在的需求,多个spark应用并不能形成串连,让数据有序的流通。最终无果而终。从搭建到验证。虽然没有结果,但是对我个人而言,它增加了我对大数据的认知,对于hadoop集群的部署有了一定的实践能力。

到18年的第二季度开始,结束了hadoop的探索之路后,紧接着开始了意见反馈系统的开发。该系统涉及到tcp通信。分为客户端和服务端。于是开始设计socket通信协议包,这是最核心的模块。

包协议:2byte 魔数头,4byte crc32验证码,1byte 心跳标志  ,4byte 消息体长度,n byte消息体

 这是我第一次自我实现设计的一个socket通信协议。

根据字节读取的长度来避免沾包问题。许多异常的处理也是需要深思熟虑,比如服务器端需要同步客户端的数据,服务器端必须发送一个消息给客户端,如果客户端因为断电掉线的话,服务端将不能够成功发送消息至客户端,所以在服务端需要保存该发送失败的消息,等待客户端重连之后,再重新将发送失败的消息重新发送,以保证业务的完整性。

最后,还是一个基于网络通信的数据传输,golang具有较好的性能,gc也快,也是可以面向对象,所以用golang开发。设计通用的通信协议框架,健壮通信协议,处理异常。功能包括心跳包,重连机制。异步处理消息包。在这个过程中,较好的抽象了各个模块的类,有较好的可扩展性,可读性,面向对象思想。

经历了以上这几个项目之后,开发软件最重要的还是编程的思想,代码的可扩展性,可维护性,可读性,以及常用的设计模式。但是,这些都是要建立在基础扎实的情况之下。对于异常的处理需要保证业务的正常运行,后续发现的问题在迭代更新中可以完善。日常关注一下infoq、csdn等论坛中的消息,增长自己的知识面。

所以,请不要停止学习,努力奔跑,做个有技术的富人!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值