2019年9月技术栈情况汇总

java初级程序员一枚,回顾技术掌握情况,记录成长蜕变过程.

2019年9月技术栈情况汇总

    • 基础概况
  • 具体应用技能
    • 一.掌握javaEE开发常用类库,组件,框架,中间件等使用.
      • 1.基础
      • 2.数据库
      • 3.常用框架及技术
        • 核心技术:
        • 持久层:
        • 视图层及接口:
      • 4.分布式,SOA及微服务技术
      • 5.其他框架及技术
        • 权限及会话控制:
        • 日志管理:
        • 任务及异步:
        • 应用业务技术:
    • 二.了解主流web前端开发技术
    • 三.掌握常用工具软件
      • 1.IDE:
      • 2.DevOps开发相关工具
      • 3.其他设计办公软件等
  • 参与项目情况
    • 一.互联网租房平台项目
      • 本项目中主要负责以下内容:
      • 1.1、项目介绍
      • 1.2、项目结构及路线图
      • 1.3、技术架构
      • 1.4、后台系统
      • 1.5、前台系统
    • 二.互联网在线学习平台项目
      • 2.1、项目介绍
      • 2.2、项目结构
      • 2.3、技术情况
        • 技术架构
        • 业务流程举例:
          • 各模块说明如下:
        • 重点学习微服务技术栈:
      • 2.4、项目CMS系统
        • 2.4.1 SSI服务端包含技术
        • 2.4.2 页面管理与静态化
      • 本项目学习中未完待续...
        • 课程管理与分布式文件系统
        • 媒资管理与在线学习系统
        • 认证授权与Spring Security Oauth2深入开发
    • 三.SaaS-Export项目
      • 3.1、需求描述
      • 3.2、项目技术架构简介
        • 在本项目中主要开发职责:
  • 本人情况概况,近期求职中

基础概况

熟悉基本数据结构及算法,关系数据库原理,互联网协议等.
熟练面向对象编程,熟悉常见设计模式,UML设计及ORM建表等.
熟练函数式编程,掌握链式及AOP编程,了解响应式编程.
掌握基于java和js的web应用开发主流技术.了解C,python,php等语言.
能使用java解决服务端常见业务场景,开发基础爬虫,使用第三方应用接口,了解大数据开发,人工智能,区块链及各云计算平台服务以及SaaS开发等流行技术.
乐于探索原理,源码,关注新技术,能够高效学习.代码规范,自我要求严格,追求高效简洁优雅,崇尚开源.

具体应用技能

一.掌握javaEE开发常用类库,组件,框架,中间件等使用.

1.基础

熟练使用javaSE8语法及常用类库,熟悉javaSE9.10及11等新特性.
了解juc及NIO,了解常用apache-commons工具包等.
了解jvm与GC.熟悉主要javaEE规范及实现,Tomcat使用及原理.	

2.数据库

熟练使用MySQL,ORACLE,Redis,ElasticSearch,MongoDB等
了解FastDFS,GirdFS及第三方云存储,了解Lucene及solar.
熟练使用SQL,了解PL/SQL开发.了解MySQL原理及SQL优化.

3.常用框架及技术

核心技术:

	熟练使用Spring框架(IOC,AOP,JDBC及事务,MVC等组件),Spring Boot,Mybatis(Generator及常用插件,通用mappper),Lombok插件等,并了解原理.

持久层:

	熟悉JPA规范及JPQL,熟练使用Spring DATA(JPA,JDBC,MongoDB,Redis,Elasticsearch),熟悉MybatisPlus,了解Hibernate.

视图层及接口:

	熟悉servlet规范,JSP及JSTL、Thymeleaf,了解Freemarker、Velocity等
	熟悉Restful接口,OpenAPI规范及Swagger2使用,能够开发GraphQL接口及websocket服务,了解SSE开发		

4.分布式,SOA及微服务技术

熟悉Spring Cloud Netflix(Eureka,Ribbon,Hystrix,Feign,Zuul),Config与Bus等组件,
熟悉Dubbo,了解web service,Apache CXF开发等
了解Ngnix,Zookeeper,了解HAProxy,MyCat与PXC集群及主从集群,其他NoSQL集群等系统架构.
熟悉JMS与ActiveMQ,AMQP与RabbitMQ基本使用.Spring JMS及AMQP使用.
事务框架Seata(2PC与TCC),Hmily.RocketMQ事务消息等使用
了解ServiceCombo及CSE,Spring Cloud Alibaba(Dubbo,Sentinel,Nacos,Seata)及Service Mesh等新技术.

