Java教程

【回忆录】看看一个菜鸟程序员在创业公司2年都经历了什么...

本文主要是介绍【回忆录】看看一个菜鸟程序员在创业公司2年都经历了什么...,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

N年前,我以一个菜鸟的身份,进入了一家创业公司 我原本以为公司是这样的… 但是实际上是这样的…
我进去时,我们部门除开部门老大,还有我,还要我,只有我…和我的老大

所以,我就这样开始了我的程序员生涯…,开始了我的苦逼技术之旅…
在这里插入图片描述

公司是做电商网站的,因为我是个菜鸟,所以我接到的第一个任务就是做一个网页,这时我学会了:

  • HTML:用来布局网页
  • CSS:用来美化网页
  • JavaScript:用来做点击跳转,窗口弹出

但,某天,老大跟我说,真正开发时需要用一些开发框架和组件来快速开发,所以我学会了:

  • JQUERY:极大简化了JavaScript的编程方式
  • BootStrap.js:可直接套用其好看的样式进行快速开发

经过加班加点,网页总算开发完成,我兴冲冲的告诉老大我完成了,老大看了一眼,冷冷的说了声,浏览器兼容做了没?所以我用IE打开了我的成果,一看…为什么会这样…没关系的,加油,接下来我下载了:
在这里插入图片描述

  • 谷歌浏览器
  • 火狐浏览器
  • IE6,7,8,9浏览器
  • 360安全浏览器
  • 360极速浏览器

与这些进行了艰苦的斗争,最终我赢了,同时也赢得了老大的第一次赞赏!
第二天,新任务来了,老大说,现在这个网页是静态,需要改成动态的…
紧接着,我学会了:

  • Ajax,用来进行前端调后端接口
  • Json,后端接口返回的数据的一种格式
  • Spring:轻量级的快速开发框架
  • Spring MVC:一个快速开发Web应用框架
  • FreeMarker:一种服务端模板引擎
  • HttpClient:一个Java实现的Http请求客户端
  • Mybatis:一款优秀的持久层框架
  • Mysql:一个国内最流行的数据库软件
  • Maven:一个项目管理工具,可以对 Java 项目进行构建、依赖管理
  • Tomcat:使用得最多的Servlet容器,可以用来接收浏览器请求

往后几个月工作和生活的重心就是上面这些技术…
突然,有一天,公司来新人了,我总算不是孤单一人了,这时老大跟我说,要用一些项目管理工具…所以我又学会了:

  • Git:一个代码版本管理工具
  • GitLab:一个项目管理和代码托管平台
  • Nexus:一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问
  • 禅道:第一款国产的开源项目管理软件,完整地覆盖了项目管理的核心流程
  • jira:Jira融合了项目管理、任务管理和缺陷管理,许多著名的开源项目都采用了JIRA

有了这些管理工具,老大说,除开上面这些,还需要一些自动化构建工具,这样能使得开发测试上线更加顺利,所以,我学会了:

  • Docker:一个开源的应用容器引擎
  • Jenkins:一个开源的、提供友好操作界面的持续集成(CI)工具

一套自动化开发测试被我搭建起来了,有了这一整套项目开发管理工具,我们的小团队合作的非常愉快,不久,我们网站的核心功能开发得差不多了
这时老大说,为了上线之后能够有保障的运行,我们需要给我们的网站配套一套监控和日志系统,这样我们搭了:

  • Prometheus:一个开源的服务监控系统和时间序列数据库
  • Grafana:一个开源的、功能齐全的度量仪表盘和图形编辑器
  • Zabbix:一个企业级分布式开源监控解决方案
  • ElasticSearch:一个实时的分布式搜索分析引擎
  • Kibana:一个能对日志进行高效的搜索、可视化、分析等各种操作的平台
  • LogStash:一个应用程序日志、事件的传输、处理、管理和搜索的平台
  • Log4j:一个可以控制日志信息输送的目的地的开源组件
  • Logback:og4j创始人设计的另外一个开源日志组件

