|
课程介绍:
7 [. E2 G2 s6 o5 I( l; U% a
- }( r( g* T$ F. aUber设计与实现训练营将带你用Java和Spring来设计和实现Uber车辆监控系统:模拟车辆实时位置及状态信息,对车辆位置和状态进行实时监控和数据展示。
9 Q% |$ q* E' g' r
4 r, g: @$ [- P/ \; o! M' a预期收获:3 [' p: O9 X8 f; Q$ q& `6 O5 v
* y; l) n1 D& a9 g3 E1.高效的搭建开发环境
9 j% {! R4 B( f5 N2. 设计实现符合标准的RESTful API
) j2 i; H2 |" J+ |4 ]) q' _+ E3. 设计微服务架构下的复杂API
% |7 h% k0 F1 c Q% T: m- x4. 对系统进行扩展,运维 - L* w6 O) Z' ?1 z8 R# l1 C% o
5. 设计高鲁棒性的系统:失败与出错处理。4 n. I. t% L. g9 i- p; _
' k3 o! _$ |2 {其次,课程将着重帮助学员提升应用能力和拓展能力。应用能力是指,在本课程中所学习到的知识和技能也可以运用到其它的应用中,例如Waze中加入社交功能,实时运动信息监控分享,航空监控及管制。拓展能力是指,在已有项目的基础上,我们将指导学员加入新的功能:例如将车辆位置模拟器替换成为手机端APP,从而实时获取GPS位置信息,可以进行车辆以及交通流量监控;根据车辆不同的状态,来进行维修调度和分配;加入乘客请求信息,包括请求地址,目的地等,实时在地图上进行展示等。
9 I# {. t! u6 l& C0 u# [) V
4 W( e% v8 [! w1 D/ G5 P3 U
4 \# d# u2 H3 i9 w; F. q& M. X+ J! r, I" p4 u6 g
学后掌握:
1 p% Y/ q( y7 v$ }; S
2 e, B0 i& s/ k) ~& V% u1. 学生应至少知道Java开发基本知识,为什么用Spring框架,为什么用SpringBoot。
7 w8 }5 N8 |2 N0 P/ m& h- B* Q2. 针对面向传统Spring应用的学生,应能手动进行Spring配置,了解Spring核心框架原理,知道如何增加新的业务功能。
5 y3 O* I& E1 ?$ b. `3. 针对面向当前Spring应用的学生,应能在较短时间内用Spring Boot开发出简单并且符合标准的REST API,并能进行配置管理和部署。
; s; F9 T1 v( \" n7 M3 D! C* X1 a( }$ D4. 针对面向云端Java和Spring应用开发的学生,应能理解云端应用有哪些挑战,如何设计云系统,在合理时间内运用现有的云端框架进行API设计以及集。6 a9 c" w! K4 P ?' Z+ s
% f5 j; `& a0 T; t/ }6 |2 t) r
9 Q, ] @6 _* c0 C& W3 E2 R6 e课程目录:* D& d+ x6 ~; O
! k( i$ S! F- G q8 b# }7 {) k
第一周
2 D- b2 H& A# Z) k' J1. 讲师背景介绍 ^- L; c$ c" T) D& T1 S
2. Java开发现状与趋势
2 ^ M$ A4 B- `, V! P3. Uber的功能,要解决的问题
a. \1 D; i2 [2 T/ _5 V4. Uber系统架构
8 Y' D' W( s2 y3 X$ a5. Uber项目技术栈
3 s$ j- i# N! O4 G. L" J) m 服务层: Spring, Spring Boot,Spring Cloud, ~- U) y1 o* }; J: F# p$ E1 b ]
数据: RabbitMQ, MongoDB
0 K5 t2 [5 o5 B; Z$ |/ M2 h 虚拟化技术: Docker, Vagrant5 d6 t0 w( {+ M. D% k% q X- p
通信: Web Socket$ l [7 r. A! i
6. Uber项目展示
; H% w! i. l5 }* n) |3 }7. Uber项目拓展
- N, w p2 [ `$ g 实时获取GPS信息,进行车辆以及交通流量监控。
! I0 W* O- G( b0 v( D; L 根据乘客需求,加入匹配算法进行乘客与附近车辆匹配进行调度。(Uber匹配系统)8 Z. |5 B/ ?8 e( i( e8 g- w
计算交通流量热点,从而动态平衡供应和需求 (Uber大数据平台)9 n% h; J; B" j5 C2 z' s. E# y# l
) m+ M- Q; D3 l% R d6 N: U项目架构知识体系图:
/ [( a6 A6 L/ f/ S: [" M: Y- f! f. x' Z6 H
$ C; d2 j8 x. e* b# O" O6 E
VIEW LESS
5 F4 b6 I& C/ h第二周
/ r0 U- a$ T$ w# M学习目标:3 t. U: S7 r3 w/ d6 A1 q
1. 理解Java开发基础知识0 v" J2 \) Y' }; z: O& d( o
2. 知道Spring框架核心思想,知道什么是IoC, Spring容器的生命周期,Bean如何进行管理和初始化,知道如何进行Spring框架的配置
8 p# e9 ~5 ^: I3 W& ?* s8 ]3. 能够运用Vagrant操作虚拟机,搭建开发环境
. ?+ d+ A/ P$ |$ G4. 知道什么是REST API,能够理解什么是好的REST API4 E( L9 g1 P- a6 `6 s
5. 能够运用Spring框架编写简单的REST API: F4 f9 ?# Y# H1 J6 X6 a3 ]9 c
6. 能够部署Spring应用程序到Tomcat
1 Y: Y: q; H U: n7 e
, K: P W; E0 @' x3 N" G) W' h& s5 U7 b具体理论课程安排:# W- S! A& q7 U
- b- h7 \8 h+ ?( x: O& a; e1. Java开发基础知识
7 O j2 Z% K; ZJava概述以及现状
4 T/ z& b6 y4 O3 k6 |: L: P% nJava多线程5 H- p; o4 ?& E: N0 G H
Maven简介
9 z" ~/ R3 z, z* rServlet基础* H9 L4 H' g; |
Java服务器工作原理
0 b* n% P+ h \1 [0 a7 F! OJava和其他语言对比+ ]: b8 [3 x9 i7 x. d
2. Spring框架以及原理: R3 g) Y) [$ ~
Spring框架概述
0 J* G; r: g1 v E- U3 `! xSpring核心架构
) O& K3 X b7 U) u" E2 uIoC
% q4 G `5 N/ }8 @( X4 `/ EDependency Injection
; u! T+ G: A" Z' _Bean初始化以及管理6 Z$ `+ P: f' @, n* z3 r) N
Spring容器生命周期6 _" E( r: R% ^) Q& j0 b* @
什么是Component Scan: T$ B1 } g i4 I. F
Spring框架与Java EE的对比
# i, F! b5 ^0 h% J( H( O! F: ~3. Spring MVC
/ j. ~, b! t) @8 K$ BSpring MVC简介
$ c; h0 v9 g$ tSpring MVC核心组件
! }# M, |6 p: I: N' i: N6 ~. WSpring MVC思想及应用6 L% o" `1 [0 `# ^5 Q
4. REST API* k6 J9 N2 [3 ^. E1 S
什么是REST API
1 {( Y& H/ `7 ?HTTP verb
5 L! j/ J% g% |; M% V, ~/ f/ @HTTP status
9 z# k' Y; g9 J1 K8 y6 N, }为什么要用REST
* q1 H3 u' ^& e' L* S6 W, ~9 }什么是好的REST API
8 l" y+ ^+ |! O- h7 L' V A4 L& t* S5. Vagrant简介5 Q \9 t" E. t% g0 m6 R" F
什么是Vagrant
9 n X! l' w( [! H5 Z, z为什么要用Vagrant8 i- x* [2 e, n5 X' Y
使用Vagrant带来的好处- w$ ~( E7 o- r2 A
6. 本地开发环境简介
4 _* Z8 ?$ I' I5 o( y- d, ~xUbuntu6 F6 b% c# W+ D1 I
JDK; e% r- n0 D) J
Git- b& S" [' }0 l0 W$ ^
Oh My Zsh7 z* b. H6 a3 _4 r/ @
IntelliJ IDEA / Eclipse
, [/ v2 ~) | O! D% g/ ~: v5 z: k4 @Maven
8 Y, `/ g! }. o" r$ T, i- v8 w7. Maven 简介4 F; h$ K9 T* `+ K( n. L2 h/ c( P6 e
什么是Maven% T( u" z) L. P' a4 s
为什么用Maven
2 K7 j0 t3 d) _' I5 KPOM.xml概述
6 Z4 u0 T8 G/ @ `; c: l+ e3 GMaven基本操作3 J4 _; s3 L) f+ C0 Q7 q
8. Tomcat 简介6 t$ {: ^; I( O; _6 P4 F- n
什么是Servlet容器' `5 \; O/ K. \: I9 Z/ g% v
为什么使用Tomcat
# o, N' r# N/ D# D2 PTomcat与其他容器对比
* z2 [4 O7 Y& A: E }. e# F$ O$ P, v/ V4 m0 _1 g
项目课程安排:" T6 @/ ?+ _7 |* ] o2 d' ]
1. 运用Vagrant安装本地开发环境
8 B, O" r+ R! E+ S3 u5 x2 @. t/ oxUbuntu+ d; _. f, B) j5 \: I3 b z
JDK
+ L1 J- Q; Y( T* C l. r. EGit
' r" J8 [; X% M) K B* K6 v5 ?0 Q, Z; AOh My Zsh
2 [' l# B2 o' f* c& JIntelliJ IDEA / Eclipse$ {* ]% B o1 e4 D7 q# ^0 @- _+ c
Maven1 B$ q0 I5 J' U8 t, v- m0 o
2. 运用Spring编写简单的REST API: f% w; ^4 F) B$ _$ L7 j
- 编写程序框架
( A0 t, e' A1 H) B引入依赖库' J4 N* X5 i( t1 ~% ^$ l
实现REST API 功能5 P$ l4 i" l% G. ^9 a6 ~" \
编译,打包
p; S1 T5 e9 N8 }部署到Tomcat容器% h) t5 Z$ h# f4 y, z
检查结果
! f6 q; ~* f: {% {课后作业% g+ k$ z2 `% a
1. 编写自己的Spring Bean,并进行依赖注入
: E$ b% H+ a! w8 [! p' n7 V2. 编写新的API, 返回一个JSON对象3 f8 q' `1 A. V" W: o
VIEW LESS ! h6 T# V3 j, |0 i7 n
第三周 r' q s9 _ J
学习目标:) Q' I! t5 ~/ S/ j1 |: X& O; n
1. 知道什么是Spring Boot, Spring Boot有哪些功能,为什么要使用Spring Boot
. t; m) j! A! \2. 能够运用Spring Boot快速搭建Java应用 (重点)
: F% x& ]/ O7 m$ W" I/ M0 R3. 知道什么是Spring Data, 为什么要使用Spring Data9 t* a5 }8 ?5 _' h$ f: B
4. 能够运用Spring Data完成数据持久化- ^/ W# ]" ?: X* P! D
5. 知道什么是容器化技术,容器化带来的好处。 能够使用Docker命令行操作容器
: Y8 r; ?: J+ v6. 能够用Docker运行MongoDB [$ G4 n `/ E) ?! i& T5 J
7. 能够编写简单的CRUD REST API6 J- R! S6 P7 Z$ t C
' R7 z9 ?" g: |2 Q3 M$ B具体理论课程安排:" W6 ?. H7 y. v2 ?2 \5 d
5 n3 @3 m6 ?% e" a1. Spring Boot 简介' X% {: {1 Q2 o# ?5 G0 T. d; r+ }
什么是Spring Boot
* Y; _' D+ C7 |& {% G4 L; P2 b3 B/ x- V为什么要有Spring Boot5 Y8 `; A. s% U5 _0 V
Spring Boot和传统Spring框架的对比
" B. d* ^7 C3 v4 l0 |7 q2. Spring Boot 重要功能* d. M" r J+ }* e- c/ G1 {( m
Convention over Configuration- ] M# }0 D, |4 p2 ^
Embedded Tomcat; ~" `5 |. C6 G! p( I% U
Spring Boot Actuator
, b/ f6 B+ I! p' W. U' u应用属性配置及管理% K; o- A, c! E! O4 v B( `
3. Docker简介
& y5 l* o" G9 I$ Z, S s什么是Docker和容器化技术' R' ^3 }- O$ ~7 F% A0 R% P
Docker带来的好处- k; r3 X- Z6 F5 a
Docker应用
: U% n- A8 U( X/ M. ^+ T! H4 `3 z4. NoSQL数据库简介: |7 I, p1 \, n6 f
什么是NoSQL数据库6 Y4 W; u9 P; N7 g7 B+ D l3 l
MongoDB简介
9 E' n5 ?2 S1 r' B" e# B0 ZMongoDB相对传统数据库的优势
% W1 e5 V3 ]6 T$ Q! T3 D) Z5. Spring Data简介
0 o T( [% A, t8 s* c7 v* Q什么是Spring Data
# E: A) a. p* Z K' h% B: `为什么使用Spring Data' x( R+ B( f5 ]9 Q: b& O
如何使用Spring Data
3 K3 {% M/ G: ~1 C! r: J5 {% d- G) S
项目课程安排:3 N3 |' A* E/ F0 z
- `0 n5 f5 }) [
1. 使用Spring Boot改写第一次课程的REST API
- S% R# k( a) M3 |' |+ g更改包依赖& [) E! h, n( {; H3 H% H
更改框架配置6 ~# O( ~0 U4 J% Z* Q
更改部署方式
; J- r$ V) ?2 V. p4 N8 s9 \. Z- ^2. 使用Docker启动MongoDB
" ]# B8 v% b1 h2 t, k/ K! _1 [& @配置Docker
9 a# F" D, Q0 N/ e& Q启动MongoDB
9 g8 c# u1 _5 N- a9 n3. 使用Spring Data 连接MongoDB
( R, B, Q0 i; A) r+ h3 s编写Spring Data API连接MongoDB
6 Z! o) @) E2 ^2 `! i# {5 D确认没有异常$ ~. |+ S4 n2 e6 ^" b! ]
4. 编写REST API进行数据持久化
" R( y, `" C4 y. X% W设计项目所需的实体类1 G o9 d4 O0 |$ Y3 J8 B
通过REST API持久化实体类9 T V* g" ?+ @& _
通过REST API进行数据库查询/ Q4 }8 V. h5 l; V( g' r
4 T) V$ R' q. r- P) W# ^# f ^4 u
课后作业:
9 X" N* r9 q0 b, l
2 _ q6 v" A8 P! |1. 完成项目所需其他实体类的编写! r- X: d3 `5 D; j2 ]
2. 完成所有实体类的REST API以及数据访问类
- J& w+ V0 I( S) F6 R
% y1 ~9 W+ {1 A" E8 h3 a/ L" M6 y
* S# |7 m Z7 e F4 T3 z+ L+ s
. \& p- ?. j6 T3 S9 {+ p! V7 W' q& o) _/ O/ H7 _' R
' S% j7 G) Y- {! A' S
资源下载地址和密码(百度云盘): [/hide] 百度网盘信息回帖可见$ K- A [3 H% u0 k" U& G7 l
9 e2 z$ B6 z2 S: t
+ M! }. [+ i5 i5 \3 |3 P2 G: e, O9 X1 g
本资源由Java自学网收集整理【www.javazx.com】 |
|