热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我与JavaBoy的10年从小白到资深架构

我与JavaBoy的10年-从小白到资深架构- HI ! 大家好,我是你们的新朋友老王随聊。正值Java的27岁生日之际,今年也恰好是老王与Java相识的第10个年头了,而这1



 HI !  大家好,我是你们的新朋友老王随聊。正值Java的27岁生日之际,今年也恰好是老王与Java相识的第10个年头了, 而这10年老王从自己的亲身经历见证了Java技术的快速发展。


关于我与Java的故事,老王从Java技术学习的三个阶段聊聊这10年来我是如何从一个编程小白成长为一名资深架构师,我相信这些经历不论是对在校学生、或即将踏入职场的同学、亦或是正处于职场上升期的朋友都必然会有一些帮助和启发~~



文章末尾有来自老王送给Java Boy的彩蛋!???


目录

1、我与Java的初识

2、我的Java进阶之路

2.1 第一阶段:拓宽Java技术栈

2.2 第二阶段:实践Java大数据

2.3 第三阶段:走向Java架构师之路

2.3.1 熟悉Java相关的优秀框架设计

2.3.2 熟悉相关业务及周边系统

2.3.3 具备勇于担当的精神

3、对Java语言未来的展望

4、源代码——祝Java 27岁生日快乐!




祝JAVA  BOY 27 岁生日快乐!???



1、我与Java的初识 ???

转眼毕业已经10年了,回想当年大学的生活,忙碌而充实。

我大学读的是计算机专业,有幸在大二的时候接触到了Java这门面向对象编程语言。起初主要使用的编程语言还是C和C++,真正爱上Java是在大三上半学期,当时参加了ACM东北三省级联赛并获得了第三名的成绩,这也让我下定决心开始研究Java。

在平时我也会参加学校和周边兄弟学校组织的各大小赛事,时不时的会获取些奖励。正是这些大大小小的比赛,让我对Java产生了更加浓厚的兴趣。

另外,我也会加入校内的一些实验室,跟着学长和老师去实践一些Java相关的实际项目,尤其是参与升级和运维学校内部网站这件事让自己学到了比较多的实战经验。这些经历也为后续自己面试大企业打下了很好的基础。

在最后毕设的时候,自己用Java Swing写了一个模拟百度浏览器的Case,通过这次毕设,将之前所学的Java零散知识点更加系统化,进一步加深了对Java应用的了解。虽然如今对Java Swing这种C/S模式的应用已经停留在教学阶段(实际生产开发已不再使用),但里面一些优秀设计思路依然值得我们学习借鉴。


2、我的Java进阶之路 ???

这部分内容是关于我进入职场之后的一些经历,从技术发展层面可概括为三个阶段。


2.1 第一阶段:拓宽Java技术栈 ???

用2~3年拓宽技术视野。

踏入职场后,我除了主语言Java一直未离手之外,期间也学习了其他不同的编程语言。从前端H5\JS\CSS、到Python、PHP等, 最后到底层数据库MySQL、Oracle等相关脚本开发和SQL优化。开发的应用类型也从PC端到延伸到了移动端。

我记得大概在12年左右,当时正是各种新技术层出不穷的时候。尤其是基于Java语言开发的Android应用甚是火热。可能天生骨子里习惯尝试新鲜事物吧,最后我转向这个新技术。对我而言只是技术的平移,学习门槛也不会太高。

日常也会学习与Java相关的优秀框架,比如 SpringMVC、Mybatis、Maven、RabbiMQ、Log4j、Ehcache等。另外我也会去读一些比较系统化的Java相关书籍,比如《Java23种设计模式》、《Java虚拟机》、《Java高并发程序设计》、《Spring源码深度解析》等等。

我很庆幸自己能持续不断的学习并运用到实践中,这为我走向Java架构师之路打下了坚实的基础。


2.2 第二阶段:实践Java大数据 ???

用3~4年深耕技术和并落地到业务当中。

在15年左右大数据Hadoop技术开始盛行。在经历了3年左右的应用系统开发之后,想着转战这个全新的战场。带着一腔热情和不可知的未来,我最终踏入了大数据领域。

