一、前言
没有人一开始就能把代码写得很溜,大家都有一个不断成长的过程,至于往那个方向成长,很大一部分决定于所在公司的业务范围,或是个人的兴趣爱好。
二、启蒙
我刚开始学代码时,是从C语言开始的,那时学习了各种语句的作用和含义,练习过各种小习题,像是猜拳游戏,九九乘法表之类的,我不是一个很有编程天赋的人,但好在用点心,也能弄明白这些小练习。
之后又学习了数据库,让我明白了使用互联网时,产生的数据是怎么存储的。
而后面学习的数据结构是巩固大楼的基石,是每个程序员都应该学习的知识。
三、选择的方向
我大学的专业是计算机科学与技术,这是一门涉及很广的专业,除了数据结构和算法这类的课,我们同时也会学单片机、嵌入式等和硬件相关的课程。
涉及广,但很浅!
不管如何,我都清楚自己要选择一条专精的道路,几乎没什么纠结的,我选择朝着软件方面发展,因为初期对于学校里的我来说,学习软件类的技术,我只需要一台电脑,而如果往硬件类发展,我可能还需要买单片机、烧录器、其他工具之类的设备,成本会更高。
但我更在意的是,选择软件,网上已经可以找到许多成体系的学习路线,而硬件类的课程就显得零散了一些。当然,这也使得软件方向卷得跟麻花一样。
四、未来的目标
最后我选择了java作为主修语言,未来打算朝着大数据的方向发展,除此之外,数字化建设的工作也是我备选目标之一,我了解到“数字化”这三个字未来可能会变得极其响亮,但目前就我接触到这方面的人来看,有些人是真正的在搞研究,也有人只是单纯蹭这三个字的热度。
所以我打算再观望一会。
五、技术迭代催动着学习不止
从java基础到java web,后面又学java的各大框架,再到微服务,这是我漫长的学习过程。
我才开始学习的时候,也遇到过很多困难,也会因为一个bug而倒腾半天的时间。
但我都一直坚持下来了,值得一提的是,现今技术一直在更新迭代,想做这行,不断学习进步似乎已经成了我、你必须要做的事。
我是今年刚毕业,很直观的感受就是就业形式不好,好在我秋招的时候就早早的出来找工作,到了今天已经顺利转正。
一开始为了增加找工作的竞争力,学习完框架技术后,我自己也会动手写一些项目,像比如说在线考试系统,视频网站,商城系统等等,有些是我跟着网上的教程做的,有些是我自己设计的,得益于此,我找工作的过程并没有太费力。
在公司开始上班之后,我发现大一学习的技术已经落伍,最明显的是java的jsp技术已经没人用了,甚至后期一些框架技术都已经淘汰,现在Spring家占据大头。如果你发现有些公司还在招聘信息上写些老技术,那也是因为他们有些老项目需要人处理,而不代表他们正在使用这些技术。
如果你可以很确定的回答我,你的公司确实还在用着老技术做开发,那我也没什么好说的,只是我可能会凑到你的耳边小声说一句:“快跑!”
六、细节和思想的成长
开始工作后,发现每个技术又有着各自的精髓。
如果你想学Spring家的东西,那最少要把Spring5学明白了,并在拥有一定水平之后,开始追溯源码的过程。
如果你想要掌握分布式架构,ZooKeeper又是你要学习借鉴的经典之作。
企业社招只聘一些有经验的人是有原因的,很多技术就是要在使用过程中不断总结和遇到问题,才会考虑得更多,更有经验,从而避免很多问题。
简单举一个例子,我想大部分刚开始写代码的人,都写过这样的代码。
<form action="formDate" method="post">
userName:<input type="text" name="name">
passWord:<input type="password" name="passWord">
<inputype="submit" value="提交" />
</form>
这是一个简单的提交页面,可以把用户名和密码提交给后端处理,但这样的代码是毫无安全性的,只要获得提交的URL,用个postman工具,就能无限请求你的服务器,很容易就能让你的服务器红温。
需要优化,然后我慢慢琢磨,查阅一些文章资料,第一步也开始会添加一个验证码。
当然,图中的验证码并不规范,这里只是表达一下我的意思,有了验证码之后,请求都会先检验一下验证码是否正确,否则将无法提交,一定程度上,这避免了别人随意rua你的程序。
但这明显是不够,又长进了一些之后,发现在进行数据提交时,特别是出于账号密码的安全性考虑,我们就需要做到更多处理,考虑到更多。
为了保证数据安全,用户的登录密码不泄露,防止抓包,我们还需要做到数据加密,使用https方式请求等等。
涉及到加密,又要了解什么是对称加密,什么是不对称加密,二者有什么区别。当然,如果这些都不懂,你也可以使用Base64编码,假装自己已经加密过了,但这样的结果一般只能自己欺骗自己,以及收到领导的辞退通知书。
然而,到了这一步,即便你使用加盐、时间戳验证、签名、加密等方式完善了你的安全性,但依旧还存在着许多需要考虑的问题。
比如如果你的页面是一个很受欢迎的页面,并发限流也是必要考虑的内容,除此之外,还有很多细节也需要考虑,事实上,刚才所提的这些安全性设计也不是一股脑使用的,还要看实际应用的场景如何,这里就不在赘述。
七、结语
从一开始的一个form提交账号密码,再到后面的各种考虑,这简单的一个例子,却是我成长过程的一个缩影。
工作中的磨练,加上不断学习的努力。我能考虑预想到更多。
可以确定的是,能坚持学习的人,每天都在成长。