Java程序员成长之路

北哥在前文总结了程序员的核心能力,但在专业能力维度,只是做了大概的阐述,并没有详细展开。从今天开始,我会把程序员成长过程中,学习的知识总结成系列文章陆续发出来,还没关注我的小伙伴可以点击关注啦,防止走丢。

本文是第一篇,关于Java领域的相关技术内容。

北哥是java程序员出身,写了有十多年的Java代码,这里的分享是我这些年在java相关领域学习大致路径。

Java本身是一门编程语言,相比其它的编程语言如c、c++,java在企业级开发中是使用最多的。在包括BAT等互联网大厂,人员最多的编程岗位基本都是Java开发岗。核心在于java丰富的生态和社区,对企业级应用开发良好的支持,以及源源不断的人才供应。

既然Java是一门编程语言,因此最基础的编程知识是需要掌握的,大部分计算机专业毕业的学生应该都学习过相关课程,这里做个简单总结。

编程基础

最基本的编程基础知识就是数据结构和算法了。

数据结构方面,常用的包括数组、栈、队列、链表、二叉树、红黑树、哈希表、堆、图等。

这些数据结构基本上都能够在java的基础包里面找到相关实现,我在刚开始学习Java的时候,不知道如何入门,就是研究这些数据结构的Java实现。事实证明,无论在后来接触什么样的框架、中间件,深入到源码级,这些基础的数据结构随处可见。

在算法层面,需要掌握一些基础的算法,常用的有搜索和排序,像二分搜索、冒泡排序、选择排序、插入排序等。这些算法不仅仅需要了解他们的实现,还需要搞清楚时间复杂度和空间复杂度。除了一些基础的算法,还有一些高级算法例如贪心、背包、剪枝、动态规划等,这些高级算法会在大数据、人工智能和算法领域被频繁的应用。

数据结构之外,另外一个编程方面的基础知识是操作系统和网络相关内容。

在操作系统方面,最基本的需要对进程、线程、内存管理等有一定的掌握。

网络方面,核心的就是TCP/IP协议,当然HTTP协议也是必学必会的知识。

以上说的都是一些编程的基础知识。掌握了这些编程的基础知识,就可以迈入Java开发的大门了。接下来就重点看下Java相关的基础技术体系。

Java基础技术

首先,要对Java语言的所具备的基础特性有了解,比如面向对象、继承、内部类、反射、泛型、序列化、引用、异常等。

其次,进入到对java的核心类库(Java?core)的学习,需要做到非常熟悉甚至精通,理解他们背后的实现原理,这部分的核心是Java集合类、java.lang、java.io包下面的相关类等。

第三,掌握了Java?core相关类库后,就需要深入到jvm层面学习。包括类加载机制,GC的算法原理和调优,不同种类的垃圾收集器的区别等等。在后面进入到真正的企业级开发过程中,遇到的许多问题都是需要深入到jvm层面研究相关参数和信息才能发现和解决。

第四,真正的企业级开发都会涉及到多线程和网络编程。多线程相关内容包括线程、线程池、并发编程等,特别是java.util.concurrent包下的相关类是必须要掌握的。网络编程包括基于tcp、udp通信的,主要需要了解socket编程相关内容,另外就是基于http相关的Java?web编程相关,主要是jsp和servlet相关技术,不过随着前后端分离的原因,目前已经很少使用jsp了。

第五,企业级开发一般都离不开数据库,Java和数据库相关的技术主要是jdbc,也有一些场景的数据库连接池的框架如c3p0、dbcp等技术。

最后,写完代码后,程序员都需要做一些自测,常用的单元测试框架如junit、testng、mockito等也是必须要熟悉的。

开发框架

掌握了Java基础的技术后,并不意味着通过这些技术就能够很好的完成企业级应用的开发,利用一些成熟的框架可以大幅提高编程的效率。

在10年前,比较流行的Java相关的开发框架主要是ssh,包括spring、struts2和hibernate,随着技术的迭代更新, 这些框架也不断升级换代,目前在企业中大部分使用的框架是spring+springMVC+mybatis。随着近几年互联网和移动互联网的发展,高并发大流量系统越来越常见,对系统性能要求也不断提高,微服务和缓存系统也成为标配,相关的技术框架主要是spring cloud全家桶和springboot。当然类似dubbo这种RPC框架在企业中也使用的较多。而缓存系统使用比较多的是redis、memcache等。

为了排查问题,正常的企业应用系统都需要记录日志,常用的框架有slf4j、log4j、logback等。

除此之外,还有工作流开发场景会使用到的框架如jbpm、activiti等,权限控制开发场景会使用到的框架如shiro,处理邮件相关的Java?mail等。

使用这些应用框架开发出的应用,在真正提供服务前,还需要部署到机器上,这时就少不了应用服务器来支撑服务的部署。目前大部分的互联网公司都采用tomcat或jboss等轻量级的应用服务器部署应用,还有相对复杂一些的企业级应用服务器如weblogic、websphere等。另外为了做好负载均衡,还需要将应用服务器配合nginx等做反向代理一起使用 。

工具系统

工欲善其事,必先利其器。Java领域也有一些常用的工具和支撑类的系统。如Java开发工具,现在用的比较多是idea和eclipse。

代码版本管理工具svn和git,不过目前svn已经极少使用了,大部分企业会使用gitlab结合git来做代码仓库管理。

包依赖的管理工具maven,以及管理Java包仓库的nexus和artifactory。

另外如果需要做持续集成和持续发布使用的jenkins等

以上这些只是北哥这些年在Java相关领域学习的相关技术内容的一部分,实际的开发过程中,还会有大量的相关技术涉及到,这里就不再详细描述。管中窥豹,也希望能够给新入门的同学一些帮助。

如果你也有相关经历和想法,也欢迎与我交流。

相关阅读

聊聊程序员的核心能力

?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352