这一干就是4年之久。期间经历过准实时Spark技术和流式框架Flink技术的应用落地。处理的数据量也从刚开始的几百万,到上千万、上百亿的量级。在这期间,也阅读了很多技术书籍《Hadoop大数据存储与分析》、《Spark快速大数据分析》、《Flink原理实战与性能优化》等。

当然大数据技术的应用必须有业务场景的需求落地才能体现其价值。回顾自己做大数据技术的历程,让我收获到的不仅仅是与Java相关的大数据技术体系,同时自己对数据分析方面也有了新的认知,比如什么是数据挖掘,哪些数据有价值等等。另外在技术层面思考也更加全面,比如哪些场景下应该使用哪些设计模式,会结合公司实际业务发展乃至未来的发展,形成一套具有可操作可落地的技术选型。


2.3 第三阶段:走向Java架构师之路 ???

不经一番寒彻骨,哪得梅花扑鼻香。千锤百炼还坚劲, 任尔东西南北风。

用3~4年完成Java技术人向Java架构师的蜕变,我根据个人经历总结以下三点:


2.3.1 熟悉Java相关的优秀框架设计 ???

Java架构师之路非一日练就而成,首先要对行业相关核心技术栈比较了解,比如RPC分布式框架Dubbo、Thrift等。Dubbo前面我也讲过,是非常优秀的设计框架。尤其是它的设计模式、设计思路对于我们如何去做好系统架构设计非常有帮助。

另外也需要了解一些Java大数据方面的技术,学习里面的一些优秀设计思维。比ElaseticSearch、工作流引擎Activiti、消息中间件JMS编码接口、ActiveMQ,还有前面提到的Spark和Flink等等。这些都是基于Java语言写的,所以对于Java出身的开发者来说,学习门槛相对低不少。

只有对各种技术框架设计思路有所了解,我们才能设计出符合业务发展所需的系统。


2.3.2 熟悉相关业务及周边系统 ???

作为一名优秀的Java架构师,除自身技术过硬外,还需要深入了解周边相关业务知识和业务系统,至少能对关键业务节点清楚掌握。这样在设计系统或做架构调整的时候,才能做到有的放矢、有章可循。技术选型一定是结合实际业务需求场景的,否则只能属于闭门造车,浪费时间。甚至有些时候需要架构师对公司业务具备一定前瞻性,这样才能很好的设计出满足未来业务发展所需的系统。


2.3.3 具备勇于担当的精神 ???

除了有过硬的Java技术及丰富的业务知识外,责任心和勇于担当也是作为Java架构师必须要有的品质。

我参加并组织了多次618和双11大促系统备战,深知系统调用链路长,上下游依赖多等复杂性,即使如此,也必须保持系统性能高可用。基于此,尽管在前期准备工作非常充分的情况下,在大促获得启动之后,依然会有一些新的问题出现,比如秒杀导致系统性能出现了瓶颈,C端大量请求异常等。在这样紧张和高压的情况下,作为一名架构师有义务去担起这个责任,带领大家积极应对问题,并能快速给出相应解决方案。


3、对Java语言未来的展望 ???

 随着5G技术已逐渐进入人们的视野,随之而来的是万物互联的时代。物联网产业的飞速发展,带动大数据、云计算、人工智能等领域的蓬勃发展,另外各种语言也应运而生,但相信Java语言会以其功能强大、简单易用、安全稳健等特性,在新的领域展现出新的风采。

我认为Java语言未来发展前景仍旧十分广阔。主要应用领域有三大方向:大数据、云平台和人工智能所以,什么时候学习Java语言都不会晚,想进入这三大行业的抓紧行动起来吧!


4、源代码——祝Java Boy 27岁生日快乐! ???

 Java Swing源代码:

