真全栈程序员

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 212|回复: 5

Java全栈工程师从Java后端到全栈2020

[复制链接]
  • TA的每日心情
    擦汗
    2021-1-15 17:26
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    21

    主题

    25

    帖子

    91

    积分

    练气程序员

    Rank: 2

    积分
    91
    发表于 2020-12-22 10:12:00 | 显示全部楼层 |阅读模式
    目录+ v  U# p9 E* R9 Z: c0 W# K
    │  课表.pdf# }, S+ I! ?8 a' B2 A! o, k* F4 ^. H7 `1 h# ?0 Y3 ~
    │  7 S& c9 w+ s8 z) L" J2 N9 T% ]5 H8 z+ b
    ├─阶段1:小程序高级电商前端- s4 x1 o! a+ r  r6 }: j
    * Y4 K! w4 }. {! _/ R# K  U& y! J│  ├─01.走进Web全栈工程师( T1 v, y! O# J5 _3 k6 e
    │  │      1-1 Java全栈序章.mp4
    8 h3 M: E0 H6 ?│  │      1-2 长期课程规划与前置要求.mp40 Q3 G) a; Q1 P, ~- F$ B/ ?: ]6 M! |$ F; l2 u( a4 j
    │  │      1-3 appkey申请、课程免费补充资料.mp4" ^4 S* p! v$ ?( F
    │  │      1-4 临时补充:关于appkey的申请(重要).mp4+ T6 d8 h3 A5 N- n  p$ |" ?, m7 K) `2 `& i) e
    │  │      2-1 第一阶段第一次作业(风袖细节分析).mp4. J% h8 ?) ]/ P
    │  │      2-2 小程序注册与新建项目.mp45 J2 C5 h& n# G+ \: J) M
    │  │      2-3 开发工具推荐(Vscode或者WebStorm).mp40 z3 u, C7 \; H6 ^; W
      j, I4 z) c8 t│  │      2-4 《风袖》首页布局详尽分析.mp4+ C$ \# Y8 S' q8 }& ?1 E. s: m) Y+ i! Y" U$ Y
    │  │      2-5 第一阶段第二次作业(LinUI 瀑布流练习).mp4# }' h/ k  W3 V+ o+ A9 P( `4 p
    │  │      2-6 真实的项目必须是动态的、CMS可控的.mp4" y8 p7 {: H% W6 e5 y( b$ {* C& T: {; t/ }
    │  │      2-7 WebStorm开发小程序必备设置.mp4  [4 O2 Y" K* k* `, z+ D7 o
    │  │      2-8 调用服务端API获取数据.mp4
    , \7 e0 C2 m% }. o" e0 y│  │      2-9 小程序开发前必备配置.mp4* ^4 R5 _6 K0 y, k& y/ J* s1 M9 g3 A7 ~: e1 k( ?: |0 t3 k
    │  │      3-1 配置文件与第一次调用服务端API.mp4
    $ F6 w' [: M4 D( l! G│  │      3-2 业务对象的重要性.mp4
    / i4 o) Y0 ^6 ]$ p* C│  │      3-3 封装HTTP请求.mp41 u- F7 y/ w/ P+ O# `
    0 ~# k2 _! o) O' @5 h( [9 b1 r0 z│  │      3-4 小程序中使用async和await的难点分析.mp4% f. C0 e+ d, M$ L& Y) X* V
    - F7 m& I6 F! P. w3 s  z: L8 V: y, v│  │      3-5 使用LinUI Promisic让小程序内置API支持Promise.mp4, I7 E- w: o0 G" |
    0 \! P/ F8 A) ~% E' l7 G5 T│  │      3-6 将回调函数全部替换为async和await.mp4
    ) E# d& v5 u8 Y. i│  │      3-7 获取banner数据.mp4' l4 k/ v2 F- u1 Q% P; x( Q8 ?7 a7 ~9 g3 g3 g$ |
    │  │      3-8 Banner轮播图实现与插槽的基本概念.mp4# C3 K& f  N8 b2 e* p  U+ ~
    │  │      3-9 npm的semver语法规则.mp4/ ^8 z1 ?# ^; _
    ! g, P" e$ u/ e1 k│  │      3-10 Lin UI安装、主题色配置与按需加载.mp4- C6 h7 T8 }3 G8 a  P8 [
    ) H+ X# c6 v$ r& r6 I* u│  │      4-1 LinUI Grid组件构建分类六宫格 (上).mp4! A5 H2 y% a" r: V( Y
    ; Z% u! h6 Z$ S7 A6 s$ N# Z│  │      4-2 LinUI Grid构建分类六宫格(中).mp45 Q( R1 q3 |6 I0 e3 B# ~( X: s
    3 g' f  S- B! \6 D│  │      4-3 LinUI Grid构建分类六宫格 (下).mp4+ I% D; Z' |* C0 @& ?1 F: D/ e) x5 ?  r5 _. R
    │  │      4-4 组件设计与LinUI使用的几个非常重要的原则.mp4. J2 c5 V6 w/ T; _8 `/ F# S
    │  │      4-5 如果没有明确理由,不要固定高和宽.mp47 t* r0 j2 q# y* @4 ?: z. U9 U. B( N2 p8 f5 Z1 c# Q
    │  │      
    9 M! z( n  a/ h0 w9 U│  ├─02.Lin UI组件库的引入与编程原则
    ) b: l4 o' b8 h- n│  │      1-1 优惠券的一些基本概念.mp4) Z" S  Q& K" k- J/ q+ f# l
    │  │      1-2 优惠券入口.mp48 W9 t' t! {) y1 X  ]# B6 U1 b% k
    │  │      1-3 背景颜色到底怎么设置?.mp4# }; i/ \) T1 x$ y; U* b' U
    │  │      1-4 页面到底是否应该合并HTTP请求?.mp4
    . y( [8 i7 T# o│  │      1-5 函数式编程概述.mp4' @+ m# v8 ^3 \8 W5 v
    / ~6 {5 G/ ^( G( R│  │      1-6 第一阶段 第三次作业.mp40 U" w, ]/ k. r, l  @/ u) G: l/ o" o* j
    │  │      1-7 类可以保存数据,但对象可以保存状态.mp4! Q' q. _( o' ?& t  t+ G- B
    5 z- b0 E; |8 T# \* J9 [│  │      1-8 重构Theme获取.mp48 x8 S( C& |: ^% R, c: }. z/ _& w  f5 o: @9 @
    │  │      1-9 第一阶段第四次作业.mp48 Y$ Y% N& v& F
    │  │      2-1 scroll-view组件的灵活应用.mp49 L9 l8 b# t2 i1 E5 ]- |- e  q+ F- t# f. t
    │  │      2-2 是不是方法都需要加async和await?.mp4
    4 s0 t3 f, S1 Q8 v, Y│  │      2-3 第一阶段第五次作业.mp4* |  c8 M% T' M' S& a; @
    │  │      2-4 spu-scroll自定义组件 1.mp4) {+ ^! I, \, W
    │  │      2-5 Lin UI Price价格组件应用.mp4
    % ^2 F) r3 O2 A/ v│  │      + W2 J6 W: j* G# _. ?! g& w7 P
    │  ├─03.热身结束,开启试炼# X; w, S2 q& K& w- L6 A8 Z4 G0 a4 q+ Y. |9 `! {
    │  │      1-1 spu-scroll自定义组件2.mp48 d4 `& N$ J, `
    │  │      1-2 通过scroll-view抽象出的几个css编写原则.mp4
    # H5 K$ l: T! }' H2 R│  │      1-3 WXS与小程序的内核简介.mp43 S0 b* ~& z' g+ x# ]9 G
    , Y# Q! r+ [. J│  │      1-4 WXS与Lin UI Filter的应用.mp4& m# u, }5 u) e" u- C! E3 T
    / _. g8 w3 n5 B* M/ U│  │      1-5 webstorm的骚操作自定义代码片段.mp4, B+ W8 r! h- K8 E( e7 Q. N; r# k0 o
    │  │      1-6 自定义组件的边距问题与外部样式类应用.mp4
    4 H# x  J$ m+ o│  │      1-7 学会抽象来简化数据库表设计.mp43 U1 ]9 H2 A4 Q- \/ y
    7 f4 z6 w' X/ R. Q7 ?" ^* Z: C0 B│  │      1-8 新监听器Observers与hot-list组件.mp4
    . p% T6 n6 d: \  v│  │      1-9 flex布局的灵活应用.mp4) e; k# G9 t/ \2 a
    │  │      1-10 Hover点击态的应用与@import 公共样式表.mp4; ?8 }" {0 G: k1 o& M/ j2 B, L- Q- Q, b6 l2 I: p
    │  │      2-1 组件自定义性的终极方案:抽象节点.mp4
    % u& z2 ^2 w6 j; A1 B* _: V$ E& y│  │      2-2 防抖、截流与分页细节全分析.mp4
    # a$ U, V1 ^  R/ v4 ~  ?│  │      2-3 Paging对象 一.mp4
    7 A0 s; [- ~$ e$ q- ?2 W: U* J│  │      2-4 编程原则:多用return提前结束函数,少用else.mp44 O/ x0 R# q- M: X
    8 B4 {$ S5 W, V; K│  │      2-5 Paging对象 二.mp4! W# k9 f( G% G& V( I
    * A  o5 l# D) r$ u│  │      2-6 Paging对象 三.mp41 n) X' v4 }0 Q1 O+ i- V$ ^
    5 S3 \* \% I$ ~6 U3 g7 w4 K* i│  │      2-7 第一阶段第六次作业 Sku预研作业.mp48 t- H5 }5 G% j7 G: f9 L/ u0 l- A
    │  │      2-8 Pgaing对象 四.mp4
    ! v' L! E+ T$ k1 @6 Z$ s  ~1 K│  │      7 @3 q6 u6 ^# t. n+ ^  g
    9 Z7 X1 M+ I8 @│  ├─04.攻克SKU和商品购物车: _5 M% p( ]( v8 I' {* |: r: A
    9 c  V3 k3 Z( _! w5 W. R) N│  │      1-1 l-water-flow抽象组件式深入剖析.mp4+ F, g- c0 F. ?7 e7 q+ A$ H) |- G& q' H' `, P+ d1 l3 _; W& l
    │  │      1-2 Lin UI Tag组件快速构建标签.mp4" z2 B9 E- D3 g3 e
    ' t1 F# m* k; x) y│  │      1-3 折扣价和原价的常见错误逻辑.mp48 |! [) s4 B) i: O# i, X. d: ~2 e* w5 c0 e% S
    │  │      1-4 使用WXS解决复杂的逻辑问题.mp4
    0 s6 G6 i0 s" h: [7 C│  │      1-5 瀑布流的初步成型.mp40 L1 B4 k" E# S
    7 }0 J( U( N' I# W: ~, \│  │      1-6 动态计算图片高和宽.mp4  K" j3 ?$ X( c" p# |% R$ ]4 }( ^5 V! d# u, }/ E& I* F
    │  │      1-7 Loading的思维逻辑:正在加载其实是一种常驻状态.mp4
    3 [. l" ^5 ]# D│  │      1-8 实现页底提示.mp40 ~9 [7 d5 y1 `* {0 a% c* }. z$ M( ~4 q% b
    │  │      2-1 页面跳转与新机制EventChannel.mp4
    , P3 G; Z# ~" u7 c│  │      2-2 Spu、Sku、规格名和规格值.mp4
    " E: U* p& g0 c. Q& f│  │      2-3 从一个提问谈思考的精神.mp45 q3 b& |' j3 ]% g8 v2 U" w
    │  │      2-4 调整思维,才能解决复杂的逻辑问题.mp49 S) o. r. N( X; K" {/ e+ K
    │  │      2-5 借助符号化的命名方式思考问题.mp4
    9 p0 X2 S. B8 b5 u) O- x7 f│  │      2-6 控制中心Realm与栅栏Fence.mp4/ x+ t" V  i5 T' F) C$ o3 B
    │  │      2-7 fence与fence-group对象.mp43 T" q$ T6 U1 n; n
    │  │      3-1 SKU方案整理 一:规格值的提取.mp4
    8 |1 f1 _# t. M0 [│  │      3-2 SKU方案整理 二:核心问题是规格值状态的确定.mp41 `: y3 h; f" u7 c
    7 S! t1 {3 Z: @/ x: n" q8 ^* c│  │      3-3 用矩阵的思想提取规格值.mp4. k  H6 m% I$ n' F( d* l9 v# D. L/ O$ U. a5 I! ?0 k: ^8 Z
    │  │      3-4 数学小课堂:矩阵的转置与旋转.mp4' y! n# o6 J; _, F( ~
    │  │      3-5 矩阵的遍历.mp4" B) o5 N2 U2 N- }1 O% C2 d
    │  │      3-6 Fence的实例化.mp4
    % w! {6 P6 \9 R+ J$ c│  │      3-7 测试Fences.mp4
      `; q7 N4 Y/ y0 S# E│  │      3-8 自己实现矩阵的转置.mp48 G( }9 y, K) g. {3 @' Y
    │  │      3-9 谈数学、面向对象与编程思维.mp4
    - E0 u+ h/ t% o+ J2 a1 k, d│  │      3-10 构建Cell对象.mp4+ O1 G% }6 v9 v5 u3 t
    │  │        k% ?" p1 P+ P! @. @, {
    - b* ~* I& G% e# o! r│  ├─05.SKU核心:规格状态、编码、无货逻辑$ H% s6 Z7 j  P1 N; o
    │  │      1-1 SKU串码编号.mp42 U! Y8 ~  s2 t
    * s# Z3 X7 H3 m! T│  │      1-2 Fence与规格名的对应关系.mp4
    * S9 b- I( W3 [# x2 [6 W│  │      1-3 Cell去重.mp4+ o( u8 n+ e, _  @* I  G& `% O7 ?  b9 I8 h0 N2 g/ {; N
    │  │      1-4 Cell自定义组件.mp4" \% b$ a6 |* \9 ^! T
    │  │      1-5 初步完成规格矩阵渲染.mp4; j# P6 S+ F. y3 f  H
    , j, ~3 I  c& c│  │      1-6 SKU算法的难点是确定规格的禁用状态.mp4( r- F* B$ C3 z. g
    7 ^/ T- k0 O  e; E: f$ s│  │      1-7 SKU核心算法剖析 一.mp4
    8 X7 ]: l/ _# R" }* i+ h│  │      1-8 SKU核心算法其实就是一句话,我之前已经讲过了.mp47 W7 M) l  K* N1 `4 j0 \4 I7 I2 M$ \+ s) ?" M. m; j/ f/ Q
    │  │      1-9 矩阵列不同规格的问题解答.mp4
    - `+ X. Z) j* f4 o1 g│  │      2-1 数学小课堂:排列组合在SKU中的应用.mp4- H+ O5 K) Q) m, P7 _6 s( P! V7 c- |0 t- j0 C5 D: O3 ?8 l4 Q
    │  │      2-2 SkuCode类拆分Sku可能的路径.mp4' |: P% L; i5 E6 u% G' H* r9 Z! i1 n; R: d3 W9 d
    │  │      2-3 Combination组合函数.mp4
    8 ]; h/ z9 c$ Y  W2 i6 D│  │      2-4 完成PathDict字典.mp4& q: C; F1 M0 p9 `' |0 U
    * ], R. U: N: _│  │      2-5 Cell的三种状态样式.mp4
    + J$ g6 v5 o  H- H  O% @. @3 \( V3 Y│  │      2-6 选中、禁用与可选状态的切换.mp4, @: F9 N# ~9 a& z5 @3 Q5 |9 n
    % x: W. z% d  o  l- `6 H│  │      2-7 SKU选择的数据流向.mp42 q& {4 o! N- @" z, k' \4 s5 }" m, k" u) G# {2 [! M
    │  │      2-8 自定义组件事件跨越组件边界(Bubbles与Composed).mp46 i$ d5 P/ S* K
    9 e6 \. X  q4 E9 i- e' |# a2 Z│  │      2-9 重新渲染矩阵与错误排查推演.mp47 o# P8 \% ?- }! J6 x5 {; E& D
    $ E1 D- R3 _$ R│  │      2-10 获取Cell的行列号.mp4/ }( ]/ i0 r5 x3 y# i
    │  │      2-11 实现Cell的正选和反选.mp4
    ' z" j  E% z# f0 E5 W│  │      3-1 潜在路径PotentialPath分析.mp4# X! @7 K5 G2 F+ ~
    │  │      3-2 正选Cell的规律推演.mp40 p; x1 D9 y" H$ ]( V) Q
    │  │      3-3 反选Cell的规律推演.mp44 l- Z; j- }8 d7 U4 _
    │  │      3-4 SkuPending类的职责.mp47 k, y5 ^; F7 H2 W1 D
    8 o  H" b* x; S0 ~$ }" g│  │      3-5 遍历所有Cell的潜在路径.mp4  D1 a9 H4 G" _" K- J+ E$ ~6 Z8 K
    │  │      3-6 遍历所有Cell的潜在路径 二.mp4( j- ]$ X2 B  a4 w6 W  H
    │  │      3-7 遍历所有Cell的潜在路径 三.mp4
    # U) V4 H0 W$ f2 y: V│  │      3-8 完成SKU的逻辑选择.mp44 A% }: e3 C/ [2 U9 {' a' O: F+ N; Z# m, ]6 _' c5 r
    │  │      * u- A8 X0 z! J* ?' t* F+ i( b- d, q. U4 D+ q5 }) L) R! S
    │  ├─06.SKU收尾,优惠券、购物车讲解
    ( c6 B) m; Z; C% n/ Y6 \2 c, U% [│  │      1-1 Realm骨架的完善.mp4" X* t  ?" I8 N3 c6 A
    3 u8 s5 W% H% Z; O, J! _│  │      1-2 默认SKU的概念与意义.mp4( o2 ~1 A4 M* }$ B& _2 E
    2 M1 {" ~5 {/ h/ k- E│  │      1-3 将默认SKU拆解后加入到SkuPending中.mp44 E) h" o% @6 h  n- H9 S, V
    , v) o6 T; B0 |( `* Q% d" Z│  │      1-4 从两个指标评估循环对性能造成的影响?.mp44 b6 L1 [- z1 H& _( u/ P& R* d0 [) K, l( d$ ?( t
    │  │      1-5 完成默认规格渲染.mp4
    9 H6 w0 e4 G9 |; P) K/ ~/ F│  │      1-6 Sku描述数据与规格选择联动 一.mp44 b" G3 x8 P7 k( d# A
    │  │      1-7 无规格商品的概念与意义.mp4
    9 y( ^9 ?7 e! p# ^2 T│  │      1-8 无规格商品的具体处理流程.mp4$ B# k% u& z8 ^( V8 U9 f' N/ y
    │  │      1-9 规格选择提示的复杂逻辑处理(一).mp4
    6 @) D5 I8 V9 r# R0 r# W% k│  │      1-10 规格选择提示的复杂逻辑处理 (二).mp4' q% _+ D' P# s; o# e
    │  │      1-11 性能:setData性能探讨.mp49 Z8 N) y! @2 Y; y5 }# t
    │  │      1-12 规格选择与SKU描述联动 一.mp4
    0 ?; {, `% i' |% Z2 \│  │      1-13 获取code码和确定的SKU.mp4- e4 [8 B# @# m$ k
    & |, p8 d7 u- n│  │      1-14 确定MissingSpecKeys和CurrentSpecValues.mp4, A. ^% p5 B# C  v$ ~" n+ P9 k5 o2 T/ B. B" ]" f7 c, |
    │  │      1-15 确定MissingSpecKeys和CurrentSpecValues 二.mp4
    + X* j' F0 I6 K9 Y. k│  │      1-16 终于完成了SKU,撒花,庆祝~.mp4' c: z1 G$ |5 \' k& `! S- Q$ X  H6 p
    9 @" x; S  ~( P" ]. U+ q│  │      2-1 l-counter数量选择器(核心组件).mp4  |6 `& S5 J+ O  @% [! i
    │  │      2-2 详解l-counter的数量控制属性.mp4
    2 z  M  x9 Y1 Z2 e" q. l│  │      2-3 无货情况分析(操作Counter、默认SKU和无规格).mp4
    0 L7 r9 q+ ~( j/ A2 h- k0 _│  │      2-4 获取l-counter的选择数量.mp4
    4 y, x8 s* k, i5 I2 l│  │      2-5 三种触发无货状态的机制 (一).mp4
    * Z% S' g2 D+ S  `  G│  │      2-6 Lin UI l-icon组件快速使用字体图标.mp42 i1 o8 i3 N; T/ p2 M" u4 H
    │  │      2-7 使用iconfont在线字体图标.mp4/ h; ^7 O, ], c% R  P+ b3 J8 V$ }. C
    1 Y/ p% p+ d8 }/ p5 F3 d│  │      2-8 使用l-icon引入自定义字体图标.mp4
    ' ]1 S3 d2 ?) Y9 R│  │      2-9 当我们谈编程能力的时候,我们谈的是什么.mp4  J4 C% A& L- t  \, j% k% U0 h' x
    │  │      3-1 l-badge组件快速显示角标数字.mp4' h) t: t3 w% r# y% l% c6 ^; J
    │  │      3-2 使用l-popup从底部弹出Realm.mp40 f% U( P! q. c2 J% d) I$ z
    │  │      3-3 realm滑动控制适应不同高度.mp45 u' ~- a& U4 [3 a: D1 v8 T; ~" N6 q
    $ p2 W( H& f. Y│  │      3-4 优化realm的滚动条.mp4
    - V" S) T+ O2 p4 U% |│  │      3-5 决定用户立即购买还是加入购物车.mp4
    0 F5 N, O) F: j4 y│  │      3-6 规格的主观性与组合性.mp46 |0 {2 K% r3 z! H6 D5 s0 w# N5 \+ p& }, V  u: B
    │  │      3-7 可视规格的概念.mp4$ W# j) {# a- m3 {7 O6 j& _$ W4 z% s2 P2 {- B: o: q/ ~
    │  │      3-8 SketchFence可视规格的实现(一).mp4
    3 @4 G9 b3 U* p  m9 [0 A│  │      3-9 SketchFence可视规格的实现(二).mp4  z& ~% M2 F/ u$ l% Q9 z' O" y1 W- a1 g6 x  \4 T
    │  │      3-10 商品详情页面(一).mp4; ?0 T/ O; v  Y/ g7 k% B. N; @+ z$ m- ~7 P# V  |6 Y: a
    │  │      3-11 商品详情页(二).mp4% ?0 X6 j  H* {  J. O7 Z3 W8 o  }' C. M! @
    │  │      3-12 商品详情(三)微信开放能力的限制.mp4# `% x8 ?+ n9 X( i" _& O
    8 S# `$ i0 A6 c% n& z" i│  │      3-13 商品详情页(四)l-button解决自定义样式.mp4, `! ^( ]# Y# {3 O1 Q1 N
    │  │      3-14 商品详情(五)SpecChange事件.mp4% K7 Q* t, r# w" }" U& J" M7 Q7 m2 e$ d+ X# B9 ^/ V
    │  │      3-15 商品详情(六)完成SpecContainer.mp48 r4 E% r6 y' T3 W' K
    ! J$ S( e  B/ K. ^/ }* |. o│  │      3-16 一种最笨但有效的查错方法.mp42 p' J/ u6 B- q' r* G
    │  │      3-17 用伪类模拟制表符效果.mp4
      z+ Y! q% d* A( t$ U* r& p│  │      3-18 商品详情图展示与隐藏页面滚动条方案.mp4
    ; D4 o# F: W- H& c: M│  │      4-1 分类页面重难点分析.mp4) G: t2 v, t+ x6 R
    / ?6 t1 {& W" T" Y) I│  │      4-2 使用l-button快速实现搜索按钮.mp4( m7 Y# q1 I) b6 ~+ C
    8 S1 s) W, P" @1 K│  │      4-3 欢迎加入Lin UI和Lin CMS开源项目.mp45 n9 Q* c* T, ~8 ?  f0 ^3 d. o% s# ]/ f! N9 G- w/ ^/ O5 h+ M2 m
    │  │      4-4 l-segment组件的高级应用 (一).mp4* H7 G4 R" N5 A
    9 V! P( \& c- F+ |1 I│  │      4-5 l-segment高级应用(二).mp4
    ! k, p: ^4 ]% S  d2 G" ?3 y│  │      4-6 动态计算窗口高度与px与rpx动态转换.mp4; t2 {5 r. }- P* U+ r( Q* |
    * j, ?& u$ M3 u2 S) \& T) Y; b│  │      4-7 不同机型上px向rpx的转换.mp4
    2 @7 ^# H; f9 x' s* ]│  │      4-8 动态计算Detail页面的Scroll-View高度.mp4
    1 _9 Q/ K- j( ]  X5 ?6 X& S) D  _9 L│  │      4-9 分类加载的性能与体验优化探讨.mp40 [4 ?0 M2 z) U# y
    & I' o* g6 `0 `; @& |/ k4 a* p│  │      4-10 加载分类数据与默认二级分类数据的确定.mp49 A$ q9 z( U+ ]  P& M( U. m8 H6 S0 j- p1 T( }9 v* M
    │  │      4-11 二级分类的Grid显示(一).mp4* |+ Y# d: {% X4 ~) O
    & a5 Z0 q. M3 r9 ~6 R* P│  │      4-12 二级分类显示切换.mp4& D8 B/ M' M2 c% D+ g: V; B$ v0 N3 j+ ?. h# l0 S; c0 ]; q
    │  │      4-13 二级分类跳转到Spu集合页面.mp4: K7 G9 Q$ l2 x4 }" [3 Q) d
    * A# F8 d# s, p' g  `6 x│  │      : _. X0 T* {) _9 w# `+ t$ L
    │  ├─07.高级电商订单管理开发 与前端项目收尾
    * W1 ]; Z8 \  `4 q7 j│  │      1-1 搜索页面:l-search-bar搜索输入框的应用.mp4; c- @5 a( ]/ d- {& S4 w. r
    │  │      1-2 历史搜索记录类.mp4
    # q! f0 o& A6 ]  ?│  │      1-3 数据结构队列在HistoryKeyword中的应用.mp4, @, n- V8 F7 g* V$ f6 B0 t. a+ ~  ~8 G( y# \" r; ^
    │  │      1-4 设计模式:代理模式在HistoryKeyword中的应用.mp4
    - `, h9 A" }- ]0 m- F' n│  │      1-5 JS中的单例模式应用.mp46 ?0 X6 |/ e' ^$ {
    ) M, b# _& g1 r( @+ W│  │      1-6 热门关键词与l-tag的选中状态.mp4$ U2 P. X' Q. r! S5 {! H$ H' T2 q
    4 J9 g( L) X5 [+ U│  │      1-7 显示搜索结果.mp42 c- u! k9 }2 u4 }2 R2 j
    │  │      1-8 二种搜索场景(关键词和标签).mp4, N- A# K! j% ?1 h: e' B
    │  │      1-9 空数据和空关键词处理.mp47 h( x# k& ^: L: [! n. X7 x! M2 N9 c# o
    │  │      1-10 wx.lin的组件调用方式解析.mp4, x  F% \, Y0 x5 l: |5 g' [
    5 R2 K# }. ~2 F8 g- X: ~9 l- V│  │      % G- P3 b& ?) u  P
      r. l, c0 p6 q( S│  ├─第7+周 购物车价格同步、优惠券、下单与微信支付
    " c3 y* V" B  t) r" j│  │      1-1 购物车全选操作(1)勾选、取消勾选状态切换.mp4) h. O* n* I- x) F3 Z1 V
    ) B) l: Q  x  x! i8 m│  │      1-2 购物车全选(2)UI、缓存与组件三方的数据一致性.mp4
    ; k# H# P6 @; G5 ~│  │      1-3 购物车全选(3)全选的思考方式.mp4
    8 S  [" n3 Q# A) Y( t( X│  │      1-4 购物车全选(4)onShow时的全选.mp4% D! `* U, y7 L
    1 |, C3 {* V. t+ i, E' _$ H* T│  │      1-5 购物车全选(5)onDelete和onChecke时的全选改变.mp45 d3 H- m; b' e- K. ?2 V4 ]# r6 |
    │  │      2-1 购物车价格合计(1)Calculator类.mp44 }( B2 H6 H0 g7 j
    │  │      2-2 购物车合计(2)计算总价.mp40 m  p" A0 |5 ]
    │  │      2-3 购物车合计(3)Counter组件数值浮动.mp4) \& z+ F- m+ o* t, P. Q
    + x5 H5 w' v9 J│  │      2-4 购物车合计(4)JS浮点数不精确的解决方案.mp4
    " X+ m2 C$ `9 Z: O9 t. B% s│  │      2-5 购物车合计(5)移除与勾选时的合计计算.mp44 ^- [- t5 [% z- h4 K
    ; L) o1 x. x" q1 |9 n5 h& _│  │      2-6 购物车合计(6)全选价格计算(补充).mp4
    ) [8 \, v- p2 M) ]( y" n8 P3 |) L& D- K│  │      3-1 服务器数据同步(1)更新时机问题探讨.mp4) p$ K! p/ X/ p9 {& k9 @9 Z
    │  │      3-2 服务器数据同步(2)获取购物车中的SKU的最新数据.mp4/ ~4 S$ s$ M5 N2 g/ |
    7 M& b% m% \8 _2 X│  │      3-3 服务器数据同步(3)同步缓存.mp4' ^5 V8 P5 D, @9 s7 l/ z3 K2 e7 F6 n% n  L
    │  │      3-4 服务器数据同步(3)修正wxkey的警告.mp43 o& [6 _9 E9 }5 o2 j0 Y, j
    │  │      4-1 订单预览(1).mp4, P* D8 n# D4 z/ a; L8 E
    │  │      4-2 订单预览(2)用户微信收货地址授权流程与原理.mp4( Y: e% D: X3 W" \3 A1 c
    │  │      4-3 收货地址组件(1).mp4. s5 \' }8 r, F, `  H3 x0 ^/ q6 d3 W' T2 b2 J
    │  │      4-4 组件授权与API授权的不同机制剖析.mp4
    4 |8 b+ i& Q1 k4 U1 Z│  │      4-5 小程序原生支持Promise.mp4# I9 e$ U* z, a0 d4 q9 }- b) C9 p
    │  │      4-6 收货地址组件(2)显示用户收货地址.mp4; o/ g# L/ p$ V' c- Q) s8 W9 k4 ~  H/ q6 i
    │  │      4-7  收货地址组件(3)缓存用户地址.mp4: T! N2 Z" S8 {1 s- f9 O4 |( I9 b4 \+ a2 I
    │  │      4-8 收货地址组件(4)从用户setting中获取单项授权情况.mp4
    : i% J) O- R- k0 o; z' F1 Y│  │      4-9 打开用户的授权配置(先调用Dialog才能触发OpenSetting).mp41 v! P6 C. f4 i
    │  │      5-1 订单商品预览数据获取.mp46 I; q5 }  n; C0 u2 ?. X  Q% k* w) d8 F( h' O& R- K6 t7 @; {
    │  │      5-2 构建OrderItem模型类.mp4# g# R& |: a5 F+ i! f
    │  │      5-3 再次同步服务端SKU数据.mp40 U1 Q) }0 q5 M3 X: u
    │  │      5-4 OrderItem的校验.mp4
    ) A- @! x3 D3 `, p  |1 Q, \* y│  │      5-5 Order的基础校验.mp4; \$ h! x7 O4 f" j
    ; j$ {$ t, J+ O: C/ u0 z6 H% V│  │      5-6 纯前端课程结束说明.mp4
    ' |- a$ m2 S# V% `2 L0 I% b; q│  │      6-1 优惠券活动入口.mp4
    ; e' M: v! D+ D# O/ s5 X│  │      6-2 根据活动名称请求优惠券信息.mp4  m1 x+ `* j! D8 d" N# a/ |0 ~% T, E2 l: c
    │  │      6-3 前端登录与JWT令牌(1).mp43 Q$ ]6 o+ G; ]% t+ c  m% o2 A: a7 Z' P- X& r1 K: [5 a% x
    │  │      6-4 前端登录与JWT令牌(2)前端携带令牌思路与时机.mp4; N/ l( ]: f8 K' ~2 l% z9 `* w( Y. u: v3 C/ K
    │  │      6-5 wx.request未返回Promise的修复.mp44 {7 U8 D) |& d3 |' X
    " k: Q! ^) V9 U, U3 v- `% b│  │      6-6 前端登录与JWT令牌(3)在Http请求中加入BearerToken.mp4% O$ W. t* w  r3 v, e7 B  X9 Q
    │  │      6-7 token无法保证100%有效的问题.mp4% O3 a5 I3 ?) ~, Q9 h3 f$ R- ^4 ]7 L5 i# d6 Y$ ]$ c
    │  │      6-8 二次重发与防止无限二次重发.mp45 q' @8 c5 z2 e" g' n) a6 |; B' T& }! k) p4 B; |% f
    │  │      7-1 前端异常处理(1)异常的分类.mp4
    * y1 |8 J6 I: o9 m0 v  C│  │      7-2 可复用的Message与定制化Message.mp4
    % T4 R0 d. Z& F3 N3 Z3 v$ `│  │      7-3 前端Message与Code的重定义.mp4
    # ~1 \( w; i. }$ ]; o6 m│  │      7-4 调用失败的异常处理.mp44 T9 i( w  L1 Z: Z4 S- I  r; T; W; S2 F0 Q0 W1 F8 u7 q
    │  │      7-5 空数据的情况(单个空数据和列表空数据).mp4$ D+ ~, r9 A! a" O8 o" d6 `* |, {4 k, u2 D' X2 _4 `, V0 S0 E
    │  │      7-6 单数据空值的转化处理.mp4
    5 m2 W% V; N+ l8 t- u& u# K  I│  │      7-7 调用方的个性化异常处理方案.mp49 |. V* h4 X! k- V: |
    ! C: u5 C! P7 u& j, m5 d6 p5 h│  │      7-8 异常处理的测试.mp4+ X# ~5 p4 b$ }1 @6 s$ [& R
    │  │      8-1 优惠券中心的前期工作与状态分析.mp49 }( v: R' \( ^% r$ t3 c, m7 s) o! M
    │  │      8-2 显示优惠券与Lin UI折叠面板组件.mp49 h! B; ^2 n: L4 z% z( e$ T! {9 j, W6 [% S: z; U, O  A$ b5 Q
    │  │      8-3 优惠券的领取操作逻辑.mp4
    & S7 @" S5 _+ L9 ?1 W$ ?│  │      8-4 二次点击使用优惠券.mp4* F. [' D# k4 ~0 K8 c; a3 R7 P
    9 z" g) }# o* n4 T3 ^2 e│  │      8-5 从商品详情领取优惠券逻辑分析.mp4
    % X/ V7 I+ @: d  D/ N. c│  │      8-6 取当前商品适用的前两张优惠券.mp40 P- Y! ^# R1 `- i
    # Y3 l& g: ]  ~2 G│  │      8-7 按分类获取全部可用优惠券.mp47 |/ a3 q6 t7 R
    7 Q' O) b2 L/ e3 P│  │      8-8 获取优惠券及优惠券的适用分类.mp4
    , f  t4 d& Z! c. d, l0 ]1 c│  │      8-9 OrderItem的呈现.mp4  {7 I9 O( k0 m' v1 e2 C9 m
    │  │      9-1 Coupon-Picker组件.mp4! q5 V  U# J' b5 d- n* {5 s( V; p% }& C! T
    │  │      9-2 优惠券的分类使用条件剖析.mp41 R( e4 n9 r# A! O( [4 Z9 M0 `, o0 R. N9 z8 c
    │  │      9-3 2次Reduce计算分类总价.mp44 G, S# o' \$ j
    │  │      9-4 判断优惠券是否可以使用在当前订单中.mp42 M/ ~0 f0 \) z. h$ }0 c* I/ I
    ) A! `9 E4 G; A( v( Y2 U$ D│  │      9-5 优惠券选择的切换逻辑.mp4
    6 }' ?4 K1 s+ H7 c- N& _" f& I0 V6 V│  │      9-6 优惠券折扣价格计算(1).mp4
    ' ]7 @; M! }( X+ `/ ^8 I' V│  │      9-7 优惠券价格计算(2)几种舍入算法.mp4! D; w, J8 a; Y0 D2 V; c& \% \# b: a* v8 H
    │  │      9-8 总金额、优惠金额与最终金额的计算.mp4
    0 C- y& e4 N  @( j7 c│  │      10-1 提交订单(1)获取用户所选择的收货地址.mp4; B6 Y) ?* T( {) S
    │  │      10-2 向服务器提交订单并取得订单ID号.mp4
    ! h% k( C# @( c, [; H. s│  │      10-3 订单下单失败的逻辑处理.mp4' |9 a7 D" \2 c) s" w
    & u! V8 M" \/ A- Z│  │      10-4 下单后移除购物车商品.mp4
    " V8 s' R% T! s5 `1 G& q6 a% \4 f) X│  │      10-5 前端拉起微信支付与支付测试.mp44 t8 ]7 Z5 N- m! K
    " |6 l2 v/ G, K" _│  │      10-6 订单防重的相关细节设计.mp44 A6 @3 ?2 E* j9 G0 S: e; H1 e* ?) j$ u$ d  N$ w4 i; j
    │  │      10-7 支付成功和失败的逻辑判断.mp49 p& T4 `7 k; U& E9 F* A2 E0 Z7 {* {9 G3 J0 A4 s; a2 |. W
    │  │      10-8 支付成功和失败的跳转逻辑.mp4: R9 ^5 I: W$ l$ G
    │  │      11-1 立即购买的逻辑.mp4& c5 W2 F6 C- J, I' I! B" D3 U1 u  I( y( t) q: b
    │  │      11-2 我的页面结构分析.mp47 g% r9 [( G5 U3 d  h
    2 W3 L# h0 {3 I' o! t& S│  │      11-3 LinUI Avatar组件显示微信头像和昵称.mp44 S2 a0 a8 c  O, ^
    │  │      11-4 全新的获取用户微信信息机制解析.mp4( g; s$ X$ m* @) i4 `: ?$ y; E* a- P5 X- U. q: F' Y
    │  │      11-5 l-badge徽章组件.mp46 @" K. Y3 r1 k7 y. ^7 e. E0 y* T: ?3 L, J6 ]0 l0 t7 J
    │  │      11-6 获取各状态订单的数量.mp45 M- w' t' f: z0 S6 s; o
    " M2 `, q) k5 n$ E- a! {. c│  │      11-7 LinUI List组件的应用.mp4
    5 a8 W3 v; k. b; ?* F6 k3 Z│  │      12-1 小程序结束语.mp4& k+ Q, H; o" C7 `% a$ f
    │  │      
    ) \& G- ~$ d+ y- ]! I+ E│  └─资料: z, s! |6 d8 r* \' i
    │          sleeve-master.zip2 A4 ?" N9 c. R* d& Y) }9 x% r
    . A) ?2 Y) v* A( C- b. K│          8 T. ^) E- s( s2 ]9 Q% n( i8 ]; w' C" `
    ├─阶段2:Java与SpringBoot部分+ M( W" E1 @; i$ i9 ^6 ~. K2 g' m) S3 W
    │  ├─08.初识SpringBoot2 e# \4 \; M7 O) r2 @9 q" {0 o1 O4 C& w/ `! _, F0 g
    │  │      1-1 第二阶段开篇词.mp4; a$ w6 X( L; D' ^6 E* A& ?2 P) _: s8 \1 y$ Z
    │  │      1-2 java web框架的发展历史.mp4
    9 R# v, F' q. ~/ _9 m4 f# l7 f│  │      1-3 SpringBoot与面向抽象编程.mp4* i5 B8 |8 v. u
    │  │      1-4 第二阶段第一次作业:理解IOC与DI(四个要求).mp4/ l$ x+ l7 J3 E7 X/ c
    │  │      2-1 完全搞懂SpringBoot版本号(主、次、增量、发布).mp4' V7 U& R2 K/ m+ j, I- k
    6 A8 A* o& C! `! f' M│  │      2-2 JDK版本的选择与安装.mp43 T# S$ j  g1 o" \" m* ?( `7 u! K# T/ u
    │  │      2-3 Java的2种构建工具:Maven与Gradle.mp43 S, X; `, h; q9 ~6 s
    * r6 ?  h: S: D- D# s% Y8 n│  │      2-4 Maven的作用与安装.mp4: v% p9 E3 W5 ]; P  X1 k; f( R) m# ^
    │  │      2-5 开发工具使用Idea和三种创建SpringBoot项目的方式.mp48 p' P* a& n* t: Q% S- o, s
    + M2 S" k, c9 b$ X│  │      2-6 使用Spring Initializr初始化SpringBoot应用程序.mp4
    7 h9 x/ F! e1 r+ Q# v│  │      2-7 SpringBoot应用程序的基本目录结构.mp4# \: D. x- u( I2 u
    5 i. q& Y, Z4 G% y5 U3 Q│  │      2-8 POM文件解析与Maven版本踩坑.mp4& _7 t$ I" ~$ a
    │  │      3-1 运行我的第一个SpringBoot应用.mp4
    + G! K! K! u$ A( u' F1 @( h│  │      3-2 新建API包与控制器.mp47 ^6 u  K" x% W4 N+ `1 z, N: m! V7 p5 O) v, u
    │  │      3-3 使用ResponseBody注解代替ServletResponse.mp4+ d8 \; V* I5 ]7 a# [
    / n% f. t7 n& {% _│  │      3-4 SpringBoot热重启配置.mp4' @" x. u1 a, u! j% Z+ ^5 }/ L- \; n1 b  V% i+ ]8 R$ y- v
    │  │      3-5 几个常用构建RESTFulAPI的注解.mp4: H: t" ^5 ?$ W3 k; r; ?" ]# t9 ]
    │  │      3-6 @RestController注解.mp4! U6 q" C8 G: `1 s$ U: ]
    │  │      " @; |. }3 ^4 N# L  j' _+ M1 N
    │  ├─09.Java编程思想深度理论知识
    . ^6 g% H9 ^7 b$ {│  │      1-1 Java是一个笨重的垃圾语言吗?.mp4& g1 ^5 l6 }; j3 K/ e
    │  │      1-2 SpringBoot为什么有这么多复杂的概念?.mp41 Y8 L2 v$ t: X- Y0 _$ v- B2 v3 [
    5 k4 {" I: X% }9 ]. M│  │      1-3 开闭原则OCP.mp4
    * S0 ]4 H: M3 m& m: p│  │      1-4 为什么要面向抽象编程.mp4  Z6 J. n+ f! N& I
    % Y9 k1 z# a) i9 _# B│  │      1-5 面向抽象的常见手段:interface、工厂模式与IOC和DI.mp4
    & e( P( c, t5 d. }( w│  │      2-1 英雄联盟小游戏的最简单版本.mp44 R/ }" f" ?' ]4 L# x% L- W$ O& c
    │  │      2-2 第一个烂大街的代码风格.mp46 F/ [: O% W! \4 [( I) Q
    │  │      2-3 使用Interface的抽象风格.mp46 H5 l& N, ?0 H! D: i% N# t
    │  │      2-4 interface统一方法调用,但无法统一实例化.mp49 p  R' q3 F4 a% W3 V6 p9 O
    │  │      2-5 抽象的难点在于new对象.mp45 H, p5 O. N2 r8 P
    " {5 A, P% G8 S( a2 A│  │      2-6 只有一段代码不负责对象实例化,才能保持稳定.mp4
    7 \- A$ v0 W  N4 z" T( z0 O│  │      2-7 工厂模式分离对象实例化.mp4
    ; z6 h* C1 i; t- D│  │      2-8 稳定性是相对的,我们需要将不稳定的代码隔离.mp4) W  C5 n- V: }
    │  │      2-9 变化是导致代码不稳定的本质原因.mp4* _$ [, Y* V+ E' |
    & c) ~- {5 g! d2 g% [1 M  L" A│  │      2-10 通过反射机制消除所有的变化.mp4
    / k8 B; j. q9 w0 b0 u; t% B│  │      3-1 工厂模式+反射并不是IOC和DI.mp4; i4 o' Z& Q: [: e2 X2 B
    │  │      3-2 配置文件的变化是允许的,并不违反OCP.mp4* |/ F4 Q8 m1 F; R+ M9 g# n# S7 @* Z7 j# G
    │  │      3-3 IOC和DI的雏形.mp4, f; C8 W8 [# z% Y. p
    . R6 j2 f  Y1 n3 t+ O( g: s* g│  │      3-4 IOC的示例.mp4. k, [0 t* ]( N2 Q
    │  │      3-5 为什么引入容器后可以让系统变得稳定?.mp4: x8 n: u* X3 _( S4 w
    8 Q! E; l& b. y. V+ y│  │      3-6 DIP依赖倒置到底是什么.mp42 ~4 K% m% z0 @" X: i/ ^
    8 }. f# D4 Q- f& B, M' `6 q7 e6 |│  │      3-7 DI依赖注入的意义.mp43 {4 x; }! v. v  a  G! v: w( q( _1 \
    │  │      3-8 依赖注入的原理.mp4  k* G; ^7 X0 R$ `! h6 f7 o) q0 d) M3 o6 P/ }5 E  y
    │  │      3-9 容器的作用是在装配对象.mp4  |* G6 j0 ?5 j  n& v- _* ^* |, d- U& J( a( Z% I5 y( y
    │  │      3-10 从DI的角度理解IOC.mp4! m7 L; V, a  T+ q
    │  │      3-11 IOC的终极奥义.mp4' ^1 b4 h% I2 h! x  [0 c: ^
    % d: c, k1 H; z9 c│  │      : d' \% w6 v: C. b. Y# p$ i/ M% P. h( m4 n+ a; H0 I) Q
    │  ├─10.Spring与SpringBoot理论篇- h/ t- @! r" I$ {
    ! @( p: h9 k) n6 D8 W" P: @│  │      1-1 SpringBoot理论篇导学.mp4
    & |. q0 M& j% _. r6 p│  │      1-2  Spring、SpringMVC与SpringBoot的关系与区别.mp43 Z! A/ W. J' X7 k1 @- D8 s# N$ Q7 O$ N( M( ~6 y
    │  │      1-3 什么是SpringBoot核心优势-自动配置(作业).mp45 _, H5 m0 s5 c: B8 W" ?
    : c# l. K4 p; {( w! T# ^8 k: @% t│  │      1-4 把握Spring的几个重要目的,提升学习效率.mp4! r7 i, T3 `: Y" C' p3 R5 f' u
    - h  c& B9 [6 [2 n. e7 ^│  │      2-1 SpringBoot最基础的编程模式@Component+@Autowired.mp4, `3 `0 x- ]  ^9 w  B8 h
    - c! ]8 @& S: w: e│  │      2-2 Stereotype Annotations 模式注解.mp4
    6 k/ Q$ y4 b  M, u│  │      2-3 Spring的实例化和依赖注入时机与延迟实例化.mp43 w1 L7 I2 r; E9 N
    # p0 f/ ?1 V$ l9 O- G. y2 E│  │      2-4 成员变量注入、Setter注入与构造注入.mp46 F% p5 [/ w; l. d
      j- l6 m7 w& T' H8 p/ n│  │      2-5 一个接口多个实现类的处理.mp4; e# I+ L( V6 Q) }
    │  │      2-6 @Autowired按类型注入.mp4
    , O, |& L% j: l: M- F2 B+ {3 G│  │      2-7 被动推断注入与主动选择注入.mp4% o& l) l9 [3 g8 B9 I' R" r
    - F2 @. G5 f0 l│  │      2-8 应对的变化的两种方案(策略模式与属性配置).mp45 G* p+ U2 Q/ b) o/ Y# O3 W# ]
    │  │      3-1 @Configuration配置类.mp4
    $ C& E; Q( q. u: B* q, y│  │      3-2 @Configuration表面意义上的解释.mp4
    % T- W1 }! A" A, Z│  │      3-3 @Configuration是用来替换bean的xml配置.mp4
    ' i' m0 o5 z9 _; \8 t0 f/ h│  │      3-4 变化最终要被隔离到配置文件中.mp41 t/ v, c) m! r( b3 l: c$ w8 W: x
    │  │      3-5 @Configuation和@Bean的真实作用.mp4' @9 P% E9 F2 j( d
    ( R3 ], v/ b) E8 A5 e1 A$ W│  │      3-6 深入剖析@Configuration的意义.mp4( B) ?) k! D- X* u. J0 c2 g8 H/ I' B' _0 o+ g# d3 a' R
    │  │      3-7 @Configuration是一种编程模式.mp49 ^* S, n: Y9 I8 Q/ L& ~/ h) T- e. x2 Q
    │  │      , B' J/ B) ^0 G" h5 ~/ P6 \) G. p8 p) G0 |9 ?4 m$ {3 Q+ E7 W, Q
    │  ├─11.sprinboot的条件注解与配置7 W/ [% `  x0 @$ d7 R& x
    - c) ~- d* I4 W. T, U  _, {│  │      1-1 Bean名称与几种注入方式补遗.mp4
    * q6 C1 T$ P( s1 k  L│  │      1-2 @ComponentScan包扫描机制.mp43 W% f: q3 f: [% y& x7 k. T& o
    , G3 y( y" s* B) h- f9 G, w; _│  │      1-3 策略模式的几种实现方案.mp4! `2 g5 O8 z3 K$ v$ q3 ~% Y8 k( w+ W; m: a- o
    │  │      1-4 条件组件@Conditional的基本用法.mp4
    . G& R; i9 Y, S' J* n) D8 x│  │      1-5 Condition接口的ConditionContext参数.mp4# M( a. J  N% V4 S3 q& R& ^/ F# A
    │  │      1-6 成品条件组件@ConditionalOnProperty.mp4# Z' n0 H7 W* @' A" g
    │  │      1-7 @ConditionalOnBean条件注解.mp4/ B: z' Z3 [" \9 |, Q9 `
    # H9 l8 h! O2 y# R2 m7 ^: ^│  │      2-1 SpringBoot自动配置原理导学.mp4# Z0 @* `1 h1 J7 d$ ]+ ]; I% p" B  |8 W  y* q0 R
    │  │      2-2 @SpringBootApplication注解的理解.mp4. H( B5 s  q8 z3 a- b
    │  │      2-3 SpringBoot自动装配原理解析.mp4( Z# }3 |  _( y4 Q- N4 [) P( C3 d
    ( j& E! n- X' H" O" j9 U│  │      2-4 自己编写一个Spring应用启动类.mp4( f; \  `: b% P
    │  │      2-5 @Import 的两种用法.mp4
    - p: f/ f( G1 B5 ?/ _8 u; M│  │      2-6 SpringBoot自动装配的spring.factories文件.mp42 |5 K! b: T4 z" x# @- M
    │  │      2-7 Java SPI 机制解析.mp4
    & R. k8 y0 {! j# z1 I0 Y% [/ {│  │      2-8 深度理论课总结.mp4  a5 h( y+ j) D2 [; g2 _5 ?
    │  │      - I* d" `. B* x9 A
    0 ~% }: O2 T: E& I9 w│  ├─12.Java异常深度剖析' t# O! c9 q1 Z4 W6 o2 @; E5 R
    │  │      1-1 全局异常处理机制导学.mp4# f$ N2 R6 p9 i: \1 |% `* \. K
    │  │      1-2 如何统一捕获异常?.mp4! w; K' g- C+ @, S4 u! \) w
    6 G. @0 i3 C& Z- }│  │      1-3 异常分类Error、CheckedException与RunTimeException.mp46 a1 s) d* D( }% \" S/ D' @6 W  I# T; j; ]9 v+ T
    │  │      1-4 彻底理解CheckedException和RuntimeException.mp4; a4 [+ y& q$ Q  q
    │  │      1-5 自定义HTTPException异常类.mp4+ U( _5 V7 i8 D, ?/ ~
    ( U& {6 P6 h9 G4 V( l; m) s3 Q│  │      1-6 同时监听Exception和HTTPException.mp4
    4 D5 @5 B; s$ V! O7 j, O; C8 i│  │      1-7 异常的深度思考和理解.mp45 ^, c1 ?0 V0 j: h, o$ K% I% _, l' J+ `# j5 |% c) z
    │  │      1-8 在@ExceptionHandler中返回Unify消息.mp4  S' Y7 X4 P1 S5 @1 s4 S. c. N& e
    │  │      2-1 使用注解修改HTTPStatus.mp4, K  _' E/ a* N8 _
    4 r+ _$ q# I% p; i5 B% L│  │      2-2 处理自定义HTTPException.mp4
    " J! F. I9 L" w- ^3 U│  │      2-3 为什么需要将异常信息写在配置文件里.mp43 E! Y! B5 Z( y6 \, u
    │  │      2-4 自定义配置类管理配置文件.mp4. f. D% W6 _2 v/ r
    │  │      2-5 HTTPException的意义.mp49 P0 [* |# r7 x$ T: J" Z4 R
    9 Y( Z: j! ^. q│  │      2-6 SpringBoot主动发现机制和思想.mp4
    ' u* r  Z  T2 }* Q& a  s│  │      2-7 根据目录结构自动生成路由前缀.mp4  a; M; V# W5 b: e3 ]$ ?- h8 t9 d2 i" K3 E. J! G
    │  │      2-8 自定义RequestMappingInfo.mp47 |+ d, c5 q2 E6 f3 P) ^# ~7 o
    │  │      2-9 通过接口的形式发现类.mp47 K6 [$ C" _9 M' F2 u: k( l8 `: F
    3 Q7 B/ L5 v1 C2 k4 E, x% [& r│  │      2-10 完成自定义PrefixUrl.mp4% e1 R2 ]6 `# T, ^. `
    9 h  J4 d1 N2 J) X│  │      7 s8 Z/ R; J, c+ x
    5 T* X: [7 p3 F( {4 p2 j2 A6 r│  ├─13.参数校验机制与LomBok工具集的使用9 i  b6 \8 a% Q3 P, Q; Q+ I# {! D, {5 G% n* |. ^! T
    │  │      1-1 修改Properties文件的编码解决乱码问题.mp4: R5 h) V# Q$ J& r6 V, G2 B  w+ s
    ' ?. i0 j; z6 {+ k/ ^/ v│  │      1-2 参数校验机制导学.mp4
    + _5 i, K$ h8 p+ q. x  F3 i│  │      1-3 获取URL路径中的参数和查询茶树.mp4* j* E) ]5 p) r" \% o1 I  [/ m" |
    & a/ Y& ?( a  b( F│  │      1-4 数据传输对象DTO的接收.mp4. V  e! v/ b' D/ O0 ^/ H
    │  │      1-5 LomBok的基本使用方式.mp4
    / Z7 P5 ?* c- l6 b│  │      1-6 LomBok中关于构造函数的几个注解.mp4) i0 a9 u/ P# j
    │  │      1-7 @Builder构造器模式的使用.mp4
    4 f: S# G& H+ l3 M$ |6 S│  │      1-8 JSR-269与Builder模式的序列化.mp4  ^$ d3 Z( j8 Q; o
    │  │      2-1 使用@Validated注解进行基础参数校验.mp4+ `) Y0 j' G9 i7 ?/ a2 Z3 f3 f/ B5 V2 H5 C+ e7 T0 A7 u
    │  │      2-2 验证HTTP Body中的参数与级联校验.mp4" C; U& k( l) K  g1 S2 w
    │  │      2-3 补充:@Validated和@Valid注解的关系.mp4/ b# m* X& N$ C8 z( A" }5 O
    ) p7 Y, G, q; Y1 C9 a│  │      2-4 自定义校验注解.mp4) H8 [0 H7 B* T' o) K8 \, }
    │  │      2-5 自定义校验注解的关联类(1).mp40 S) v- }( n  X1 J0 l3 S0 p
    5 a% f. R, }& ?; N│  │      2-6 获取自定义校验注解的参数.mp4/ K! [5 s; c2 {
    : }2 Z* L0 e/ |│  │      2-7 捕获DTO类的参数校验异常信息.mp4& H+ b1 ~! w8 R2 I$ ?
    * C+ j/ U/ d; ~7 F( c│  │      2-8 捕获Url和查询参数的异常.mp4
    7 g" |/ _& i$ L% a( ^/ Z│  │      ) @5 b. |6 @6 \- ?) X" F( l
    │  ├─14.项目分层设计与JPA技术" |, b" ?: x5 v! S) q6 m" @9 V) C* L8 r$ @4 c
    │  │      1-1 JPA导学(新年快乐).mp4
    # Z7 \. w( W/ G│  │      1-2 Service业务逻辑层(服务层)的建立.mp47 ]% V) f3 m4 v# s. ?' V1 J) ^1 R* a4 M, z6 @
    │  │      1-3 层与层之间是否一定要用interface建立关联.mp4
    8 p3 Z; c+ r) {% g; Y, N7 R│  │      1-4 创建数据表的3种主要方式.mp4* U( e! o$ h, @
    │  │      1-5 新建数据库和数据表.mp4) ?! y8 D" c9 `/ l/ Y( K+ ^
    + o  K" b, ?; ^! _$ X1 K) E3 ]( i│  │      1-6 yml格式的配置文件.mp4
    / E- v' x) E) S* T- Q│  │      1-7 多环境配置文件(profiles)以及启用方式.mp4
    2 N6 F) [4 g7 K$ V3 o  @+ P+ B3 N│  │      2-1 mysql数据库连接配置.mp4
    . W  \8 o- S7 O. Y) d( N: B0 k* a│  │      2-2 Maven依赖无法安装的几个解决方案.mp4+ e) ?) u# o! K$ l+ t
    │  │      2-3 使用ORM的方式生成数据表.mp4
    ) G9 u% j8 i6 P! `  m6 b+ G4 O│  │      2-4 常用实体类注解与ORM生成表的优劣势浅谈.mp42 M% n; H3 c, e" C4 Q) B7 }
    1 I) Q1 \% q5 V! U! r$ y│  │      2-5 多对多关系的第三张表探讨(重点).mp4: R' j! y5 a- K5 x
    3 I- R* Z8 Y$ ~! W1 {9 h( I/ h│  │      2-6 数据库设计步骤及数据库优化原则.mp4# |( P& X; N! M0 e- A' U" x1 J7 x; r
    │  │      2-7 实体与实体之间一对多关系配置@oneToMany.mp4& Z8 m& \9 X% T1 }0 U( Q0 R" k6 f# O" t9 p
    │  │      2-8 指定外键字段与是否需要物理外键.mp4. K6 c2 Q) C  {# K+ n) r/ S8 x
    │  │      3-1 JPA的Repository定义.mp4
    0 I5 Z  J9 i# T7 s  }% \" L# K│  │      3-2 执行Repository查询语句.mp4( K6 ~4 N  e# z1 w
    / B1 J! L+ {. O│  │      3-3 懒加载和急加载.mp4: F4 u( w0 P! I, g6 O' q
    ) B+ Q5 A. l6 I6 {- o& c│  │      3-4 双向一对多配置.mp46 Z8 d5 M6 f& X/ |- C4 w' P" {) ^3 |( G* b% M( O) l1 t/ G1 e
    │  │      3-5 双向一对多的外键配置问题.mp4- }2 Z, C$ {" M$ r# \- V; f4 j4 U/ u' W0 R+ N- T; R
    │  │      3-6 多对多关系配置@ManyToMany.mp4- `1 W, N$ F( S  U$ ~- |7 B
    │  │      3-7 单向多对多关系配置与常见问题.mp49 z& q2 K( e) W: B2 a3 s) h9 U
    │  │      3-8 双向多对多配置.mp4( m% p3 r# j  D- {; r5 ^. p& k$ d. a) d9 {5 M1 x
    │  │      3-9 如何禁止JPA生成物理外键.mp47 y; \! n( j# b) f* e4 Z- m
    │  │      2 s; a; t. c. ~5 N0 }. ?: ~; B# z
    ( h4 i3 D! I- r& [, A│  ├─15.ORM的概念与思维4 M- O9 S5 r  ^! H7 d7 O/ ~7 E9 _6 Y' u
    │  │      1-1 谈谈ORM的概念、意义与常见误区问题.mp45 w, r: O. C' I% P9 ?& b; u. b  q$ ?9 A* u( b0 V/ q" K, o$ v6 p
    │  │      1-2 数据库表数据的设计、导入与导出.mp4- p* I9 j1 |; E% F0 I
    │  │      1-3 项目开发顺序.mp44 K/ D. `5 E$ o, D0 v( j8 B+ V  O. d0 f/ I9 _
    │  │      1-4 导入项目的SQL文件.mp4) @, f8 ^% m) E- v# ~" ]+ ?6 t' l  ^8 f* T- ]- B! P/ v
    │  │      1-5 逆向生成Entity.mp4/ ~! o9 C3 M. I7 ~
    . A7 {0 h( q; \+ Y│  │      1-6 简化实体字段.mp4) v2 ^4 Q& h' z1 `! I) i0 `) g" Y; S0 f! D' g$ ?( G9 |
    │  │      1-7 三个时间字段的说明(create update delete).mp4; |$ K* T8 X& u& o2 E
    8 h0 f9 O9 t1 j; ]3 L│  │      1-8 提取BaseEntity基类.mp4& g6 B; l/ t" e
    ) u4 h4 m  `. e" n│  │      2-1 访问Banner接口.mp4
      Z, t2 ]' O" Z. D3 \│  │      2-2 @MappedSuperClass的作用.mp4
    ' T3 H* M, N4 x9 A$ Y│  │      2-3 Jaskson序列化库的重要配置(SNAKE_CASE、时间戳).mp4. n8 Z0 Z2 `8 Q& l7 [: u' F- Z  V2 ?6 A
    │  │      2-4 Theme接口开发.mp4
    6 b6 N5 J- R0 ]8 e& Y* C$ @│  │      2-5 Theme表设计.mp4' e( R! Y+ `- E; e6 N" Q" C0 F/ }, A. v! ]7 a
    │  │      2-6 表的列行转换思维.mp4* h. Y& V3 {+ ?: }1 _8 d* i+ K8 J* b2 Z; T* m( V
    │  │      2-7 SPU表设计分析.mp4
    ( X7 F6 b: n. W$ e1 r! _│  │      2-8 静态资源托管的几种方式.mp4  ^, s+ Y& A, n" z8 K/ |6 W
    4 L4 L7 M2 z1 N0 E6 d% P" E- `) w│  │      2-9 SpringBoot访问静态资源.mp4) Q* g# J2 w3 F' o- _: H
    │  │      3-1 为什么需要提供多个SPU数据的接口?.mp4& C  |; q- Y3 r4 l$ x3 g7 l! [) b) M' p! R" e- _" Z8 ^
    │  │      3-2 Spu实体映射(增补).mp4* x( l* f: X" }& i1 P
    / |7 I. y. h1 V! k0 w' t$ f│  │      3-3 Spu详情数据查询.mp41 B9 W! [3 J* d$ g
    3 i1 ~5 W1 U5 r- y2 V│  │      3-4 查询列表类数据.mp42 Y+ q8 w0 V" `. u
    , Y2 i4 V2 g4 H0 t9 D4 T│  │      3-5 延迟思考,逐层深入.mp47 O/ p4 m) T3 P1 a
    ( C# ]9 u$ P' B& q│  │      3-6 数据库多层关系设计思考与冗余字段设计原则.mp49 E5 M4 U; u$ Q6 L
    % W( T) \3 N5 ^+ L  H) p: }  x& w│  │      3-7 导航关系的配置原则(需要时才配置).mp4
    8 b) i9 U: S$ C) ]; k5 m+ Q│  │      3-8 Latest接口SQL查询分析.mp4/ N" C' N1 W" D( N$ z2 j( [! v; v8 j8 }2 s
    │  │      3-9 VO视图层对象的概念和意义.mp4; T' {) L/ f" ~6 c
    │  │      5 _: J8 V( g" K9 w8 C5 r' f
    │  ├─16.JPA的多种查询规则- O* S8 N" P2 i0 {  ?) n. W# b7 H3 ?$ m
    │  │      1-1 DozerBeanMapper拷贝属性.mp4
    : a9 K% f# G/ v9 u+ C; f3 s3 i│  │      1-10 JPA接口命名规则.mp4% _, _5 g% g8 {1 I7 c# |' ^
    │  │      1-2 PageRequest.Of方法进行分页参数构建.mp4! h# ]6 Z/ p* ^# j6 q7 O
    │  │      1-3 BO对象与分页参数转换.mp4% h' n3 }* o. i0 T& ^8 H3 z* w' X: l' \* x  R7 E
    │  │      1-4 Paging分页对象的构建.mp49 @4 {# V6 X$ _* B: ?! Z( f0 p; R
    │  │      1-5 PagingDozer对象的封装.mp4# E# o! ?* a7 {/ ^- ~& i, l7 V7 X- z, c, D$ S
    │  │      1-6 Paging对象测试与Java的伪泛型缺陷.mp4
    ( u5 s0 S* [% P8 ~! i1 b! q│  │      1-7 分类表的常见结构设计.mp49 y) D) U. J9 h, e# L
    │  │      1-8 无限级分类的数据表达方式(自定义协议路径).mp44 z  ~, K9 x, a/ L9 {, D7 i8 P" ~8 ~$ T; [" E0 ~5 M: l
    │  │      1-9 分类冗余字段设计.mp4
    ; X) P! N1 U( O6 a- z│  │      2-1 Java Bean中可不可以写业务逻辑.mp4- Y% M. n4 {) \  K, Z5 H+ r
    │  │      2-2 jSR303校验的message模板配置.mp4
    . O  v6 P' J! a│  │      2-3 规格、规格名与规格值的设计(上).mp4
    9 U! j+ u7 V, Q5 }- z3 `9 `1 c) n│  │      2-4 规格、规格名和规格值的设计(中).mp40 M  [! |, q+ S) s5 w3 z# k
    │  │      2-5 规格、规格名和规格值的设计(下).mp4. Q6 X1 o1 V( e& r: q
    9 W; B. W* t$ T) Z" j: ?│  │      3-1 通用泛型映射方案(1).mp4- h6 [5 W# x1 d. B0 h* P& }8 p2 A7 q$ |; |
    │  │      3-2 通用泛型类映射方案(2).mp4, S$ t; _; n' ~( C$ y. |
    │  │      3-3 单体JSON对象的映射处理(1).mp4: D& u. Q  \* Z- C. H' Y
    │  │      3-4 单体JSON到Map的映射(2).mp42 d/ y/ W+ g- ]& I4 X
    3 \9 {, R$ x- C" |7 g$ l│  │      3-5 单体JSON与Map的映射(3).mp4
    5 O7 ^( y/ A# d0 Q: P! Z│  │      3-6 数组类型JSON与List的映射(4).mp4: l9 o6 J+ L! K% l% V
    │  │      3-7 谈Java类的内聚性、方法外置的问题.mp44 {+ n8 X4 W. W' E3 k0 J
    │  │      6 Z2 o: i8 y+ O, h4 e" f: E0 w  Y+ P0 C3 T( ^
    │  ├─17.令牌与权限5 u9 u* @5 r7 \6 b1 M
    │  │      1-1 Java的泛型是编译期间的而非运行期间.mp48 Y' m8 e1 `: \2 U$ o  S
    # F6 L. O% C* N- p2 ?  O) O│  │      1-2 通用泛型类与强类型转换 (1).mp4
    : l# k1 o* s4 n1 f: j# Q" R: @  y│  │      1-3 通用泛型类与List的转换(2).mp42 i! g0 G7 F9 U! e5 k
    ' t' z; m; y: F│  │      1-4 更简单的泛型反序列化方法(3).mp4$ ~2 B6 M* k) p+ E5 P# u8 b  h. v, C; R* Q( Y  x  }
    │  │      1-5 方案调整与优化.mp41 X3 P) m0 I" k3 \* Y; X7 m" `8 X$ v, Q8 J/ F. _+ A# y
    │  │      1-6 @Where条件查询.mp4
    6 u. l" M: @2 Q│  │      2-1 Category分类业务分析.mp4
    ; z6 |4 [8 }  \( k│  │      2-2 Category接口数据结构分析与探讨.mp4
    % w9 @$ X5 q: Y: F1 e1 S" D│  │      2-3 循环序列化的解决方案.mp4
    . K. w) r/ U2 @3 h│  │      2-4 Java的Stream与Method Reference应用.mp4/ b; t2 K- \4 V+ }9 i
    │  │      2-5 GridCategory接口.mp4- N$ e$ j$ f2 e& T+ q) K; c
      P! b; J5 d- Q! L/ I0 [) Q* @│  │      2-6 Theme业务及模板概念分析.mp49 {, w0 }1 l6 g& h# Q; O& p3 m. h* w& a' X) ^& L! B
    │  │      2-7 自定义JPQL替代JPA命名方法.mp4( D# j1 a! j* }3 c
    │  │      3-1 Optional的意义与价值.mp40 M6 Z& a: ~/ v+ U
    │  │      3-2 SpringBoot中的单元测试.mp4( w" {5 G. P/ F6 S: ]
    │  │      3-3 Optional的精髓.mp4& s4 v# Y  I" z
    / L1 J* [( Q+ M% a│  │      3-4 Optional的经典使用场景、Consumer与Supplier.mp4" r1 E5 t& {/ ^  k9 x8 f' l8 h9 Q/ r+ _1 E( y
    │  │      3-5 Optional的链式操作与Function、Predicate、Filter.mp4( N5 p- l$ P5 N- W, F
    $ h" V- C- j. q- \│  │      4-1 权限、分组与用户的关系探讨.mp4
    5 u/ M9 E# M6 Q│  │      4-2 @ScopeLevel注解的机制.mp4  j$ b7 r, s" `, o' z5 m: n8 ~$ [/ T  g( P2 Q
    │  │      4-3 令牌与微信登录机制.mp4. }3 _8 a+ B4 B" [1 l: X! M
    1 i# I% O& S/ T! c8 U# ~, c│  │      4-4 无感知二次登陆问题探讨.mp43 J( `. o% D  T6 K5 w+ K7 [3 k& m4 @" x9 N: v! W2 _
    │  │      4-5 getToken接口.mp42 O) |% _6 y6 Z# t9 \: i
    6 E  B# u" j% w$ @/ m│  │      4-6 TokenPassword校验注解.mp40 B9 ?. p0 x( B' B# Y/ M6 p0 ~  Y1 f1 E) E/ G8 f
    │  │      4-7 错误消息的模板参数.mp4
    % o4 v/ W1 {) A3 p$ e* Q│  │      4-8 微信验证服务.mp4
    9 O; l& P4 A1 b$ r8 w1 w  l- w│  │      4-9 Sleeve-Mini小程序测试工具准备.mp42 e' R* f: j0 j6 q8 ]4 z8 I+ t  a; p* A3 _' E2 X5 U1 N
    │  │      5-1 获取用户OpenId.mp4; X; Y6 o# G7 a
    , F+ v8 F% t$ ^3 z3 M│  │      5-2 JWT令牌全流程解析.mp4$ Y( m- w5 \& Z. O
    - k8 G" U6 {, _/ M3 C& a" v│  │      5-3 User实体分析与常见用户系统设计.mp4) I3 e" E- s" Z" `8 w# _( d( J0 M1 P0 B
    │  │      5-4 User对象的写入.mp4
    8 s; e2 H2 M9 K│  │      5-5 Auth0的JWT.mp4' p/ E$ l# X" Z, Y; X# J$ C$ l
    / P4 D( X. ]1 ?9 s9 l│  │      5-6 Auth0生成JWT令牌.mp48 d2 M: ?: F- `, [3 G! u, v
    │  │      5-7 令牌生成测试.mp4
    ; K4 I0 g- S& f9 v│  │      6-1 JWT令牌的校验.mp49 J3 g5 i* T" H; Q+ E/ D/ e  s; P9 b* w7 q3 Q3 t! t) l# ?! a8 g
    │  │      6-2 Filter、Interceptor、AOP机制的区别于联系.mp4) Z9 h% X. H) U. o. \* z" Y
    . [, A( p) v+ S│  │      6-3 PermissionInterceptor的逻辑分析.mp49 a& a; }- A5 M9 c1 L* }6 g* K0 F) V& S3 w7 }9 Q* N
    │  │      6-4 获取Bearer Token.mp4  P; F0 x% ~8 [- X" T2 A$ x" O: o( z" K
    │  │      6-5 hasPermisson权限核查.mp40 ~) L- t/ K* F7 Y- S8 s9 Q! f# X! A0 ?8 r
    │  │      6-6 注册Interceptor.mp4+ w" z# e4 `. S" ^6 F$ L' u4 I; H) ~
    │  │      6-7 数组越界问题(修复).mp4- `' y- H+ t/ z& |* T" J' A' k: H
    │  │      6-8 VerifyToken接口.mp4) H1 Q2 l. w. d. T
    5 i7 O- v0 P) H8 [! Q" t│  │      * A! ?+ f3 W( ^2 d  B) S
    $ Q( V) F' W2 R│  ├─18+订单、延迟支付与库存归还
    6 L; S& r1 j4 {8 A│  │      1-1 订单校验(12)BO的概念与意义.mp4: n' ]+ U1 N7 B
    │  │      1-2 订单校验(13)全场券的计算.mp4
    4 ]3 g/ |% L9 R│  │      1-3 订单校验(14)reduce函数的巧妙应用.mp4
    . S9 e0 T  ?. v  |│  │      1-4 订单校验(15)完成优惠券最终校验.mp44 |& p8 d6 s9 z$ v
    │  │      1-5 订单校验(16)OrderChecker对象.mp4; \" n; h$ M# h) Z
    │  │      1-6 订单校验(17)OrderChecker校验项分析.mp46 Z/ M1 h" W! x6 ^7 g% \3 L. j+ W
    8 a0 b% p; p2 R3 e# F2 G│  │      1-7 订单校验(18)最大购买数量、售罄、超卖检验.mp4
    7 l, @1 s4 u& t% H8 e& V│  │      1-8 订单校验(19)如何让Spring调用Bean的有参构造函数?.mp4- a8 f% a9 t) y" [, l' `; }% u0 k% X- y$ |- J1 k2 {
    │  │      1-9 订单校验(20)校验CouponChecker.mp4
    " E2 {. H1 b1 N3 t9 O& S, y│  │      1-10 订单校验(21)OrderChecker作为数据提供者.mp4
    % e. \& `  j  z( @│  │      1-11 订单校验(22)订单校验总结与探讨.mp4& U6 I  Q$ E5 h% |& e+ q/ m$ f, |& Y4 H. u, l" D' k! S" J
    │  │      2-1 下单逻辑(1)谈订单号的特点与注意事项.mp4
    ( Y7 k- [) g! k/ s│  │      2-2 下单逻辑(2)创建订单.mp4  ^. r5 J1 A% ?4 ?
    9 {9 Z+ B: b4 l6 e7 G! X" C, l│  │      2-3 下单逻辑(3)订单的五种状态.mp47 \4 D/ L$ k6 H. J* p" K  c5 z1 s# m! b, w9 X2 W
    │  │      3-1 库存扣减(1)乱序思维.mp4% k$ E( [- N9 g/ y/ c# ^6 _7 X' ]( l
    │  │      3-2 库存扣减(2)不能SQL1查询SQL2减除库存.mp4! W' G) Y$ H* \" X5 I$ r, s
    8 F' j' u) z) B" u│  │      3-3 库存扣减(3)Java锁、悲观锁的解决方案探讨.mp4, j* d1 |, U% k6 e7 Z+ O
    : |" i+ a( l% D' P0 L" i│  │      3-4 库存扣减(4)乐观锁的应用.mp4
    ) ?" Z' k8 Q7 W' g│  │      3-5 优惠券核销(1).mp4& g& g" J! ]" }
    0 B6 f: n0 k5 U0 ~│  │      3-6 优惠券核销(2).mp42 B. s- _8 @3 @- b( h! ?7 I6 T! Z8 O6 i% d0 W
    │  │      3-7 测试下单.mp4
    ; X3 n* h0 Z3 ?5 l$ |│  │      4-1 订单状态查询(1).mp49 F6 v6 h3 Y- i2 {6 r3 H" w7 e  p$ u% ^( J. d) Q# d* t8 I
    │  │      4-2 订单状态查询(2)订单支付过期状态的不可信.mp4
    / H- R8 y* U" B: u! f* x│  │      4-3 订单状态查询(3)追加PlacedTime下单时间和ExpiredTime过期时间.mp44 Y) K2 s; ^! T4 t% I7 F0 T  Y2 P- x4 ]- n
    │  │      4-4 订单状态(4)查询待支付订单.mp4
    $ w* q& H' i; H+ ^1 ^( K│  │      4-5 订单状态查询(5)订单状态查询与订单详情查询.mp49 G8 t$ V3 A! P, \+ L
    │  │      % W2 F1 z- X9 w1 B1 r8 ]- }0 y1 P9 ?4 _) r' d* l) M3 C
    │  ├─18.优惠券 、订单与支付系统; \* [+ k# T, }8 n2 M# f
    - c6 D! U9 S/ u│  │      1-1 优惠券系统设计分析.mp4: H; y) h  T4 k9 u! j
    / ~8 }! W% C- {0 g│  │      1-2 Coupon优惠券实体设计.mp46 m  w' n, y3 Z0 h: _9 R9 q
    0 {  e1 B5 m/ j" Q+ ~& L: w8 D│  │      1-3 带有实际业务意义的多对多的第三张表.mp44 X/ x5 p* V# t9 D
    │  │      1-4 优惠券的适用范围限定.mp4- j& T! Z) q) k
    ; T  U. j8 ]$ Y, S│  │      1-5 有效期优惠券的设计思路.mp4* ~/ |" E% i) i" J' {% c- T
    8 q; S, Y! t, e& g  ^4 c; B│  │      1-6 多对多向一对多的转化思维-.mp4
      [! s6 [3 I. d' {, O│  │      1-7 多级属性精简技巧.mp43 s9 j# ]% n+ W; P/ H6 U- [( @* ?( j
    │  │      2-1 根据分类查询所属优惠券接口分析.mp4+ \! a* M) m0 c" ]$ o/ b
    * A; P) r) L' h3 X│  │      2-2 原生SQL的多对多查询.mp4
    0 c7 U6 G: B2 w, Z! Q│  │      2-3 JPQL完成复杂的多表查询.mp4
    " r1 f4 I3 ^2 M) Z1 }) N9 S│  │      2-4 原生SQL语句剖析与JPQL的对比.mp4
    3 ]+ d, o2 P' H8 O$ v│  │      2-5 单表查询、Join与JPA的优势_1.mp4( y. J0 _+ n4 `/ t8 `
    : F( e0 m5 m) {. ~% \( W. @│  │      2-6 查询全场券_1.mp4
    8 z6 L. N1 Y# }  B3 E│  │      3-1 超权问题.mp4" \; o0 Y4 b# R2 j" ~6 h5 j
    8 _1 V0 k0 R. y( P% C1 S│  │      3-2 LocalUser类的设计.mp4( }  p9 d" F5 c- ^0 K: A
    8 u/ w5 {& @1 g2 _4 |│  │      3-3 写入LocalUser.mp46 Z. a0 f1 h6 `) K2 |* L$ [
    │  │      3-4 ThreadLocal与线程安全.mp4' W) Y' l$ Z$ E' B! Q, J! |" z9 M
    │  │      3-5 ThreadLocal资源释放时机.mp49 R" l) @; x2 H$ l" R. Q& \. Q8 K2 r; G. g9 a: q. o2 v& c. ?  I
    │  │      4-1 用户领取优惠券的细节考虑.mp4/ e7 f& n$ `5 |& y  ?/ R: T( b/ J, V+ H* F; [8 I
    │  │      4-2 用户领取优惠券代码编写.mp49 p1 M& q2 d% }( v6 p) [
    ' n  Y8 a" N/ ]5 V! f│  │      4-3 更新成功、删除成功、创建成功的HttpStatusCode值.mp4
    5 }0 T& ^; \0 `1 O3 X5 P│  │      4-4 注意注入到容器里的对象是否是同一个对象.mp4- q. J% r. v& h% G  `; v) k/ B5 T8 K1 U
    │  │      4-5 异步机制下的数据一致性不一定能100%保证.mp43 I7 |( T7 ^6 z. i: _
    5 a% D, s# j4 {│  │      5-1 定时器的解决方案:主动轮询与被动消息触发.mp4  \) o& n9 t3 X" p% k0 s8 @
    │  │      5-2  枚举值向枚举类型转换.mp4- `/ l1 K0 U+ e5 m: C0 c+ D$ r+ Q) d( G" M  s  q9 m
    │  │      5-3 不能以状态枚举来作为优惠券过期的唯一判断标准.mp48 X2 S9 ~: D5 u; P+ q
    │  │      5-4 获取我可用的优惠券(带分类数据).mp4
    2 u0 I; u) F) S│  │      6-1 Order订单表的数据库设计.mp4  q/ o* {" h* r; X
    │  │      6-2 前端提交的Price是不可信的.mp4
    7 a- s* U0 O) L( Z3 T│  │      6-3 订单校验所需要考虑的若干种校验项.mp4
    " p$ c9 S' \$ j/ t: k, J* `│  │      6-4 订单校验(1)获取实时的Sku信息.mp4" k' a+ v& m# B, l8 m+ I, Q
    │  │      6-5 订单校验(2)构建CouponChecker.mp44 i$ V$ R1 A/ ?1 |  p9 \2 J0 b* s$ q7 y/ s
    │  │      6-6 订单校验(3)优惠券过期时间校验.mp4/ d' B' D2 E9 t0 \' f6 [
    . l, ^9 P7 `+ @5 q│  │      6-7 订单校验(4)满减券计算.mp4
    & u/ z; f5 ^( x! ^6 h│  │      6-8 订单校验(5)浮点数价格运算利弊分析.mp4: W+ y8 P* D& V) F4 P. \. I0 [* @8 {% n
    │  │      6-9 订单校验(6)银行家舍去算法.mp4/ U% F/ x5 X+ a$ o3 F
    │  │      6-10 订单校验(7)RoundingMode模式.mp44 R1 s5 E; {3 g, x
    │  │      6-11 订单校验(8)SpringBoot默认注入单例模式所带来的额问题.mp4# X" }4 Z( ~; S( R: ^0 c+ [3 _% `! B% @/ C  I) I
    │  │      6-12 订单校验(9)非SpringBoot托管的Java对象-.mp4! p- D8 y( z+ M. f, _' P
    │  │      6-13 订单校验(10)prototype多例模式的注入方案(ObjectFactory与动态代理).mp46 q6 Q1 |; ^3 _7 B6 t! V8 Z9 D
    │  │      6-14 订单校验(11)价格校验收尾.mp4; C9 {/ d* G$ a4 b' P3 J0 K; f
    │  │      0 H- u' X8 t7 A( a/ [7 s7 g9 E" I& R+ K% W
    │  └─19.微信支付Redis与RocketMQ- D7 Y% L, v3 u5 O- k; X
    │          1-1 微信支付流程分析.mp4
    / v& g! K2 {, L  W: b' }. S│          1-2 订单过期时间的再次校验.mp44 F! N  p/ C2 |1 s9 {, H
    │          1-3 订单是否取消的逻辑判断.mp45 Y0 l' j! U/ [6 k/ B
    │          1-4 微信支付配置类.mp46 w3 V* E1 b, P& V( ]# X  e& U
    ( N/ s) h  q8 p7 ~- C8 x│          1-5 统一下单(预订单)接口参数解析.mp4- X# ~/ n/ P- g# z2 j
    │          1-6 统一下单的常用参数组装.mp44 r* [" P4 t+ B& Y, X6 n) a, y* B: `' G% w: }1 a, |& _; }
    │          1-7 配置微信支付回调API地址.mp41 U0 J  g. S+ |# O6 n0 [9 ^9 O
    . Z9 _- a; K8 A# l1 R$ [│          1-8 更新订单的PrepayId.mp44 M8 f! {+ i4 i7 m: o% w( a0 C7 V% m8 T$ w" I
    │          1-9 微信支付签名计算.mp4  x& N/ ~! H' U" _+ U1 C2 F9 G& w. A% R
    │          2-1 微信支付回调结果WxNotify接收与处理.mp4' ^1 _% m, U! ~/ ~
    │          2-2 从流中读取支付回调结果.mp46 k6 ~& A; h7 f, P, L" F0 X% ~* h( A; G5 y- ~) }- d, a3 t
    │          2-3 更新订单状态Unpaid转为Paid.mp4: ]- p+ d5 H& q% |- x
    │          2-4 订单状态更新的加强判断逻辑.mp4
    ( K6 E1 g5 c$ \│         
    / P& B4 h  i1 c/ X; f2 H├─阶段3:Java CMS后台管理系统-后端开发
    / [/ A9 N  D  h" O0 |& \* X  }( [│  ├─第20周 Lin CMS入门与MyBatis
    3 y8 w* @% [& M, i│  │      1-1 为什么每个项目都需要CMS.mp4/ i1 S) S' V: l* ~& @
    │  │      1-2 CMS动态分配权限是最核心的能力.mp4
    3 S( Q$ Z6 K1 J# S% h│  │      1-3 优秀的Lin CMS.mp4* I4 L6 x5 |9 Z
    5 n  R% z& l- y6 j6 k* ?│  │      1-4 LinCMS的前后端分离.mp4" [1 M# _; ^! M, ^6 n3 f" L- F! S' h6 j/ v5 n
    │  │      1-5 下载Lin CMS SpringBoot的Sleeve版本.mp4: M- b! f  A  W3 q
    3 y9 n# O* E% M# l' o$ G  o│  │      2-1 Lin CMS是工程+SDK的开发框架.mp4
    & ]  A. A7 v1 i# r, ?, A4 W4 u│  │      2-2 导入LinCMS内置数据表.mp4; c& Q( U( o0 s+ G# {  b2 K+ R, B; _8 R# g" `) K
    │  │      2-3 自定义业务的目录组织结构.mp4
      F; m7 g0 n* }) ?# |│  │      2-4 LinCMSVue试运行与前后联调.mp4. p4 c7 [2 T$ n: x4 {
    │  │      2-5 Lin CMS中的三种数据库机制JPA、MyBatis与MyBatisPlus.mp4( K3 w) d) X# b/ u* I; _
    * v7 d( F* w5 k6 ~5 j│  │      3-1 MyBatis的项目目录组织结构.mp4" @4 A; D! k0 r, k
    - q- r3 u+ J" C' u. E5 K! q8 E2 e│  │      3-2 编写第一个MyBatis MapperXML.mp40 U' m3 J) A+ x
    │  │      3-3 Mapper接口与MapperXML的扫描位置.mp4' J) `. M  A  o: r. R
    │  │      3-4 调整代码目录.mp4
    ( L9 c( g6 S+ ?$ W+ Q3 W│  │      3-5 MyBatis的Insert.mp4
    , E9 a$ @% H% {& E2 w5 B│  │      3-6 MyBatis与JPA的对比.mp4# p) {5 v7 ]' A$ Y
    │  │      3-7 MyBatis使用注解编写SQL.mp49 H% H/ E$ m) U- p8 u" \3 p$ L& _" ~
    │  │      
    ' j' _9 e" ?  }* A- s+ \│  ├─第21周 MyBatisPlus入门与进阶- v+ b1 C4 [3 f  U$ w- M* |' f0 v2 N. }  Y* O6 F! }, V. p0 e4 \
    │  │      1-1 MyBatisPlus的BaseMapper(同JPA类似).mp4$ X& I2 ~: q. v# M9 q* Q
    7 C0 Y" s* |0 b; B( m│  │      1-2 前端功能预览与简介.mp49 X( R4 U" Y/ {6 A
    │  │      1-3 分页参数设置与LinCMS的自定义错误消息.mp4. T. v( r: x; G; e) u; v, [8 e( v/ c' ?. T; i5 o) k
    │  │      1-4 MyBatisPlus的ServiceImpl.mp4+ d+ {' U( u" D9 R" c2 a
    │  │      1-5 LinCMS的内置分页器.mp4
    ; e+ k& \5 {3 B/ l; ^3 D│  │      2-1 @NotBlank与@Length注解配合使用.mp4: J/ _6 \* q2 |$ o( }6 V2 [% }7 j* N9 H. K
    │  │      2-2 Update更新Banner.mp4/ K# m" P; _* T7 D, U2 z8 `0 ?6 k' u
    $ C3 }0 c) X3 T( v( Y│  │      2-3 强大的LinCMS内置异常类剖析.mp42 Y- n% k2 C# r2 r6 x& A
    - \5 c4 |8 ^$ w2 n, l│  │      2-4 浅谈为什么你看不懂源码.mp4
    4 j+ l  k4 Z6 k9 g│  │      2-5 UnifyResponseVO的几种快捷返回对象.mp4* W3 f# o: i' i1 m$ L- r' D/ E
    6 K6 G! K6 E6 ~│  │      2-6 LinCMS中的软删除与物理删除.mp4! D. R( Y8 C$ h; f/ K4 @/ j3 d) t- ]/ N5 d' w
    │  │      3-1 从UI交互谈程序员的综合素质.mp4! X" `* M$ }/ s" D/ ]0 U/ v
    3 k, h) p' ~3 |+ W5 F│  │      3-2 连表查询的一种方案:单表查询.mp42 i; X$ e+ n" @- z0 ^* S6 n
    0 f. ?: m0 I6 f: I, C│  │      3-3 MyBatisPlus的QueryWrapper.mp4( u4 n4 u- F6 B/ J. [  B* i
    1 N2 t. f* u9 s│  │      3-4 BO的作用于意义.mp4) `6 a/ ]# h* t" n) K* y/ f; R7 P* z
    │  │      3-5 QueryWrapper的lambada写法.mp4( Q! ?, o2 g2 k8 }8 f) {$ E/ a/ h
    │  │      3-6 灵活的LambadaQueryWrapper.mp4" h/ k5 D; p6 l: Y; v: O
    4 L+ ?" q& R. C. O+ Y6 P8 ]│  │      4-1 LinCMS版本升级探讨.mp4
    $ N, e3 g4 ^; N8 g│  │      4-2 升级到LinCMS Sleeve-0.2版本.mp44 M9 Y: l7 l5 Y+ U: f  ]  m
    , H5 P9 n8 a, h" _% d: f3 u│  │      4-3 LinCMS 0.2版本概述.mp4) p" M7 J1 C2 D0 m% r
    8 x6 r. y0 B% Y0 h  K, f. J* q0 k$ Q│  │      4-4 CodeGenerator快速生成模板.mp4% d2 E9 X4 G0 a5 u/ ^# L1 k
    │  │      4-5 一对多关系的多表是否可复用探讨.mp44 @, j7 |1 j4 w  o; t- D
    - s" N1 z2 h5 @- p( o│  │      4-6 一对多的删除(级联删除)探讨.mp44 [1 U6 v" `2 c& T% A1 U0 w+ r% O
    - Q" D) I! F% w! `4 A: i│  │      4-7  Create新增数据.mp49 D, m$ t# l& a: x
    * V' W5 M1 V/ f! \7 P) l. t│  │      5-1 图片资源与服务器交互全流程解析.mp4% i2 a* L2 n( X" j2 s  {" g* J
    │  │      5-2 LinCMS文件上传系统解析.mp46 d+ {0 a- ]( V9 H, n' ]; `
    │  │      5-3 LinCMS内置文件上传系统演示.mp40 y) F$ w- x. V. X0 H7 h
    │  │      ' [( e5 X( I8 E$ @% B1 o2 G1 T) m1 P& E7 P$ W' \5 |5 k0 V% x: d
    │  ├─第22周 CMS权限、双令牌机制解析* w. ^( W$ d: q3 E
    # S, X* X$ ~2 W# r4 v│  │      1-1 LinCMS权限系统要素.mp4
    6 H+ f) U, i$ [+ w: l│  │      1-2 LinCMS动态权限剖析 (1).mp4! s- Z% q* i9 g0 ?# u0 k! \% ?5 G6 K  a9 p; r' w2 K! h4 t% k2 [
    │  │      1-3 LinCMS权限系统机制(2).mp4
    + w; z; ~" n" m  X8 M$ s* e│  │      1-4 LinCMS权限系统(3)接口的元数据信息.mp42 C3 S" r8 |6 X' N0 f
    / N% |' k% ^1 W, l8 o│  │      1-5 LinCMS权限系统(4)分组权限GroupRequired.mp4
    7 f8 t3 S( }1 i& k* `7 r│  │      1-6 谈字段级别的权限控制方案.mp4# q+ t" t( k: s
    │  │      2-1 Web开发中的双令牌(access_token和refresh_token).mp4- R$ D# d. a# t2 S0 ], k% x# K, o2 U: W- g. h
    │  │      2-2 双令牌(ac_token和re_token)机制全解析.mp4; |! w- F2 u# b9 q8 j
    │  │      2-3 谈JWT令牌安全性的问题.mp4# B$ C6 P* F. n* J; }" c3 e- ]: e  M# N/ h5 I# M5 ^8 }) d
    │  │      2-4 系统日志与行为日志机制解析.mp4& {$ N' o) L# |& C) {: L6 E3 @, a  D* z* @- p3 s. ?5 r9 j3 y
    │  │      3-1 商品管理操作需求分析.mp4/ o2 c- o$ t" s
    │  │      3-2 商品详情数据查询思路分析.mp42 Z! N1 `7 R% P3 d
    │  │      3-3 MyBatis实体映射到DO的意义.mp4+ `8 T! o# K* o; J$ u  r3 A& W& R7 c8 y
    │  │      3-4 MyBatis的复杂多表查询分析.mp41 G* S$ `0 p: c( X& I
    │  │      3-5 Mybatis联表查询(1).mp4! H/ ~0 L9 Z9 `  {
    9 k. \5 x6 ~( T9 `6 z$ D│  │      3-6 MyBatis联表查询(2)带入参数与条件.mp4
    1 v: `3 ?" V5 q8 p% ?│  │      3-7 MyBatis联表查询(3).mp45 Q8 j1 u# H, W1 C, O. i/ n9 v
    │  │      3-8 MyBatis复杂联表查询(4)ResultMap的意义.mp4( I5 W! s: _0 u: d
    & W# @; S7 r" [& t9 j! U│  │      3-9 MyBatis复杂联查(5)混合1对1与1对多查询.mp4# u. p1 ^- C* a
    │  │      3-10 MyBatis关联查询(6)Collection集合映射.mp4; q* I! e& W+ ^3 l9 U% @, r
    8 `- H  A" E5 [) E1 R- M0 x/ P3 K│  │      3-11 MyBatis关联复杂查询(7)自动映射.mp4
    # D, Z0 i8 t. p, X# k│  │      * C' R/ m0 g5 Q- i
    │  └─第23周 MyBatisPlus高级技巧及结束语" u6 `* D) i% \, G( w( F$ E8 }5 Y
    │          1-1 即时搜索的意义.mp4
    ! m) K; k* y& e│          1-2 一行代码一个接口是如何实现的?.mp4$ h& j& X* \( N2 u& b7 ^% t6 J; S% ^1 @" }4 g
    │          1-3 MyBatis多对多查询技巧(1).mp4# _$ H$ T- u5 j! l2 A
    │          1-4 MyBatis多对多表查询技巧(2)善于拆分多对多,简化查询.mp4& j9 P3 w) U' m5 s5 b7 B+ }9 t# v" v8 l
    │          1-5 MyBatis多对多查询(3).mp4& l3 n8 c( g9 l" k! t9 ?: D+ Q3 N0 W  ?: r5 M
    │          2-1 MyBatis插入复杂数据(1)分析SPU的录入难点.mp4
    8 Z3 _* H7 b0 V( b│          2-2 MyBatis插入复杂数据(2).mp4. o3 _) X5 K0 C4 [  Y
    │          2-3 MyBatis插入复杂数据(3)基础校验与业务校验.mp4: J* J1 a% M( I, I5 k+ d4 h
    3 g7 K% d9 d/ V, X5 m, V│          2-4 MyBatis复杂新增(4).mp4! A$ D  V; n; O& ?3 c; o* {' K% D$ D- w8 U1 j
    │          2-5 MyBatis复杂新增(5)MBP的批量插入saveBatch.mp4) q  P  T; W' n- p7 L& S& V+ w% q, t: m
    │          2-6 MyBatis复杂新增(6)测试批量插入.mp4! H% U+ w& ]) z  }+ a
    ' t2 g8 P3 G3 v, {5 B│          2-7 MyBatis复杂新增(7)批量插入Spu详情数据.mp4
    * P8 o7 j  k1 f9 C│          2-8 MyBatis复杂新增(8)直接操作多对多中间表完成新增多对多.mp4* k8 A; `$ S& O4 H8 K+ o
    8 a* S1 T6 L; p1 e& P, C& Y. z│          2-9 三阶段尾声.mp44 W# W, E% P* l5 p+ u% k  W4 }
    0 `+ x$ `/ |! ^' J6 [7 x│         * _4 s$ m& q/ [, n' w& C" M8 X
    ├─阶段4:Vue 构建超好用CMS后台管理系统前端$ ~# E3 f4 V3 x* L
    9 _' Z' |; P2 w1 R& R9 \5 n│  ├─第24周 走进Vue3.0
    7 I9 ]7 j% }* r! `* P5 d- @2 m! p# ^- e│  │      1-1  4阶段Vue3.0更新计划说明.mp4
    1 x- ]& ?9 l9 u* ?' x3 a│  │      1-2 Vue3.0的变化综述.mp4) b6 w2 G9 f4 }2 X$ t- J1 ^1 p
    9 _  Z: f6 f3 i. m" U" t" @1 M│  │      1-3 Vue的一些必备基础与前端开发工程师的基本要求.mp4$ y& N$ W( H, x+ ~9 C  W* {& e5 s+ F+ R4 ?
    │  │      1-4 前端发展的4个阶段.mp4) T  T/ ]7 T9 t2 U6 Q" Q; g
    │  │      1-5 服务端渲染VS前端渲染.mp4  ^1 v8 F+ `: n  L7 {6 l7 x3 s/ Z  T2 O/ M% ]
    │  │      2-1 下载Vue3.0的单文件核心库.mp4. ^% n% Y! P- {; x1 K& {! L2 r1 b1 r# ~0 a  y: a# E) O' i3 e
    │  │      2-2 单文件的Vue与2.xVue的Options风格.mp4% o/ T3 W# L& [% m! H) \! z. l/ B
    - y6 Y5 X  I& i│  │      2-3 第一个Vue3.0的Demo.mp42 a$ e3 q5 h7 s9 i6 k9 v
    │  │      2-4 Vue3的初始模型小结.mp49 n" e2 F( u( q) D( K+ t$ _. V$ B+ ^7 c& y8 V! G
    │  │      2-5 第一个Vue的指令v-text.mp4; R2 v' e; d& I3 \: S5 j0 `0 f* p; [/ {% u+ }1 H$ J8 F
    │  │      2-6 v-html指令.mp47 C7 y; I8 g1 V' [
    │  │      2-7 v-bind指令用于绑定标签的属性.mp4* [; ]1 V4 g) E
    1 r% G- U/ r  n0 M* c│  │      2-8 带入JS表达式进行动态计算.mp4" w4 j5 W8 q9 y" s  V0 V; p: O! G) R7 P3 J1 h
    │  │      2-9 v-on指令监听事件.mp4- {% V, M* o5 L+ `2 b% I
    │  │      2-10 条件渲染之v-if和v-show的选择.mp4' v4 t. k: I9 `# S
    / Y7 O7 t: h# B; l& ~│  │      2-11 多项条件渲染.mp41 i$ w& [1 V: W+ n/ r% C
    │  │      2-12 v-for列表渲染及扩展用法和注意事项.mp4
    2 l# H8 F, d3 B% G; p! Y8 m│  │      6 M. x3 p8 n1 K) g9 P* T8 @, m
    │  ├─第25周 Vue3.0中的响应式对象9 C. n  B& l1 r3 e! Y: ~# U9 f; `7 B  }, X" p& V) @& R
    │  │      1-1 双向数据绑定.mp4
    ( X3 B: b$ I5 u4 @8 _│  │      1-2 Vue3.0的ref包装响应式对象.mp4% T3 B; ?/ s) s8 w% E3 s/ ~7 c; f& ^3 D
    │  │      1-3 双向数据绑定与响应式对象.mp4
    / c) ?2 z( N) q" Y0 T7 V│  │      1-4 Vue3.0的响应式对象使用场景.mp4
    , g# t) i5 a8 e  x: D│  │      2-1 Vue3.0中的watch函数(1).mp4) Z8 U8 w% [- ?' q: D9 Z* y7 @+ g2 R9 v
    │  │      2-2 Vue3中的watch函数(2)基础使用范例.mp4; s+ Y) L: {. {3 K
    ) G# c' `3 S# N- c2 f% R9 d│  │      2-3 Vue3中watch函数(3)高级用法-监听reactive对象.mp4
    2 X0 [1 i' A% x/ G4 b7 P│  │      2-4 Vue3中的watch(4)监听reactive对象下的单个属性.mp4/ S' ]1 s1 ^0 {9 L5 D! R( ^* I7 u& X7 B' }
    │  │      3-1 watch小结与引入computed技术属性.mp4
    8 x& ?0 U% k, e0 j│  │      3-2 computed函数的基本用法.mp4( S5 x! d; o7 H0 y6 n
    │  │      3-3 watch、computed和普通JS函数的场景和区别.mp4! m# E- j$ c) \4 ^
    0 @" J! W! _8 Q' r5 s) P& X/ ]│  │      3-4 computed的set和get方法.mp4, t: w) e8 M+ S0 j1 T; y
    │  │      
    & w  B0 h# S) C0 S7 _& r2 L+ P. v& s│  ├─第26周 Vue3.0 中的组件
    8 d+ a; W0 l: S1 ~) r# j9 X. i│  │      1-1 Vue3.0中的组件如何编写?.mp4  R5 r; Q' g) S  }3 E6 Q; E% A5 w2 g( f0 v7 V9 J, g' u$ ~
    │  │      1-2 Vue4.xCli创建Vue3项目或者使用Vite创建Vue3项目.mp4
    . r6 J: q6 J4 p. @│  │      1-3 一切皆组件.mp43 i8 C9 J! a/ c; w5 g
    │  │      1-4 VueCli应用程序目录结构解析.mp40 B  T+ b, ]# }$ K6 G
    6 Z  K) i* ^& m6 X6 Y; I# g  e│  │      1-5 Vue里自定义组件的定义与引入.mp41 i' H* V5 i- o0 \# S* y# Z4 n# ?2 T" c+ I: S+ H, I5 }
    │  │      2-1 导入resetcss并显示一张图片.mp43 f+ |" ^6 V' a' \" F0 |
    │  │      2-2 我的第一个Vue3.0自定义组件.mp4% W4 S* @7 A' i+ M8 T% l# F1 J
    3 {' L6 @  f) |5 R4 k│  │      2-3 Vue组建的一些命名规范参考.mp4' R) _6 i; ^; ^2 Y$ a
    6 W& T; M3 s3 W│  │      2-4 如何显示一张assets目录中的图片?.mp4
    9 [; W( G! {) J- R) k! ^│  │      2-5 使用require加载图片.mp4* F& B; L. y7 i  E" R3 Y
    # ]0 X: n4 _/ o& L/ H$ m6 e│  │      2-6 Vue3 setup函数在组件中的使用.mp4
    ; ~* `3 |" [9 h, e  E7 b% B│  │      2-7 props属性传值时需要注意使用v-bind指令确定类型.mp4, C* a% B; k. m. i. Z3 }6 {5 a* g4 @
      B0 Q, a. f# Q  _; `1 u0 o0 y│  │      3-1 vue的单向数据流特性.mp4' M# ~1 P# L( n$ [- ~, O3 H2 o5 f2 s6 S; \" ^
    │  │      3-2 父组件改变导致子组件的变化.mp4
    " \" b* b9 U  r, `! p│  │      3-3 引用类型的修改导致父组件异常.mp4+ K! r+ `* c: I+ s' L  Z6 l
    │  │      / m; [, d; X/ [5 m% u0 y7 r. |# T2 P6 r- ^
    │  ├─第27周 vue-router与vuex
    + H, H& U) x$ Z  v4 w│  │      1-1 自定义组件监听原生事件.mp41 g# j! c' d$ S1 `" P) P! U& j4 N& C5 t5 E7 ~5 b0 t
    │  │      1-2 自定义组件的自定义事件与传参.mp46 b, W2 x' G2 W$ o, {: G
    - W+ A$ {+ x  D9 i5 r* X│  │      1-3 认识前端路由的意义.mp44 N1 D: F2 i# @% O  `  k
    ! @( U; _& G. K) l* X: l8 v3 e+ ~+ S│  │      1-4 初识Vue3.0的Router.mp4
    9 x; c- E( T1 Y8 k1 R│  │      1-5 自己定义一个detail页面路由.mp4- i* }& H2 S3 ^' E5 W  l" F3 Y( b( V5 K( P% {/ g
    │  │      2-1 router-view与router-link.mp4) [2 H) c, ], b* n: F$ H
    │  │      2-2 vue-router编程思想(1).mp4  X  q  y: Q0 W2 u/ _! P( p: D/ a. A
    │  │      2-3 vue-router编程思想(2)入口组件的规范.mp4
    ) v) X" |7 T+ L+ q) O6 e0 c* C│  │      2-4 vue-router编程思想(3)router-view监听事件.mp4! P+ F) u  h) ]' l, A( |0 B5 y, V; M8 @  r/ g/ T; Z
    │  │      2-5 vue-router编程思想(4)组件的切换优先考虑路由而不是条件渲染.mp41 J2 z. j$ y! K& }9 O$ n6 I7 j& R% f3 D/ A; X3 c1 W
    │  │      2-6 默认情况下不能跨父组件通信.mp4
    " [4 W+ |! A/ ^  L│  │      3-1 嵌套路由(1).mp4/ {( K! }$ j2 c' S
    7 C4 P. H9 Q$ M│  │      3-2 嵌套路由(2).mp4
    : A5 K# C, k  p1 D│  │      3-3 多页面跳转change-view.mp47 `) r9 h0 U6 \9 h# `6 ?" z
    6 Y( ]8 I; Y5 J, R( \4 T) j; H│  │      3-4 Vue3中如何获取路由参数.mp4/ g+ E9 e* E' N" X" s" a$ e" h- [; S
    3 a6 F1 y* |% P) i│  │      3-5 Vue3中的路由名称与统一跳转页面逻辑.mp4) q  V0 ]4 D1 M& U( m) w! e( l9 H2 N$ _" g- j# c& ~
    │  │      4-1 为什么需要Vuex全局状态管理.mp47 t7 F$ p6 v( S0 t3 s9 l- V% d: U6 F: M5 u
    │  │      4-2 定义Vuex的全局变量.mp4; Q% S9 \( j' r  ^3 B" D) Z
    4 ^" d* P6 V. X1 y│  │      4-3 Vuex改变全局状态变量并传参的3种方式.mp4* D, b. r& {* q! H; v; h
    6 g3 ]: c9 B) [7 |" e│  │      4-4 计算属性和监听器在Vuex状态改变时的应用.mp4# l3 O2 I5 g# X' o" u  [" c, ?& P1 i' Y
    │  │      4-5 利用全局状态管理变量进行路由切换.mp4$ l7 g  _: e. e- A# c1 Z0 `  ~
    │  │      
    # @/ |3 d# Q, E( \- k, Z2 u│  ├─第28周 动态组件与Vuex全局状态管理* ]; M9 D, Q5 g0 }
    4 L- A' R3 U" Q8 Q4 Q: m- B│  │      1-1 动态组件(1)总结Vue中几种切换视图组件的方案.mp4
    - b1 J7 s: g+ \) [; {│  │      1-2 动态组件(2)初识动态组件.mp4" L& Q3 n' q. h/ L+ f; k3 l. Q. g* R+ [9 {" Z- M
    │  │      1-3 使用keep-alive缓存组件状态.mp4" @- T3 v% Y3 W5 d$ a0 s" M
    6 ]1 `  V1 o; w, }& N- Y│  │      2-1 为什么需要Vuex全局状态管理.mp4
    - Q# g) ~6 Q+ S% {9 W│  │      2-2 定义Vuex的全局变量.mp4
    : I. A. Z# k1 O4 l) v│  │      2-3 Vuex改变全局状态变量并传参的3种方式.mp4$ z6 o. J0 W9 R, ^! d/ b
    │  │      2-4 计算属性和监听器在Vuex状态改变时的应用.mp4$ W. O( T4 I6 C0 @/ r: k& j% _/ b
    │  │      2-5 利用全局状态管理变量进行路由切换.mp4/ `' f# M, ?% |# `3 S6 o* e# h! D: E, J! |; _/ l0 Z* Z" h5 k7 x
    │  │      # }; `- t/ T6 \+ C
    │  ├─第29周 CMS电商管理系统前端搭建. e" R; Z' ?2 w* n
    ! |2 d; S" F2 }! N2 J( n1 _│  │      1-1 实战LinCMSVue介绍.mp4. h! x6 ^& e  x; N% R
    0 a1 U! c) g. P' ?) G( M0 y│  │      1-2 实战的准备工作.mp4$ ^! r: k  m7 r/ J6 D4 E$ U
    │  │      1-3 下载LinCMSVue并前后端运行联调.mp4- v  g# e+ \8 c) K. j6 h& M2 Q
    4 B% q- B& H0 G; S* r│  │      1-4 权限、角色与分组的关系.mp4& R' M8 J2 j  ]) p6 l" V, h% g* E8 r" [
    │  │      1-5 字段级别的细粒度权限探讨.mp4: }2 f! R7 b) v, A! ^; `- ^
    - q% r0 _, f/ C0 V( V. V│  │      2-1 舞台、导航栏、状态栏与reuse-tab.mp42 P( b, ^( {/ @! e: N, M# W1 u. ~1 W: t  a7 F) p; m
    │  │      2-2 LinCMS内置前端菜单与路由配置基础.mp4. u8 m7 H4 v- C0 ]: ]
    │  │      2-3 LinCMS舞台的搭建与配置.mp4$ S: V# ]2 f" \6 U3 ]
    │  │      2-4 LinCMS的一些重要全局配置.mp4  L/ Q$ a7 x3 b2 ~/ H8 E5 J! A# Z- C/ u; `, N
    │  │      3-1 第一个舞台的开发-Banner舞台.mp47 v4 g* g. J; L5 q3 Y1 r6 J9 V/ c. i; ]
    │  │      3-2 第一个elementui的组件-table组件的应用.mp4$ O1 g. q) g, y* Q+ p% |
    │  │      3-3 Table组件的基本属性介绍.mp4
    % S" x. c: _# Y  U$ n│  │      3-4 Vue中的业务模型Model的应用.mp4% K- d" `1 T/ d+ u0 J. m9 G$ a- k3 }) j$ \
    │  │      3-5 使用LinCMSVue内置的axios请求API接口.mp41 b9 y9 a. M9 y; P  H, ~
    │  │      3-6 自定义表格列的内容-显示图片.mp4
    ' ?8 Z/ Y6 \- p% m, Y' L│  │      3-7 CSS预处理语言SCSS、LESS介绍.mp4
    3 P1 J- C. P5 O" @" c7 C│  │      3-8 引用LinCMSVue内置的主题色变量.mp42 o8 ]3 v4 S0 n$ i+ ^- w% I
    " f9 V" f% `% c- H│  │      3-9 表格如何做才好看?.mp44 M1 V8 U: ^+ `  O: {. z
    │  │      3-10 el表格的悬浮ToolTip与一些设计原则.mp49 e/ c/ W8 m6 X1 s  r7 [1 ]3 }% h1 ?- |; F
    │  │      4-1 Banner详情页面的跳转.mp4/ x0 F9 c. I6 y" n4 X2 r+ O/ z( s0 \, x. F& _0 }) a* _
    │  │      4-2 el的form表达与input输入.mp4
    ; r. R! x5 ?9 q( D; d3 N4 e│  │      4-3 返回图标的制作与细节处理.mp4
    3 x: s" E1 f( y# R│  │      4-4 通过自定义事件实现返回.mp4
    & {7 H; U3 J/ ?6 b1 h$ X│  │      4-5 v-permisson指令进行前端权限控制.mp4: l& R8 G% `' U1 `  A: u( z! h6 h. D9 ?6 T, r3 G: o
    │  │      4-6 Vue组件的属性与获取BannerID.mp4: M7 D( A1 s1 P7 L& n
    " z1 p/ v4 B$ t│  │      4-7 在Form表单中展示服务器数据.mp4% Q' M  v' p4 {  q
    4 L. P3 z# x( V  j0 ]$ H│  │      4-8 获取Form表单修改后的数据.mp4& X' d% ~: N. N  V- `7 }! `+ u
    │  │      
    ! f# T+ v5 d' r7 n/ u│  └─第30周 三端联调,全栈最后一公里" L2 S/ g+ N8 Q. J- l5 T9 k. z  W5 [: c" T
    │          1-1 内置upload-imgs多图上传组件(1).mp4* N5 Y% H; `5 e: F  v
    3 \: q0 h& S' ]1 k0 c6 C6 }│          1-2 多图上传图片上传流程(2).mp42 o2 o8 _! x8 t) z4 j( I- J- h+ Z! Y% h( o& h
    │          1-3 如何获取upload-imgs的返回值?通过vue组件的ref来获取.mp4" [, }- {/ k# p
    │          1-4 向服务器提交数据与更新成功通知.mp4! ?7 U" M  d; D7 y3 Z0 e; |9 m
    & h8 J( C( m+ D; @# o│          1-5 删除按钮未显示及空图片报错的bug的修正.mp4
    : _9 {$ @; [$ c, ^8 M! E- I│          1-6 this.$confirm全局消息框的使用逻辑.mp45 O6 g( E) u. L- \7 R" _, }
    │          1-7 删除数据的逻辑处理.mp4' L  j! K. Z& M) S4 j8 @
    │         2 l& j& E; D+ E, v1 i
    └─阶段5:课件资料/ e8 ~. c, G9 s8 r3 D- y9 P/ ~6 h2 X7 H) F- y- p2 o- Z2 F! S" v
        ├─APPKEY
    0 ]2 @* n3 J+ ^+ b! U% F' e* V8 s    │      APPKEY.txt1 Z5 x9 g6 B1 I, l& |4 B; b3 {- G" D& S
        │      data.zip- d, x/ i2 u, T3 @' ?: G8 h
        │      wxshop.rar
    / L3 ]2 O. }9 w) m  k    │      简单接口搭建教程.7z4 c' z$ |. Z- r& R7 M, f
        │      : b) A0 {1 d: m6 K3 g; F. Z; ~0 e" k2 B: l- c) d, F' J) ?
        ├─git/ B8 O5 E$ j3 P5 k2 G7 i9 l1 U
        │      deep-forest-master.zip
    ) K+ i) w+ n- y2 c- l; d' n    │      missyou-master.zip! Q$ N! E- Q  F; u" a! ^2 J% v  ^# Z( H. ~" K1 ~
        │      Play-Algorithms-and-Data-Structures-master.zip9 F% D4 i; Q8 Y9 [/ c8 K* j  c8 z. ~1 l) R7 Z7 U
        │      sleeve-master.zip+ [: [8 T" _' ?( L. M4 I. Z+ r, j) }/ \1 d( b
        │      sleeve-mini-test-master.zip
    + Y! M4 s& ^$ V    │      sparrow-master.zip2 @8 B! A; ]. H6 S. O/ {2 Y
      j# O" E- Q$ ^/ d5 b5 n0 B0 O    │      & @* p+ [' v9 X# f0 D4 u+ c+ c& {; {! [3 S
        └─资料
    2 \9 X4 t8 I3 d6 F& b5 s            7七月的风袖-sketch.psd) t: `; z. f  z- H. [7 H: C0 f
                app.json2 v5 X5 C' i! S% P; ~
                Java 8实战.pdf; W* \: l! K1 _- @- J  G+ E8 e$ i% }5 [
                Java核心技术 卷1 基础知识 原书第10版.pdf
    * [# ^7 g0 s  C            Java核心技术 卷2 高级特性 原书第10版.pdf
    * F( N" g5 A' d$ Y            lin-ui-ts.rar
    7 z# m; D! }; a            LunacySetup.exe
    6 O4 L& l) k& N( e$ P% r* B8 ]            MaxHeapDemo.zip
    0 Q3 K0 }/ q9 s+ o2 Q. e7 n            navicat112_premium_cs_x64.exe: W& B! ?- a8 f, N3 X# _( X5 X# a) M; ?$ w
                navicat12112pre.zip
    6 F8 _" \/ V1 @            navicatpre1212500.zip* @- d* U8 r) r
    3 w9 N' |: e) b) Y: N* d- _            PatchNavicat.exe
    ; |5 S' v3 o1 b& g: u' Y            sku.gif: o! L0 Z5 ]8 L2 ~" m
    0 o" E# Y% U: |# e$ G7 J            sleeve-master.zip" W3 p! K* ~/ d8 t3 z) W6 O% K% ~
                wecharCode.jar! W+ b% \# f/ r/ i8 h0 c( y
                字节面经.md
    9 P# {3 B1 [$ |' x' u9 ]* d            研发笔试题目-V5.0.docx
    8 o5 `, P* ?* p: v3 s' G0 r/ g            说明.txt: }" H9 W) Y# H│  课表.pdf# }, S+ I! ?8 a' B2 A! o
    6 k, ~0 F, G* q/ t8 d% n│  7 S& c9 w+ s8 z) L" J
    9 Z7 w  R2 ^+ m. j' c/ k4 z├─阶段1:小程序高级电商前端- s4 x1 o! a+ r  r6 }: j
    7 ^7 t/ Z& b( O2 H7 Q! ?( u  C│  ├─01.走进Web全栈工程师
    & B4 y' n0 Z4 v) U: H" `, X│  │      1-1 Java全栈序章.mp45 o7 L  @; s( M  t0 I6 N  B
    │  │      1-2 长期课程规划与前置要求.mp40 Q3 G) a; Q1 P, ~- F$ B/ ?: ]6 M
    ! E, K) }9 n9 f5 |: b3 g│  │      1-3 appkey申请、课程免费补充资料.mp4
    + l; |2 E) r  x2 ~* g│  │      1-4 临时补充:关于appkey的申请(重要).mp4+ T6 d8 h3 A5 N- n  p$ |8 _  V* N5 N1 N# d; p; S' K
    │  │      2-1 第一阶段第一次作业(风袖细节分析).mp40 ?- a; u% R; h; T3 J2 r
    │  │      2-2 小程序注册与新建项目.mp42 F! p8 K/ g4 Q* \$ K# c2 y
    │  │      2-3 开发工具推荐(Vscode或者WebStorm).mp40 z3 u, C7 \; H6 ^; W# O5 A, ~2 d( y+ ~
    │  │      2-4 《风袖》首页布局详尽分析.mp4+ C$ \# Y8 S' q8 }
    0 l  Z; z$ Y3 B& b2 r│  │      2-5 第一阶段第二次作业(LinUI 瀑布流练习).mp4  S; t% R) P6 G# j+ z5 L; w
    │  │      2-6 真实的项目必须是动态的、CMS可控的.mp4" y8 p7 {: H% W6 e
    % }0 X' ?7 A# q( ~7 n  g- a│  │      2-7 WebStorm开发小程序必备设置.mp4% w: h9 J, C. t
    │  │      2-8 调用服务端API获取数据.mp4
    / |: {  U( c% c/ I7 n0 d8 {│  │      2-9 小程序开发前必备配置.mp4* ^4 R5 _6 K0 y, k& y/ J* s/ S7 O! p7 V$ ]* C& ~1 n
    │  │      3-1 配置文件与第一次调用服务端API.mp4, [4 L1 U/ w! a; p  H, r" s% l
    │  │      3-2 业务对象的重要性.mp4; Q8 U" B+ Z7 X8 t& B, f
    │  │      3-3 封装HTTP请求.mp41 u- F7 y/ w/ P+ O# `
    7 b! o* R7 H: b* M, g│  │      3-4 小程序中使用async和await的难点分析.mp4% f. C0 e+ d, M$ L& Y) X* V
    8 A' E& t4 z! U2 \; H│  │      3-5 使用LinUI Promisic让小程序内置API支持Promise.mp4, I7 E- w: o0 G" |
    $ j/ P6 C0 n! g# \" t│  │      3-6 将回调函数全部替换为async和await.mp4
    & e0 a! H- U2 _4 S: M' e│  │      3-7 获取banner数据.mp4' l4 k/ v2 F- u1 Q% P; x( Q8 ?7 a2 l2 h/ ]& m' ]! P# k& M" w% t
    │  │      3-8 Banner轮播图实现与插槽的基本概念.mp4% e( I+ C# m( ~2 V/ k% q2 o
    │  │      3-9 npm的semver语法规则.mp4/ ^8 z1 ?# ^; _' r) p$ `" G- d; V' A
    │  │      3-10 Lin UI安装、主题色配置与按需加载.mp4- C6 h7 T8 }3 G8 a  P8 [6 T( U, m; p+ a' P
    │  │      4-1 LinUI Grid组件构建分类六宫格 (上).mp4! A5 H2 y% a" r: V( Y$ c3 }& Y% _2 a. {2 M
    │  │      4-2 LinUI Grid构建分类六宫格(中).mp45 Q( R1 q3 |6 I0 e3 B# ~( X: s5 ~5 N) U3 A. G6 R1 Z& x
    │  │      4-3 LinUI Grid构建分类六宫格 (下).mp4+ I% D; Z' |* C0 @& ?1 F! B8 f/ l' h, t- x9 ]3 J
    │  │      4-4 组件设计与LinUI使用的几个非常重要的原则.mp4/ r% M5 [  F- `* t* F- r/ Q! k
    │  │      4-5 如果没有明确理由,不要固定高和宽.mp47 t* r0 j2 q# y* @4 ?: z3 b  d3 K  k& R
    │  │      ; _: A! U/ w5 L
    │  ├─02.Lin UI组件库的引入与编程原则0 `  d9 u( K2 p3 s
    │  │      1-1 优惠券的一些基本概念.mp45 z/ j8 V& C; U! b/ t
    │  │      1-2 优惠券入口.mp48 W9 t' t! {) y/ }8 |6 |7 v, l! E9 B5 Z! m
    │  │      1-3 背景颜色到底怎么设置?.mp4
    . M9 J1 [8 N" I" v2 V) c+ Q, j│  │      1-4 页面到底是否应该合并HTTP请求?.mp4
    7 U- n7 @& x+ h│  │      1-5 函数式编程概述.mp4' @+ m# v8 ^3 \8 W5 v9 C8 l( S% ^/ a$ e
    │  │      1-6 第一阶段 第三次作业.mp40 U" w, ]/ k. r, l  @/ u6 b3 |+ U( L( E
    │  │      1-7 类可以保存数据,但对象可以保存状态.mp4! Q' q. _( o' ?& t  t+ G- B
    % \% r+ Z: C* H0 Q│  │      1-8 重构Theme获取.mp48 x8 S( C& |: ^
    * ]/ s/ f$ e8 S) I2 s4 R│  │      1-9 第一阶段第四次作业.mp4" U# v1 n# O7 }9 o0 n/ @
    │  │      2-1 scroll-view组件的灵活应用.mp49 L9 l8 b# t2 i1 E5 ]- |" Y4 [* c5 l8 Y1 ]- u
    │  │      2-2 是不是方法都需要加async和await?.mp46 y- i4 S* c9 e
    │  │      2-3 第一阶段第五次作业.mp4# a/ n: L3 g0 Q) \5 |$ Q. ]
    │  │      2-4 spu-scroll自定义组件 1.mp47 k& L, A$ [  d
    │  │      2-5 Lin UI Price价格组件应用.mp4; Q6 V' I; u# N4 s" b' `- f! K* a
    │  │      
    ( j- m  y; ^  u│  ├─03.热身结束,开启试炼# X; w, S2 q& K& w- L
    8 c, ~3 j# p9 C2 `7 l7 M│  │      1-1 spu-scroll自定义组件2.mp4% a3 w- H& F5 Y7 O) w, B2 o) J
    │  │      1-2 通过scroll-view抽象出的几个css编写原则.mp4  P$ ]9 e# W5 W3 Z4 g# y
    │  │      1-3 WXS与小程序的内核简介.mp43 S0 b* ~& z' g+ x# ]9 G# _. f2 ~$ l7 o# d
    │  │      1-4 WXS与Lin UI Filter的应用.mp4& m# u, }5 u) e" u- C! E3 T
    1 j- U4 p) t2 G8 T│  │      1-5 webstorm的骚操作自定义代码片段.mp4
    * @5 t0 f0 ^& p- W│  │      1-6 自定义组件的边距问题与外部样式类应用.mp4
    8 t! s2 K$ x7 l- ~. c& \# W│  │      1-7 学会抽象来简化数据库表设计.mp43 U1 ]9 H2 A4 Q- \/ y$ p1 B6 O* U) y0 t$ q2 Q8 G
    │  │      1-8 新监听器Observers与hot-list组件.mp4
    $ d% V$ {& u2 m3 H# s+ @, f│  │      1-9 flex布局的灵活应用.mp4
    % P6 w1 {# W: @0 j│  │      1-10 Hover点击态的应用与@import 公共样式表.mp4; ?8 }" {0 G: k1 o& M
    ! B) h0 W2 x  D& \/ a& i' o( @2 Z# n│  │      2-1 组件自定义性的终极方案:抽象节点.mp4: Q$ ?" h; u. g1 P7 \9 o
    │  │      2-2 防抖、截流与分页细节全分析.mp4, d+ N  V/ P! P+ ^$ q) N
    │  │      2-3 Paging对象 一.mp43 J& R" C+ x6 r$ E" T* h; V5 ]8 t9 E
    │  │      2-4 编程原则:多用return提前结束函数,少用else.mp44 O/ x0 R# q- M: X9 E! m) A! ^% e5 ?: E
    │  │      2-5 Paging对象 二.mp4! W# k9 f( G% G& V( I* K' X2 D, k' o9 m8 K1 M. B
    │  │      2-6 Paging对象 三.mp41 n) X' v4 }0 Q1 O+ i- V$ ^
    # ]% |# ~7 T2 s│  │      2-7 第一阶段第六次作业 Sku预研作业.mp4- V0 }8 Z5 V; W  a6 H, R, {- k
    │  │      2-8 Pgaing对象 四.mp4
    $ J  o& X5 o: }5 C% |; m% W6 r│  │      7 @3 q6 u6 ^# t. n+ ^  g
    / Z7 K& r/ r. \9 \│  ├─04.攻克SKU和商品购物车: _5 M% p( ]( v8 I' {* |: r: A
    ( X' V) @7 n3 _$ o│  │      1-1 l-water-flow抽象组件式深入剖析.mp4+ F, g- c0 F. ?7 e7 q+ A$ H) |- G& q4 I* o- [& ]8 H% }; g
    │  │      1-2 Lin UI Tag组件快速构建标签.mp4" z2 B9 E- D3 g3 e; N: o8 o  b  Y. S+ [0 A
    │  │      1-3 折扣价和原价的常见错误逻辑.mp48 |! [) s4 B) i: O# i, X. d
    5 @6 H3 S; W( {4 Y) p4 e│  │      1-4 使用WXS解决复杂的逻辑问题.mp43 p  X6 B: {" J/ E* T( N: C
    │  │      1-5 瀑布流的初步成型.mp40 L1 B4 k" E# S1 ]9 B6 L! `7 m2 r
    │  │      1-6 动态计算图片高和宽.mp4  K" j3 ?$ X( c" p
    : z: ~1 m+ k4 m/ ^- Z: E" Q& G2 f│  │      1-7 Loading的思维逻辑:正在加载其实是一种常驻状态.mp4$ j- ]% O# {0 l7 u# H. f, H2 c
    │  │      1-8 实现页底提示.mp40 ~9 [7 d5 y1 `* {0 a% c
    5 j% ~' ~' r! _  Z: v( J* J│  │      2-1 页面跳转与新机制EventChannel.mp4
    ( i$ B, ~7 }! w/ k) J6 x│  │      2-2 Spu、Sku、规格名和规格值.mp4
    2 W" s% u- }# K: h│  │      2-3 从一个提问谈思考的精神.mp4
    ! i$ U2 @/ ?% N+ V│  │      2-4 调整思维,才能解决复杂的逻辑问题.mp49 }1 X# \' H7 o1 P# \! q( b  H
    │  │      2-5 借助符号化的命名方式思考问题.mp4
    ! y1 K) X& n  O* u$ n# N1 h│  │      2-6 控制中心Realm与栅栏Fence.mp4  D% X: ^- q1 C9 m
    │  │      2-7 fence与fence-group对象.mp4, S- i" O5 A- Z  K
    │  │      3-1 SKU方案整理 一:规格值的提取.mp48 v1 b) b, N  K! n
    │  │      3-2 SKU方案整理 二:核心问题是规格值状态的确定.mp41 `: y3 h; f" u7 c
    % b4 _5 h, z) a  q& M8 _│  │      3-3 用矩阵的思想提取规格值.mp4. k  H6 m% I$ n' F( d* l7 C( R; N; B) t
    │  │      3-4 数学小课堂:矩阵的转置与旋转.mp4. G. g, s  x2 J0 a
    │  │      3-5 矩阵的遍历.mp4
    6 K2 e# j+ O  |. \│  │      3-6 Fence的实例化.mp4) a" U5 S1 L5 \; ]) X9 i
    │  │      3-7 测试Fences.mp4
    : R% E- s$ K6 Y! v5 ?5 W. u3 R│  │      3-8 自己实现矩阵的转置.mp4
    3 `5 r0 [$ M7 _* O│  │      3-9 谈数学、面向对象与编程思维.mp4. \/ v# z4 @! Q
    │  │      3-10 构建Cell对象.mp4: @! j; }$ Y1 l
    │  │        k% ?" p1 P+ P! @. @, {% J0 A# Z& S: y* |4 ]4 o) e9 |
    │  ├─05.SKU核心:规格状态、编码、无货逻辑7 F' K- W) t& X4 @/ ~
    │  │      1-1 SKU串码编号.mp42 U! Y8 ~  s2 t
    " H# P" n9 ?, i, O6 i│  │      1-2 Fence与规格名的对应关系.mp4* a8 C# C9 x( {* v4 k; ]2 Z2 Z9 x) Q
    │  │      1-3 Cell去重.mp4+ o( u8 n+ e, _  @* I  G* g% t$ S; f: F" N1 h& ^
    │  │      1-4 Cell自定义组件.mp4, \! ^- R( e  n1 _8 A3 q
    │  │      1-5 初步完成规格矩阵渲染.mp4; j# P6 S+ F. y3 f  H( v/ X" [; v2 D/ ?% t
    │  │      1-6 SKU算法的难点是确定规格的禁用状态.mp4( r- F* B$ C3 z. g
    # x0 n6 Q8 Z* e, ]│  │      1-7 SKU核心算法剖析 一.mp4  f, W' l  N$ c/ @6 E3 h3 `
    │  │      1-8 SKU核心算法其实就是一句话,我之前已经讲过了.mp47 W7 M) l  K* N1 `4 j0 \4 I7 I
    6 U5 n" e* I. S' e) z│  │      1-9 矩阵列不同规格的问题解答.mp4
    ; U$ d* X$ q7 n: t7 Z$ j│  │      2-1 数学小课堂:排列组合在SKU中的应用.mp4- H+ O5 K) Q) m, P7 _6 s( P! V7 c- |# j- a- a+ M/ l3 ?+ L8 m
    │  │      2-2 SkuCode类拆分Sku可能的路径.mp4' |: P% L; i5 E6 u% G' H* r9 Z
    % |+ g3 j: x5 |/ a% ~│  │      2-3 Combination组合函数.mp40 ?& U( M6 }! V. t* g2 G& ]4 Z
    │  │      2-4 完成PathDict字典.mp4& q: C; F1 M0 p9 `' |0 U
    % Q9 g1 x( {9 W3 f│  │      2-5 Cell的三种状态样式.mp4. _- {& K  ^* `
    │  │      2-6 选中、禁用与可选状态的切换.mp4, @: F9 N# ~9 a& z5 @3 Q5 |9 n* j0 O6 [' E2 j8 C: I5 i. Q
    │  │      2-7 SKU选择的数据流向.mp42 q& {4 o! N- @" z, k0 t' d  d% s' g' G) D6 A
    │  │      2-8 自定义组件事件跨越组件边界(Bubbles与Composed).mp46 i$ d5 P/ S* K
    5 Y' k' K3 `. t# j6 d│  │      2-9 重新渲染矩阵与错误排查推演.mp47 o# P8 \% ?- }! J6 x5 {; E& D
      m. F9 O7 v8 T! p1 {* |$ e) R│  │      2-10 获取Cell的行列号.mp46 {( k, g( l9 L4 W# H
    │  │      2-11 实现Cell的正选和反选.mp4
    1 V/ `* m- v. K( o/ h, _) A& T│  │      3-1 潜在路径PotentialPath分析.mp4: R8 F. W5 `7 u3 P
    │  │      3-2 正选Cell的规律推演.mp4
    3 L( Z! |; |1 O  F│  │      3-3 反选Cell的规律推演.mp46 [- b! o, Z8 Z( C3 S2 z/ |
    │  │      3-4 SkuPending类的职责.mp47 k, y5 ^; F7 H2 W1 D
    1 y9 q, Z; L$ z# [2 ^: i  O│  │      3-5 遍历所有Cell的潜在路径.mp4
    # u: C! v' F) v( Y+ H4 k0 O│  │      3-6 遍历所有Cell的潜在路径 二.mp44 m; m* `6 q0 x! Z! h  Z$ |: u
    │  │      3-7 遍历所有Cell的潜在路径 三.mp44 f+ ~" S- M+ n- F/ t6 x
    │  │      3-8 完成SKU的逻辑选择.mp44 A% }: e3 C/ [2 U9 {' a' O: F+ N
      J: h- A/ J, d9 {│  │      * u- A8 X0 z! J* ?' t* F
    * @+ v+ f& h8 ?│  ├─06.SKU收尾,优惠券、购物车讲解* C) f3 c5 ~, y! h" e+ [% Z
    │  │      1-1 Realm骨架的完善.mp4" X* t  ?" I8 N3 c6 A
    . e9 z3 w, Q+ ?│  │      1-2 默认SKU的概念与意义.mp4( o2 ~1 A4 M* }$ B& _2 E
    6 b5 D" A# ~% Z; N│  │      1-3 将默认SKU拆解后加入到SkuPending中.mp44 E) h" o% @6 h  n- H9 S, V! M- W; T5 b5 h) Q
    │  │      1-4 从两个指标评估循环对性能造成的影响?.mp44 b6 L1 [- z1 H& _
    ! k+ Y: x' {% E! U' I; o7 h│  │      1-5 完成默认规格渲染.mp4
    1 t- `8 P, u1 E' g5 v│  │      1-6 Sku描述数据与规格选择联动 一.mp4
    1 l- [" ~" C4 i' A+ j+ `5 L; f│  │      1-7 无规格商品的概念与意义.mp4
      F8 @9 L8 r" `* ^: y1 V  p3 D4 p│  │      1-8 无规格商品的具体处理流程.mp4
    6 R7 c8 x1 r, |" e# F; w│  │      1-9 规格选择提示的复杂逻辑处理(一).mp4. v$ |; }& p. m# o
    │  │      1-10 规格选择提示的复杂逻辑处理 (二).mp46 X% z3 Y. K- c* s* n$ O% G
    │  │      1-11 性能:setData性能探讨.mp4  e& @, Q4 w7 p: c4 [
    │  │      1-12 规格选择与SKU描述联动 一.mp48 s/ R0 Q) n9 _* U  L6 \
    │  │      1-13 获取code码和确定的SKU.mp4- e4 [8 B# @# m$ k
      m9 U: M9 l7 p1 z│  │      1-14 确定MissingSpecKeys和CurrentSpecValues.mp4, A. ^% p5 B# C  v$ ~" n+ P9 k
    # X- j, v- t9 Y9 e│  │      1-15 确定MissingSpecKeys和CurrentSpecValues 二.mp44 p' {1 R$ ]. L9 [0 f) ]% B0 s
    │  │      1-16 终于完成了SKU,撒花,庆祝~.mp4' c: z1 G$ |5 \' k& `! S- Q$ X  H6 p
    2 @) M" x& L/ T1 Y9 [3 T│  │      2-1 l-counter数量选择器(核心组件).mp47 ~$ \/ k3 Y9 |* X! ?
    │  │      2-2 详解l-counter的数量控制属性.mp48 z' T6 Q3 D; G1 D; ^/ I( v
    │  │      2-3 无货情况分析(操作Counter、默认SKU和无规格).mp4
    6 |: l2 O2 }: A5 U1 l' z5 c4 }8 J│  │      2-4 获取l-counter的选择数量.mp4
    / N5 V% K4 _1 U│  │      2-5 三种触发无货状态的机制 (一).mp4! Z& D/ y5 M7 p& m& d' B
    │  │      2-6 Lin UI l-icon组件快速使用字体图标.mp4
    % {$ g# R1 D, `! E# H) Q) {3 f│  │      2-7 使用iconfont在线字体图标.mp4/ h; ^7 O, ], c% R  P+ b3 J8 V$ }. C6 `( w$ f' E8 [/ V# C9 b8 V
    │  │      2-8 使用l-icon引入自定义字体图标.mp4. ?2 q$ |) g3 r" t
    │  │      2-9 当我们谈编程能力的时候,我们谈的是什么.mp4  J4 C% A& L- t
    ) i  h1 D8 d* k% X9 g│  │      3-1 l-badge组件快速显示角标数字.mp43 }# c+ k9 f  K4 e5 M
    │  │      3-2 使用l-popup从底部弹出Realm.mp4
    / T8 U: ^; c4 A0 K, V│  │      3-3 realm滑动控制适应不同高度.mp45 u' ~- a& U4 [3 a: D1 v8 T; ~" N6 q7 [2 L, S: T' i6 P/ A
    │  │      3-4 优化realm的滚动条.mp4
    ; {) A2 t4 ~2 j8 o' Z│  │      3-5 决定用户立即购买还是加入购物车.mp4( @8 I3 l  C7 \7 o- X
    │  │      3-6 规格的主观性与组合性.mp46 |0 {2 K% r3 z! H6 D5 s
    3 w. }* ?7 G! B' P& S- l6 A- _) S│  │      3-7 可视规格的概念.mp4$ W# j) {# a- m3 {7 O6 j
    - D4 D0 M! E& J; y) g7 p( F. r4 e│  │      3-8 SketchFence可视规格的实现(一).mp4
    6 L# C6 f  \6 o) r* Q/ b│  │      3-9 SketchFence可视规格的实现(二).mp4  z& ~% M2 F/ u$ l% Q# l' z/ z3 X8 ^" f8 ]# w
    │  │      3-10 商品详情页面(一).mp4; ?0 T/ O; v  Y/ g7 k% B. N; @
    1 O! O* G6 N, C9 s; L" a│  │      3-11 商品详情页(二).mp4% ?0 X6 j  H* {  J. O7 Z
    ) _6 H: s9 S! l* [2 i│  │      3-12 商品详情(三)微信开放能力的限制.mp4# `% x8 ?+ n9 X( i" _& O7 v. H, M& A' ?1 @% C
    │  │      3-13 商品详情页(四)l-button解决自定义样式.mp4
    . q, R8 g* }0 d/ a2 a│  │      3-14 商品详情(五)SpecChange事件.mp4% K7 Q* t, r# w" }" U& J" M1 h2 Z# v$ {; C. Z
    │  │      3-15 商品详情(六)完成SpecContainer.mp48 r4 E% r6 y' T3 W' K
    3 j2 p! g" g" @5 O+ \│  │      3-16 一种最笨但有效的查错方法.mp4' O8 j9 V  j/ I
    │  │      3-17 用伪类模拟制表符效果.mp4
    8 c7 F6 D% c3 X3 s) y│  │      3-18 商品详情图展示与隐藏页面滚动条方案.mp4
    # p( r7 @' d) b  e8 G│  │      4-1 分类页面重难点分析.mp4) G: t2 v, t+ x6 R- u& i, ^; \' a# w
    │  │      4-2 使用l-button快速实现搜索按钮.mp4( m7 Y# q1 I) b6 ~+ C" C! P) L6 P6 P( i
    │  │      4-3 欢迎加入Lin UI和Lin CMS开源项目.mp45 n9 Q* c* T, ~8 ?  f0 ^3 d. o% s# ]
    & v. O6 x" N" ~- b1 K│  │      4-4 l-segment组件的高级应用 (一).mp4* H7 G4 R" N5 A
    . q3 k7 y- Q% _, J& Z* q" \% \│  │      4-5 l-segment高级应用(二).mp4
    . X' o/ n, f, u* I1 f# n│  │      4-6 动态计算窗口高度与px与rpx动态转换.mp4; t2 {5 r. }- P* U+ r( Q* |
    , l9 `, L: z. u# U* {& W: i7 G0 J; @│  │      4-7 不同机型上px向rpx的转换.mp4  J' M9 @: [2 d- v
    │  │      4-8 动态计算Detail页面的Scroll-View高度.mp4
    % N: d" f6 \% p│  │      4-9 分类加载的性能与体验优化探讨.mp40 [4 ?0 M2 z) U# y
    & g2 v  |& f% v2 g3 Q│  │      4-10 加载分类数据与默认二级分类数据的确定.mp49 A$ q9 z( U+ ]  P& M( U. m
    / r. w' }3 j$ S* V. x  D│  │      4-11 二级分类的Grid显示(一).mp4* |+ Y# d: {% X4 ~) O
    . R6 q6 r/ ]9 p+ f│  │      4-12 二级分类显示切换.mp4& D8 B/ M' M2 c% D+ g: V; B
    ' U5 Z- p- i' x1 N│  │      4-13 二级分类跳转到Spu集合页面.mp4: K7 G9 Q$ l2 x4 }" [3 Q) d
    4 O) Q' H5 N6 L- @0 J/ X3 I4 ~% p│  │      ) J/ h! A1 E3 c5 D
    │  ├─07.高级电商订单管理开发 与前端项目收尾
    3 V2 a, o+ |4 T* M" d: ?│  │      1-1 搜索页面:l-search-bar搜索输入框的应用.mp40 x8 z7 r; _. g  T# C1 e: D6 c
    │  │      1-2 历史搜索记录类.mp4
    9 \( l5 Q8 g$ x6 M│  │      1-3 数据结构队列在HistoryKeyword中的应用.mp4, @, n- V8 F7 g
    ) J8 i; Z& g8 A0 g2 n. p, j7 a│  │      1-4 设计模式:代理模式在HistoryKeyword中的应用.mp4" H8 d) t* c+ l# N6 a+ Z
    │  │      1-5 JS中的单例模式应用.mp46 ?0 X6 |/ e' ^$ {; V( }9 b, W' l" d; K  q  n
    │  │      1-6 热门关键词与l-tag的选中状态.mp4$ U2 P. X' Q. r! S5 {! H$ H' T2 q) J$ H6 R5 I8 g/ x; G: u5 X0 @
    │  │      1-7 显示搜索结果.mp47 O0 O. T- L4 H# z& ]' e+ T* j0 B" |
    │  │      1-8 二种搜索场景(关键词和标签).mp45 C. M, H/ F: ^! x) A3 f9 f$ D
    │  │      1-9 空数据和空关键词处理.mp47 h( x# k& ^: L8 P3 `; Y+ \' U( p* Y, K& ~
    │  │      1-10 wx.lin的组件调用方式解析.mp4, x  F% \, Y0 x5 l: |5 g' [! g( B, I  ]/ {4 n( d
    │  │      % G- P3 b& ?) u  P5 _0 q0 h8 R* l( d9 U
    │  ├─第7+周 购物车价格同步、优惠券、下单与微信支付+ O$ \" ]9 B8 f3 l
    │  │      1-1 购物车全选操作(1)勾选、取消勾选状态切换.mp4) h. O* n* I- x) F3 Z1 V% I' k5 i: d; R$ h5 X
    │  │      1-2 购物车全选(2)UI、缓存与组件三方的数据一致性.mp4
    , w  ]1 f* K% T( @/ C# g  e/ ?│  │      1-3 购物车全选(3)全选的思考方式.mp4" N/ P4 u7 s# g! C: N' Q
    │  │      1-4 购物车全选(4)onShow时的全选.mp4% D! `* U, y7 L5 n8 Z. H3 u/ g3 Q1 M7 t
    │  │      1-5 购物车全选(5)onDelete和onChecke时的全选改变.mp45 d3 H- m; b' e- K$ q3 t: `+ Z' x$ }
    │  │      2-1 购物车价格合计(1)Calculator类.mp4% g* f( |: J4 {  L. Q
    │  │      2-2 购物车合计(2)计算总价.mp4" j% h, W* V+ I# }( t
    │  │      2-3 购物车合计(3)Counter组件数值浮动.mp4) \& z+ F- m+ o* t, P. Q' }- A5 _4 H9 }
    │  │      2-4 购物车合计(4)JS浮点数不精确的解决方案.mp4
    ( v  H4 C) T( x5 ?│  │      2-5 购物车合计(5)移除与勾选时的合计计算.mp44 ^- [- t5 [% z- h4 K
    1 w8 h" a) R5 g# n. o& h# j│  │      2-6 购物车合计(6)全选价格计算(补充).mp4
    0 G$ N9 ?. c3 J# L. ]: U│  │      3-1 服务器数据同步(1)更新时机问题探讨.mp4
    2 x5 x0 C* f5 _  ^9 h0 L' S│  │      3-2 服务器数据同步(2)获取购物车中的SKU的最新数据.mp4/ ~4 S$ s$ M5 N2 g/ |- {7 Z4 q2 D/ ]2 O: k6 b/ a# x
    │  │      3-3 服务器数据同步(3)同步缓存.mp4' ^5 V8 P5 D, @9 s7 l+ q: ]" m" A8 _
    │  │      3-4 服务器数据同步(3)修正wxkey的警告.mp4
    + ]" q/ Z( }% U│  │      4-1 订单预览(1).mp4
    . G9 x# l* {% C  i* Z% B│  │      4-2 订单预览(2)用户微信收货地址授权流程与原理.mp4
    ' T) X" ?0 d: A- I$ W! v8 _│  │      4-3 收货地址组件(1).mp4. s5 \' }8 r, F, `  H0 W+ y2 s( f2 c5 R9 q
    │  │      4-4 组件授权与API授权的不同机制剖析.mp4' E& H# A: `  o1 J
    │  │      4-5 小程序原生支持Promise.mp4
    9 G6 t$ \0 y3 T& A+ Z2 \( D│  │      4-6 收货地址组件(2)显示用户收货地址.mp4; o/ g# L/ p$ V' c- b0 j+ B5 P! r: ]. L4 a+ I/ G- }
    │  │      4-7  收货地址组件(3)缓存用户地址.mp4: T! N2 Z" S8 {1 s- f9 O
    : J2 O3 K0 k) v6 ~3 u6 |8 a5 r" J/ L│  │      4-8 收货地址组件(4)从用户setting中获取单项授权情况.mp46 R& [* @4 j* X* d" l# c
    │  │      4-9 打开用户的授权配置(先调用Dialog才能触发OpenSetting).mp4
    $ T+ ?# v' K) O│  │      5-1 订单商品预览数据获取.mp46 I; q5 }  n; C0 u2 ?. X  Q
    ! _6 I. H- s, ]7 Q3 B; c│  │      5-2 构建OrderItem模型类.mp4
    # m. c0 y  h; V" b│  │      5-3 再次同步服务端SKU数据.mp4( Z$ a2 W- c5 J' I
    │  │      5-4 OrderItem的校验.mp42 d" t: c% c0 P/ `
    │  │      5-5 Order的基础校验.mp4; \$ h! x7 O4 f" j
    0 k# {" w+ w/ n8 ^4 {7 y│  │      5-6 纯前端课程结束说明.mp43 T" }" q1 m6 O7 q# t% F
    │  │      6-1 优惠券活动入口.mp4
    9 \& i! C0 Z/ B# j9 p│  │      6-2 根据活动名称请求优惠券信息.mp4  m1 x+ `* j! D8 d" N# a
      u. k$ t2 b, h$ M! f│  │      6-3 前端登录与JWT令牌(1).mp43 Q$ ]6 o+ G; ]% t+ c  m% o
    0 E; ~+ B% a- N% o' d│  │      6-4 前端登录与JWT令牌(2)前端携带令牌思路与时机.mp4; N/ l( ]: f8 K' ~2 l% z9 `
    ! M$ h0 v* E+ v6 |& B9 C+ q5 Y│  │      6-5 wx.request未返回Promise的修复.mp44 {7 U8 D) |& d3 |' X
    3 q* n' c, k) M( c│  │      6-6 前端登录与JWT令牌(3)在Http请求中加入BearerToken.mp4
    1 h) x7 X! B2 t  c- T) c│  │      6-7 token无法保证100%有效的问题.mp4% O3 a5 I3 ?) ~, Q! w, q- ]1 q" y9 w
    │  │      6-8 二次重发与防止无限二次重发.mp45 q' @8 c5 z2 e" g' n) a
    ' D3 T( J. H6 K" ~- B│  │      7-1 前端异常处理(1)异常的分类.mp4
    & |# x3 a9 f  U5 {) c│  │      7-2 可复用的Message与定制化Message.mp4
    9 N: h$ f7 x* {6 ~( j& q│  │      7-3 前端Message与Code的重定义.mp4( k" P( X% [( a4 f( H
    │  │      7-4 调用失败的异常处理.mp44 T9 i( w  L1 Z: Z4 S- I  r; T& r8 B& _# c3 v8 N
    │  │      7-5 空数据的情况(单个空数据和列表空数据).mp4$ D+ ~, r9 A! a" O8 o" d6 `
    5 o- {2 M9 n0 M- V! b│  │      7-6 单数据空值的转化处理.mp4$ _" X" q4 X! s  a2 N4 ^5 ~
    │  │      7-7 调用方的个性化异常处理方案.mp49 |. V* h4 X! k- V: |
    - [/ ~3 _% p! o# }- z, n* B│  │      7-8 异常处理的测试.mp4
    ! O  Y% ?9 P# \- `6 w/ X│  │      8-1 优惠券中心的前期工作与状态分析.mp4
    7 |5 |( _/ i8 u│  │      8-2 显示优惠券与Lin UI折叠面板组件.mp49 h! B; ^2 n: L4 z% z( e$ T! {9 j
    . ^+ Y9 S) Q8 [│  │      8-3 优惠券的领取操作逻辑.mp4
    3 F; C- ?3 }- p. `│  │      8-4 二次点击使用优惠券.mp4* F. [' D# k4 ~0 K8 c; a3 R7 P
    ( m; ^3 K& x- I% \; S│  │      8-5 从商品详情领取优惠券逻辑分析.mp40 a% `$ v1 F+ G" ~2 ?7 k- z: \
    │  │      8-6 取当前商品适用的前两张优惠券.mp40 P- Y! ^# R1 `- i6 N: a$ A6 j" U1 _, a
    │  │      8-7 按分类获取全部可用优惠券.mp47 |/ a3 q6 t7 R
    ' y+ h  X9 r$ G3 u% i3 X# _│  │      8-8 获取优惠券及优惠券的适用分类.mp4, d$ ?9 h  {. w7 c6 A
    │  │      8-9 OrderItem的呈现.mp4
      R" P3 x+ K, V4 q# v' J. p2 Q0 S│  │      9-1 Coupon-Picker组件.mp4! q5 V  U# J' b
    * e( Z& j/ l+ S9 t2 f' N│  │      9-2 优惠券的分类使用条件剖析.mp41 R( e4 n9 r# A! O( [4 Z! O, I. L7 y! V) m$ q# ~! N
    │  │      9-3 2次Reduce计算分类总价.mp4
    + G/ e) ~' U8 J2 D│  │      9-4 判断优惠券是否可以使用在当前订单中.mp42 M/ ~0 f0 \) z. h$ }0 c* I/ I
    6 D  @% J  E8 m2 r% f│  │      9-5 优惠券选择的切换逻辑.mp4/ R/ \2 a: u! J! \
    │  │      9-6 优惠券折扣价格计算(1).mp42 d! C! v3 @! `9 C& n7 Z
    │  │      9-7 优惠券价格计算(2)几种舍入算法.mp4! D; w, J8 a; Y0 D2 V
    8 C  p) \+ J1 y  G9 Y# k1 h│  │      9-8 总金额、优惠金额与最终金额的计算.mp4
    / _& y# ~8 S) I9 w4 x  w│  │      10-1 提交订单(1)获取用户所选择的收货地址.mp4$ I1 \, h0 m( b; B2 S8 C6 U  h
    │  │      10-2 向服务器提交订单并取得订单ID号.mp4
    ) {6 I" j. m' [/ u+ E7 C6 p│  │      10-3 订单下单失败的逻辑处理.mp4' |9 a7 D" \2 c) s" w5 O3 e, Q6 l, Y0 U7 X6 k5 z
    │  │      10-4 下单后移除购物车商品.mp4" ?6 j2 {0 _0 B! s
    │  │      10-5 前端拉起微信支付与支付测试.mp44 t8 ]7 Z5 N- m! K
    1 ]4 }- U- ]2 ~5 `. o1 K; U1 _│  │      10-6 订单防重的相关细节设计.mp44 A6 @3 ?2 E* j9 G0 S: e; H1 e3 X6 s; B: ^7 D
    │  │      10-7 支付成功和失败的逻辑判断.mp49 p& T4 `7 k; U& E9 F* A2 E2 q3 p7 U- [- o; g1 I0 I* H+ n
    │  │      10-8 支付成功和失败的跳转逻辑.mp4" ?5 u9 @! w6 T9 g' N4 f) t" O
    │  │      11-1 立即购买的逻辑.mp4& c5 W2 F6 C- J, I' I0 K, e  x: v3 w* u% J+ q: n
    │  │      11-2 我的页面结构分析.mp47 g% r9 [( G5 U3 d  h
    8 c( N" x( t# G6 f+ e) `6 J│  │      11-3 LinUI Avatar组件显示微信头像和昵称.mp4' I4 [5 t& G' t- k1 Z" O& F
    │  │      11-4 全新的获取用户微信信息机制解析.mp4( g; s$ X$ m* @) i4 `
    ! Q! T$ b) V7 {$ F" k8 _0 o( I│  │      11-5 l-badge徽章组件.mp46 @" K. Y3 r1 k7 y. ^7 e. E0 y
    - Q3 E) ]% |/ K$ K) E│  │      11-6 获取各状态订单的数量.mp45 M- w' t' f: z0 S6 s; o4 {& g/ ~$ k7 m; `; C5 B& _. A
    │  │      11-7 LinUI List组件的应用.mp4% Q1 @; S$ t. S0 p, b8 n/ N. M
    │  │      12-1 小程序结束语.mp4
    ) R$ H  J; O- `0 f& a│  │      3 T0 E' ]' N; g$ a2 S- G8 s
    │  └─资料7 Q" M! V7 s: @" t) U. `0 D
    │          sleeve-master.zip2 A4 ?" N9 c. R* d& Y) }9 x% r, _! |) L) b& w- ], @" Q( T! {
    │          8 T. ^) E- s( s2 ], U/ I, n7 k/ N, Q" @: [
    ├─阶段2:Java与SpringBoot部分+ M( W" E1 @; i$ i9 ^
    # S* o3 d& |" ]/ I) P$ W0 I1 ^│  ├─08.初识SpringBoot2 e# \4 \; M7 O) r2 @9 q
    6 |7 G  A6 m9 `! \. m+ j4 `│  │      1-1 第二阶段开篇词.mp4; a$ w6 X( L; D
    / Z; E4 l5 I! w" l. O" `: e│  │      1-2 java web框架的发展历史.mp4) @  [8 [4 X# ]
    │  │      1-3 SpringBoot与面向抽象编程.mp4
    : K( _9 _  a0 k0 U; o│  │      1-4 第二阶段第一次作业:理解IOC与DI(四个要求).mp4. C1 y3 J9 d  N% c( d& h; j
    │  │      2-1 完全搞懂SpringBoot版本号(主、次、增量、发布).mp4' V7 U& R2 K/ m+ j, I- k
    5 s3 u4 f" _# J6 Z. \7 a: x1 e│  │      2-2 JDK版本的选择与安装.mp43 T# S$ j  g1 o" \" m' S% s$ [2 t; p1 Y) z1 U  Y
    │  │      2-3 Java的2种构建工具:Maven与Gradle.mp43 S, X; `, h; q9 ~6 s
    4 Z3 ^7 z. r$ p/ r, j: D│  │      2-4 Maven的作用与安装.mp42 E* z1 {% R7 D, g% B
    │  │      2-5 开发工具使用Idea和三种创建SpringBoot项目的方式.mp48 p' P* a& n* t: Q% S- o, s
    ) L; L+ J3 n1 ^! R. k) l│  │      2-6 使用Spring Initializr初始化SpringBoot应用程序.mp43 P, m9 V5 P0 V1 f* s% {2 M3 z
    │  │      2-7 SpringBoot应用程序的基本目录结构.mp4# \: D. x- u( I2 u0 M* }( s' @, J
    │  │      2-8 POM文件解析与Maven版本踩坑.mp45 ?  Z0 H, @2 h: r
    │  │      3-1 运行我的第一个SpringBoot应用.mp43 W+ _7 z) ]& w2 e+ U
    │  │      3-2 新建API包与控制器.mp47 ^6 u  K" x% W4 N
      G) b' n/ Y" z5 V" A3 K5 M% B. g" a│  │      3-3 使用ResponseBody注解代替ServletResponse.mp4+ d8 \; V* I5 ]7 a# [) Q3 c- C" E0 Q# S; K
    │  │      3-4 SpringBoot热重启配置.mp4' @" x. u1 a, u! j% Z+ ^5 }/ L( }" X# L9 k5 r
    │  │      3-5 几个常用构建RESTFulAPI的注解.mp4: H: t" ^5 ?$ W* \% I% I9 {: U( C
    │  │      3-6 @RestController注解.mp4: P! N2 H3 i1 W  @% ]
    │  │      
    ' T# E- s& R( z' Y! ~│  ├─09.Java编程思想深度理论知识
    5 p( C( v5 J% S( z# k' M│  │      1-1 Java是一个笨重的垃圾语言吗?.mp4
    ' K9 a# x& F  q" ^) f│  │      1-2 SpringBoot为什么有这么多复杂的概念?.mp41 Y8 L2 v$ t: X- Y0 _$ v- B2 v3 [% x" X1 i5 h" x; a0 A+ k4 l3 Y
    │  │      1-3 开闭原则OCP.mp4
    $ @5 Z" f* t, [1 U0 k│  │      1-4 为什么要面向抽象编程.mp4  Z6 J. n+ f! N& I$ a( ~+ }- b# f( |
    │  │      1-5 面向抽象的常见手段:interface、工厂模式与IOC和DI.mp4
    0 a" Y1 t* J, N- F" `6 l: O│  │      2-1 英雄联盟小游戏的最简单版本.mp44 R/ }" f" ?' ]4 L4 s: P* ]8 X5 g8 c# n7 K, V
    │  │      2-2 第一个烂大街的代码风格.mp4
    ( ~" n5 W6 C2 T# o│  │      2-3 使用Interface的抽象风格.mp46 l7 T8 U. N) P4 K$ \
    │  │      2-4 interface统一方法调用,但无法统一实例化.mp4/ S9 S9 p. c( j7 j& ?
    │  │      2-5 抽象的难点在于new对象.mp45 H, p5 O. N2 r8 P' @- b7 l* V, z% C
    │  │      2-6 只有一段代码不负责对象实例化,才能保持稳定.mp4
    % H! B. K* c5 ^/ {! w4 a│  │      2-7 工厂模式分离对象实例化.mp4' s) C4 C, f- F' U6 T3 A
    │  │      2-8 稳定性是相对的,我们需要将不稳定的代码隔离.mp47 L' ]0 [  \( u+ [* _% U5 n
    │  │      2-9 变化是导致代码不稳定的本质原因.mp4* _$ [, Y* V+ E' |# R/ |, L$ d# o% g) z# b
    │  │      2-10 通过反射机制消除所有的变化.mp4
    ( P7 a+ G* C* c+ p│  │      3-1 工厂模式+反射并不是IOC和DI.mp48 C3 C/ [. o! V% _) V
    │  │      3-2 配置文件的变化是允许的,并不违反OCP.mp4* |/ F4 Q8 m1 F
    " s( V" q* F9 ~9 O│  │      3-3 IOC和DI的雏形.mp4, f; C8 W8 [# z% Y. p) e/ a1 l* p% ]9 U
    │  │      3-4 IOC的示例.mp4* g1 H) s& R+ t
    │  │      3-5 为什么引入容器后可以让系统变得稳定?.mp4: x8 n: u* X3 _( S4 w1 @4 z  n; |& E1 k
    │  │      3-6 DIP依赖倒置到底是什么.mp42 ~4 K% m% z0 @" X: i/ ^
    4 y  M5 _5 @( C8 b! [: I' h7 ?6 A│  │      3-7 DI依赖注入的意义.mp43 {4 x; }! v. v  a  G& O% M7 y- O8 K  j% D
    │  │      3-8 依赖注入的原理.mp4  k* G; ^7 X0 R$ `! h6 f7 o) q0 d+ C7 w! ^7 E' r& F' d
    │  │      3-9 容器的作用是在装配对象.mp4  |* G6 j0 ?5 j  n& v- _* ^* |& S7 p3 p% ~: G4 {
    │  │      3-10 从DI的角度理解IOC.mp4
    9 e2 a4 g/ V$ I, I│  │      3-11 IOC的终极奥义.mp4' ^1 b4 h% I2 h! x  [0 c: ^
    / E* b/ d  h9 f│  │      : d' \% w6 v: C. b. Y# p$ i! M7 r( u. z1 b- `
    │  ├─10.Spring与SpringBoot理论篇- h/ t- @! r" I$ {
    7 t2 g# ?& ^8 R/ u0 w│  │      1-1 SpringBoot理论篇导学.mp49 `2 S9 ^& @; ~6 u4 j7 J4 D
    │  │      1-2  Spring、SpringMVC与SpringBoot的关系与区别.mp43 Z! A/ W. J' X7 k1 @- D& l) A  ?' U5 L
    │  │      1-3 什么是SpringBoot核心优势-自动配置(作业).mp45 _, H5 m0 s5 c: B8 W" ?4 y/ s: C1 C* Z% z& f6 ^/ u
    │  │      1-4 把握Spring的几个重要目的,提升学习效率.mp4! r7 i, T3 `: Y" C' p3 R5 f' u" o4 y- f& J( I, `& B
    │  │      2-1 SpringBoot最基础的编程模式@Component+@Autowired.mp4, `3 `0 x- ]  ^9 w  B8 h
    , e  `  M' {$ y│  │      2-2 Stereotype Annotations 模式注解.mp4) |  N. G" S! c. L3 _# G' k" x
    │  │      2-3 Spring的实例化和依赖注入时机与延迟实例化.mp43 w1 L7 I2 r; E9 N1 g0 }7 ~* H  K% ^* Q
    │  │      2-4 成员变量注入、Setter注入与构造注入.mp46 F% p5 [/ w; l. d; K3 b5 O( F6 _
    │  │      2-5 一个接口多个实现类的处理.mp4. m" o3 _% s3 r
    │  │      2-6 @Autowired按类型注入.mp49 @6 Q4 ?; O: U2 x1 D, G5 u  r
    │  │      2-7 被动推断注入与主动选择注入.mp4% o& l) l9 [3 g8 B9 I' R" r
    9 s2 o% j, L, `- z9 l( B4 ?│  │      2-8 应对的变化的两种方案(策略模式与属性配置).mp4! }* B- h2 Z2 {( \' i5 E9 }
    │  │      3-1 @Configuration配置类.mp4
    5 q* l0 t$ F, [' @5 G$ B│  │      3-2 @Configuration表面意义上的解释.mp4
    / M$ u  A& h! {/ z( v. g3 a7 m│  │      3-3 @Configuration是用来替换bean的xml配置.mp45 w! }6 @, u2 q  O! e/ h
    │  │      3-4 变化最终要被隔离到配置文件中.mp4
    ( M9 ~: ?) v3 B! {│  │      3-5 @Configuation和@Bean的真实作用.mp4' @9 P% E9 F2 j( d7 t. ^% @3 |( x% X* x( P, I' c
    │  │      3-6 深入剖析@Configuration的意义.mp4( B) ?) k! D- X* u. J8 c$ X$ w! i' c, ]
    │  │      3-7 @Configuration是一种编程模式.mp49 ^* S, n: Y9 I
    6 q: n; U4 w  D- B# c│  │      , B' J/ B) ^0 G" h5 ~/ P6 \) G. p8 p/ c% g9 x! B# o# I3 r, Q6 D8 B# T
    │  ├─11.sprinboot的条件注解与配置7 W/ [% `  x0 @$ d7 R& x+ @0 K# N" ^+ ^0 z  \
    │  │      1-1 Bean名称与几种注入方式补遗.mp4( X9 }7 c8 E$ [. ]% u
    │  │      1-2 @ComponentScan包扫描机制.mp43 W% f: q3 f: [% y& x7 k. T& o7 \0 r5 V) V0 s' s9 v  S7 D
    │  │      1-3 策略模式的几种实现方案.mp4! `2 g5 O8 z3 K$ v$ q3 ~
    ( W6 @1 E; K% o* Y│  │      1-4 条件组件@Conditional的基本用法.mp4
    2 d4 q7 B; E& H/ O  k│  │      1-5 Condition接口的ConditionContext参数.mp4# M( a. J  N% V- S7 B; f/ @  C+ i* h* o+ V
    │  │      1-6 成品条件组件@ConditionalOnProperty.mp4
    ' t( ^+ J( w7 Q: L3 e│  │      1-7 @ConditionalOnBean条件注解.mp4/ B: z' Z3 [" \9 |, Q9 `- z( I# ~7 c: ~+ {0 {! g% d
    │  │      2-1 SpringBoot自动配置原理导学.mp4# Z0 @* `1 h1 J7 d$ ]+ ]; I4 \! ~. o9 {2 Y% q; h
    │  │      2-2 @SpringBootApplication注解的理解.mp4+ Y) P, r( ]9 l- F, g
    │  │      2-3 SpringBoot自动装配原理解析.mp4( Z# }3 |  _( y4 Q- N4 [) P( C3 d
    ' y% W9 V( J% Y$ p  m" A│  │      2-4 自己编写一个Spring应用启动类.mp4( W5 l8 t2 X9 E" A; b
    │  │      2-5 @Import 的两种用法.mp4
    2 w1 q3 w8 \) }│  │      2-6 SpringBoot自动装配的spring.factories文件.mp4
    * h& ]7 X- A2 z2 o$ ~. f  h# E│  │      2-7 Java SPI 机制解析.mp43 ~3 j) }# G2 r0 c8 R& @
    │  │      2-8 深度理论课总结.mp4& o# w* \* D# P8 d+ q) A
    │  │      - I* d" `. B* x9 A6 r# v- x9 ^( w
    │  ├─12.Java异常深度剖析4 _3 ?1 g' x9 U; C% h3 O7 c
    │  │      1-1 全局异常处理机制导学.mp46 @% L% ~; `1 l9 ^' w6 b
    │  │      1-2 如何统一捕获异常?.mp4! w; K' g- C+ @, S4 u! \) w8 d0 g. |* O0 ^, f" B1 Y: v) P; r# K
    │  │      1-3 异常分类Error、CheckedException与RunTimeException.mp46 a1 s) d* D( }% \" S/ D' @6 W
    4 E  l& O* }4 n; h8 i│  │      1-4 彻底理解CheckedException和RuntimeException.mp44 ]0 S6 k/ X) H
    │  │      1-5 自定义HTTPException异常类.mp4+ U( _5 V7 i8 D, ?/ ~
    ' f" W: f) @3 Q( ?2 q2 j│  │      1-6 同时监听Exception和HTTPException.mp43 w, W! _9 z# O3 @# U. ]
    │  │      1-7 异常的深度思考和理解.mp45 ^, c1 ?0 V0 j0 C9 _5 i6 X$ Q
    │  │      1-8 在@ExceptionHandler中返回Unify消息.mp4
    & x5 a: ~0 L# C, j│  │      2-1 使用注解修改HTTPStatus.mp4, K  _' E/ a* N8 _
    7 r2 K0 F3 K% i; l│  │      2-2 处理自定义HTTPException.mp4
    4 G2 [9 u/ Y; l# t4 j+ m4 \4 F│  │      2-3 为什么需要将异常信息写在配置文件里.mp45 n$ ^( R: U9 ^, p
    │  │      2-4 自定义配置类管理配置文件.mp48 r' K) H- _  M" B" F
    │  │      2-5 HTTPException的意义.mp49 P0 [* |# r7 x$ T: J" Z4 R
    4 f. B$ H, A' {  ^# [7 |( c6 X2 q│  │      2-6 SpringBoot主动发现机制和思想.mp4
    - A9 w* L& |& v. N  s6 m) q1 N% d│  │      2-7 根据目录结构自动生成路由前缀.mp4  a; M; V# W5 b: e3 ]$ ?- h
    * [, ~. D! D. G  v│  │      2-8 自定义RequestMappingInfo.mp40 F6 A; Q, \+ x( g
    │  │      2-9 通过接口的形式发现类.mp47 K6 [$ C" _9 M' F2 u: k( l8 `: F7 a2 c/ `. k) ?8 l4 x
    │  │      2-10 完成自定义PrefixUrl.mp4% e1 R2 ]6 `# T, ^. `0 i- W% Z7 x2 p; E; ^2 ~* `
    │  │      7 s8 Z/ R; J, c+ x
    1 X( M4 g2 C6 h6 o: J& R│  ├─13.参数校验机制与LomBok工具集的使用9 i  b6 \8 a% Q3 P, Q; Q+ I" O0 Z5 y) J' h: H  |: ~
    │  │      1-1 修改Properties文件的编码解决乱码问题.mp4: R5 h) V# Q$ J& r6 V, G2 B  w+ s
    # i; [( ~# Z% o# ~│  │      1-2 参数校验机制导学.mp4
    - c) L8 d; ~( S4 v+ Y; j, z. P0 {│  │      1-3 获取URL路径中的参数和查询茶树.mp4* j* E) ]5 p) r" \% o1 I  [/ m" |
    * X4 i/ O8 p" i* `& l' V│  │      1-4 数据传输对象DTO的接收.mp4- e+ `& g# c; c# y% W* i$ T8 {4 X
    │  │      1-5 LomBok的基本使用方式.mp41 a8 {" x- E, i2 W8 U$ p
    │  │      1-6 LomBok中关于构造函数的几个注解.mp4" ]: o4 v' ?; k: R
    │  │      1-7 @Builder构造器模式的使用.mp4' h, F- j( N2 [1 A0 t! K9 H
    │  │      1-8 JSR-269与Builder模式的序列化.mp4
    8 X5 ~) c5 [  P: k2 U5 `% ^+ `) V│  │      2-1 使用@Validated注解进行基础参数校验.mp4+ `) Y0 j' G9 i7 ?/ a
    % I. j3 Q6 r. f4 H. p& C9 v8 B$ X│  │      2-2 验证HTTP Body中的参数与级联校验.mp4
    / X$ r$ f7 b. ~│  │      2-3 补充:@Validated和@Valid注解的关系.mp4/ b# m* X& N$ C8 z( A" }5 O
    : V  \0 W( H; y7 [. R│  │      2-4 自定义校验注解.mp4# k$ u# G1 O+ v: b8 n: X
    │  │      2-5 自定义校验注解的关联类(1).mp40 S) v- }( n  X1 J0 l3 S0 p
    + R& l# Z; L7 T* b9 V% e+ j│  │      2-6 获取自定义校验注解的参数.mp4/ K! [5 s; c2 {2 H* t; D$ E- p" b
    │  │      2-7 捕获DTO类的参数校验异常信息.mp4& H+ b1 ~! w8 R2 I$ ?
    9 m: L7 B0 N, ^* _* M│  │      2-8 捕获Url和查询参数的异常.mp4; U1 p$ D0 U0 ]) K# u/ U6 k
    │  │      7 |* J$ I8 t8 p: N/ ^: K( J: W
    │  ├─14.项目分层设计与JPA技术" |, b" ?: x5 v! S) q6 m" @
    : X/ g0 E* w4 h/ n│  │      1-1 JPA导学(新年快乐).mp4
    . z* |1 I+ B, l1 |2 F│  │      1-2 Service业务逻辑层(服务层)的建立.mp47 ]% V) f3 m4 v# s. ?' V1 J( E, h% T2 Z+ G  p0 Q' V- h
    │  │      1-3 层与层之间是否一定要用interface建立关联.mp4
    ! J( ]" t( w% t7 l2 N│  │      1-4 创建数据表的3种主要方式.mp46 L1 j% N: {0 Y6 ?
    │  │      1-5 新建数据库和数据表.mp4) ?! y8 D" c9 `/ l/ Y( K+ ^0 x0 a1 i3 R1 i5 c. y  y
    │  │      1-6 yml格式的配置文件.mp4
    2 }2 {  H; |4 P2 R1 k2 y│  │      1-7 多环境配置文件(profiles)以及启用方式.mp4* n4 a8 ~4 Z: x% F1 t3 j
    │  │      2-1 mysql数据库连接配置.mp4! }! _; Y! p% U, K2 h( g
    │  │      2-2 Maven依赖无法安装的几个解决方案.mp42 B* H2 i5 j% v# k) Q0 i0 i+ [; P
    │  │      2-3 使用ORM的方式生成数据表.mp4
    ' a4 ?1 c6 S3 E│  │      2-4 常用实体类注解与ORM生成表的优劣势浅谈.mp42 M% n; H3 c, e" C4 Q) B7 }3 d* C7 W# T0 p7 O& x/ ?3 h
    │  │      2-5 多对多关系的第三张表探讨(重点).mp4: R' j! y5 a- K5 x
    $ {  T" ~: E* O$ e/ W  C  d- C│  │      2-6 数据库设计步骤及数据库优化原则.mp4
    , A6 }3 _; g  z9 P) L│  │      2-7 实体与实体之间一对多关系配置@oneToMany.mp4& Z8 m& \9 X% T1 }
    ) x! W+ y( w9 c2 T│  │      2-8 指定外键字段与是否需要物理外键.mp4& ?* D: r2 ?! ]. S
    │  │      3-1 JPA的Repository定义.mp4
    * S2 e& b' H7 R+ S% s│  │      3-2 执行Repository查询语句.mp4( K6 ~4 N  e# z1 w1 F* Q1 B/ V2 W4 R+ J* D& @0 Y
    │  │      3-3 懒加载和急加载.mp4: F4 u( w0 P! I, g6 O' q  _4 z" R  s* ~( c+ f
    │  │      3-4 双向一对多配置.mp46 Z8 d5 M6 f& X/ |- C4 w' P" {) ^3 |
    9 U& ^7 a7 V* g- ~1 A0 Y7 ]2 O│  │      3-5 双向一对多的外键配置问题.mp4- }2 Z, C$ {" M$ r# \- V; f1 c* ]6 c' e9 E# ~
    │  │      3-6 多对多关系配置@ManyToMany.mp4$ i4 p( W7 Z2 e0 Z/ n$ z! R  e
    │  │      3-7 单向多对多关系配置与常见问题.mp4/ r' a4 O8 V/ ^- L# Q' Z
    │  │      3-8 双向多对多配置.mp4( m% p3 r# j  D- {
    % j9 v8 m- B; M/ s  B5 @# F│  │      3-9 如何禁止JPA生成物理外键.mp4
    % @0 x; _4 c' ~9 @│  │      2 s; a; t. c. ~5 N0 }. ?: ~; B# z
    9 y, F. F/ h" L2 Z' A│  ├─15.ORM的概念与思维4 M- O9 S5 r  ^! H" M4 H, }2 ~5 Y$ f; d8 q) Z2 l2 b5 L
    │  │      1-1 谈谈ORM的概念、意义与常见误区问题.mp45 w, r: O. C' I% P9 ?& b; u. b
    , s7 Z- @) p/ p  l7 `1 K│  │      1-2 数据库表数据的设计、导入与导出.mp4" B6 t- m( y  D/ S( [- @7 u+ p
    │  │      1-3 项目开发顺序.mp44 K/ D. `5 E$ o, D0 v
    4 d# v* M" X) P' N5 U│  │      1-4 导入项目的SQL文件.mp4) @, f8 ^% m) E- v# ~" ]+ ?6 t' l
    : }2 e* g0 O! q! w  K0 [│  │      1-5 逆向生成Entity.mp4/ ~! o9 C3 M. I7 ~3 h( z: Z, D7 J( O7 `, }$ I
    │  │      1-6 简化实体字段.mp4) v2 ^4 Q& h' z1 `
    2 u9 _  W! S4 Z7 o  Z1 d8 {& ~: |% X│  │      1-7 三个时间字段的说明(create update delete).mp4; |$ K* T8 X& u& o2 E
    6 V! n/ i. L( `) [2 R! Z& \0 ?│  │      1-8 提取BaseEntity基类.mp4& g6 B; l/ t" e4 q7 T- z" A, Q% e2 x
    │  │      2-1 访问Banner接口.mp4
    1 ]8 b% c  P" I! Y│  │      2-2 @MappedSuperClass的作用.mp4
    5 q( C* E$ F4 w, J2 y. }& X2 B│  │      2-3 Jaskson序列化库的重要配置(SNAKE_CASE、时间戳).mp4. n8 Z0 Z2 `8 Q& l
    ' x9 A8 ~4 E+ u/ X" z│  │      2-4 Theme接口开发.mp4
    5 a8 K) E2 `1 P9 t& x5 v  \│  │      2-5 Theme表设计.mp4' e( R! Y+ `- E; e4 D- m% S* \9 W! L
    │  │      2-6 表的列行转换思维.mp4* h. Y& V3 {+ ?
    ( R" B* v; D* C  ^! x│  │      2-7 SPU表设计分析.mp40 F1 w5 X. f6 R( |; R& L0 Y# c
    │  │      2-8 静态资源托管的几种方式.mp4  ^, s+ Y& A, n" z8 K/ |6 W3 ~$ Y! e' I. W: u
    │  │      2-9 SpringBoot访问静态资源.mp4
      _# v+ |& t4 O/ z+ s$ W8 o│  │      3-1 为什么需要提供多个SPU数据的接口?.mp4& C  |; q- Y3 r4 l$ x3 g7 l5 y5 H& M4 `9 A# [# x
    │  │      3-2 Spu实体映射(增补).mp4* x( l* f: X" }& i1 P
    ( R1 k. f& ^& t2 Y! S│  │      3-3 Spu详情数据查询.mp41 B9 W! [3 J* d$ g
    + U4 R+ t% W# N- ^│  │      3-4 查询列表类数据.mp42 Y+ q8 w0 V" `. u
    + }& g  v. X. l6 U3 D3 ?2 a* h4 |│  │      3-5 延迟思考,逐层深入.mp47 O/ p4 m) T3 P1 a
    6 V; j3 C7 f7 f8 |8 t│  │      3-6 数据库多层关系设计思考与冗余字段设计原则.mp49 E5 M4 U; u$ Q6 L
    2 e# j  _5 Q7 T9 g. S│  │      3-7 导航关系的配置原则(需要时才配置).mp4
    ( Q$ o2 n0 H2 G$ n* x│  │      3-8 Latest接口SQL查询分析.mp4/ N" C' N1 W" D( N$ z2 j6 X1 Q6 E* \+ J) Z
    │  │      3-9 VO视图层对象的概念和意义.mp4
    0 ?+ Q4 S% U" x/ N3 e4 v│  │      / d! d" z$ A% o
    │  ├─16.JPA的多种查询规则- O* S8 N" P2 i0 {, P6 B. z8 R$ I+ W  M+ M* _0 b
    │  │      1-1 DozerBeanMapper拷贝属性.mp4) e) j  Q# t. c1 X3 ^
    │  │      1-10 JPA接口命名规则.mp4+ `: N( A9 {5 I# ~/ M7 u
    │  │      1-2 PageRequest.Of方法进行分页参数构建.mp4
    0 X" I5 d& P( {3 n, R3 }$ e│  │      1-3 BO对象与分页参数转换.mp4% h' n3 }* o. i0 T& ^8 H3 z- y4 r7 @3 L+ y  k
    │  │      1-4 Paging分页对象的构建.mp4
    # x& w: J" L* `2 I4 ]( h│  │      1-5 PagingDozer对象的封装.mp4# E# o! ?* a7 {/ ^- ~& i, l
    * o% {  j! F. O( ]│  │      1-6 Paging对象测试与Java的伪泛型缺陷.mp4: T# X5 j9 V0 o; D# {1 r, z
    │  │      1-7 分类表的常见结构设计.mp4# i4 _1 n0 [, s6 k) Y, j: p  \
    │  │      1-8 无限级分类的数据表达方式(自定义协议路径).mp44 z  ~, K9 x, a/ L9 {% i* e) W# J: F3 ]. Q6 f
    │  │      1-9 分类冗余字段设计.mp46 I) [+ L' U. z' `3 o7 Z
    │  │      2-1 Java Bean中可不可以写业务逻辑.mp4
    6 R( m& P( M" a) P/ n) j2 q7 r│  │      2-2 jSR303校验的message模板配置.mp4; I/ `' R  t3 a+ e
    │  │      2-3 规格、规格名与规格值的设计(上).mp4
    4 B1 H; A# o( z│  │      2-4 规格、规格名和规格值的设计(中).mp4
    * P7 N/ E2 t0 J. ?$ p; \! K- Y│  │      2-5 规格、规格名和规格值的设计(下).mp4. Q6 X1 o1 V( e& r: q
    9 ^$ `' A/ [7 d$ P" b1 F  ]. r│  │      3-1 通用泛型映射方案(1).mp4- h6 [5 W# x1 d. B0 h* P( n" [9 B* d- Y0 e' S  v) d# k
    │  │      3-2 通用泛型类映射方案(2).mp4( {1 B2 S2 [9 V: o
    │  │      3-3 单体JSON对象的映射处理(1).mp4
    , P/ H3 N, m$ @│  │      3-4 单体JSON到Map的映射(2).mp42 d/ y/ W+ g- ]& I4 X
    $ w# P! ]) j) F3 P, h0 J│  │      3-5 单体JSON与Map的映射(3).mp4  k1 c( e- a) n, C. d
    │  │      3-6 数组类型JSON与List的映射(4).mp4  R9 w1 [: `4 O$ X' V
    │  │      3-7 谈Java类的内聚性、方法外置的问题.mp4' T- g# d$ b9 o, S% m! G: {' i7 \
    │  │      6 Z2 o: i8 y+ O, h4 e" f: E0 w
    9 _2 }" U, p1 y, x9 e│  ├─17.令牌与权限& H; J5 ^$ w$ n) _& ?) L
    │  │      1-1 Java的泛型是编译期间的而非运行期间.mp48 Y' m8 e1 `: \2 U$ o  S% `) p8 a5 b( K6 z- ]$ \+ m
    │  │      1-2 通用泛型类与强类型转换 (1).mp4
    * F9 p- p( q1 E6 Z│  │      1-3 通用泛型类与List的转换(2).mp42 i! g0 G7 F9 U! e5 k9 M! Z- q& ~/ h& `
    │  │      1-4 更简单的泛型反序列化方法(3).mp4$ ~2 B6 M* k) p+ E5 P# u8 b0 [) l1 d  P. ?6 V- D$ A
    │  │      1-5 方案调整与优化.mp41 X3 P) m0 I" k3 \* Y; X
    : y) d7 ]! h" t7 Z* u$ A* B+ m│  │      1-6 @Where条件查询.mp4; t( I3 i/ V( R- w* Y  B
    │  │      2-1 Category分类业务分析.mp49 M. i3 j0 j2 X5 e
    │  │      2-2 Category接口数据结构分析与探讨.mp49 A- Q% s) ~  g& c
    │  │      2-3 循环序列化的解决方案.mp4) n4 K0 d  f$ Q  l% g3 Z
    │  │      2-4 Java的Stream与Method Reference应用.mp4
    * |! |* t0 G4 }4 t: d, t│  │      2-5 GridCategory接口.mp4- N$ e$ j$ f2 e& T+ q) K; c3 O9 o6 k( _# ~  k: O) c; `9 o( K
    │  │      2-6 Theme业务及模板概念分析.mp49 {, w0 }1 l6 g& h# Q; O& p3 m. h
    ( ]: {! `$ n1 ^$ b6 m4 r3 y6 \0 Y7 ?/ G│  │      2-7 自定义JPQL替代JPA命名方法.mp4& K4 v0 j9 \$ A
    │  │      3-1 Optional的意义与价值.mp4- F) Q( c& ~, Q
    │  │      3-2 SpringBoot中的单元测试.mp4
    5 b2 v# N) l0 V' @│  │      3-3 Optional的精髓.mp4& s4 v# Y  I" z
    ( k7 P0 _, {: o2 y. G│  │      3-4 Optional的经典使用场景、Consumer与Supplier.mp4" r1 E5 t& {/ ^  k9 x
    . w' M) x$ s  h│  │      3-5 Optional的链式操作与Function、Predicate、Filter.mp4( N5 p- l$ P5 N- W, F2 I  P) ?7 v( D% A6 C# H# h
    │  │      4-1 权限、分组与用户的关系探讨.mp4$ x3 g$ d, Y$ a9 _" I$ K
    │  │      4-2 @ScopeLevel注解的机制.mp4  j$ b7 r, s" `, o
    2 T! \# k: U+ g& I8 X│  │      4-3 令牌与微信登录机制.mp4. }3 _8 a+ B4 B" [1 l: X! M
    ; ?5 d3 ?% {0 M8 \- z│  │      4-4 无感知二次登陆问题探讨.mp43 J( `. o% D  T6 K5 w+ K
    ) U7 c  C, p! c  g( N│  │      4-5 getToken接口.mp42 O) |% _6 y6 Z# t9 \: i; P0 Z& T  R- r, N
    │  │      4-6 TokenPassword校验注解.mp40 B9 ?. p0 x( B' B# Y/ M6 p0 ~" R- s; U; b9 J2 Q
    │  │      4-7 错误消息的模板参数.mp4
      H, y$ n, w1 }* y( n│  │      4-8 微信验证服务.mp44 k$ q" A! n( x5 _
    │  │      4-9 Sleeve-Mini小程序测试工具准备.mp42 e' R* f: j0 j6 q8 ]4 z8 I+ t, M- h- B- F% w9 R, t
    │  │      5-1 获取用户OpenId.mp4; X; Y6 o# G7 a
    , J8 `) C1 h/ v│  │      5-2 JWT令牌全流程解析.mp4$ Y( m- w5 \& Z. O
    + I: w9 h! B) e6 u& U│  │      5-3 User实体分析与常见用户系统设计.mp4
    $ r. B; M7 F% p9 y4 }: J│  │      5-4 User对象的写入.mp4; F; [' J2 c0 H* K, G: C7 E& ^# g
    │  │      5-5 Auth0的JWT.mp4' p/ E$ l# X" Z, Y; X# J$ C$ l6 ?2 v4 q! S1 X8 {
    │  │      5-6 Auth0生成JWT令牌.mp47 l: W: J4 p% q; T" ^  t7 g8 t0 c" F- f
    │  │      5-7 令牌生成测试.mp46 T8 _; n( L% s2 E; E* t$ k
    │  │      6-1 JWT令牌的校验.mp49 J3 g5 i* T" H; Q+ E/ D/ e  s; P- B6 ?3 l2 C/ Z% ?7 g* H
    │  │      6-2 Filter、Interceptor、AOP机制的区别于联系.mp4) Z9 h% X. H) U. o. \* z" Y
    9 ]" G" Y3 R! R% N6 \1 L( F3 e│  │      6-3 PermissionInterceptor的逻辑分析.mp49 a& a; }- A5 M9 c1 L3 V8 a+ E, x7 J+ A* A; j& y4 |
    │  │      6-4 获取Bearer Token.mp4  P; F0 x% ~8 [- X" T2 A
    5 H6 F7 q, ?7 V│  │      6-5 hasPermisson权限核查.mp40 ~) L- t/ K* F7 Y- S8 s
    2 j! T% L! i' U7 B│  │      6-6 注册Interceptor.mp4+ w" z# e4 `. S5 n. v; T. H. w2 F9 V% Y
    │  │      6-7 数组越界问题(修复).mp4; Z  H, b4 H" U) u
    │  │      6-8 VerifyToken接口.mp4) H1 Q2 l. w. d. T
      v; {- a0 K8 a│  │      * A! ?+ f3 W( ^2 d  B) S& G% g6 L" X1 o
    │  ├─18+订单、延迟支付与库存归还
    ! x) Y! E4 c4 e; j3 m# m  I│  │      1-1 订单校验(12)BO的概念与意义.mp4) L$ a8 L7 q7 V
    │  │      1-2 订单校验(13)全场券的计算.mp4
    ! V: ?3 D) ]" g/ ^4 a% Z│  │      1-3 订单校验(14)reduce函数的巧妙应用.mp4
    - I: {) v: Z8 f0 E5 P│  │      1-4 订单校验(15)完成优惠券最终校验.mp43 d  a7 z; [1 ?+ L% S& _6 V" M2 m
    │  │      1-5 订单校验(16)OrderChecker对象.mp4
    3 D6 E" _9 [4 o' |& f$ U5 h1 P* |7 U│  │      1-6 订单校验(17)OrderChecker校验项分析.mp46 Z/ M1 h" W! x6 ^7 g% \3 L. j+ W
    : k: `( s$ _# z* k, f1 i9 Z│  │      1-7 订单校验(18)最大购买数量、售罄、超卖检验.mp4
    - k2 B9 E( j* Z% t, W+ m& H│  │      1-8 订单校验(19)如何让Spring调用Bean的有参构造函数?.mp4- a8 f% a9 t) y" [, l' `; }% u0 k
    ; `9 m% y2 S% @8 L│  │      1-9 订单校验(20)校验CouponChecker.mp4
    9 T/ `' n. @* y$ `│  │      1-10 订单校验(21)OrderChecker作为数据提供者.mp4/ j* B% |! C5 G' h
    │  │      1-11 订单校验(22)订单校验总结与探讨.mp4& U6 I  Q$ E5 h% |& e
    * W# H8 {9 M8 Z│  │      2-1 下单逻辑(1)谈订单号的特点与注意事项.mp4
    ' Q( A2 c' f! S! Z3 j1 o3 ]& J│  │      2-2 下单逻辑(2)创建订单.mp4  ^. r5 J1 A% ?4 ?
    - M$ A9 G# s$ s2 g# j7 _3 g- A│  │      2-3 下单逻辑(3)订单的五种状态.mp47 \4 D/ L$ k6 H. J* p" K% B0 y7 ?8 }3 h) O) N1 ]
    │  │      3-1 库存扣减(1)乱序思维.mp40 J3 y9 a( A4 I/ D9 i6 y+ [
    │  │      3-2 库存扣减(2)不能SQL1查询SQL2减除库存.mp4! W' G) Y$ H* \" X5 I$ r, s
    8 F  j, v- F1 [& L" W/ Q6 a- ]3 C│  │      3-3 库存扣减(3)Java锁、悲观锁的解决方案探讨.mp4, j* d1 |, U% k6 e7 Z+ O
    - e: C  _8 O  h* h' t) |; w2 \# `│  │      3-4 库存扣减(4)乐观锁的应用.mp4+ B- ~9 I5 ?: `0 Z1 T. S% E
    │  │      3-5 优惠券核销(1).mp4& g& g" J! ]" }/ ~4 @7 g( k0 d! r0 k
    │  │      3-6 优惠券核销(2).mp42 B. s- _8 @3 @- b( h! ?! b1 R, B: j6 G! J3 m) ^/ R) e
    │  │      3-7 测试下单.mp4
    + H- y# j2 i; P& w│  │      4-1 订单状态查询(1).mp49 F6 v6 h3 Y- i2 {6 r3 H" w7 e: j' _8 w; p* y6 D
    │  │      4-2 订单状态查询(2)订单支付过期状态的不可信.mp4. p! Z/ Z8 F, V
    │  │      4-3 订单状态查询(3)追加PlacedTime下单时间和ExpiredTime过期时间.mp44 Y) K2 s; ^! T4 t% I7 F' b) b8 A0 ^2 o% Q: i) {
    │  │      4-4 订单状态(4)查询待支付订单.mp4
    , ?% K& L/ c" [) T9 R! u8 t% s, J│  │      4-5 订单状态查询(5)订单状态查询与订单详情查询.mp4
    & u! F' X, n* r' l│  │      % W2 F1 z- X9 w1 B1 r8 ]- }0 y
    . C3 S  J4 s' B│  ├─18.优惠券 、订单与支付系统; \* [+ k# T, }8 n2 M# f( o5 m5 A* A( w. X* a" U# I& o
    │  │      1-1 优惠券系统设计分析.mp4: H; y) h  T4 k9 u! j; W( X( w, _: Y. I8 F
    │  │      1-2 Coupon优惠券实体设计.mp46 m  w' n, y3 Z0 h: _9 R9 q
    5 H/ |/ c  E  {2 s' }0 D│  │      1-3 带有实际业务意义的多对多的第三张表.mp4
    ' y# F% r' K5 O0 i) o│  │      1-4 优惠券的适用范围限定.mp4- j& T! Z) q) k
      w- j' }, g, e# Z& P6 u5 }3 i4 M' F│  │      1-5 有效期优惠券的设计思路.mp4* ~/ |" E% i) i" J' {% c- T
    & H* T5 Q2 b; H│  │      1-6 多对多向一对多的转化思维-.mp4  c$ |; y) M; C: K( [
    │  │      1-7 多级属性精简技巧.mp43 s9 j# ]% n+ W; P( N) u$ u+ ?3 ^- L4 h& U
    │  │      2-1 根据分类查询所属优惠券接口分析.mp4+ \! a* M) m0 c" ]$ o/ b) O1 ~+ G2 \/ j% t$ k
    │  │      2-2 原生SQL的多对多查询.mp4+ H6 O% r5 [$ g% R* G# I
    │  │      2-3 JPQL完成复杂的多表查询.mp4
    1 |' m; X8 v; H% U│  │      2-4 原生SQL语句剖析与JPQL的对比.mp4
    " p% u( b( F; p4 ~│  │      2-5 单表查询、Join与JPA的优势_1.mp4( y. J0 _+ n4 `/ t8 `+ R- W, w; E0 w3 ^* H3 {4 \
    │  │      2-6 查询全场券_1.mp4
    % r5 Y8 f. o5 r; J& ]│  │      3-1 超权问题.mp4" \; o0 Y4 b# R2 j" ~6 h5 j2 |2 E2 S9 R  G6 Y9 ^% k
    │  │      3-2 LocalUser类的设计.mp4( }  p9 d" F5 c- ^0 K: A4 ~4 M/ Y5 s" g7 w* o% V: f$ H' M9 n
    │  │      3-3 写入LocalUser.mp4
    * R" \% G) Y$ a+ e* `9 v. ^2 j│  │      3-4 ThreadLocal与线程安全.mp4/ S" I! y7 J# w5 V
    │  │      3-5 ThreadLocal资源释放时机.mp49 R" l) @; x2 H$ l" R. Q& \/ Z" M8 i. ~% w* e0 _7 I% y  A; E1 M
    │  │      4-1 用户领取优惠券的细节考虑.mp4/ e7 f& n$ `5 |& y  ?
    9 ]' y& W' [, N. g  y│  │      4-2 用户领取优惠券代码编写.mp49 p1 M& q2 d% }( v6 p) [
    , J- m, e8 T8 e! s│  │      4-3 更新成功、删除成功、创建成功的HttpStatusCode值.mp4
    6 p( w  H! |$ F( F+ l) {& p│  │      4-4 注意注入到容器里的对象是否是同一个对象.mp4- q. J% r. v& h% G  `9 P8 t& Q7 f6 Y( |1 g4 P6 s
    │  │      4-5 异步机制下的数据一致性不一定能100%保证.mp43 I7 |( T7 ^6 z. i: _
    * @7 G( ~9 W  {3 R7 ^4 n. v% W; {* o│  │      5-1 定时器的解决方案:主动轮询与被动消息触发.mp4
    8 _0 }$ ^  \* ^7 p6 Q7 T9 |* n│  │      5-2  枚举值向枚举类型转换.mp4- `/ l1 K0 U+ e5 m
    . ]& V- V  c4 {/ O│  │      5-3 不能以状态枚举来作为优惠券过期的唯一判断标准.mp4+ X2 ?. D  t0 L+ R
    │  │      5-4 获取我可用的优惠券(带分类数据).mp4
    0 A' e; L. e( `+ ]$ ~, ~3 s│  │      6-1 Order订单表的数据库设计.mp4, D& k2 P: }: F. k2 P/ D9 v
    │  │      6-2 前端提交的Price是不可信的.mp4* R7 a% Z5 f  G0 {5 w- Z# F
    │  │      6-3 订单校验所需要考虑的若干种校验项.mp4% N3 W: R+ j4 C: \3 ]5 ?
    │  │      6-4 订单校验(1)获取实时的Sku信息.mp4* ~( G1 |* r3 ~2 z5 G( w3 M
    │  │      6-5 订单校验(2)构建CouponChecker.mp44 i$ V$ R1 A/ ?1 q; {5 r4 k* Y( ]
    │  │      6-6 订单校验(3)优惠券过期时间校验.mp4/ d' B' D2 E9 t0 \' f6 [
      D" _+ @' \! g1 n3 q) d│  │      6-7 订单校验(4)满减券计算.mp4" |+ R9 w) b6 G% o
    │  │      6-8 订单校验(5)浮点数价格运算利弊分析.mp4: W+ y8 P* D& V) F4 P. \" |% \4 |6 {' `" k! e2 L
    │  │      6-9 订单校验(6)银行家舍去算法.mp4
    / d7 Q" G3 m: o│  │      6-10 订单校验(7)RoundingMode模式.mp4
    * B9 V1 U; `7 S( N& `; m  Q$ \│  │      6-11 订单校验(8)SpringBoot默认注入单例模式所带来的额问题.mp4# X" }4 Z( ~; S( R: ^0 c+ [3 _
    ; {  \+ y2 r  u! w" G│  │      6-12 订单校验(9)非SpringBoot托管的Java对象-.mp45 y, C, k' u9 O% D# K; I/ z) k
    │  │      6-13 订单校验(10)prototype多例模式的注入方案(ObjectFactory与动态代理).mp4$ F! c) [; Z$ q1 X+ [5 d
    │  │      6-14 订单校验(11)价格校验收尾.mp4
    . o, n4 T% C" l│  │      0 H- u' X8 t7 A( a/ [3 g* u& R1 C; U. W) ]
    │  └─19.微信支付Redis与RocketMQ
    $ _  |& F  N0 \  t, L│          1-1 微信支付流程分析.mp41 s0 l- l: t1 V: ]) P1 m5 D5 b8 C7 a. `
    │          1-2 订单过期时间的再次校验.mp46 t6 r( h# d: M" z5 G
    │          1-3 订单是否取消的逻辑判断.mp4
    2 Q( m& C3 Y  u- a│          1-4 微信支付配置类.mp46 w3 V* E1 b, P& V( ]# X  e& U4 A! g. \6 N+ x' \' t1 a
    │          1-5 统一下单(预订单)接口参数解析.mp4
    ! D+ Z) @1 X; [" ~" x│          1-6 统一下单的常用参数组装.mp44 r* [" P4 t+ B& Y, X6 n
    0 z) T2 ]+ l0 [. k│          1-7 配置微信支付回调API地址.mp41 U0 J  g. S+ |# O6 n0 [9 ^9 O. m8 J6 B7 ^# t" C
    │          1-8 更新订单的PrepayId.mp44 M8 f! {+ i4 i7 m* G" L3 n' y% |! ?) y
    │          1-9 微信支付签名计算.mp4  x& N/ ~! H' U7 l1 h7 L& n7 B" z" A9 T# k
    │          2-1 微信支付回调结果WxNotify接收与处理.mp4
    & {7 U) ~3 H5 d  N" ]│          2-2 从流中读取支付回调结果.mp46 k6 ~& A; h7 f, P, L" F0 X% ~, D' D# f, p# q4 G) }
    │          2-3 更新订单状态Unpaid转为Paid.mp4
    ' Q% K  z. f# G* k& q│          2-4 订单状态更新的加强判断逻辑.mp4
    6 T9 D/ Q  A  p4 \$ ?│         
    7 `1 K( Q  b) \! G- I5 K├─阶段3:Java CMS后台管理系统-后端开发
    % i8 {& ]' N' P0 n. H│  ├─第20周 Lin CMS入门与MyBatis
    ; j. W# T; A4 L- B/ {│  │      1-1 为什么每个项目都需要CMS.mp4* ?6 v# k# U! W& W5 x- }
    │  │      1-2 CMS动态分配权限是最核心的能力.mp45 I8 b0 J) X2 I7 d( E/ x
    │  │      1-3 优秀的Lin CMS.mp4* I4 L6 x5 |9 Z
    " T/ V7 M$ C) w│  │      1-4 LinCMS的前后端分离.mp4" [1 M# _; ^! M, ^6 n3 f" L
    ( H' f  U, {1 b( s8 U1 Z│  │      1-5 下载Lin CMS SpringBoot的Sleeve版本.mp4: M- b! f  A  W3 q
    4 O; [# `1 h9 P" K* K% a: Y8 e* }) I│  │      2-1 Lin CMS是工程+SDK的开发框架.mp4
    # E5 B( {; q- i) Z│  │      2-2 导入LinCMS内置数据表.mp4; c& Q( U( o0 s+ G# {2 k% |, l) c% ]" o7 h5 u+ c
    │  │      2-3 自定义业务的目录组织结构.mp47 J5 I7 V/ q2 Y/ F- i& `
    │  │      2-4 LinCMSVue试运行与前后联调.mp4
    9 F! W* M9 S8 B" [1 m* M# O3 e* f, C│  │      2-5 Lin CMS中的三种数据库机制JPA、MyBatis与MyBatisPlus.mp4( K3 w) d) X# b/ u* I; _& n/ U- {, a  i/ Z
    │  │      3-1 MyBatis的项目目录组织结构.mp4" @4 A; D! k0 r, k
    4 F# F9 G" S, {9 K. e│  │      3-2 编写第一个MyBatis MapperXML.mp43 K! m' y: ?- x, b1 A
    │  │      3-3 Mapper接口与MapperXML的扫描位置.mp4
    - l1 N) g' R/ p; p6 O│  │      3-4 调整代码目录.mp4
    ; n; o# N1 j; g0 A* @) M│  │      3-5 MyBatis的Insert.mp4
    / z' E1 G* k$ D% s/ W│  │      3-6 MyBatis与JPA的对比.mp43 m5 ^' C8 U4 l, L+ {
    │  │      3-7 MyBatis使用注解编写SQL.mp49 H% H/ E$ m) U
    " T3 \" @$ H* a$ d) r# b│  │      # ?4 r/ d& x8 n& X9 g/ J0 r- j
    │  ├─第21周 MyBatisPlus入门与进阶- v+ b1 C4 [3 f  U$ w- M* |' f0 v2 N
    $ V5 z% I4 T) Z) c  S# H! k1 p0 h6 ^│  │      1-1 MyBatisPlus的BaseMapper(同JPA类似).mp4$ X& I2 ~: q. v# M9 q* Q; }1 Q3 ~9 w7 q) `  B  v$ M
    │  │      1-2 前端功能预览与简介.mp4
    ' [- L! Z6 O7 m% x( h0 p- S7 l│  │      1-3 分页参数设置与LinCMS的自定义错误消息.mp4. T. v( r: x; G; e) u; v, [
    / A. S; h2 m: S0 a0 D│  │      1-4 MyBatisPlus的ServiceImpl.mp4  `- B* F( }  m- j
    │  │      1-5 LinCMS的内置分页器.mp4% {2 U2 [: n" ^- U9 H8 k" ?  Q; k
    │  │      2-1 @NotBlank与@Length注解配合使用.mp4: J/ _6 \* q2 |$ o( }
    7 v/ [9 {' }$ I' T│  │      2-2 Update更新Banner.mp4/ K# m" P; _* T7 D, U2 z8 `0 ?6 k' u& r2 u6 K; {8 Z" y) J
    │  │      2-3 强大的LinCMS内置异常类剖析.mp42 Y- n% k2 C# r2 r6 x& A
    : t; P! C- M. ]$ `│  │      2-4 浅谈为什么你看不懂源码.mp4
    7 c+ j, k) A4 E1 ?# L│  │      2-5 UnifyResponseVO的几种快捷返回对象.mp4* W3 f# o: i' i1 m$ L- r' D/ E
    & l6 z* f3 t8 J│  │      2-6 LinCMS中的软删除与物理删除.mp4! D. R( Y8 C$ h; f/ K4 @  Z; J- ^; D/ }" u2 n' ~+ b  S( N( G
    │  │      3-1 从UI交互谈程序员的综合素质.mp4! X" `* M$ }/ s" D/ ]0 U/ v
    " t, D3 k' Y$ g  A) C3 |5 v' i│  │      3-2 连表查询的一种方案:单表查询.mp42 i; X$ e+ n" @- z0 ^* S6 n
    2 I; g& F, K% |- T$ A& B+ h3 y│  │      3-3 MyBatisPlus的QueryWrapper.mp4( u4 n4 u- F6 B/ J. [  B* i6 z3 A- ]" f' }# p0 P
    │  │      3-4 BO的作用于意义.mp4) `6 a/ ]# h* t" n- z% V& l" U6 F7 Y" J, @1 I
    │  │      3-5 QueryWrapper的lambada写法.mp4( Q! ?, o2 g2 k6 f* |9 ~+ n) W) p. M' E
    │  │      3-6 灵活的LambadaQueryWrapper.mp4" h/ k5 D; p6 l: Y; v: O
    $ j* T  p  s" a$ O% B- B9 c│  │      4-1 LinCMS版本升级探讨.mp4  @2 C3 U6 p3 ~, x* H9 k+ [
    │  │      4-2 升级到LinCMS Sleeve-0.2版本.mp44 M9 Y: l7 l5 Y+ U: f  ]  m
    ( }; ^. k/ z# r/ y3 P│  │      4-3 LinCMS 0.2版本概述.mp4) p" M7 J1 C2 D0 m% r
    + |5 e5 b3 s/ {% S* |2 E2 v: p│  │      4-4 CodeGenerator快速生成模板.mp4
    % h$ D; x5 B0 s( N& J│  │      4-5 一对多关系的多表是否可复用探讨.mp44 @, j7 |1 j4 w  o; t- D
    + t! z6 n1 {7 R) B% O/ U- a│  │      4-6 一对多的删除(级联删除)探讨.mp44 [1 U6 v" `2 c& T% A1 U0 w+ r% O) m/ k1 `1 u* j/ c
    │  │      4-7  Create新增数据.mp49 D, m$ t# l& a: x3 s) Q; C  E5 }# r; o
    │  │      5-1 图片资源与服务器交互全流程解析.mp4
    ! _: O0 D/ z( `; m# w2 y0 ~│  │      5-2 LinCMS文件上传系统解析.mp4
    # M# c0 q* Y+ Y% `# D│  │      5-3 LinCMS内置文件上传系统演示.mp4# Y  d( V+ M3 w
    │  │      ' [( e5 X( I8 E$ @% B1 o2 G
    0 J( B) o. @$ n$ E: w" X│  ├─第22周 CMS权限、双令牌机制解析* w. ^( W$ d: q3 E
    " m& V' g+ Y  o│  │      1-1 LinCMS权限系统要素.mp4
    $ L& M+ q6 t3 g+ q+ R│  │      1-2 LinCMS动态权限剖析 (1).mp4! s- Z% q* i9 g0 ?# u0 k! \% ?5 G
    ; i, A$ q; c6 t" M+ s+ N+ j# Z6 g│  │      1-3 LinCMS权限系统机制(2).mp49 _1 ]& a! g( S0 C
    │  │      1-4 LinCMS权限系统(3)接口的元数据信息.mp42 C3 S" r8 |6 X' N0 f( [; I. m  \+ v; H7 m
    │  │      1-5 LinCMS权限系统(4)分组权限GroupRequired.mp4
    7 A1 C3 y/ l4 i9 }$ R$ A│  │      1-6 谈字段级别的权限控制方案.mp4+ E! ^- j% n8 u! r0 v8 I6 q+ D3 q
    │  │      2-1 Web开发中的双令牌(access_token和refresh_token).mp4- R$ D# d. a# t2 S0 ], k% x
    , G7 k( F) c& Y8 l7 U│  │      2-2 双令牌(ac_token和re_token)机制全解析.mp40 e. O" ~  c) J; h- @9 @
    │  │      2-3 谈JWT令牌安全性的问题.mp4# B$ C6 P* F. n* J; }" c3 e- ]: e  M
    " K1 q8 d, H& K; g. b9 s$ m) b- A│  │      2-4 系统日志与行为日志机制解析.mp4& {$ N' o) L# |& C) {: L6 E3 @, a
    + B, G& e7 |4 f- d7 ?3 s- t6 A/ D│  │      3-1 商品管理操作需求分析.mp4
    + i7 O; F: Q! S% D│  │      3-2 商品详情数据查询思路分析.mp4
    : ?- W7 X& W0 k+ V8 S! }│  │      3-3 MyBatis实体映射到DO的意义.mp4+ `8 T! o# K* o; J$ u
    ( e3 P2 o& b. ?3 O6 d- Y2 M! |) K│  │      3-4 MyBatis的复杂多表查询分析.mp49 ?( h, {0 J+ O4 j
    │  │      3-5 Mybatis联表查询(1).mp4! H/ ~0 L9 Z9 `  {
    9 X' d8 L4 Q( N7 Z. |│  │      3-6 MyBatis联表查询(2)带入参数与条件.mp4' v6 J0 S: w% P9 d0 i& U
    │  │      3-7 MyBatis联表查询(3).mp4/ A' r* T( s6 w5 i$ ~5 q
    │  │      3-8 MyBatis复杂联表查询(4)ResultMap的意义.mp4( I5 W! s: _0 u: d
    2 i7 n! ]9 u$ O9 s, t! ?│  │      3-9 MyBatis复杂联查(5)混合1对1与1对多查询.mp4
    4 H2 y9 g  i$ K+ V3 Y│  │      3-10 MyBatis关联查询(6)Collection集合映射.mp4; q* I! e& W+ ^3 l9 U% @, r) x* Z5 a% d# r
    │  │      3-11 MyBatis关联复杂查询(7)自动映射.mp4
    ) s. x4 C8 D$ n6 Y& Y2 W! E% i│  │        N% q, G/ `2 A2 a# q
    │  └─第23周 MyBatisPlus高级技巧及结束语
    1 x' r( F0 _/ F/ z" D( ^│          1-1 即时搜索的意义.mp4
    ( M# [' W, D6 n5 E7 V4 ^7 n│          1-2 一行代码一个接口是如何实现的?.mp4$ h& j& X* \( N2 u& b8 E$ j! C# \# H( i' d/ p9 J, R
    │          1-3 MyBatis多对多查询技巧(1).mp4- ], g$ V* w  z( r2 ~7 m& k
    │          1-4 MyBatis多对多表查询技巧(2)善于拆分多对多,简化查询.mp4& j9 P3 w) U' m5 s5 b
    # R. [$ A  U- C) o- B; a│          1-5 MyBatis多对多查询(3).mp4& l3 n8 c( g9 l" k! t
    % s0 K, A6 D. u8 q& a6 n│          2-1 MyBatis插入复杂数据(1)分析SPU的录入难点.mp4- H3 u  M! O# s7 h1 k! _( c# ^
    │          2-2 MyBatis插入复杂数据(2).mp4# O8 z& Q; h$ Q2 R; l% G
    │          2-3 MyBatis插入复杂数据(3)基础校验与业务校验.mp4: J* J1 a% M( I, I5 k+ d4 h1 g- m+ J2 W% n. u
    │          2-4 MyBatis复杂新增(4).mp4! A$ D  V; n; O& ?3 c
    ! W6 g$ Q7 L0 B/ N# Z5 T8 E│          2-5 MyBatis复杂新增(5)MBP的批量插入saveBatch.mp4) q  P  T; W' n- p7 L- J; b6 ]0 _/ p7 {! C, P
    │          2-6 MyBatis复杂新增(6)测试批量插入.mp4! H% U+ w& ]) z  }+ a9 g" P7 h8 ^; x9 x
    │          2-7 MyBatis复杂新增(7)批量插入Spu详情数据.mp4
    6 l% Z  V2 W* @* F5 {6 u! b│          2-8 MyBatis复杂新增(8)直接操作多对多中间表完成新增多对多.mp4* k8 A; `$ S& O4 H8 K+ o
    2 g3 M+ V* j( |  C& ~│          2-9 三阶段尾声.mp44 W# W, E% P* l5 p+ u% k  W4 }" t; o# R" T# A& w+ a. e2 k
    │         9 O, k, Q3 _4 p$ a
    ├─阶段4:Vue 构建超好用CMS后台管理系统前端$ ~# E3 f4 V3 x* L
    : z6 p: X+ }  s5 U│  ├─第24周 走进Vue3.09 N; {( ^% n1 e% g7 x
    │  │      1-1  4阶段Vue3.0更新计划说明.mp4
    & E1 n" \, V, \+ q4 l4 b! S5 `│  │      1-2 Vue3.0的变化综述.mp4) b6 w2 G9 f4 }2 X$ t- J1 ^1 p
    " }& l# @  X" ]│  │      1-3 Vue的一些必备基础与前端开发工程师的基本要求.mp4$ y& N$ W( H, x+ ~9 C, I% C+ e/ D: g3 `
    │  │      1-4 前端发展的4个阶段.mp4, c# B9 j$ K. X  J& k/ V7 T
    │  │      1-5 服务端渲染VS前端渲染.mp4  ^1 v8 F+ `: n  L7 {
    : D" _( p- d& t& ?& L, V3 F9 C│  │      2-1 下载Vue3.0的单文件核心库.mp4. ^% n% Y! P- {; x1 K& {! L2 r# T; R$ u+ L9 i: u' d. O8 j9 z
    │  │      2-2 单文件的Vue与2.xVue的Options风格.mp4% o/ T3 W# L& [% m! H) \! z. l/ B: S; a+ f. i" h" R+ C
    │  │      2-3 第一个Vue3.0的Demo.mp45 V& X/ U, ~* p$ u! U1 U
    │  │      2-4 Vue3的初始模型小结.mp49 n" e2 F( u( q) D( K! h& n4 k5 V3 x
    │  │      2-5 第一个Vue的指令v-text.mp4; R2 v' e; d& I3 \: S5 j0 `
    . [) E, P' D/ J│  │      2-6 v-html指令.mp4! b* E9 H9 U3 g; k! v7 H, A% Y1 I# A3 r
    │  │      2-7 v-bind指令用于绑定标签的属性.mp4* [; ]1 V4 g) E
    ; c4 w: p  }2 \$ N" y9 T│  │      2-8 带入JS表达式进行动态计算.mp4" w4 j5 W8 q9 y" s  V
    3 c7 |/ Y: E; _3 x& {6 L# t3 W│  │      2-9 v-on指令监听事件.mp4
    ! }7 E, I9 g* ^' w, W! p* O│  │      2-10 条件渲染之v-if和v-show的选择.mp4' v4 t. k: I9 `# S* J" b& c" z' s0 d2 }. W
    │  │      2-11 多项条件渲染.mp4
    2 e5 T8 ^5 y4 k) [0 j│  │      2-12 v-for列表渲染及扩展用法和注意事项.mp4) A: \2 g% d$ c
    │  │      
    $ D' N2 I5 {2 `7 r│  ├─第25周 Vue3.0中的响应式对象9 C. n  B& l1 r3 e! Y: ~# U9 f  F3 C5 d4 u+ k) E+ u. Q6 i
    │  │      1-1 双向数据绑定.mp4+ C+ T/ U9 O' k9 Y+ Z% t- A4 B
    │  │      1-2 Vue3.0的ref包装响应式对象.mp4% T3 B; ?/ s) s8 w% E3 s
    . E6 M. A+ x" r* z; h' ]│  │      1-3 双向数据绑定与响应式对象.mp4
    6 ?! F5 ?4 j9 t/ X: h3 J│  │      1-4 Vue3.0的响应式对象使用场景.mp4) R( k# r8 b" g8 ~1 r
    │  │      2-1 Vue3.0中的watch函数(1).mp4) Z8 U8 w% [- ?
    ; f% [2 Y0 q2 {  w│  │      2-2 Vue3中的watch函数(2)基础使用范例.mp4; s+ Y) L: {. {3 K
    8 e9 w  ~0 H8 M7 C) o  o: S( m7 v; c│  │      2-3 Vue3中watch函数(3)高级用法-监听reactive对象.mp4  j7 k$ {! l4 J5 b7 a1 t) p
    │  │      2-4 Vue3中的watch(4)监听reactive对象下的单个属性.mp4/ S' ]1 s1 ^0 {9 L5 D! R
    , v: z- y7 s8 J% H│  │      3-1 watch小结与引入computed技术属性.mp4
    2 X" f* z; Z& b5 S" M* l1 A5 p│  │      3-2 computed函数的基本用法.mp4
    + L8 I5 |" t9 ~1 @; v% _% b│  │      3-3 watch、computed和普通JS函数的场景和区别.mp4! m# E- j$ c) \4 ^- K5 g# u9 Z9 p3 J- D
    │  │      3-4 computed的set和get方法.mp41 T% R6 V4 H4 j2 b1 l: {+ Q
    │  │      
    9 t4 ~6 `& V% y+ @& T7 b9 e│  ├─第26周 Vue3.0 中的组件
    6 H* O4 }" x& V5 a│  │      1-1 Vue3.0中的组件如何编写?.mp4  R5 r; Q' g) S  }3 E6 Q; E3 m6 t. q$ g! {% G
    │  │      1-2 Vue4.xCli创建Vue3项目或者使用Vite创建Vue3项目.mp48 s! u1 c. t/ j' H. D: T& @
    │  │      1-3 一切皆组件.mp4
    / }- L0 W. _8 u' ?│  │      1-4 VueCli应用程序目录结构解析.mp40 B  T+ b, ]# }$ K6 G1 s9 |2 F3 t- _  a2 |
    │  │      1-5 Vue里自定义组件的定义与引入.mp41 i' H* V5 i- o0 \# S* y# Z4 n
    , C3 s- X  C3 D│  │      2-1 导入resetcss并显示一张图片.mp4
    . f5 H- R9 ~3 O│  │      2-2 我的第一个Vue3.0自定义组件.mp4% W4 S* @7 A' i+ M8 T% l# F1 J
    # T- |2 |' r2 {, }8 F│  │      2-3 Vue组建的一些命名规范参考.mp4' R) _6 i; ^; ^2 Y$ a% Y* Z: J# K8 I! f4 p0 O& o
    │  │      2-4 如何显示一张assets目录中的图片?.mp4
    ( S2 ^$ m: o. g- }2 F│  │      2-5 使用require加载图片.mp4* F& B; L. y7 i  E" R3 Y
    ! f0 y6 I/ \9 J4 d│  │      2-6 Vue3 setup函数在组件中的使用.mp4
    0 u' a& Y9 R$ E- ?│  │      2-7 props属性传值时需要注意使用v-bind指令确定类型.mp4, C* a% B; k. m. i. Z3 }6 {5 a* g4 @
      z8 N3 {  N+ q. r5 Y, Y6 K: k│  │      3-1 vue的单向数据流特性.mp4' M# ~1 P# L( n$ [- ~) p, A" |5 V" Z
    │  │      3-2 父组件改变导致子组件的变化.mp4
    4 ~1 E: {! y" A3 A) o│  │      3-3 引用类型的修改导致父组件异常.mp4
    - l5 z1 C2 Y+ C. @% g0 ~; V; t7 w. |* z│  │      / m; [, d; X/ [5 m% u0 y
    + K1 r. W3 z: M* D3 v│  ├─第27周 vue-router与vuex/ ^7 @( m/ y8 P7 m7 l
    │  │      1-1 自定义组件监听原生事件.mp41 g# j! c' d$ S1 `" P
    7 e  I, G/ _3 V2 `2 B0 `/ p) D│  │      1-2 自定义组件的自定义事件与传参.mp46 b, W2 x' G2 W$ o, {: G* H/ ?) O( _* |
    │  │      1-3 认识前端路由的意义.mp44 N1 D: F2 i# @% O  `  k$ R$ A2 x/ ~( a7 k
    │  │      1-4 初识Vue3.0的Router.mp4! A3 y7 @' P% `$ v1 s- A- J8 z
    │  │      1-5 自己定义一个detail页面路由.mp4- i* }& H2 S3 ^' E5 W/ H4 Y  s9 \  z
    │  │      2-1 router-view与router-link.mp4
    % V0 |2 U! B; {; f2 Z/ A│  │      2-2 vue-router编程思想(1).mp4  X  q  y: Q0 W2 u
    8 j; ]6 |. R/ z9 S7 a│  │      2-3 vue-router编程思想(2)入口组件的规范.mp42 W& }, @* g! |: |" A: A
    │  │      2-4 vue-router编程思想(3)router-view监听事件.mp4! P+ F) u  h) ]' l, A( |0 B
    & U& N2 }2 p, _8 m' {│  │      2-5 vue-router编程思想(4)组件的切换优先考虑路由而不是条件渲染.mp41 J2 z. j$ y! K& }9 O$ n6 I8 s4 I4 D( @: m
    │  │      2-6 默认情况下不能跨父组件通信.mp4
    . M. h8 @7 l4 {; {, ~& N- j2 w- k│  │      3-1 嵌套路由(1).mp4/ {( K! }$ j2 c' S, ]! u- I/ T1 K) ~; R0 Z0 S( A) `
    │  │      3-2 嵌套路由(2).mp4
    8 W4 g* t4 K# t8 p2 `│  │      3-3 多页面跳转change-view.mp47 `) r9 h0 U6 \9 h# `6 ?" z
    ' Q4 S! k9 F( R1 E  E│  │      3-4 Vue3中如何获取路由参数.mp4/ g+ E9 e* E' N" X" s" a$ e" h- [; S& u5 W/ E2 K5 |6 y& y2 ]
    │  │      3-5 Vue3中的路由名称与统一跳转页面逻辑.mp4) q  V0 ]4 D1 M& U( m) w! e( l9 H
    + R& l* a' j( U& D( c/ o6 Z+ p. F+ P│  │      4-1 为什么需要Vuex全局状态管理.mp47 t7 F$ p6 v( S; A& P' o  {; o$ |, Y; Q& \
    │  │      4-2 定义Vuex的全局变量.mp4; Q% S9 \( j' r  ^3 B" D) Z
    . n3 A  i2 L; {& h│  │      4-3 Vuex改变全局状态变量并传参的3种方式.mp4* D, b. r& {* q! H; v; h& e% `# G! s5 U8 t
    │  │      4-4 计算属性和监听器在Vuex状态改变时的应用.mp4# l3 O2 I5 g# X
    4 Y% n' W& [3 u6 f! J│  │      4-5 利用全局状态管理变量进行路由切换.mp42 x8 q1 d  v8 ^% p+ L
    │  │      ) H# Z! d, @6 i
    │  ├─第28周 动态组件与Vuex全局状态管理* ]; M9 D, Q5 g0 }
    9 E- }% X6 v) F" C4 c: i$ ]│  │      1-1 动态组件(1)总结Vue中几种切换视图组件的方案.mp4
    2 X0 T2 x! i6 `│  │      1-2 动态组件(2)初识动态组件.mp4" L& Q3 n' q. h/ L+ f; k3 l. Q' G+ H0 d7 Q# T% k
    │  │      1-3 使用keep-alive缓存组件状态.mp4" @- T3 v% Y3 W5 d$ a0 s" M6 y: D, M% W6 B+ j  K6 F7 d
    │  │      2-1 为什么需要Vuex全局状态管理.mp4
    3 E4 Y% K* f: S1 a" Y, [. Y1 L* I│  │      2-2 定义Vuex的全局变量.mp4. O$ S( z2 ~) k3 i; N
    │  │      2-3 Vuex改变全局状态变量并传参的3种方式.mp4
    : [% f  |6 r5 u, T8 l+ c6 U│  │      2-4 计算属性和监听器在Vuex状态改变时的应用.mp4$ W. O( T4 I6 C0 v; h  {. t! P) M% V3 g
    │  │      2-5 利用全局状态管理变量进行路由切换.mp4/ `' f# M, ?% |# `3 S6 o* e# h! D: E  _) C% {7 C- u) ~. t
    │  │      - }6 S% f2 [4 }; F
    │  ├─第29周 CMS电商管理系统前端搭建. e" R; Z' ?2 w* n/ H( d- K+ n  X: \. z- a1 W7 v# ]
    │  │      1-1 实战LinCMSVue介绍.mp4. h! x6 ^& e  x; N% R
    & A0 _4 `1 G# ?' P3 d7 l│  │      1-2 实战的准备工作.mp4& M2 T& O. l  C
    │  │      1-3 下载LinCMSVue并前后端运行联调.mp4- v  g# e+ \8 c) K. j6 h& M2 Q* U& K* p* q* W9 i" Q  ]* b
    │  │      1-4 权限、角色与分组的关系.mp4& R' M8 J2 j  ]) p6 l" V% J& s! u$ q& C  p$ O* ~  `
    │  │      1-5 字段级别的细粒度权限探讨.mp4: }2 f! R7 b) v, A! ^; `- ^
    7 o) Z- E% e( f- R' v4 n│  │      2-1 舞台、导航栏、状态栏与reuse-tab.mp42 P( b, ^( {/ @! e: N, M# W1 u. ~
    ; c" F6 B9 W* J+ [& Z│  │      2-2 LinCMS内置前端菜单与路由配置基础.mp4
    ! _' ~! h5 b7 q│  │      2-3 LinCMS舞台的搭建与配置.mp4% {# ^, \2 ^/ h" Q2 f
    │  │      2-4 LinCMS的一些重要全局配置.mp4  L/ Q$ a7 x3 b2 ~/ H8 E5 J7 K7 Q2 o4 n$ O, F  F  i5 e) M
    │  │      3-1 第一个舞台的开发-Banner舞台.mp47 v4 g* g. J; L5 q3 Y
    6 A6 _  ?8 U9 n% H│  │      3-2 第一个elementui的组件-table组件的应用.mp4
    ( N2 Z3 c, ]2 B( j0 ]6 u│  │      3-3 Table组件的基本属性介绍.mp4& H( Q1 A# }- g6 w, q* s- J8 t
    │  │      3-4 Vue中的业务模型Model的应用.mp4% K- d" `1 T/ d7 j! \" J& P8 @4 T9 f: z' y2 C
    │  │      3-5 使用LinCMSVue内置的axios请求API接口.mp4, c+ H8 _; A; t0 O" o& U6 y  m( y
    │  │      3-6 自定义表格列的内容-显示图片.mp4
    - S7 H) V' D& y) t3 V. b│  │      3-7 CSS预处理语言SCSS、LESS介绍.mp4
    " f" Y% M  p* x, l- p│  │      3-8 引用LinCMSVue内置的主题色变量.mp42 o8 ]3 v4 S0 n$ i+ ^- w% I
    1 u9 U- l- l; l' B) a+ P2 @$ r│  │      3-9 表格如何做才好看?.mp4
    & k7 C6 p$ Y: }: V% b  D, y│  │      3-10 el表格的悬浮ToolTip与一些设计原则.mp49 e/ c/ W8 m6 X1 s  r2 u4 A: U5 u0 l* t$ Q$ e- g/ I
    │  │      4-1 Banner详情页面的跳转.mp4/ x0 F9 c. I6 y" n4 X2 r+ O/ z( s
    / D# P) ], l/ N$ P; m│  │      4-2 el的form表达与input输入.mp43 ~" m- C9 I+ I3 v- G0 ]
    │  │      4-3 返回图标的制作与细节处理.mp4
    3 \8 d2 v+ k# o7 t! ^│  │      4-4 通过自定义事件实现返回.mp4
    1 s' ]1 c6 `5 d5 a│  │      4-5 v-permisson指令进行前端权限控制.mp4: l& R8 G% `' U1 `  A: u( z! h8 I  c& T$ p$ K% l  i: _: y
    │  │      4-6 Vue组件的属性与获取BannerID.mp4: M7 D( A1 s1 P7 L& n
    % e: x! {$ F! z│  │      4-7 在Form表单中展示服务器数据.mp4% Q' M  v' p4 {  q: U& {+ a& T7 D4 e( d: ]
    │  │      4-8 获取Form表单修改后的数据.mp4# ]- ~$ U& [. S) ^6 M# |
    │  │      $ L% @4 z( T" i7 v1 Q3 I7 [0 f
    │  └─第30周 三端联调,全栈最后一公里" L2 S/ g+ N8 Q! y/ V3 g% z& t+ I5 c8 n4 n
    │          1-1 内置upload-imgs多图上传组件(1).mp4* N5 Y% H; `5 e: F  v& e6 ]/ f% c% e1 Y' t
    │          1-2 多图上传图片上传流程(2).mp42 o2 o8 _! x8 t) z4 j( I( \8 G  B' i7 a. R8 M
    │          1-3 如何获取upload-imgs的返回值?通过vue组件的ref来获取.mp4
    , ?5 ~9 a4 n" ~% @6 _. _! g8 J│          1-4 向服务器提交数据与更新成功通知.mp4! ?7 U" M  d; D7 y3 Z0 e; |9 m/ O% y7 M6 i3 ^$ V- O
    │          1-5 删除按钮未显示及空图片报错的bug的修正.mp49 u% f+ T7 P/ z
    │          1-6 this.$confirm全局消息框的使用逻辑.mp45 w5 n, A! W& w* h3 A1 i
    │          1-7 删除数据的逻辑处理.mp4
    8 Z2 P. u# [7 K5 \) f│         * k. \: }$ @* m2 w, u: i* l
    └─阶段5:课件资料/ e8 ~. c, G9 s8 r3 D- y9 P/ ~6 h
    # e  h3 {0 f7 h1 Q& l5 {8 j6 N& o    ├─APPKEY
    ! n; d1 _+ ~( t5 q5 C% k    │      APPKEY.txt1 Z5 x9 g6 B1 I, l
    " Y7 q, k$ N. a4 \: x9 c6 e$ I    │      data.zip# X! F) X( z; ^- `4 P2 ~
        │      wxshop.rar
    ; `/ g9 K; G( {! v( q    │      简单接口搭建教程.7z
    / N8 Z( n' q* U5 ?    │      : b) A0 {1 d: m6 K3 g; F
    ) [  Q) W3 A& `7 o2 A" y    ├─git: y; @. G- t4 |; r* H" D5 C
        │      deep-forest-master.zip) M: ]2 ?: s/ _
        │      missyou-master.zip! Q$ N! E- Q  F; u" a! ^
    - b& y' k8 T$ H) T8 O5 r% x' z    │      Play-Algorithms-and-Data-Structures-master.zip9 F% D4 i; Q8 Y9 [/ c8 K* j
    # }* ^* a: |- C# ~. K; o$ H0 ?    │      sleeve-master.zip+ [: [8 T" _' ?( L. M4 I. Z
    % L! v# G9 ]  D; x. X4 i" r    │      sleeve-mini-test-master.zip  P9 e" u& s* t7 a7 s7 u7 }0 p' h
        │      sparrow-master.zip2 @8 B! A; ]. H6 S. O/ {2 Y/ k; a: ]0 D% |' G  |4 b
        │      & @* p+ [' v9 X
    $ _% i% ^+ Z  z  R    └─资料4 n. d7 V4 [9 J9 b
                7七月的风袖-sketch.psd* Z9 n: f6 k1 _" f8 e' H0 `3 w
                app.json% j3 n0 W- q5 G8 w' {. l3 X# _; K
                Java 8实战.pdf; W* \: l! K1 _, \' p+ Z5 ~4 O( k5 H
                Java核心技术 卷1 基础知识 原书第10版.pdf, [$ K, ^5 p$ k9 f( q( q# J/ d2 |
                Java核心技术 卷2 高级特性 原书第10版.pdf- b" ?: H, l) q$ w( E  W: D
                lin-ui-ts.rar* B! i( u# i9 Q' P: _' k( u/ L) L4 y; t
                LunacySetup.exe- T; t0 `  N) p% u
                MaxHeapDemo.zip: B6 L3 ?, ^) _8 m& E" |; h
                navicat112_premium_cs_x64.exe: W& B! ?- a8 f, N3 X5 N8 @2 F: ?* ]/ @, J4 {& |
                navicat12112pre.zip
    0 A4 c: r* {; v& _            navicatpre1212500.zip* @- d* U8 r) r
    + U6 [3 a! K1 E0 }, ~% d- R            PatchNavicat.exe
    + L8 E" Q% l8 i: }- A0 n4 M            sku.gif: o! L0 Z5 ]8 L2 ~" m( i' W* A9 r' A+ ~8 w% h
                sleeve-master.zip+ a- X" K! i0 a
                wecharCode.jar* Y, Y; [9 k% V* _* H9 m8 q
                字节面经.md
    3 ~' V& D6 ?  |  ?6 p$ m            研发笔试题目-V5.0.docx/ K8 ]; M) y& d: u/ d7 x: M) G
                说明.txt: }" H9 W) Y# H下载地址, I# G/ A- X1 d) C; C( I. i
    游客,如果您要查看本帖隐藏内容请回复

    ; J9 S5 W/ |; E# S9 g
    " y: u0 J' {# n& V8 n% x, \. X
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-4-7 00:54
  • 签到天数: 169 天

    [LV.7]常住居民III

    3

    主题

    286

    帖子

    1604

    积分

    终身VIP

    Rank: 12Rank: 12Rank: 12

    积分
    1604
    发表于 2021-1-28 14:54:08 | 显示全部楼层
    谢谢分享
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-12-29 00:11
  • 签到天数: 217 天

    [LV.7]常住居民III

    9

    主题

    252

    帖子

    2004

    积分

    元婴程序员

    Rank: 6Rank: 6

    积分
    2004
    发表于 2021-1-29 10:13:43 | 显示全部楼层
    Java全栈工程师从Java后端到全栈2020
    回复

    使用道具 举报

  • TA的每日心情

    2021-4-6 11:47
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    0

    主题

    39

    帖子

    173

    积分

    终身VIP

    Rank: 12Rank: 12Rank: 12

    积分
    173
    发表于 2021-3-15 12:09:56 | 显示全部楼层
    11111111111111111
    回复

    使用道具 举报

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

    [LV.7]常住居民III

    10

    主题

    257

    帖子

    1477

    积分

    终身VIP

    Rank: 12Rank: 12Rank: 12

    积分
    1477
    QQ
    发表于 2021-4-5 22:08:15 | 显示全部楼层
    66666666666666666666666666666
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2021-4-6 21:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    0

    主题

    6

    帖子

    26

    积分

    凡人程序员

    Rank: 1

    积分
    26
    发表于 2021-4-6 21:08:02 | 显示全部楼层
    好全,希望有用
    回复

    使用道具 举报

    Archiver|真全栈程序员

    GMT+8, 2021-4-16 20:01 , Processed in 0.304033 second(s), 37 queries .

    Powered by 真全栈程序员

    © 2010-2019 Fstcode Inc.

    快速回复 返回顶部 返回列表