5.其他框架及技术

权限及会话控制:

单点登录CAS,无状态登录JWT及Hibernate Validator验证,RBAC技术,
了解Shiro及Spring Security及Oauth2使用,Spring Session应用

日志管理:

	SLF4j规范,log4j及logback框架使用,了解Elastic Stack.

任务及异步:

	熟悉Quartz及Spring Task,基于Spring的多线程异步方法及事件监听,方法缓存,了解WebFlux等

应用业务技术:

	了解Activiti工作流引擎,POI,Jasper Report等开发,爬虫框架WebMagic等

二.了解主流web前端开发技术

1.掌握js,熟悉HTML5,AJAX,jQuery库,DOM及BOM基础编程.了解CSS3开发及BootStrap,AdminLTE,ECharts.
2.了解基于ES6,SPA开发流行框架.
	了解框架Vue(vue-router,VueX,ElementUI与Vuetify),axios,
	了解基于Rective,Umi(jsx,DVA),Antd的模板Ant Design Pro开发.
3.了解mock技术(easy Mock,mock.js及json-server),noBackend,BaaS和FaaS等开发.Nuxt.js与Next.js渲染.了解JHipster.了解node.js,npm、tyarn、webpack,live-server等使用.
4.熟悉cookie,Data URL,Websocket.了解浏览器本地存储,Web Workers等新技术.	

三.掌握常用工具软件

1.IDE:

熟练使用IDEA,Eclipse及SpringToolSuite,HBuilder.了解PyCharm,VS code.

2.DevOps开发相关工具

掌握linux,Maven,Git,SVN,了解Docker及Rancher,Jenkins等

3.其他设计办公软件等

postMan,StartUML,Xmind,Jaspersoft Studio,Excel,World,PPT等

参与项目情况

一.互联网租房平台项目

本项目中主要负责以下内容:

负责前台部分,即时通讯模块后端编码,主要结合MongoDB和WebSocket实现.RocketMQ实现分布式WebSocket.

1.1、项目介绍

Xx租房是直接促成房东与租户对接的生活服务平台,它包含房东发布房源,租户多维度寻找房源,智能匹配房源,近期行情查询等功能。减少中间环节产生的费用,提高房东与租户匹配的成功率。
项目归类ToC的租房产品.
项目后端采用SOA架构思想进行设计,采用SpringBoot、SpringMVC、Mybaits、Dubbo等技术框架实现.
融合了RPC、大数据等相技术,其他如React.js、GraphQL、RocketMQ、ELK等技术,实现了移动web应用、微信小程序应用、后台管理应用等功能。

1.2、项目结构及路线图

分前台APP,后台管理平台.
一期功能:房源搜索、地图找房、房屋筛选、分享房源、联系房东、预约看房、在线签约、支付、身份认证、资讯、推送消息、提醒账单、注册登录.
二期功能:顶层首页、计算器、问答模块.

1.3、技术架构

后端架构:SpringBoot+StringMVC+Dubbo+Mybatis+ELK+区块链
前端架构:React.js+html5+百度地图+微信小程序

1.4、后台系统

后台系统面向管理员及运营,采用的是前后端分离开发模式,
前端为SPA应用,使用基于Rective,Umi(jsx,DVA),Antd的模板Ant Design Pro进行改造.
后端采用的是SpringBoot+StringMVC+Dubbo+Mybatis的架构进行开发。阿里云OSS存储房源图片
一级模块 二级模块 功能描述
房源管理 房源列表 管理房东以及管理员上传的所有房源信息
查看图片 查看某房源下所有的房屋图片信息
看房请求 显示所有租客发起的看房请求列表
租房管理 显示所有租客发起的租房请求列表
房东管理 房东列表 显示系统中注册的所有房东用户列表
用户管理 用户列表 显示系统中所有用户列表(包含房东以及租客)
合约管理 合约列表 显示租客与房东签订的所有合约
资讯管理 资讯列表 显示系统中所有的资讯信息
问答管理 问答列表 显示系统中所有的问答信息
系统管理 房源接口 对接三方房源基本信息接口
字典配置 对房源的房屋配置、特色、签约期限、预定时间进行系统外的配置
合同模板 对签约的合同进行更新
财务管理 账单管理 管理平台中发生的所有账务信息
提现审核 审核房东发起的提现申请,审核通过后系统自动完成转账操作