import javax.swing.*;
import java.awt.*;
public class HappyBirthday extends JFrame {
public HappyBirthday() {
this.getContentPane().setBackground(Color.WHITE);
this.setFont(new Font("华文行楷", Font.BOLD, 30));
this.setBounds(500, 250, 500, 450);
this.setContentPane(new Paint());
setVisible(true);
}
public static void main(String[] args) { //主函数
HappyBirthday hap = new HappyBirthday(); //实例化主类
java.awt.EventQueue.invokeLater(new Runnable() { //运行图形化界面
public void run() {
hap.setVisible(true);
}
});
}
class Paint extends JPanel {
public void paint(Graphics g) {
// //画出蛋糕的主体(下部分)
g.setColor(Color.pink);
g.fillOval(100, 150, 240, 120);
g.setColor(Color.green);
g.fillOval(110, 160, 220, 100);
g.setColor(Color.red);
g.fillOval(120, 170, 200, 80);
g.setColor(Color.yellow);
g.fillOval(130, 180, 180, 60);
g.setColor(Color.pink);
g.fillOval(140, 190, 160, 40);
g.setColor(Color.orange);
g.fillOval(150, 200, 140, 20);
//画出蛋糕的主体(上部分)(分成椭圆和矩形)
g.setColor(Color.orange);
g.drawRect(160, 150, 120, 40);
g.fillOval(160, 150, 120, 60);
g.fillOval(160, 150, 120, 60);
g.fillRect(160, 150, 120, 60);
g.fillOval(160, 120, 120, 60);
//描线
g.setColor(Color.pink);
g.drawArc(100, 160, 240, 120, 0, -180);
g.drawArc(100, 180, 240, 120, 0, -180);
g.drawArc(100, 200, 240, 120, 0, -180);
g.drawArc(100, 220, 240, 120, 0, -180);
g.drawLine(100, 210, 100, 280);
g.drawLine(340, 210, 340, 280);
//将上部分背面的线抹去
g.setColor(Color.orange);
//写字
g.setColor(Color.pink);
g.setFont(new Font("华文行楷", Font.BOLD, 30));
g.drawString("JAVA27岁", 150, 310);
g.setColor(Color.red);
g.setFont(new Font("华文行楷", Font.BOLD, 20));
g.drawString("生乐快乐", 180, 180);
g.setColor(Color.GRAY);
g.setFont(new Font("华文行楷", Font.PLAIN, 8));
g.drawString("From 老王", 220, 200);
}
}
}





推荐阅读
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 为何Compose与Swarm之后仍有Kubernetes的诞生?
    探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ... [详细]
  • 本文介绍了如何通过安装 sqlacodegen 和 pymysql 来根据现有的 MySQL 数据库自动生成 ORM 的模型文件(model.py)。此方法适用于需要快速搭建项目模型层的情况。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 本文探讨了程序员这一职业的本质,认为他们是专注于问题解决的专业人士。文章深入分析了他们的日常工作状态、个人品质以及面对挑战时的态度,强调了编程不仅是一项技术活动,更是个人成长和精神修炼的过程。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 在日常生活中,支付宝已成为不可或缺的支付工具之一。本文将详细介绍如何通过支付宝实现免费提现,帮助用户更好地管理个人财务,避免不必要的手续费支出。 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • 本文详细介绍了C++中的构造函数,包括其定义、特点以及如何通过构造函数进行对象的初始化。此外,还探讨了转换构造函数的概念及其在不同情境下的应用,以及如何避免不必要的隐式类型转换。 ... [详细]
  • 数据类型--char一、char1.1char占用2个字节char取值范围:【0~65535】char采用unicode编码方式char类型的字面量用单引号括起来char可以存储一 ... [详细]
  • 本文详细介绍了iOS应用的生命周期,包括各个状态及其转换过程中的关键方法调用。 ... [详细]
  • 项目风险管理策略与实践
    本文探讨了项目风险管理的关键环节,包括风险管理规划、风险识别、风险分析(定性和定量)、风险应对策略规划及风险控制。旨在通过系统的方法提升项目成功率,减少不确定因素对项目的影响。 ... [详细]
  • 探索AI智能机器人自动盈利系统的构建
    用户可通过支付198元押金及30元设备维护费租赁AI智能机器人,推荐他人加入可获得相应佣金。随着推荐人数的增加,用户将逐步解锁更高版本,享受更多收益。 ... [详细]
  • 本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ... [详细]
author-avatar
拍友2602921297
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有