前言
虽然自己是一名大前端开发者,但是技术涉猎不局限于前端领域,再加上之前工作需要,接触到了JAVA的开发。在之前有一期话题讨论中我讲到,自己在一家美资企业上班的时候,负责部门软件相关的工作,前后端都要开发,所以在那时候才真正的接触到JAVA的开发,虽然在上大学的时候只是学习理论课,但是仅仅是理论课而已,个人感觉没有实际开发的JAVA经历是不算真正的接触JAVA领域的。
众所周知,Java是一门非常棒且很受欢迎的开发语言,在后面的GO等编程语言未出来之前,Java在后端领域占着举足轻重的“统治”地位,程序员老兵无论是前端开发还是后端开发,在工作经历中或多或少都接触和使用过Java,包括笔者在内,对于Java的语法和使用,并不陌生,随时可以上手使用。
实战经历
首先来分享一个笔者的亲身经历,时间回到5年前,也就是2018年,刚入职一家美资企业,但是这家美资企业关于国内的环境很陌生,是做智能硬件研发为主,结合软件使用,出现很大的水土不服的情况,当初成立技术研发部门的时候,笔者加入之后是负责软件研发部分,硬件研发部分有另外一个负责人。当初成立技术研发部之后,首先就是搭建国内节点的服务站点,以及基于硬件相关的数据存储相关,还有企业的国内官网,与硬件结合的原生app和微信小程序等等,这些都是离不开服务器的搭建以及配套的服务,针对以上内容,其实重点就是关于硬件与软件交互的后端程序,这个后端程序就是笔者用Java来实现的,这也是第一次真正使用Java做项目开发。
记得很清楚,当时boss主张自己搭建服务站点以及相关的配套设置,因为国外的云厂商服务在国内的费用有点贵,而且boss觉得没必要买那么贵的服务。但是后来还是没有自己搭建服务站点,原因就是投入的人力、物力不符合企业的策略,后来笔者建议使用国内的云厂商提供的云服务,boss刚开始不同意,原因就是他完全不了解国内的云厂商的特点,他最关心的是安全问题,毕竟智能硬件是公司的核心,他担心硬件的一些核心参数泄密。
好在经过笔者深度了解了国内的几家云厂商,然后做了详细的对比方案,以及云厂商的详细介绍,再经过几次技术研讨会之后,最终选择了阿里云的云服务产品,甚至最后的美国的服务站点也是购买的阿里云的海外版,当时海外版的节点买的是阿里云佛吉尼亚站点,自从使用了阿里云的云产品之后,给当时的技术部节省了太多事情,而且减轻了太多的运维压力,而且通过Java把硬件和软件直接的交互以及数据存储都处理妥当,这是一个非常有成就感的事情。
排查问题
笔者在使用Java做开发工作的时候也遇到了很多问题,都是通过逐步排查进行解决的,个人觉得在做程序开发的时候定位问题比写代码更重要,比如通过输出日志、使用idea编辑器自带的调试功能等,都是很好的排查问题的操作方式。这是在日常开发中常用的排查操作,而且也是Java求职面试中必问内容。分享一下自己开发的登录相关的代码局部,如下所示。
public interface UserService {
/**
* 用户注册
*
* @param userId
* @param dto
* @throws Exception
/ void userRegister(Long userId, UserRegisterDTO dto) throws Exception; /*
* 忘记密码
*
* @param userId
* @param dto
* @throws Exception
/ void updatePassword(Long userId, UpdatePasswordDTO dto) throws Exception; /*
* 通过邮箱发送验证码
*
* @param userId
* @param email
* @throws BusinessException
/ void sendVerificationCode(Long userId, String email) throws BusinessException; /*
* 通过用户名密码获取用户
*
* @param loginName
* @param loginPwd
* @return
* @throws BusinessException
*/
User getUser(String loginName, String loginPwd) throws BusinessException;
}
拓展
使用Java开发的都知道,Java其实是一种多线程语言,它可以使用多线程来执行并发任务,但是,并发编程可能会导致一些棘手的问题,比如死锁。
死锁其实也是一种并发问题,如两个或多个线程相互等待对方释放资源。死锁可能会导致程序挂起并无限期地等待,引起性能问题,由于并发过高,应用难以承载,可以采用多级缓存,应用限流等手段,去解决高并发的问题。
最后
上面简单分享了一下自己与Java的故事,虽然我不是后端领域的开发者,但是我有一个乐意探索的心,愿意去涉猎自己不擅长的领域,我觉得在做Java开发的时候,有一种很棒的体验,尤其是在写业务逻辑的时候,接口调通那一刻,非常有成就感,做其他语言开发没有做Java开发这么明显,可能这正是Java语言特有的魅力所在吧!