收起左侧

2020新版Go开发工程师零从入门到就业班

126
回复
1319
查看
  [复制链接]
  • TA的每日心情
    奋斗
    2021-4-27 03:59
  • 签到天数: 3 天

    [LV.2]小吧熟人

    发表于 2021-8-25 10:52:00 | 显示全部楼层 |阅读模式

    登录后查看本帖详细内容!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    ├─阶段一:Go语言基础入门和编程思维; D6 D5 X. f4 @/ z9 ^9 p
    │  ├─01.Go语言基础知识
    ) ^: }$ h$ y6 B+ D! |4 k│  │      1-1 G0工程师体系课导学.mp4& g; m: [# x  a
    │  │      1-2 go语言的安装.mp44 o$ V* [2 R% l) i7 O
    │  │      1-3 goland的安装.mp4
    * Y3 ^) z. N: {1 _' f% I! `│  │      2-1 变量定义.mp4
      h: {" `$ L1 n+ w# s5 N& w│  │      2-2 内建变量类型.mp4
    1 h5 V+ ~$ i# O│  │      2-3 常量与枚举.mp4+ v9 t- R2 c' v- ?
    │  │      2-4 条件语句.mp4
    . Z: {5 C( n" ~3 Y& X$ I│  │      2-5 循环.mp4
    ' h* l- S$ ?& ]3 D7 a. T, E  q│  │      2-6 函数.mp4
      Q* s' J, F8 J4 [5 T" B│  │      2-7 指针.mp4
    5 Y3 O& Y* x' I$ f5 A3 g/ X│  │      3-1 数组.mp4$ A1 }) @0 ?, {8 W) F5 I5 o  {
    │  │      3-2 切片的概念.mp48 S" |! J' L7 R; G, t# F
    │  │      3-3 切片的操作.mp4
    2 ~" B2 ?5 e6 M1 H3 R- u( G│  │      3-4 Map.mp4
    . E8 {2 ?! Q" U│  │      3-5 Map例题.mp45 M0 }" L" A$ A9 V. |; X% A
    │  │      3-6 字符和字符串处理.mp4' C- i* ~4 b" ^! _+ C' z4 D/ t
    │  │      4-1 结构体和方法.mp4+ p$ x+ R7 ~' o. _$ c6 ]
    │  │      4-2 包和封装.mp4
    " ?3 j1 }8 T; d- G+ J6 Q│  │      4-3 扩展已有类型.mp4
    4 @- D5 ^: z+ J│  │      4-4 实用内嵌来扩展已有类型.mp4
    / f8 q; _+ r$ A5 b│  │      5-1 依赖管理.mp4
    9 A4 ^# X: g% t- F' e7 w9 a│  │      5-2 GOPATH 和 GOVENDOR.mp4
    " Y) r& D" d4 P# b- s" [& f│  │      5-3 go mod的使用.mp4) H+ E" Z( T$ ~
    │  │      5-4 目录的整理.mp4/ q4 ~9 g3 q: p( X5 V
    │  │      
    ! G1 D/ X; G2 h4 r/ a7 g│  └─02.Go语言编程思想4 m/ S, F/ z0 V2 b
    │          1-1 接口的概念.mp4
    ) t+ m8 z' O4 t+ t│          1-2 duck typing的概念.mp4
    & n7 G; f7 ]; g% a2 |│          1-3 接口的定义和实现.mp4
    ) B. C: d, A% c' C" D│          1-4 接口的值类型.mp4
    1 C% m+ H0 G, j) A; `│          1-5 接口的组合.mp46 Z( g3 C5 b$ b
    │          1-6 常用系统接口.mp4: ^) \% l" G/ t. j$ ?% S
    │          2-1 函数式编程.mp4. Y% b: t/ t( T; Y7 d
    │          2-2 函数式编程例一.mp4. E( O3 H; d- s' K8 @. x% x
    │          2-3 函数式编程例二.mp4: f$ F) C' Z- _, j! G
    │          3-1 defer调用.mp4
    - f6 e3 y0 ]; L( [* c  q! K│          3-2 错误处理概念.mp4! M+ J: ~) `0 F& i5 |4 ^2 ]( L. M
    │          3-3 服务器统一出错处理_浏览器需放大.mp4
    " l1 T. s8 S# E- O0 `│          3-4 服务器统一出错处理2.mp4
    $ ~& `3 m+ r& \  m- N& x; R│          4-1 测试.mp4; g, A! D& g- G& p( r+ }* K
    │          4-2 代码覆盖率和性能测试.mp4) a0 N& a. A0 s
    │          4-3 使用pprof进行性能调优.mp4
    # n+ D% O  z7 P# U5 L│          4-4 测试http服务器(上).mp4
    ' W; W; I2 c! @4 m. R2 X- o6 m& ]0 f% m│          4-5 测试http服务器(下).mp4! h) L- _2 r8 E
    │          4-6 生成文档和示例代码.mp45 d: A/ x/ H2 I$ o8 f) E
    │          5-1 goroutine.mp4
    2 }% n) t6 M/ x, V- @5 ~9 Y│          5-2 go语言的调度器.mp4
    0 `; l& j, n. V) F# W6 r│          6-1 channel.mp41 P! Q. s# \: @' N; p1 o1 g; h9 v6 S5 B
    │          6-2 使用Channel等待任务结束.mp4
    % L  t6 k' V1 l% q2 v& x│          6-3 使用Channel进行树的遍历.mp4, b: |) q5 ~5 `5 w! b5 l1 U/ p
    │          6-4 Select.mp4
    . j" e) [3 [( j8 l7 |6 S" |│          6-5 传统同步机制.mp4
    2 }& N* z" J% ]; U1 x& M│          6-6 并发模式(上).mp41 z1 |: N. p" b: W# t
    │          6-7 并发模式(下).mp41 \' V+ R! O, w/ F* _
    │          6-8 并发任务的控制.mp4
    9 f+ z) |. Y+ x% E8 c. s│          7-1 迷宫_算法.mp43 h4 M4 l# n8 q: S
    │          7-2 迷宫代码实现.mp48 o( N. _7 I- C( I) o* R
    │          8-1 http标准库.mp40 t  \5 h3 |5 F7 v
    │          8-2 json数据格式的处理.mp4
    " P& p- F0 Z" S; Q' |/ m│          8-3 第三方API数据格式的解析技巧.mp4. k+ S' v, ^$ k" P
    │          8-4 gin框架介绍.mp4
      z5 ^, y3 x' h0 ]" Z! |$ Y& o│          8-5 为gin增加middleware.mp4) H' _6 s4 d: ]/ p: A
    │         
    7 J( n" i  ^- @├─阶段七:微服务实现电商系统
      g  J  a/ d; K/ h# I# C) ?│  ├─01.商品微服务的grpc服务! H; G  _% N+ `7 {
    │  │      1-1 需求分析-数据库实体分析.mp4
    2 r0 Y' Z% Z$ K3 J│  │      1-2 需求分析-商品微服务接口分析.mp41 i. l! i" Q7 `4 U
    │  │      1-3 商品分类表结构设计应该注意什么?.mp4
    - t" @/ N: C7 j; y& O2 [& @│  │      1-4 品牌、轮播图表结构设计.mp4
    / s6 A, P( `2 h│  │      1-5 商品表结构设计.mp4/ I5 d' v  |8 F# h
    │  │      1-6 生成表结构和导入数据.mp48 ]) S! v# H0 y& Q. Q0 ?) j3 f
    │  │      1-7 定义proto接口.mp48 V- S3 J! p% R# i  P2 z1 ~
    │  │      1-8 快速启动grpc服务.mp4
    # z# z8 o# J0 k* R9 F│  │      1-9 品牌列表实现.mp4+ Z8 U- ?7 S1 M# d. u+ x! |7 n
    │  │      1-10 品牌新建,删除、更新.mp4
    $ q8 {5 }/ I0 w* P- a! D│  │      1-11 轮播图的查询、新增、删除和修改.mp49 x; X1 [* H1 C; C7 V
    │  │      1-12 商品分类的列表接口 - 1.mp4
    8 J- _8 F) m1 _% Z8 \( ?% F. Q│  │      1-13 商品分类的列表接口 - 2.mp4+ I4 [& U- C- M; Z, d4 Q
    │  │      1-14 获取商品分类的子分类.mp4- k- @+ A' t8 a4 j& R) c9 m
    │  │      1-15 商品分类的新建,删除和更新接口.mp4) M8 i1 \+ c, h4 L+ H
    │  │      1-16 品牌分类相关接口.mp4: {- l) \, t# l1 G$ b# q! p
    │  │      1-17 商品列表页接口 - 1.mp4
    / J# }5 F4 p; s7 U2 Y! f│  │      1-18 商品列表页接口 - 2.mp4
    7 d8 E, y2 `5 y5 V- b4 `" M3 m4 p  r& t  a│  │      1-19 商品列表页接口 - 3.mp4, p  V" G% i! _2 N1 W% m; q" E
    │  │      1-20 批量获取商品信息、商品详情接口.mp4
    ! Z5 |2 Q% Q' j, F! K# O3 Q& S  f9 w$ i- Q│  │      1-21 新增、修改和删除商品接口.mp4
    ! Y, q) F& R) Z; a9 L& R# _" W│  │      
    ; j( B% }4 q6 w1 I$ b7 d│  ├─02.商品微服务的gin层和oss图片服务
    0 j5 m4 i$ u) O" m5 m0 |% e. L* Z% D│  │      1-1 快速将用户的web服务转换成商品的web服务.mp4
    ! e& |3 V1 o) v! m' F│  │      1-2 商品的列表页接口 - 1.mp4
    & a8 j% M! s8 a+ {│  │      1-3 商品的列表页接口 - 2.mp4  Q$ p7 }* c% V- B% B4 D$ D" w7 }4 k8 C
    │  │      1-4 如何设计一个符合go风格的注册中心接口.mp4; s. ^& y! {$ K/ o+ R
    │  │      1-5 gin的退出后的服务注销.mp4
    $ c! w! R: J* d( ?$ ~( E' d│  │      1-6 用户的web服务服务注册和优雅退出.mp4
    + W) e9 z+ L( B│  │      1-7 新建商品.mp4
    % J- F+ v: l/ N5 Q, s' K: q, L│  │      1-8 获取商品详情.mp41 F3 Z. f& o, A5 R; \& ]0 k
    │  │      1-9 商品删除,更新.mp4+ O5 g2 ]* }# U+ f% t4 A% K
    │  │      1-10 商品分类的接口.mp4
    ' u0 s& V1 c& O2 v│  │      1-11 轮播图接口和yapi的快速测试.mp4- ^$ Z6 G0 E* o; b; e2 D# E
    │  │      1-12 品牌列表页接口.mp4
    , T5 n7 f. G' X: D0 @│  │      1-13 品牌分类接口.mp44 L  ~1 K! @( ?% N2 C0 K+ ~1 A
    │  │      2-1 为什么要使用阿里云oss.mp49 J' }! E7 x* p. T+ `4 ^  t
    │  │      2-2 oss的基本概念介绍.mp40 d! z6 P! s( [! D! Q
    │  │      2-3 使用代码控制文件上传.mp4
    $ W/ }) X- g. ^5 `7 [/ X│  │      2-4 前端直传oss的流程.mp4
    + m9 ~4 e; H$ @' z" d5 O4 C3 u│  │      2-5 gin集成前端直传文件.mp4
    ) k  c$ J( ]# B% m) l│  │      2-6 为什么我们需要内网穿透.mp4+ v8 M6 p$ Q+ e  Y- [/ y
    │  │      2-7 内网穿透技术解决前端直传的回调.mp48 P% s. T- b) @$ q2 x& d* {4 M6 B2 F9 t
    │  │      2-8 将oss集成到gin微服务中.mp4; O. N; M: B; Z2 t
    │  │      - A/ a. H2 x% d9 t
    │  ├─03.库存服务和分布式锁
    : j+ d( q8 C# G3 |% B│  │  ├─第1章 库存服务/ n& @7 Z$ q& ^1 |, H2 C! ?
    │  │  │      1-1 库存服务的重要性.mp40 h7 e( V( x' w" n7 J( @& }3 e' f) H
    │  │  │      1-2 表结构设计.mp4" l$ U7 C1 x* y5 b3 r
    │  │  │      1-3 proto接口设计.mp4
    8 h" _% L2 g) A│  │  │      1-4 快速启动库存服务.mp4
    3 @* n3 Q& W7 |│  │  │      1-5 设置库存和获取库存接口.mp4/ E4 N4 Y* `* D+ r$ U
    │  │  │      1-6 本地数据库事务解决库存扣减的失败问题.mp4
    ) Y  h. \3 D6 Y1 o, [! n│  │  │      1-7 订单超时归还的重要性.mp4
    6 a: n" f& o1 t5 x( @3 ~│  │  │      1-8 测试库存接口.mp4$ s$ \4 C4 J  y! m  D
    │  │  │      1-9 为所有的商品添加库存信息.mp4
    9 X- ^- ]' _0 k│  │  │      0 }" h# u$ S+ W4 T( {  b4 v
    │  │  └─第2章 分布式锁0 ~' g) r& `/ e4 P; |
    │  │         2-1 并发场景下的库存扣减不正确的问题.mp4
    5 X! L0 `; Z4 r- G│  │         2-2 通过锁解决并发的问题.mp4
    ( _/ R5 O$ ^9 ^/ s  o5 `5 `/ ~│  │         2-3 什么是分布式锁.mp47 y, V) A( E0 b* e
    │  │         2-4 悲观锁机制和mutex有什么关系?.mp4
    ( X! S! `& L: Q( Y+ r% E) M│  │         2-5 mysql的for update语句实现悲观锁.mp4
    3 W8 w  G" I* D0 H3 X│  │         2-6 gorm实现for update悲观锁.mp45 }2 m+ `+ W$ W( ^) P  |  N9 P( c
    │  │         2-7 基于mysql的乐观锁实现原理.mp4" P$ Z7 J9 ?. I4 i7 g, n- U- x" V( R' \
    │  │         2-8 gorm实现基于mysql的乐观锁.mp4
    & c% ]0 z6 g0 W$ |- ^│  │         2-9 基于redsync的分布式锁实现同步.mp4
    ' C& ?7 l- d: }, r│  │         2-10 redsync集成到库存服务中.mp4
    , X1 B2 p8 F# {! N& y  |│  │         2-11 redis分布式锁源码解析 - setnx的作用.mp4( ]: f, [6 b' W/ Z3 i4 _
    │  │         2-12 redis分布式锁源码解析 - 过期时间和延长锁过期时间机制.mp4" M( [2 z* z8 r3 g: [2 F; O. G
    │  │         2-13 redis分布式锁源码解析 -如何防止锁被其他的goroutine删除?.mp4
    / X2 Z. j" t9 C/ p! P, \│  │         2-14 redis的分布式锁在集群环境之下容易出现的问题.mp42 t- `# x, l$ F' x7 l# v
    │  │         2-15 redlock源码分析.mp4
    7 w; p- a( |8 h  {│  │          3 ]5 w3 x8 b2 H; \* s
    │  ├─04.订单和购物车微服务
    / S$ x& c3 e4 s: c- g/ F$ q' c│  │  ├─第1章 订单和购物车服务-service. e/ p) Y* n+ r" i# ?6 u
    │  │  │      1-1 需求分析.mp4
    7 |, I4 x! N  G: g1 P; x6 Q5 D│  │  │      1-2 订单相关表结构设计.mp4  w! |2 i" i7 h
    │  │  │      1-3 proto接口定义.mp4
    & x3 e1 [* o  t5 c& ]│  │  │      1-4 启动订单服务.mp4& I7 l2 d2 g  Y9 _0 g# O6 p4 x
    │  │  │      1-5 购物车列表和添加商品到购物车接口.mp43 n( E& v, H* c- Q
    │  │  │      1-6 更新购物车、删除购物车记录接口.mp4
    : l2 P5 L; Y4 |- H9 q5 N, t│  │  │      1-7 订单列表页接口.mp45 L# ~* v) F2 |& l
    │  │  │      1-8 查询订单详情接口.mp4' V% T% A4 g! I; Y/ ]" u0 C
    │  │  │      1-9 新建订单的流程分析.mp4
    % V. s3 r3 v: j1 P│  │  │      1-10 订单微服务连接商品和库存微服务.mp4
    2 S! C3 Y( f- L7 V! ~│  │  │      1-11 调用商品微服务查询商品基本信息.mp4
    / k' x' I7 Z% v/ F│  │  │      1-12 调用库存微服务扣减库存.mp4
    ! n& n. I+ S& w! P0 V8 f7 R│  │  │      1-13 通过mysql本地事务确保订单新建过程的顺利.mp4( G; B+ F4 ^8 \( o2 s! p
    │  │  │      1-14 更新订单的状态接口.mp4
    % }9 ^2 n, F' X( _│  │  │      1-15 订单服务接口调试 -1.mp4
    . u0 A: G: V5 b" w: I4 H# N│  │  │      1-16 订单服务接口调试-2.mp44 j* n9 V' _% a- w/ H
    │  │  │      
    ; P* h- r3 t; K- j4 T0 B│  │  └─第2章 订单和购物车服务-web层* t9 A9 R+ r! \' u$ ~) W
    │  │         2-1 快速启动订单服务.mp45 s4 W/ ?# R5 o
    │  │         2-2 购物车列表页接口.mp4- o' x' N1 u3 d$ O; ^) x6 y
    │  │         2-3 添加商品到购物车.mp4
    3 w' O9 E9 h. n; z% M│  │         2-4 更新和删除购物车记录.mp48 N- _! a7 {  w
    │  │         2-5 订单列表页.mp48 z1 ?3 H1 Q. a4 k
    │  │         2-6 订单详情接口开发和测试.mp4
    & ~4 G$ Y9 ]6 I/ g$ Z7 w& q- t3 o0 M│  │         2-7 新建订单接口开发和测试.mp4
    2 T, x: `. l! m- X$ _+ `│  │         
    : ^& T! v* K  p0 s, |" T, s│  ├─05.支付宝支付、用户操作微服务、前后端联调3 l# s2 H" A- U6 A. S6 W2 Y; f
    │  │  ├─第1章  支付宝支付
    3 c8 q5 c: o9 G│  │  │      1-1 支付宝沙箱环境开发流程.mp4
    ( R. l; F+ G3 [6 u3 v( ^│  │  │      1-2 私钥、公钥的概念以及支付宝如何解决订单的安全性问题.mp4) f  \$ N! X3 K) i
    │  │  │      1-3 支付宝的公钥、私钥和回调url配置.mp4
    . ^; Q! T2 p. G; m4 K; h& p, ~│  │  │      1-4 生成支付宝的支付url.mp4
    4 r( B3 Z6 Y( X8 P# ^  H│  │  │      1-5 gin集成支付宝支付.mp45 }5 m9 H; C8 z- @8 p
    │  │  │      1-6 支付宝回调通知url逻辑接口.mp4' p* d5 f( ^  c3 U4 S% f
    │  │  │      3 _: c$ f' ~/ E" {! O
    │  │  └─第2章 收藏、收货地址、留言服务开发9 a- b3 m) s( [
    │  │         2-1 需求分析.mp4
    ; v0 r$ I5 H  Z6 g+ s4 o6 k│  │         2-2 定义用户操作服务的表结构.mp4
    2 y( J  x$ m6 v2 i2 L│  │         2-3 定义proto接口.mp4
    $ w3 f; r# m1 K) x│  │         2-4 启动用户服务.mp47 E+ q; @6 M6 H$ J$ _6 V5 b
    │  │         2-5 service的handler源码解读.mp4( K/ s/ }0 B5 z/ P
    │  │         2-6 web服务启动.mp4" p! `: f5 p, w
    │  │         2-7 gin的api源码解读.mp4
    / }) G, M3 x" ?) ^5 L6 _2 l│  │         2-8 通过yapi测试接口.mp4$ i% W6 z8 ~7 e/ X
    │  │         
    # @; Z( I5 S2 R│  └─06.elasticsearch实现搜索微服务2 ~: O/ j/ f5 O4 p6 R
    │      ├─第1章 elasticsearch常用接口* Y& {4 |0 s% `8 D
    │      │      1-1 我们为什么要用elasticsearch进行搜索.mp4_音频.mp4% r' W- G# R0 x
    │      │      1-2 安装elasticsearch和kibana.mp4
    9 a& e: ^5 b' J) O  o2 u│      │      1-3 elasticsearch中的基本概念.mp4
    + F) |" Q- y: e( ]; H. X- |- x8 S│      │      1-4 通过put和post方法添加数据.mp4
    2 _/ I. ^$ m6 y. E4 X│      │      1-5 通过url和query body查询数据.mp4
    " L  p5 n0 a1 x│      │      1-6 通过es更新数据的坑.mp4
    ; ^0 Z$ \. [8 P, _  O" v& v6 F│      │      1-7 通过bulk和mget批量操作数据.mp4$ \$ V2 L. j" ~7 H8 N
    │      │      1-8 一个完整的查询api是如何的-match查询?.mp4
    , V, W+ n) z' y9 K& ~8 e! V" q│      │      1-9 es是如何通过倒排索引查询数据的?(1:30-2:30 代码小).mp4* J+ W2 O0 s. ?0 H; A# _
    │      │      1-10 match_phrase进行短语查询.mp4% L1 y$ i  ^) P+ ~
    │      │      1-11 通过multi_match指定查询字段权重.mp4+ A& L& [1 Y( K6 M0 o1 ?% V3 A3 k
    │      │      1-12 query_string查询和match_all查询.mp49 ?: O( h' ?0 y0 i4 |3 J
    │      │      1-13 term查询有哪些需要注意的地方.mp4
    # _5 n/ ]3 }& P- l7 ^- y* ~│      │      1-14 range区间查询、exists查询、fuzzy模糊查询.mp4+ d, H; f) I: U& R7 u3 ?4 F3 h
    │      │      1-15 bool复合查询- must、must_not、should、filter.mp4
    & P* J. }/ t9 D* N│      │      1-16 mapping中的keyword和text类型区别.mp4
    0 f, X# W+ M/ k" i  Q. n) A0 k│      │      1-17 match查询原理分析 - analyzer查询过程.mp4
    9 V$ j' P' q3 ^& R" G│      │      1-18 分词对于elasticsearch为什么很重要.mp4
    9 I8 \3 y% S+ ?│      │      1-19 ik分词器的安装和使用.mp4) J/ x. o0 }1 I/ g7 }0 R
    │      │      1-20 自定义分词器词库.mp4: f/ ^1 [# Q% O+ D" j' c; g" k; `+ l
    │      │      
      a/ ?! }" V5 w│      └─第2章 将elasticsearch集成到项目中/ I$ p* [; g! ~$ x! @& D: W0 b! [6 X8 s
    │              2-1 go实现match查询.mp4
    9 t! [& E7 D- v│              2-2 将es中的对象转换为struct类型.mp4& N9 P( |) U1 _1 [6 @/ {
    │              2-3 保存数据到es中.mp4
    8 X) `' y4 Q! ?6 J; }: K7 q0 U, \│              2-4 通过go语言完成mapping的新建.mp4* d3 c- a! x1 a9 f  c
    │              2-5 有哪些接口需要使用es.mp4+ c% b0 i$ d' [1 H. A( F
    │              2-6 mysql和es分别在系统中的角色是什么?.mp4
    7 G  o! t$ h1 f% H8 z+ Q+ k0 D│              2-7 建立商品对应的struct和mapping.mp4# d- H' A" Z  r3 B5 l
    │              2-8 启动gin的初始化过程新建index和mapping.mp4
    4 d, {8 s& M' A/ ]3 t. h) k" Z│              2-9 将mysql中的商品数据同步到es中.mp42 p5 [- ~" Q9 `2 z5 D/ y2 ~3 L2 w7 f
    │              2-10 如何通过mysql和es协作完成商品的查询-1.mp4$ z: B: l3 ]' ]9 u" c
    │              2-11 如何通过mysql和es协作完成商品的查询-2.mp4
    0 B' ^2 n! O, h* M│              2-12 确保商品添加到es中的事务一致性.mp4
    ' H2 W6 X% T; x0 M( Y) ]│              1 x9 \# w1 P+ E' t& K% k* T
    ├─阶段三:“租辆酷车”共享出行产品设计与研发
    ( A1 s7 s# @- ^│  ├─01.租辆酷车小程序-前端设计初级" ?3 n1 ?# W9 K! g* d
    │  │      1-1 框架的选择.mp4
    ) K3 E2 y2 S5 S! ?* A6 z4 Z│  │      2-1  首页地图页的实现(上).mp4
    . P1 J9 Q6 _7 Y7 A6 z7 b1 a│  │      2-2 首页地图页的实现(下).mp46 Z" D" t/ U0 F  e
    │  │      2-3 汽车位置的移动.mp48 |! Q5 b8 c" f
    │  │      3-1 注册页面布局.mp4, m& l# D3 U4 d
    │  │      3-2 注册表单的实现_1.mp4
    5 I: U0 f" H% g  z% f. c│  │      3-3 注册表单的实现_2.mp4& b" N$ X0 u) |; p* |5 a7 p( q
    │  │      3-4 注册页面的状态转换.mp4
      k; v, k3 h6 N│  │      4-1 开锁页面的实现_1.mp4
    4 ~4 ?" p' g( X* y3 k│  │      4-2 开锁页面的实现_2.mp4" J0 n' [, j6 W( \$ C$ F
    │  │      
    : {% r5 p) t" ^* w4 }8 E( z# K│  ├─02.租辆酷车小程序-前端设计进阶) `. d  E- }) Y4 I; G" q$ X
    │  │  ├─第1章 行程页面布局与行程计费设计实现
    5 T5 D, f8 h  O4 X/ Z1 t: F! B│  │  │      1-1 行程中页面的实现(上).mp45 G! v" U% V! P, y
    │  │  │      1-2 行程中页面的实现(下).mp4
    3 b) T! i# W& v) V│  │  │      
    2 g4 R2 Z; _; h% ]! N0 ^+ z8 D& @│  │  ├─第2章 实战事件参数绑定与页面跳转
    % l: _+ L$ j7 o' V; ]6 M│  │  │      2-1 行程费用计算.mp4& a  N$ S) J/ B8 `
    │  │  │      2-2 Swiper控件(上).mp4- m1 Q- b: f' g5 Q& [4 b
    │  │  │      2-3 Swiper控件(下).mp4
    5 @! x# C' Q& |1 ?* C, ~│  │  │      2-4 页面的带参数跳转(上).mp4
    ( j6 ?! k) ~  z, W│  │  │      2-5 页面的带参数跳转(下).mp4
    4 X# E4 F7 K; f' Z1 B8 Z│  │  │      2-6 页面跳转的强类型化重构(上).mp4! D* d$ g/ R$ m( t0 U
    │  │  │      2-7 页面跳转的强类型化重构(下).mp4; K1 M% J& m/ j7 `" r6 [
    │  │  │      
    ; \( g  ?; a* V3 u│  │  ├─第3章 页面导航设计与实现
    # i- X9 j, c, ^│  │  │      3-1 垂直导航之Scroll-View(上).mp4
    ! M3 d1 V* {% x7 I$ F7 O│  │  │      3-2 垂直导航之Scroll-View(下).mp4
    * d2 D9 X1 y/ p( a: i│  │  │      3-3 控制右侧内容的滚动.mp48 L9 u, w; L, P" ^; g
    │  │  │      3-4 控制左侧导航滚动.mp4, Z7 A2 I; E* l
    │  │  │      ' y1 ^. z5 t1 A4 J
    │  │  ├─第4章 前端核心能力拓展-自定义组件  q8 Q5 T) l- Z! M
    │  │  │      4-1 自定义组件之模态对话框.mp4
    * m9 j' M, ]9 L, Q  N" O│  │  │      . z; ^/ {3 K6 y7 K5 @
    │  │  └─第5章 前端总结
    ( z9 j& `6 m. z│  │          5-1 前端开发的总结.mp4
    ' j( q: l; T6 B0 W│  │          2 t  L0 e2 O/ j$ C6 ?% M
    │  ├─03.租辆酷车后端-接入微服务GRPC3 K& o8 K1 Q3 Y, h% Q3 @; O( m8 s
    │  │  ├─第1章 Go语言vscode配置5 K. ]; m5 O8 v1 Q: Q* x4 w
    │  │  │      1-1 Go语言之vscode配置.mp4
    9 Z9 W; ]7 Y. _' z4 w5 D│  │  │        y5 u$ E; c+ t$ a9 B3 S( q" L
    │  │  ├─第2章 初识微服务框架gRPC与protobuf2 w6 R4 ]& }2 W
    │  │  │      2-1 GRPC的作用.mp4' z( j8 K5 K8 @" @* l
    │  │  │      2-2 ProtoBuf编译器的安装.mp4( ^. ^8 c# O1 v4 B% @
    │  │  │      2-3 ProtoBuf的使用.mp4
    5 t4 s* ~% x. y│  │  │      2-4 复合类型和枚举类型.mp45 d  G% s& B* u7 I  q6 W) j
    │  │  │      2-5 ProtoBuf字段的可选性.mp4' A5 G2 e3 G* {! F( [/ R  g
    │  │  │      
    # j: M+ S2 z; t+ Q$ I" M" V│  │  ├─第3章 微服务gRPC进阶
    1 ~$ K& ~4 ^  P│  │  │      3-1 GRPC服务器及客户端.mp4
    & R6 a! b$ I( ^! G3 ], b9 }& F* c│  │  │      3-2 REST vs RPC.mp4
    1 v+ U7 s, G5 M% d& i│  │  │      3-3 GRPC Gateway的作用.mp4
    % N# O3 N. K. R8 x; B│  │  │      3-4 GRPC Gateway的实现.mp4% F2 S( ], G# {0 f; ]: F% h/ U
    │  │  │      ' A8 W" z1 ]2 w! W
    │  │  └─第4章 小程序结合微服务应用实战* y; J& N/ ], h
    │  │         4-1 小程序访问GRPC Gateway.mp4
    . y4 ~( }* e( R│  │         4-2 数据类型的统一填坑.mp4
    % d& n4 Y2 d; b! S│  │         4-3 小程序项目结构的调整.mp4/ S  i1 t1 M5 I4 R" z% h) l
    │  │         4-4 小程序请求的强类型化(上).mp4, Q9 M* F9 q5 m6 Q
    │  │         4-5 小程序请求的强类型化(下).mp46 z4 J! C8 \; m! k
    │  │         
    . ]: d( @! I! @5 H4 b: W% D) h9 U│  ├─04.微服务与存储设计+实战登录服务+ l" R5 X% r) d- f8 w+ M5 }! E
    │  │  ├─第1章 微服务进阶实战-租辆酷车服务划分设计与实现
    - m. M2 k1 f7 |/ e5 @│  │  │      1-1 进一步理解微服务.mp47 _, {$ m9 d6 h8 F- O5 O+ ?) h: r5 ?
    │  │  │      1-2 租辆酷车后端的微服务划分.mp4) A$ m( c6 |: E) V  w, q, \
    │  │  │      1-3 小程序登陆过程分析.mp4
      z( Q) y0 e/ d2 c. g7 R) }0 n: G│  │  │      1-4 登陆服务的框架.mp49 r* S, |2 \, W0 u: A  @* }  _9 |
    │  │  │      1-5 登陆服务的框架.mp45 Z0 [. V7 I, E* s# W
    │  │  │      1-6 获取OpenID_1.mp4+ ?- r- X3 j& v8 }; n1 B
    │  │  │      1-7 获取OpenID_2.mp44 J8 ^) Y: N8 T+ C" `4 R6 Q1 F
    │  │  │      0 l& a9 S& \# @4 C0 q2 M7 o
    │  │  ├─第2章 租辆酷车小程序存储设计实战-基于NoSQL之MogoDB. \) F& Y0 e% v/ {& t/ a$ Q+ b
    │  │  │      2-1 关系型数据库 vs 非关系型数据库.mp4: }  a  o7 d& C1 f/ [5 n0 C
    │  │  │      2-2 用docker来启动MongoDB.mp41 a3 |5 u( a) p5 k& x8 A3 |
    │  │  │      2-3 MongoDB的CRUD操作.mp4+ J/ B2 [0 f: O+ f  c' D/ B" I
    │  │  │      2-4 用MongoDB Playground模拟用户登陆.mp4
    8 [# d1 {+ k3 K+ h│  │  │      2-5 通过go语言来操作MongoDB.mp49 u" E. y' s( F, a
    │  │  │      ' m9 d3 w' `1 v5 L
    │  │  └─第3章 租辆酷车登录服务设计与实战1 r. w" K! E; k6 V9 K2 K" [/ u
    │  │         3-1 实现微信登录数据绑定.mp4
    4 s3 H+ {; I9 V; t│  │         3-2 数据绑定的代码重构.mp4: J, V, z7 E( h5 |
    │  │         3-3 用Go语言来控制Docker启动MongoDB.mp4
    & m, N/ ^% g5 f7 |│  │         3-4 建立针对MongoDB的测试库.mp49 E( T/ C  }8 v3 c4 @  u3 `- U
    │  │         3-5  表格驱动测试的实践.mp4
    4 [# P; e6 e  \% F" w│  │         3-6 表格驱动测试的实践.mp4
    % t& y1 e2 P9 Q- V4 ?9 x6 I9 \│  │         3-7 登陆服务阶段性总结.mp4
    5 H# b# l& ~/ s: j- j3 _" @+ c0 i5 |│  │         
    - K8 `* u- c1 }9 v, }│  ├─05.租辆酷车权限设计与JWT实战5 ^9 o* T/ n' _# j. g
    │  │  ├─第1章 权限验证JWT与RSA非对称加密算法
    " d0 j6 Z3 f# A: u2 G│  │  │      1-1 JWT简介.mp4* d, {% b7 F. I; @* y2 F
    │  │  │      1-2 用RSA非对称密钥签名JWT.mp43 W9 x3 \' H$ z# Q. @: u
    │  │  │      7 k+ ^, I8 I  V! M
    │  │  ├─第2章 JWT+Go语言应用
    3 j6 A0 Z( r1 M* {; M+ T5 @│  │  │      2-1 JWT的Go语言实现.mp4
    ; P/ q1 ~: @$ n' q│  │  │      2-2 JWT的Go语言实现.mp43 ~! G# ?8 Z: F5 n
    │  │  │      2-3 验证JWT Token.mp4
    , N3 s2 n# W9 S│  │  │      2-4 验证JWT Token.mp4
    # o) ^: E# K* f: |; R* o│  │  │      , i- W. ], J: \% @# E$ `
    │  │  ├─第3章 Context上下文与登录拦截实战
    & ~% Y; T3 b/ w6 Y9 u- I) W│  │  │      3-1 Context的概念.mp4
    ( U: R6 B' f0 m* D│  │  │      3-2 Context的示例.mp4% ~* P$ r4 e* c4 Q) C6 A% S
    │  │  │      3-3 创建TripService.mp42 a5 p1 w  m* @
    │  │  │      3-4 实现登陆状态拦截器.mp4, p: L! M2 ^- h
    │  │  │      3-5  实现登陆状态拦截器.mp4
    1 T* U( c1 K" i: T. P& N* m0 h│  │  │      # k! b8 t9 b4 L+ d" {% N
    │  │  ├─第4章 重构实践+Identifier Type设计模式应用
    # O' ?3 X' i$ s3 O' z/ d. ]  ?│  │  │      4-1 重构.mp4
    ! m" r; t$ R& ~; \│  │  │      4-2 应用Identifier Type设计模式.mp4
    $ Y' g* C8 ?/ t1 ]│  │  │      ; [6 j: p4 D4 z) P& B+ z% t
    │  │  └─第5章 客户端登录携带token+登录重试实战
    * j* W9 @* k5 h' H- q9 v( b6 `│  │         5-1 客户端携带token.mp4. l( M6 K1 b+ T2 o# z3 |% n
    │  │         5-2 客户端登陆的重试.mp4
    , q: K, L1 s: w% W) `& N, G│  │         
    6 O: W( i. s" _8 ?7 i1 F│  ├─06.租辆酷车后端-行程服务实战+后端最佳实践, b% A& i  C2 r  V+ z# M. P
    │  │  ├─第1章 行程服务的标准化流程
    & E# N/ j$ B/ J$ p$ q% p* p4 }│  │  │      1-1 行程服务的定义(上).mp44 o" w# B, |: f& ]
    │  │  │      1-2 行程服务的定义(下).mp4
    " [- X4 }/ N7 [5 L/ @7 \) O2 {8 P$ u  h│  │  │      1-3 行程的创建.mp4
    / z5 J( ?( z, @1 A, k& X8 `│  │  │      1-4 行程的获取.mp4
    1 T: F9 w8 B6 |4 `/ t2 P│  │  │      1-5 对于ID的进一步重构.mp4
    9 `$ t, a, I1 k8 @5 }. Q" C3 N│  │  │      1-6 获取行程的测试.mp43 @2 G" ~! Y! l3 }; _& }. j
    │  │  │      1-7 创建行程的测试.mp41 t( J9 }: B  D+ m
    │  │  │      
    9 w" l% b- {. Y0 X9 a4 |│  │  ├─第2章 批量获取和乐观锁保护
    ! o8 m- f0 H+ z' Z9 @│  │  │      2-1 批量获取行程.mp4* [. g* x+ Q7 Q( j) f
    │  │  │      2-2 用乐观锁更新行程(上).mp4
    8 H! E5 n* y0 F+ D2 M3 U│  │  │      2-3 用乐观锁更新行程(下).mp4- Z. p5 l0 ]9 ^0 W1 X
    │  │  │      
    2 e6 O3 ]; x8 Q, v5 b│  │  └─第3章 行程服务整合
    # q7 E: @. x! a" s& C$ S* Y│  │          3-1 创建行程服务及防入侵(上).mp4
    3 Q8 Z9 [8 H% ?│  │          3-2 创建行程服务及防入侵(下).mp41 r9 o! m2 ~! }8 j  U+ _
    │  │          3-3 创建行程服务的测试(上).mp4
    . B9 V! }# v+ {8 a$ [/ Q  R: V, ]│  │          3-4 创建行程服务的测试(下).mp4
      I, j0 I% m- P0 P6 M0 n1 X│  │          3-5 创建行程前后端联调.mp4, x5 D0 |# S. G8 E- D
    │  │          3-6 获取行程及行程列表的前后端联调.mp40 X: N/ v, i# W! V$ z, z
    │  │          3-7 行程更新服务.mp44 j! @6 J) a, F0 F/ v2 a
    │  │          3-8 行程生命周期的测试.mp4
    % S. J% j" Y  K6 V6 ?3 D/ W* h│  │         
    - M1 E0 Q" Z( n0 o0 {# k1 R│  └─07.租辆酷车后端-身份服务与认证实战+云存储
    & ?2 }% ~1 x6 e% F│      ├─第1章 租辆酷车-身份服务设计与实战- t$ C8 o/ q# g* {# q% m# I
    │      │      1-1 身份服务的定义.mp4
    ! m1 z6 q  `( o- u│      │      1-2 身份服务的实现.mp4$ T" m. u% D' ]; g9 w% m: B
    │      │      1-3 客户端的对接.mp4) P% G5 H" o7 U5 n: w9 B& E" x
    │      │      1-4 微信数据双向绑定.mp4
    # r! W  P7 J3 E; j6 N  S* k" V│      │      1-5 与行程服务的联调.mp45 n* d. @6 V  h
    │      │      1 d7 Z2 d+ _! J0 v
    │      ├─第2章 租辆酷车-云存储设计与实战
    - f$ f( [& b  O& u% g" i% v) j│      │      2-1 对象存储的简介和使用.mp4) G* ?' k6 }2 C5 L& x5 k
    │      │      2-2 用Go语言和小程序操作对象存储.mp4
    ' W% M  |% y( q/ B: K8 c+ ]│      │      2-3 获取图片内容的流程分析.mp4
    , x$ c& ~' y( X│      │      2-4 存储服务的定义.mp4
    / z9 ]8 M* ^- A' {4 D│      │      2-5 存储服务的数据库实现.mp43 v5 a( l8 s+ T  c1 y5 e/ V
    │      │      2-6  存储服务的完整实现.mp4( e: \4 |0 \4 y; R, ]5 u
    │      │      2-7 使用GRPC客户端检查存储服务.mp4
    ! [( s9 M1 a' s4 R# V0 K& B* R8 \│      │      
    4 E8 B( @7 N" Z0 ]│      └─第3章 租辆酷车-身份认证设计与实战
    $ Q/ R, i; \3 H7 Z* k2 H│             3-1 与身份认证服务的关联.mp4* T# [4 M/ d/ e, u
    │             3-2 身份认证服务的测试以及修改.mp4( c  {' q- `# c
    │             3-3 身份认证模块的前后端联调.mp4
    5 g2 e, a0 ^3 n. D0 d& l* J│             3-4 阶段小结.mp40 Z$ t' ~5 H( c, t1 `
    │              
    7 j$ o: L6 T4 B8 w. h├─阶段二:租辆酷车小程序与TypeScript
    4 X" l) Y, I: ?1 L6 P$ @# V│  ├─01.小程序极速上手与租辆酷车初体验
    % w6 F: O% q. n│  │      1-1 小程序的优缺点.mp4
    1 ?6 U. s9 D( n8 _│  │      1-2 小程序营销案例.mp40 J& D2 V2 L' j
    │  │      1-3 小程序账号配置.mp4$ t* u' \" i( `2 Y+ P$ j. u1 l3 W- Y; v
    │  │      1-4 小程序开发工具.mp4
    . \& @$ m- {  C( p│  │      1-5 vscode的安装和配置.mp4
    0 ?, p0 D' _; N2 N│  │      1-6 小程序的配置.mp4! ]$ R1 k0 k% u! b7 k
    │  │      2-1 小程序的运行机制与setdata渲染(上).mp4
    ' K3 i! n7 }& J3 \) X" U│  │      2-2 小程序的运行机制与setdata渲染(下).mp4% s9 [  U! p" U7 P& X" j- ~' h) t5 R
    │  │      3-1 小程序的生命周期.mp4
    ; E0 T; }7 J7 E│  │      3-2 页面的生命周期和页面栈.mp4
    " m) m& m' ]5 W│  │      3-3 调试工具的使用.mp4" Z5 ^7 S, C( j  Z5 a( w/ I' p
    │  │      4-1 给小程序添加地图组件(上).mp4
    # A1 `; P1 m5 ]9 L$ c6 M% C│  │      4-2 给小程序添加地图组件(下).mp4
    7 E; |- v% B0 {( U; h& A│  │      4-3 Docker简介.mp4( T( [0 g: \  P
    │  │      4-4 汽车位置实时更新展示.mp4
    , i3 H1 u* G0 Q1 Z│  │      . o. `. {5 f9 z0 K5 D* d/ L
    │  ├─02.极速上手TypeScript应用
    6 ~8 T" C# x, @  @& B# n* m│  │  ├─第1章 TS环境搭建与配置7 n& r( [# o! J! g8 h1 ~1 e
    │  │  │      1-1 node和typescript的安装.mp4% m+ R/ c% k8 U
    │  │  │      1-2 typescript小程序代码的生成.mp4
    / O2 k9 `+ Z, {% {│  │  │      1-3 typescript小程序代码的生成.mp4+ s3 R' @. d& j0 w; [5 P. w! V  i
    │  │  │      1-4 gitignore的配置.mp4. r- I- @% c  e: `" T0 t+ Y
    │  │  │      ' m( z) H- o  M& ^
    │  │  ├─第2章 Typescript与javascript1 W! k& k! D+ w5 I% e
    │  │  │      2-1 typescript简介.mp4
    : }$ q! P2 c+ f2 e: z│  │  │      2-2 回顾javascript.mp49 o6 V% d$ p% w, J
    │  │  │      
    % R9 s6 U, N$ [8 c* P- C│  │  ├─第3章 Typescript语法基础5 ?( ^, D/ E& X! L
    │  │  │      3-1 基本数据类型.mp4* ]6 F4 V# P( S+ R% t/ h& n
    │  │  │      3-2 基本数据类型.mp42 s7 m- u8 @; p7 o
    │  │  │      3-3 逻辑控制.mp4
    3 P' H/ @) E& K" y( c* P│  │  │      3-4 枚举类型.mp4
    2 ]" g2 b% j* l4 m│  │  │      
    % ?* [" V5 G! ]/ R* K$ ~% ^│  │  └─第4章 TS进阶之数组、对象、函数与方法
    ' ^# P$ K+ o* G/ f; D│  │          4-1 数组(上).mp4) Q% z' v% H1 n
    │  │          4-2 数组(下).mp44 P0 F& S' ?7 {
    │  │          4-3 对象.mp4
    ( s5 s$ l3 R# u8 V│  │          4-4 函数的定义.mp4% J5 c9 X$ i$ c; s( B
    │  │          4-5 为对象定义方法.mp4: o+ G. k& H3 T/ A9 T
    │  │          4 j9 G( |: Q5 |4 P2 z/ a0 }
    │  ├─03.精通Typescript1 W$ l1 b2 N& L. h5 h
    │  │  ├─第1章 初识TS函数式编程
    % |9 }) @" U! R- x  R$ W. j/ P│  │  │      1-1 函数式编程引导.mp40 e* |3 D+ B. O
    │  │  │      
    3 _3 J! [* O1 k$ T│  │  ├─第2章 高阶函数与函数闭包$ K5 g* ]' [* Z$ i
    │  │  │      2-1 一等公民与高阶函数.mp47 S/ z) H) v; e) B/ H" l4 P
    │  │  │      2-2 函数的闭包.mp48 Z" m2 \6 M4 \! u1 ]* w4 a+ c
    │  │  │      2-3 函数的闭包.mp4! V5 f3 R) F" d! v; v# M
    │  │  │      ' W, g( z. S; f2 `
    │  │  ├─第3章 函数式编程总结与应用
    - W, d/ B& h% a9 E  _4 d│  │  │      3-1 函数式编程总结.mp4
    6 X' Y7 v% a6 r3 f│  │  │      3-2 函数式编程在小程序中的应用.mp4
    + E5 W- ]. A9 M+ I│  │  │      
    3 u) c: ^" N6 b: e' W* N& e│  │  ├─第4章 数组的变换+ s. d2 ^0 h; `. W8 U0 T. u
    │  │  │      4-1 数组的变换.mp4
      m& e6 X0 H" P│  │  │      
    0 @$ F# t7 q7 J6 ~' `5 V│  │  ├─第5章 Promise
    6 S/ ]/ a/ S9 G( Q│  │  │      5-1 回调函数的缺点.mp4. Y9 Y' a" n( j8 n; y
    │  │  │      5-2 Promise的创建和使用.mp4
    / L% T  N6 t; s/ R0 {│  │  │      5-3 同时等待多个Promise.mp4
    3 h$ K" `" |9 f5 L  V│  │  │      5-4 将小程序API改写成Promise.mp46 @7 ?! Y0 M& d' T7 c
    │  │  │      5-5 获取用户头像1.mp4
    # y7 @# b; R, s│  │  │      5-6 获取用户头像2.mp4) L4 S. R; ?) ?! A1 Q
    │  │  │      5-7 async-await 语法糖.mp4
    0 r$ c/ W+ A1 }7 ~& g│  │  │      
    ) {( _2 L" W$ |+ ]6 [" R1 r5 e│  │  ├─第6章 TS之面向对象:接口、类、泛型
    8 f# O6 \$ l5 \│  │  │      6-1 接口.mp4
    # Q% |1 }8 M" l& O│  │  │      6-2 接口的高级技巧.mp4
    8 ]3 m" O, a" Q0 f( R% E0 A│  │  │      6-3 类.mp48 e5 ^- C+ R7 n% c+ V; _
    │  │  │      6-4 用类来实现接口.mp4
    & j0 w7 C! W0 Y' q│  │  │      6-5 泛型.mp4
    6 v$ b' V. Q, i) c3 e$ C│  │  │      
    " E# n; K7 @5 |& G( C3 b│  │  └─第7章 TS总结
    - _$ D; }, J9 x* k) n│  │          7-1 typescript总结.mp4
    6 c/ O0 X# H* F  L% r: Y* j* _/ I│  │          / R7 l2 a- R3 B2 O$ x
    │  └─04.前端知识体系速成
    9 T! O5 S" [. A$ x) l│      ├─第1章 租辆酷车小程序原型的开发目标9 Z4 a% J1 l# ^7 w5 E
    │      │      1-1 小程序开发目标.mp4/ X8 Q' ?3 s+ D9 l( i" f  }
    │      │      
    . U, {" x& R9 d0 B+ w# ^│      ├─第2章 WXML模版与CSS入门& v. q$ e( c9 C9 g% l- x1 g  p
    │      │      2-1 WXML简介.mp4
    % x6 Z7 b: O# g7 H) X│      │      2-2 CSS选择器.mp42 \# p* B+ r  t
    │      │      2-3 CSS相关问题的提问方法.mp4
    5 g7 E  m* Y4 Z) ~( V│      │      
    * d6 R; q- L: @/ i8 e/ T! B( }& C│      └─第3章 快速掌握最重要的CSS知识点" L! B& V, y2 s5 p' M7 b
    │             3-1 控制元素的位置.mp4
    6 e7 g' _  k6 s- r. x1 ]│             3-2 文本样式.mp4: u+ w) ?) M* a$ n" Q
    │             3-3 flex布局.mp4' Y' ^" i4 W7 @- e: ~0 x
    │             3-4 在小程序中使用css.mp4
    ) B  ]9 N" c9 \0 N│              
    ( a  J0 J- P! C- S6 p├─阶段五:电商项目- 微服务基础2 I. t2 |4 B9 e+ h& f
    │  ├─01.从0开始理解rpc和grpc, L3 `2 n7 e) _6 x4 [
    │  │      1-1 课程学习前的说明 - 很重要!!.mp41 b$ k2 a0 {; a6 O
    │  │      1-2 课程中需要用到的开发环境介绍.mp4
    ' {0 M- P$ \4 U+ i│  │      1-3 windows中安装centos7虚拟机.mp4
    $ m) P% e5 C+ X1 D+ K! Z│  │      1-4 xshell的安装和使用.mp4
    3 z1 [- I6 q. a6 a4 s│  │      1-5 git的安装和配置.mp49 Q6 d' C/ A. _0 u  `' M
    │  │      1-6 docker和docker-compose的安装.mp4
    9 x3 ^2 q$ i  |- ?" I' C# S  }│  │      1-7 mysql和navicat的安装和配置.mp4
    8 ~  A; Y. ^! e) Q│  │      1-8 windows下安装go和goland的配置 - 很重要!!.mp4
    ' S( A- S% J/ X/ k/ L│  │      1-9 linux下go开发环境搭建.mp4# |" K+ P' x9 }3 l  P3 R4 B
    │  │      1-10 windows下安装nodejs开发环境.mp4
    " ]% d0 i% R7 a* K" W│  │      1-11 linux下安装和配置nodejs开发环境.mp4
    ! V) U/ L4 R; L│  │      1-12 代码提示神器 - kite的安装和配置.mp42 p5 \) V  F" }+ X5 g
    │  │      2-1 gopath开发模式和go modules开发模式对比.mp4; V* k) s! a9 h! n' A7 O6 U5 p
    │  │      2-2 go编码规范-1.mp4" D  B$ b) z6 {+ ~$ ]4 V& s
    │  │      2-3 go编码规范-2.mp4/ d9 S* Z4 o+ u5 S
    │  │      2-4 什么是rpc?rpc开发的挑战是什么?-1.mp47 k' X# A5 X7 V! S1 d& f/ K
    │  │      2-5 什么是rpc?rpc开发的挑战是什么?- 2.mp4; l: E+ |3 n$ v/ T7 j6 e
    │  │      2-6 通过http完成add服务端的功能.mp4
    ' c, q0 ~4 Z( L' l& s8 G) n│  │      2-7 通过http完成add客户端的功能.mp4$ @4 u, X; l6 p# @' Y! T8 u
    │  │      2-8 rpc架构技术要点.mp4
    3 i# S* Z5 i. O9 \' L- W│  │      3-1 go快速体验rpc开发.mp4
    / V. L6 ~/ q, d8 @│  │      3-2 替换rpc的序列化协议为json.mp4
    4 r  l5 m) y$ O/ S7 K* F│  │      3-3 替换rpc的传输协议为http.mp4: _# A' S3 w3 C1 D% {  m. q
    │  │      3-4 进一步改造rpc调用的代码-1.mp41 ?9 a9 L' ^6 Q1 m# p
    │  │      3-5 进一步改造rpc调用的代码-2.mp4* U! ~' S& z! t. L
    │  │      4-1 什么是grpc和protobuf.mp4
    4 ?: [  z  E' S& P│  │      4-2 grpc开发环境的搭建.mp4
    1 ?9 y  V2 E* X$ f$ `" c- R, h│  │      4-3 goland下配置protobuf插件.mp4
    2 J/ ?9 m' R+ l, b* y  ]5 a6 S│  │      4-4 protobuf和json的直观对比.mp4
    1 }8 y- P  ?  x/ Y7 ]│  │      4-5 为什么我们需要安装protoc和protoc-gen-go?.mp4
    6 r7 k9 M. M) _" f5 j│  │      4-6 go下grpc快速体验.mp4
    : T& }7 v: Q8 ^0 ]  ^5 I│  │      4-7 grpc的流模式的定义.mp41 [9 |% A+ |+ m  x# y4 E
    │  │      4-8 grpc的单向流,双向流代码实现.mp4
    $ @. b; O6 w/ X. D. y$ ^$ s1 f" t2 I│  │      % G: {# U  c# X( r7 p; z/ |
    │  ├─02.grpc和protobuf进阶' b. O: w5 l, G' ^5 n! r! a3 x4 I
    │  │      1-1 protobuf的基本类型和默认值.mp4
    ' X% e. f- S4 d; r9 h│  │      1-2 option go_package的作用.mp4
    : w7 [0 r9 [: G7 t3 L3 Y│  │      1-3 proto文件同步时的坑.mp4$ R7 c; C7 k9 Z1 u" E6 k* ^
    │  │      1-4 proto文件中import另一个proto文件?.mp44 F' A- r) A" J
    │  │      1-5 嵌套的message对象.mp4; T' Q0 U- d7 S. ?
    │  │      1-6 protobuf中的enum枚举类型.mp4
    # X/ ?: _2 Z7 E│  │      1-7 map类型.mp4
    : L& K) ]1 `9 r; k' f( C% G│  │      1-8 使用protobuf内置的timestamp类型.mp4& v" Z- |- a- m
    │  │      1-9 grpc的metadata机制.mp4
    8 y9 Y' H8 E1 N+ ]4 Z! b, j3 |│  │      1-10 grpc拦截器.mp4" N5 ^4 k0 R, F0 d$ y
    │  │      1-11 通过拦截器和metadata实现grpc的auth认证.mp4; k* l) o& a2 O9 S1 \, W$ k$ t9 d
    │  │      1-12 grpc的验证器.mp4
    & P# E& s! ]3 y! ~$ |  I$ f3 [  [│  │      1-13 1-12-2grpc的验证器.mp4
    ; E5 V8 P: o3 y5 x* R- e4 L# M* r│  │      1-14 grpc的状态码.mp4
    0 E4 A8 g) e. w/ ?; ], I  O│  │      1-15 grpc中的错误处理.mp4
    & R1 j  F& d8 @8 o/ [) g│  │      1-16 grpc的超时机制.mp4
    ( B- d4 O- s: Z& T- l│  │      1-17 protoc生成的go的源码里面有什么?.mp44 J9 G4 s" C. G0 w" Y# \
    │  │      
    & }. w+ I: \+ i; E: f6 f│  ├─03.yapi文档管理、gorm详解
    ( b* \" o7 P7 i- X  b; s$ f│  │      1-1 如何启动电商系统和后台管理系统.mp4
    - S" k" j1 H7 `6 E0 D- i: S% c8 R│  │      1-2 后台管理系统需求.mp4. s& t' C( W1 |9 _
    │  │      1-3 电商系统需求分析.mp4
    4 z# i$ _' I% x3 E+ v3 Y0 u7 x3 b│  │      2-1 单体应用如何部署?.mp4% u6 y( k/ [2 F  Y$ d+ |7 D4 Z
    │  │      2-2 单体应用开发痛点.mp4- N- j4 T/ S' c0 k
    │  │      2-3 单体应用的架构演变.mp4
    1 G4 k* J6 {- q! \│  │      2-4 服务拆分变动.mp4) q( F  q+ C6 U5 E) e* n
    │  │      2-5 微服务的基本拆分.mp4! A' }6 z- ~2 A3 q
    │  │      2-6 分层微服务架构.mp4
    7 [; ]" i5 E. n; S+ ^│  │      2-7 微服务需要解决的问题 - 重要!!.mp4" n+ B2 k6 ]7 Q: c- {
    │  │      3-1 前后端分离的系统开发演变过程.mp4/ g: j% V7 {$ ^  f* \+ A" ?$ P- @$ Z: z
    │  │      3-2 接口文档管理之痛.mp4
    / Q. r5 y% H9 h( ~; V│  │      3-3 yapi的安装和配置.mp4) a! N( r% V9 P1 [: m# ]4 F
    │  │      3-4 yapi基本功能使用.mp4: L7 |9 A! H/ f- j: L! `
    │  │      3-5 接口的导入和导出.mp4
    7 R) |0 w4 Z7 w│  │      4-1 什么是orm?如何正确看待orm?.mp49 ^. V2 w$ B$ `$ k5 m% h
    │  │      4-2 gorm连接数据库.mp47 |" }8 H" |- k0 G+ f
    │  │      4-3 快速体验auto migrate功能.mp46 Z  s, ^8 r5 n, y' x
    │  │      4-4 gorm的Model的逻辑删除.mp4+ n4 h; j7 L- V% H# g6 F
    │  │      4-5 通过NullString解决不能更新零值的问题.mp4
    & m* A1 P: P( _+ C) g* I│  │      4-6 表结构定义细节.mp40 F. B$ ]' M( b  j' p
    │  │      4-7 通过create方法插入记录.mp4
    9 K8 F+ |* F  \│  │      4-8 批量插入和通过map插入记录.mp4
    0 G9 ?( F% X; m% L1 y│  │      4-9 通过take,first、last获取数据.mp4
    # \9 G; s- K9 S+ K9 k- Z) G, O' E, w│  │      4-10 gorm的基本查询.mp4
    4 ]) J4 d5 ^+ h. _. |; L7 J│  │      4-11 gorm的更新操作.mp42 }2 a7 c5 C3 Q( P5 G
    │  │      4-12 gorm的软删除细节.mp4
    ( }9 M; e% t4 [( G) j│  │      4-13 表的关联插入.mp4
    0 p2 Q" O$ O$ A& U9 H0 F2 o│  │      4-14 通过preload和joins查询多表.mp4/ i9 @; R- l8 b: {4 }
    │  │      4-15 has many关系.mp4
    7 B2 ~. W' ^$ {  e' e9 ?3 q│  │      4-16 gorm处理多对多的关系.mp4
    8 Z' i3 ^3 [9 M9 }/ \+ b% f│  │      4-17 gorm的表名自定义、自定义beforecreate逻辑.mp40 F) ]9 q/ _9 W# u
    │  │      8 i7 }, S: q: B3 b- x% ?
    │  └─04.gin快速入门
    8 C# J% R! X1 {% @4 `* z│          1-1 gin的helloworld体验.mp4# Z+ H, r6 J1 h' E5 H( T& c# p
    │          1-2 使用New和Default初始化路由器的区别.mp4; T8 G8 m/ Z& _/ n1 E8 @, y, W
    │          1-3 gin的路由分组.mp4$ u, N7 ?# C3 I6 w3 j! p
    │          1-4 获取url中的变量.mp4
    5 c& v$ [7 O8 @4 Q2 e│          1-5 获取get和post表单信息.mp4
    5 o7 O5 X/ J% n% [│          1-6 gin返回protobuf.mp47 q' ?2 D9 i, U
    │          1-7 登录的表单验证.mp4
    7 Y6 |* G- o# A6 J0 i% q3 j3 N│          1-8 注册表单的验证.mp4, B! o9 I. V- m: ]: J9 u
    │          1-9 表单验证错误翻译成中文.mp4; F0 q( M. R, s# x, i" n
    │          1-10 表单中文翻译的json格式化细节.mp4" Q; v: D' e1 e  n# F. l9 K
    │          1-11 自定义gin中间件.mp4
    + x. B& d0 O2 [│          1-12 通过abort终止中间件后续逻辑的执行.mp4, P6 P, N# k- u# Q
    │          1-13 gin的中间件原理源码分析.mp4
    6 c. C& s6 b4 W8 o& T│          1-14 gin返回html.mp46 e% _& e& [) z5 W3 c: {4 F
    │          1-15 加载多个html文件.mp4  a5 P0 G0 @* ~2 h
    │          1-16 static静态文件的处理.mp4
    ) h" j$ K  V7 N* [' A3 [0 e) u│          1-17 gin的优雅退出.mp4
    5 H: S, l  l8 M+ C+ }1 ]│         
    7 d/ _4 ?, T1 [$ n" T, U  Z* T; c+ L├─阶段八:分布式系统核心、微服务的部署
    , D' R2 p6 m7 I9 h5 T7 p│  ├─01.分布式理论基础、分布式事务解决方案5 y' w' ~8 T5 {6 m
    │  │      1-1 为什么订单会有超时机制.mp45 h- O: w! W6 A& a
    │  │      1-2 数据库事务的ACID特性.mp4; H% e! h) @9 J% U; q! o/ A
    │  │      1-3 分布式系统中出现哪些故障会导致数据不一致?.mp49 g9 W" {5 I( |3 q- z; t5 `
    │  │      2-1 cap理论.mp4$ C4 T+ O* j3 ?4 R. C. ^
    │  │      2-2 BASE理论.mp4) r1 ?* D. ?& L
    │  │      2-3 2pc两阶段提交分布式事务.mp4( d1 j. @9 I  g/ X4 M) ?
    │  │      2-4 TCC分布式事务实现方案.mp4: E5 B1 ?2 t) T: N* A3 V% `
    │  │      2-5 TCC分布式事务实现方案 - 订单服务的tcc接口.mp4
    1 D& X$ i. W% e│  │      2-6 TCC分布式事务实现方案 - tcc实现难点.mp4
    # i, z4 w1 F% p│  │      2-7 基于本地消息的最终一致性方案.mp4: `7 P8 T8 g  R  C! f9 _
    │  │      2-8 基于可靠消息的最终一致性.mp4
    4 D  m) o3 |$ @4 u$ P1 o│  │      2-9 最大努力通知方案.mp4
    * X; k- P  w, ~/ r7 ?│  │      4 I+ I$ W* S" ]0 H
    │  ├─02.学习rocketmq实现幂等性机制等
    ! C' Q6 L0 z4 Q& {│  │      1-1 mq的应用场景.mp42 K2 d( }. ?) l$ K/ A
    │  │      1-2 mq消息队列技术选型.mp4
    3 {9 Y, B) `" e# k2 t│  │      2-1 rocketmq的安装和配置.mp4
    + R) v( j# F' }1 C│  │      2-2 rocketmq的基本概念.mp4" ^- e2 `% a% d3 @7 p, h, i! T
    │  │      2-3 rocketmq的消息类型.mp48 A- X6 X  I" X2 \
    │  │      2-4 go发送普通消息.mp4* z! V/ a9 L/ M' }6 \; p2 l5 Z
    │  │      2-5 通过pushconsumer消费消息.mp4& f& ?  V9 M+ M. P$ `3 d5 |# x
    │  │      2-6 为什么要使用延迟消息解决库存超时归还问题?.mp45 V  [& T2 U, H( P+ \
    │  │      2-7 通过TransactionProducer发送事务消息.mp46 v. D9 m$ k" N- W" {2 J
    │  │      2-8 测试rocketmq的事务消息.mp45 s9 R3 z. j! n; w8 `
    │  │      3-1 订单新建过程中会出现哪些不可控因素导致数据不一致的问题?.mp40 A  L0 j9 h) I2 D6 y
    │  │      3-2 先扣减库存和后扣减库存是否能解决分布式事务的问题?.mp46 [: h6 \, c9 Y' i
    │  │      3-3 tcc在解决库存扣减中的问题.mp4. ?1 F/ I- E9 h9 C9 ~. D; O! k
    │  │      3-4 基于可靠消息最终一致性方案在库存服务上的不足.mp4
    1 w- t) V' l: Y; |1 [│  │      3-5 如何通过基于可靠消息实现库存的一致性.mp41 B0 t& H5 l8 U% N
    │  │      3-6 在createorder中发送事务消息.mp4
    1 |! o3 c/ k( x. Y8 U: N4 Z│  │      3-7 ExecuteLocalTransaction本地事务的逻辑.mp4; C# j) ?5 a) _
    │  │      3-8 本地事务消息回查应该如何做?.mp4
    ' T( ~. d# m2 \0 a/ l: _│  │      3-9 库存扣减服务中表结构的设计.mp4
    - ^8 t2 h9 g7 W3 c" \5 C│  │      3-10 gorm定义具备嵌套对象的列.mp4
    . e3 E/ W" p* R3 u! x( g9 T8 a│  │      3-11 库存服务的sell逻辑修改和归还逻辑重构.mp4% k1 g7 H8 B% @& c
    │  │      3-12 测试库存服务和库存扣减历史记录.mp4
    ) _' {& L1 I& \9 v4 y% e, ^│  │      3-13 测试rocketmq的事务回查后的库存归还.mp4
    2 K& L- [. p0 a│  │      3-14 在订单服务中发送延时消息解决库存归还的问题.mp4! P- R4 j# m0 G) b9 @
    │  │      3-15 rocketmq中shutdown造成的坑.mp4) L$ K9 A5 i2 A; v, y  `( A
    │  │      4-1 什么是服务雪崩.mp4
    7 k# o2 l; l1 e. {& Y/ q- }│  │      4-2 超时、重试和幂等性机制.mp4+ H6 G8 ?: @) h  Y/ p
    │  │      4-3 哪些情况下需要考虑幂等性问题.mp43 ]) J/ i" x& e) {% l$ ~
    │  │      4-4 使用grpc-middleware实现grpc调用的重试.mp4: m$ q, f# ~8 ~" u  N- O- i
    │  │      4-5 常用的幂等性解决方案.mp4
    - q- ^3 N( B% r' |1 V│  │      1 J2 U2 l% h- d0 D
    │  ├─03.链路追踪、限流、熔断、降级
    ' l, ^& ?1 u5 c/ W" O│  │      1-1 为什么我们需要链路追踪.mp4
    # ^0 [0 _; e# R  ^/ P3 ]│  │      1-2 链路追踪技术选型.mp48 ~& T0 I+ W+ j; B. I" E
    │  │      1-3 jaeger的安装和架构介绍.mp4
    + Z3 G4 @/ L$ Y0 x; r' F& H, H$ r8 E- L. _( @│  │      1-4 opentracing中的tracer、span、spancontext.mp4$ O+ f: h; `4 K* ~
    │  │      2-1 go通过jaeger-client发送单个span.mp4
    8 s( d5 K3 Q! p$ i$ E, F3 x- G│  │      2-2 go发送多级嵌套span.mp4
    . d3 [6 K( |9 ~3 y( N│  │      2-3 go下通过grpc发送span消息.mp4
    2 x3 w1 f  {* P! c2 }9 ~6 O# H│  │      2-4 gin中添加拦截器实现jaeger注入.mp4
    3 Y- |  x* `3 J│  │      2-5 修改grpc_opentracing源码.mp4
    : W0 R5 e& |0 w& p2 m( s│  │      2-6 配置订单服务的web层逻辑.mp4" W1 ^6 |7 `# k) @/ j6 G; t
    │  │      2-7 grpc集成opentracing的原理.mp4, ^& m, h* K8 [, A' V3 _( V
    │  │      2-8 grpc的server端如何获取客户端的span.mp4# L9 u6 w; M5 u7 i# M2 \  L
    │  │      3-1 什么是限流、熔断和降级.mp4
    % Z4 v0 R" @( B6 H8 ?( E2 U│  │      3-2 sentinel和hystrix对比.mp4
      R7 D( O3 m/ |8 l# W│  │      3-3 sentinel的qps限流.mp4
    # b; i/ F6 q, Z2 u. E, n% @! u7 ^: B│  │      3-4 sentinel的预热和冷启动.mp4
    ) Q: K& l& W' [│  │      3-5 sentinel的Throttling配置策略.mp4' h6 D- z7 s4 q$ [5 s3 b" ?
    │  │      3-6 sentinel的熔断接口.mp4
    , D" R4 j' V7 d+ D4 R4 _  q│  │      3-7 sentinel的熔断接口-基于错误数.mp4
    & E, T/ Y# C4 H" K' v9 F│  │      3-8 sentinel的熔断接口-基于错误率和慢请求.mp46 ^$ g% z) [; V  a% i
    │  │      3-9 gin集成sentinel实现限流.mp4
    0 x/ s& q; g8 s- K│  │      ( i/ \' B! \9 q$ l/ h
    │  └─04.api网关、部署
    5 v$ f# ~8 k% f! t# P4 T2 M│          1-1 什么是api网关.mp4
    ; o9 D+ o0 x+ ]# C' {  h│          1-2 api网关具备的功能有哪些?.mp48 N: l$ L% k& [* `* w
    │          1-3 api网关技术选型.mp4. [: g3 {2 H4 [; H0 E
    │          1-4 kong的安装.mp4
    ( s& y/ y4 B# I: b│          2-1 kong的8001、800和1337端口号的关系.mp4
    0 h  X5 K+ U+ i; }: i, I│          2-2 基本的路由转发配置.mp4" f2 i/ b. F% x& N+ w( J
    │          2-3 kong的service、routes、upstream的请求过程.mp4
    ! j) G% L1 y: s; `7 y# p│          2-4 kong集成consul实现服务发现和负载均衡.mp44 [7 e( Z; E8 Z- U, H
    │          2-5 kong配置jwt实现登录校验.mp4& x6 F4 c  d! g1 D+ l) H: ~' F0 E4 n
    │          2-6 kong配置反爬和ip黑名单.mp4
    ! _/ q6 d% F6 D: @# [2 O4 I% g│          3-1 敏捷开发中的持续集成痛点.mp4
    ! k9 h' W( n( J5 K│          3-2 安装jenkins和关闭防火墙.mp4% N2 g  C, v" i: l3 n, P$ R
    │          3-3 jenkins构建服务器流程.mp4
    & ^# g5 p$ I* j$ p, Q% `. X& t* \│          3-4 安装jenkins常用插件.mp4
      G9 \' Y( j  t2 a; n│          3-5 通过free style构建项目.mp4
    , w8 |' p1 {9 B  g1 b4 M9 g│          3-6 将构建服务器上的代码上传到运行服务器.mp4: \" i: n0 y* z7 ]
    │          3-7 通过pipeline实现持续集成.mp4
    * F6 \% J" `3 Z│          3-8 通过jenkinsfile管理构建pipeline脚本.mp4
    / q, h3 _  A" i6 g  Q  f6 E1 I│          3-9 通过远程和其他工程触发构建.mp4- b. p5 ], T6 b
    │          3-10 定时构建和轮询SCM构建.mp46 H/ }! H, Z. l9 o$ R
    │          3-11 参数化pipeline构建项目.mp4
    3 S  h* F- g: n( B" [- ^9 r% `│          4-1 有哪些服务器我们需要部署?.mp44 B$ O- L2 Q) v- N9 ?2 ~6 h
    │          4-2 前端代码上传到git并启动.mp42 O5 F/ j# `/ G4 p! V
    │          4-3 nginx中部署vuejs.mp4' A# v7 D3 g5 R) y' n
    │          4-4 jenkens部署vuejs项目.mp4- U$ j0 t7 c" p8 `
    │          4-5 通过go build构建go微服务.mp49 e$ q) r  I) u- Q6 V
    │          4-6 发布go项目到远程服务器上.mp4+ ]+ Q+ ]! x* i, h
    │          4-7 通过shell脚本启动gin服务.mp4: c; D2 t9 ?  F# h0 q
    │          ( H8 x* t$ B  b6 G! \
    ├─阶段六:从0到1实现完整的微服务框架8 l' M; h! k. w! f
    │  ├─01.用户服务的grpc服务# J: r+ S* I6 [" ]
    │  │      1-1 定义用户表结构.mp4) T8 L4 C" D/ s; S
    │  │      1-2 同步表结构.mp4
    - f+ o, q. @3 [% w- ]# z- U) e│  │      1-3 md5加密.mp4
    + v6 d* _+ I( |- W! p│  │      1-4 md5盐值加密解决用户密码安全问题.mp4, u7 d0 d2 J7 n9 y
    │  │      1-5 定义proto接口.mp4
    ' k; q# B3 W) o$ A# j6 N" {& r- S│  │      1-6 用户列表接口.mp42 [7 Z8 x4 e. z0 _5 s
    │  │      1-7 通过id和mobile查询用户.mp4
    " U1 p9 C6 \1 x; p│  │      1-8 新建用户.mp4( h: W$ z" N/ x3 j
    │  │      1-9 修改用户和校验密码接口.mp4
    , |% j1 i9 A0 _- g" L8 _│  │      1-10 通过flag启动grpc服务.mp4- `* ~! G& c$ T: \) I4 i9 Z* i
    │  │      1-11 批量生产用户.mp4
    3 Z# Z9 m- L* \6 q+ N, {, n4 P│  │      1-12 测试用户微服务接口.mp4
    5 w' s+ b3 n, n+ p: {│  │      1-13 课后作业.mp41 N7 p, Y# O* X8 t- |: d; a
    │  │        |& }1 {1 @' O" V  j
    │  ├─02.用户服务的web服务
    / v% q/ C# W: n9 }- f3 s' H│  │      1-1 新建项目和目录结构构建.mp45 Z' }: @6 M3 G* a3 A
    │  │      1-2 go高性能日志库 - zap使用.mp4
    * d9 r& i/ {  b6 Z  P" R1 G3 g│  │      1-3 zap的文件输出.mp4! o( Z  k, J$ n9 f/ x
    │  │      1-4 集成zap和理由初始到gin的启动过程 - 1.mp4$ |7 u: i: l( r3 V
    │  │      1-5 集成zap和理由初始到gin的启动过程 - 2.mp4
      }* `# G- _  a5 k1 @* n│  │      1-6 gin调用grpc服务-1.mp4( b: c6 ~3 M" D  R; O
    │  │      1-7 gin调用grpc服务-2.mp4! l5 p+ x) d( d2 U) |8 Q. ~1 |
    │  │      1-8 配置文件 - viper.mp43 G5 J) V  N$ z( ?+ {) r
    │  │      1-9 viper的配置环境开发环境和生产环境隔离.mp41 z1 p; f! s6 j2 j# ]
    │  │      1-10 viper集成到gin的web服务中.mp4
    7 u9 ]0 z0 l# t6 [  u7 w│  │      2-1 表单验证的初始化.mp4
    3 L3 s* i. z8 A& W) y0 f+ T% C│  │      2-2 自定义mobile验证器.mp4
    # Z! Y' i, Z, ~│  │      2-3 登录逻辑完善.mp4
    , y7 J  c9 s1 M8 v$ }5 Z* X1 A│  │      2-4 session机制在微服务下的问题.mp4
    5 r- k+ V- x/ ]/ e) v, l, e2 R( m% |│  │      2-5 json web token的认证机制.mp4
    * j$ L* S: e" }! g8 O! b│  │      2-6 集成jwt到gin中.mp4
    8 \) G+ A0 o' z4 b! h│  │      2-7 给url添加登录权限验证.mp4
    3 p, @. t7 q& k1 H│  │      2-8 如何解决前后端的跨域问题.mp4
    $ }$ n- f( m& G│  │      2-9 获取图片验证码.mp4* ?6 }  M7 T2 p& O3 C! s# w
    │  │      2-10 阿里云发送短信.mp4; F. h0 z  j/ ~+ F
    │  │      2-11 redis保存验证码.mp4- A9 @- O. j* s2 A% k; i' v# ^# T
    │  │      2-12 用户注册接口.mp4
    4 V* B- R( ?0 m' F$ \' z# g│  │      
    6 v' [3 A- I+ V1 P) l4 a7 T│  └─03.服务注册
    : w8 Q( ~( [4 V│      └─发现、配置中心、负载均衡1 m; S* ^. \9 e3 S
    │          ├─第1章 注册中心-consul, o! Q# a5 o8 J! U+ O' c5 Z1 _% ?
    │          │      1-1 什么是服务注册和发现以及技术选型.mp48 p9 N( D+ `$ f9 W& c
    │          │      1-2 consul的安装和配置.mp4
    + z, ^- X) h7 Q0 Q- a$ v│          │      1-3 服务注册和注销.mp4  R. t  p0 R7 u0 f1 @- \
    │          │      1-4 go集成consul.mp4, Y0 B0 I5 a5 d. v# ?( R, r
    │          │      1-5 为grpc服务添加viper和zap.mp4
    3 e+ d' R7 t/ j│          │      1-6 grpc服务如何进行健康检查?.mp4( v( g6 Z% x5 s
    │          │      1-7 将grpc服务注册到consul中.mp4
    2 @" m& Z  X' X( l( q1 z' `3 k│          │      1-8 gin集成consul.mp4
    , p5 L8 _) [" i* k& `7 l6 L$ F5 w│          │      1-9 将用户的grpc连接配置到全局共用.mp4" O0 m+ A& r$ d1 M
    │          │      
    # B! Z1 x& B! W9 q│          ├─第2章 负载均衡" M; s+ M6 W; d7 d* @
    │          │      2-1 动态获取可用端口.mp48 s' m6 M; o9 N, E0 b) \: X  ]
    │          │      2-2 什么是负载均衡,负载均衡的策略有哪些?.mp41 p& W+ t' H7 X. a+ q. `
    │          │      2-3 常用负载均衡算法.mp4
    % [9 V8 D/ t( }) t+ i│          │      2-4 gin从consul中同步服务信息并进行负载均衡-1.mp4
    4 S- ~7 |& J7 u7 h1 u4 Y, {5 k│          │      2-5 grpc从consul中同步服务信息并进行负载均衡-2.mp4
    . a$ K( `0 D* Y0 b! }  K$ H2 Q│          │      2-6 gin集成grpc的负载均衡.mp41 M8 r9 s# a9 C: W; X$ w$ O
    │          │      
    5 [3 }2 T. ?, ]# U- }9 i│          └─第3章 分布式配置中心6 @2 M! L4 P6 Y, {4 ?; Y
    │                 3-1 为什么需要配置中心.mp41 X2 H8 @4 A$ x1 T# V2 D
    │                 3-2 配置中心选型-apollo vs nacos.mp42 u: C+ ]* e7 i: b/ S9 X- G
    │                 3-3 nacos的安装.mp4
    2 Z0 y+ O' Q8 `9 X# F( ]│                 3-4 nacos的组、配置集、命名空间.mp4/ p" k. {' O) K9 Z/ {, V( T
    │                 3-5 通过api获取nacos的配置以及nacos的配置更新.mp4
    $ p' C+ I  j6 O5 `│                 3-6 gin集成nacos.mp4
    % U7 c3 C6 ^! c# }│                 3-7  service集成nacos.mp4$ C- c0 J7 u0 d6 h
    │                  0 J( w5 O) o9 H, p  n1 J. p! |7 U
    ├─阶段四:“租辆酷车”架构演进之高性能位置更新与服务部署8 q# H+ E, Z0 ]1 Z5 w
    │   ├─01.租辆酷车-实时位置服务5 y1 k- P, z# O/ [0 S
    │   │      1-1 汽车服务引导.mp4/ a& E  p# }, d' Z
    │   │      1-2 物联网简介.mp4
    7 R! d1 N6 s& a│   │      2-1 RabbitMQ简介.mp4' x- g& x; o6 i3 S- y, U- O5 O! W5 {
    │   │      2-2 使用go语言进行收发.mp4& W& i# D6 S, J# |
    │   │      2-3 使用go语言实现pub-sub.mp4' d% K% U+ C  d, j! `
    │   │      3-1 汽车服务的设计.mp4, X5 X: s7 V: K! X! o: v" M: ]+ I
    │   │      3-2 汽车服务的定义.mp44 j+ }; Z, t4 S1 {9 ]5 V
    │   │      3-3 汽车服务CRUD的实现.mp4
    # ]: E# C, }# W% C. j& }/ h│   │      3-4 汽车状态更新的发布.mp42 o& A. }5 |$ N( b
    │   │      3-5 汽车状态更新的发布.mp4  i; T/ ?0 @+ P- y2 `/ f9 |3 @
    │   │      4-1 汽车状态模拟1.mp41 h' B$ J8 j3 U8 d4 r
    │   │      4-2 汽车状态模拟.mp4
    4 X4 a9 V& J+ R) @: T│   │      4-3 汽车状态模拟.mp49 d: @- ]$ D2 l6 O3 t( J
    │   │      : z- e: O8 f, I$ f  D% l  @, Q8 T
    │   ├─02.租辆酷车-实时位置更新的处理和展示
    / K8 B, F5 r/ J: R8 y│   │      1-1 WebSocket简介.mp41 I* Q# A$ c! N5 c! Z, \
    │   │      1-2 WebSocket链接的断开.mp4
    : g2 h( d# ^$ k│   │      2-1  给汽车服务添加websocket.mp43 O( n6 L$ b; e1 @: }& n0 M/ `
    │   │      2-2 客户端的开锁处理.mp49 Z( t! g! U7 k: Z- e) l
    │   │      3-1  位置模拟服务的使用.mp4% a' k. b( ~: `  @
    │   │      3-2 位置实时更新的后端实现.mp4! j" Y! @! u2 w9 u" t6 K% x
    │   │      3-3 行程位置更新.mp4
    # m! ]$ p& R# o  E( g│   │      3-4 用户身份的Impersonation.mp4: ?' y1 k. I/ y1 C4 f' `# c
    │   │      3-5 控制GRPC Gateway的头部映射.mp4
    % O5 I( m* C% w1 z/ y" @7 B7 b│   │      4-1 首页头像的实时更新.mp4
    - b' I/ k3 `. c" `2 h3 y' C- r1 K│   │      4-2 首页头像实时更新的展示.mp4+ c, P* Q$ @4 K5 j9 i. D* Z
    │   │      4-3 汽车服务及全部开发总结.mp4
    6 K/ E% y' L$ `│   │      ! @5 j. u9 [1 y% S$ Q( Q
    │   └─03.租辆酷车服务的k8s集群部署
    6 V8 J; c- N3 e* T9 [" H& L( {│           1-1 Kubernetes的历史.mp4( ~3 A& a2 q2 A) v6 z  \
    │           1-2 集群的配置及版本.mp41 S7 [, u" D1 n5 }( I5 K
    │           1-3 kubectl的安装.mp4
    7 j# c" P7 n9 B% O3 o% b8 e4 K│           1-4 用kind来配置本地集群.mp4
    . j/ \0 `9 X$ z2 y& W│           1-5 用kubectl来连接集群.mp4
    ! `- U- [6 b6 [% b│           1-6 容器.mp4
    8 r& z7 x' Z$ V; x│           1-7 节点及物理层.mp47 g9 O0 h) s2 g3 j) l
    │           1-8 服务与网络.mp4/ _& u8 Y/ E( `1 ]$ d5 f
    │           2-1 构建Docker镜像.mp4* H! O- Q- `8 d# y2 ~0 E  H& p
    │           2-2 Dockerfile指令详解.mp4
    0 \- T6 H  o: B3 D│           2-3 为Docker镜像瘦身.mp4: s. q. t3 }" p2 ?( [6 s
    │           2-4 flag与环境变量的使用.mp4
    ' Y+ d+ _' V; Q& }, g1 |# S$ [! w│           2-5 提取所有的参数.mp4
    & k2 W) `+ _2 N" V│           2-6 为所有服务制作镜像.mp4! W: n7 r( c' @4 E; B
    │           2-7 上传镜像.mp4
    * ]- p4 f) h0 S2 m$ n; V4 K│           ) m/ t2 A3 ]/ K) ]7 Q6 W8 s" _+ K" H
    └─资料.rar. Q" Q! o/ T2 X) d( {, ?8 H

    ) H4 i2 \$ A0 Y6 {8 Y: m# q! M& g8 X0 u; X) H3 j7 [- u
    下载地址:gxcg35
    游客,如果您要查看本帖隐藏内容请回复
  • TA的每日心情
    奋斗
    昨天 08:19
  • 签到天数: 497 天

    [LV.9]铁杆吧粉

    发表于 2021-8-25 11:11:34 | 显示全部楼层
    RE: 2020新版Go开发工程师零从入门到就业班
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 02:10
  • 签到天数: 921 天

    [LV.10]以吧为家

    发表于 2021-8-25 11:16:04 | 显示全部楼层
    感谢分享
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    9 小时前
  • 签到天数: 733 天

    [LV.9]铁杆吧粉

    发表于 2021-8-25 11:17:34 | 显示全部楼层
    啥打法是否是打发的撒发撒地方大师傅士大夫撒多
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-9-11 07:53
  • 签到天数: 135 天

    [LV.7]超级吧粉

    发表于 2021-8-25 11:20:17 | 显示全部楼层
    感谢分享
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2 小时前
  • 签到天数: 461 天

    [LV.9]铁杆吧粉

    发表于 2021-8-25 11:22:29 | 显示全部楼层
    感谢分享!!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-9-6 12:31
  • 签到天数: 9 天

    [LV.3]偶尔看看

    发表于 2021-8-25 11:28:09 | 显示全部楼层
    感谢分享牛逼
    回复

    使用道具 举报

  • TA的每日心情

    昨天 22:47
  • 签到天数: 152 天

    [LV.7]超级吧粉

    发表于 2021-8-25 11:30:58 | 显示全部楼层
    学习
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-8-31 09:11
  • 签到天数: 263 天

    [LV.8]狂热吧粉

    发表于 2021-8-25 11:35:23 | 显示全部楼层
    超牛
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    前天 17:44
  • 签到天数: 281 天

    [LV.8]狂热吧粉

    发表于 2021-8-27 09:38:05 | 显示全部楼层
    1111212
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则