小弟08年本科毕业,过去11年的时间,做过嵌入式开发(单片机,ARM+Linux),做过手机JVM,做过Mac OS开发,做过模式识别算法开发,做过iOS开发,做过很短一段时间的区块链开发,现在终于转战到Java后台了。打算写下一些转战Java后台的流水账,每一段时间记录一下,转换平台过程中遇到的问题,和学习到的新东西。
过去5年时间,都一直在做iOS,就是那种1年经验用了5年的老司机,今年7月份开始想着换个技术方向,丰富一下技术栈,以后转管理也比较有底气一点。
话不多说,转战Java后台首先要把Java语法学一下,毕竟搞过蛮多东西,这个学起来倒不难,不过有个很不爽的地方是,Java相对Objective-c语言还是太粗糙了,调用前必须做一下null判断,否则就是给你个Exception。Objective-C在这里的优势就很明显了,毕竟是基于消息的方法调用,如果是nil对象,直接调用,不会有什么反应。所以到处都是null判断,代码阅读起来不是很爽。
有个在Java学习过程中没有搞懂的东西就是注解(annotation),这个东西看了不少文章,感觉都没讲清楚,先放着,后面有时间了再好好理解一下,毕竟暂时不影响做事。
转Java后台是因为公司接手了一个教辅软件,已经运营3,4年了,代码量将近10万行,不过对于我这种新手来说,也是够喝一壶的了。
项目基于Spring+Mybatis,我理解Spring就跟Cocoa差不多,一套底层框架,Mybatis比较像CoreData那一套封装。Spring相关的材料还在看,Mybatis的内容相对少一些。简单来讲Mybatis由三个文件组成,先通过MySQL语句在MySQL数据库中建表,然后通过Mybatis提供的工具导出Entity, mapper, xml三个文件。Entity和CoreData里面的数据模型文件差不多,就是定义存储的对象的数据结构,一般不对这个文件做修改;mapper是一个接口描述文件,描述了访问数据库表的参数,这里会有一些默认的方法,比如insert,insertSelective, selectByPrimaryKey等方法,在这里要根据需求加入开发人员定制的方法进行组合查找;xml文件是MyBatis语法用xml格式写成的MySQL语句,这个语法还蛮多的,我目前只会一些基本的。
服务器之间的通信使用腾讯的Tars框架,这个是跟iOS开发很不一样的地方,后台开发不像iOS这种单个app,单进程应用,服务器开发涉及到多个进程之间通信,通常不叫多个进程之间通信,叫多个服务之间通信,你要通信的那个服务可能在同一台服务器上,可能在另一台服务器上,所以要一个框架来负责维护这些服务,让彼此能很容易的知道对方在哪里,以及维护服务上下线这些。Tars还蛮好用的,不过我们的这套系统用的很老的1.0版本。
先写这么多,最近做了一段时间,还有蛮多东西可以写,后面再一点点写。