搭完这一套,网站上线了,一段时间后,网站的用户慢慢在增多,我们通过我们的监控系统,发现有几个核心应用压力在不停地增加,老大说我们要做负载均衡了,所以我了解到了:

  • nginx:一个高性能的HTTP和反向代理web服务器
  • lvs:一个虚拟的服务器集群系统
  • keepalive:一个可以检测web服务器的状态的服务

最后我们通过使用nginx并增加几台服务器来做了负载均衡,不过老大继续说,仅仅做负载均衡还不够,我们可以把热门商品给提前缓存起来,所以我又学到了:

  • Redis:一个高性能的key-value数据库,对关系数据库起到很好的补充作用
  • Jedis:一个Redis 官方首选的 Java 客户端开发包
  • Redisson:一个在NIO的基础上,为使用者提供了一系列具有分布式特性的常用工具类

这样,我们的网站访问速度提升了,有一天,老大说,我们要做一个订单状态变更短信通知的功能,说用消息队列来做,让我来做一次技术选型,我又学了:

  • RabbitMQ:是一款高性能、搞健壮性以及高伸缩性的消息队列中间件
  • Kafka:是一种高吞吐量的分布式发布订阅消息系统
  • RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务

最后,我选了阿里的RocketMQ,并跟老大进行我选型的思路,受到了老大的认可,升为了研发组长…
随着业务的发展,某天,老大说,我们要对我们的项目做一次重构,改成分布式微服务架构,让我学习一下:

  • Dubbo:阿里开源的高性能RPC调用框架
  • Spring Cloud:一个为开发人员快速构建微服务架构的开发框架
  • Zookeeper:一个集中式服务,用于维护配置信息、命名、提供分布式同步和提供组服务
  • Netty:一个高性能网络应用框架
  • Xxl-Job:一个轻量级分布式任务调度平台
  • Elastic-Job:一个分布式调度解决方案

接到这么重的任务,我抓紧自己的每一秒来学习这些技术,最后,我跟老大说,我们用Spring Cloud,他所提供的几个组件太强大了,比如:

  • Nacos:一个动态服务发现、配置和服务管理平台
  • Ribbon:一个在客户侧提供软件负载均衡算法的组件
  • Feign:一个更强大好用的Java HTTP 客户端库
  • Sentinel:一个面向分布式服务架构的高可用流量防护组件

这样,我们很长一段时间,陆陆续续的将我们的项目重构为了Spring Cloud,重构完后,我们喝了一顿…
紧接着,我们进入了告诉发展期,这期间,我了解到了:

  • 敏捷开发:一种新型的互联网开发模式
  • 迭代:敏捷开发过程中的周期概念
  • 看板:敏捷开发过程中最重要的效能工具
  • DDD:一种微服务拆分设计思想

等等开发设计理念…

直到有一天,出事了…,我们网站瘫痪了,赶紧的,一看监控,数据库压力爆了,我们通过调整限流等措施,暂时得到了缓解,事后,老大严肃的跟我们说,我们要分库分表了,所以我又去学了:

  • Mycat:一个彻底开源的,面向企业应用开发的数据库中间件产品
  • ShardingSphere:一套开源的分布式数据库中间件解决方案组成的生态圈

经过一顿苦战,分库分表也被我们搞定了,不过老大说,还不够,我们还要做到自动扩缩容,所以我学到了:

  • kubernetes:一个来自 Google 云平台的开源容器集群管理系统
  • openshift:一个由红帽推出的面向开发人员的Paas

在这个过程中我了解到一些概念:

  • ServiceMesh架构:下一代微服务架构
  • Serverless架构:用来构建和运行不需要服务器管理的应用程序
  • 云原生架构:一种结合云环境,充分利用云资源的架构
    经过努力,我们的网站做到了自动扩缩容,很是强大,整个网站的开发也渐渐进入了平稳期…

两年时间,我很幸运,我学到了很多技术,这只是我经历的第一家公司,很感谢这家公司和我的老大,但是,我知道外面的世界很大,需要我走出去,然后,我跑路了

这篇关于【回忆录】看看一个菜鸟程序员在创业公司2年都经历了什么...的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!