1.5、前台系统

前台系统面向租户和房东,采用前后端分离开发模式,接口交互查询采用了GraphQL技术,WebSocket实现即时通讯.
前端使用React+semantic-ui实现移动端web展示,后期可以将web打包成app进行发布。
后端采用的是SpringBoot+StringMVC+Dubbo+Mybatis的架构进行开发。
一级模块 二级模块 功能描述
首页 房源搜索 根据条件进行搜索
地图找房 地图找房 在地图内显示各区域房源数量,能够根据小区进行分解
房屋列表 房屋筛选 根据条件进行筛选
房屋详情 收藏房源 用户可以收藏房源信息
分享房源 用户可以将房源信息分享出去
举报房源 用户可以举报虚假房源
联系房东 租户可以直接通过虚拟号码联系房东
预约看房 租户在电话联系房东后,填写预约时间,作为凭证
在线签约 租户与房东达成协议后,签订电子合同,电子合同
支付 租户通过自选支付方式将租金转至制定账户
个人中心 身份认证 用户填写姓名与证件号,并上传手持身份证照片
资讯爬取 爬取各大租房网站相关资讯
资讯推送 系统向用户推送最新资讯
消息 消息提醒 消息提醒
实时通信 用户之间可以实时通讯
账单推送 每月生成账单,便于房东查看收入情况
登录 登录 用户登录
注册 注册 用户注册

二.互联网在线学习平台项目

该项目为学习项目,大致介绍如下,Spring全家桶持续学习中,后续针对重要技术点,另外专门做一篇总结.

2.1、项目介绍

本项目借鉴了MOOC(大型开放式网络课程,即MOOC(massive open online courses))的设计思想,是一个提供IT职业课程在线学习的平台,它为即将和已经加入IT领域的技术人才提供在线学习服务,用户通过在线学习、在线练习、在线考试等学习内容,最终掌握所学的IT技能,并能在工作中熟练应用。

2.2、项目结构

当前市场的在线教育模式多种多样,包括:B2C、C2C、B2B2C等业务模式,本项目采用B2B2C业务模式,即向企业或个人提供在线教育平台提供教学服务,老师和学生通过平台完成整个教学和学习的过程,市场上类似的平台有:网易云课堂、腾讯课堂等,本项目的特点是IT职业课程在线教学。
项目包括门户、学习中心、教学管理中心、社交系统、系统管理等功能模块。
功能模块名称 功能说明
门户 在首页、活动页、专题页等页面提供课程学习入口。
学习中心 学生登录学习中心在线学习课程。
社交系统 为老师和学生交流搭建沟通的平台,包括:问答系统、评论系统、论坛等,学生和老师通过问答系统提问问题、回答问题,通过评论系统对老师授课进行评论。
教学管理中心 教师登录教学管理中心进行课程管理、资源管理、考试管理等教学活动。
系统管理中心 系统管理员登录系统管理中心进行分类管理、运维管理等功能。

2.3、技术情况

技术架构

采用当前流行的前后端分离架构开发,由用户层、UI层、微服务层、数据层等部分组成,为PC、App、H5等客户端用户提供服务。下图是系统的技术架构图:

业务流程举例:

1、用户可以通过pc、手机等客户端访问系统进行在线学习。
2、系统应用CDN技术,对一些图片、CSS、视频等资源从CDN调度访问。
3、所有的请求全部经过负载均衡器。
4、对于PC、H5等客户端请求,首先请求UI层,渲染用户界面。
5、客户端UI请求服务层获取进行具体的业务操作。
6、服务层将数据持久化到数据库。

各模块说明如下:
序号 名称 功能描述
1 用户层 用户层描述了本系统所支持的用户类型包括:pc用户、app用户、h5用户。pc用户通过浏览器访问系统、app用户通过android、ios手机访问系统,H5用户通过h5页面访问系统。
2 CDN CDN全称Content Delivery Network,即内容分发网络,本系统所有静态资源全部通过CDN加速来提高访问速度。系统静态资源包括:html页面、js文件、css文件、image图片、pdf和ppt及doc教学文档、video视频等。
3 负载均衡 系统的CDN层、UI层、服务层及数据层均设置了负载均衡服务,上图仅在UI层前边标注了负载均衡。 每一层的负载均衡会根据系统的需求来确定负载均衡器的类型,系统支持4层负载均衡+7层负载均衡结合的方式,4层负载均衡是指在网络传输层进行流程转发,根据IP和端口进行转发,7层负载均衡完成HTTP协议负载均衡及反向代理的功能,根据url进行请求转发。
4 UI层 UI层描述了系统向pc用户、app用户、h5用户提供的产品界面。根据系统功能模块特点确定了UI层包括如下产品界面类型: 1)面向pc用户的门户系统、学习中心系统、教学管理系统、系统管理中心。 2)面向h5用户的门户系统、学习中心系统。 3)面向app用户的门户系统、学习中心系统未在上图标注,在app项目中有详细说明。
5 微服务层 微服务层将系统服务分类三类:前端服务、后端服务及系统服务。 前端服务:主要为学习用户提供学习服务。 后端服务:主要为管理用户提供教学管理服务。 系统服务:公共服务,为系统的所有微服务提供公共服务功能。 服务网关:提供服务路由、负载均衡、认证授权等服务。
6 数据层 数据层描述了系统的数据存储的内容类型,持久化的业务数据使用MySQL和MongoDB保存,其中MongoDB中主要保存系统日志信息。 消息队列:存储系统服务间通信的消息,本身提供消息存取服务,与微服务层的系统服务连接。 索引库:存储课程信息的索引信息,本身提供索引维护及搜索的服务,与微服务层的系统服务连接。 缓存:作为系统的缓存服务,存储课程信息、分类信息、用户信息等,与微服务层的所有服务连接。文件存储:提供系统静态资源文件的分布式存储服务,文件存储服务器作为CDN服务器的数据来源,CDN上的静态资源将最终在文件存储服务器上保存多份。 流媒体服务:作为流媒体服务器,存储所有的流媒体文件。
7 外部系统接口 1)登录接口,本系统和微信、QQ、微博系统对接,用户输入微信、QQ、微博的账号和密码即可登录本系统。 2)分享接口,本系统和微信、QQ、微博系统对接,可直接将本系统的课程资源信息分享到微信、QQ、微博。3)支付宝、微信、网银支付接口,本系统提供支付宝、微信、网银三种支付接口。4)短信接口,本系统与第三方平台对接短信发送接口。 5)邮件接口,本系统需要连接第三方的smpt邮件服务器对外发送电子邮件。 6)微信公众号,本系统与微信公众号平台接口,用户通过微信公众号访问H5页面。 7)点播、直播,前期视频点播与直播采用第三方服务方式,本系统与第三方点、直播服务对接,对外提供视频点播与直播服务。 8)OSS存储 ,前期静态资源文件的存储采用第三方服务方式,本系统与第三方提供的OSS存储服务对接,将系统的静态资源文件存储到第三方提供的OSS存储服务器上。 9)CDN,本系统与第三方CDN服务对接,使用CDN加速服务来提高本系统的访问速度。

重点学习微服务技术栈:

  1. 服务端基于Spring Boot构建,采用Spring Cloud微服务框架。
  2. 持久层:MySQL、MongoDB、Redis、ElasticSearch.
  3. 数据访问层:使用Spring Data JPA 、Mybatis、Spring Data Mongodb等
  4. 业务层:Spring IOC、Aop事务控制、Spring Task任务调度、Feign、Ribbon、Spring AMQP、Spring Data Redis 等。
  5. 控制层:Spring MVC、FastJSON、RestTemplate、Spring Security Oauth2+JWT等
  6. 微服务治理:Eureka、Zuul、Hystrix、Spring Cloud Config等

2.4、项目CMS系统

本项目作为一个大型的在线教育平台,对CMS系统的定位是对各各网站(子站点)页面的管理,主要管理由于运营需要而经常变动的页面,从而实现根据运营需要快速进行页面开发、上线的需求。

2.4.1 SSI服务端包含技术

分析首页的管理方案。
1、页面内容多如何管理?
将页面拆分成一个一个的小页面,通过cms去管理这些小页面,当要更改部分页面内容时只需要更改具体某个小页面即可。
2、页面拆出来怎么样通过web服务浏览呢?
使用web服务(例如nginx)的SSI技术,将多个子页面合并渲染输出。
3、SSI是什么?
2019年9月技术栈情况汇总_第1张图片
ssi包含类似于jsp页面中的incluce指令,ssi是在web服务端将include指定 的页面包含在网页中,渲染html网页响应给客户端 。nginx、apache等多数web容器都支持SSI指令。
ssi指令如下:

4、将首页拆分成

index.html:首页主体内容
include/header.html:头部区域
include/index_banner.html:轮播图
include/index_category.html:左侧列表导航
include/footer.html:页尾

5、在nginx虚拟主机中开通SSI

server{
listen 80;
server_name www.xuecheng.com;
ssi on;
ssi_silent_errors on;

ssi的配置参数如下:
ssi on: 开启ssi支持
ssi_silent_errors on:默认为off,设置为on则在处理SSI文件出错时不输出错误信息
ssi_types:默认为 ssi_types text/html,如果需要支持shtml(服务器执行脚本,类似于jsp)则需
要设置为ssi_types text/shtml

2.4.2 页面管理与静态化

  1. 为什么要进行页面管理?
  2. 如何修改页面的内容?
  3. 如何对页面进行静态化?
    1.本项目cms系统的功能就是根据运营需要,对门户等子系统的部分页面进行管理,从而实现快速根据用户需求修改页面内容并上线的需求。
    2.在开发中修改页面内容是需要人工编写html及JS文件,CMS系统是通过程序自动化的对页面内容进行修改,通过页面静态化技术生成html页面。
    3.一个页面等于模板加数据,在添加页面的时候我们选择了页面的模板。页面静态化就是将页面模板和数据通过技术手段将二者合二为一,生成一个html网页文件。

本项目学习中未完待续…

课程管理与分布式文件系统

媒资管理与在线学习系统

认证授权与Spring Security Oauth2深入开发

三.SaaS-Export项目

3.1、需求描述

​ 国际物流的业务闭环涉及到海关、船东、港区、仓库、拖车、报关行等多个关联方,交易周期长,支付结算体系受到限制——其复杂性决定了工具的必要性,需要通过工具来建立连接,完成信息的流转。Saas-Export服务于货代企业,通过提供SaaS工具,帮助中小企业简单便利的对国际物流全环节进行流程控制。项目重点围绕四个方面:

1、 权限管理:对登入系统的员工进行细粒度的权限控制
2、 货物管理:提供货物的全流程管理,包含商品详情,报价
3、 报运管理:包括购销合同,出口报运,装箱,委托,发票
4、 统计管理:以图形化界面的方式对销售,财务数据展示

3.2、项目技术架构简介

采用当前流行的前后端编程架构:

后端框架采用 Spring +SpringMVC+mybatis +Dubbox.
前端采用AdminLTE框架的前端解决方案.
2019年9月技术栈情况汇总_第2张图片

在本项目中主要开发职责:

开发webservice调用海关平台,使用CXF与Spring集成开发WebService,基于ActiveMQ的邮件发送功能.
学习使用shiro,设计RBAC权限框架.
参与开发poi及jaspser报表解决方案.

本人情况概况,近期求职中

男,1995年生人,正值coding黄金年龄.
四川大学本科2016级,三年工作经验.野生程序员,原专业轻化工程.

本科期间学生会科技部干事,竞选担任过一年班长,参加大创有一篇论文发表在行业期刊.
毕业进入业内头部企业,从事工厂技术管理及研发工作,有一篇论文发表.
曾经作为爱好自学coding,后因各种原因,响应时代号召,毅然转行,详细技术情况如前文所述.
重视基础,大量阅读源码,专业书籍,理解原理和概念,同时关注新技术,快速学习大量流行技术.

目前坐标成都.
基础能力:

英语CET4,目前通过阅读文档,源码等持续积累中.office办公软件已熟练,C1驾照.

目前求职中,成长积累阶段,期望参考8k-10k,视贵公司情况均可面议.
有意者请留言或联系如下:

Email: [email protected]
微信号:Taylor_woods  (请备注:招聘)

期待能有机会和您共事,谢谢。

你可能感兴趣的:(java学习路径记录)