(本网站正在更新资源当中!!)祝所有程序员的世界不再有BUG!    本站所有资源均是由站长以及”资深程序员朋友“组成的团队专门筛选整理的,所以,本站的各个系列教程,分类明确,课程优质,学习路径清晰,这肯定让您少走弯路!学习不再迷惘!    1、失效链接2天内处理完成!     2、任何信息看到第一时间回复!
需要软考复习资料吗?点我!资源链接失效反馈帖!

[区块链系列] 华华版-全栈 区块链在线就业班

[复制链接]

微信扫一扫 分享朋友圈

程序媛 发表于 2019-6-25 22:38:12 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
8 t. O- [. M2 t
├─1阶段 区块链项目开发Java基础
: ^6 `  i. C5 I1 T│  ├─1-1Java基础
( }7 p3 t. d7 l+ x# V% f│  │  ├─1 编程语言入门
1 a9 x+ f& j9 P/ J3 T  m# X│  │  │      01_编程语言入门.mp4
. s" ?- {- k0 K8 M, H, H& |$ O# N# [& K│  │  │      02_什么是编程.mp4: b8 p( p- k! E1 d
│  │  │      03_程序简介.mp4
- j/ k6 p  ?5 A% q- K7 k6 A│  │  │      03_程序简介.mp4.baiduyun.p.downloading
2 N8 M  ~8 q$ {. Z) A6 \9 g# }│  │  │      ) O0 m* \4 S9 X1 r
│  │  ├─10 空字段串和空的区别
! x2 x6 I6 @4 s│  │  │      11_空字符串和null的区别.mp41 h$ B/ U- `) {
│  │  │      
0 b  R' h& C7 D│  │  ├─11 变量综合练习
% E& s5 u$ T" a; p│  │  │      12_编码练习.mp4- _3 J. x" Q$ U2 {8 Y' C
│  │  │      13_变量练习.mp4
! F3 c! P8 J1 S! E, [+ \" ~+ Z│  │  │      14_变量测试.mp4& b& f2 r  R: \, m- S0 Y1 R
│  │  │      4 G) \9 n5 W/ [) A9 S/ |  O
│  │  ├─12 逻辑运算符
2 i* a) |- l" f* P0 i( r│  │  │      01_布尔类型.mp4: \3 Q5 ^" [& ?, x, I: W
│  │  │      02_比较运算符.mp4
1 X' j2 o% X: D3 L│  │  │      03_逻辑运算符.mp4
1 O2 ^+ O  l4 n3 I/ ?│  │  │      04_逻辑运算符相关的练习题.mp4
1 \& @( J. E+ C- @! s- E. a8 Y│  │  │      05_逻辑运算符相关的练习题.mp4
/ u4 j: D2 |$ k; q- f# r3 i│  │  │      
$ c7 e" [: v, A8 S│  │  ├─13 条件语句高级
9 a8 R# l; l, {1 t3 c│  │  │      06_if入门.mp45 E3 ?- o2 x9 p; p0 G7 S
│  │  │      07_ifelseif入门(上).mp4; B' q6 @# ?. V. S- Q; r
│  │  │      07_ifelseif入门(下).mp4  W6 \2 d! `1 X, k8 k6 \
│  │  │      08_案例之还剩下多少分.mp4: B5 d$ d: }. M5 [6 v9 D
│  │  │      09_if语句以及逻辑运算符相关的选择题.mp4" X5 i+ W7 G: Q( @
│  │  │      ( ]. Q: w: g, Q5 G
│  │  ├─14 方法专项练习& P2 K) G( k* f
│  │  │      10_案例之吃饭和拉屎.mp4
7 h' Z) T7 H. D, K( Q│  │  │      11_方法专项练习.mp4$ m$ X' _" }# n9 T4 @6 J. C+ K
│  │  │      5 \: W' K* j/ i7 H- O
│  │  ├─15 数组
, p5 @- l+ T9 W* V( E8 u% r│  │  │      01_同时声明多个同类型的变量.mp4
% D, \. d! k. N0 T- b│  │  │      02_数组简介.mp4/ b0 F2 L# M; @9 z
│  │  │      03_数组的第一种定义格式.mp4
( D) @4 v7 E4 X2 ?│  │  │      04_数组的第二种定义格式.mp41 s' e9 |7 e, i+ p/ ?% m. O
│  │  │      05_如何获取数组的长度.mp4
! Z( s+ ]: o' z) z" b│  │  │      06_判断数组是否为空.mp4
3 x7 }& G3 d+ v7 J  x' @│  │  │      07_数组的首尾元素比较.mp4( v- l3 o: r0 E4 Q, O
│  │  │      08_数组相关的选择题.mp4
% W- H2 d) l: }1 |│  │  │      8 f  }4 _* L. D6 @
│  │  ├─16 类和对象/ U1 y7 t7 M1 t3 ^+ [
│  │  │      09_面向对象极简介绍.mp4: a& H( }3 m% d* d
│  │  │      10_API文档入门.mp4- l% P6 {$ F" y- U6 a% {: g5 {' q
│  │  │      10_API文档入门.mp4.baiduyun.p.downloading
* N. ]2 C: i+ w+ n. _│  │  │      11_构造方法.mp4
, ~8 x1 x! y& C│  │  │      
& ?& U- m# Y' k% V& E% S│  │  ├─17 字符串处理
: k. e( q/ ]' g+ |│  │  │      12_String#concat()方法.mp4# l( r: s. P# O; ?9 a
│  │  │      13_String#length()方法.mp40 N/ N; L' ?4 s, i
│  │  │      14_String#isEmpty()方法.mp4
6 P# }/ E% Z4 J* U7 I) b9 H9 @# E│  │  │      15_String#equals()方法.mp4  e- Y* }  V* t8 @5 k$ a0 ^, N" e
│  │  │      16_String#charAt()方法.mp4
: B. [7 S. |0 j1 i# w4 E0 M5 J+ M. k│  │  │      17_String#contains()方法.mp42 l& n  Y+ C/ }) O- ~
│  │  │      18_String#startsWith()&&endsWith()方法.mp4
" A) `- A' C2 r+ V) R7 b! ]; L│  │  │      19_String#equalsIgnoreCase()方法.mp4
# y+ f0 Y: Q3 C- q+ _│  │  │      20_String#indexOf()方法.mp4$ f/ K# p# I! |. k  C" [! w
│  │  │      21_String#lastIndexOf()方法.mp4
' K0 r& `2 _4 s3 |: E3 h" F; o│  │  │      22_String#replace()方法.mp47 T4 R) [' D: Z: j; w6 F5 x# M
│  │  │      23_String#split()方法.mp4
1 g- B3 y' C) |/ I│  │  │      24_String#substring()方法.mp4# T9 J' p2 V1 H# V8 k
│  │  │      25_String#toLowerCase()&&toUpperCase()方法.mp4  x" G: V/ p5 S9 S
│  │  │      26_String#trim()方法.mp4
4 b. }. D( @3 D) e│  │  │      27_String类中的方法总结.mp4/ e' T; [) H6 T# j
│  │  │      28_String类相关的选择题.mp4
6 \$ ?( b" g& {! P│  │  │      
( a8 X3 F2 A# E5 @6 E│  │  ├─2 变量入门
$ R' Q; y( E) L* c. u5 H│  │  │      04_变量概述入门.mp4
! o4 q5 Z2 M0 X( [2 `│  │  │      05_定义变量的格式.mp4' a# A' @5 _1 i# P9 u
│  │  │      06_变量名命名规范.mp4
3 G: T( k( N$ `" l+ L: o│  │  │      07_修改变量的值.mp4
$ `3 s8 D- q! w" q# Y4 C2 m6 }│  │  │      08_常见的数据类型.mp4
' }/ H: b8 n" o+ h│  │  │      09_变量相加.mp47 q/ s; h6 v% r. P# Y4 w! f) a
│  │  │      
! P& X  J( J, {: v: n; p( |│  │  ├─3 老王买瓜案例, W' d  ^) s1 R0 R
│  │  │      10_老王买瓜案例(if语句的铺垫).mp48 x, y. d; m3 e' D! D
│  │  │      
( v& k) U# |) V* O│  │  ├─4 条件语句
) A1 m; w3 Z1 n1 I8 }│  │  │      11_if-else语句.mp4
4 c/ D  Z! Q. `& K  `& u│  │  │      12_if语句的练习题.mp41 ~  U9 x7 S0 \) }$ T8 j
│  │  │      13_为什么要条件语句.mp4- o/ m* U1 {; b' h
│  │  │      
: T9 t( }9 J5 F& ^. N" F0 l│  │  ├─5 循环简介+ f, I4 ~3 G* a' I0 j
│  │  │      14_循环简介.mp41 H, u- m' }1 c( f+ {( s
│  │  │      
# T3 b; B$ j2 L  F4 L│  │  ├─6 类和方法入门
# j( ?- ~& X( s" b" {' w; ?│  │  │      01_如何定义类和方法.mp4
; t) s9 h9 g: D/ g( {# S$ N│  │  │      01_方法练习.mp4" u, V0 N- z+ b$ U# n0 F: s4 @
│  │  │      02_输出语句.mp4
. R+ ^) S6 G" Z│  │  │      03_变量练习.mp4  |$ [; o* ^' _. [, C
│  │  │      04_Java中常见的数据类型.mp4
* e' M' D& N" `& y; X8 H& a/ f│  │  │      * I. I- C, r! p6 t  ^6 ?
│  │  ├─7 简易计算器案例
8 A9 w* k0 f! W4 u' P  w! f│  │  │      05_制作简易版的计算器(加减乘除方法).mp4; |0 c1 }3 ^8 b/ u' B& H% d
│  │  │      06_如何调用方法.mp4
/ w, w( E$ Q0 t5 ]│  │  │      : Y9 ^' y6 ~1 L, \
│  │  ├─8 变量高级
) h1 n! z- w8 R+ N7 B│  │  │      07_和变量相关的一些选择题.mp4
# x- {2 x$ R& w/ x! d: V│  │  │      07_局部变量和成员变量的概述.mp4) w/ j& X: r( O' D" k  N8 {
│  │  │      08_局部变量和成员变量的区别.mp4
/ N0 O! l1 n( J9 x! i; H│  │  │      4 L) `7 D4 y, U& m$ u/ z3 c9 Z4 M8 a
│  │  └─9 运算符
- f; \& y7 {$ p│  │          09_算数运算符.mp4
6 F* n3 n& z* @) |1 ]│  │          10_赋值运算符.mp4
: W4 u7 I6 Q( Z4 w) I│  │          , {* H* I. f2 d# L( w+ s' c
│  ├─1-2面向对象% Z7 s  A+ o, O7 M7 _" N0 B
│  │  ├─1 Eclipse入门+ B4 \+ ^7 b2 X
│  │  │      01_Eclipse简介.mp4
, f! U; Z: P2 E1 f9 z8 N│  │  │      02_Eclipse中HelloWorld案例.mp46 s* S0 k; I  A7 D! q, g
│  │  │      03_Eclipse的视窗和视图概述.mp48 T8 [: U) G' e$ }7 F
│  │  │      04_Eclipse工作空间的基本配置.mp47 M- Y0 h% g, T
│  │  │      05_Eclipse中内容辅助键的使用.mp4" c, `; D6 ]. P' Q( t8 H0 }
│  │  │      06_Eclipse中快捷键的使用.mp4
# Y$ _$ ~$ Q$ P0 M% C, C│  │  │      07_Eclipse中如何删除项目和导入项目.mp4
8 T# A, n$ W3 E. H, u+ n│  │  │      ! _0 ^7 u' y& m0 t
│  │  ├─2 面向对象和封装
( ^5 \3 \/ P4 H: m9 t: M│  │  │      08_面向对象入门.mp4* O. u0 T$ z9 e; E; {! Y8 n
│  │  │      09_获取长方形的面积.mp49 `/ A. j9 O5 d: Z$ r+ B: i
│  │  │      10_人类案例.mp43 P7 p1 u5 D: O) t6 P0 y" l* M
│  │  │      11_封装入门.mp47 f9 H( d( @: G, p# I( ]2 y
│  │  │      12_封装的好处和弊端.mp4
8 M5 x( ^: T- `7 s0 n│  │  │      13_封装详解.mp4
. y2 q5 A4 ^! T: W7 f" I│  │  │      14_标准的类的定义格式.mp4
/ j) q5 k6 Z/ r│  │  │      
3 w) G0 A6 e' L│  │  ├─3 面向对象综合案例
& r3 c( |, Z, ?: P# `│  │  │      15_用户家具城案例分析.mp4, }+ a' s$ D& H6 a. S
│  │  │      16_顾客类代码实现.mp4
# F& T; O; X2 `, d│  │  │      17_卖家类代码实现.mp4
; r, s/ }) u0 a+ s7 D! R# {│  │  │      18_测试类代码实现.mp4% ?6 C+ l4 v' b1 x0 n$ |+ J
│  │  │      3 S4 h4 p  |! w! }. _6 E6 g
│  │  └─4 机器人对战游戏/ J$ M& {% f6 D: }, _1 s
│  │          01_游戏演示.mp4
' {  U( S. l9 F+ Y$ g( l│  │          02_this关键字.mp4. q+ E% T6 |# b% y- M+ P0 p- @
│  │          03_static关键字.mp4
8 [# C7 p' D" P│  │          04_final关键字讲解.mp4
, w7 p+ q: ?8 z% O7 l6 o- L│  │          05_Random类讲解.mp4/ u. G; t. e( S% C$ C- s9 j/ M
│  │          06_while循环.mp4) h; \" |& R( \6 v) q% T  h
│  │          07_游戏业务分析.mp4
$ Y, T4 e7 V* _6 F: `│  │          08_游戏UI部分_玩家和NPC交谈功能的实现.mp4
# e1 _3 n; s' }+ ^# J│  │          09_游戏UI部分_GameScreenUtils工具类的抽取.mp4- @( V: Q$ q. A1 T) \* d
│  │          10_游戏功能部分_玩家打NPC的功能(上).mp4+ F5 L5 n( h! ?7 e% F6 O2 Z% }, k
│  │          10_游戏功能部分_玩家打NPC的功能(下).mp4
2 }' `% a; x- f) S7 r! L1 @; C│  │          11_注释的补充讲解.mp46 _2 R4 n: u- K+ B3 Q, n6 B# ~% b( h
│  │          12_游戏功能部分_NPC还击的过程.mp4
1 y& F5 f! J/ s4 _! c│  │          13_代码优化(上).mp4% N! K3 Q' z1 I, k4 |
│  │          14_代码优化(下).mp4) E( Y5 @- ^2 q
│  │          ! ?, H* b4 x2 @/ o3 t( x1 B0 r+ I
│  ├─1-3集合
( n. `$ e. d, m' o4 W  F6 y│  │  ├─1 HashMap集合( X0 X4 s8 w8 e! @/ Q; E
│  │  │      01_HashMap集合简介.mp4
* i4 ~. x2 g% Z3 n# g│  │  │      02_HashMap集合的初始化.mp4" G3 V# i) H9 x
│  │  │      03_往HashMap集合中添加数据.mp4) r: s3 N" R$ S4 N( T
│  │  │      04_泛型和包装类.mp4
' o. c* r9 Y& r$ F: i, Y; l" o│  │  │      05_HashMap#size()方法.mp4' V; o7 |. k, [& [7 Q' V
│  │  │      06_集合相关的面试题.mp48 Q$ C8 \5 R8 ]) R
│  │  │      07_HashMap#get()方法.mp4
, G0 v: ^" x) N" |* G( |7 m3 K8 N" U│  │  │      08_HashMap#isEmpty()方法.mp4
. a, c# G# l% |' d( {│  │  │      09_HashMap#containsKey()&&containsValue()方法.mp4
) y0 f+ p+ H. n0 T7 Q│  │  │      10_HashMap#clear().mp4
/ p) w, R3 Q; {- Z- R│  │  │      12_增强for.mp4
/ U/ A/ [1 E. m7 @" U1 p: q0 s│  │  │      13_双列集合的遍历方式.mp4
% z" y$ a' X0 b3 Q4 t0 P. k│  │  │      14_HashMap集合相关的选择题.mp44 h  m% y3 q) Y# [8 B. ]( B
│  │  │      
& A  g; V, g" n/ X2 O! F/ J& L│  │  ├─2 ArrayList集合4 u0 S3 D5 L# y  Q/ ^, O. J
│  │  │      15_ArrayList简介.mp4
2 {# C+ F4 I& E4 T│  │  │      16_ArrayList#get()方法.mp4
% u# j: K# m& E" C3 Z6 [│  │  │      17_ArrayList#set()方法.mp4) C* A$ J2 U/ @
│  │  │      18_ArrayList#remvoe()方法.mp4+ o' e0 _, e3 y, F/ I
│  │  │      19_ArrayList#isEmpty()方法.mp4: a# P  i( ?# W7 h$ x
│  │  │      20_ArrayList#indexOf()&&lastIndexOf()方法.mp47 J0 Z  Y- @: ^8 t
│  │  │      21_ArrayList#set()方法_代码版.mp4
# M% ?0 }7 Q: Y, h- `│  │  │      22_ArrayList#toArray()方法.mp4$ A8 ]+ r* q7 @$ {0 m3 J9 j
│  │  │      23_集合和数组的相互转换(理解即可).mp4. _) M( Q$ z7 g! h4 z: U! F% p' d6 S
│  │  │      24_ArrayList集合相关的选择题.mp4
  T2 H6 `# Y; x8 ]: {) M8 C2 J: t│  │  │      , @, J& i0 j3 Y* t% P1 g
│  │  └─3 集合综合练习
7 N  ~. e9 B1 O9 m% n│  │          25_Map集合综合练习题.mp48 J( P# X0 l+ A- j& i) W
│  │         
- C8 i) I2 M! e2 I! S- _│  ├─1-4继承和多态" X. V, r+ _5 D& F/ M& U) s; ~
│  │  ├─1 继承
1 U% l) Y, O0 Q  Q( L1 R│  │  │      02_非继承版的老师类和学生类案例.mp4: w0 |2 l& \3 N
│  │  │      03_继承版的老师类和学生类案例.mp4
+ b0 P! T3 V% _│  │  │      04_Java中类与类之间的继承特点.mp4
0 W3 n% D' Z1 _; K# ], M& J' d│  │  │      05_继承的好处和弊端.mp49 i# t4 S. b1 i( y
│  │  │      06_继承的注意事项.mp45 Z1 W+ c4 D8 V& _& N5 j1 L* n
│  │  │      07_this和super的区别(图解).mp4
3 g1 `( b) W/ F, F6 R│  │  │      08_继承中的成员访问特点之成员变量.mp4# m% Y1 U  n- j- h4 K
│  │  │      09_继承中的成员访问特点之构造方法.mp4
' N9 k7 i1 U) ~5 [% g9 r- {! c│  │  │      10_继承中的成员访问特点之成员方法.mp4
# }7 a( K  e8 G5 a│  │  │      11_方法重写的注意事项.mp4# ~1 w# o# A$ d' I2 k2 `% |  U* K) m
│  │  │      12_final关键字.mp4
' [9 x7 e7 A) |/ |+ u* Y│  │  │      # @. J# S1 V  `6 g: w% I
│  │  ├─2 抽象
4 b- o/ k. X. W& T* y9 q5 q│  │  │      13_抽象类的概述及其特点.mp46 a3 X7 X: [4 W3 @
│  │  │      14_不能和abstract共存的关键字.mp4
  Q" H4 d3 @8 _" u# ]4 |│  │  │        B1 i5 z3 f9 Z8 M
│  │  ├─3 接口# t6 V: \+ Z. b; p( J8 n3 p
│  │  │      15_接口的概述及特点.mp43 B" I5 ?: m, ?5 |
│  │  │      16_接口的成员特点.mp40 J& v3 {" O+ {7 G; m) A/ G
│  │  │      17_类与接口之间的关系.mp4" V9 v+ l5 A+ T+ p% }$ i
│  │  │      18_抽象类和接口的区别.mp41 \: _% p2 r5 s. v
│  │  │      4 j) C+ j  i" z3 s4 q( Y/ w
│  │  ├─4 多态8 _0 o8 y: |$ g/ X6 _% W* H3 k' Z7 i
│  │  │      19_多态的概述和前提条件.mp4
9 ^6 K* j$ ?9 H7 h2 N& W' S( n) O│  │  │      20_多态中的成员访问特点.mp4
/ S5 Q6 ^1 B# J/ ~. D│  │  │      21_多态的好处和弊端.mp4
' S4 V- o7 p* C│  │  │      22_动物类案例.mp4, O' _4 L! y( J) @7 L# F
│  │  │      6 F2 ], M# h6 V0 m
│  │  └─5 游戏界面3 y& ~+ Q# {6 _8 U
│  │          01_如何导出以及使用jar包.mp4
% q$ F, `* i9 L│  │          02_魂斗罗选择界面.mp48 F6 ]( l4 z3 F4 ?, z5 c
│  │          03_微信打飞机案例V1版本.mp4
8 V! P# T. W6 d│  │          04_微信打飞机案例V2版本.mp4
& v! W0 A8 }! \  F│  │          ! ~0 N  U" G6 `, p) ~% v! V. v
│  ├─1-5java基础增强, [+ [' ^+ E! x" k3 m2 a
│  │  ├─1 循环遍历
9 |; B1 Z0 S  F│  │  │      05_while循环讲解.mp4
0 r( }# C( Y4 ^6 z3 o8 U! j# k% _│  │  │      06_do.while循环.mp41 a. \. B8 B& @5 V& e* r
│  │  │      07_for循环.mp4% p5 C$ Z" Z2 P% a' a
│  │  │      07_switch-case语句的练习题.mp40 J# T, W  r& V% u- j
│  │  │      08_for循环倒序打印.mp4
; I9 s4 D% X$ `5 C+ d3 I1 N│  │  │      09_三种循环之间的区别.mp4& \5 G2 ?5 a& M5 q, `5 a' h
│  │  │      10_for循环求和思想(计算1-100之间的偶数和).mp4  w8 O% F* g$ I  e0 j1 y. K
│  │  │      11_增强for循环遍历数组.mp4
1 K5 P% C7 T) U9 ?( S# N# E│  │  │      12_双列集合的第一种遍历方式.mp4
$ L& |; E! I1 U) B+ r+ ~│  │  │      13_双列集合的第二种遍历方式.mp4" ?* h! D4 c2 \
│  │  │      14_for循环嵌套之打印矩形.mp4
" l6 W- |( [+ `0 m2 N& B│  │  │      15_for循环嵌套之打印正三角形和倒三角形.mp4
- @' S/ B! `& u8 Y4 a" U$ i│  │  │      16_for循环嵌套之打印九九乘法表.mp4
% H5 I- z3 A% B  A│  │  │      17_校验金额.mp4
1 E- w5 h8 k% B6 X5 [│  │  │      18_break和continue的区别.mp47 y3 l4 k5 s1 k* B7 L, R
│  │  │      ( ~& A! u1 J( `9 i# ~& a" v, A4 H
│  │  ├─10 阶段性总结 & 补充
! R, K: L1 |$ h4 g4 w0 a│  │  │      01_Java平台版本的划分.mp4* @4 J/ Z/ _3 i, U3 V( W# y+ v( K( h
│  │  │      02_Java语言的特点.mp4+ f" t3 w$ n, `
│  │  │      03_JDK的下载和安装.mp4
% z( }/ N9 m$ }8 p* Y0 ?│  │  │      04_path环境变量的配置.mp4
- ~& @4 w# m0 n3 Y- w' h8 }│  │  │      05_三元运算符.mp48 d  J" j$ a: e& O) r
│  │  │      06_switch-case语句.mp4
7 J/ G# b4 W1 E3 @. z! o│  │  │      07_switch-case语句的练习题_p7wiK.mp4
. {! q: E6 p2 Y│  │  │      08_方法重载.mp4' R3 N) z, c( L
│  │  │      09_方法重写.mp4
  u( W7 [. ?; ^! [. f1 o# U│  │  │      10_成员变量和局部变量的区别.mp4% J) m8 Q; ~* B, r& Z5 F) C; d. H
│  │  │      11_对象的初始化过程.mp46 `, I/ s! w7 L7 k$ a( J+ L
│  │  │      12_instanceof关键字.mp4
3 ?, E4 j$ S8 @$ {7 H+ `│  │  │      13_包.mp4
, f% n! b7 ~; C0 M+ u, I2 U│  │  │      14_代码块.mp4
# q. |2 I# p; E) m9 K# C/ R│  │  │      15_HashSet集合.mp4+ K3 {4 P: N' _) [( U6 r; x9 b0 ]
│  │  │      16_集合的体系图.mp4' T. ]3 N0 e2 U, F% a9 B9 V3 q
│  │  │      17_单列集合的遍历方式.mp4
, o% s5 I4 _- B' K. K6 H+ q│  │  │      18_双列集合的遍历方式.mp4
+ W3 h; X$ a9 R- [8 q: P) S│  │  │      19_并发修改异常.mp4$ h, X! S, M5 G4 T
│  │  │      20_Collections工具类.mp4
9 Y+ f# o4 C2 a0 F) S│  │  │      21_内存输出流.mp4
* y/ j* |5 k& B+ h│  │  │      22_Properties集合类.mp4
6 F$ i1 Y" q- u: V' J5 d│  │  │      23_多线程的声明周期图.mp46 ]; i6 ?& m& ~0 `, J
│  │  │      
* ]1 n0 x9 q0 N+ a5 j& t- W│  │  ├─2 工具类和正则表达式
' \- b1 @6 b: j7 M& ^: Z│  │  │      19_如何定义一个工具类.mp4
3 A# Y* I. |, L9 T& t3 K9 W, Y& d│  │  │      20_校验手机号_自己写校验代码.mp4& l+ E# [; l" @  Q8 w1 p( W
│  │  │      21_正则校验手机号.mp4
1 f9 a5 A' w/ t, s; a. G# z│  │  │      22_正则校验邮箱.mp4' ^7 s0 {/ Q* n3 M
│  │  │      23_通过正则表达式切割字符串.mp4
" G9 k4 M6 y) K9 I│  │  │      ( K  L( N1 T$ u" s) r
│  │  ├─3 集合补充案例
# I9 |% E' p9 q/ A% A│  │  │      24_ArrayList集合去重.mp4$ k" j6 B( I8 y. J  m, Y
│  │  │      25_debug调试.mp4
! L4 G5 i$ V( B% @( n│  │  │      
+ J8 [! y. H8 L, B7 |│  │  ├─4 异常2 R3 {" M0 {! T- r: k  ?
│  │  │      01_异常的概述和分类.mp4
% R4 K- ^/ ?4 j│  │  │      02_编译期异常和运行时异常的区别.mp48 q; p. d% W+ n  K, K# B$ W" @
│  │  │      03_异常的两种处理方式及区别.mp4
1 H1 X, D9 o" n- {│  │  │      04_finally关键字.mp4
7 G* c5 Q: @, F7 I0 p+ L: v! ^│  │  │      05_finally关键字相关的面试题.mp4' l2 W1 k) V0 ]* j/ [8 C
│  │  │      ' K3 {# k2 h( f. z: d
│  │  ├─6 File文件
! _  _! `/ Q$ ]- t. d│  │  │      06_File类的概述及构造方法.mp4
: V: o, [( R' g7 e0 P# l( P" S│  │  │      07_绝对路径和相对路径的区别.mp4
1 x# x2 q3 z6 d│  │  │      08_File类的创建和删除功能.mp4" Y, Q9 u& y3 z4 V
│  │  │      09_File类的获取功能.mp40 F& V/ |8 b7 V" w' N
│  │  │      10_File类的判断功能.mp41 l3 m% D: r9 K: @
│  │  │      11_File类的list()和listFiles()方法.mp4. N' e4 e2 d/ A5 v" H" s# g
│  │  │      12_匿名内部类.mp4
8 [/ `6 R- f8 U  j" t│  │  │      13_文件名称过滤器.mp4
. B9 ~. J2 [  a( U0 s/ Q/ ?│  │  │      
% _( M  Q7 h9 ^/ b) l│  │  ├─7 递归  A2 `, I. V7 n1 @' |) [- I
│  │  │      14_递归的概述和注意事项.mp4
) C  }6 ?  E3 I+ t* u7 {│  │  │      15_递归计算5的阶乘.mp4
8 H  U' H5 ]  Q; ?$ a, L5 U2 ~│  │  │      16_Debug调试_查看计算5的阶乘的过程.mp4
% [: b, ?0 `9 I│  │  │      17_递归打印文件夹.mp4
5 C% V5 E! d# s0 Q9 l│  │  │      18_递归打印文件夹(加入键盘录入的功能).mp4
' D$ o2 g- s9 b; ^│  │  │      + R5 y) r  v5 ?- u: q% M7 H
│  │  ├─8 流操作% j" p8 L: a3 G, {* u" U; W: W3 ]
│  │  │      19_IO流的概述和分类.mp49 C& e7 T! I7 ^  ]1 w* Y
│  │  │      20_三个特殊的字符值.mp4
) Q* L9 G  \! J  Q6 g1 z│  │  │      21_字节流读取数据.mp4
& }7 A6 e5 A6 u│  │  │      22_字节流写入数据.mp4
* W9 |) c6 Q9 a- Y! d6 P1 \6 W# X│  │  │      23_字节流拷贝图片(一次读写一个字节).mp4
( l2 C' _* {% U: U( s. y( F: q│  │  │      24_字节流拷贝文件(一次读写一个字节数组).mp4
/ H5 b9 ]% R% R/ _│  │  │      25_字符流拷贝文件(一次读写一个字符).mp4
: A0 ]: v; k# W. O│  │  │      26_字符流拷贝文件(一次读写一个字符数组).mp42 H$ X  W  J1 f# J' D
│  │  │      27_字符流和字节流的应用场景.mp4
# v! E* |) H# |1 `) J│  │  │      28_高效字符流一次读写一行.mp4
, O3 q0 i: C% S/ R  z* _' ^( `3 \│  │  │      29_IO流读写方式总结.mp4
/ j' D3 O9 z8 e" ^  f% t- u│  │  │      30_制作空文件.mp48 h7 H' b5 f" r6 O/ o' Q9 M
│  │  │      31_从网络中下载资源.mp4
7 ]( d6 Q, l% ~8 W8 B, q9 Z$ e- L│  │  │      32_JDK1.6及其以前IO流的标准异常处理代码.mp4
$ i2 b4 i* R( h│  │  │      33_JDK1.7及其以后IO流的标准异常处理代码.mp46 v% }9 K5 _/ ^1 a
│  │  │      34_复制文件夹.mp4% t& J0 \# T9 D
│  │  │      35_commons-IO第三方jar包复制文件夹.mp49 n3 l6 Y' i* C5 c
│  │  │      0 s5 e0 g) D* k$ W
│  │  └─9 多线程
( e9 S3 k0 S; D' X4 ]2 V( W│  │          01_多线程的概述.mp4+ j5 M/ ^# W- G4 Y9 c$ W0 Y
│  │          02_多线程并行和并发的区别.mp43 `6 [' |+ O6 j
│  │          03_多线程的第一种实现方式.mp4
* `8 O$ a& e9 h. X: L! {│  │          04_多线程的第二种实现方式.mp4
! g/ p9 S' C4 M- D1 }│  │          05_多线程两种实现方式的区别.mp4
# S( T8 T, _# B% b+ l5 D' ^- P│  │          06_多线程模拟卖票案例.mp49 J+ }5 D0 R& C
│  │          07_多线程模拟卖票出现安全问题.mp4
$ `& m8 L# e+ v* L) v│  │          08_用同步代码块解决多线程模拟卖票出现的问题.mp4. H3 \& ]9 A% ^8 e  X9 Q# y- C
│  │          09_线程同步和效率的问题.mp4+ T8 q, n+ {# ~, s" A5 E+ v8 h
│  │          10_实现Runnable接口的方式实现卖票.mp4
( R) c8 {. o  e│  │          11_非静态同步方法.mp45 `" l9 w( p( q$ F
│  │          12_静态同步方法.mp43 v2 [1 \+ \0 `% w2 W  X: ^
│  │          13_死锁.mp4% v# T$ i7 K8 }3 ~8 j3 i
│  │          14_实现Runnable接口的原理.mp4
7 [/ C9 L! i' w/ E  x% e│  │          / U- E- T8 K! H  p
│  └─1-6坦克大战
7 d9 ?( B6 ]" ?) y│      ├─1 项目初始化, @% n/ E2 K$ _  c, l  x
│      │      01_项目演示.mp4/ ?8 ^% u& r- Q& C) M0 H9 g
│      │      02_新建工作空间.mp4, f7 D! n; [2 v, L
│      │      03_设计模式的概述.mp4" ~* u& ]7 u6 T
│      │      04_模板方法设计模式.mp4% s5 D5 @; w, H# d2 n- P8 A2 X4 b
│      │      05_lwjgl_jar包简介.mp4- R0 o! S' U  w" b2 ^
│      │      06_创建第一个窗体.mp4
$ K; H# ]9 r" R! @, `│      │      07_页面渲染.mp4
/ X8 n& {  ]; A* m# z│      │      08_输入输出以及坐标计算.mp4
5 u  J& M4 l4 U: R│      │      09_绘制图片.mp4& c, A+ k" Q$ {0 c7 `$ Z
│      │      10_播放声音.mp4
. o7 k9 {/ ]/ u│      │      11_综合小案例.mp43 W6 W9 O) a  r5 [- v/ |
│      │      
2 B. t, ^% q6 `5 c│      ├─2 窗口元素绘制2 }' u% |+ M8 y6 E  s
│      │      12_坦克大战案例窗体绘制.mp4, q5 Q5 |0 a0 }  e$ H5 z) Z
│      │      13_绘制一个砖墙.mp40 x: f1 E0 P* E0 Y+ R% S2 e
│      │      14_绘制一堆砖墙.mp4& @4 _- \( |6 u" T2 p2 ^/ a
│      │      15_绘制一堆水墙,铁墙,草坪.mp4- t+ @' [2 W+ `9 @) `4 U) a
│      │      15_绘制一堆水墙,铁墙,草坪.mp4.baiduyun.p.downloading: f+ U3 l) V2 F% f. `8 b
│      │      16_抽取Element父类统一管理元素.mp4
/ e/ v- ~8 P, g! b7 d2 J│      │      17_坦克的绘制.mp4
* R) z0 h& m) [+ }│      │      " m! T+ m% }7 V+ t% O  \
│      ├─3 坦克移动7 |3 P& d& f9 d$ J' E
│      │      18_坦克的移动和越界处理.mp4
1 D4 }  O1 n. N│      │      19_坦克炮口的随向转动.mp4+ g4 O0 P3 C9 R! r3 \- O
│      │      
; e8 O6 k" d, e2 \* H: N│      ├─4 子弹发射
( n) `' ]/ L2 K) |$ ~│      │      01_优化项目中的三个小细节.mp4" ]1 i6 y7 h1 U5 E; m) ]9 a/ Q
│      │      02_子弹的移动.mp40 r- ?' N/ K, e) `5 D
│      │      03_调整子弹的发射频率.mp4& d" {7 q8 q" P
│      │      04_播放子弹的发射声音.mp4, i: G$ X: r8 h8 [6 B. Z4 r
│      │      05_销毁出界的子弹.mp4, y& X( [* C" b! k
│      │      20_坦克发射子弹.mp46 q+ `: B& Y" y/ n" L
│      │      21_子弹的坐标计算.mp4
& W8 ~$ }. c! |% k: Z4 J; m6 f6 R1 R│      │      22_子弹坐标计算方式优化.mp45 j! e$ V% D. k* o1 v. \* n: I& X. U
│      │        L/ t% m( n1 \4 a6 I
│      ├─5 坦克隐藏
& |4 k) c& [3 o: o8 h$ l│      │      06_坦克隐藏到草坪中(简单做法).mp4
; a# S' v0 X% a+ Z" D" J! J5 I1 t│      │      07_Comparator接口简介.mp4& x6 K+ N/ V3 O% p( O4 T/ c
│      │      08_让坦克隐藏到草坪中(Comparator比较器接口实现).mp4
# X% {& l7 u  d% r, v! X8 Z9 d│      │      
8 X/ d* x, y7 k1 y2 f- |│      ├─6 碰撞检测
* z. \* E% g1 f# l' _! `│      │      09_Collision工具类解释(碰撞检测原理).mp4
; B- ~' D1 {& Z% ?│      │      10_坦克和铁墙的碰撞检测(上).mp4
8 E) t( }! J& d* b4 h  C│      │      11_坦克和铁墙的碰撞检测(下).mp4
8 ?- \, T8 U: H│      │      12_抽取Moveable接口和Blockable接口.mp4
: |" W3 Q: v# S/ y2 q│      │      13_子弹和铁墙的校验上.mp4
8 f, B  v- R2 l+ w( r3 p& W4 M│      │      13_子弹和铁墙的校验下.mp49 g$ _! b7 c: e% Y7 g' \: O5 @
│      │      14_抽取Attackable接口和Hitable接口.mp43 h# s, ^) C, Z. N* C7 g% K* q% I
│      │      
6 X$ s' D) M. Y+ O5 [; H2 [│      └─7 爆炸物处理; L& T/ r: K4 U5 g1 q
│              15_优化爆炸物的坐标.mp4
9 P. x% T0 T# r7 ?) s( H, t' y│              16_优化爆炸物图片的绘制个数.mp4
* I' J: y( x7 B; Y. O. s4 \$ }. m1 e/ h│              17_销毁需要销毁的爆炸物.mp4
+ s2 G: H' `3 Y3 h8 z5 F8 i│              18_抽取Destroyable接口.mp4
+ P, r- r1 x7 x3 m' d# l│              * q0 \% D3 \8 x8 O, j3 }
├─2阶段 区块链概念入门
5 z' M2 p: T) T1 o0 O│  └─区块链概念入门" R1 g2 a0 T  b5 {8 Z- p8 ~9 L$ ^0 o: \
│          01_从实体货币到数字货币.mp4( y3 Y" Y6 x$ @! v2 p
│          02_分布式记账.mp4# o7 {. f' [& u
│          03_中心化和去中心化.mp4
- u! ?" c2 ~: \8 |4 S│          04_hash函数.mp4! J6 J0 g) m7 _5 e
│          05_hash算法的安全性.mp4, Q! f) N8 ?% P6 K1 u$ t3 ?
│          06_分布式系统和数据一致性.mp4" m5 I; ?7 j; d6 q9 O' K
│          07_通货膨胀和比特币.mp40 q7 Z( W* S) Z: }: G
│          08_区块链技术的演化.mp41 K* Y! V( l0 H' x4 U  _0 L
│          09_区块链的应用场景.mp4
- k+ T5 v) x1 M  a9 y2 I│          10_我到底需不需要区块链技术.mp4! b' n; t6 N! A5 O
│          11_如何鉴别区块链项目里的猪.mp4
9 d$ v' i; k( H3 j2 d0 `6 H│          12_区块链项目的评估方法.mp4
4 [0 h, E; v  g│          13_ico和ipo和daico.mp4. Q1 u" A! H5 ]6 Q7 V& `, c
│          14_关于区块链的错误认知.mp4! q. P8 k4 s% I- y' u' e% k) T
│          15_分布式系统的一些概念.mp4) G, i! }7 c! O$ X
│          16_区块链技术栈和学习线路图.mp41 E  c4 F. z6 ]; T4 K* m% U" `
│          17_区块链的技术现状.mp4
: O  W9 |5 t$ t' I; m│          2 W- \: _$ n) I1 m  j* U
├─3阶段 kotlin和变成基本功加强
! |! r! n7 W, o) F# l- m2 t│  ├─3-1 kotlin基础语法
9 M' p- u2 H9 |│  │  ├─1 kotlin介绍
3 y- B# |  }9 f) r1 J* x│  │  │      02.kotlin简介.mp4
! ^' c9 A) q' p) O0 n│  │  │      03.kotlin发展趋势.mp49 l. s. I1 r. t& k: E' h
│  │  │      04.kotlin优点.mp4
4 S5 E- \/ m4 O# e- n+ _│  │  │      05.kotlin前景.mp4( q7 N; _1 ?( p( r7 u" V
│  │  │      06.参考资料.mp4
+ m; J0 Z. w2 w0 K│  │  │      
+ J6 [$ u( V* M  R6 L│  │  ├─10 函数2 m5 `+ b# ^5 d: I" [0 ^( L; H/ [
│  │  │      27.输入和输出函数.mp4
5 Z0 i* S7 P6 D2 O3 g4 w* w0 m│  │  │      28.四种函数.mp4: I+ r1 g5 v1 s6 m) R; r
│  │  │      28.四种函数.mp4.baiduyun.p.downloading9 U# i2 q. K, y: @1 [8 _  m5 n
│  │  │      29.顶层函数和嵌套函数.mp4
5 w. m3 c( O  V% Q│  │  │      ( \$ _7 U  h! {. |
│  │  ├─11 字符串模板
8 e/ g2 F; }+ C- A│  │  │      30.字符串模板.mp4
+ r6 V! F  R9 Q* W  P6 Z4 F  E│  │  │      3 K6 q. @+ V0 k( P$ z4 i
│  │  ├─12 条件语句2 |4 I; F: P" A% o, {
│  │  │      31.条件控制语句if.mp4
# F& i% K( F  E2 c" j. _0 X: c│  │  │      + O# P( ~( t6 f0 x, V9 B! }$ ~  E
│  │  ├─13 循环+ B0 j3 \! w* b, t
│  │  │      02.for循环和foreach循环.mp4
* Q" M5 o- G3 X1 {│  │  │      03.continue和break.mp40 W( F' v4 K$ |+ M5 x1 F) o  k
│  │  │      04.标签处返回.mp4
0 y+ K  z+ ?$ U: R+ {│  │  │      05.while和do while.mp4
4 B7 D% E5 ^# H0 X- D* R│  │  │      d2-01.回顾.mp4- X, {5 w/ H# r- r1 r. i1 Y
│  │  │      ' h4 V# F+ \+ ~6 k8 M7 f& W4 Z
│  │  ├─14 区间
- V' I4 A& c; y. }! X6 f│  │  │      06.区间定义.mp4: V# t- z8 I, v$ o" e5 Y' k8 R4 Z
│  │  │      07.区间的遍历.mp4
/ Y) f" U! D4 ]& ^( _) ~1 l* A2 S│  │  │      08.反向区间和区间的反转.mp4
8 }4 B0 ^$ r5 P│  │  │      08.反向区间和区间的反转.mp4.baiduyun.p.downloading) G, X4 W  l7 U3 D1 q& k
│  │  │      / o9 ~. ^9 R" [4 s4 B. N5 G
│  │  ├─15 数组
* s5 i, _0 U: M4 t9 V$ B. g│  │  │      09.数组创建.mp4
8 ~9 p) h) }& S# g5 f* E# W' h│  │  │      10.数组元素的修改.mp4  X& T3 S3 N( v4 }0 G/ m5 c
│  │  │      11.数组元素角标的查找.mp4) H" |. t0 C, R
│  │  │      . ^/ z( t! q; f9 Z+ H
│  │  ├─16 when表达式
/ m$ Y0 [- [- _  A$ m% R5 [. b│  │  │      12.java的switch语句回顾.mp4% r  G0 ]0 n, o; i, s6 A
│  │  │      13.when表达式.mp4( U/ z2 J, b& ^0 N, N
│  │  │      13.when表达式.mp4.baiduyun.p.downloading
$ s" `/ j, Y/ A, i, S6 G  Y, T/ g; d│  │  │      14.when表达式加强.mp4
' c, Q. C, S/ A4 _+ w. V, D! X  y│  │  │      15.when表达式原理.mp4
! G2 {# b& [2 v# o│  │  │      16.when表达式不带参数.mp42 z; l$ t) O* M  ~$ q9 r' n( t0 c
│  │  │      17.when表达式返回值.mp4
4 K6 r$ v) A9 C│  │  │      18.when表达式练习.mp49 ^; C& E& N1 h; v
│  │  │      6 a4 d: [1 r' h+ V, q; f
│  │  ├─17 函数表达式
8 v7 ?9 _0 s) y│  │  │      19.函数表达式.mp45 `) i0 V8 W( `$ Q/ \4 `  A$ W% g
│  │  │      20.函数引用和匿名函数.mp4
# |) H8 Y' b* @' z$ S│  │  │      
8 `1 v: i. I/ h$ Y8 M  C│  │  ├─18 函数参数
% l: p; K; |% D+ v! r+ ]3 m0 N│  │  │      21.默认参数和具名参数.mp4
+ @3 D: U1 B  e' J3 y│  │  │      22.可变参数.mp4, j$ \* G- A4 J& `) a8 w
│  │  │      $ u: x5 p3 n/ S. I4 V
│  │  ├─19 kotlin异常处理
: d2 B2 ]* B' B! Z, }3 }│  │  │      23.kotlin的异常处理.mp4
$ b7 {5 X# V$ u8 j9 n6 t│  │  │      24.上午回顾.mp4
- q. S3 P* q# Y( D% ^& z│  │  │      
8 \8 E; v  O8 R/ E│  │  ├─2 IDEA下载安装
) h6 C+ [. \6 [' t│  │  │      07.idea下载.mp4) V/ ]2 _6 c  ~; x- n
│  │  │      08.idea启动.mp4
1 @0 u% M4 p0 `9 [2 X" a│  │  │      
  w6 b. S. ], _8 V# V4 `│  │  ├─20 递归- `9 h* Y$ V( j# r9 x
│  │  │      25.递归.mp4* k: L& P8 x/ r; P8 a1 z
│  │  │      26.斐波那契数列.mp4
/ q- v" B& C3 D6 w" i│  │  │      27.递归和迭代的对比.mp4
$ E% a% h2 O) d' @: i│  │  │      28.尾递归优化.mp4
8 a, `  k1 J+ Q# u% U( }│  │  │      
) c! n* }, R2 W" ?) J) [, n│  │  ├─3 IDEA使用' L, z. b: {; G& p- l1 t
│  │  │      09.helloworld.mp4) u- k* c% c: B0 _
│  │  │      10.导入设置.mp4. R, ]* c4 F$ g
│  │  │      11.java和kotlin运行流程.mp4. _1 j/ p, h  I" t, I
│  │  │      12.查看kotlin对应的java代码.mp4: P) p' K( M+ p& q1 G
│  │  │      & l1 t4 k9 o, \4 V
│  │  ├─4 kotlin数据类型
3 ]3 R5 |( y; L! Q│  │  │      13.基本数据类型定义.mp4
, l1 ?0 L9 [- Z; _& y1 P3 F5 A6 Z│  │  │      14.和java基本数据类型对比.mp4
. E% `) z9 j' D3 \& {8 k│  │  │      15.基本数据类型取值范围.mp4
' t3 j- t4 L* m/ i/ `6 F│  │  │      
5 q  V# p( K/ v3 t│  │  ├─5 二进制
  @( L/ [) ]1 A│  │  │      16.二进制基础.mp4  _7 [6 D* D0 O( x8 e/ O
│  │  │      8 F( K. S2 w' |! b$ n! M9 g% {
│  │  ├─6 变量定义. z$ t1 B& H8 a: `/ _
│  │  │      17.kotlin调用java.mp4! A( C8 P0 i; P9 }& @
│  │  │      18.智能类型推断和类型转换.mp4. {$ z2 c1 F! N$ L
│  │  │      19.可变变量和不可变变量.mp4
2 E5 V* Y; x- Q5 m, K9 T3 W1 }# R│  │  │      
1 r# O' \# s) g( ~6 p$ `6 P│  │  ├─7 字符串0 r$ D0 T3 e4 V! p9 a. E# [- X7 U+ G
│  │  │      20.字符串两种定义.mp47 r6 }2 G( ?& t8 H6 ~$ }8 X
│  │  │      21.字符串删除空格.mp40 [) T" B1 P# w
│  │  │      22.字符串比较.mp4! e3 D  t, p1 m: o: U
│  │  │      23.字符串切割和截取.mp42 w0 \5 @5 _$ |' c0 M- g
│  │  │      
4 G3 G& ]% t( A1 _8 R│  │  ├─8 元组
' j) p/ m& @) q; B2 [4 Y% |│  │  │      24.二元元组和三元元组.mp4& w; C  B6 `$ K8 K& f- f
│  │  │      
: s4 G+ K: b0 ?* v/ V# a6 ]│  │  └─9 空值处理
& s# h8 X( d, N0 i& c1 W│  │          25.空指针异常.mp4& C  I2 k- O# j' z* W# [3 U% u
│  │          26.空值处理运算符.mp4
+ m* O  {& ?* {  x│  │            |# z6 }0 K# [5 P* [5 V- {
│  ├─3-10 gradle7 V! h- J5 A: F0 M
│  │  ├─1 三种构建工具
& c# L7 M+ Q3 u, i7 j+ P' C│  │  │      02.原始人的工作方式.mp4
7 D9 m: ~* [# i0 W" q' @1 L( \% d│  │  │      03.三种构建工具对比.mp48 U8 {* V5 s7 J& }
│  │  │      04.gradle简介.mp4
& g6 O2 L) j( K6 I$ Y1 M3 A$ X. b* u│  │  │      # {. E/ M; p  w8 P$ _" W1 g
│  │  ├─10 多模块构建
; C( W2 t+ u: r3 Y( R, t4 X4 t│  │  │      30.多模块构建简介.mp4
# K, I4 G! Y- i+ o2 V  o│  │  │      31.多模块的依赖.mp44 N& n7 M6 _8 p. r% |" B
│  │  │      32.多模块构建.mp4  O, {6 ^( f6 q9 V' ]$ \
│  │  │      
/ f: U: t' `# f│  │  ├─11 groovy入门% ?8 M: y, R4 w% S/ n- E
│  │  │      33.查看groovy编写的gradle脚本.mp4
8 g7 W1 x8 L5 J4 a% X│  │  │      34.总结.mp4" J8 U! |( E/ ^
│  │  │      d8-01.回顾.mp4
) L0 {- J# }% [3 B│  │  │      : y( s/ Q. k- w5 ^! d% |: I
│  │  ├─2 gradle使用入门
$ {% d9 i* j/ w- h; K0 _│  │  │      05.gradle下载和配置.mp4
( @- c7 Z2 ]+ r, x( W│  │  │      06.gradle项目初始化.mp4
# F2 E8 }# q. C: ?! e$ A│  │  │      07.gradle打包.mp4
/ O2 \- `1 p  o│  │  │      
0 T7 t: y# F9 B- z9 I+ ~* o│  │  ├─3 gradle构建kotlin开发: ~5 E5 ?9 @: f- S  X
│  │  │      08.静态语言和动态语言.mp4
& \! Y9 j' d5 Z; k│  │  │      09.gradle支持kotlin开发.mp4
5 u+ D+ D3 Q2 r  ?( n6 k9 h% B│  │  │      
' _# S; o! F! }7 D! m$ v, q│  │  ├─4 task任务
2 l" Q7 `4 {9 F5 C6 M│  │  │      10.project和task.mp4
& A, F; B$ \  w" H, K% q# a6 ~│  │  │      11.第一个task任务.mp47 c: ]8 X7 Q) L# M
│  │  │      12.task依赖.mp4
/ w% d0 B" G% n' t( N0 K│  │  │      13.task生命周期.mp4
- L" S' @# R2 {4 @│  │  │      14.tasks任务集.mp4
) e0 E* G" f, E│  │  │      15.默认属性.mp4
  W" L& H. Q1 d+ M9 B│  │  │      7 ?0 h+ |9 T% u  T
│  │  ├─5 增量更新
( d, s* q3 ~7 K$ ^! n│  │  │      16.增量更新.mp4
& H1 Y# _* c9 j: |; e$ Q│  │  │        ^: T) V0 }& n8 z, T" a
│  │  ├─6 gradle使用插件! ?' D7 C- |7 H
│  │  │      17.常见的插件.mp4
8 ~2 |( U1 f- T) h; I% m8 k│  │  │      
8 o, {$ i/ v0 o) i' E8 L- a  t: m2 u│  │  ├─7 手动添加依赖8 C+ g* e1 T/ Y" L/ q
│  │  │      18.下载和导入httpclient的jar包.mp4
2 i1 }& D+ S, A5 x# A9 H│  │  │      19.使用httpclient.mp4. Z- D+ A  A$ `& L
│  │  │      20.解决httpclient依赖的问题.mp4
8 x8 }& x8 u; r5 q9 @- T3 E│  │  │      
- Q$ s/ a5 s5 o2 O! x9 P0 a│  │  ├─8 gradle添加依赖6 T$ k# ]& \3 }3 Z8 @$ B8 Y! I
│  │  │      21.高级程序员做法.mp4
5 I) ~' L. |2 l5 T/ }│  │  │      22.两种方案对比.mp4
& K+ R: j  n; m% `8 w9 H# m1 `1 n│  │  │      23.依赖管理的总结.mp4( \" C. m" J& ~3 A
│  │  │      24.常见的仓库.mp4
2 w( Z$ C- n& a4 m( A│  │  │      25.依赖的坐标.mp44 g( O2 y1 [( U8 u8 \' F2 Z, u
│  │  │      26.依赖的配置阶段.mp4: r# A8 u$ d- Y& m: k, r
│  │  │      
5 A( d( g: v/ ?: c/ d│  │  └─9 gradle依赖冲突解决方法/ A0 o: H: E& F* z3 {
│  │          27.版本冲突第一种解决方案.mp46 Q0 K+ C3 R+ H  v; c3 I! C) K
│  │          28.依赖冲突的解决.mp4. G$ ]: V6 @. {/ r7 A4 k
│  │          29.扩展gradle任务.mp41 k9 Q5 B& g& ^2 j: m1 G
│  │          . H, w4 S+ t4 w# R3 I+ X2 m
│  ├─3-11 协程% p: U" C" p5 l7 `; |
│  │  ├─1 线程2种开启方式
: N* G# J3 w1 j( \6 g/ y0 `│  │  │      01.工程准备.mp4) i, e5 e2 [3 y) q) b; [
│  │  │      02.创建线程的两种方式.mp4. R: @* K( q& j  G" @) |
│  │  │      8 S* m8 h  Y* n" y3 m$ P. r
│  │  ├─10 协程和线程  I/ S1 w) Q' C$ F- P; }
│  │  │      20.线程和协程效率对比.mp4/ w* N6 p. K0 [4 v8 n
│  │  │      2 k8 {  Z* t, S* R
│  │  ├─11 协程取消
# J; F# c9 r. t$ E│  │  │      21.协程取消.mp4
8 R2 G. M3 s# o2 m2 c│  │  │      22.协程取消失效.mp43 D9 E. [3 g- _6 L, l8 l
│  │  │      23.协程取消失效的处理.mp4; Q' j9 T) I( c. y  o
│  │  │      
/ y: w% k+ s$ z& F│  │  ├─12 协程异步启动
, A5 j; W: [; R│  │  │      24.协程async启动.mp4
8 o* }; z* x1 k│  │  │      25.协程上下文指定.mp4; X  _; q' k6 o( Z$ ^( j6 Q
│  │  │      / ~; K: u6 d' Z: i4 W
│  │  ├─2 线程安全问题0 V% h# g) W) p1 k# H( `" M6 _
│  │  │      03.通过Thread直接卖票缺点.mp4
" }8 ?/ C8 v; ~: H│  │  │      04.通过Runnable方式共享线程间数据.mp4
, B1 _# r8 p( ~" h2 m4 p- q│  │  │      05.线程安全问题解决.mp4
8 q, I+ V8 Y5 ]) p# x│  │  │      * r4 B, g8 L. Q& a, w" k+ M
│  │  ├─3 线程join
! f4 K; B- D2 E1 Q3 i│  │  │      06.线程join.mp45 V8 G3 C) t4 P3 I
│  │  │      
5 d. G0 F, a2 G& t- b: @- [│  │  ├─4 守护线程
8 D0 ?5 A/ |, Y+ i) L; V% f$ O│  │  │      07.守护线程.mp44 g6 `; _! h9 L: p' m% \) u" O
│  │  │      
4 l  e; ^8 m/ A9 k2 k5 |: b8 s│  │  ├─5 线程池
# e: r4 t4 B) F2 q│  │  │      08.线程池.mp4
4 I, X. s, S) N8 s! q6 e│  │  │      
9 I9 [8 Q: |/ N5 [│  │  ├─6 协程入门$ _9 L2 u2 `$ C- g9 l2 y
│  │  │      09.第一个协程启动.mp4' D5 g& ^' A/ }% K  ^9 n4 d7 r* N
│  │  │      10.协程打印数据.mp4
6 L7 m( D( O' ?* k8 m& {1 D│  │  │      11.关闭https.mp4/ P! e9 q2 u, Q/ ?  [6 a
│  │  │      : v  _. j' D! @- M2 g+ v7 l
│  │  ├─7 协程源码解析
% t4 T1 u0 ?6 \% j1 g│  │  │      12.launch函数的参数和返回值.mp4
9 }/ H* u% S6 P  p│  │  │      13.launch函数第一个参数.mp4
+ p3 _% v8 {1 _│  │  │      14.ForkJoinPool的原理.mp4
2 Z# M0 m6 v# y% l) Y. P│  │  │      15.协程启动之后的处理.mp4
1 ~" d  O; t+ V9 X& C( m# v! B/ H│  │  │      - ^" F5 B; s/ }% R2 E9 @. T/ }& T
│  │  ├─8 协程实现原理% C3 g& N6 n1 b# U% d4 p
│  │  │      17.协程实现原理.mp4
' V6 ?# a8 x4 W) u$ j: x) u│  │  │      18.协程执行原理解析.mp41 H0 [  @/ B' V4 ]
│  │  │      " C6 O, D- T. }% L( [4 }. Y7 P" I
│  │  └─9 挂起函数
% E) i& x" r& ~, t* d│  │          19.挂起函数.mp4" q# _4 q. K5 k% v; ?8 w, p/ |2 b
│  │         
" q# M2 M- r' S- O; S/ I9 @0 `│  ├─3-12 版本控制
) L, Y4 a3 |; i│  │  ├─1 版本控控制工具介绍; z. {  h6 F( n
│  │  │      02.版本控制工具作用.mp49 Z1 Q$ v0 ~! b  B! H' V/ ^; Z
│  │  │      03.版本控制工具集中式和分布式.mp4
, G& v' N3 L7 K6 q) i│  │  │      04.git的产生.mp48 m; E4 ^7 U$ N) ^& B( B/ U: {
│  │  │      ' G9 A9 z1 I! c+ Y2 J; i9 k
│  │  ├─2 git提交文件# {" y$ T- m/ y6 Q8 C5 }
│  │  │      05.安装git.mp4, ~3 v+ I8 }$ t
│  │  │      06.自我介绍给git_以后提交名称.mp4
6 ~! h. i# `& b4 L│  │  │      07.git初始化.mp4
( Z- V7 j+ A/ D  f  V$ H│  │  │      08.忽略文件.mp4; {+ ~/ f8 u' T- `
│  │  │      09.git status查看状态.mp4
. ~6 A1 B2 R. K% F5 V8 p3 G0 \│  │  │      10.添加和提交的命令.mp47 g. w# [& C' K
│  │  │      11.git log查看提交记录.mp4
  W) V: A- b3 k5 s( L│  │  │      12..gitignore作用.mp4
* v- c9 f* M# }* K+ V│  │  │      13.提交流程回顾.mp4
0 d1 l0 U' }0 G. ^& ?, n) ^9 z│  │  │      ' u. L3 s, H# m+ d1 [' W
│  │  ├─3 版本回退
5 ~: h: `: Y0 x$ J( \4 {6 p, V│  │  │      14.版本回退.mp4+ @" d; X8 g) c7 M
│  │  │      15.回退到原来的版本.mp4
3 c' Q5 Q$ |+ J+ O9 s/ Q7 y* f│  │  │      16.小bug.mp4; \6 U6 ~* r: k" X1 b$ c; I2 ^
│  │  │      2 y* n1 W3 ~" v6 u0 ^4 ^
│  │  ├─4 git分支3 q' g3 Z1 x( |& @) X( N+ H
│  │  │      17.分支创建切换和删除分支.mp4
/ f4 {9 _; y1 E│  │  │      18.分支合并1.mp4
: Y+ `: k( J  J3 A│  │  │      19.合并冲突解决.mp4+ C# u; M, P  p& C% K  b
│  │  │      7 ~7 K/ F1 r7 t+ E, P7 m
│  │  └─5 Github的使用
9 v* t: D- a9 X5 `# M│  │          20.github简介.mp4
/ c% l# G; j( Y; \# k' V3 v│  │          21.生成公钥和私钥.mp4
1 J2 i, _7 X" [- E  I% |│  │          22.创建远程仓库.mp4
3 A- x3 a% E0 P) C* q5 o│  │          23.关联远程仓库.mp4( Y8 o' a# [3 d6 T" i
│  │          24.推送到远程分支.mp4! J. G, R- ]- I# l
│  │          25.推送其他分支.mp42 u8 p: Q* {4 p3 U! [5 a* ~& h
│  │          26.zhangsan分支开发及推送.mp4& u" T! B, y$ r: U. F4 T; h
│  │          27.zhangsan推送master分支到远程master分支.mp43 }/ B$ v' W. I* j
│  │          28.新用户克隆代码.mp4
2 X' K8 W. e! U7 B│  │          29.lisi推送分支到远程分支.mp4; P) \! k6 y2 _2 k- o, @7 K
│  │          30.推送到远程仓库冲突解决.mp4
8 z- I% w1 p1 F+ y│  │         
" S3 m# K; x/ z6 S7 E2 |│  ├─3-2 kotlin面向对象3 x% O$ [( `. ^3 X5 K: R
│  │  ├─1 面向对象入门0 h2 \- [9 ^2 C
│  │  │      29.面向对象.mp4
* r: n' N5 O% |% f# h1 x" b│  │  │      
+ l5 t: f" n) A3 @* t; a│  │  ├─2 运算符. `% d) c9 I. q7 [; w3 P9 J) @; k
│  │  │      02.运算符重载练习.mp4
- _: f. N/ e4 t$ o4 ]+ g' w│  │  │      30.kotlin的运算符.mp49 u- O# f9 W# e7 D0 |' ^
│  │  │      31.运算符.mp4
4 o$ `' Q* [8 S/ m│  │  │      d3-01.回顾.mp4; I9 F* V" P- B9 a8 ?2 T( p8 T6 z
│  │  │      
7 g* @5 R8 r- o+ q│  │  ├─3 访问器8 [  ~- {# J8 _+ D( [
│  │  │      03.get和set方法.mp4* a( _4 H% D" o! K: |
│  │  │      04.访问器可见性.mp4
) m) O8 T' A4 L8 j' {7 ~│  │  │      05.修改访问器.mp4! \, [* n. S6 ]  Z! |8 ^8 H# [* b
│  │  │      ; D, X" l; S2 k- F
│  │  ├─4 kotlin对象创建过程
% d& {, n* o# j│  │  │      06.对象中init使用.mp4
. U& D- l5 x* _0 {  g! l' ~│  │  │      07.构建函数参数使用var和val.mp4
) ]& [: H4 ^/ t! g! s" s│  │  │      08.次构函数定义.mp4
$ I1 T) v2 }7 W$ {6 G! N( u│  │  │      09.次构函数参数使用.mp4
  x+ Y1 X2 J( t: ^# w( j- U+ M│  │  │      10.init和次构执行顺序.mp4
6 v3 |3 L( Y2 F* C, h& ?│  │  │      
' j$ o  Q* k+ e  V- N+ N│  │  ├─5 封装5 d: c# v! m# h8 Y( R, M1 W" D
│  │  │      11.封装.mp4( q. ]" W9 I- n, J/ ^
│  │  │      
5 L2 Y) W9 v  `- ]. D. U! e' e" P7 M│  │  ├─6 继承
3 r7 _8 k/ e6 w, _. {, S│  │  │      12.继承.mp41 t- W7 Q9 O5 ]( F
│  │  │      * R3 a/ C! F/ s7 o7 W- w3 n6 Z! `
│  │  ├─7 抽象6 t6 E  ?5 }9 l
│  │  │      13.抽象类.mp4
& t( \8 `+ n" E8 C' e( C7 C0 ^3 B│  │  │      14.抽象类总结.mp4( s2 q  i/ b6 v
│  │  │      : {: i- t) v6 h. P( [9 p' d
│  │  ├─8 接口
/ [9 c7 A' ^/ z; S( W+ @│  │  │      15.接口.mp4% b, N: t3 _" s9 y) G8 G) _4 x
│  │  │      16.接口中字段处理.mp4
/ O8 v/ W9 u% K; r, k│  │  │      17.接口中方法的实现.mp4" F, A& O! I7 ~" Q
│  │  │      18.多态.mp47 v8 T0 {, r% P. s! x( ?- ^
│  │  │      
7 S2 Z; O5 B3 y% Z* Q: k│  │  └─9 面向对象综合案例7 D' l# G2 e2 V5 m1 U, X
│  │          19.智能类型转换.mp47 _5 ~5 P, F  Q; Z. {" {% H* Y
│  │          $ a: k7 g" C0 u6 x
│  ├─3-3 kotlin基础高级, m7 y7 n) ^( ^" H4 V: P
│  │  ├─ 1 嵌套类和内部类
) M5 |, [$ A2 `+ w  ~9 n│  │  │      20.嵌套类和内部类.mp4
# A( `  y* m) j) Z9 G/ _& C│  │  │      21.内部类中使用this.mp4
& d$ C5 R6 w4 k" ~" K│  │  │      5 H8 k$ p" U8 M
│  │  ├─10 数据类( p$ K' N0 s, k) P+ j
│  │  │      19.数据类.mp4) _) F+ A* p. c2 {+ L% @& T
│  │  │      
- D1 G! Z% q* o│  │  ├─11 密封类) g$ k6 g5 j* W; d
│  │  │      20.密封类.mp4+ x) q: X* Z# o# X) S' [
│  │  │      + G/ x* h% X7 x/ \
│  │  ├─2 泛型) |0 f9 }1 _: _6 }8 H
│  │  │      22.泛型类.mp4/ F1 n$ x7 J/ }2 ~" @0 [
│  │  │      23.泛型函数.mp4- j. o$ I8 |. V- F6 \
│  │  │      24.回顾.mp4
) C3 a# n" y4 W/ @% G: o1 _│  │  │      25.泛型上限.mp44 `: Z- Z1 `9 K8 [7 b$ ]1 g; j
│  │  │      26.泛型擦除.mp4
( g5 a, m, U: H# m│  │  │      27.泛型类型投射.mp48 W: J) H3 m  n. C9 k2 M1 K. g
│  │  │      28.星号投射.mp4
: h# d3 X8 k. j; w│  │  │      # t4 i5 J; m# {0 n3 _
│  │  ├─3 中缀表达式
8 W- E- _4 f9 s# y│  │  │      02.中缀表达式.mp4, ~/ ]; X* Y- _+ d+ n2 ?3 n+ Y
│  │  │      d4-01.回顾.mp4
, W* R, K( K4 j0 Y2 ?│  │  │      0 r. x4 o7 e6 ?
│  │  ├─4 类委托和属性委托
5 Z, @+ v, e- D$ Z, S" F│  │  │      03.类委托.mp4
, ?" H3 a" T- \. Y0 D: b- y│  │  │      04.类委托实现方式二.mp4
0 V( ]+ t) p# r" ]│  │  │      05.委托加强.mp4
" s& v! v: e1 ?│  │  │      06.属性委托.mp48 g: q8 C+ g* s
│  │  │      ' t8 C2 L; h5 D3 a5 I7 c
│  │  ├─5 懒加载1 b) t/ [# ^. ~+ D) U9 \9 Y
│  │  │      07.by lazy惰性加载.mp4
# {7 F  a# M) y: q) p│  │  │      08.by lazy和lateinit.mp4# C6 g- }% V% r, ?7 a
│  │  │      
6 t4 ~$ A) M8 F│  │  ├─6 扩展函数
8 s# m+ Y+ B# a! l9 X. P2 O2 A│  │  │      09.扩展函数.mp4
3 P$ `3 B6 R& O) w' t│  │  │      10.父类扩展函数子类调用.mp4
0 q8 C. b& Z* k4 X' ~: a│  │  │      8 `9 m( F, T2 L9 W
│  │  ├─7 单例模式+ h4 @9 ?1 @+ H
│  │  │      11.单例模式一_饿汉式.mp4
( ?9 G# G2 k, u7 x8 t5 Z) D│  │  │      12.单例模式二_懒汉式.mp4
8 L& {- r( B$ c+ Z; V│  │  │      
5 ^0 D' i& X! b( s& m! d/ V│  │  ├─8 object单例
; Z/ [) D1 y# o0 ]4 Y│  │  │      13.object单例.mp4
  a3 w5 Z. X: u& m2 H4 y│  │  │      14.object单例问题.mp4: E: x; F0 M0 @- L" ?
│  │  │      15.伴生对象.mp4. [6 {1 {: _: \* W
│  │  │      16.实现和java一样的单例.mp4& p. t1 w, w) f8 f) u4 i
│  │  │      . u4 a: f% Z5 k% E1 i4 c
│  │  └─9 枚举1 u* b% c" Y+ O% e, [0 L
│  │          17.枚举.mp4
1 v2 n, X: l5 B, A│  │          18.枚举的高级用法.mp4
& {* _# [6 \" o8 A6 s│  │         
4 h' L& O0 y* }3 f2 [% Z  ~, V│  ├─3-4 集合
# P! p* ]% E$ k% x9 c7 W6 D│  │  └─1 集合函数
5 r2 S4 T- M9 Q6 H│  │          02.java集合回顾.mp4; D7 r+ D' F; j4 X
│  │          03.koltin创建java的List集合.mp44 d2 }' j# i/ i8 c! F# }6 ^
│  │          04.kotlin的set集合.mp4
6 }' u9 h' P' e2 K& S% i0 ]│  │          05.map集合的创建.mp4+ f* \4 C9 N8 g5 N  w8 S5 J. r
│  │          06.map集合的遍历.mp4! e5 H* ~$ W5 @/ O) p# D
│  │          d5-01.回顾.mp4
) S3 p/ i$ b* M0 b, i5 b│  │         
) K! Q" X* v2 S" Q1 P# c' s│  ├─3-5 lambda表达
1 T7 w9 b# {4 a" f: `, a7 P│  │  └─1 lambda表达% ]) J0 j& |, h" s$ d1 z5 n0 P! h! Z
│  │          07.闭包.mp4
- z( A' e4 e$ Z4 L* q+ U  o│  │          08.高阶函数.mp4) P. m: |  l0 M  s& I) [: k2 E9 S
│  │          09.lambda表达式.mp4
+ ^2 x1 N* l% `" d1 l8 _$ Z2 P│  │          10.lambda表达式去().mp4
3 S/ N6 V. }: i3 N. x- b3 l" W7 e│  │          11.有参lambda表达式.mp4) o; ]& ~8 `6 {+ ~6 f
│  │          12.保存lamba表达式.mp4
; M, X: Z: z+ l7 L│  │          13.lambda表达式使用it.mp4' J  l, M7 f, ^- l& J6 R
│  │          14.lambda表达式返回值.mp4
5 h" n; l4 E0 A! ^8 y. `. g│  │          15.常见lambda表达式foreach.mp4/ d! O& [3 K: K  L) i* D
│  │          16.常见的lambda表达式indexoffirst.mp4
. ~' N, \4 x" K. K3 Q1 y, ]) P│  │         
. r9 a1 @( c1 G, F│  ├─3-6 集合函数
: A9 l; [* r7 O: t9 \8 y( {1 v│  │  ├─1 集合函数
0 s# D5 ~1 c; G: a/ \, h│  │  │      17.查询练习.mp4  C% I# E. \" d# S5 A/ Q2 [
│  │  │      18.过滤.mp41 Q( `0 n1 B$ w2 [( V
│  │  │      19.排序.mp42 q5 X7 s* ]1 f$ g3 a
│  │  │      20.分组.mp43 K2 C. V) F. S
│  │  │      21.最值.mp4- u/ m4 l' @7 L/ x- S
│  │  │      22.去重复.mp4
( J# k9 T- j8 @. s( w│  │  │      23.集合拆分.mp4' F. {! c" U, F4 h; z" Y# c  _
│  │  │      24.集合重新组合.mp4
; l, p& _- b7 D2 m! ~4 O. F│  │  │      25.集合相加.mp40 c5 W+ c7 c, b- ?; T  x4 M
│  │  │      26.上午回顾.mp4
$ D# T6 Y0 Y; B│  │  │      
" x+ n% [& ]0 q& I3 m) W# L/ ~. Q6 T│  │  └─2 四大函数
+ i3 d1 t9 j/ N& [│  │          27.大接收者的函数字面值.mp4
1 x6 C' z  j) o* R│  │          28.apply函数.mp49 X0 I. N+ @: _$ L& A! X
│  │          29.let函数.mp4) o$ y: V6 H; b6 D3 |1 Z2 d, A
│  │          30.with函数.mp45 L3 G7 n$ p1 a" V7 ^  c
│  │          31.run函数.mp4
0 _- R" d5 N, |8 j│  │         
3 y9 t& q9 @  q3 P& d+ V│  ├─3-7 回调
/ J; P" {5 {5 ]4 C: g│  │  ├─1 接口回调! a/ @- V+ _, _- x
│  │  │      32.案例前提.mp48 V" P- c0 E$ H8 U* T" _" e
│  │  │      33.接口回调.mp47 f8 t$ p! y% U2 V/ j
│  │  │      34.接口回调流程.mp4
2 _! Y6 Y: Q  d│  │  │      
' l, y+ x$ y% S3 ^/ K$ n& r│  │  └─2 函数回调
! q! O. S: R6 `: N2 Z│  │          35.函数回调.mp4
  Z% W2 Q# I# p) w$ t│  │          36.接口回调和函数回调的对比.mp4
% a$ |, j0 \7 i5 i' q! i9 M│  │          ( H  k1 D; v% `) y( e* N1 X$ E
│  ├─3-8 集合函数综合案例
' y; G. D  e* N7 b8 D│  │  └─1 集合函数综合案例  V3 K) e# C! B0 n5 p
│  │          02.数据库案例查询.mp4
% R3 B3 @: T5 }! v2 K│  │          03.黑马商店练习.mp4& U0 R" N: Z7 n/ j
│  │          d6-01.回顾.mp41 d2 y2 {& r# J- f
│  │          , o6 I$ F5 b  ]- G# t/ Y& M
│  └─3-9 dsl( N# O, v& K% ?0 n' c- a/ l1 K
│      ├─1 dsl入门
5 c4 {% h& s: O- C4 G│      │      04.DSL简介.mp41 ?- Z- M* ^1 ]7 s8 L6 ]+ U. e* W. k
│      │      05.class的普通实现.mp4+ V8 X4 B. U5 t: l" a
│      │      06.实现person函数.mp4
% ~5 `8 L; a1 u4 l; m│      │      07.实现name属性的赋值.mp4
& A- A" N/ @/ ~6 k. U│      │      08.address函数实现.mp4' ^2 X  I5 c) q3 U8 X. E
│      │      09.address里面字段的使用.mp4
7 L# v& d4 B& D% ^( N# o/ ^│      │      10.dsl流程.mp4
( a' N7 M8 ~$ G│      │      11.dsl优化.mp40 b/ k5 W% _/ h" A+ S
│      │      12.dsl总结.mp47 h2 I! T# D5 `! j
│      │      $ h  i5 `9 C/ C! _# D
│      ├─2 dsl综合案例1 G! ]  Q1 S. e4 t
│      │      13.普通实现html标签打印.mp4# i' T3 M! `6 |* V; f- K- T
│      │      14.html实现.mp43 E( ?. K: U7 U% K
│      │      15.head实现.mp42 P, Q& a. E0 y( t. O+ Q: Q, ~0 S
│      │      16.body标签.mp43 x* n, S7 F8 X* Z  ]8 x
│      │      17.div标签.mp4  z' I! z9 {2 _6 {! e
│      │      
8 ^: j& f6 q; |" T1 H& [│      ├─3 构建器模式7 a% a7 V0 t  I3 X0 S; v% D1 t
│      │      18.构建器模式.mp4
5 P4 g$ d$ m2 I8 g: H9 _+ Q( A  {│      │      19.DSL构建器.mp4# w5 d! N/ ?* Y  `% Z! c
│      │      20.通过构建器模式实现多个address.mp4
) e0 H5 k0 e) N5 W$ p* o" o: i│      │      21.多个address使用.mp4- T! x8 Y" z9 O0 g, @3 D2 s
│      │      4 n6 S8 c7 K2 L6 |) r, y. B0 G
│      └─4 dsl缩小作用域* l$ M& l2 |+ O
│              22.缩小作用域.mp47 E) j( A/ ]2 d! U! m8 m
│              4 m! |* p  C+ i; X! z  b) D2 x
├─4阶段 区@块链前端基础. m% R: `0 A, l% f( |2 D
│  ├─4-1 HTML
; _/ {, j/ W; ^3 @9 H5 M+ J1 I│  │  ├─ 2 html基础标签  d, C. z5 A! u
│  │  │      05_标题标签.mp4$ w# V3 e. v! B" G/ e
│  │  │      06_字体标签.mp4
9 |+ d5 Z* O. u│  │  │      07_颜色的使用.mp4
  v4 }) a4 i" o# B& }% Y" `& ?│  │  │      08_其他标签.mp4
% w1 q1 f9 T; G) Z│  │  │      09_图片标签.mp47 f1 S" w0 h* N! V3 Z0 e% r
│  │  │      
; f8 O/ r% `& P& t$ n$ g│  │  ├─1 html入门( u# ]  q; x2 \4 M+ l
│  │  │      02_入门.mp43 g9 M5 y! I: i9 Z
│  │  │      03_资料和软件.mp4! N0 I' Z" z+ ]/ D& X
│  │  │      04_html文档的基本结构.mp4
  E6 N3 T3 b1 A. P' d4 J& c│  │  │      6 Q  s- O- u4 @6 O
│  │  ├─10 表单标签
$ K7 j, {- o  Z/ [( E│  │  │      21_基本表格.mp4
& ]6 ?* i& A& [│  │  │      22_下拉框和文本域.mp4
& c7 O" J' r0 _3 s) @│  │  │      23_常用属性和默认值.mp4
  M7 W* P# S- V9 Q9 @│  │  │      24_表单的属性.mp4
( f0 U' c0 t2 O; T8 v│  │  │      24_表单的属性.mp4.baiduyun.p.downloading
2 C$ u/ ]! n( y0 c& Q. }│  │  │      
& W- q$ L6 _8 d# |) A│  │  ├─11 html学习方法& H$ ^; z' d' r+ z
│  │  │      25_学习方法.mp4) k! w1 O. d3 }' B% i) i
│  │  │      
( h% _1 Z: k4 I7 c% H* Q. n- o│  │  ├─3 案例_程序猿
) L/ Z% }) k; g/ c8 e3 A3 ?│  │  │      10_案例_程序猿.mp41 t6 J8 r7 X2 M, Z/ Z
│  │  │      
$ S6 S+ O( y" Y) U  A0 T│  │  ├─4 html列表标签
( m4 ]' s6 {$ h1 x* `│  │  │      11_列表标签.mp4# [: |( t1 ?: I& {
│  │  │      2 z. R" m8 d# D0 }# A  h
│  │  ├─5 html超链接标签
5 o$ U9 e2 H$ X( t│  │  │      12_a标签.mp4. N" ^* T+ X& q! Y+ s3 l
│  │  │      
1 A" L4 q' \# D+ c6 P5 F5 A│  │  ├─6 案例_友情链接7 |9 O& ?8 e: X0 x+ k4 {' K9 }
│  │  │      13_案例_友情链接.mp41 _/ z) M) M! G) F" @! M5 j
│  │  │      ) `8 M* [- h- ^' H1 n0 B/ z
│  │  ├─7 案例_回到顶部
7 g# \8 M4 r3 f$ F* z' g│  │  │      14_案例_回到顶部.mp4  e0 f0 r3 ~: d
│  │  │      4 D! _5 }. i$ j" {. D
│  │  ├─8 html表格标签
1 f/ ~$ k, ?# y5 c7 C9 X- \5 \# n( `│  │  │      15_基本表格.mp4( Q  d) ?5 a2 d- P* i: H
│  │  │      16_表格的属性.mp4
& Y! c- n! }7 m: f8 Y% p% R│  │  │      17_表格的结构标签.mp4
6 X; `1 q4 M$ h│  │  │      18_行和列的删除.mp4
1 |9 a, O4 m6 Q6 e│  │  │      19_单元格的合并.mp4- P- a3 l8 ~9 }8 @* L
│  │  │      6 E8 i$ B3 V' G0 l6 x1 J
│  │  └─9 html框架集标签* u9 u! F0 v) J  X. F3 z" G
│  │          20_框架集.mp4: ]* \% N2 ?2 v1 o* y! ?
│  │          8 b- p7 e* ]& s! z, h
│  ├─4-2 CSS3 h. e% ^( j5 n; @9 S
│  │  ├─1 css入门
9 d/ _2 U3 N9 q6 b8 y│  │  │      01_CSS的简介.mp4: o  D8 U# ]1 D/ n9 Y/ M: s; v
│  │  │      02_入门_QcrI3.mp4& `! x5 O6 h0 s% A0 a/ U0 k
│  │  │      # d! n  o" ~( \: R# j
│  │  ├─10 CSS定位/ w+ k; V( [; s6 t6 o. b9 q
│  │  │      32_相对定位.mp4) C1 F7 q) }9 r: v
│  │  │      33_绝对定位.mp40 w& g# l  ]0 U$ N; B
│  │  │      34_浮动.mp4: @8 G4 g5 [" K8 k  ^
│  │  │      35_其他属性.mp4
, \% p1 P: t- C3 |│  │  │      
# L  h4 D; }9 z5 K* H+ h│  │  ├─2 css使用方法
% F5 x8 S0 l7 A( v7 h- A│  │  │      03_使用方式1_行内样式.mp4
( S& b% f( L8 c  s; S│  │  │      04_使用方式2_内部样式.mp4" c$ ?7 c0 W* y* G* p6 x$ J1 |
│  │  │      05_使用方式3_外部样式.mp4
3 F( Y! E4 N% m" f% x│  │  │      06_使用方式4_导入式样式.mp4
3 a% Z, J* H8 n) D' ~  s│  │  │      07_优先级.mp4
8 p0 |6 b# e3 ^9 b+ w│  │  │      
' f& _( J4 }0 R( K* K│  │  ├─3 css学习方法
$ W2 s: g. T3 e/ U│  │  │      08_CSS学习方法.mp4$ K$ \0 J4 b2 F
│  │  │      
, r5 F. C8 X) B; X9 M│  │  ├─4 css选择器" u8 t2 l& {& B
│  │  │      09_标签选择器.mp4
: L+ l" d6 o8 O% D7 ^│  │  │      10_类选择器.mp4# J5 H" |4 m6 F3 I" q
│  │  │      11_ID选择器.mp4
  @" K8 x7 n& G: y7 V$ S│  │  │      12_群组选择器.mp41 }& n: f1 I: W, m, A
│  │  │      13_全局选择器.mp4
" R& U$ f' w1 B8 l: g  u$ @% T│  │  │      14_DOM的关系.mp4
/ @7 t2 x; J8 p: C│  │  │      15_后代选择器.mp4
5 e& [% E! f/ p: C, Z│  │  │      16_子元素选择器.mp4
9 a; p2 V- L- Z- A# |! z  u│  │  │      17_ID选择器.mp4
8 {0 ~+ `( z7 T) N/ A( T+ ^│  │  │      18_伪类选择器.mp4
/ f+ P8 R5 n5 r7 O3 B│  │  │      0 ?* K6 S  `* z2 [) J8 J7 G
│  │  ├─5 css继承( G# K9 ]9 r7 t# c4 H' A
│  │  │      19_继承.mp4) M- |* q8 [. A  Z1 }- n  g8 r6 Y
│  │  │      
1 L; U4 [) t" u2 g2 M6 B5 o│  │  ├─6 css层叠
  J3 R8 m( f2 i$ c( F* n* _( ?│  │  │      20_层叠.mp4
) i8 s9 R7 }( P9 ]5 k7 ]│  │  │      . M  p! k! w* J& [$ w
│  │  ├─7 css命名规范: K3 J& t" ?: p( y) D, W2 `% h
│  │  │      21_命名规范.mp4: k0 @, m0 T1 ?8 \" d% n& ^
│  │  │      ) ~; o! R' l+ y1 `( o2 x. Z
│  │  ├─8 css常用样式3 N! X7 i3 v$ h
│  │  │      22_背景样式.mp4
( N, T4 e6 K# x1 U2 o│  │  │      23_文本样式.mp4
  Q" c' i5 Y& H  v- B6 |│  │  │      24_字体样式.mp4
+ z9 Y  Y0 A( O' X│  │  │      25_列表样式.mp4
& [6 a3 K( ~( ?; E! F4 `│  │  │      26_表格样式.mp4
; w5 c. p# Q! E$ G/ [8 p│  │  │      27_轮廓样式.mp44 h( U2 ^, t. ^5 s) }# a% s
│  │  │      ( ?5 K( r/ _) I5 N5 ?3 p
│  │  └─9 盒子模型* }) k$ n3 F9 S5 v  L
│  │          28_盒子的简介.mp4
7 _2 w. n% G( P0 J! d1 P5 E│  │          29_内边距和外边距.mp4
2 v* {; V% _! G│  │          30_盒子的注意事项.mp4% D, {! t2 T* e! l! c! Y
│  │          31_HTML元素的分类.mp4
/ X3 }: o8 k  N& b( Z│  │          8 _) y5 ?6 l6 l, k
│  ├─4-3 JavaScript
* w/ I' w, }& ~+ |/ h) |( J( R& f│  │  ├─1 js简介
+ A& W( C9 n6 x3 t│  │  │      01_js的简介.mp4* O* b# q+ C" Q) B; ?1 ?: |1 r" N
│  │  │      . @6 \1 R0 e/ k* _! k
│  │  ├─10 案例_隔行换色
) C; S6 X+ J- q2 m6 B  n4 N1 ?│  │  │      案例6_各行换色.mp4
% ~% X& ?4 W& e# @│  │  │      
. ]: W9 I- x" R4 k3 ~7 h│  │  ├─11 案例_全选全不选+ |$ h7 d2 N$ B& O0 Z
│  │  │      案例7_全选全不选.mp4
# Q0 c- T) f+ ^│  │  │      : w8 W% P$ }! |$ Z0 W
│  │  ├─12 案例_省市联动
6 m' k; r4 ]2 P. x. G+ k5 |' d│  │  │      案例8_省市联动.mp4
9 X) r7 @6 z3 n1 @. n( N│  │  │      ) f& u! t3 J3 h" q+ S; \2 g+ k
│  │  ├─2 js基础语法) y7 {4 S2 M  v! k+ p% t
│  │  │      02_基本数据类型.mp4% m$ N. d! ^. i" u7 a
│  │  │      03_运算符.mp4
1 Z# w$ c8 V  {  }0 i% b) z+ t+ ^│  │  │      04_流程控制语句.mp4( B6 {$ ?4 Y+ w: C
│  │  │      05_函数的定义.mp4
9 A( f0 m* a' m' y4 ~/ i& A  o│  │  │      06_函数绑定的第一种方式.mp4
7 ^1 O$ \6 l5 `3 H" B  t) _- w6 f- K│  │  │      07_函数绑定的第二种方式.mp4
$ r4 \2 s( F# U│  │  │      08_数组.mp4
6 A9 c1 C( D3 s│  │  │      09_正则表达式.mp41 I  \5 n/ B9 B* V; h; x
│  │  │      10_日期对象.mp45 X# \' v6 m/ D0 {8 `9 q
│  │  │      
$ V/ q( p+ C% p# Q- L2 f│  │  ├─3 DOM介绍) P! C; `8 I& l7 {7 P5 D9 t
│  │  │      11_元素的查找.mp4. B9 s4 o, ~5 s+ n1 F
│  │  │      11_元素的查找.mp4.baiduyun.p.downloading& J4 m, [  k) g7 h+ u  r
│  │  │      12_设置CSS样式.mp4
( J5 y! g3 b$ T│  │  │      13_内容的获取和设置.mp4
% |) M" Y8 L/ I1 S2 E- K' i│  │  │      14_属性的获取和设置.mp4
+ G- `7 c/ y+ f* W# N' D│  │  │      15_鼠标相关的事件.mp4! M- ]4 s7 C( t0 J% v
│  │  │      16_输入框相关的事件.mp4
& O7 Y( C$ K# M9 T  p2 F+ f│  │  │      17_表单提交事件.mp4  {# _9 P1 F% a+ ]( ~% o! e
│  │  │      18_onChange事件.mp4) n# B& \3 ^6 S
│  │  │      19_键盘事件.mp4- Z! F" o8 L2 ?5 B
│  │  │      
9 L9 h3 ]( V! q$ h/ T│  │  ├─4 BOM介绍
3 ~  W  h$ V  k5 C! r; z: E- f│  │  │      01_window介绍1.mp4
  \1 j4 d. ^$ x0 j! i2 r│  │  │      01_window介绍1.mp4.baiduyun.downloading3 u8 U7 [* z6 q* n2 h
│  │  │      02_定时器.mp4
- e$ M/ S$ V9 ?; m3 c8 W│  │  │      03_history和location.mp4% f' M7 ]  m/ C( @
│  │  │      3 A+ B2 w) h  D) x* Y
│  │  ├─5 案例_记事本" [, z) ^  e3 s
│  │  │      案例1记事本_实现.mp4
+ k) w/ [$ ?9 j) G; \│  │  │      案例1记事本_思路分析.mp4
+ E! w7 i  ]; _7 J  M- W2 u3 D" P: V│  │  │      
* k+ U% Y% F. p/ b9 `* k- _│  │  ├─6 案例_任务清单
$ T# L! _+ Y8 p5 c│  │  │      案例2任务清单_1_保存数据.mp4
+ h3 ~+ T( |' i! s│  │  │      案例2任务清单_2_加载数据.mp4/ m9 R$ r: Q" n' w( i
│  │  │      案例2任务清单_3_修复bug.mp4
( q* o* L. {0 J: Y│  │  │      案例2任务清单_4_设置样式.mp4
' i2 O& V* r) Y1 {2 Y/ k6 s│  │  │      案例2任务清单_实现思路.mp4
3 P/ j" `8 f2 ?  H  E+ b│  │  │      ( [) \# ]% h5 B+ ~
│  │  ├─7 案例_表单校验- z4 G3 V0 t3 C9 G: k
│  │  │      案例3表单校验_1_手机号和密码的校验.mp4
3 [2 |' N. |2 C9 ]' c; G: @9 j0 ~│  │  │      案例3表单校验_2_其他校验.mp45 f# W# a- K+ X7 G. L$ G4 Q; Q
│  │  │      案例3表单校验_3_校验表单.mp4( B- {( D* d. X# G
│  │  │      # n; y- k% `5 o0 G9 z4 Q* ?" e% _: |
│  │  ├─8 案例_轮播图3 @* ]+ n  f4 P5 d
│  │  │      案例4_轮播图.mp4/ E7 i+ c& \* _' ]$ U% U  ?7 G* Q
│  │  │      2 i0 U- R: z# v5 L3 t- c
│  │  └─9 案例_弹出广告
8 J6 a1 P6 X' F" C│  │          案例5_弹出广告.mp4$ B; U9 [8 h3 |* ^2 c5 {) A
│  │         
# L1 [" W0 ^3 i7 S│  ├─4-4 JQuery+ ?( U* P6 s1 j$ g) p
│  │  ├─1 简介
/ C$ K; `/ i, {% B  z3 K  m│  │  │      01_jQuery的简介.mp4: j6 O8 m. E1 Q' n2 `
│  │  │      02_jQuery的学习方法.mp4
) ^! U% e! {  x3 [% c4 L│  │  │      " V( G7 o  o& w6 J1 B9 I
│  │  ├─10 JQuery Validation的使用
2 B5 |) T( l# i* w/ Q7 J│  │  │      08_验证插件的使用.mp45 [: `0 T0 D" J" E0 d* }1 q7 y
│  │  │      09_自定义校验规则.mp4
. i% ?$ I/ a* V+ ^9 q& T│  │  │      
0 P1 J  p+ R! v  z. p- A: m' {: Q│  │  ├─11 百度API简介5 l, U) s" K0 n9 Z0 K  S2 Y& V, Z
│  │  │      10_百度地址的自动完成.mp4
# r3 i! p3 R( N5 u$ @7 C│  │  │      
9 \6 s' u% v1 f/ Z│  │  ├─12 省市联动插件
+ m2 C/ j! t8 o8 p; z* j! L" @0 q│  │  │      11_省市区联动插件.mp4
" e- n( Z# ]! O/ M9 \7 _│  │  │      
: s  r* V. u5 w; e  X% `0 G2 \│  │  ├─2 JQuery中的API的介绍
+ Q  k& Y2 K+ O5 c+ o1 E3 O│  │  │      03_jQuery对象和dom对象的转换.mp4
. J5 t0 w4 D" S* f' O6 |7 E│  │  │      04_页面加载成功的函数.mp4+ {* P1 Q: r6 F. i: g  C
│  │  │      05_事件的绑定.mp42 j1 U6 k  g2 t2 M6 ~& p
│  │  │      06_常见事件.mp4
. T$ J- T7 {* q( c9 `8 n│  │  │      07_效果的API.mp4
# I% J% D1 ^% t$ t7 {0 g1 l│  │  │      08_基础选择器.mp4
6 V& G! m6 ]/ b0 F9 A/ u6 {% Y│  │  │      09_层级选择器.mp4$ W0 R5 \- H, x0 H1 A
│  │  │      10_筛选器.mp4' V2 L7 w% i! m$ Y) z8 x
│  │  │      11_包含选择器.mp4
: ]. P7 ?" [$ R6 {. Z; ~% I│  │  │      12_可见性过滤器.mp44 h2 S( W, Q5 _4 u) ^9 f
│  │  │      13_属性过滤器.mp4& }- L/ Z8 _8 Y. m
│  │  │      14_表单过滤器.mp45 u2 ~5 E; m0 c' v9 K4 q# H
│  │  │      15_属性的设置和获取.mp4
: o2 ^3 U' t2 _, r% a+ j│  │  │      15获取和设置CSS属性.mp4
) Z/ y8 t0 v# Y2 V' }. N! [/ L0 X9 C│  │  │      16_遍历.mp48 p( T/ O4 l: g# N5 k6 D; I
│  │  │      17_操作元素的内容.mp4* _+ l4 V, ^" ?" w3 R6 a& u
│  │  │      18_文档的处理.mp42 [1 d( w4 b# l: ?7 {( n# x" [
│  │  │      19_表单对象的方法.mp4
, J9 y5 w* M8 W: b8 Z( a# p│  │  │      20_其他方法.mp44 a# Y( k- I9 N. I$ m( A( }
│  │  │      / h' a+ \" E; B% X2 [: f
│  │  ├─3 案例_轮播图3 u5 H  n( J% \. n  H9 z" l
│  │  │      01_轮播图.mp4
5 E9 e  K, }7 B3 {. N) A│  │  │        u* U& P! Q5 S# d6 [& ~
│  │  ├─4 案例_弹出广告. a4 B( D7 b+ B5 X0 d
│  │  │      02_弹出广告.mp4. V3 R  Y5 e0 U8 v1 {
│  │  │      02_弹出广告动画效果.mp46 J# T; i1 D# |, g8 e. r  C  x
│  │  │      
, Z5 U- p0 t& o3 s/ Q+ s3 N- A5 ?( t│  │  ├─5 案例_隔行换色
% {6 R  b; D4 }! |) d│  │  │      03_隔行换色.mp4
0 z" S7 R5 x. i  \│  │  │      
6 P8 N, Q9 z$ {& I/ ^, ]│  │  ├─6 案例_全选全不选
9 B% d3 B4 o! }- d0 E5 B4 E- Y│  │  │      04_全选全不选.mp4; e$ k  _4 J1 k
│  │  │      
/ a: |- B2 m# t: @/ ~. @7 R│  │  ├─7 案例_省市联动
  J4 U! y2 l  b; H9 R│  │  │      05_省市联动.mp4) }" x$ X: ~* v' ^  T
│  │  │      
/ J7 f; h6 F+ H│  │  ├─8 案例_左右移动
. M. v& W5 W. x4 U, x8 T│  │  │      06_左右移动.mp4
+ f  P/ ^  P! e0 f( Q, s2 U/ J│  │  │      
( A1 ^8 m3 c& n, Z5 x* K│  │  └─9 github的使用( ]+ V6 U$ e' n4 H& M
│  │          07_github的使用.mp47 J8 f" u2 H+ |0 g- k8 X, H
│  │          4 t4 w  R( p# Y8 Z, ~2 F
│  ├─4-5 BootStrap
7 P1 p) p9 c3 I+ ~│  │  ├─1 简介
* a$ S) d* g$ v9 T% G│  │  │      01_简介.mp4# g* l3 J5 ]) |7 u+ r- a
│  │  │      
* b! t, p0 G- @- w7 x, @│  │  ├─2 全局CSS样式
& a& V/ Y# ?/ w/ z1 M│  │  │      02_使用步骤.mp40 L, k& I- V: [+ ]8 k. d
│  │  │      03_排版样式.mp4' {6 X5 k( F4 L
│  │  │      04_代码样式.mp46 V  _1 k2 X4 `2 z3 U" n" J- G
│  │  │      05_表格样式.mp4. }' f! B; D& _, Z  x7 D9 b& ^5 c
│  │  │      06_基本表格.mp40 \* M+ \% U/ u2 l6 L+ V4 C+ C5 E
│  │  │      07_内联表单.mp4
# c* i+ V/ ~$ l' [$ y│  │  │      08_栅格系统.mp41 S7 i* z" t* r, ]9 A6 h, C, o
│  │  │      08_栅格系统.mp4.baiduyun.p.downloading
# r' n7 u# v4 n│  │  │      09_水平表格.mp4& [5 q& B) K0 z/ q
│  │  │      10_移动设备优先.mp4
' t0 ]  x5 f( ~% [; K$ e- H# l│  │  │      11_表单的其他使用.mp45 I* Q- C4 y& @" |) o
│  │  │      12_情景表单.mp4.baiduyun.p.downloading
( _( B- }8 h% R/ H  ?│  │  │      13_其他样式.mp45 [0 j% ]: Y1 h. b8 e3 |
│  │  │      : ]+ }& k/ o. q: [3 A* ~
│  │  ├─3 BootStrap组件! G) I. L3 `1 G6 G7 O
│  │  │      14_下拉菜单.mp4$ D. Z; ~& W, {. D. N, o
│  │  │      14_下拉菜单.mp4.baiduyun.downloading0 B0 f% G6 S  v# e0 W- \
│  │  │      15_按钮组.mp4
# |5 b6 u; h) i6 l│  │  │      16_按钮式下拉菜单.mp4
6 Q5 N4 D& |! e│  │  │      17_导航.mp4* b+ z8 K# A' E% n: o4 J
│  │  │      18_导航条.mp4
. v$ c3 M( y8 J& q& G│  │  │      19_固定导航条.mp4
' j% D4 i9 ~* a) W│  │  │      20_路径导航_分页_标签_徽章.mp4
1 R$ A% [3 q: Q6 Y: l│  │  │      21_巨幕.mp4: e4 q" ~, w5 Q: ^7 z9 ]
│  │  │      22_缩略图.mp4
, K2 d, M$ g6 }/ L) f4 {, g, Q│  │  │      23_警告框.mp4/ y5 R2 t; }0 ~# Z
│  │  │      24_进度条.mp44 j# n  L- E/ i
│  │  │      25_媒体对象.mp45 j  }( A3 A2 f1 A
│  │  │      26_列表组.mp4& x0 e2 Z) x. J
│  │  │      27_面板组.mp4
) B% q6 H. b1 T! b; T│  │  │      28_响应式嵌入内容.mp4& d9 l  T4 X) Q( Q8 z/ I% I( N
│  │  │      " @8 K( |) ~  S! c
│  │  └─4 JavaScript插件1 ]- x3 u: J8 t8 ]$ H
│  │          29_模态框.mp4
, i9 f' @8 f" ^+ k( E6 N1 |/ z│  │          30_轮播图.mp4
  V: `: a% _6 Z: _! {+ g' {! Q│  │          30_轮播图.mp4.baiduyun.p.downloading
, E# `& W) G' A0 a│  │          . }% U9 a9 a. x7 a1 c5 f' u2 O! y+ V
│  └─4-6 Kotlin与HTML
- J* l2 H4 |0 A│      ├─1 Kotlinjs的入门
! {! b8 I; e2 I4 O│      │      01_kotlinjs的入门.mp4' o; n* W, t, c
│      │      4 Z0 u% r' m& t. n* S
│      ├─2 案例_轮播图' t: ~! N+ [5 l% i- S4 K
│      │      02_轮播图.mp41 N9 A8 X/ H. @7 _  ]0 S
│      │      
: U6 C3 N5 F, O% n6 M│      ├─3 案例_弹出广告. ]" `! t: j: u% P; ~
│      │      03_弹出广告.mp4; I  y# Y" Q0 |- ?9 l# |$ u3 K
│      │      
( J9 ?  o$ `- D- o3 s  g│      ├─4 案例_隔行换色1 g7 O+ |5 n' M0 ~' S/ r
│      │      04_隔行换色.mp44 h) K( c0 F- S2 B, }9 V
│      │      
" g& P! y, _* c, W& U8 t/ Q- X9 @│      ├─5 案例_全选全不选
; u0 [6 @( q, ~, m; O│      │      05_全选全不选.mp4) Q5 d& q: p( i, q$ I$ i
│      │      
$ z/ {! o8 ?9 E) z2 V8 U( ~│      ├─6 案例_时钟
# m" U7 G) l4 `│      │      06_页面初始化.mp4
6 e2 t8 e* U$ ~│      │      07_绘制线条.mp4- [0 N: Q5 {/ Q% r
│      │      08_圆的绘制.mp4( p0 j+ F! I; C& d0 I0 @
│      │      09_填充.mp4
* C/ `$ H5 q! q│      │      10_绘制外边框.mp4
% h8 A( y/ v" D4 i  `│      │      11_绘制60个小点.mp48 `, D, k; x. @
│      │      12_绘制12个文本.mp4
+ \  C* S$ v) A│      │      13_绘制时针.mp4) F" U4 D/ w2 {
│      │      14_绘制分针和秒针.mp4  E) O' v5 P* b7 s/ j* Q
│      │      15_绘制当前时间.mp4- r7 D; H5 K8 m
│      │      16_优化.mp4
+ P( g! O) N8 u& E* H0 e, P│      │      % u2 L: ^4 l* W  y! e
│      ├─7 kotlin入门
- J4 x2 x# Q. V6 o/ n6 {5 g│      │      17_kotlinx入门.mp4
% {9 H+ |) J6 [1 M( M* H: j│      │      
# A" K+ ?$ R0 V. _; t6 k3 y" ]│      └─8 案例_主页
$ V7 K5 z1 t- n, i0 w2 L│              18_主页页面.mp42 x) w, l. C( v7 n* z: d- e% l
│              
5 q# q8 ?; J5 y├─5阶段 区@块链后端基础2 F- z. Q/ b" \, U0 ]
│  ├─5-1 SpringBoot基础
1 \+ R7 ~- H& u- _' l2 i│  │  ├─1 MVC设计模式
8 K5 _3 V( z/ m│  │  │      01_软件架构解释.mp4
+ o3 R7 z' C- L% O/ o│  │  │      02_MVC模式介绍.mp4' f$ r6 k# r; x% ?! ?- Y/ ^' [2 q0 n
│  │  │      03_MVC模式具体实现(三层设计).mp42 m  H' o7 r/ D( k& d
│  │  │      . ?5 N; ^. S6 _, l2 w% W; D/ x
│  │  ├─2 基础搭建2 Q7 B5 b7 m" |; q9 F# K" l6 H" Z
│  │  │      04_web常用框架介绍.mp4" e; S% u  Z  g/ u) O/ t' Y, x
│  │  │      05_SpringBoot环境搭建.mp4
0 [, Q$ L" L8 ?4 v  r3 Z& a/ A/ c│  │  │      06_服务器软件介绍.mp4
5 ]+ r, ]7 [# j4 {7 ]% x" E2 f│  │  │      07_tomcat 演示.mp4, X, I( O0 s' v* Y% n. d7 ~% A
│  │  │        b3 Q) l% D& j& F
│  │  ├─3 Controller详解/ v/ ?4 v' E  ^9 A% h, D8 r9 i
│  │  │      08_第一个controller.mp4. t' F  ]1 _! Y8 N9 L' Q6 f
│  │  │      09_第一个Controller(细节处理).mp46 q; g9 f* o. d* z
│  │  │      10_postman 介绍.mp4( V* E, M- Y) d6 T: a7 G1 h
│  │  │      11_答疑 - 包的问题.mp4- Q) I0 H) \4 C0 g6 l1 |* A
│  │  │      12_参数处理 - 接收简单参数.mp49 l5 \( L, v% v5 t/ F- J
│  │  │      13_参数处理 - 接收对象数据.mp4
: o+ U: U  `4 m( E│  │  │      14_controller crud (添加学生).mp40 m& B) _+ c0 ?( Z! k* I4 _) q
│  │  │      15_controller crud (添加学生 二).mp4" o. T) l5 _3 b7 |& v1 P6 J
│  │  │      16_controller crud(删除学生).mp4# W- T4 i, Y  n: K3 _0 t8 K7 N8 ~
│  │  │      17_controller crud(修改学生).mp40 h/ G; F& J2 a, g
│  │  │      18_controller_crud(查询学生).mp4
3 U( l. C3 j# {. x. Q8 N│  │  │      ) @4 ?" ~4 t; {( L( S0 ~
│  │  ├─4 部署应用
8 z6 N# R3 L4 @9 j' l3 y│  │  │      19_打jar包.mp4
: I7 Q* n6 I: m, |8 ~: B( k" [│  │  │      20_部署云服务器.mp42 R% C0 q4 U8 S$ `) A+ ~, h" B
│  │  │      
8 ~) d4 W3 V7 L5 v' |" `& P- e│  │  └─5 自定义toobar
! l8 q& U/ X' e0 Y& P│  │          21_idea自定义toolbar.mp44 F6 a# O. F# R" O- ^7 _- v9 i, [
│  │          2 T* G5 f  _$ x: w6 Q+ l! `6 z3 T/ k
│  ├─5-10 H2数据库
. v8 M  b7 P4 a! ~; ?│  │  ├─1 事务详解" z( o6 l4 C! L* i! c9 X
│  │  │      01_事务 介绍.mp4
  }. K  _, f7 L% C; l1 c$ l│  │  │      02_事务 入门(命令版本 一).mp4! n" I3 {  S7 }) P  p( w% Q
│  │  │      03_事务 入门(命令版本二).mp4$ [. ^+ K9 f: y3 f, }' x( ?: S
│  │  │      04_事务 入门(代码版本).mp4! d2 z; l5 r- q# _
│  │  │      05_事务 特性.mp42 g& y! S9 V' W5 j7 Q+ R
│  │  │      06_事务 并发执行的问题.mp4& r7 n" |' P. ^% q4 r
│  │  │      07_事务 隔离级别(读未提交).mp47 @' Y! y7 p: X7 P; u
│  │  │      08_事务 隔离级别(读已提交).mp4
  D% p3 ?9 |. S0 w/ Y4 z1 C│  │  │      09_事务 隔离级别(可重复读).mp4( x! g, D% ~* @" e$ @: N* K7 R9 u( {6 d
│  │  │      10_事务 隔离级别(序列化).mp43 H( q+ r6 w5 [5 L! ~' `1 K
│  │  │      11_事务 写的问题(丢失更新).mp4
4 s4 F6 u1 ?% n2 f│  │  │      . N: K& p# ~; Y  G
│  │  ├─2 事务案例
. F  f8 K" c" n7 D7 w4 `- g│  │  │      12_事务 - 转账业务(三层结构 一).mp4) e) v1 R" B% _
│  │  │      13_事务 -转账业务(三层结构 二).mp42 {7 B$ ^- c* I
│  │  │      13_事务 -转账业务(三层结构 二).mp4.baiduyun.p.downloading
- W( s) g* ?/ C( ?│  │  │      14_事务 - 转账业务(事务位置).mp4
" v9 P' }7 y5 [& n. D│  │  │      15_事务 - 转账业务(使用事务 一).mp4  U/ Z2 H1 a) Q/ C+ h3 o  f: Y; P! N
│  │  │      16_事务 - 转账业务(使用事务 二).mp4
) s$ J9 P& h# Z1 [, D# o: ?8 o│  │  │      17_事务 - 转账业务(ThreadLocal).mp4* I6 {; R- p/ k( w# V+ m: Q# f
│  │  │      18_事务 - ThreadLocal解释.mp4- O( i, m4 G* u% j! z7 G9 S7 U/ a
│  │  │      
2 X, w1 d& f) x8 S7 h0 C& V│  │  ├─3 H2数据库4 L7 x7 c' T& x
│  │  │      19_H2数据库 介绍.mp4% i* U1 s/ J4 {/ g
│  │  │      20_H2数据库 运行模式介绍.mp4
  v  i0 ]4 X- E7 S' e│  │  │      21_H2数据 java操作(内嵌模式).mp49 {0 M, q0 P. T9 z  H& s$ ?
│  │  │      22_H2数据库 java操作(server模式&内存).mp4- y- [' i) e  [8 {9 L9 j
│  │  │      
6 F- u5 F0 b  E│  │  ├─4 基础增强_反射
2 a  N7 x, D# N# _5 d│  │  │      23_反射 - 介绍.mp4
# z2 [4 o; [  r) q) |; I9 x5 F" O, M│  │  │      24_反射 - 字段操作.mp4
) n( S( l; X- z. I5 g│  │  │      25_反射 - 方法操作.mp4
, c$ P* w- y! p│  │  │      * z% B/ L0 j# Y! [5 r
│  │  └─5 基础增强_代理8 ^7 x/ e' m* l" X( A
│  │          26_代理 - 介绍.mp4
( o" e. i. U3 g& T8 f, Z7 j│  │          27_代理 - 静态代理.mp4( [1 `; }5 y9 o7 q4 A- W! d
│  │          28_代理 - 动态代理(JDK方式).mp4
5 y7 c) E3 G$ e. L* H│  │          29_代理 - 动态代理(cglib方式).mp4  c3 D/ K  ^! [" k
│  │          $ ]$ L2 b6 r8 O
│  ├─5-11 Spring4 s) A' K+ R% W# I& M
│  │  ├─1 IOC简介
% j. r( F6 r4 i6 P$ ?│  │  │      01_Spring 介绍.mp4( R: v4 h8 i; D1 r
│  │  │      02_IOC演变(一).mp43 H! s$ t3 }1 \  x  V
│  │  │      03_IOC演变(二).mp49 `+ u7 M- H; {3 Z1 g3 Y0 z
│  │  │      04_IOC演变(三).mp4
/ f# J* _* g# b6 e6 N│  │  │      
, }9 J. ^+ g* ]( W, A& x│  │  ├─2 Spring入门
5 Y+ E- _, a2 @0 p9 u# }│  │  │      05_Spring 入门(一).mp4" \5 }( D9 U" X! m  Q8 F2 R+ ~/ r5 F
│  │  │      06_Spring 入门(二).mp4, H+ e- o8 S. A
│  │  │      07_Spring 入门详解(xml解释).mp4$ r" ]7 A3 x) F4 ^) k
│  │  │      08_Spring 入门详解(代码解释).mp4
9 c' [9 i3 }8 E" @│  │  │      - s; B7 P1 k- K) v2 F4 p6 A
│  │  ├─3 IOC案例2 U3 B  E; l) x$ T2 }! A4 s
│  │  │      09_IOC xml版本.mp4. i" \  s- y' A% T6 T6 V- `4 `
│  │  │      10_IOC 注解版本(一).mp46 b1 i0 g! o+ g) s  ?0 G& r
│  │  │      11_IOC 注解版本(二).mp4
3 d% }! V8 y6 e% T7 G% H│  │  │      
9 X9 O  R7 Y) O' z- e# A│  │  ├─4 DI详解/ B8 l( O2 s% K3 S
│  │  │      12_DI 介绍.mp4
7 ?) S) B% q. U│  │  │      13_DI 注入方式(有参构造).mp4
& t  y- q& H( m│  │  │      14_DI 注入方式(set方法).mp4; j1 t) z  E/ U! E2 G
│  │  │      15_DI 注入数据(集合类型).mp4
& Z* |" ^" U3 I2 ]( q9 \4 a│  │  │      16_DI 注入数据(对象类型).mp4
2 e' N' }# _7 Z5 @# }0 }  J│  │  │      17_DI 注解方式.mp4. j7 R" k! [% q/ Q
│  │  │      
& F1 h" `; }8 k% A" R9 R  I│  │  └─5 AOP详解* o# @% q; Z* z6 H# l) P( A6 x
│  │          18_AOP  介绍.mp4( P* [7 A6 @4 x/ [, `
│  │          19_AOP 底层原理.mp4
4 B, V2 o6 |5 O- @, p( ]' ~8 E│  │          20_AOP 动态代理(JDK方式).mp4
1 J5 f( ~- W( J8 ~# t7 ^│  │          21_AOP 动态代理(cglib方式).mp4
! F( Q) W+ U: H0 m│  │          22_AOP术语.mp46 \3 [+ ^$ h  c% S, x. T
│  │          23_AOP 入门.mp4
2 w3 Q9 j# b  x' }" e│  │          24_AOP增强.mp4- w, {: B3 D+ M) ~. o+ v* W( f
│  │          8 b8 |8 K: `" R8 D$ n: k
│  ├─5-12 JPA与DpringDataJPA' [8 b8 N9 t5 x# `2 t$ c
│  │  ├─1 JPA详解$ E& w" v  g& Q& b& u
│  │  │      01_JPA  介绍.mp4
+ y/ E9 B/ O3 p9 Y( Z* x/ O! H│  │  │      02_JPA ORM思想.mp44 Z* B% P2 K+ D, Z1 F; P( T$ s
│  │  │      03_JPA 入门(实体类).mp4
2 u4 @9 b- m5 A- \# z, i2 I9 q( x│  │  │      04_JPA 入门(配置).mp4
2 A" E, M* j. `$ K7 [6 f4 I│  │  │      05_JPA 入门(测试).mp4
% K  u. e5 k' ]│  │  │      06_JPA 入门详解(实体类).mp4& Z$ |  p1 W0 F8 n  T: _
│  │  │      07_JPA 入门详解(配置).mp4
& M) T$ `+ a* Q/ F& j# A4 [/ l│  │  │      08_JPA 入门详解(代码).mp4
$ X3 N5 H# Z' R% ?6 c│  │  │      09_JPA CRUD.mp49 p* {* r1 e# f( r' v+ ^
│  │  │      10_JPA 对象时态.mp4& E9 Q) _7 s5 P* U. r/ A% \' l
│  │  │      11_JPA 多表关系(搭建环境).mp4" ^0 @9 K: o# m7 o
│  │  │      12_JPA 多表关系(多对一  int类型).mp4  d% N) |6 |* f
│  │  │      13_JPA 多表关系(多对一 对象类型).mp4  J3 ?3 X. m* L3 y3 ?
│  │  │      14_JPA 多表关系(一对多).mp4
' m) n* D7 y3 L# t  J│  │  │      15_JPA 多表关系(对象导航查询).mp4
- D, _4 s, \0 A│  │  │      
0 E! |9 m4 C8 Q2 T4 I│  │  └─2 SpringDataJPA详解
" C' D, B6 X2 S! Q  h6 \│  │          16_SpringDataJPA  - 介绍.mp44 K8 e$ A( @5 R# k" Z3 N/ L! I  j8 z
│  │          17_SpringDataJPA - 入门(一).mp4# M  {& e% G* J8 m$ b& T
│  │          18_SpringDataJPA 入门(二).mp4
. b5 l# R2 }% Q1 t0 I' {. z7 b+ p│  │          19_SpringDataJPA 通用接口介绍.mp4
& ?# B; U) ?9 ?: T│  │          20_SpringDataJPA 自定义方法名.mp4. t7 q  }4 I  I" D+ @7 z) o
│  │          21_SpringDataJpa crud.mp44 O. Y- f8 L7 X& l, l4 b! k3 u
│  │          22_SpringDataJPA 分页查询.mp4
* P7 b9 s9 ~0 |5 m2 E+ b, P( }│  │          & m0 D* u  R$ ]6 a9 `
│  ├─5-13 彩票项目-墨刀使用8 ^0 S, V5 N9 L: H1 t
│  │  ├─1 博彩项目介绍
, `; t8 q3 L1 A" H* x│  │  │      01-项目的介绍.mp4$ n+ ~( s+ B5 T- M! j1 y
│  │  │      02-友情提醒.mp4
. s  l6 w0 E2 ?│  │  │      
3 D! [! }* ~; `) {) @) }│  │  ├─2 墨刀软件基本操作. r& \! H. Q% N
│  │  │      03-软件开发流程.mp4
. S: g1 [1 l/ i. {  K/ F│  │  │      04-产品设计介绍.mp4/ t2 O8 ~" h, b6 S% M8 y
│  │  │      06-墨刀软件的基本使用.mp4
" B+ A" ]- E  r3 {│  │  │      07-分享软件.mp47 w$ G/ S9 K7 D/ v
│  │  │      
# N  ?6 B% x5 ~# r# K( t│  │  └─3 使用墨刀设计博彩项目& Q% R5 E  Z0 ^" Q2 s3 p
│  │          08-新建项目.mp49 i! ]" C& K: P% ]- \% j
│  │          09-首页-创建轮播母版.mp4: ?: m# K& Q/ }1 {
│  │          10-首页-博彩讨论区.mp4
/ Y. [9 g9 a! u" g' {7 ^│  │          11-首页-彩票条目.mp4
: W9 b5 ~$ F8 a" ~) Q│  │          12-首页-封装菜单母版.mp4. g/ E! Y  T; K8 R2 f/ d
│  │          13-首页-母版链接跳转.mp4
' j$ h4 _* l9 Y2 H9 ?│  │          14-首页-选号页面搭建.mp4
1 H/ z8 A6 L5 h3 P% R4 y2 I4 }. M! Q│  │          15-我的-需求.mp4
* _8 U* H6 x5 [0 D. K& s7 B│  │          16-我的-设计.mp4" L2 n. |! c2 T/ i+ J- D
│  │          17-头像上传.mp4  Z2 t( Z# [, T1 ~
│  │          18-注册页面.mp4. L5 x. o0 v$ @" N/ {4 x1 K0 l3 {
│  │          19-小结.mp49 @) m) s4 U, o! z+ B1 H9 T
│  │          , n. A& x8 E9 a1 ?6 m; R
│  ├─5-14 彩票项目-前台页面; @* x2 F' }  R7 f* v: M
│  │  ├─1 bootstrap编写博彩首页3 R4 C& _4 q5 Q$ {0 |7 W# n; J3 \
│  │  │      20-使用Hbuilder.mp43 r7 M  K! i  e9 f
│  │  │      21-回顾bootstrap.mp4
; x8 ]# x, A& _% K│  │  │      22-补充bootstrap.mp44 b+ {/ q* j. y4 X
│  │  │      23-拷贝轮播图代码.mp49 [* S2 `7 j+ m7 r& ?1 x
│  │  │      24-封装彩票条目.mp4
% O) T0 X  B# a3 x! J7 U" E, X+ M$ ]│  │  │      25-封装彩票菜单栏.mp4; Q$ i8 X8 {1 @% K/ A% ]2 [
│  │  │      & C5 g2 n0 I- A. n
│  │  ├─2 bootstrap编写博彩详情页面
! [/ i5 T* T0 n  i/ n, ^- }│  │  │      01-今日课程介绍.mp4! T4 R; F# b; y4 ~) d
│  │  │      02-彩票详情界面.mp47 ?- c' K) U% K  ?# @
│  │  │      03-解决页面显示不完整的bug.mp4: \& l: ]1 P1 Y( x7 M
│  │  │      04-页面跳转.mp4
6 t: t2 q/ ~; Q6 L  \9 V6 \│  │  │      & S4 K8 q+ R- C1 m, x9 G  C9 T
│  │  ├─3 bootstrap实现登录和注册3 P& {$ s, ~" z- |
│  │  │      05-完成注册页面.mp4& }: ?9 ?; N: {
│  │  │      05-完成注册页面.mp4.baiduyun.p.downloading
5 R3 d: A4 s7 K# E; m│  │  │      06-完成登录页面.mp4
* `/ s. J" P% F  {│  │  │      
/ W8 e7 [0 |; c% p' M6 C- W7 E│  │  ├─4 css,js,jquery实现选号页面逻辑
( K& Y" U5 C, [│  │  │      07-完成选号页面-布局.mp4
$ M( \, Q% X" I3 Y│  │  │      08-球的选中样式.mp48 a* M! @) H; p8 X( b5 S
│  │  │      09-红球选中的逻辑.mp42 _, z. s% R& ]4 v# g: c/ d" F
│  │  │      10-蓝球被选中的逻辑.mp47 ^* q8 g! d9 q" d: i
│  │  │      11-随机选中红球.mp4
) `9 k8 o& z5 ]3 D│  │  │      12-随机选中蓝球.mp4  V2 ]5 Y" q3 D# o0 G
│  │  │      9 E5 `9 R. K& Z0 t
│  │  ├─5 bootstrap实现购物车页面6 z0 k" N! n$ a
│  │  │      13-购物车页面.mp4" c+ b/ }3 d8 p' v+ F
│  │  │      14-订单详情页面.mp41 ~" @; L4 i3 F/ Y5 K* A6 b
│  │  │      15-订单列表页面.mp4
; K+ C% [: R6 X│  │  │      
1 v4 j' B5 p8 Y; c, ~2 I: f│  │  └─6 快速实现后台管理系统: o2 z- I/ m4 }# A  O$ d$ o
│  │          16-使用轮子.mp4( r* ]5 Y3 ^% j% _
│  │         
; y% W- h, ^# z% O, v' w' W2 {│  ├─5-15 彩票项目-后台数据展示3 o7 ^  m9 P. t( V: w
│  │  └─1 thymeleaf模板引擎学习
( g7 ~; m+ X" `6 g8 j5 ~4 C' g2 Y│  │          01-课程介绍.mp4
7 C# `( y: r/ C│  │          02-thymeleaf介绍.mp4
# m7 x2 N& U% W! K: B│  │          03-搭建thymeleaf演示工程.mp4
8 B$ c8 ?, q$ u8 G│  │          04-入门案例.mp4
2 Z6 r- I4 Z" x  u9 s% y│  │          05-thymeleaf特征.mp4$ e& l) m3 a; b
│  │          06-url标签.mp4
3 G# i8 ]9 {3 |( c2 c9 Z│  │          07-代码段标签.mp4* D) H6 I5 _: p. ~* X
│  │          08-条件表达式.mp4
# [7 v- W) p6 L0 y* \# K$ b* G  I/ w│  │          09-循环处理.mp41 e# f( g+ F4 L% \* F6 ~  y
│  │          10-js拼接数据注意问题.mp45 t6 b- F7 Q( y6 [% R1 }
│  │         
% K# X6 c  }2 Z; t│  ├─5-16 彩票项目-项目结构分析
, v; I1 y/ J4 x+ G│  │  ├─1 高效开发的准备工作1 Q3 x; ]  X8 h! W3 h
│  │  │      11-代码的热更新.mp40 Q1 y6 s& L2 e, C7 v% R, N
│  │  │      12-lombok插件安装.mp40 W( s. m3 n2 m; S) |# Q2 t
│  │  │      12-lombok插件安装.mp4.baiduyun.p.downloading. w7 {$ b5 R8 _  J6 X& T- i& M
│  │  │      9 W4 ~2 ]! i7 ^# `# A0 B" W
│  │  └─2 认识项目结构2 s" h& m7 U& n' j
│  │          13-数据库表的关系.mp4; [, m1 F' N  Y
│  │          14-分析项目结构.mp4. |* ], j  m0 ^3 s
│  │          & U) D9 ]! `1 L5 t9 k0 z
│  ├─5-17 彩票项目-首页模块
* w3 U. r  B) m# f" R│  │  ├─1 使用springboot完成首页后台业务逻辑
2 s# K1 E! d4 [! F│  │  │      15-首页-后台代码实现.mp4
& k: F# A* C! t: G* Y/ _/ T│  │  │      16-首页-前台代码实现.mp4  P# [4 r8 J; T/ }
│  │  │      17-首页数据倒序排序.mp4$ I0 n' D1 Q0 p5 v+ d; x5 ^( h
│  │  │      18-分页查询.mp48 J5 x7 ~+ s. a* n5 @3 R
│  │  │      * k! e+ M+ o- [
│  │  └─2 springboot完成开奖详情业务逻辑. m( n$ B$ W* @
│  │          19-开奖详情-需求分析.mp42 v& Y- o( g2 m. X7 P6 s, @$ L
│  │          20-开奖详情-代码实现.mp4) y2 u2 D, W' g' b+ b! o; [) s0 f
│  │          21-抽取底部菜单栏.mp4
* R& l# G6 ^' q7 ?│  │          22-小结.mp45 s0 @. h6 g. l1 i0 l
│  │         
  V0 q/ T; M9 I6 l4 H│  ├─5-18 用户模块. }  e; f7 B2 P* s: _. B
│  │  ├─1 springboot完成注册业务逻辑
) A; a  r: f7 H' M7 G1 E│  │  │      01-注册案例-需求分析.mp4
6 k' W2 Y6 l5 t. \# ^& a, ^- p- Q│  │  │      02-注册案例-显示注册页面.mp4$ n7 n* d( w: j, a
│  │  │      03-注册案例-代码实现上.mp47 `( O- ?0 W! V
│  │  │      04-注册案例-代码实现下.mp4; g8 }) w) o9 E; `3 [0 l
│  │  │      05-注册案例-刷新重复提交的问题.mp4
$ `8 Q! n& N+ w0 e│  │  │      9 U, h' ^" S+ j( m
│  │  ├─2 使用java代码发送短信验证码! q) E6 ?- X+ X3 ]1 Z
│  │  │      06-阿里大于-步骤介绍.mp4, z$ ]# {5 Y3 S. s( U
│  │  │      07-使用阿里大于发送验证码.mp4" E; S" h; h5 X  d( y% {' T$ I& D; U
│  │  │      08-注册案例-发送验证码.mp41 Q- `3 G! o8 S* x' J! B' q
│  │  │      09-注册案例-代码完成.mp4
% [. W+ }% t2 [! A% N: K│  │  │      
% ]0 N, f& n8 s6 i│  │  ├─3 springboot完成登录业务并且密码MD5加密" L7 Z6 B6 j4 c' x' f- b
│  │  │      10-登录案例-需求分析.mp44 O. E; U9 w: t) I+ p0 M9 Z
│  │  │      11-登录案例-代码实现.mp41 W& ^5 j& C3 P2 H* T  C5 w
│  │  │      12-扩展-MD5加密算法.mp4  ^& w9 m2 C3 o" Q4 ^% s* p9 ~
│  │  │      13-解决页面user为空问题.mp4' n1 g4 A) j0 f8 @+ }1 E% I
│  │  │      14-演示加密之后的登录和注册.mp4# I1 X: ]% m& K1 u1 g
│  │  │      
' c9 o2 b3 M& x  l│  │  └─4 后台展示个人信息/ _+ ?1 d5 W' o' I; h1 p
│  │          15-我的信息页面-代码实现上.mp4" g3 H; D( m: n5 j, s
│  │          16-您本次幸运号码.mp4
4 o3 ]+ g5 g: o│  │         
0 F2 h9 _  L2 n( \. a( c3 j5 P│  ├─5-19 彩票项目-论坛模块
* a+ j8 c7 P+ U% J1 a8 Z. B+ D) ~8 N│  │  ├─1 springboot完成发帖功能
! ~- Y4 f$ t; C│  │  │      01-回顾MVC和三层架构.mp41 ]6 _, ^0 W! u7 c) b4 ^0 r
│  │  │      17-论坛搭建UI跳转.mp4- x9 L; t3 J; k; ]) M/ @: O
│  │  │      18-论坛首页-需求分析.mp4/ G4 X' }. ?+ w) x7 \* k& |' j% u
│  │  │      19-论坛首页-发表帖子的功能.mp4
, R" B2 N9 f* l; I6 ~1 l. r│  │  │      20-论坛首页-列出帖子后台代码.mp4
% \  s# v, z* j% Q, p  Y4 v' v│  │  │      21-论坛首页-列出列表前台代码.mp4
& P) ^! F! D' ^│  │  │      & g1 k2 L$ C4 E1 J% @6 ]' D5 ?
│  │  └─2 springboot完成发表评论功能
: U+ M$ [. w' q│  │          02-帖子详情-需求分析.mp4$ g1 i7 b5 L: C) ]* S: f0 Q
│  │          03-帖子详情-展示帖子的内容.mp4
  w2 A8 S  F- ]+ k8 W# v" p│  │          04-发表评论-需求分析.mp4, D! H5 B- |8 u* D1 P: B8 j
│  │          05-发表评论-代码实现.mp44 A- L" m. _; U$ O3 k; h
│  │          06-前台展示所有评论.mp4
6 o* V+ I% q1 |! _│  │          07-展示最新的帖子.mp4" V' L& o9 F6 Y* k% ]  ?# J/ r
│  │         
, g% W- O- V: V0 m! U2 M7 x* m* Q: v0 B│  ├─5-2 HTTP协议& ]. Z; ^/ E! n9 n/ C
│  │  ├─1 环境搭建5 Y3 F- S- _, a6 ~
│  │  │      01_今日内容介绍.mp4, r$ T& p( }+ j' t) X7 }
│  │  │      02_http协议介绍.mp4
: L# _' {* S3 |+ A' T" v9 L, {│  │  │      03_PostMan 抓取数据.mp4, F5 D) ?6 C. ^& ^2 Z
│  │  │      04_firefox &  httpwatch 安装.mp4
5 J( @2 f% N# E+ k% g$ l│  │  │      05_搭建环境 - 编写controller.mp4( ?* z& U# h- `  _0 c
│  │  │      06_搭建环境 - 编写html.mp4
. m% \  D$ R( P$ Q│  │  │      2 w: s8 s6 Y: O$ c0 U3 G' ?. O
│  │  ├─2 协议介绍( \& \8 ?8 a0 [
│  │  │      07_Get请求数据解析(一).mp4
+ R! A# L1 F( w& L1 x' j│  │  │      08_Get请求数据解析(二).mp4
* j" c& w' l$ q6 `' [% U3 A│  │  │      09_Post请求数据解析.mp4
8 p" K7 W. S( @, r2 K  T│  │  │      10_Get请求和Post请求的区别.mp41 U1 f  B4 `9 x
│  │  │      11_request对象介绍.mp4$ d. ]* E! ^! q
│  │  │      12_response对象介绍.mp4& u; c. N/ M7 X" D* ~; U
│  │  │      
& r3 }: o& p* S) n* l( c* X$ Q9 J│  │  ├─3 静态资源配置
6 x8 F! z# |* }' o; o8 w2 s│  │  │      13_静态资源目录位置.mp4
! f& ~7 t! S' m4 t, b│  │  │      14_自定义静态资源位置.mp4
. K7 l% V6 D& _8 g* s3 B  p│  │  │      
. f& X  t( V" B& `0 [) y│  │  ├─4 转发和重定向
% P' [7 z9 Z; P│  │  │      15_跳转页面 示例.mp4" N; V5 h. \  f) l$ Q6 V
│  │  │      16_跳转页面 请求转发.mp4
+ K8 r5 Z8 _3 O( F2 c│  │  │      17_跳转页面 重定向.mp46 H4 h4 t. z4 o( M" _
│  │  │      18_请求转发和重定向区别.mp4
/ J: L' x. X, a0 L3 {. J0 Y# j│  │  │      19_请求转发&重定向 使用时机.mp4
$ \% O5 h  m  ]3 N- \( J│  │  │      
( t% s4 N6 v0 }9 l* A: [│  │  ├─5 Thymeleaf使用
6 g- X1 @1 B' Y& W% u│  │  │      20_Thymeleaf 使用 - 环境搭建.mp4
# L8 {" p5 h& i% i  W* \6 G│  │  │      21_Thymeleaf 入门.mp48 V" I' D( D1 R" I2 C
│  │  │      22_Thymeleaf 取值.mp4/ n* q+ L% o' s! X5 D
│  │  │      23_Thymeleaf 存值.mp4
& l# o7 T  I4 Q6 ^- v0 D│  │  │      2 M3 `+ @/ y2 f# m+ \
│  │  └─6 案例  B/ b1 Y5 P5 J4 ]5 ^5 r, c, ^3 `
│  │          24_注册例子 - 失败细节处理.mp40 c7 z- O; E1 d0 L6 }5 ?
│  │          25_注册例子 - 成功细节处理.mp4! d( _8 d8 Z/ x; }0 {
│  │         
) W" b1 t6 A, A2 M" G( F; D│  ├─5-20 彩票项目-购物模块  s& p+ w) i+ a7 \. R
│  │  ├─1 使用filter过滤器过滤未登录请求
* U  E& \) F+ f+ K/ @. J2 ^│  │  │      08-校验登录-需求分析.mp4
! T: s- J* b4 [$ D7 G4 b2 w% @│  │  │      09-校验登录-代码实现.mp4
8 g; @0 N3 A2 w; l5 p3 z│  │  │      
% |8 Z: w0 n4 ^│  │  ├─2 代码完成选号逻辑- U4 E/ F- B) M0 D
│  │  │  │  10-选号前端逻辑-代码实现.mp47 F+ P" M! h; r& C4 Q- S7 S: c3 ~
│  │  │  │  11-前端发送异步请求逻辑.mp4
. @5 B7 N% _2 ~│  │  │  │  12-前台发送注意转成json字符串.mp4: {1 z% W- s" N, Z5 J7 t# ^
│  │  │  │  
3 m( Q! h0 K: I9 A, A& s: @" n: f│  │  │  └─4 实现购物车功能
/ ]- d! [: E( x9 ^│  │  │          01-回顾购物车前端.mp4
' C7 @1 r. l* x! n6 M4 w8 t│  │  │          18-购物车页面显示所有购物项.mp4
8 e. z. \& m0 ]) T8 F$ R' Y│  │  │          19-删除购物车中的某一项.mp4& H1 |1 u* v  B* X" B" O: j
│  │  │          20-清空购物车.mp4
5 a' O$ d6 ^+ K2 H│  │  │          21-机选一注彩票.mp4
! n4 Z! B% [! c# a# o│  │  │          22-机选一注彩票的小结.mp46 N3 q* I/ w- R
│  │  │          23-手工点击添加一注彩票.mp4, c# R0 J7 p; u9 o8 @% `6 C
│  │  │         
% i) n, ]$ H# l: {  n3 g; b│  │  └─3 购物车分析
/ X3 s* I2 @% g$ p- V6 {: L- P│  │          13-封装购物车和购物项对象.mp4' B! K$ d: R' `9 E% F$ p% d
│  │          14-上午内容简单回顾.mp4- M! J5 c- q" t* f) x5 [' ]5 u1 T# T; w
│  │          15-使用fastjson.mp4
' S) l4 V3 s. D( m) U0 \7 J( I7 z& \│  │          16-购物车Controller逻辑.mp4
* l' M3 r" Z6 ~1 i; g│  │          17-购物车前端显示badge.mp4
8 I* L4 q. {( |# ^│  │         
/ }9 _: E  v) f0 R│  ├─5-21 彩票项目-订单模块
* ?1 a- Y) c, n  G! h│  │  └─1 实现后台合成生成订单功能* h3 j% R+ \- M' K
│  │          02-分析订单项对象和订单对象.mp4
" h  F0 {* e6 x) x3 w│  │          03-生成订单-需求分析.mp4! M( v- t+ {1 |) a: X
│  │          04-生成订单-代码实现上.mp4
4 `* D% M! e# e. L3 o7 a, M│  │          05-生成订单-代码实现下.mp46 F6 u, A" C5 k. e2 e1 `4 [9 [3 l4 e! }
│  │          06-生成订单-前台展现.mp4
* J0 O, e8 T. w│  │          07-遗留的需求.mp4; x; w: l/ }' H2 {
│  │          08-我的订单-需求分析.mp4
/ A! p" {- U! e! S  ?$ M2 K- f│  │          , J* c" [! k" C5 K! y) e+ e
│  ├─5-22 彩票项目springcloud1 J* ]; u- R" }. V9 o% i
│  │  └─1 springcloud$ N- m: h, y5 v3 y9 M! a( o0 a
│  │          01_微服务介绍.mp4
  |, z# ]" n# B7 h% p) H│  │          02_单应用框架的介绍.mp4
/ |4 `5 Q3 t: S: D7 [, ]; C5 E1 |│  │          03_微服务框架的介绍.mp41 p& A5 ?  T6 o7 K" n  T) [1 \8 {9 e$ N; V
│  │          04_服务注册中心.mp42 o" ]4 A: l4 z. |+ S4 k
│  │          05_服务注册者.mp4. W! H  V* H# x1 A# e4 I
│  │          06_注册中心高可用性.mp4. }5 d/ {- i, V( D  s8 ~" u9 t" m
│  │          07_profiles配置开发和部署.mp4' m$ f5 b  w( C5 i. _, k+ `9 V
│  │          08_feign-注册的实现.mp4
! D; w( X: I9 X% r  I# p) x+ F│  │          09_feign-服务间的调用.mp4
% R2 A; d; z5 \/ Z/ Z│  │          10_feign-高可用的实现.mp4
0 m; @2 f+ w9 c5 L  b1 L7 K$ ^6 I│  │          11_Api网关准备.mp4
& v1 [( x( K& }│  │          12_Api网关实现.mp4- F/ Z! s) y3 O2 X  S7 q2 m/ c4 U. T
│  │          13_彩票项目介绍.mp4; f6 I4 K! P8 @) [, |
│  │          14_彩票信息相关的服务创建.mp48 }! M5 z: D) E  P: ?( Q& A
│  │          15_info服务 数据实现.mp4
% ?. l3 |9 b8 y. ]- P│  │          16_info服务 接口实现.mp4
% F% q5 f. M3 g. J│  │          17_前端项目部署.mp4
( ?. `8 H; i  L+ K9 _) J│  │          18_user服务 数据和接口调通.mp4
5 T# K( m. `/ J$ e" l' S9 k│  │          19_user服务 逻辑实现.mp4' o) {+ }0 x; ?% M; n% ?4 U( ~
│  │          19_user服务 逻辑实现.mp4.baiduyun.p.downloading/ W% k# P4 R, H1 s
│  │          20_订单服务 接口调通.mp4
1 Q0 {4 Y! N( a; d│  │          21_订单服务 逻辑实现.mp4
2 X2 y$ I6 n/ }8 p│  │          22_静态资源服务实现.mp4' J# W, ^1 i* U) \/ q
│  │          23_微服务整合.mp4# z: R  R! v: V! }( r0 G$ w
│  │          Thumbs.db$ p7 ?# \* z9 V' f
│  │          2 m7 |" B2 [- H" P7 |' d$ q4 \# I
│  ├─5-23 密码学
, l: B5 ^# h2 N- G/ q. o│  │  ├─1 密码学基础
0 a$ d7 k$ J) ~3 ~8 T! c│  │  │      01_ASCII编码.mp4
/ ~* v0 w0 t8 z, M' G, s│  │  │      02_凯撒加密.mp4
/ |  Q, \. ~& R: y9 Q│  │  │      03_频度分析法破解凯撒加密.mp4' t& a* p: D: Z8 j
│  │  │      04_byte和bit.mp4
4 u5 o% }# g9 ]& t3 S: e3 {6 C│  │  │      
) _9 T! R  C" V0 i8 _) p* a│  │  ├─2 对称加密
) c9 U1 a5 Q9 l/ w+ @( [│  │  │      05_加密基础.mp4
% |2 Y( r" N' K8 Z1 X9 Y/ L: a│  │  │      06_DES加密.mp43 @: J5 C$ L8 v* l1 F3 d
│  │  │      07_DES解密.mp4
7 c- ^% b! G  v3 c& j# K+ w│  │  │      08_AES.mp49 n' z( i: u& G- q+ U; F
│  │  │      09_加密模式和填充模式.mp49 }  l, j2 G' w$ ?5 n& z: v
│  │  │      ' ?$ F2 ?1 K% W. w( r3 J# P. \
│  │  ├─3 消息摘要- i* O8 ]7 m' }( i/ d3 d
│  │  │      10_获取消息摘要.mp4# j: U( o5 z% N6 @' D$ F
│  │  │      11_消息摘要的其他算法.mp46 l# x1 J& U. i. ~( c. ]5 o
│  │  │      12_获取文件消息摘要.mp4
( y( A! H( l" z│  │  │      
' e9 Y9 M' K& R' B8 {│  │  ├─4 非对称加密$ Y; g8 S; x8 w0 [( l! F
│  │  │      13_非对称加密的概念.mp4
' E% {+ k5 k3 q0 `- c' h0 X* n│  │  │      14_获取公私钥.mp4. D8 w" B9 f- }" ]3 H6 E$ z% O/ P
│  │  │      15_非对称加密解密.mp42 J) U5 G( h9 ~  _5 I5 ?% r6 F
│  │  │      16_保存公私钥.mp42 t3 ~, P5 K- T$ n* D. g
│  │  │      17_获取私钥.mp4
% w7 ]. U" m; V│  │  │      18_读取公私钥.mp4$ x: T7 S0 G- r& `
│  │  │      19_分段加密解密.mp4
9 K$ |0 A5 c( v# g. l6 r: I│  │  │      20_生成签名和验证签名.mp47 S' |, \' |2 l+ f
│  │  │      
; i( J) z( F" }7 f8 R) n: i│  │  └─5 实战案例6 X' n% E6 ~9 W1 ~
│  │          21_搭建项目.mp4
2 N' R" V- O, U" _- L│  │          22_集成Swagger2.mp4
$ A3 I, }. j  w$ m5 S│  │          23_解密数据并缓存在本地.mp4
% [9 Y* a* r1 K4 U0 \5 E│  │          23_解密数据并缓存在本地.mp4.baiduyun.p.downloading4 w7 ]; d1 g0 g( t& J
│  │          24_模拟登录.mp4: f/ H# W. b+ E1 J2 M3 h& K
│  │          25_验证签名.mp4! p" |; T1 h3 w( r! b9 ^
│  │         
: e7 G2 C7 `8 E& r/ h+ u5 q4 J│  ├─5-24 比特币java版本; V- y; E# U3 h" i
│  │  ├─1 传统技术实现区块链+ _# M! \& E" c: Y8 X  W' C
│  │  │      01_第一版增加功能的实现.mp4
1 h( E! P% Z2 N4 v. L. O│  │  │      02_第一版保存功能的实现.mp4
- p1 m7 y& k( I9 K; L& B│  │  │      . n' u0 s- ^, E- X; s
│  │  ├─2 增加网络接口
# w( V, H; n/ j' r│  │  │      03_第二版后台的实现.mp41 N/ ^# i* E5 J0 E% ?/ Y4 a
│  │  │      04_第二版前台页面的实现.mp4
' p1 P+ `- U$ N# I│  │  │      05_完善页面.mp4
  c/ q% A6 z: k  S# l' F2 ^│  │  │      
: t; K5 m( o# J+ ^│  │  ├─3 增加Hash校验" e  h. K7 `3 J+ }$ z6 E( r3 y
│  │  │      06_增加Hash值.mp4
2 {+ k* v9 J1 e" l│  │  │      07_校验hash值.mp4
5 \+ y1 c0 }  Z  H) u; q2 A│  │  │      / S3 C+ Z: K# M. R% C
│  │  ├─4 增加工作量证明( e5 ]( {% L  |
│  │  │      08_增加工作量证明.mp4
  I2 i& o6 b* Q7 F) c' |│  │  │      09_修改校验的方法.mp4/ I1 `( @' V* T* D2 X1 k, x& Y# K
│  │  │        A, k+ ~: A, e; x4 m
│  │  ├─5 增加PreHash
0 d8 n+ a  `! X2 z$ G3 v: v5 e│  │  │      10_增加preHash.mp4& Y( L- L% |- M  _5 w
│  │  │      11_校验preHash.mp45 }2 f* v' i2 b; s4 H+ A
│  │  │      
5 A/ ], q6 j3 i! R│  │  ├─6 增加钱包功能
/ y  Z. E# M* y0 j& Q; y│  │  │      12_定义钱包.mp4
  o) B" r/ n: ?9 {# G1 ^│  │  │      13_钱包功能简介.mp4
7 Q+ ]" v+ V3 ?: t4 k│  │  │      14_转账页面的搭建.mp4% }9 ]+ l& G# O9 t! v
│  │  │      15_转账后台的实现.mp4
$ ~# R+ i& g7 ~4 z) P. y│  │  │      1 S1 C5 V, ~" \" K  Z% \. v
│  │  └─7 增加WebSocket功能9 F) E! }( f7 W1 Y1 f, C
│  │          16_webSocket入门.mp4" Y6 U) f8 S; O3 S$ P4 k
│  │          17_模拟节点之间的通信.mp4: @& z4 ]9 M/ l$ B/ M  `$ q
│  │          18_本项目集成WebSocket.mp40 o9 Q- u' u1 x7 f
│  │          19_请求同步区块数据.mp4
% k3 ?1 u/ X) ]% N5 L; _. Q│  │          20_修复同步区块的bug.mp4
$ n# Y) a7 y# @& r│  │          21_广播交易数据.mp4' A$ g0 Y' u1 j  {  m  g
│  │          1 b( e% F1 c# q! ~2 v
│  ├─5-25 比特币kotlin版本- g0 h( S6 q: D& ?9 \
│  │  ├─1 传统笔记本
! [! q( b- w- n$ Q│  │  │      01.区块链知识点简介.mp4
/ ^$ p: A; S! d3 ]: s│  │  │      02.笔记本1.0版本a.mp43 e8 @9 L  t& J0 d- _
│  │  │      03.测试笔记本1.0版本a.mp4
8 O' {* _/ F+ t9 A; c8 G; x│  │  │      04.笔记本1.0版本b.mp4; F$ s, g8 w2 ?( F; a8 C8 r" q
│  │  │      05.笔记本1.0版本提交到git仓库.mp4
1 l% B6 {/ F9 k9 z│  │  │      06.消息添加id属性.mp4
$ O3 C" L% h3 M: }9 X  n' ]6 C│  │  │      
! T  Y; e$ {& z( L│  │  ├─2 服务端搭建
% Q% X* F1 i1 j$ P( [/ f8 Z5 D│  │  │      07.ktor库使用.mp4
9 ?+ M7 j& @5 o' V) y8 [2 _- i) v5 f│  │  │      08.接口搭建.mp4
6 s2 F! {0 B2 @│  │  │      09.前端界面提交更新.mp49 J9 F6 l0 T+ ^& Y, y: T
│  │  │      10.静态界面提交数据.mp4) T0 G2 n& s; T7 g; i
│  │  │      8 z9 B* e+ e+ Q8 V% N: \
│  │  ├─3 校验和区块链
2 T$ ]4 `4 l1 G6 A. a, J│  │  │      11.数据篡改.mp4
+ s6 l+ Q. U0 F' |( G* A- z│  │  │      12.hash校验.mp4  x# s5 ~- U% B; W/ {2 f  D
│  │  │      13.工作量证明.mp4  d5 g8 W8 f6 ~& m
│  │  │      14.增加preHash.mp4
/ {6 P! `8 p# s" n) H0 `4 \! q│  │  │      15.篡改数据修正后面每一条数据.mp4
0 A! b5 o- z* D: f│  │  │      5 |* I% M9 c; T! i+ N
│  │  ├─4 转账操作
2 h6 _) ]7 _0 Y' G│  │  │      16.转账流程.mp4+ L$ a  i/ A& q$ m4 T) S7 A
│  │  │      17.转账界面搭建.mp4
% f, D/ T0 @5 {8 ]- m. H│  │  │      18.转账信息签名.mp4
. I$ e& t$ K6 L: i* ^│  │  │      19.ajax发送转账请求.mp4: b* b; u6 F8 N) o6 Y1 ^: |
│  │  │      20.节点服务器处理转账请求.mp46 D/ C8 K7 a: b' B+ D3 O- d; o" k) x
│  │  │      
8 _5 L* s8 T  D7 D1 U9 H  T│  │  └─5 节点间同步
/ g, d. h* g. m: p: |2 X│  │          21.websocket简介.mp4& P% C* v. L! \. a
│  │          22.节点间连接流程分析.mp4
' _" j! D. {% w6 K- r│  │          23.节点间相互连接.mp4& e2 T1 e. Y* @5 t" n
│  │          24.节点间任务广播.mp4
2 y6 F: A. U4 B6 @, T9 E│  │          25.节点收到任务广播处理.mp4; K$ A# Z! s- t9 _& @- @, m* a. A7 {  }
│  │          26.节点更新.mp4
  n% z+ G1 w4 q( |, Z. \│  │          26.节点更新.mp4.baiduyun.p.downloading
! Q: k# h/ o, c; Q: d! c4 A# ]│  │          27.总结.mp4
3 X: m6 X' |4 m# E│  │          ) b6 k" y$ v/ a, M  m
│  ├─5-3 会话技术2 A* \4 W0 K9 R, q
│  │  ├─1 简介! F' ]9 z+ [+ E/ Z
│  │  │      01_会话技术介绍.mp4% M8 v) a' W0 O6 S4 w
│  │  │      
) D) a. Q) ?7 w( m) Q9 z# w8 K│  │  ├─2 Cookie详解; @- b, o8 u6 S6 L; ?
│  │  │      02_cookie介绍.mp4
% ~& G8 _! H7 J5 E. k* a6 V│  │  │      03_cookie入门.mp4
3 D7 u* }7 c& D2 `/ B& `; d│  │  │      04_cookie 分类(持久性cookie).mp4
: o7 E9 D' ^0 ~9 p4 X" f- Y& w│  │  │      05_Cookie 存储在哪里.mp4
, q9 z) G* ?. W: N' N│  │  │      
: t% V) _9 ?0 m$ P) A9 z. a* t│  │  ├─3 Cookie案例
; v, `# P8 d  ]+ g- H! Q  \& d0 P│  │  │      06_Cookie 示例 - 上次访问时间.mp4* w6 |4 B+ x; z4 n# n0 f: i1 R" ^
│  │  │      07_Cookie示例 - 上次访问时间(一).mp4
; X1 ?/ [" B6 u│  │  │      08_Cookie示例 上次访问时间(二).mp4
( {8 B+ b7 p. d1 _│  │  │      09_Cookie示例 上次访问时间(格式化时间).mp4$ i" z3 r7 U  q* H+ F
│  │  │      : o' W3 O6 G  h( y  T0 t2 \
│  │  ├─4 Cookie细节
# p( E6 h) |; R# ~7 w│  │  │      10_Cookie 细节.mp49 ]  `+ s- {* m& h: {$ m! w7 p, t
│  │  │      11_Session介绍.mp4* C0 W. v9 G8 r8 Q3 Z' X4 i8 k
│  │  │      12_Session 基本能使用.mp4
) c- J/ v0 Q6 B│  │  │      13_Session的细节(没关浏览器).mp4+ J9 \7 P* X- L6 {! i  M- Z
│  │  │      14_Session的细节(关闭浏览器).mp46 {4 J2 A2 M. t) `3 }3 {
│  │  │      14_Session的细节(关闭浏览器).mp4.baiduyun.p.downloading
/ y# S. W$ V2 i0 J  j7 \5 Q│  │  │      15_Session销毁的细节.mp4" {. r5 @0 _& v
│  │  │      16_Session生命周期.mp4. S8 S% U# X# Q9 L: c2 i1 i7 J
│  │  │      * o% I( j% x$ B5 S& L) H+ A8 r
│  │  └─5 Session案例4 p" E. F$ S( W# W  M1 i: a
│  │          17_购物车 - 需求分析.mp4
% q; x) w! L: h7 x& r1 I0 r2 V  u│  │          18_购物车 - 后台准备商品数据.mp4* K3 h6 }5 e( G; v* I
│  │          19_购物车 - 页面显示商品列表.mp4
9 U3 f* ~3 j0 I) u│  │          20_购物车 - 添加商品到购物车.mp4
/ a0 e! l, c2 H* W3 ]2 f│  │          21_购物车- 添加商品到购物车(二).mp4( `) B/ K9 I$ j- V; A' r+ Y0 g
│  │          22_购物车 - 显示购物车.mp4
) i  W8 s' C( ^* B│  │          23_购物车 - 持久化cookie设置.mp4
2 r: |% x: J+ H/ V4 U' h, M' }│  │          - _& Q" {2 R. H2 Z% w
│  ├─5-4 过滤器RestFul, m; V" o) P+ S* }
│  │  ├─1 过滤器详解: |! C0 m4 S, A5 |
│  │  │      01_Filter 介绍.mp4
  i% |3 b1 v: Q: B│  │  │      02_Filter 入门.mp46 G' Y/ F) h2 w/ S2 P
│  │  │      03_Filter 特点.mp43 X( j, i. x7 @% B' z* m+ F2 [
│  │  │      04_Filter 忽略请求.mp4
" r5 i: N: t- w& |" ?& W' P3 W0 {│  │  │      05_Filter 特点(放行后执行代码).mp45 T2 v. t& E( n! `' W3 X
│  │  │      06_Filter 生命周期.mp4" {: Z% U. k0 o6 k' G
│  │  │      07_Filter 过滤器链.mp43 V$ F5 ]2 \+ c2 ~5 t- J
│  │  │      08_Filter 自定义过滤器顺序.mp44 R: ?9 M* ?# e; Q" h, K  H: w  O
│  │  │      09_Filter 总结.mp43 K) e. T" s% n& F/ K( e9 j: i  i* \
│  │  │      / M9 t: f; I# k/ r3 M1 V+ Z- F
│  │  ├─2  过滤器案例2 E% p9 w5 d: e& ^1 k" D: p
│  │  │      10_Filter 自动登录(分析).mp46 o; a1 B9 a% g$ \! O3 U5 Y
│  │  │      11_Filter 自动登录(登录环境).mp4; j4 }* t. ~$ l
│  │  │      12_Filter 自动登录(成功&失败的细节).mp42 r6 P$ B% y: a
│  │  │      13_Filter 自动登录(勾选自动登录).mp4
0 P; e$ V  \+ k( ^! K0 W. L│  │  │      14_Filter 自动登录(会话有效).mp44 H/ `) {. t, ^% ?0 w
│  │  │      15_Filter 自动登录(强制跳转登录页面).mp4
0 U/ a0 ?! @. ^/ [8 m, f! X8 X│  │  │      
6 W6 j8 I" [7 ~6 l6 h│  │  └─3 RestFul详解2 [% [3 t$ [4 |
│  │          16_RestFul 介绍.mp4
" J; d' H* \% q  U' v. C. O│  │          17_RestFul 使用的必要性.mp4
7 T' M, N) d3 S$ M5 B$ {! D│  │          18_RestFul 入门.mp48 s* W$ K: O9 t8 w" N  Y7 Z( h
│  │          19_RestFul 命名特点.mp4
3 f  M  v) m9 T" O& s│  │          20_RestFul 保存操作.mp4
+ ?8 \/ r8 t7 c0 N│  │          21_RestFul 删除操作.mp4
: Q& o( L6 N$ F│  │          22_RestFul 更新操作.mp4* G5 g' Q# v9 c# l+ d' A2 P3 g( \
│  │          23_RestFul 查询操作.mp4+ D( c6 l! J- A3 m
│  │          ! b" O6 c4 A4 M3 \: |8 S. k
│  ├─5-5 Linux入门
2 o5 s" M& R" I& n- ~* d│  │  └─1 Linux入门, l3 M# y' ^. U( {6 l2 H
│  │          24_linux 介绍.mp43 a6 Q! V, T7 s& R& m
│  │          25_安装虚拟机软件.mp4
$ t! Z1 T# b" e. E' g. K' O7 Q│  │          26_配置虚拟机.mp4
2 }& l5 q! F9 r4 {' d  E│  │          27_linux安装.mp4* q% m1 U3 A4 F0 Z
│  │          28_安装SecureCRT.mp4
3 N' H, P  n" @7 f0 t% p8 E& J│  │         
8 X8 B, n# H5 u& d- n2 U│  ├─5-6 Ajax与JQuery9 G9 O% x/ g9 f
│  │  ├─1 AJAX详解  k! _* w3 z+ x. d9 Y
│  │  │      01_同步&异步介绍.mp4
: K; Q' C$ x' U7 H│  │  │      02_Ajax 介绍.mp4
" H) E, J" i0 K7 R( I' ]. i; y│  │  │      03_Ajax - Get请求.mp4) F0 U' ?  T; h
│  │  │      04_Ajax - Post请求.mp4
4 i: \; H+ o% C, h, f" _│  │  │      05_Ajax - 获取响应数据.mp4& [5 g1 e0 W; h. R9 \( P0 }' n# t) T
│  │  │      06_Ajax - 校验用户名是否可用.mp4
; ^0 E$ E+ H2 N3 Y& Y│  │  │      ' [$ g% g! s8 ~% r9 {+ T, r& Z- ?
│  │  ├─2 JQuery的AJAX
' ~7 K" V6 p. D  A│  │  │      07_Jquery 介绍.mp4' y, j& W# Z' k0 r+ t- T0 b! v  z
│  │  │      08_Jquery - Get请求.mp40 O: K/ E* y0 m4 K
│  │  │      09_Jquery - Post请求.mp4* ]' ?' W- b# y1 Y) P: ]; X
│  │  │      10_Jquery - Ajax请求.mp4: B, q6 [; A* B; M. R% _& v, _
│  │  │      11_Jquery - 校验用户名是否可用.mp4& A2 y4 x: h1 h% D: ~4 w/ N
│  │  │      5 x5 B) @9 K7 ~% B$ y7 q+ |
│  │  ├─3 XML详解
# y6 M' |! S+ [' @│  │  │      12_xml - 介绍.mp4
$ Q& @7 B) c  n7 T: v, {│  │  │      13_xml - 定义xml.mp4* _; g/ a& o* y' K) ?" f+ j
│  │  │      14_xml - 注释.mp4
3 g% {0 {) B8 @' ~/ L│  │  │      15_xml -  解析方式.mp4
+ E6 B' Z1 o7 n" t, [│  │  │      16_xml - 解析特点.mp4+ u* H7 \9 r! V1 J7 j1 p. A
│  │  │      17_xml - 解析xml.mp46 U. O* U0 `1 r( F7 U3 _
│  │  │      18_xml - xpath简单使用.mp4( W" _0 }8 P. W3 i* E
│  │  │      19_xml - 封装数据.mp4$ R: {1 o: u/ S  _& T3 h
│  │  │      20_xml - 约束介绍.mp4; H7 O5 v4 l. f
│  │  │      ! X( S3 {! J7 U& F1 x& V
│  │  ├─4 JSON详解- B0 T+ `" t1 m. N8 V, N: x
│  │  │      21_json - 介绍.mp4
; Z. r; N' W5 ~  C$ O6 D9 h│  │  │      22_json - 前端解析json.mp4
7 o( b% g* W  I. T3 i2 q│  │  │      23_json - 后端解析.mp49 D7 E% n+ R7 g, @! E! k7 L/ l9 H4 g
│  │  │      24_json - 后端返回json字符串.mp4
  y% m  b7 E% V; X│  │  │      
0 n, j: j8 F  W6 N) @│  │  └─5 AJAX案例
. w" N! k2 a3 e/ z( w3 H. E│  │          25_省市联动 - 获取省份数据(一).mp4
% E3 T0 Q7 F1 w) ?│  │          26_省市联动 - 显示省份数据.mp4
8 s/ V6 f- A1 {; J% l│  │          27_省市联动 - 省份数据改变监听.mp4
7 x+ ~& k# x; W$ D8 a& q│  │          28_省市联动 - 显示城市数据.mp48 t" {! i' b4 ]5 z
│  │         
) V( j$ U4 w( h; e│  ├─5-7 数据库
# X1 m0 p9 v( _5 F│  │  ├─1 环境搭建和软件使用
+ ^& u7 O3 c  o! t│  │  │      01_数据库 概述.mp45 [& {2 ?" b( S# I
│  │  │      02_数据库 常用数据库.mp4$ u  F  A$ n7 K8 O+ r. g8 {# |
│  │  │      03_数据库 安装mysql.mp4
6 }! n, y# Z5 h! g│  │  │      04_数据库 - 可视化工具介绍.mp4. S3 I+ ]- n% P: e( Z2 q
│  │  │      05_数据库 - CRUD操作(命令版).mp4
  D% r; F' M. o. B1 x, o1 ?│  │  │      06_数据库 - CRUD操作(工具版).mp4$ d1 D  K+ ?( i/ k+ X5 i
│  │  │      07_数据库 - 字段类型介绍.mp4' n! N* Z- G; P3 U$ {
│  │  │      
" S7 s% [$ _% }; u/ \│  │  ├─2 表的操作
! e: g4 Q7 x- {5 M* D; R│  │  │      08_数据表 - 创建表.mp4
$ p  ^% [" d  Q( H│  │  │      09_数据库 - 查询表.mp4: w, n/ L/ `0 S3 a
│  │  │      10_数据库 - 删除表.mp4
4 }& D. @0 ^: ~) K6 d# M- ]$ q│  │  │      11_数据库 - 修改表.mp4
0 M. e2 i3 [" \1 Q) O- K3 i* j│  │  │      12_数据库 - 修改表.mp4
8 m/ G" x. S" m9 t9 o6 a│  │  │      13_数据库 - 约束介绍(主键约束).mp4
& c4 U' _0 W: Z" p. L: @│  │  │      14_数据库 - 约束介绍(唯一&非空约束).mp4
! _7 Q4 ^' p* Y│  │  │      15_数据库 - 主键约束演练.mp43 y6 ~- L( L8 ?" u/ B" h
│  │  │      
' l" d5 r7 v+ y│  │  └─3 数据的操作
* Q* f" `/ G5 }! O$ C, C8 o0 M: s: B8 E│  │          16_数据库 - 添加记录.mp4
; a+ g5 T! A5 H3 W" h( R. F│  │          17_数据库 - 删除记录.mp4
- C+ ?# F/ n- b4 F" T1 `1 U│  │          18_数据库 - 更新记录.mp41 k" R: U$ _: Y  i  |4 @
│  │          19_数据库 - 查询记录(简单查询).mp45 T7 O# Q9 C7 y4 r
│  │          20_数据库 - 查询记录(条件查询).mp4
0 A3 M9 d+ \, a4 x0 m/ V│  │          22_数据库 - 查询记录(分组查询).mp4, T; M2 \4 n2 m. n" \7 D) g3 N: y
│  │          23_数据 - 查询记录(分页查询).mp4
  j2 h( l6 u6 ~4 t! L│  │         
! ]8 Q4 b1 B! f* l│  ├─5-8 数据库和Linux. e5 ?9 W, t2 q
│  │  ├─1 表关系介绍9 Q" a: T6 ?4 J: ]' m
│  │  │      01_为什么要有表关系.mp4
& U/ h* p8 a* m, D0 S" v. m│  │  │      02_表关系维系的点(外键解释).mp4
+ x$ W1 o: @7 r! F3 R% T│  │  │      03_表关系维系的点(二).mp4! X  S0 O5 O$ V3 Q
│  │  │      04_表关系提问.mp4  U+ X, K- ^% U% S5 A: c. |
│  │  │      7 ^2 P6 B. o7 E$ Y8 N: X
│  │  ├─2 表关系分类
' B, Z$ R. D0 y7 W9 ^6 I2 t│  │  │      05_表关系的分类.mp4- Z7 y' b& c' Z  @5 g
│  │  │      06_表关系-一对多关系.mp4
# @# c+ O$ t, ?- `│  │  │      07_表关系 - 多对多关系.mp4
$ y4 A- J" B1 o# H1 D2 n! g│  │  │      08_表关系 - 多对多关系建立.mp4
* s9 J& V6 _6 }0 J: s│  │  │      8 |5 g2 X' L/ X/ X
│  │  ├─3 多表查询
4 B, g# N: m$ R8 o, A│  │  │      09_多表查询 - 子查询.mp4
; j% o1 t( \4 r6 h6 s. g2 o│  │  │      10_多表查询 - 内连接.mp4
2 C# a$ V0 a0 K. K│  │  │      11_多表查询 - 显式内连接.mp4
) a5 Z( x; x5 [- U; |+ w$ m) F│  │  │      12_多表查询 - 外连接接查询介绍.mp4
- q  i( ~) a8 r# Q9 o2 ]│  │  │      13_多表查询 - 左外连接查询.mp4( X2 \/ d* X  g
│  │  │      14_多表查询 - 右外连接查询.mp4
- X  q& [% q, S9 P$ k9 H$ u6 p! j│  │  │      15_多表查询 - 练习.mp4
0 U5 a1 V5 i, R; M│  │  │      8 R. B$ [7 a; Y, l, i7 t4 g
│  │  ├─4 Linux常用命令2 e# J# }, O9 d' R
│  │  │      16_linux - 常用目录.mp4
4 l, A' |1 a) s' _$ ]) f7 F│  │  │      16_linux - 常用目录.mp4.baiduyun.p.downloading0 a& \' ], H3 P+ |! ]
│  │  │      17_linux - 基本命令.mp4
! ]) [4 G9 L  ?0 A" v5 F│  │  │      18_linux - 操作目录.mp4+ L- k% u% m* w. o
│  │  │      18_linux - 操作目录.mp4.baiduyun.p.downloading
) H! o# A9 N9 G% h/ [, W│  │  │      19_linux - 文件操作(一).mp40 W# w$ q/ `1 Q: e# R
│  │  │      20_linux - 文件操作(二).mp4* u5 x5 N* N- _7 C& a
│  │  │      21_linux - 打包压缩(一).mp4
  X0 k9 P' f1 r* F* K$ E│  │  │      22_linux - 打包压缩(二).mp4
' J% y( D* d) C│  │  │      23_linux - 文档编辑.mp4
5 h9 ^. L$ M3 A% W1 j5 a- b│  │  │      24_linux - 其他命令.mp4
* E: [: p9 r- x6 g9 r│  │  │      25_linux - 文件权限.mp4
$ V. c- ?) D% f+ a9 L│  │  │      25_linux - 文件权限.mp4.baiduyun.p.downloading$ E. q. F* u. }' p  R; Y
│  │  │      $ J9 A9 ^# ?- u7 S
│  │  └─5 Linux安装软件4 F! k% p( z6 Z' ~4 D: R, P& {
│  │          26_linux - 安装jdk.mp4
+ T) J: t+ I" N/ \5 p3 v1 H# \1 h│  │          27_linux - 安装mysql(一).mp49 e1 e& a# J5 S1 c# w
│  │          27_linux - 安装mysql(一).mp4.baiduyun.downloading
1 a. E# W9 X$ D* L│  │          28_linux - 安装mysql(二).mp40 \7 b, w* e6 l: J  j& m' R( W
│  │         
5 h1 m9 S0 r2 D5 p" d# X) ?│  └─5-9 JDBC
( C: A: O1 p0 j& h* p1 J│      ├─1 JDBC详解
( z" j8 u/ v- H) _" |6 c3 ?│      │      01_jdbc介绍.mp4
% {- \$ R: J7 P+ S/ I! q│      │      02_jdbc - 入门案例(一).mp4+ e* v& N3 ^% r6 Q. {- v$ m/ t  J
│      │      03_jdbc - 入门案例(二).mp4( h; w$ F6 A5 ^2 O+ D- q
│      │      04_jdbc - 注册驱动细节.mp4
! V( ]$ S  k( X/ _│      │      05_jdbc - 工具类抽取(一).mp4
; }% m  k) \! A6 k5 L/ M$ r│      │      06_jdbc - 工具类抽取(二).mp4
: _+ E; r# M. [4 w( `. o│      │      07_jdbc - crud(sql语句回顾).mp4
; x2 y! c6 e9 j+ [/ ?│      │      08_jdbc - crud(添加).mp4+ j+ g% ]6 M2 L9 S
│      │      09_jdbc - crud(更新).mp4
. ^5 ?' r1 Z  X$ C$ a* d│      │      10_jdbc - crud(删除).mp45 x1 I. ?# T" T
│      │      11_jdbc - crud(查询).mp4
7 {7 z3 H6 ]4 v4 h; W/ e" b│      │      12_jdbc - crud(查询单条记录).mp4
4 Y- z& g7 W- U6 l│      │      13_jdbc - crud(聚合查询).mp4- m, ]( H# h  T: P9 }6 }. y  }
│      │      
, J3 E: q  [  P4 d$ L9 S% Z% j6 m│      ├─2 DAO设计模式
' v1 d/ Y+ W1 Y) z, a4 l│      │      18_jdbc - dao模式(一).mp4
7 Y; S, r* i5 w$ t4 z│      │      19_jdbc - dao模式(二).mp4( i& P( O* ^+ w4 z+ ~7 F1 k9 a
│      │      20_jdbc - dao模式(三).mp42 i8 h# r# _$ Q; W. K
│      │      21_jdbc - dao模式(为什么使用接口).mp4
- r0 Q2 I: _' u│      │      
8 \5 v# q* S- H) m2 V│      └─3 连接池技术! R( l1 M6 W9 l+ z
│              22_jdbc - 连接池介绍.mp4
) ^7 t! V6 C- c& G0 u& M4 G# l│              23_jdbc - c3p0连接池(代码版本).mp4- i& ^0 O8 O8 ~; x: z
│              24_jdbc - c3p0连接池(xml版本).mp4
; i$ q# Q! S) y: x, s│              25_jdbc - dbutils(一).mp4- C6 m# K* |* ~8 z1 V+ W% p
│              26_jdbc - dbutils(二).mp44 P7 j, X& F# H  t+ d
│              9 Z; e6 W+ m( c7 I! N0 O
├─6阶段 区@块链前端加强和中间件开发
  m/ j/ V1 k- _" W% y: w/ a0 K│  ├─6-1 NodeJs3 ~7 j, k( C, m- ^( M
│  │  ├─1 ES6语法
3 L' N# x9 ?* X( M' n/ n# p" Y│  │  │      1.ES6介绍.mp4
/ X3 a: Y  y7 h- N│  │  │      2.ES6变量定义.mp4
) a! F/ }0 ~' M. _. ]9 p│  │  │      3.ES6解构赋值.mp4& _/ g# R! ?4 ~( H0 e5 B
│  │  │      4.ES6函数扩展.mp4
- r, A2 s- `& M) G* d$ ^5 z* z│  │  │      5.ES6class语法.mp4
0 w4 b" L) U0 M* D% N7 N8 S7 @│  │  │      : y$ W* O* t6 N
│  │  ├─10 美女爬虫项目
  f! ~# G- O. u& s, p│  │  │      5.爬虫项目-获取html.mp4
! K7 F# k3 t' U│  │  │      6.cheerio类库的学习.mp44 q! L! C- N/ _4 U- ~! n  c' [
│  │  │      7.爬虫项目-解析dom并下载图片.mp44 V% C  {$ M* u; f" F
│  │  │      8.events模块重构爬虫项目.mp43 E. J  Q+ @! k) D4 p8 K
│  │  │      
5 ~* u# A& D: F# p& z6 d# M% f! @│  │  ├─2 NodeJs的发展和起步IO6 J, V$ e7 T9 S; H! _* L0 X) _5 p
│  │  │      6.NodeJs的发展历史.mp4/ q- U4 l9 v9 x% `3 V6 @( w
│  │  │      7.NodeJs异步IO机制.mp4
% }2 Q: k! m( @$ D" B7 T* G│  │  │      8.NodeJs功能介绍.mp4
) }2 d* B$ Y9 t7 y( w│  │  │      
# F# a& ~& B1 r' I, `│  │  ├─3 NPM介绍) M4 N( T" q5 n
│  │  │      9.npm包下载.mp4' j: Z4 D7 L$ f
│  │  │      
* P+ P% F& Q  e' C- ~. q│  │  ├─4 NodeJs全局变量6 l9 A8 j# E8 X  }" T0 F
│  │  │      10.全局变量.mp4
+ Y/ D7 ?, u* G0 u│  │  │      ; J; O- ~8 d9 P, [
│  │  ├─5 NodeJs文件操作  ^/ [, H, d' g1 ^0 a6 P
│  │  │      11.path模块.mp4
8 j. W3 [# a0 p2 h0 a│  │  │      12.fs模块.mp49 i5 C; Q3 ?) l& w2 }
│  │  │      13.fs模块reader流.mp4
& J) {2 R% Q/ b; I; i│  │  │      14.pipe的使用.mp4
' G( e9 m" J6 P; z6 u│  │  │      
% J1 U& j3 k; }8 ?! l│  │  ├─6 NodeJs异步语法& V# b4 Q7 K  q
│  │  │      15.promise和async_await语法.mp4
9 L: R. y1 M1 E5 v& O│  │  │      0 x3 q- r( n" a$ g( R0 `5 O8 s
│  │  ├─7 http模块学习7 Y) V2 |$ `4 x% Y
│  │  │      1.解决昨天遗留bug.mp4
! U! o0 @8 e1 ?0 ~% u  F2 F│  │  │      16.http模块.mp4
# r- R3 _) q6 z- X0 Q3 x│  │  │      17.static-server(有bug).mp4
& ^" o' v5 m( [  N0 B- {0 [3 ?- H, Y│  │  │      
6 z& }  w+ [. b! B│  │  ├─8 模块
6 W3 t3 I- [8 p6 l+ \│  │  │      2.模块导出.mp42 s! Y' J" `) L2 D' x  {0 j
│  │  │      3.crypto模块hash算法和aes算法.mp44 m) M; S6 K: j- W2 Q
│  │  │      4.events模块.mp4/ d! ~& n/ ^) ?4 p! D
│  │  │      
$ W1 d. Z/ l# y9 ~  b% m( x│  │  └─9 crypto模块和events模块  I5 `, m) r2 H$ z$ \# Y) h
│  │          4.events模块_doEbD.mp46 i) z5 p( m: G# F: S( f: @
│  │          / h8 @/ q! O& {# _4 @, E
│  ├─6-10 React项目开发
5 M# O" B/ K6 z- [8 G$ M' s6 h│  │  ├─1 Module导入及导出
' Q* ]4 y* z1 s/ K│  │  │      09.组件的抽取.mp4
5 E/ U. x' _3 A& z6 u( x│  │  │      9 S8 U) q4 V2 B, N! e9 C  b% [& K
│  │  ├─2 GTD综合案例! L) ~, H. D0 O0 b* Z
│  │  │      10.条目的添加add和删除del.mp4/ W4 _7 p# @  M: F: Z
│  │  │      11-Props类型检查及默认值设置.mp4; Q) W9 g' j  B# [7 H' j. o% a
│  │  │      12-配置样式&条件渲染.mp4/ o: g$ y1 T' [7 j6 K6 z* g5 Y
│  │  │      13-在受控组件&非受控组件之间抉择.mp4
+ r- O; m5 s8 }; M/ \│  │  │      14-路由.mp4
. g3 K$ j2 K) @4 a- _+ _│  │  │      15-组件的组合.mp4
, f$ ~9 k' b- ?8 M│  │  │      
1 [% M$ @, b- o0 U& c8 v- d7 S│  │  ├─3 三方UI设计语言  p" U4 x$ Z5 P1 f5 t
│  │  │      16-三方UI设计语言antd的使用-0.mp46 l' w/ }- o% `2 q- A$ Q" g
│  │  │      17-三方UI设计语言antd的使用-1.mp4
0 N0 _% H* \' h: M│  │  │      
. r2 Y9 ~0 S" o0 `& i4 V│  │  └─4 打包及部署
# C9 e" P' A, n- Z, s5 \│  │          18-打包及部署网页.mp4
0 ^% o, |# }- L# R7 W│  │         
2 z; b2 P' k' Z│  ├─6-11 ReactNative入门' z' T$ G+ @. J1 [( Y% p6 A
│  │  ├─1 ReactNative入门
9 c" V* s0 z  Q$ G│  │  │      01-知识点&案例介绍.mp46 y8 f7 s; K  v7 C
│  │  │      02-了解React-Native.mp42 @3 h5 l( U- y8 s
│  │  │      03-了解React-Native工作流程.mp4
/ {5 ]4 F% b1 v5 G1 ]) K│  │  │      04-创建第一个React-Native项目.mp4
: ?% c4 G6 y. ?: @8 ^4 H│  │  │      05-了解React-Native目录结构.mp4  j% P$ P2 t& g* y! i  S
│  │  │      06-ReactNative开发资料.mp4
8 F: w4 u7 ]8 Z; s6 K│  │  │      
- P+ m8 ~) Q+ ~0 Y" ]4 W6 A) k│  │  ├─2 ReactNative 页面跳转
: w/ E& b  Y1 s+ ?( b: Y. I│  │  │      07-通过react-native-router-flux完成页面跳转.mp4
0 p6 ]2 O3 ], G' o4 g+ _- L$ b│  │  │      
5 w" s, E0 r& m1 ]) j; `. I. H│  │  └─3 ReactNative组件
9 D/ i# u% g( [4 Y! l│  │          08-开发组件(swiper).mp4
+ t9 ?) Q4 M( M6 a" U+ M  \" w│  │          09-长列表FlatList入门.mp4$ I4 B, A5 u  m$ ?* p& Q4 b* j( x
│  │          9 K9 r. f0 M* R+ ^2 l8 R
│  ├─6-12 ReactNative进阶3 c9 B$ b+ R0 B4 e: D" I
│  │  ├─1 网络数据加载及展示
9 s! R7 b9 e/ A1 p9 W5 p8 c& ]2 H│  │  │      10-通过fetch请求网络数据并刷新页面.mp4. g" g" g3 G" C# t/ f
│  │  │      11-FlatList页面优化&按下事件.mp4- `5 j$ a4 o" u5 Q5 p
│  │  │      12-电影详情&Image的resizeMode&ScrollView滚动布局.mp4# }! E9 g+ m5 f" O5 a# E
│  │  │      : L$ m3 q7 w% g* K' x* D
│  │  └─2 调试&打包应用/ o" Q# |# z$ A+ x3 T& l
│  │          13-日志与调试.mp4
6 ]" c3 T2 X. ^/ Z9 p( Y│  │          14-打包签名Andriod应用.mp4
! H8 f# l; @# ^1 C4 q# P" e8 b│  │          15-修改应用图标.mp4  O! ^4 ], z4 Z5 \$ w* f! ^
│  │          # ]; F% M+ I+ T. X! {
│  ├─6-13 ipfs基础入门
4 O0 Y! H6 ~2 Y+ S! f│  │  ├─1 ipfs入门介绍
: S1 I, L4 f% e│  │  │      01-ipfs&音乐播放器课程简介.mp4
: ]- x! i8 M: W9 o( X- v% L9 R5 {8 P│  │  │      02-ipfs简介.mp4
4 D8 x5 e* r( k9 [│  │  │      03-Http协议的特点及问题.mp4
1 t( \0 |# R" ?1 Q' Z; U* E│  │  │      04-ipfs的特点及优势.mp4& H5 H) y% A# t) O
│  │  │      
- u, j7 s! S/ R: f* H│  │  └─2 ipfs的常用命令
9 H9 U4 f  q* {, q# a│  │          05-ipfs入门&基础操作(上).mp4
2 B6 n4 Q9 z0 K$ _- N│  │          05-ipfs入门&基础操作(下).mp4
( g! c$ F+ W0 R& g│  │          06-ipfs数据传播方式.mp41 a( k0 R1 ~  S5 T0 Y" n
│  │          07-ipfs的files操作.mp4  ?  r# R7 I- E0 o5 G$ [
│  │          7 s# i$ u/ ~! H+ x9 ]- L8 n
│  ├─6-14 ipfs进阶技能
% ]$ r' p& a& e0 v: h* }5 Q* G│  │  ├─1 ipfs的配置
; B3 D! D3 e! |! v2 ^# V- r. P│  │  │      08-网易云音乐的API.mp4% \7 h; ^7 F, V9 ]& i8 f( R9 i
│  │  │      09-开放网关&修改默认IPFS存储目录(上).mp4  z/ P) r7 E6 p. ~
│  │  │      09-开放网关&修改默认IPFS存储目录(下).mp4* w, u1 \5 K2 y, g
│  │  │      10-ipfs添加&访问图片数据.mp4  C+ \9 T* c' K& C1 S2 B0 r" t" u$ r
│  │  │      + q% x- K  e$ O" s$ d
│  │  ├─2 使用js-ipfs-api/ c; Z5 Z9 h6 u3 Y% I
│  │  │      11-使用ipfs-api获取网络数据.mp4
, u- B) Z4 Y" v│  │  │      12-使用ipfs-api上传网络数据.mp40 W5 S/ w* j2 G+ K- ~2 ^
│  │  │      
3 D% p3 U; B9 J5 z5 B/ }7 ?│  │  ├─3 ipns1 J' v* \$ h- n
│  │  │      13-ipns绑定hash数据.mp4( L# f. G; m! c$ ^
│  │  │      + [) b% r4 b4 l! r, B/ w# ~
│  │  └─4 ipns的其他常用操作
9 u" w3 ?% b3 r% g8 ?│  │          01-课程介绍_2EbFP.mp4
9 ^, Z8 ~3 ]# C7 _, r" z│  │          02-ipfs其他常用操作-pin.mp4& S0 k) x  X. ]) E) Z$ O
│  │          % D2 {0 T. M) y. [' \' @
│  ├─6-15 ipfs-api案例项目( U, X3 ~! H; G% D! f
│  │  ├─1 ipns-api案例开发, N2 J. e3 m. P
│  │  │      03-ipfs页面路由.mp4
5 q" J0 T+ }. ~& n! ?6 _7 e* u│  │  │      04-ipfs-api文本的上传及获取.mp4
1 ~( |* ~7 o0 {& N! |; ^9 b│  │  │      05-ipfs-api多媒体文件上传.mp4( F9 W/ A0 _+ s' T& d7 ]
│  │  │      06-ipfs-api图片文件上传&Promise封装.mp4
) `) }& ]8 x" W. m5 ~7 s│  │  │      07-ipfs-api文件files的使用.mp4
2 l  g, X0 N. O, Q; g│  │  │      * x# @# X# ]7 X) d; n3 k: j! U1 e
│  │  └─2 antd设计语言
7 \1 d, o% I4 m9 {  D│  │          08-引入antd布局.mp4* |$ K3 ]- Z# i' N" T7 [
│  │          09-配置antd的布局路由.mp4- ?  m7 a  r4 U
│  │         
) y" v5 V. R9 C) o3 [│  ├─6-2 mondodb" \% a# {, e1 k  A0 |
│  │  ├─1 mongodb3 v# G/ J' c: K& y4 M
│  │  │      10.mongo命令行增删改查.mp4" q9 T4 ^9 h6 {( s& h* e" _
│  │  │      9.mongodb介绍和安装.mp4- y) ^) n  C. ?$ a) F; y/ V
│  │  │        x* W9 }0 L5 w
│  │  └─2 mongoose& v9 |( e2 `0 g+ \' u& {2 Y, L
│  │          11.mongoose连接数据库并插入数据.mp47 S9 Y7 t* d! |
│  │          12.mongoose基本CRUD.mp46 F1 k* e( i. z" c/ h' m6 B% @! j
│  │          13.mongoose高级查询.mp4
1 z0 a. N! n; L: m2 Y3 B. {│  │          : P* K* O( o! z) [+ @( S- m+ l7 X
│  ├─6-3 Web框架
) H/ }- H3 e- S/ B│  │  ├─1 express框架
, F% C1 D+ H; w$ R4 Z- E│  │  │      1.Express简单使用.mp4
0 e% a) ~! x8 V/ i0 u# H: Y3 D' K│  │  │      2.静态文件托管.mp4
+ R" r% L5 A% N; q+ J│  │  │      3.路由的简单使用.mp4
$ e" U) J. s8 |9 a  f" q$ y│  │  │      4.强大的路径匹配.mp48 x  ~6 F$ k3 e& h' ]9 U& Q
│  │  │      5.模块化的路由.mp4) `9 _" m( J, V2 D
│  │  │      6.中间件系统.mp4
7 T# O  i4 v6 N( ?│  │  │      7.全局错误处理.mp45 @8 s" f+ F7 i- ^  p  s5 r6 o; w
│  │  │      8.模板引擎.mp4& N' E* U6 J) l0 g# j! t3 U5 H
│  │  │      
) b  u4 c# C  p' V- |│  │  ├─2 pm2
  D! D7 V) N% K! I$ m+ d│  │  │      9.pm2进程管理的使用.mp4
( n; _$ m4 C2 ~' P  t* L, z* n" \# X& Q│  │  │      * K$ z+ u+ H; w, _5 ^& a* x
│  │  └─3 Todo项目
5 k/ T& S, I- u3 }4 S9 s│  │          1.Todo项目service的编写和单元测试.mp4$ [! w" @& E1 a' {! G' {" j
│  │          10.Todo项目的架构搭建.mp4
3 |' h. z2 O, e│  │          2.Todo项目router层的编写和测试.mp4
3 v( s. t3 ~0 y, P% Y│  │          3.异步异常的捕获.mp46 B# Q4 W; D* [0 v- K
│  │          4.日志中间件和config文件的使用.mp4
% R& ?* v* s( j& r7 x│  │         
( T- w& F) \/ P) x" F+ G│  ├─6-4 Web开发( m" g& L3 [; I! |7 e/ C4 N2 e$ ~
│  │  ├─1 RESTFul API设计和前段端分离1 e! q0 U: `$ e" N0 l
│  │  │      5.RESTfulAPI的设计.mp4
3 c& c: p4 N0 o0 c, I7 f5 _6 o│  │  │      6.前后端分离的概念.mp41 j8 g0 F  J' d" ~) A: b
│  │  │      $ j  x' n4 d- r3 f- m
│  │  ├─2 电商管理后台项目架构搭建7 x* Q0 @" p# z$ D
│  │  │      7.电商后台系统介绍.mp4
( K- H, J) e$ c! M% v8 F# g│  │  │      8.搭建电商后台项目的MVC架构.mp4) u" F8 Q3 T$ y# p: q3 T0 x% O
│  │  │      9.config的动态切换.mp4
/ g8 o+ s& O, e3 U. K$ Q* ~2 h│  │  │      1 `" ^4 [( n* C  m6 _7 \
│  │  ├─3 用户模块
# V, Y8 y* D" _/ \4 _2 Y$ c│  │  │      10.res_md中间件的封装.mp4! g. Y, b0 ~8 ?
│  │  │      11.userService的编写和单元测试.mp4
) w2 n0 N: G, c) L7 Z- g│  │  │      12.使用token来实现用户的认证.mp4" q% v" n* [5 |& h5 s- I3 k- \. L
│  │  │      13.user模块的router层.mp4
  V. x  v4 [0 m│  │  │      
# k4 ^" s4 D" {! o! q) k9 G│  │  ├─4 分类模块3 F; p4 Y& Z) H
│  │  │      1.category的service层编写和单元测试.mp4
+ M! a' X8 F+ X1 c│  │  │      2.category的router层编写和测试.mp4
4 U* [/ F. H& ^│  │  │      
4 m" D+ m$ r# W6 B9 K- [% O; {│  │  ├─5 商品模块+ r( J: S" N. q& V
│  │  │      3.product的model层编写.mp4
* D1 ^  N- i& @2 V0 s│  │  │      4.product的service层编写和单元测试.mp4
& K) }: k3 _* d" J│  │  │      5.product的router层编写和测试.mp4/ k3 E$ T6 u) F- Z- M# }& A
│  │  │      
8 s7 t7 U* ~9 W. z8 X7 l8 O│  │  ├─6 订单模块
) j0 k. V$ d6 N. I4 b, z, A! `│  │  │      6.order的service层编写和单元测试.mp4
: p/ s/ G8 Q/ U* o# k# m│  │  │      7.order的router层编写和测试.mp49 q+ [# c- _8 C
│  │  │      
" z" T6 Z( w" ?$ V6 S│  │  ├─7 token认证和权限管理
1 X- g: ?6 f  n│  │  │      10.permission中间件.mp4- D! c4 \/ s( |4 l+ A0 ^
│  │  │      8.token认证中间件.mp4
+ l* h: @" l& V2 m7 k7 b│  │  │      8.token认证中间件.mp4.baiduyun.p.downloading
6 y# c/ F( d6 z, K) e5 c1 {! V│  │  │      9.完成token认证的中间件.mp4% \; ^: T7 K$ r0 L/ l
│  │  │      
$ W- ?0 R1 A" e# U. a│  │  └─8 集群搭建和线上部署$ w0 {0 o, N' Q" `# F
│  │          11.pm2集群搭建.mp4
, T6 c2 g7 T2 M│  │          12.线上服务器选择.mp4
( N, H9 t, f  t, K' Q│  │          13.阿里云部署工作流.mp4
( L$ ]# \& H( o0 c│  │          # @( j: k- U% m- ?! ^( z; T
│  ├─6-5 高并发解决方案
2 T5 F+ `& P4 }  v4 j, P│  │      1.高并发的硬件和软件的解决方案.mp4
3 F0 f9 T. P* A2 u8 ]│  │      2.Redis介绍和命令行操作.mp4
( |+ u. ^2 \5 W- X│  │      3.Redis在项目中的使用.mp4, v% }0 U0 _8 R0 a
│  │      Thumbs.db
2 S/ e( n' I# Q: Q│  │      
( q% v) R4 h- `8 W  s2 n│  ├─6-6 Vue的基础语法
" K5 t+ }$ v3 f% D6 i% m) j4 z8 _│  │  ├─1 Vue的入门7 _1 t5 Y# a: r# v
│  │  │      01.课程介绍、.mp4
- ?+ |* z$ ?' T3 W4 @# f$ L│  │  │      02.vue的介绍.mp41 z. J+ e$ D# h
│  │  │      03.vue的简单入门.mp4
: |3 ~) V& j& R- r6 Z' |: U) k│  │  │      04.vue快速尝鲜.mp4) V: `' W  a( p* K8 R5 R. I
│  │  │      
5 ]. P8 K3 d% E- u, B# s+ M% U│  │  ├─10 结构和路由2 e6 I% J5 h+ X2 V0 ~: @
│  │  │      26.工程结构.mp4
! e: Q# }& {" T$ d│  │  │      27.vue-router.mp4  s6 ?; |/ |9 D
│  │  │      28.总结.mp46 J. F: R9 ?5 S  c$ h  _0 Y
│  │  │      
8 ?8 D6 \0 V( @4 r2 G; V1 V$ T. K3 Z│  │  ├─2 Vue的实例+ C. q- E1 ]3 R$ }# j  M
│  │  │      05.数据和方法.mp4, b$ ]$ e% Y$ ^6 C
│  │  │      06.生命周期钩子.mp4
0 [7 C+ k7 F, m  T│  │  │      07.计算属性.mp4
4 w7 e4 [5 ^" V1 f: J5 d│  │  │      08.侦听器.mp4
7 e5 F3 F7 z0 w1 n│  │  │      
3 L5 A( t" i; A$ c  W; P/ B- t│  │  ├─3 class的动态绑定( E, V% \( _  B) |* o) C- @9 z9 g
│  │  │      09.class的动态绑定.mp4& ?5 v6 y* n( m( H( K( h  S% \
│  │  │      
4 m: a+ P" X7 B( T( c' U9 B8 m│  │  ├─4 vue中条件判断9 o" U9 T  H& B
│  │  │      10.条件渲染.mp42 T) X4 F8 t/ v
│  │  │      
! r- x4 F: ~% \' h( i│  │  ├─5 vue中列表处理
, ]0 ~* z% c0 x8 H│  │  │      11.列表渲染.mp4% b9 E$ x: I0 T; E3 W) W+ U/ r
│  │  │      12.演示数组中的操作.mp41 b1 O. E5 k# y2 b! T% w1 q
│  │  │      13.遍历对象.mp4
: c" M2 o% R' s│  │  │      14.修复数据-注意事项.mp41 n9 c8 a; J( X0 T- b/ O+ A2 x
│  │  │      15.完成todos案例.mp47 {. ^6 x, t0 n" H& ~, o5 ]8 c
│  │  │      
; G4 i5 n8 u9 Y│  │  ├─6 vue的组件
9 m$ |$ D+ I1 h│  │  │      16.全局组件.mp4
! E4 [! K4 E' j% R% ^8 V│  │  │      17.局部组件.mp4& ^. l7 r/ x+ G. Y( ]- Q" F3 r! Z
│  │  │      - e3 K( a, R$ w( U/ w
│  │  ├─7 vue的组件通讯
* C" Z( s9 T$ |& X. k! d6 Z│  │  │      18.父子组件通讯-父传子.mp4
2 Y. c0 g' W% p0 M+ U0 j│  │  │      19.父子组件通讯-子传父.mp4
1 \: R9 O" d0 I! t3 y│  │  │      20-注意-子组件不能修改父组件数据.mp4
" W' ~1 ]6 c6 Z5 S$ M│  │  │      0 S$ N0 n( e+ k4 ]* z- ], s
│  │  ├─8 vue的插槽
  W* ~  N# w+ N$ A% {│  │  │      22.组件的插槽.mp46 N* t' c  I$ p6 W* a& n: y
│  │  │      23.具名插槽.mp4. k; L6 w/ t0 h) x3 W
│  │  │      24.动态组件.mp4
/ i' |  N9 x& |9 F1 Q5 k4 \% M│  │  │      
5 D/ F* W  B2 _0 \% |8 A│  │  └─9 Vue的脚手架工具
/ C0 h) R& n- t7 s1 i& ]% g│  │          25.vue-cli脚手架工具.mp4
- I/ Z( O% ?7 L& j│  │         
* p- o# d2 c; U0 {/ |# @+ c+ x( \│  ├─6-7 彩票排项目重构
4 l2 w: x. G8 W7 q( ]3 t% s│  │  ├─1 搭建项目结构
* m1 P/ c" G. |: I2 P1 r. {' y; e│  │  │      01.上次课内容回顾.mp4" T& f" Q" B0 p
│  │  │      02.今日课程介绍.mp4
+ T& b- E* b+ h- }* f│  │  │      03.搭建目录结构.mp4
& q. h7 X: ^- [9 r* K% K) G│  │  │      04.引入bootstrap.mp4+ o" q4 K5 G8 V  d* t: |/ X
│  │  │      
  V, w' c2 f4 e. |9 f# y│  │  ├─10 完成选号组件的业务逻辑! i2 i+ J3 d4 m# Y' b0 D
│  │  │      01-今日课程介绍_gTKQW.mp4- @- }  l& @$ `7 K8 W: W+ Z
│  │  │      02-搭建选号组件.mp49 Q6 @2 z# n1 {
│  │  │      03-初始化所有红球.mp4
$ R, v# V# \0 f8 R9 Y│  │  │      04-红球单选的逻辑.mp4# O1 m. H2 w7 s1 w# y+ L0 A7 h
│  │  │      05-selectpage获取选中红球.mp49 k3 _( ^! q6 G9 K7 e
│  │  │      06-初始化所有蓝球.mp4
1 z. j8 Z+ D5 D+ }' Q1 x4 L│  │  │      07-蓝球的单选逻辑.mp42 m1 Q) Q3 Y4 m9 T* [: z1 n+ o- i
│  │  │      08-selectpage获取选中的蓝球.mp4
1 C( `3 }: K1 v. {/ r7 @│  │  │      : b7 Y0 Y+ O- f; x3 I/ b9 v! j4 W
│  │  ├─11 添加数据到Vuex中
5 [8 U$ C. e5 g0 A1 n. C* @6 n│  │  │      09-添加数据到cart中.mp4' @% c# ]6 \, `/ D, |
│  │  │      10-上节课遗留问题.mp45 Q. l2 u2 z( o2 C3 I" @
│  │  │      11-修改数据为购物车定义的格式.mp4
, y* p  q9 g. ^) h3 k' F│  │  │      % V, t6 t4 J: d8 [( d( Z2 u; Q
│  │  ├─12 完成购物车组件
9 H6 U4 p- _3 D$ I( n│  │  │      12-显示购物车中的数量.mp4
" F8 u% ?+ Y  q" H4 i│  │  │      13-购物车组件.mp4
) \( ~9 |2 Y, G# x│  │  │      14-显示购物项信息.mp4
  G! K& j; |, S6 E2 ^│  │  │      15-完成机选功能.mp43 r) J0 p1 b/ K$ J
│  │  │      16-完成清空的功能.mp41 @9 r) I- R" A' |
│  │  │      17-完成删除单个购物项.mp48 f2 h. W5 Z- L- i
│  │  │      18-显示购物车总金额.mp4
" E1 z; e3 o4 c: \8 g0 s│  │  │      
- ]6 x0 X( D# X( Y1 X6 b5 Q│  │  ├─13 将数据保存到浏览器中
+ j8 V1 b. Q" P# e) B+ d4 V│  │  │      19-使用localStorage改造项目.mp4& {$ S, s9 F1 r$ L5 M3 @: e
│  │  │      1 X5 C; h$ b" E6 G2 f
│  │  ├─14 机选逻辑
8 c% k3 c3 g0 @& }; m0 v- X  D│  │  │      20-红球机选的逻辑.mp4
2 O* T/ u+ v+ B5 H  L$ x/ l│  │  │      21-蓝球机选逻辑.mp4
: n( c+ l  x+ Y  @& L9 o5 Y│  │  │      22-机选逻辑完成.mp4" O! c& `) f( ?
│  │  │      1 q$ ^8 p: m& g- w
│  │  ├─15 总结
# ]& \  b9 R% Z5 S) K. j" O│  │  │      23-打包.mp4: P# S* `1 e* w0 G* F' m% c; H
│  │  │      24-总结.mp4& F& u! _; s5 T
│  │  │      : W3 `! `" @+ e3 u1 N
│  │  ├─2 完成首页模块3 U# z: z" p' l; ]+ D
│  │  │      05.TitleBar-上.mp4
' u' z" `, k6 S3 K) V8 i( a% E│  │  │      06.TitleBar-下.mp4
8 [( L, E# ~9 X1 Y, q& y9 [) L; Z│  │  │      07.抽取Carousel轮播图组件.mp4
9 Y. }& t2 T! j! p│  │  │      08.抽取HistoryList组件.mp4
% w* `% t9 p: K) A& _4 `* \2 K* c│  │  │      09.发送请求分析.mp4
9 R7 @" _: y2 e- k│  │  │      10.发送请求获取staic中的数据.mp4" v3 B1 d+ Q  t' `1 {
│  │  │      11.完成首页-列表展示.mp4
  s! v4 L! W3 W7 G8 S( M5 U0 l│  │  │      12.回顾首页案例.mp4( b1 c2 E- B8 G8 [. p  J( h
│  │  │      0 F1 y6 U6 K& }" l& N- ^( K
│  │  ├─3 调试配置4 q% x! c6 J8 J$ ^+ U' p0 x
│  │  │      13-pathRewrite前后端代码联调.mp4- g, t" l- ]& u5 c7 Z/ O
│  │  │      $ A; U7 l# _3 L1 O7 s
│  │  ├─4 重构menubar和titlebar
) w: l+ J* F; r5 s6 ?" `* O/ m7 G' U│  │  │      14-抽取menubar组件.mp4: c8 s* X% `% b6 g
│  │  │      15-组件之前的跳转.mp4
0 @" n# K" b% C3 U( l* b│  │  │      16-修改titlebar中needback为布尔类型.mp4" t: I+ i6 y  p5 ]
│  │  │      3 E; o  m, F  M$ D( l! S
│  │  ├─5 完成彩票详情组件
  d! y' i- {) o' F/ j( K5 W│  │  │      17-完成彩票详情组件.mp4
- z) @4 v% U5 K* X│  │  │      
+ |% J: p* ?6 J0 @│  │  ├─6 解决遗留问题
' A9 D7 C! j( `$ N4 t! N3 Y4 Y7 S% P│  │  │      18-上午小结.mp42 |3 l# f1 q4 b5 s+ w3 b
│  │  │      19-创建登录组件和用户组件.mp4% K" |6 K' R7 b3 p" m/ [
│  │  │      20-解决menubar跳转问题.mp4
' A) r9 c' b+ C; o│  │  │      # y: G9 d( m8 t- K6 N
│  │  ├─7 Vuex的介绍
4 \, Y, T$ e  Y- W: ^│  │  │      21-保持用户状态问题-非父子组建共享数据.mp4. Q( y; U# [# }! V' s* @* n0 `
│  │  │      22-Vuex中的简单实用.mp4
8 G0 ~3 b, j  j- E- }2 v' M! ~│  │  │      23-vuex中getters的使用.mp4$ }  q3 ]0 L  ^, K, u3 o  d- U4 b
│  │  │      24-vuex中抽取模块.mp4
; B6 H# ~4 y3 B3 n+ l$ G* {│  │  │      25-总结vuex.mp4- L# y8 r2 x, g) Z$ W7 A
│  │  │      4 g1 C) j. @2 A
│  │  ├─8 使用Vuex
4 ]+ J% x1 W" K0 _! |2 {" M│  │  │      26-封装一个user的Store.mp4
& n1 y& [$ f( c# a8 @7 U/ W│  │  │      
# G1 g8 H) T$ w6 B│  │  └─9 完成登录和用户组建共享数据5 E( S0 @2 s4 s  ^9 y8 a
│  │          27-完成登录和用户组件.mp4
# f  U7 Z/ D: {6 u+ S% n│  │         
2 |& c4 Z, m/ \│  ├─6-8 React基础入门3 t  s1 ]. M( b. @
│  │  ├─1 React介绍与入门
! p/ z3 {% d/ Z4 i3 q/ `8 B│  │  │      01.react简介.mp43 ^6 O7 u8 \4 q' h* X
│  │  │      02.通过脚手架初始化React.mp4
9 T+ H: p; k% A: R; u│  │  │      03.配置npm淘宝镜像.mp4
) i( r7 Z8 Z2 R2 H. y3 c│  │  │      04.通过ReactDOM渲染元素.mp4% y8 e) s9 s* E9 P, M" C
│  │  │      
0 H1 ^' V  f2 U* K3 t- V( v│  │  ├─2 React属性&状态
2 l& d" Y, n1 g% q( ]% @│  │  │      05.组件的声明及组件的状态.mp4( [9 y% D4 a/ q. t# z6 m3 G% e* J) z
│  │  │      06.组合组件及props的特性.mp46 N5 W5 s/ a9 @
│  │  │      07.state状态及更新.mp4
. x* u8 T! x: s1 }│  │  │      08.state状态的特性回顾.mp43 S) Z/ {; Z9 ?
│  │  │      
) @. _" A* w4 P  f│  │  └─3 生命周期
; a" Y  G; _9 U" j8 P% C! i' t│  │          09.react生命周期.mp41 L' K$ e, T- z
│  │          10.多个组件的生命周期和状态维护.mp4; Z/ a* ?" x) t) U! x
│  │          , t6 l5 w: m& q9 [" @
│  └─6-9 React进阶知识& x8 a6 S) y7 K6 w3 w% [
│      ├─1 React事件1 g* @6 Q" R* p; n+ j) g* K) t3 {4 |
│      │      11.event事件.mp4! V" s6 u. T- g: A
│      │      12.event事件传递参数.mp4
' d4 I& Y/ C: u6 X" p7 _' |( R" H│      │      13.计数器游戏.mp4
, M# u% ^4 ^! B1 m% L/ u( z│      │      13.计数器游戏.mp4.baiduyun.downloading
7 g3 `+ V: _# d/ f│      │      1 n( Y) R* s+ }& Z1 D/ m. K/ X
│      ├─2 style样式& N0 m: z+ ]+ K4 j! T
│      │      0.通过文件引入.mp4
2 U+ x7 c# W- n) K2 u& c8 Y│      │      00.yarn及翻译插件.mp4
" R+ d* T" ]' i6 K  R4 z│      │      14.style样式写法.mp4
2 p) C: S8 [7 J  x" Y2 Q│      │      
/ t- `9 l- h; X0 y& P9 ]│      ├─3 受控组件  k4 t2 e" i+ ]4 R4 ]; l  T( W8 n$ s  }
│      │      01-内容回顾.mp4* {( ~$ ^$ T5 |$ F+ h2 B
│      │      02-付款计算器页面搭建.mp4
! k  @8 W2 K; N9 s│      │      03.受控组件.mp42 Q4 Y( \# H2 g6 p0 L% L
│      │      6 k4 j3 q$ ~5 w$ Z3 t- z
│      ├─4 状态提升" d" G+ J! y! Y) S8 A, g" }2 O$ e
│      │      04.状态提升.mp4
+ c2 f/ a# f0 I) w+ A) `; Y* V│      │      05.状态提升-组件数据流.mp44 Z# c5 k0 Y) y4 F. M+ k7 k7 a
│      │      06-状态提升-付款计算器代码优化.mp4
9 J; n, u6 z6 @3 s; P1 F│      │      
6 H; @5 T5 c+ a│      └─5 非受阻组件
  ^# \- b4 e9 `) ]│              07-非受控组件-refs.mp4! s, _/ c* O8 n. d$ U! t. Z" p3 ?
│              08.非受控组件.mp4
2 |: |% Y4 p  X& k3 n4 x  l│                ]' L; m6 p2 T. G* j. ~
├─7阶段 以太坊区@块链和智能合约实战
( ]$ P$ G  M; B│  ├─1 以太坊入门- i+ _' W& N- w, b) T
│  │  ├─1 区块链市场价值* U% N: y* _0 i
│  │  │      01_课程安排介绍.mp42 }: U7 x% V. N0 P
│  │  │      02_区块链10年.mp4
. ~2 o) O  ?  h0 W5 [│  │  │      03_区块链的市场分析.mp4
6 b# ^: R' P3 x: [& u/ X│  │  │      04_区块链的项目机会.mp4
' [  j0 j& \6 e" g4 c( P│  │  │      05_信息互联网和价值互联网.mp4
* f  K3 i* w2 a7 X) P4 E( N│  │  │      
2 I1 F- o- r2 X6 l8 m$ A4 q" x! u# c│  │  ├─2 以太坊介绍6 E. B& ]) r% p# S6 P
│  │  │      06_以太坊的历史.mp4
- v- m' W0 T8 v6 S! W% Q│  │  │      07_什么是以太坊.mp4: M" i: Q4 y- I/ T0 }2 [
│  │  │      08_如何和以太坊网络交互.mp4
  j6 v" U- ]8 H/ }  m│  │  │      * x6 q5 |  A* s3 D) a) t
│  │  ├─3 以太坊钱包安装% h# ]3 V8 w5 i5 g" i
│  │  │      09_metamask的安装.mp4
6 ^" D7 m6 S% U7 T9 b  l│  │  │      10_如何安装metamask.mp4
* X$ M0 A' i7 h: ?│  │  │      : g( {- j* t. h0 D* x
│  │  └─4 以太坊常见概念/ K1 r5 D0 Y; ]3 {% J
│  │          11_以太坊网络介绍.mp4
) W9 L! V- C. c' {* D, T5 @3 e$ b( @1 y│  │          12_区块链工作的核心原理.mp41 X" D, C9 @) G( n* a& U
│  │          13_以太坊的账户系统.mp45 v3 j) c5 i, h* F
│  │          14_演示以太坊转账和账户的概念.mp4( f2 b- h$ T" j
│  │          15_为什么转账需要一段时间.mp4
# H' P9 O* y9 v  ?: j7 `│  │          16_交易打包的过程.mp4
4 h2 l8 t6 N3 s│  │          17_区块时间和难度调整.mp4
. P9 O$ C' |; V# ^* O│  │         
  U+ k. c1 J% c│  ├─2 solidity智能合约/ f  m3 G1 i. u( G5 A' y5 \- c4 M
│  │  ├─1 soliddity智能合约编写# ~: @3 m2 z! ^- Q( W
│  │  │      18_什么是智能合约.mp4; k3 m5 g8 x- q8 K+ x3 |
│  │  │      19_solidity特点和工作流程.mp4! X# }2 t( M. Z% W
│  │  │      20_智能合约的源码和实例.mp4, z: ~2 _4 o7 D# M: j% @& I
│  │  │      21_智能合约的helloworld.mp43 y  n+ P, L( ]
│  │  │      22_自己搭建remix的开发环境.mp44 E& c" R. Q* l2 u9 `
│  │  │      23_solidity函数关键字.mp4
2 ^2 t+ _; L1 c- P& H' U│  │  │      24_以太坊的call和send.mp47 ]2 q% E$ H& M: D& h/ u5 k+ V+ O
│  │  │      25_以太坊的单位.mp4
1 d5 h# G* }4 N2 Q5 M1 q│  │  │      26_gas和gasprice.mp4
: d# W4 I0 s5 @9 f9 W: n  X3 E│  │  │      27_助记词bip39协议.mp44 f0 R: B4 p! {' s! s  x9 ~
│  │  │      28_更多以太币的获取.mp41 |0 S7 {* R0 w+ Q+ E) U
│  │  │      谷歌浏览器使用.mp41 v. T  q/ R. ~5 T
│  │  │      4 \: i9 k* s, ?' w% Y' M) m6 @
│  │  ├─2 soliddity智能合约编译" A# o0 j: k' E2 ]! I4 G8 s
│  │  │      01_开发环境说明.mp44 m8 L& E7 _9 G. C5 I; p; N
│  │  │      02_项目的目录结构.mp4
  T; A- U# m* H6 z' B5 h8 ?5 ~, f│  │  │      03_编程简单的智能合约.mp4
6 T* O( Y/ n  A5 x│  │  │      04_智能合约的手动编译.mp4
, ^3 D& `3 t/ p( _0 D" d│  │  │      
$ f' U8 ]8 c. J* L# Y│  │  ├─3 solidity智能合约框架
  f+ X$ E3 _8 I( l. T' F+ D│  │  │      05_智能合约的安全问题和软分叉硬分叉.mp4
" d/ k5 ^+ l/ v4 @2 Q│  │  │      06_mocha测试框架入门.mp4# Y# N% x, b+ z, u
│  │  │      07_安装ganache测试环境.mp4
( t) m8 [' ^4 U9 P( T! `" ^│  │  │      08_web3js的安装.mp4$ p! H5 a  N7 t' k% Z' M) U2 A
│  │  │      09_web3初始化和版本检查.mp4. s. x9 G1 f2 w$ F( ]
│  │  │      10_web3一些常用的api.mp4
7 v6 b7 u1 b/ n5 U│  │  │      11_web3与账户相关的操作.mp4
. G# D* g1 V, ]7 i+ t1 D│  │  │      12_es6的新语法async和await.mp4
; s+ F, |4 a' H│  │  │      
7 n# ]2 m) ]8 i8 C+ c- s1 T│  │  ├─4 solidity智能合约部署
! \0 \' P+ |4 \/ q, ~5 ^0 x│  │  │      13_部署智能合约到ganache测试网络.mp4+ [$ C% ~& k7 G- J. Q% X
│  │  │      14_智能合约的方法调用.mp4
2 \- X  {% d0 Y" [$ Y│  │  │      15_部署智能合约到真实的网络.mp4
7 Q4 b& E6 x9 j3 k# b* q│  │  │      : u( l+ O% Z0 x/ M1 T
│  │  └─5 以太坊水龙头开发
* O# |, y; V' s│  │          16_智能合约开发流程回顾.mp4( t+ P& r* n1 @2 ?8 E9 N9 _
│  │          17_以太坊转账逻辑.mp4
+ a- c1 |3 V- o$ t2 `2 X│  │          18_以太坊水龙头的开发.mp4
/ y9 E% V1 {4 i4 s  h$ H│  │         
0 G0 T3 y# q: F: I│  └─3 区块链项目实战
, F- M; t/ M  `│      ├─1 区块链彩票业务分析4 [: o& \4 K7 ~! W! o1 f
│      │      01_传统彩票业务痛点分析.mp4
0 M" i1 |: M- t4 \% J7 X│      │      02_传统彩票业务的信任危机.mp4
) Q, p+ c+ b( l0 ]; C! m" H" S│      │      03_区块链彩票原理分析.mp4
3 B  [0 e% Z+ u* [5 k) q│      │      
1 V! N$ h5 v. w4 S, ?4 K% s' v/ z4 q│      ├─2 区块链彩票业务实现0 n6 i1 V5 m, D- Y* k0 K- E
│      │      04_solidity的基本数据类型.mp4: j# W7 H4 d) ^
│      │      05_彩票逻辑的构造方法&msg全局对象.mp45 H1 b' N9 q0 F! t+ ^* j
│      │      06.solidity数组入门.mp4# p: F. _2 @# c% O6 D2 z
│      │      07.solidity数组长度和方法多个返回值.mp4" a9 K9 @+ l' V' Q4 J
│      │      08.solidity的复杂数据类型.mp4# j) X# r; e" }" {' H
│      │      09.solidity二维数组的小细节.mp41 S/ e4 h. }1 l6 \& M
│      │      10.不同版本的细微差异.mp4
$ I; p( {: `" J$ J# [" F│      │      11.彩票投注的流程.mp4
) D! t  ^6 K. s9 w4 t! k. v│      │      12.智能合约的debug.mp4  |. S3 c( M  S$ u+ g- M2 }
│      │      13.奖池金额的查询和参与人的查询.mp4
( [% {8 o; f6 X" I5 ~. C# Z0 N( q& m* a│      │      14.彩票随机数生成和开奖.mp4* U- V* l3 m* d* t
│      │      15.彩票的退款逻辑.mp4
$ d1 L/ z: \2 U│      │      * l3 o" V# I, J4 S% M
│      ├─3 modifiner使用
9 Q, L9 i  ^8 V' i│      │      16.modifier的使用.mp4' |5 j/ D/ [5 W. S+ k
│      │      
( W6 M% W3 T4 ^│      ├─4 fomo3d原理
1 ~' e, t: n' O│      │      17.fomo3d原理分析.mp4
9 C; Y" J# u) g1 {5 `: d│      │      18.fomo3d的漏洞解析.mp48 K( w' ~+ Y' q' |
│      │      
; Q2 N4 y; r( M, a, t, j│      ├─5 智能合约测试! W; L( p' L" K5 P/ {$ l( @* @
│      │      19.智能合约的测试(上).mp4$ m) t; j% O& }5 l, ^& c2 N
│      │      19.智能合约的测试(下).mp4! b& Q9 `) a& p( |) Q
│      │      
; P$ _1 K/ Z, s7 M: w│      ├─6 彩票项目实战
2 a: Q1 V/ w4 ^9 B+ @, O│      │      01.dapp的架构分析.mp4
4 n+ E# c! A# @7 L│      │      02.react开发脚手架搭建.mp4
+ T) z( ~. \# S, @% r! |9 P3 X│      │      03.react的ui开发.mp4' D. z* Y3 s7 e! A  n2 p
│      │      04.彩票智能合约的部署.mp4
" i1 D: ]6 m  y│      │      05.web3版本的问题.mp45 t6 X7 [1 u1 P' m# U# J
│      │      06.获取rankeby网络的信息.mp4# y5 _, u* l2 s6 o; Q/ _5 y
│      │      07.获取以太坊的数据和react的生平周期.mp4% r. O) z- W4 u; e+ n! V
│      │      08.从以太坊获取其他的数据.mp46 O& W: @# m) v( a
│      │      09_前端的点击事件&购买彩票.mp4% v5 E" n- ?/ J5 c- D1 R  i+ r8 Y
│      │      10.开奖逻辑的完成.mp4$ x+ U  N4 h2 d( t. f
│      │      11.智能合约的send方法是不能有返回值的.mp4
$ h5 r" |4 b4 K! W│      │      12.智能合约的安全问题.mp4& a8 [: D% r4 c
│      │      
( H! a# F- C8 F3 t, v│      ├─7 众筹系统后端智能合约实战
. c* @2 [; ]% D7 U& U│      │      01.众筹模式简单介绍.mp4
3 p4 V* c2 v1 D7 Z' D│      │      02.众筹的痛点分析和区块链的解决方案.mp47 c1 d& e& V( U" [
│      │      03.众筹智能合约的结构分析.mp4+ A% w, V5 ~2 z! R9 M/ |
│      │      04.众筹智能合约的构造方法.mp4
" X& n4 d: V9 ?7 z$ p* i( O│      │      05.众筹智能合约数据的获取.mp4
7 m& x3 F2 ?, f' v! O' F│      │      06_付款申请的结构体和逻辑编写.mp4+ T( u& A  H* v; u% X  {' W! g
│      │      07.智能合约中storage和memory的概念.mp4' A4 f8 J. x: t4 A" g
│      │      08.memory和storage关键字.mp4. `$ _3 e$ C- ?/ A# Y4 s
│      │      09.付款请求Request函数的编写.mp4- U2 o& u9 D1 c  @" D
│      │      10.付款批准的操作编写.mp4
) N9 G$ U( X6 [3 [( p, G* ]5 S│      │      11.批准付款的操作(严重的bug分析).mp47 q0 {8 J) L6 {  N+ @( V
│      │      12.优化批准支付的操作.mp4) c- r7 z, l- j+ Z4 }. g
│      │      13.众筹业务的完成.mp4- c% I/ w3 ^* U
│      │      14.部署逻辑分析.mp4, m' P# |, Y/ r# F. o
│      │      15.使用智能合约部署智能合约.mp4
4 c0 a7 g6 t# d5 b! j+ p│      │      
* f# t! U) s% ~6 |│      └─8 众筹系统智能合约前端开发1 X3 V* C, u9 o' N2 _8 P
│              01_项目功能演示.mp4
) x" y) Z7 h& l! a( Z8 K! ^  h9 B│              02_众筹项目需求整理.mp4
% K9 i8 _+ P. _# l│              03_众筹项目合约完善.mp4
3 Z/ R( X' F+ U: ]: Z* P│              04_智能合约及测试(web3.js)需求.mp4
9 J% t6 @% `5 J. V4 z& {│              05_通过web3-使用Factory创建Funding众筹合约.mp4( o& f3 R5 C6 f
│              06_众筹项目api操作的封装.mp4
0 W; n9 s8 e1 E3 V7 X% l4 k+ i│              07_外部函数调用demo.mp4% a- @/ Q8 Q5 Y  z. ]
│              08_获取所有众筹地址&获取众筹详情.mp4
6 V/ B( j. f7 }7 \4 x# v# ]│              09_众筹项目合约列表加载展示(上).mp4( C, x$ d# F( o% x, f$ `: }
│              09_众筹项目合约列表加载展示(下).mp4
( [4 ^: L  \7 r7 \2 z│              10_获取发起人&参与人的众筹项目.mp4' c4 g# D. f: r+ ^/ p! ~$ Q4 v7 [% V
│              11_创建众筹项目.mp4. c* f5 j! [2 _' y+ k' c+ i- ^
│              12_参与众筹.mp4% K$ i$ |" q: M: X5 k- N
│              - o% _4 z, `: l& e2 j
├─8阶段 hyperledge区@块链项目开发( ^3 z- X: k' i% r7 d
│  ├─8-1 hypeledger基础- e5 S8 R( H* }' O& K
│  │  ├─1hypeledger基本概念0 ]. @( w* U2 N! B7 t
│  │  │      01.hyperledger简介.mp4" @: E  h4 j& Z1 _2 T. ~& e
│  │  │      02.hyperledger的参与人和合作伙伴.mp4
' L, o" h0 {! ^│  │  │      03.hyperledger重建任务.mp4
+ Y' `* Z7 X7 X- R│  │  │      04.hyperledger的重要概念.mp4
  Z8 a6 x9 u+ l. a7 B1 [) t& p│  │  │      , {& a5 X/ O6 ?
│  │  ├─2 hyperledger常见组件/ {* q3 o4 W" ]1 c6 [, ^3 D
│  │  │      05.资产链码和账本.mp41 O6 m6 f( N: B7 E  l+ }. r+ D; }
│  │  │      06.hyperledger解决现实问题.mp4! D) N0 L+ \2 G' @3 d" T2 f& j5 F
│  │  │      07.msp和fabirca概念入门.mp4
* u2 ^. C  t. v% W) L│  │  │      08.hyperledger中的peer、client和orderer节点.mp4  c4 E, x# h$ A
│  │  │      
- e. d, t) P3 D% U* v│  │  └─3 hypeledger智能合约和各种流程' j6 |" r/ I0 K) G* Z5 P" W
│  │          09.hyperledger业务分析.mp4, q) ?( T# j& n2 c+ `) Z
│  │          10_channel详解.mp4
( r9 d3 M( O. q! S; U6 M│  │          11.chaincode详解.mp4
8 l0 u' X3 Z# q0 L& a│  │          12.hyperledger的工作流程.mp4! L5 r4 z2 U. \5 k, d$ i1 j% B
│  │          13.术语回顾.mp4- L5 {% {5 l4 l5 n  X$ F' U
│  │          0 n5 j( {3 P$ }
│  ├─8-2 hypeledge进阶& J5 m: R$ S2 {3 y0 c" Y
│  │  ├─1 fabirc环境搭建7 n  i# {2 f& {
│  │  │      01_开发环境复习.mp4
1 c( P7 X$ h: s8 J$ V│  │  │      14.渔业系统业务复盘.mp47 \2 e' o" `( @, u7 t8 N6 I
│  │  │      15.docker简介.mp4
; c9 ^9 G4 c( f) {7 ~8 i7 [│  │  │      16.docker的原理和工作模式.mp4
5 {3 O( u% P) a7 X/ g) V1 L│  │  │      17.docker的安装.mp4
3 u2 v) j( |  y│  │  │      18.docker常用指令快速入门.mp4
: \7 o% s, O) s% g9 I│  │  │      19.hyperledger的环境搭建.mp4
0 v; n# `8 p/ n  `│  │  │      20.hyperledger fabirc end 2 end案例分析(上).mp4
5 E+ [; U8 q" y( v│  │  │      20.hyperledger fabirc end 2 end案例分析(下).mp4
- u0 Q0 v1 Y! k$ k: \) y, V, t│  │  │      21.hyperledger的end2end业务复盘.mp42 o# h$ Z) K) _7 A* p
│  │  │      
- B) @' R$ ?9 z5 d$ X│  │  └─2 fabirc脚本分析和链码编写
" U; ?& ~% e9 \, I! r# {6 U│  │          02_hyperledger开发环境脚本分析.mp4
. B  b! Y! O( U- ^. W: ?# l│  │          03_byfn脚本分析.mp4- t" r$ T( i1 q+ n: G
│  │          04_cryptogen的配置(定义谁是谁).mp4
9 Z. U1 r. z2 E/ J│  │          05_在创世区块里面声明orderer和peer所在的org.mp4
3 r, j. O6 h. F& D( v│  │          06_orderer节点的配置(性能调优).mp4' z9 y2 A& y4 r) s
│  │          07_创建orderer节点的创世区块和channel.mp4) h3 W# c6 z& {
│  │          08_更新通讯的锚节点.mp41 W% |+ D% t8 w7 O8 ?8 V% i
│  │          09_手动创建网络手动执行e2e的逻辑.mp4
- V0 E( T" h/ J( Y│  │          10_手动创建channel,加入channel.mp4
8 F" n  E3 P3 P  c4 ?& w│  │          11_chaincode的编写和部署.mp4
% e$ c$ g3 `; c2 I│  │          12_invoke逻辑的编写.mp4
/ y* d# f4 n7 N8 ~│  │          13_开发环境nodejs搭建.mp4# x' v8 l& c4 h8 t
│  │          14_nodejs开发调试环境的搭建.mp4
5 O' z9 f( B0 @$ G; ?/ ]; _│  │          15_nodejs 链码的架构.mp4
- B) G% D( n: @& X. f│  │         
. H8 `( [: g) l; q│  └─8-3 hypeledger项目实战: ?2 h3 c0 K4 F0 K0 M
│      ├─1 fabric项目业务分析' l7 A* g7 Q; b* N, e% c6 z: z
│      │      01.hyperledger的工作流程.mp4
9 ?3 s- @# S+ r2 t  N5 V+ t! r% {│      │      02.fabirc架构流程分析.mp4/ y7 A/ ^9 z' m# ^  X
│      │      03.hyperledger的其他重要概念.mp4$ A) @1 @* T$ }1 |& a' _
│      │      04.hyperledger前后端开发环境搭建.mp4
8 m0 X4 w* V7 a8 K4 G/ a│      │      05.区块链技术的使用场景.mp4. a9 Q- m$ U& I7 `9 h
│      │      06.fabirc项目分析和简历书写.mp4
# Q( s% s3 @( r3 L│      │      07.渔业管理系统智能合约的编写.mp4( y" M8 H" _. ?; R
│      │      08.nodejs链码和go语言链码的类比.mp4: w, k% L8 V& \" ~2 i" _
│      │      
: D0 J3 c3 v  {7 S. n! }│      └─2 环境搭建前后端联调
# Q! Q, J. s6 ~) y5 d# h/ j│              09.网络环境配置.mp4
* R& Y! s0 m; \$ H. j0 m6 I/ n│              10.网络的docker-composer文件讲解.mp4
( z. f8 q) q* |/ q+ ^" J" {8 \│              11.环境问题的debug(上).mp4
4 b% i7 k& T4 A; T; j│              11.环境问题的debug(下).mp45 X6 g% w% g+ V, C9 H0 P6 I8 R2 r& z
│              12.hyperledger的环境搭建完成.mp4
  g% N2 Z# V, d│              14.nodejs的sdk演示.mp4
7 t1 J1 b6 a" m% O& h│              15.nodejs中间获取服务器数据.mp4# z0 R. R$ C6 R4 f3 c9 s" b" N
│              16.coachdb的配置.mp4
# f& f5 Y  d0 ?( p3 s& W" G; [│              
: |& @1 F/ N( L( C└─BlockChain-master; P5 @* \1 z- w$ S9 W3 j* Q
    │  .gitignore/ _, x; {2 }- S' M/ c( i
    │  LICENSE
0 n- N: s. p# b/ r3 f    │  README.md$ p1 \9 |& [$ g
    │  
+ M, s* [& M" \7 m    ├─01_开学典礼-区块链理论基础1 a7 P- n7 _( h1 z+ t. _2 H3 }
    │  │  readme.md6 [& H" `9 s0 z/ j$ m. i
    │  │  视频下载地址.md; M5 @0 [" l) K( e6 V
    │  │  ! o. d) W& Z5 ?
    │  └─ppt
1 S, r, W! \1 Y% ]    │          01_什么是货币&货币的发展.pdf2 P0 \3 E/ X  g+ K
    │          02_分布式账本演示&台币.pdf
7 T$ G5 s9 k' m5 R* a" o    │          03_哈希函数.pdf4 ]& |/ o" d; X6 ^
    │          04_hash的安全性.pdf$ j8 |4 K+ b; b$ I& }- e
    │          05_数据一致性问题.pdf
2 [# P6 C/ ~: E. |' ?! I    │          06_通货膨胀和比特币.pdf
1 ]- \# z9 b6 ?& i2 S    │          07_区块链技术演化.pdf& j' ~1 |( g0 i+ m# r  U
    │          08_区块链的应用场景.pdf
' \6 s+ w- E" z* d* k9 r% c# S    │          09_我到底需不需要区块链技术.pdf% A  w6 Z2 c8 X
    │          10_区块链风口的猪.pdf" S# a2 \; a5 E/ B9 v* L+ g6 x
    │          11_ico和ipo和daico.pdf$ C# x( k  n- j3 B; C% i/ Q
    │          12_区块链的一些疑问.pdf' }8 ?' z; ~' ?. G' }8 u$ d5 ~
    │          13_分布式系统核心问题.pdf
1 e- U) E+ {' a8 ]0 H    │          14_区块链技术栈和学习线路图.pdf  m  ~6 D$ s9 g  M4 H
    │          15_区块链技术现状.pdf% {9 A4 v8 y" J" ^: z0 c
    │         
+ h" D  a* Z! t    ├─02_第一阶段-java加强-kotlindsl-函数式编程-gradle-git-高阶函数-lambda表达式) P: q# T) f: \. L
    │  ├─day01
: n+ @8 d. F: x$ O) S! I. U    │  │  │  readme.md
3 |, U( Y4 G0 c) E& G0 I    │  │  │  . Q+ \& j  R* W6 W$ ^+ V) O3 O# @
    │  │  ├─code
- C/ u( @& U$ ?$ s( j6 `* ~    │  │  │  └─src4 G7 Z  Q* J( j+ R: t8 z
    │  │  │      └─com
0 N& S& r: z& z& a/ H7 M; N8 z    │  │  │          └─itcast
8 ~) |" a$ c$ U4 G+ k    │  │  │              └─day01
' S( h8 e/ M* ~! V7 a- Q! |    │  │  │                      01.Helloworld.kt# o: t5 T# I; f# f6 R( p
    │  │  │                      02.基本数据类型.kt
  X9 y; s) e$ P% |5 R  i4 E- Q    │  │  │                      03.kotlin基本数据类型和java对比.kt
$ W3 `$ V7 f& Y$ S( q7 B    │  │  │                      04.基本数据类型取值范围.kt
, D1 x. [$ H  S+ g, I& p- K4 j    │  │  │                      05.kotlin调用java.kt
' j, w& H2 ]) D" J4 W    │  │  │                      06.智能类型推断和类型转换.kt" [- F# W' O  C, g4 o
    │  │  │                      07.可变变量和不可变变量.kt3 Y7 k9 Y, b5 k6 g/ \" w) Q
    │  │  │                      08.字符串.kt
5 S$ R. }4 x1 V1 k: \    │  │  │                      09.字符串删除空格.kt; t) @* O2 a% s! ~2 B: O0 u
    │  │  │                      10.字符串的比较.kt
4 J' [- L" m7 l- r# ~! a  ]) m    │  │  │                      11.字符串切割.kt
. V! I* Z' V: R$ J1 v1 k( n    │  │  │                      12.字符串截取.kt
! ^" a+ H+ m2 K4 N% _3 w' c    │  │  │                      13.二元元组.kt& S: F) |9 Q$ F: |! j
    │  │  │                      14.空值处理.kt0 ^3 H, r! p( M* c
    │  │  │                      15.人机交互.kt
5 m+ F; U: ^; q4 F) S+ Y    │  │  │                      16.自定义函数.kt
" G4 l9 U. k$ b  w    │  │  │                      17.顶层函数和嵌套函数.kt
, X8 A$ i! k4 V7 _    │  │  │                      18.字符串模板.kt
) K( A/ E' b3 S0 Z& N+ Z$ o8 C    │  │  │                      19.条件控制语句if.kt
1 N8 y: D" }( [# y) D4 m6 j; N) C    │  │  │                      Test.java9 }' }- F2 W" L. Q& Z, Z0 K
    │  │  │                      % _  L: A  I, ~/ c# `- ]8 `
    │  │  ├─ppt
* {" I6 L* q6 w( x8 x1 S$ N; t    │  │  │      第一天.pdf
7 J; T0 {/ A( e* l$ \: |" P2 u    │  │  │      ) [! w( S% r# \- |2 ?! u: C
    │  │  └─video# y6 k3 ?3 e  k4 F
    │  │          info.txt3 z6 K: e. A, ~  S! v2 ]- j
    │  │         
! U8 r$ A2 y1 J2 ^. W+ ~' F    │  ├─day02
% p/ M# P) D# S    │  │  │  readme.md
. k5 S8 A4 n( d    │  │  │  
9 i# P- r6 N* R- Q* B    │  │  ├─code! }) t' ~! g8 b& M& U6 w, p8 P1 ~* X
    │  │  │  └─src, a+ `( H, e' N" m& D$ D# e6 o! H
    │  │  │      └─com5 N# f  k% P% D
    │  │  │          └─itcat
5 V9 b, l1 g! X3 ~    │  │  │              └─day02
' }7 ~& |5 m1 ~1 Z$ m    │  │  │                      01.for循环和foreach循环.kt
4 h) A/ R0 D" c. i* I/ C    │  │  │                      02.continue和break.kt
) a4 r- r2 h  Y& q    │  │  │                      03.标签处返回.kt
9 Y# O/ _9 a' y" m# b& i    │  │  │                      04.while和do while循环.kt" ?- X% O2 ]8 o) C
    │  │  │                      05.区间定义.kt
9 t4 F1 G. Z* s( E    │  │  │                      06.区间遍历.kt
( r& k+ W! ^+ Y. Y1 y0 F2 l9 X7 g    │  │  │                      07.反向区间和区间的反转.kt$ J% h2 t: D& Y$ f' G3 ]
    │  │  │                      08.数组的定义.kt
: c1 l( I5 |( q, H    │  │  │                      09.数组的遍历.kt
/ d* t1 m% G9 b2 c+ M    │  │  │                      10.数组元素的修改.kt" ~) }5 P$ e  L* _6 A! e
    │  │  │                      11.数组元素角标的查找.kt
+ w* f3 Y* T% e5 c- H    │  │  │                      12.when表达式.kt
! i' h- @+ t5 |0 N' j; O    │  │  │                      13.when表达式加强.kt
; s, {3 J( d+ k, t/ j: b' v    │  │  │                      14.when表达式不带参数.kt$ z. f3 K' Q7 P" L6 l& o6 K
    │  │  │                      15.when表达式返回值.kt" b4 v4 B" \4 ]$ N9 _8 L
    │  │  │                      16.函数表达式.kt2 [: p" \; F' c' d! e2 E3 Z& |
    │  │  │                      17.函数表达式补充.kt
  Y% m: ]5 @0 j: g5 Y( M    │  │  │                      18.默认参数和具名参数.kt: D% k' U* y* M3 W. d8 J- B3 E
    │  │  │                      19.可变参数.kt
  i! G5 m9 _8 ~0 S3 i( A% f& ~9 a    │  │  │                      20.异常.kt  d5 h: P/ P4 m2 @1 s8 K
    │  │  │                      21.递归.kt8 Y+ n" K& h8 x' j6 Q* P9 i
    │  │  │                      22.递归和迭代的对比.kt. l% U" ^$ q0 t2 K0 g; w, w
    │  │  │                      23.尾递归优化.kt9 o1 i2 H; ~; J: ?7 T& |2 k; S; p+ F1 ]
    │  │  │                      24.面向对象.kt
: f4 a5 F+ s! x! G2 F( l    │  │  │                      25.运算符重载.kt* c, z2 V; O2 @) k
    │  │  │                      NetUtils.java2 ~# t* L8 a) R7 V: G) R$ k6 G- B3 I
    │  │  │                      Operator.java/ g8 e# y4 y$ v: ]4 T( O
    │  │  │                      SwitchDemo.java6 X0 C* S- r1 i) m' u5 l3 U% |
    │  │  │                      Test.java
; B. M; j- _- r# l/ q( I; I    │  │  │                      判断用户名是否合法.kt- J2 i7 f0 g4 g8 t) v, r: N
    │  │  │                     
- L/ ^' S* I  J( P+ C0 i; |    │  │  ├─ppt
& g; x6 j' A+ Z    │  │  │      第二天.pdf3 D3 U* H/ T8 i3 v6 r; c
    │  │  │      0 j# G2 |' \" \% c$ {
    │  │  └─video% m! p, }; ^6 Z
    │  │          info.txt
, E" S1 W: K. K. I    │  │         
. {# i. a+ c$ V! L7 T) I8 A    │  ├─day03# x0 y: C9 B& G% k$ s
    │  │  │  readme.md5 I4 S( J# A- W" Q) H# ]
    │  │  │  
# g8 @5 N" Z8 w. L7 J3 Y- n    │  │  ├─code
8 M9 N9 |1 q) n/ ^1 D9 [    │  │  │  └─src
* ]! r' q; c( I. H+ j    │  │  │      └─com: J* r1 Q& D" R
    │  │  │          └─itcast
2 X: s0 |3 i9 h7 ^    │  │  │              └─day036 k( @5 p4 Y0 q4 @6 X
    │  │  │                  │  01.get和set.kt
& E- g) _3 ~- c; G! z% i/ N    │  │  │                  │  02.访问器.kt  v7 \% `- T2 Y3 I5 r% U
    │  │  │                  │  03.自定义访问器.kt4 k+ t' z, i0 y6 o# {# S% N
    │  │  │                  │  04.构建函数.kt) V, i; ~* s0 N% @" M
    │  │  │                  │  05.构建函数参数使用_init.kt
9 x! z" ^1 i* q6 G; o/ b    │  │  │                  │  06.构建函数参数使用var和val.kt
4 p3 `1 m- j% }0 f# l    │  │  │                  │  07.次构函数.kt' G: G& P( Q! `" h% m- l* `; \
    │  │  │                  │  08.init和次构执行顺序.kt
; T5 v9 s( _% |: f% A    │  │  │                  │  09.继承.kt+ c1 T! b; L" t
    │  │  │                  │  10.抽象类.kt
' I9 k/ Y$ y8 D- j( N) u: ~* Q    │  │  │                  │  11.接口.kt8 `- S+ J* Y4 W
    │  │  │                  │  12.接口细节.kt) X; Z  {! D  _! k1 ?6 i  C
    │  │  │                  │  13.接口细节2.kt
, `) d* i2 p6 X( Y4 Q" I8 i3 l% G    │  │  │                  │  14.多态.kt
6 O" K! F& P' p8 O    │  │  │                  │  15.智能类型转换.kt
: F/ R" {: [; G; ~- X( t  O( G    │  │  │                  │  16.嵌套类.kt
- I, y$ n( {* ?' a. k    │  │  │                  │  17.内部类.kt( k1 y6 R9 \; \# Z
    │  │  │                  │  18.内部类使用this.kt! Y6 w0 I( |) Y8 R
    │  │  │                  │  19.泛型.kt
4 f2 s% i7 Q& {! z7 ]+ K    │  │  │                  │  20.泛型函数.kt
, g5 c& ~( J) Y1 B- j! V5 D1 Y( \    │  │  │                  │  21.泛型上限.kt0 A" b) r/ Y( J& o4 T( V6 t
    │  │  │                  │  22.泛型擦除.kt2 u8 Z9 h1 G" {
    │  │  │                  │  23.泛型类型投射.kt
( Q$ f) X9 B% s3 Q; j* n    │  │  │                  │  24.星号投射.kt
# E/ \! }0 X7 K8 l9 A    │  │  │                  │  Dats.java: G, R4 H8 K# ]% {* v. i7 d
    │  │  │                  │  News.java
6 X/ N5 s, e  U- e! e* W& Y1 M. D    │  │  │                  │  Test.java* z/ c/ ^  I6 d
    │  │  │                  │  运算符重载练习.kt
, ?! G! e( a: Z9 G7 N! W0 o* e: v/ {    │  │  │                  │  / H6 _1 z' U$ O- y& ~. v
    │  │  │                  └─封装
8 F1 a8 r% t. K, a7 {: C    │  │  │                          Consumer.kt
$ T9 f6 ]5 }/ L' L9 @% s  C    │  │  │                          WashMachine.kt
4 c% u, R- i0 b% C    │  │  │                          
" d4 G8 h" x! e9 b    │  │  ├─ppt( P3 z  E; O& Q' |8 d
    │  │  │      day03.pdf. R, f$ h5 x" \( h4 Z$ @: q
    │  │  │      3 W+ R' l2 U' F8 {/ m
    │  │  └─video, x' F) o. k* P
    │  │          info.txt
2 ~3 |8 P* W3 i8 @( e9 ?- E    │  │         
, N$ l9 b+ m+ |7 J    │  ├─day049 r: h9 T& {9 w$ E
    │  │  │  readme.md, T6 O) _. v1 h( B$ v
    │  │  │  ' \. Z5 i+ _  L/ i8 C$ y
    │  │  ├─code! d1 |# Q* ?# U
    │  │  │  └─src* M8 y9 T3 u9 E' ^  S% y
    │  │  │      └─com  |* U1 h, k% @$ G5 l' M
    │  │  │          └─itcast
2 N( O, C0 m+ G8 L; |) k    │  │  │              └─day04
; w+ C1 K4 h8 ?. h- {4 ~    │  │  │                  │  01中缀表达式.kt% j- E/ K2 t4 }7 q' W% [+ X! X
    │  │  │                  │  02.类委托.kt
& a% ?7 Y& f) @/ x    │  │  │                  │  03.类委托实现二.kt5 W8 E. v4 T( \' @- ^
    │  │  │                  │  04.类委托功能加强.kt
) i$ U% C% B8 c    │  │  │                  │  05.属性委托.kt- J. Y5 U8 v" j, O; G
    │  │  │                  │  06.惰性加载.kt
% }# T3 E9 h& C; b: @% A5 k    │  │  │                  │  07.延迟加载.kt
$ h3 k2 {, N/ ]" o    │  │  │                  │  08.扩展函数.kt1 [5 q- r5 M2 g' R- g  C  j6 [4 o
    │  │  │                  │  09.kotlin的object单例.kt
8 j5 p% r& v8 M    │  │  │                  │  10.伴生对象.kt
( }7 v" [- ]- ~8 w    │  │  │                  │  11.和java一样的单例.kt
  g' r4 o# K* P+ A' o    │  │  │                  │  12.枚举.kt$ {$ g3 h8 X! a( l- Z5 k8 }4 u
    │  │  │                  │  13.枚举加强.kt& h! L$ l* D3 y% s. a4 J
    │  │  │                  │  14.数据类.kt+ u9 p4 i1 V  ]( P
    │  │  │                  │  15.密封类.kt
- s1 c. |2 j. ?8 D8 y) I' K    │  │  │                  │  NetUtils.java
9 J" ]) g% C$ }0 h% b% R! O( X    │  │  │                  │  SingleInstance.java9 b" @1 u& ~2 l
    │  │  │                  │  
, E8 t2 ~$ N; ~    │  │  │                  ├─bean类
6 L5 Q( x5 b  [! f0 V' |" P    │  │  │                  │      News.java; b; N0 E2 V& K, X2 x
    │  │  │                  │      4 E: U8 w2 W5 u7 u8 q
    │  │  │                  └─java的util4 f: `, M  ~6 P. b2 n+ `( X9 Z
    │  │  │                          StringUtil.java
, }! ?5 D. B  e4 ^" i" n    │  │  │                          Test.java2 R# s$ b+ E& p$ ]+ A" t
    │  │  │                          7 d5 ~& T' W5 E
    │  │  └─video6 f( f' w; M; Q% ?) l
    │  │          info.txt
' O: y* E" R3 E6 N% ^1 E    │  │          1 a, F! {) X" I1 e
    │  ├─day05$ X+ ?# H3 b0 Y3 W' H5 [
    │  │  │  readme.md6 {6 S. Z0 t8 w/ P4 C  E0 \
    │  │  │  
! L3 |: N5 Y. ?1 k4 j; j7 Z    │  │  ├─code
6 T5 _8 e+ O0 E    │  │  │  └─src
5 T  \$ R/ E3 j3 s1 K, i+ h/ Y    │  │  │      └─com6 C8 A- b9 g! q# g! O
    │  │  │          └─itcast% ^: P+ Z- i- c6 C8 V
    │  │  │              └─ay05
4 W* e. ]' r: ]) W    │  │  │                  │  01.List集合.kt
" t% X. ?8 l1 o3 u    │  │  │                  │  02.List集合的遍历.kt) O/ O9 m- `, {
    │  │  │                  │  03.Set.kt
  _( i1 j! L7 h, [! k- f" p0 a    │  │  │                  │  04.kotlin的set集合遍历.kt4 _/ X' ?; H+ W1 N
    │  │  │                  │  05.map.kt
$ e/ s8 X9 d; h4 `% t    │  │  │                  │  06.map遍历.kt
! m* t/ M' H; S6 U; q6 D    │  │  │                  │  07.闭包.kt! l' z) r4 B' e2 I
    │  │  │                  │  08.高阶函数.kt
" y1 f% C/ o0 }7 B    │  │  │                  │  09.lambda表达式.kt' ]$ \* X( F' v5 I
    │  │  │                  │  10.lambda表达式去().kt* }4 b; R0 ]) G6 P; B' W
    │  │  │                  │  11.lambda表达式单独存在.kt# p! E* _! W$ l1 `% s0 X0 v
    │  │  │                  │  12.有参的lambda表达式.kt+ B; A3 r8 H) Y6 c* e# _+ ]; R8 x6 L' d
    │  │  │                  │  13.保存lambda表达式.kt
' X# c* j; e) |9 O7 R    │  │  │                  │  14.lambda表达式使用it.kt/ l( W* @. j& E" L
    │  │  │                  │  15.lambda表达式返回值.kt
1 c; J+ S2 i0 t9 T4 A    │  │  │                  │  16.常见的lambda表达式.kt
, G$ }5 F+ `5 Z9 o( R' m    │  │  │                  │  17.非诚勿扰.kt
- Z% j. j$ ?/ ]9 P% z, {, R    │  │  │                  │  18.过滤.kt
; p/ K; r  O2 y5 Q4 b% [( V+ V    │  │  │                  │  19.排序.kt( x3 t) |) A* Z% f: H1 h
    │  │  │                  │  20.分组.kt
$ V8 {0 N' }2 H    │  │  │                  │  21.最值.kt/ G$ Y+ ~, m, f( \6 M1 L5 E
    │  │  │                  │  22.去重复.kt
4 x$ Q3 J7 \% b) {1 v& l# q: M    │  │  │                  │  23.集合拆封.kt
* W  e% y, n% |1 O. ]( k    │  │  │                  │  24.集合重新组合.kt
* e: ?5 v, y$ s- @6 [, l5 o* R# ^    │  │  │                  │  25.集合相加.kt4 T  A5 L( \2 }$ G. D; ]/ y- ?
    │  │  │                  │  26.四大函数.kt
% J1 \: G9 }. `. S. e    │  │  │                  │  TestCollection.java7 k8 i' `) Y8 M) W& @5 h9 q
    │  │  │                  │  
& \' c/ T2 ~3 V; a! I    │  │  │                  ├─函数回调& ~# A: B4 `0 y* U0 E' S8 i! a8 c
    │  │  │                  │      Mother.kt
. M- O, u3 ]% N' O' [8 O    │  │  │                  │      Soy.kt
4 [7 B3 V0 r. y* c( N" D    │  │  │                  │      SuperMarket.kt
7 D( w8 c8 {5 |7 t! c: i& ~" Q( t    │  │  │                  │        _$ B0 d& y- e: L, i' U
    │  │  │                  └─接口回调
7 N" S* a9 J4 p6 U    │  │  │                          Mother.java
9 K& m( o, x5 C    │  │  │                          Soy.java1 D  G0 W' @8 P: A9 W: M4 L& m
    │  │  │                          SuperMarket.java
& p+ _7 p' @/ D) S, ~5 M8 a# Z    │  │  │                          ) n. D9 y6 u( t: D6 s
    │  │  ├─ppt) n2 P) H5 R: Z) E1 ^% h5 b6 l' |
    │  │  │      高阶函数.pdf
: E1 w7 u/ e) k: q% k* w; V    │  │  │      
  E3 M# d' i  A! V    │  │  └─video0 J9 M3 l. V/ ~, k% \* i. M
    │  │          info.txt$ M/ s; n* s) r" q6 W% }4 C
    │  │         
7 u9 X  j8 R  }$ r    │  ├─day06
. o& u* z2 ]% N  n) t- V6 l    │  │  │  readme.md5 R( T% m3 y% ?4 t% Q
    │  │  │  
* f, q/ J' h% B    │  │  ├─code- ?. o9 D* a! R+ h- V* l  k
    │  │  │  └─src
. A1 K) T7 e  `! p$ B5 K    │  │  │      └─com
( F3 y# A5 b6 l0 ?- F, d2 v3 v0 i    │  │  │          └─itcast
# F( w; K) }* d    │  │  │              └─day06
# V- ^/ g5 _" x" x! ~    │  │  │                  │  01.StandClass.kt% [1 n5 V- \  o+ p3 O0 ~. y7 r
    │  │  │                  │  02.DSLClass.kt
: \& G" z% M# A: H) {% a% g    │  │  │                  │  03.StandHtml.kt9 ?5 i& f7 ^8 X9 h
    │  │  │                  │  04.DSLClass_构建器.kt4 W$ i& A5 v/ ]$ s1 e* ~
    │  │  │                  │  04.StandHtml_缩小作用域.kt
! F. W( ]6 `$ T9 t    │  │  │                  │  Test.kt7 v( t% }- H; h. W
    │  │  │                  │  9 W3 ~& [  W' ?) T& P; B  O
    │  │  │                  ├─构建器模式# R8 ]* X$ l. [" C5 j  Q4 Y4 `
    │  │  │                  │      Notification.java0 P" ~( P! \: [6 ^/ O1 [+ o0 i) ]2 Z8 y
    │  │  │                  │      Test.java
  @# c# ~0 s' i" U9 N  O- A2 j+ _    │  │  │                  │      ' G3 p* |- v" m
    │  │  │                  └─练习
  t9 ^$ L5 W- V/ E" Z! |    │  │  │                          网络请求DSL.kt0 ]1 e, @. [4 N3 l4 P
    │  │  │                          5 R+ H) {8 s2 ^: T
    │  │  ├─ppt
( F) B$ T& e% [( {3 B* m    │  │  │      DSL.pdf
6 v- }( S- u& G    │  │  │      7 a% ?5 L. U1 q2 M3 |
    │  │  ├─video
# \8 T3 O0 p) o* |  G    │  │  │      info.txt; \: M. L1 n8 y& ^6 c" w
    │  │  │      2 ?! w& S8 m$ v/ W' p0 I
    │  │  └─资料
  {3 B( J$ @+ O6 H" c! I    │  │          网络请求DSL.kt$ s" S+ V% s  d5 B2 M0 r9 G6 N/ E% [7 i! B
    │  │          " D8 L! M& Y& X- C2 J
    │  ├─day07
2 @" f; e: w8 S$ {3 C  T. X" v    │  │  │  readme.md
( H: i) D: j) g    │  │  │  0 O3 c7 x+ S3 V# f
    │  │  ├─code
1 J2 T2 R0 b# T! S    │  │  │  └─gradle0 E0 c: t4 c0 d) V% l
    │  │  │      ├─GradelDemo01* V9 N, I3 T% e3 c4 J
    │  │  │      │  │  build.gradle.kts# U4 }1 ^" i+ e$ N$ w* Q
    │  │  │      │  │  gradlew
$ Y4 @0 ]; d  s, W( A    │  │  │      │  │  gradlew.bat& b, g5 I/ E" M: V6 |- U" {* ]* i5 J, B; r
    │  │  │      │  │  settings.gradle: I9 X1 }% ]( h8 v: v
    │  │  │      │  │  6 _7 S9 V9 l- a1 f  O
    │  │  │      │  ├─.gradle! @' S7 n( {* S, `! o" A' G
    │  │  │      │  │  ├─4.1
% k& V. r" A# Y+ F8 S% }  I    │  │  │      │  │  │  ├─fileChanges
' N( U+ I0 U$ w3 c- k    │  │  │      │  │  │  │      last-build.bin* j: O% D1 R2 p( ^8 i
    │  │  │      │  │  │  │      - k& z& q5 M1 W2 ?/ B+ X: v
    │  │  │      │  │  │  ├─fileContent0 S: H0 z3 [4 C& V/ D
    │  │  │      │  │  │  │      fileContent.lock" B# Y* B# ~6 n7 q% y1 X
    │  │  │      │  │  │  │      
1 q4 l& f$ y$ L    │  │  │      │  │  │  ├─fileHashes  |. q1 l$ K' m$ W# n
    │  │  │      │  │  │  │      fileHashes.bin, a% W3 G( B; a( t
    │  │  │      │  │  │  │      fileHashes.lock
$ T- x9 @# b8 j+ s1 ^; x: A    │  │  │      │  │  │  │      ' r1 _) o' N" m9 @/ s
    │  │  │      │  │  │  └─taskHistory
+ Y4 T% S" d9 ^9 F    │  │  │      │  │  │          fileSnapshots.bin
) y; v9 C6 l6 K! P    │  │  │      │  │  │          taskHistory.bin
5 c! b9 E" ?. n    │  │  │      │  │  │          taskHistory.lock
& E7 `+ x  b. `$ ?    │  │  │      │  │  │         
1 u0 q- \: g# c$ U+ s& ]& ?' a    │  │  │      │  │  ├─4.4
4 Y* E3 J' m+ L- d    │  │  │      │  │  │  ├─fileChanges1 I+ o1 ^( _: Z: d$ y  r% c
    │  │  │      │  │  │  │      last-build.bin% E6 E$ g# N9 c, w$ ^! X
    │  │  │      │  │  │  │      1 b3 j) ^0 j( J
    │  │  │      │  │  │  ├─fileHashes0 R+ I4 J1 A4 E- d8 a- {
    │  │  │      │  │  │  │      fileHashes.bin! S9 D: v$ G! y  ]
    │  │  │      │  │  │  │      fileHashes.lock( b+ B  y: h: h. N
    │  │  │      │  │  │  │      ! d* C3 w5 I( T
    │  │  │      │  │  │  └─taskHistory
; u$ ^& i, q6 x1 p7 W2 Q    │  │  │      │  │  │          taskHistory.bin
: F2 N0 U% f: |( @    │  │  │      │  │  │          taskHistory.lock
! q& g  |5 `0 _    │  │  │      │  │  │         
' l' w; R3 @! a    │  │  │      │  │  └─buildOutputCleanup
) n1 \1 t+ i+ h) U# R7 j9 A    │  │  │      │  │          built.bin
- F5 n% H7 U- P0 ^! _. V! y8 x    │  │  │      │  │          cache.properties
% n- x+ t$ N  O6 m- g0 k' ~6 ^! u    │  │  │      │  │          cache.properties.lock
7 |# R7 U0 ?" U0 J    │  │  │      │  │         
5 j  V/ T# |1 E+ p& ?9 C. j! A+ ]. p    │  │  │      │  ├─.idea
! ]9 u9 X' e  X+ k& ?. t' }, j+ @    │  │  │      │  │      encodings.xml7 _  U# H6 P1 ~5 y
    │  │  │      │  │      gradle.xml
9 u# q+ o! a' }) Y: S0 B    │  │  │      │  │      misc.xml3 n; D1 S* Y1 d: Z( ~% N
    │  │  │      │  │      workspace.xml
' H5 T" G0 d- h9 Y7 N& \$ ^    │  │  │      │  │      
- C) e' q" P4 ~9 b0 k6 G# i3 L9 V    │  │  │      │  ├─gradle& A  \8 n# d+ I! T# t6 X% g- k
    │  │  │      │  │  └─wrapper
4 \% P/ \3 _( m7 Z, D$ g9 g    │  │  │      │  │          gradle-wrapper.jar
, W0 M& _2 K: P5 ~/ h" J" a    │  │  │      │  │          gradle-wrapper.properties, s8 v4 T$ x+ Y  ^
    │  │  │      │  │         
, A) e# H' V. `( ]5 `    │  │  │      │  ├─out
" c. T% ]) Z2 t) L! r( g( e- B    │  │  │      │  │  └─production
. f% \  o4 d& w- i    │  │  │      │  │      └─classes9 ?$ B: m8 c. O- N: y
    │  │  │      │  │              Girl.class; l3 A* i8 Q- T+ C3 u7 y; M
    │  │  │      │  │              Main.class
! p( A" L; x- q4 I0 l! e4 _    │  │  │      │  │              2 h9 V& W8 g4 E4 `
    │  │  │      │  └─src
% T) _2 d) F* \* R2 U9 I: T" ?    │  │  │      │      └─main3 @/ |& v+ a1 m6 b0 i( l
    │  │  │      │          └─java
+ P3 S( Y; Q* t; `: L  E1 h" f# m    │  │  │      │                  Girl.java0 f7 y+ X' \7 J1 |3 o0 U6 S
    │  │  │      │                  Main.java3 m( i; l4 W0 Q0 O
    │  │  │      │                  
& U, U( a% A" _& Y    │  │  │      ├─GradleDemo026 y2 S4 s5 }% F& n, K/ J$ i; G6 F
    │  │  │      │  │  build.gradle.kts
4 X0 K# x# X, s    │  │  │      │  │  settings.gradle
$ b5 o3 X; u/ Q0 e    │  │  │      │  │  * o5 r  o$ g7 P: u! Y7 b' j
    │  │  │      │  ├─.gradle
6 [* }1 r$ S, D2 Y    │  │  │      │  │  ├─4.1% [/ ]- I, X  Q* C+ @& G/ f" q
    │  │  │      │  │  │  ├─fileChanges! P; r$ r, h8 f  k# T
    │  │  │      │  │  │  │      last-build.bin8 s( W9 u( l0 U% v
    │  │  │      │  │  │  │      
' ~! V/ Z" l/ ?    │  │  │      │  │  │  ├─fileContent& M5 b6 Q& A$ W1 Z+ j1 h: k3 i
    │  │  │      │  │  │  │      fileContent.lock
' }# V; U6 r+ r5 Z" \  m    │  │  │      │  │  │  │      3 j) \4 N4 G7 S, F! R$ L9 H
    │  │  │      │  │  │  ├─fileHashes0 |  q8 x$ H; |. X& ?1 z  C
    │  │  │      │  │  │  │      fileHashes.bin: A) B) G4 F+ h: H& g) k; x
    │  │  │      │  │  │  │      fileHashes.lock9 h& J; J4 I1 ~" Q7 a8 m
    │  │  │      │  │  │  │      resourceHashesCache.bin
' z7 n% x; J: q2 Q% M0 r9 _) g    │  │  │      │  │  │  │      
4 X! z+ P' Y/ F    │  │  │      │  │  │  └─taskHistory: w9 W3 y8 i9 z2 ^) d: J, ^
    │  │  │      │  │  │          fileSnapshots.bin. h$ I' N( z1 X' I( f
    │  │  │      │  │  │          taskHistory.bin
2 R3 U& ]  k' e3 g" y# N    │  │  │      │  │  │          taskHistory.lock
: k  r* P* q! G9 h2 X    │  │  │      │  │  │         
. A0 Y" A: Q% w4 x% D    │  │  │      │  │  └─buildOutputCleanup% W% w/ p- p9 j7 A
    │  │  │      │  │          built.bin
! P1 [/ Z" y) ^; R3 m4 D    │  │  │      │  │          cache.properties8 r4 e( D6 S% ^! V0 L
    │  │  │      │  │          cache.properties.lock
3 X9 ~# |4 ~8 T. {1 Y    │  │  │      │  │         
- O8 Q8 \2 f. b; d  G. x; U' i    │  │  │      │  ├─.idea& V9 r! I# S8 i0 |3 Z7 @: ~
    │  │  │      │  │  │  encodings.xml
/ e  U* t3 t/ }* S1 J: q7 }+ X  n    │  │  │      │  │  │  gradle.xml! C0 z  b2 G9 D4 t6 B
    │  │  │      │  │  │  misc.xml0 N6 K4 d% ^( h2 f) k
    │  │  │      │  │  │  workspace.xml% a4 Y' k; X' B( ^$ W
    │  │  │      │  │  │  + H5 @( g8 b: k8 ?9 }  Q. j
    │  │  │      │  │  └─modules4 G& ]  k5 W' f
    │  │  │      │  │          GradleDemo02_main.iml9 W: ?+ ~" T/ H; J
    │  │  │      │  │          GradleDemo02_test.iml
; J, z  T9 Y5 u9 v: E& m    │  │  │      │  │         
% y2 A7 B$ W& l4 W2 J    │  │  │      │  ├─build$ k$ d1 Q  M9 g2 v
    │  │  │      │  │  ├─classes
3 v4 u% X% A, e, g    │  │  │      │  │  │  └─java
, N/ U( m8 [# t  ~% {/ f, G    │  │  │      │  │  │      └─main
8 P# J- w7 |- S& T6 x    │  │  │      │  │  │          │  Girl.class4 U! U4 P* R. S, J
    │  │  │      │  │  │          │  MainKt.class5 c' i! I& j$ o2 W. c
    │  │  │      │  │  │          │  
/ Q4 x6 p9 n3 ]% D$ D    │  │  │      │  │  │          └─META-INF) ^! G$ l# B" l1 ^; b. r8 g- F
    │  │  │      │  │  │                  GradleDemo02_main.kotlin_module3 n/ M9 o2 R2 X4 K+ G
    │  │  │      │  │  │                  
! ~  f6 n% w( f/ r4 u    │  │  │      │  │  ├─distributions
4 R5 z1 l( a9 [; n5 W9 W3 R9 |    │  │  │      │  │  │      GradleDemo02.zip
0 W/ Y" F; R5 N6 P    │  │  │      │  │  │      0 n* s, L/ t5 n8 V
    │  │  │      │  │  ├─kotlin
) c$ v$ h7 M. B3 a; {6 i    │  │  │      │  │  │  └─compileKotlin* \1 n5 w4 X4 t( T1 c
    │  │  │      │  │  │      │  data-container-format-version.txt
* E: E7 H& H# F2 @& A    │  │  │      │  │  │      │  experimental-format-version.txt' \: l6 B' S3 D# B9 E4 T
    │  │  │      │  │  │      │  format-version.txt
/ Q# [. r+ e8 o    │  │  │      │  │  │      │  gradle-format-version.txt7 ]" j5 B: m  ]6 P, b
    │  │  │      │  │  │      │  last-build.bin: H, W' U1 R3 M+ f
    │  │  │      │  │  │      │  $ `2 _6 O2 x0 U; X& e; @
    │  │  │      │  │  │      ├─caches
1 s, V) ?) `# ?9 C# \' m    │  │  │      │  │  │      │  ├─increCache.GradleDemo02_main
5 d4 ]4 e7 A8 _9 I( D! h1 g    │  │  │      │  │  │      │  │  └─kotlin! b6 L, U: J. F# J
    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab
2 @' i4 S7 j& v; ~+ K  ?9 s    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab.keystream( F) y' X8 s3 I+ k# b* r
    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab.keystream.len
( D" I; M. _7 @# c4 n    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab.len
* u9 z& w1 F: O+ E) R    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab.values.at
: y9 v+ r  B6 w- Y    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab_i( i5 i0 M/ [; Y1 @$ P1 M
    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab_i.len
% ?% c5 z6 n" d    │  │  │      │  │  │      │  │          internal-name-to-source.tab- L0 V% l: r" t  a1 i- a2 S2 Z2 ]
    │  │  │      │  │  │      │  │          internal-name-to-source.tab.keystream  [/ O4 t0 j5 e* ^* a' }
    │  │  │      │  │  │      │  │          internal-name-to-source.tab.keystream.len
) A% w" B. z# Q: U    │  │  │      │  │  │      │  │          internal-name-to-source.tab.len
3 Z! \# ?) M: B2 r3 M    │  │  │      │  │  │      │  │          internal-name-to-source.tab.values.at1 O% b$ V6 ^; E4 x/ @1 j; u& z- @
    │  │  │      │  │  │      │  │          internal-name-to-source.tab_i/ m: Q* ~9 T9 M* M/ i' W
    │  │  │      │  │  │      │  │          internal-name-to-source.tab_i.len
. U5 h, D& n( R+ q# N$ R* j  ]% e4 d    │  │  │      │  │  │      │  │          package-parts.tab  @$ D. c6 x6 L1 z8 B/ Q
    │  │  │      │  │  │      │  │          package-parts.tab.keystream3 ]* ^7 D) ~" E
    │  │  │      │  │  │      │  │          package-parts.tab.keystream.len3 v6 w$ N/ j4 t' C& w' d5 E: s9 o
    │  │  │      │  │  │      │  │          package-parts.tab.len
- H( Z/ L: @- X1 `    │  │  │      │  │  │      │  │          package-parts.tab.values.at
1 n7 t0 E0 l  M: p  e% {6 g    │  │  │      │  │  │      │  │          package-parts.tab_i
+ }5 t2 A/ @1 {- C    │  │  │      │  │  │      │  │          package-parts.tab_i.len
/ A5 r  ?/ t* m& W# R    │  │  │      │  │  │      │  │          proto.tab
% f- Y" }! @4 K' J7 H    │  │  │      │  │  │      │  │          proto.tab.keystream
3 d% D3 |# G) |: P0 c6 J; X    │  │  │      │  │  │      │  │          proto.tab.keystream.len
4 {% W" B6 o+ A' \    │  │  │      │  │  │      │  │          proto.tab.len
9 [" Z( K- ~; _2 D4 ^4 I    │  │  │      │  │  │      │  │          proto.tab.values.at( h9 H5 A) D0 f: R
    │  │  │      │  │  │      │  │          proto.tab_i: k2 F2 o# r* K# T3 l/ N
    │  │  │      │  │  │      │  │          proto.tab_i.len, ?7 ^" b1 `1 Q
    │  │  │      │  │  │      │  │          source-to-classes.tab1 \4 L/ f' f% n! l
    │  │  │      │  │  │      │  │          source-to-classes.tab.keystream
' ^# U( T: A/ h: C2 ?4 f2 ~4 {4 I& n    │  │  │      │  │  │      │  │          source-to-classes.tab.keystream.len
% F8 @$ H: E1 t: b' m: i    │  │  │      │  │  │      │  │          source-to-classes.tab.len3 i: \, O# t# M# V' Z
    │  │  │      │  │  │      │  │          source-to-classes.tab.values.at
3 t9 g; P+ {% V9 B' W+ X; x    │  │  │      │  │  │      │  │          source-to-classes.tab_i, X* V) Z* }! T  u5 e% Y
    │  │  │      │  │  │      │  │          source-to-classes.tab_i.len5 q, i9 o4 ?8 s5 e/ `6 u
    │  │  │      │  │  │      │  │          source-to-output.tab$ p0 D! v- d) }0 N% f
    │  │  │      │  │  │      │  │          source-to-output.tab.keystream
9 n( M5 u7 M- F. L: @7 a. p    │  │  │      │  │  │      │  │          source-to-output.tab.keystream.len
4 B# \$ w: }( z! H4 ~# ^! o8 p    │  │  │      │  │  │      │  │          source-to-output.tab.len! y. n- ~, s4 l- i% Y( d/ D% @  B
    │  │  │      │  │  │      │  │          source-to-output.tab.values.at
- r; S( N) |" A    │  │  │      │  │  │      │  │          source-to-output.tab_i& M4 c+ S; `$ E
    │  │  │      │  │  │      │  │          source-to-output.tab_i.len* u+ J; H1 i) m, J8 Q
    │  │  │      │  │  │      │  │         
5 n0 `' F2 ?- a1 V9 O9 m8 j    │  │  │      │  │  │      │  └─lookups
" \4 w; D/ w- `* E( S    │  │  │      │  │  │      │          counters.tab
1 \8 w! M% F/ J% R6 w    │  │  │      │  │  │      │          file-to-id.tab0 K' {* C2 Z- y& n$ Y9 H
    │  │  │      │  │  │      │          file-to-id.tab.keystream9 p5 S) |. ^' m  X$ B
    │  │  │      │  │  │      │          file-to-id.tab.keystream.len
" L! D0 F' o1 L# e9 \- H/ m    │  │  │      │  │  │      │          file-to-id.tab.len
: ]# G8 B" t8 X7 S9 z3 _    │  │  │      │  │  │      │          file-to-id.tab.values.at
+ g1 \8 k) n: ?. E# r+ q    │  │  │      │  │  │      │          file-to-id.tab_i
6 q$ [, [0 q9 R, f    │  │  │      │  │  │      │          file-to-id.tab_i.len
9 K3 P  _# s3 D/ `    │  │  │      │  │  │      │          id-to-file.tab* e4 X  L3 i* R/ S
    │  │  │      │  │  │      │          id-to-file.tab.keystream
7 {6 M; s1 V) K    │  │  │      │  │  │      │          id-to-file.tab.keystream.len
8 V+ B- y1 l* ^! ?" y    │  │  │      │  │  │      │          id-to-file.tab.len
( C5 M/ u6 r, v$ ~    │  │  │      │  │  │      │          id-to-file.tab.values.at
5 r5 J1 s, |* x8 t4 V    │  │  │      │  │  │      │          id-to-file.tab_i5 b0 M6 Z* v7 p% \5 l
    │  │  │      │  │  │      │          id-to-file.tab_i.len
& i' f5 q8 Q* ?$ i& h    │  │  │      │  │  │      │          lookups.tab6 p  t* s& H7 k2 _
    │  │  │      │  │  │      │          lookups.tab.keystream
0 X; v; s" c; _! F! X    │  │  │      │  │  │      │          lookups.tab.keystream.len% \  j8 l  z. l; q, c
    │  │  │      │  │  │      │          lookups.tab.len
4 X) U) |" x1 t/ W8 b- F; t    │  │  │      │  │  │      │          lookups.tab.values.at
& t. s, ]% @7 }1 C1 i" p* K    │  │  │      │  │  │      │          lookups.tab_i- ?' L& V' H+ A
    │  │  │      │  │  │      │          lookups.tab_i.len; l0 v5 g# [$ A7 Z
    │  │  │      │  │  │      │          % b" M% `! e5 B/ @3 O! o7 i
    │  │  │      │  │  │      └─sync3 ^8 I9 t- G* O: }
    │  │  │      │  │  │              kotlin-files-in-java-timestamps.bin( f7 ]0 Z5 g8 p: k# {6 ]9 O# T9 w
    │  │  │      │  │  │              4 g5 ?0 q2 {+ \7 }4 G. m4 Y
    │  │  │      │  │  ├─kotlin-build
$ _+ a" i1 K: N$ L0 p# [    │  │  │      │  │  │  └─caches! S# [- P# Z4 }5 O
    │  │  │      │  │  │          version.txt- ^2 i2 Z. Z2 Q
    │  │  │      │  │  │          * f2 ^# r8 b8 i3 }. x  m
    │  │  │      │  │  ├─kotlin-classes2 W6 o' l& X- o& e7 V( {/ ]
    │  │  │      │  │  │  └─main' \8 j3 U5 T1 y3 v
    │  │  │      │  │  │      │  Girl.class- y/ u6 M* e. T5 U
    │  │  │      │  │  │      │  MainKt.class0 f% `3 C. X$ o9 }2 c$ h2 r
    │  │  │      │  │  │      │  
) @$ Q7 m5 T- a; H% P- V# f7 M( R    │  │  │      │  │  │      └─META-INF
  S, {; M1 m" T    │  │  │      │  │  │              GradleDemo02_main.kotlin_module. [, E$ ]  z: }" p
    │  │  │      │  │  │              " _( S* Q9 E/ m
    │  │  │      │  │  ├─libs* M8 t5 L" w: I; x) e
    │  │  │      │  │  │      GradleDemo02.jar
$ n5 N+ U/ d0 D" W( l    │  │  │      │  │  │      ( f4 O# r7 y+ ~2 l+ \! W
    │  │  │      │  │  ├─scripts, c4 S0 l3 q  w/ H
    │  │  │      │  │  │      GradleDemo02# f2 a& u% H/ {2 F  o
    │  │  │      │  │  │      GradleDemo02.bat) [4 `1 }. D  o5 m% u
    │  │  │      │  │  │      
! ^  N: x4 Z6 j# ]1 T    │  │  │      │  │  └─tmp  m0 \+ X* J% `7 o* r; J4 g7 \
    │  │  │      │  │      └─jar, U- I, o. U3 n8 S
    │  │  │      │  │              MANIFEST.MF2 q; N2 m( ?) F, ]+ W
    │  │  │      │  │              ; o( W0 v4 ^4 W5 ?; ^7 L  v3 F& `' }
    │  │  │      │  ├─out
& ~( R4 M1 P8 Y6 P) q# [    │  │  │      │  │  └─production5 k: O' N$ J) i* _6 I, a. y
    │  │  │      │  │      └─classes$ m7 E6 c9 {/ B
    │  │  │      │  │          │  Girl.class
) I* O5 ^' x& q) Z9 ^; e; W9 f    │  │  │      │  │          │  MainKt.class! ], h0 u5 f; ]$ C+ K  @% R
    │  │  │      │  │          │  
" l  X( k! {* A    │  │  │      │  │          └─META-INF
( u6 P( n+ \  n2 B) j8 d    │  │  │      │  │                  GradleDemo02_main.kotlin_module
9 ]4 L' R$ u' {8 H    │  │  │      │  │                  
  F6 X" y: G! ]5 [; |+ U    │  │  │      │  └─src% R6 }6 M, e. K9 H
    │  │  │      │      └─main& }/ C2 m  d4 K' Z& a! V7 q) g
    │  │  │      │          └─kotlin
; g* ]& ^1 a4 _' T) L, s% I    │  │  │      │                  Girl.kt2 d$ `* r, d/ L0 ?
    │  │  │      │                  Main.kt
# P" B( ]( J& I2 {  u    │  │  │      │                  
3 I  K2 Q0 N. K' W    │  │  │      ├─GradleDemo03
! Y) N; e$ V7 d( D  H  C8 W    │  │  │      │  │  build.gradle.kts
4 U" r) z/ L# Q    │  │  │      │  │  settings.gradle, F# A. v, t% |3 V6 Z4 ?$ g& O3 ]+ U
    │  │  │      │  │  
8 j; [) Q4 n% Q7 F    │  │  │      │  ├─.gradle( m5 C3 ~) t1 Y4 U  S5 s; a1 M
    │  │  │      │  │  ├─4.1
$ I+ Y( {  M2 j1 Z' d- `    │  │  │      │  │  │  ├─fileChanges; i3 ~7 x3 o- D# b$ W2 z! A
    │  │  │      │  │  │  │      last-build.bin
% C6 D+ ^9 Y4 d: P$ c3 c% `    │  │  │      │  │  │  │      
" P+ _7 K! X* B) ]5 y  Q' D    │  │  │      │  │  │  ├─fileHashes
: C, d: J9 e. r3 ]0 E8 M8 S    │  │  │      │  │  │  │      fileHashes.bin! Y$ n" G1 W5 ~! g+ V8 C
    │  │  │      │  │  │  │      fileHashes.lock
# m$ G& D& {6 C6 }2 |    │  │  │      │  │  │  │      $ b7 z" S/ X) j) g$ O6 i
    │  │  │      │  │  │  └─taskHistory5 s* i1 |8 k: q6 f& z9 P# v
    │  │  │      │  │  │          taskHistory.lock
0 ?& k' ~. E$ ]8 n    │  │  │      │  │  │         
( w5 @& _+ ]) g    │  │  │      │  │  └─buildOutputCleanup
9 I$ b% S* l1 m# n    │  │  │      │  │          built.bin
6 b  }  u! x: ~' _  ]% @; b    │  │  │      │  │          cache.properties" I2 |, A3 k. J" x* }& Q. _
    │  │  │      │  │          cache.properties.lock% q% {& ]( D, m
    │  │  │      │  │          6 r3 d" _* X. A- ?9 e$ C/ {
    │  │  │      │  └─.idea
- l8 _. A  w# j% R* z* x9 G    │  │  │      │          encodings.xml
$ J* E1 ^5 \; w    │  │  │      │          gradle.xml- d! h& S% z6 X' c
    │  │  │      │          misc.xml, ^; B1 X9 c& `
    │  │  │      │          workspace.xml: F* q4 l6 Q* Y9 e; @7 s6 o
    │  │  │      │          % F- {# h! z) @" m
    │  │  │      ├─GradleDemo04_task_depdence2 h- X0 ~- H  L, y9 t- b
    │  │  │      │  │  build.gradle.kts
) s6 `. H; {- ]. v& V8 I; ]    │  │  │      │  │  settings.gradle
* G+ P/ {/ a9 N+ _: S    │  │  │      │  │  
' H/ {% g9 n* e6 Q. H+ {) X3 J) e5 Q% C    │  │  │      │  ├─.gradle' j9 \* C2 V4 F2 o4 I! i$ Z
    │  │  │      │  │  ├─4.1) `6 l& u% `: b
    │  │  │      │  │  │  ├─fileChanges! e8 ]1 u: E: ?0 w. B7 _
    │  │  │      │  │  │  │      last-build.bin
2 \# S, Q" O. }* x- v9 V    │  │  │      │  │  │  │      5 A. U- Y3 @% T
    │  │  │      │  │  │  ├─fileHashes
: F/ S  g7 d+ V$ a- x. ^- O9 x    │  │  │      │  │  │  │      fileHashes.bin
* \, E* [4 A* C) h. f: @3 c    │  │  │      │  │  │  │      fileHashes.lock
, E' n" l& o  o# m$ n" x4 w    │  │  │      │  │  │  │      7 `2 q7 z. P$ Z$ a
    │  │  │      │  │  │  └─taskHistory- k0 N' t" f2 h* U) x" c0 Q
    │  │  │      │  │  │          taskHistory.lock
+ G) p4 q# r5 y+ f; n; C. e% b! h    │  │  │      │  │  │         
: N: [( q1 k. P2 t. u! Y0 Z) t) c    │  │  │      │  │  └─buildOutputCleanup
% h4 s; C0 o' Y7 v* k3 B/ p    │  │  │      │  │          built.bin/ Y0 b& ?2 c$ z
    │  │  │      │  │          cache.properties3 S3 g& O6 ^9 y: A- ]" t
    │  │  │      │  │          cache.properties.lock
6 x# h, z0 Z, F+ S5 R. D+ o2 f( W9 {# p    │  │  │      │  │          $ W. t# v" U/ q  W& _5 x
    │  │  │      │  └─.idea
0 v  U# O2 U; c; t0 R) D0 B2 |    │  │  │      │          encodings.xml
' v+ [  D/ x: I* o" h' J4 @1 j  e    │  │  │      │          gradle.xml
, A2 P6 [; a7 c* d    │  │  │      │          misc.xml! ?  H6 X+ H' c2 I+ p$ G* S
    │  │  │      │          workspace.xml  @/ \$ Z2 J% d5 w+ X6 ~0 Z8 L
    │  │  │      │          ) d+ \8 g. N& d9 c5 M% [
    │  │  │      ├─GradleDemo04_task_lifecicle6 L- R: p8 [) v  }! G8 s$ n2 E
    │  │  │      │  │  build.gradle.kts
$ |$ P) H9 @! p, v8 M    │  │  │      │  │  settings.gradle- _7 n! X2 A7 C0 v% L' @# ^
    │  │  │      │  │  
) c; b! I0 x5 A# W: r    │  │  │      │  ├─.gradle
" @% c! q3 }/ H+ Q    │  │  │      │  │  ├─4.1
* a3 w% \$ q# @/ f; ?. c* N    │  │  │      │  │  │  ├─fileChanges
% [( i2 M" P! E$ p    │  │  │      │  │  │  │      last-build.bin! U6 `) r+ ~/ w% E- g  D- N1 d* H/ y
    │  │  │      │  │  │  │      
5 a( T! G4 L) Q! y7 r    │  │  │      │  │  │  ├─fileHashes# g3 Q7 [: }. x( ]9 Z5 [
    │  │  │      │  │  │  │      fileHashes.bin$ m# D/ \- a$ k- {$ \1 C
    │  │  │      │  │  │  │      fileHashes.lock
- n8 S/ I' Q/ b) M8 f+ c    │  │  │      │  │  │  │      
/ f" U: a& w6 ^1 u7 o    │  │  │      │  │  │  └─taskHistory: a& f: ^5 t, V3 T8 p9 g  c) C
    │  │  │      │  │  │          taskHistory.lock. ~. |5 V2 Y1 m3 E8 P3 A
    │  │  │      │  │  │          9 Y0 L# z  C( d& N
    │  │  │      │  │  └─buildOutputCleanup5 S9 V: F8 L! F4 ?/ j+ X
    │  │  │      │  │          built.bin
& O$ q. f4 @( E+ O" V+ d    │  │  │      │  │          cache.properties
' P4 [. }$ M4 h    │  │  │      │  │          cache.properties.lock' c+ g. d  X& B% z. j8 g
    │  │  │      │  │         
2 {, K; G0 _& }5 |  I) ]: h2 V    │  │  │      │  └─.idea
0 Z, t/ h* X, H    │  │  │      │          encodings.xml  K  J/ p/ f) l  B% N5 ]  X
    │  │  │      │          gradle.xml
9 d0 h2 u6 X  s2 G    │  │  │      │          misc.xml
$ _# W7 ~+ k  f! i" Z# s: \    │  │  │      │          workspace.xml
) j9 Z5 J6 p9 C9 ?1 p    │  │  │      │         
) f7 m) L& z8 K    │  │  │      ├─GradleDemo05_tasks8 y. l1 u, v$ m) Z2 ]
    │  │  │      │  │  build.gradle.kts+ q4 t. t) @% ~- t$ V7 }# K
    │  │  │      │  │  settings.gradle+ W+ y# J5 O& n7 i5 s+ h9 b6 ]" u
    │  │  │      │  │  9 w, i# p4 J! P- v
    │  │  │      │  ├─.gradle
) v% Y5 ?& o# z, i3 k- ~    │  │  │      │  │  ├─4.1
0 J5 r5 n3 _4 \2 y! F% F: a/ z    │  │  │      │  │  │  ├─fileChanges
, P8 c2 W0 U2 X: H; D    │  │  │      │  │  │  │      last-build.bin9 G* q, d4 P% {) u4 y* `% k2 B6 O+ o
    │  │  │      │  │  │  │      / a) E# Z1 ~( m4 `
    │  │  │      │  │  │  ├─fileHashes
* b+ G, ]- L) F/ ~/ J0 @    │  │  │      │  │  │  │      fileHashes.bin
9 j' [1 U. c7 D" h8 P9 J2 U- ~2 X    │  │  │      │  │  │  │      fileHashes.lock0 J$ K( `# q. k9 X8 m: p0 C
    │  │  │      │  │  │  │      
. }$ I% I- }# p: y2 E    │  │  │      │  │  │  └─taskHistory
6 S+ Z3 I; c. `    │  │  │      │  │  │          taskHistory.lock
% h( k5 B3 L$ e9 X5 A' R- t    │  │  │      │  │  │          ! c. T7 q* q; d; _1 ^  V8 d  b
    │  │  │      │  │  └─buildOutputCleanup+ w$ I# i! f/ {: Q
    │  │  │      │  │          built.bin
0 ^9 s+ t' w% c' K6 a( s    │  │  │      │  │          cache.properties
7 h  r- Q3 j, G: P    │  │  │      │  │          cache.properties.lock; N' F) i& ~/ r# t; ~8 `) X
    │  │  │      │  │         
- l! `; q+ ?5 I5 L+ i) O6 s    │  │  │      │  └─.idea
+ S0 T7 {0 X/ E    │  │  │      │          encodings.xml' \6 F" J! s! q0 C8 a$ J$ y
    │  │  │      │          gradle.xml
. p' Q6 I$ X$ V    │  │  │      │          misc.xml
8 K( {2 m, c$ p, v" W$ A9 H( c( }    │  │  │      │          workspace.xml4 V. z. x1 w! W9 U5 A2 j
    │  │  │      │          , j2 v; T6 ^4 v& D$ ~/ I3 c
    │  │  │      ├─GradleDemo07_properties
+ O4 ^2 N5 T# B8 x" L/ C& y5 f    │  │  │      │  │  build.gradle.kts
; q* ?9 ], O: ]    │  │  │      │  │  settings.gradle
# ?' l" k7 ]9 @1 ?- w" U    │  │  │      │  │  
0 M3 X6 B5 ~9 h0 K! B7 R    │  │  │      │  ├─.gradle
: R+ G9 D5 P$ ?4 K    │  │  │      │  │  ├─4.1
1 m5 n% ]; E5 \/ y6 T7 L* T    │  │  │      │  │  │  ├─fileChanges
( A1 p6 a/ H9 ~1 p+ s    │  │  │      │  │  │  │      last-build.bin
  w2 U4 y2 s% U    │  │  │      │  │  │  │      
, H& Y2 R1 L/ Y  g( q' D2 u    │  │  │      │  │  │  ├─fileHashes5 f' k6 t1 Z; l! V- N! b- N4 s
    │  │  │      │  │  │  │      fileHashes.bin, z3 M9 I4 V2 v! H% z
    │  │  │      │  │  │  │      fileHashes.lock
( M' V  A4 U# a& ]    │  │  │      │  │  │  │      
7 |4 b# Y8 ?$ e5 n( x6 s) I1 Q    │  │  │      │  │  │  └─taskHistory
. r3 I1 k+ D+ J% `# B1 M3 H# \% z    │  │  │      │  │  │          taskHistory.lock/ B2 b% t$ Q1 t  ]* y9 W% e, Z
    │  │  │      │  │  │         
% e4 l  F: ~; j' e; i) {2 a% e    │  │  │      │  │  └─buildOutputCleanup2 D" R; ^+ D0 D3 t
    │  │  │      │  │          built.bin- |* Q# L; S& M6 j- ]
    │  │  │      │  │          cache.properties/ H$ p0 l1 N6 i3 B
    │  │  │      │  │          cache.properties.lock
/ L; Y& j  k& u& I. W, Y    │  │  │      │  │         
6 e! ~/ J6 P) ?9 |0 k8 f    │  │  │      │  └─.idea, H& L/ Q' N* S4 f5 j7 `/ ~7 @8 l
    │  │  │      │          .name
# T# V% {9 G/ }3 A9 Q    │  │  │      │          encodings.xml# N+ ^' `/ g6 E  L
    │  │  │      │          gradle.xml4 `3 P7 }3 \) b- y3 I: p: [
    │  │  │      │          misc.xml
1 R* K) I9 T7 v# y% t+ r; f6 B    │  │  │      │          workspace.xml
- |) m* m- s( e    │  │  │      │         
) [5 L5 Q1 ]( o% Y    │  │  │      ├─GradleDemo08_update& n2 ]/ g/ D: W$ ?4 d- x+ d. ^
    │  │  │      │  │  build.gradle.kts
7 H5 X: W5 q" P& e, I" E    │  │  │      │  │  info.txt
9 M$ a8 Y/ \  Y$ V    │  │  │      │  │  settings.gradle
$ A. G8 R: o7 N( J9 E# Y( L    │  │  │      │  │  
% Y1 j' _6 V5 R1 z    │  │  │      │  ├─.gradle
7 ^9 u3 G0 M- k+ @* M    │  │  │      │  │  ├─4.1" ?5 [: ?8 m& {# R7 n1 F
    │  │  │      │  │  │  ├─fileChanges
2 K7 _' z2 ^5 B$ M7 D9 P$ U    │  │  │      │  │  │  │      last-build.bin- y4 @" c# P2 G4 D! }
    │  │  │      │  │  │  │      + V6 A  K$ ]0 R$ z$ @$ ^
    │  │  │      │  │  │  ├─fileHashes
2 ?5 L8 W! x5 Z) K! y' U, O' b# q: e    │  │  │      │  │  │  │      fileHashes.bin2 w/ P$ P' I& o- @+ W& H& C0 F
    │  │  │      │  │  │  │      fileHashes.lock' h  ]5 W) ^9 a3 u9 B, r2 l' l
    │  │  │      │  │  │  │      
6 d# u0 B8 ]! x. x9 t1 n    │  │  │      │  │  │  └─taskHistory. `# ?- F, `$ \6 t! x
    │  │  │      │  │  │          fileSnapshots.bin
* a+ E& X' u0 w    │  │  │      │  │  │          taskHistory.bin' F2 v3 a% W! z+ {  u% ^
    │  │  │      │  │  │          taskHistory.lock8 A8 J# d* u1 T# |! \* D
    │  │  │      │  │  │         
( F, [% Y0 H' p: J5 b3 B9 {# Z6 m    │  │  │      │  │  └─buildOutputCleanup+ C4 x" b6 _7 A( w1 R% i
    │  │  │      │  │          built.bin
) Q! ]/ r" I: o6 D7 {    │  │  │      │  │          cache.properties; X8 I  x6 j& a, L
    │  │  │      │  │          cache.properties.lock
% q( C& M! [' i0 b    │  │  │      │  │          5 `) U1 n, K" J! G" C/ N# |
    │  │  │      │  ├─.idea( E! u4 @( v# {5 w4 Y2 y) O. m9 x
    │  │  │      │  │      encodings.xml
9 N$ ~# J% v* v3 m: l8 r4 O$ o    │  │  │      │  │      gradle.xml
8 ]/ O& H' S4 \8 L  A    │  │  │      │  │      misc.xml, _6 q: \6 F' L9 m3 k& A
    │  │  │      │  │      workspace.xml
4 r* K& U! G: I$ y$ e: z, E    │  │  │      │  │      ; `% D/ I+ u$ B: w5 ~1 m1 w
    │  │  │      │  └─src
( @  z) V/ t- F+ v0 V0 C+ c# k    │  │  │      │      └─main
6 k/ ~4 _) U% U( r* l  I+ ^    │  │  │      │          └─java, `2 H! B' I2 a0 i; p) J3 n+ x
    │  │  │      │                  Girl.java
4 T, b  r) t$ |' ?( ?    │  │  │      │                  Main.java0 j, R) h! A# K" o0 k
    │  │  │      │                  Test.java
2 `; _; R: h# _    │  │  │      │                  4 _( ]) m* L/ B3 n3 s
    │  │  │      ├─GradleDemo09_plugins
. R1 n% k% k9 ?, q  S4 i    │  │  │      │  │  build.gradle.kts
) P) x+ C9 z  r    │  │  │      │  │  settings.gradle) {/ x% Z% L/ d7 S: t
    │  │  │      │  │  
1 ?: i: \3 d3 O; f  B    │  │  │      │  ├─.gradle
5 ?' Q8 ^" P0 {8 O    │  │  │      │  │  ├─4.1
. L2 l( [1 b# l7 J9 _) Y' n    │  │  │      │  │  │  ├─fileChanges
0 c) H) g6 g! D/ `$ R6 D* ^    │  │  │      │  │  │  │      last-build.bin" k! v0 E' K1 |& z; G
    │  │  │      │  │  │  │      7 l0 n7 b6 h% s6 V4 Z1 q
    │  │  │      │  │  │  └─fileHashes% L" a! G9 b3 f( X) [; _
    │  │  │      │  │  │          fileHashes.bin2 A: {7 D% ?3 @5 Z1 Y8 ~
    │  │  │      │  │  │          fileHashes.lock
! S+ k3 b+ Y1 S  Y  U* U    │  │  │      │  │  │         
( P* W& k" z9 v  i2 a    │  │  │      │  │  └─buildOutputCleanup% c. N) f1 R) }: @9 F/ X
    │  │  │      │  │          built.bin
7 j# F3 u! w- \" d0 q/ `    │  │  │      │  │          cache.properties
  Q  G( f4 O6 p4 L' \7 @. R7 L    │  │  │      │  │          cache.properties.lock- m9 M8 _( j" Z, ~8 D1 K& x
    │  │  │      │  │         
' T1 \1 M$ ^* U# ?6 b    │  │  │      │  ├─.idea) A/ r/ s' g# a  G# F# c  A/ \
    │  │  │      │  │  │  encodings.xml
" B2 J3 N1 g8 l6 m( D, E( B    │  │  │      │  │  │  gradle.xml
7 ?3 v* n9 c* n" L; |    │  │  │      │  │  │  misc.xml
; G0 l" ~0 o# E% V! q2 {    │  │  │      │  │  │  workspace.xml# a; {% l' b, }1 Q/ J: D" U
    │  │  │      │  │  │  
9 I+ u! g/ N, v2 t5 b; u    │  │  │      │  │  └─modules
+ N  j, {( R, _    │  │  │      │  │          GradleDemo09_plugins_main.iml
( D! n1 a: R+ W5 d) S5 ]7 _7 d    │  │  │      │  │          GradleDemo09_plugins_test.iml: S2 j2 K( h* X/ |3 I  Y
    │  │  │      │  │         
2 T) P" S; C. t, U# a) Z$ K    │  │  │      │  └─build
% t: g! z) p  Q    │  │  │      │      ├─kotlin-build
5 [1 s* O( h! V+ I    │  │  │      │      │      version.txt6 X' M+ }5 i# D: t
    │  │  │      │      │      ; j( \2 ]4 }1 D, k/ U7 U4 e
    │  │  │      │      └─tmp
- v8 }/ ^8 |' p( A* y, I& [# i    │  │  │      │          └─war" S3 e4 e( k- |( F# y
    │  │  │      │                  MANIFEST.MF; ^2 j8 @9 i0 E' o
    │  │  │      │                  
$ r  A: g9 r4 o! p; q    │  │  │      ├─GradleDemo10_TDD& T( R- v. i% v) X7 }- U# T
    │  │  │      │  │  build.gradle.kts
+ F' x4 x& A. [7 l; {    │  │  │      │  │  settings.gradle
+ G7 c) W8 u1 i+ @5 m    │  │  │      │  │  
- T4 G" M# h2 k: U    │  │  │      │  ├─.gradle
0 M( K) W1 H) q: L% a    │  │  │      │  │  ├─4.13 ^5 l  s( M+ s) e  ]; I0 w
    │  │  │      │  │  │  ├─fileChanges0 L, y$ u; {+ _0 ]' v+ t% V; ^
    │  │  │      │  │  │  │      last-build.bin
6 Y$ F: Y" _* s2 p    │  │  │      │  │  │  │      0 k9 \/ F& W4 J2 H/ |6 _5 S
    │  │  │      │  │  │  ├─fileContent$ F4 [" N$ z" x7 S. H; e8 j
    │  │  │      │  │  │  │      fileContent.lock
3 I) S8 Y. C* k9 a    │  │  │      │  │  │  │      ( o$ [) K) _9 u: @% w0 r/ U( U" ]
    │  │  │      │  │  │  ├─fileHashes
5 V( j: q9 P* k  m    │  │  │      │  │  │  │      fileHashes.bin
/ M& N& X' M0 z5 V7 M' l    │  │  │      │  │  │  │      fileHashes.lock
, l3 ]3 q  q* G3 n/ ^0 K- \2 g    │  │  │      │  │  │  │      resourceHashesCache.bin% U: Z! d( r& |- O
    │  │  │      │  │  │  │      * z4 q0 _& `2 D( [' f
    │  │  │      │  │  │  └─taskHistory
* _4 A* K& _- W' B: E* \8 b    │  │  │      │  │  │          fileSnapshots.bin* N1 d( w5 M8 F8 ]  I8 u1 {
    │  │  │      │  │  │          taskHistory.bin. C# @  M% A# J
    │  │  │      │  │  │          taskHistory.lock
3 y* P& m( D: Y' c' `# m2 \* q    │  │  │      │  │  │         
4 j* S- P- l* D# @) [8 ^    │  │  │      │  │  └─buildOutputCleanup$ A: q( A1 H* A! S  l
    │  │  │      │  │          built.bin2 w. [% w; H$ U7 `0 S5 `
    │  │  │      │  │          cache.properties+ s. h# \* D  O" }* F" u
    │  │  │      │  │          cache.properties.lock$ a" C3 a  a2 b' {% }3 E3 k$ n$ I
    │  │  │      │  │         
8 @3 c5 v$ ]( v    │  │  │      │  ├─.idea
: m$ {1 X0 ^. {( S! W# c' a# x# _, T    │  │  │      │  │  │  encodings.xml) r. D6 ?' y5 m
    │  │  │      │  │  │  gradle.xml: m0 O5 c$ K, ]
    │  │  │      │  │  │  misc.xml
9 }* m6 V$ P, m/ P    │  │  │      │  │  │  workspace.xml
6 d# K: g; S5 W9 f& ?/ X" v7 u    │  │  │      │  │  │  # ]2 m( k2 D2 d( G' P
    │  │  │      │  │  └─modules
; }) Z6 [# a+ O9 L( O6 b) {    │  │  │      │  │          GradleDemo10_TDD_main.iml
0 ]8 z: |8 y" Y; p$ U1 V& `    │  │  │      │  │          GradleDemo10_TDD_test.iml) {( z" B, X/ i' D
    │  │  │      │  │          ' J, Q' n5 X- T0 c) ]
    │  │  │      │  ├─build) J5 X8 M% f8 H7 C
    │  │  │      │  │  ├─classes
% p: G" {  A+ p8 P: p" ^    │  │  │      │  │  │  └─java
* G3 G4 v/ F# Q    │  │  │      │  │  │      └─main
, f% ]6 V1 ?5 S% R& {9 m) c    │  │  │      │  │  │          │  Girl.class/ w3 K0 ~4 [) B( g1 ]- n+ h+ Q
    │  │  │      │  │  │          │  MainKt.class
" v9 N3 q9 j8 d3 \9 ^+ S1 O! s    │  │  │      │  │  │          │  1 `# }( U2 O2 B, G1 F
    │  │  │      │  │  │          └─META-INF4 m# L8 ^; h+ P# G+ I+ q' ^
    │  │  │      │  │  │                  GradleDemo10_TDD_main.kotlin_module
! {! x7 t1 J' }    │  │  │      │  │  │                  9 `6 a' U+ J. f
    │  │  │      │  │  ├─distributions1 i( _" U4 V3 X- x
    │  │  │      │  │  │      GradleDemo10_TDD.zip3 Y" T8 p8 E2 i. f
    │  │  │      │  │  │      
# C% F' b% w& p    │  │  │      │  │  ├─kotlin
, E$ {% t) r) N+ j3 v' O& X% S- ^4 N( ~    │  │  │      │  │  │  └─compileKotlin
6 G; U: `/ o9 p/ S% j3 v. Q, Z    │  │  │      │  │  │      │  data-container-format-version.txt
$ P6 U4 e4 V: _. {    │  │  │      │  │  │      │  experimental-format-version.txt
( `/ a1 v* @% Q    │  │  │      │  │  │      │  format-version.txt( s* @# j) n# L; p6 u# B
    │  │  │      │  │  │      │  gradle-format-version.txt
3 U  ], I9 H" `" \    │  │  │      │  │  │      │  last-build.bin% X8 K8 o2 \: {7 k" E& _
    │  │  │      │  │  │      │  , G5 k" C( P; Y, O: r, P0 r/ J
    │  │  │      │  │  │      ├─caches' Z( J4 `- l# J  G( M3 ?
    │  │  │      │  │  │      │  ├─increCache.GradleDemo10_TDD_main4 K' i5 @% A+ X  s' g. H0 E
    │  │  │      │  │  │      │  │  └─kotlin
. {  X, U8 B; K( _# V    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab
4 @/ R6 r3 N+ k    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab.keystream/ H$ x. p7 T# Z3 s* u9 F7 s) K- n2 l
    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab.keystream.len2 l' ^& l2 e' J6 @4 Z7 t  g
    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab.len
) i' R) q" ^% R- K2 D    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab.values.at/ k* P! M4 s3 U! z
    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab_i
' `3 Q# l) c- N5 J5 @# S( `! d    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab_i.len! E3 a  B6 N. }1 l! Q5 A
    │  │  │      │  │  │      │  │          internal-name-to-source.tab
2 ^/ I6 {! Z- ]6 y5 O; t- P6 o    │  │  │      │  │  │      │  │          internal-name-to-source.tab.keystream
$ Z2 M  b2 J# b8 n/ |2 u    │  │  │      │  │  │      │  │          internal-name-to-source.tab.keystream.len
; B7 F  h3 A5 t5 |3 b% |: @    │  │  │      │  │  │      │  │          internal-name-to-source.tab.len- K9 [0 E* Y9 j/ v& V3 w1 a
    │  │  │      │  │  │      │  │          internal-name-to-source.tab.values.at2 C/ ?2 W* k5 l, d! a/ y+ E: M
    │  │  │      │  │  │      │  │          internal-name-to-source.tab_i
* y: {7 J- o5 B6 N/ F0 n) l! ]( {- Q    │  │  │      │  │  │      │  │          internal-name-to-source.tab_i.len
; E" `; K" D. V1 _' z    │  │  │      │  │  │      │  │          package-parts.tab
8 u0 h# s8 x2 X; G0 i    │  │  │      │  │  │      │  │          package-parts.tab.keystream$ u/ @8 a# t5 j
    │  │  │      │  │  │      │  │          package-parts.tab.keystream.len* I7 Y$ B" k$ Z
    │  │  │      │  │  │      │  │          package-parts.tab.len
$ L' J/ l% ^# v, W0 S9 |* \    │  │  │      │  │  │      │  │          package-parts.tab.values.at% H6 l# J9 o% T+ c& e
    │  │  │      │  │  │      │  │          package-parts.tab_i
3 J  p* T: {' [/ v+ V) _: _    │  │  │      │  │  │      │  │          package-parts.tab_i.len: ~1 @$ U" B! Z0 q  O$ m
    │  │  │      │  │  │      │  │          proto.tab) c  z& T2 l; _1 N+ i! ~% g0 `
    │  │  │      │  │  │      │  │          proto.tab.keystream0 b; Z6 E- J! r& \2 h! U
    │  │  │      │  │  │      │  │          proto.tab.keystream.len2 Q9 i7 }+ c# Y
    │  │  │      │  │  │      │  │          proto.tab.len
; ^; C4 q" o" I    │  │  │      │  │  │      │  │          proto.tab.values.at
; {# Z* d! e. X- C. E* M7 J* ]    │  │  │      │  │  │      │  │          proto.tab_i6 L: D* @2 o/ K
    │  │  │      │  │  │      │  │          proto.tab_i.len/ b7 t! B! q& b' W" j$ P2 p: B! j
    │  │  │      │  │  │      │  │          source-to-classes.tab  D9 }4 B) h0 S; s# h  V/ p
    │  │  │      │  │  │      │  │          source-to-classes.tab.keystream" x2 U+ F" B1 f# G! j* S
    │  │  │      │  │  │      │  │          source-to-classes.tab.keystream.len* d# _, W% q( p6 m9 j
    │  │  │      │  │  │      │  │          source-to-classes.tab.len
" r- V9 t0 s) S1 j, B) ^    │  │  │      │  │  │      │  │          source-to-classes.tab.values.at
% G  y) f0 o, I' h    │  │  │      │  │  │      │  │          source-to-classes.tab_i
# Z* l' h) c/ c3 v0 {    │  │  │      │  │  │      │  │          source-to-classes.tab_i.len3 ]+ Z2 U, i' O- s9 _( s9 H
    │  │  │      │  │  │      │  │          source-to-output.tab
; u' |# x" o% n  d    │  │  │      │  │  │      │  │          source-to-output.tab.keystream0 q& K* U! e) @# Y6 @5 m: k
    │  │  │      │  │  │      │  │          source-to-output.tab.keystream.len
5 e7 Q" x  U5 s" P( H( X, h* U    │  │  │      │  │  │      │  │          source-to-output.tab.len
& m$ p, e# S" u) \, F* A    │  │  │      │  │  │      │  │          source-to-output.tab.values.at" p: }/ `$ p, ~4 ~
    │  │  │      │  │  │      │  │          source-to-output.tab_i
# Y. j; q" l9 t    │  │  │      │  │  │      │  │          source-to-output.tab_i.len6 h" R' \% J4 ^- B7 S
    │  │  │      │  │  │      │  │          & @% O3 g* k/ Y- q. `) ~: Z. Z  a# B
    │  │  │      │  │  │      │  └─lookups; O! t1 {& e) L  Y+ s0 Z
    │  │  │      │  │  │      │          counters.tab
( c  L. a( {$ ?: X. b/ \    │  │  │      │  │  │      │          file-to-id.tab5 [& a. N# C0 s3 U/ {. z2 U: Q
    │  │  │      │  │  │      │          file-to-id.tab.keystream
8 l. Y& d4 Z& b    │  │  │      │  │  │      │          file-to-id.tab.keystream.len
) P- d6 y+ u% L6 u$ {! C    │  │  │      │  │  │      │          file-to-id.tab.len0 j0 N6 B& k* b0 k
    │  │  │      │  │  │      │          file-to-id.tab.values.at, X1 A% M; O2 {7 e) X
    │  │  │      │  │  │      │          file-to-id.tab_i
4 ~) f' Z; m9 q. I! E0 V3 n+ r    │  │  │      │  │  │      │          file-to-id.tab_i.len
# y" c* n: f- x  l    │  │  │      │  │  │      │          id-to-file.tab
  j2 u/ o, H, a: g0 @8 p    │  │  │      │  │  │      │          id-to-file.tab.keystream- n' a7 t7 L& ^% k2 m2 d5 n3 k1 i, }
    │  │  │      │  │  │      │          id-to-file.tab.keystream.len7 D1 \/ L: {( g: @1 L7 Y
    │  │  │      │  │  │      │          id-to-file.tab.len
. S  o2 t2 h8 T/ k: X; E+ \8 k0 D    │  │  │      │  │  │      │          id-to-file.tab.values.at8 g+ @5 q; Z+ u4 W4 x6 N* v
    │  │  │      │  │  │      │          id-to-file.tab_i
: h/ s# T) t3 B2 F9 H: F    │  │  │      │  │  │      │          id-to-file.tab_i.len& `4 s' A9 A: o  z3 D
    │  │  │      │  │  │      │          lookups.tab
" D4 q0 _" C' O9 {    │  │  │      │  │  │      │          lookups.tab.keystream$ F, o5 f6 y. k$ \& J/ c
    │  │  │      │  │  │      │          lookups.tab.keystream.len
% Q6 n- M+ x* C; s% P. V! @9 U    │  │  │      │  │  │      │          lookups.tab.len
; c1 Q5 t/ F: h4 o" u* n    │  │  │      │  │  │      │          lookups.tab.values.at  d& c- L, i) {
    │  │  │      │  │  │      │          lookups.tab_i! P( k+ i% r0 V
    │  │  │      │  │  │      │          lookups.tab_i.len2 N) `- P3 Y4 @# I6 v& `
    │  │  │      │  │  │      │          8 m! Z+ j9 C6 U8 @" ~% a3 x0 m# u
    │  │  │      │  │  │      └─sync
; V% X5 q$ p* s1 {9 {    │  │  │      │  │  │              kotlin-files-in-java-timestamps.bin
4 j% I& s" C0 ^# K1 Z/ p/ S6 q    │  │  │      │  │  │              
9 i/ s5 N9 z7 X, Z5 i    │  │  │      │  │  ├─kotlin-build8 D! ?) k# {  x" N) D
    │  │  │      │  │  │  └─caches5 y5 f/ y. u$ ~* I5 S4 C
    │  │  │      │  │  │          version.txt
( B) J) f( |; D. B6 R' O7 @" z    │  │  │      │  │  │         
$ S% Z/ p5 ?6 T' q7 r7 f. o    │  │  │      │  │  ├─kotlin-classes
4 }- g) U' g, M" R/ i7 R( |) ^$ I    │  │  │      │  │  │  └─main  A% M$ G8 q) x6 t/ |9 a
    │  │  │      │  │  │      │  Girl.class
( Q% m; l1 G2 t" ~4 u" p& {2 A    │  │  │      │  │  │      │  MainKt.class
% F5 r, Z. L( P$ y, ]0 P- S1 Z    │  │  │      │  │  │      │  % m, U* ~0 d, i0 @4 [5 c; b) O
    │  │  │      │  │  │      └─META-INF$ Z) f9 a- b3 o5 r
    │  │  │      │  │  │              GradleDemo10_TDD_main.kotlin_module
' G8 ?2 l- G) g5 T5 N    │  │  │      │  │  │              
& {% i4 |; ^% p$ W1 w% ]    │  │  │      │  │  ├─libs
- Z  q* B0 l0 G+ _# V    │  │  │      │  │  │      GradleDemo10_TDD.jar
! p3 H2 t  J! Z3 e5 {, P7 u) O    │  │  │      │  │  │      
! p1 v2 o; S* I# m& @' K5 q    │  │  │      │  │  ├─scripts
* h: t2 I9 {4 q3 n2 _- ?    │  │  │      │  │  │      GradleDemo10_TDD4 i. H) S+ w2 e$ H' p
    │  │  │      │  │  │      GradleDemo10_TDD.bat8 l) Q7 X" j, Z4 g2 l# I7 B- X. C) |
    │  │  │      │  │  │      
" \  `/ i1 `" w3 l0 c, `" z/ q    │  │  │      │  │  └─tmp
  D7 I, _8 E( U* i+ A! J    │  │  │      │  │      └─jar
, d9 S% r5 \1 S/ Y    │  │  │      │  │              MANIFEST.MF
' j: Q& u- Q" y5 x    │  │  │      │  │              
( K+ `& J- U( g$ n/ z    │  │  │      │  ├─out
. l5 I  V+ n. d    │  │  │      │  │  ├─production* d  D/ |; O( R% V$ M5 m* `0 H
    │  │  │      │  │  │  └─classes+ z6 e: Y, c5 Q: k+ u& f9 s
    │  │  │      │  │  │      │  Girl.class
: `# F: E0 u& q    │  │  │      │  │  │      │  MainKt.class
, O( F3 Q9 h/ g- V  \    │  │  │      │  │  │      │  3 m3 e! U3 @+ `. ~! i
    │  │  │      │  │  │      └─META-INF
+ ~1 P% ]1 K+ o. I# H, r4 a    │  │  │      │  │  │              GradleDemo10_TDD_main.kotlin_module
) o7 n) G# k9 j6 c6 q  k, t& i    │  │  │      │  │  │              
4 o( H2 ^/ x' q/ v5 _  {2 K    │  │  │      │  │  └─test
4 s. q/ }, W- [: C" x0 V    │  │  │      │  │      └─classes
" b9 D# v5 y: Y+ |    │  │  │      │  │              TestGirl.class
$ o7 l+ r5 n9 s; ^    │  │  │      │  │              0 F- G6 ~1 C  Y: p2 S# E
    │  │  │      │  └─src
3 K& A+ c5 v  z+ {* F    │  │  │      │      ├─main6 b) o" n3 o2 j% L: d8 Y- w) `
    │  │  │      │      │  └─kotlin
; M) T1 l9 H( i    │  │  │      │      │          Girl.kt1 {5 M* r% `  G: r, }
    │  │  │      │      │          Main.kt
8 c8 C* I" ]: Z, f    │  │  │      │      │          ( N) u8 C$ n7 b6 E% r; Z
    │  │  │      │      └─test# [% [8 F, \6 S5 ]8 N
    │  │  │      │          └─kotlin
' W5 o- e5 m9 C" [& N2 {, M    │  │  │      │                  TestGirl.kt
& v) r) u( B2 a* d% `    │  │  │      │                  
' _/ r: v- Z& w2 B- N# o. C    │  │  │      ├─GradleDemo11_task_exptension
9 T% I7 n$ A+ A- m2 t8 m* \& A) {    │  │  │      │  │  build.gradle.kts0 Q! R# Q' @5 a1 i
    │  │  │      │  │  settings.gradle3 l; b& w' s$ v- K5 N& S: B
    │  │  │      │  │  
; e' i- e9 L5 U! K    │  │  │      │  ├─.gradle
& Q! j: Q" q9 o; X: o( |    │  │  │      │  │  ├─4.1
( r0 F! n* x9 I/ E/ D/ F: s' r' U7 J1 Q# K    │  │  │      │  │  │  ├─fileChanges
8 }6 V$ Z( ~3 V8 x    │  │  │      │  │  │  │      last-build.bin6 x* @+ g- m9 W+ t
    │  │  │      │  │  │  │      ; K5 c/ M3 p3 z( u& x# _$ M
    │  │  │      │  │  │  ├─fileHashes% Z6 o- J( f/ |0 N% \& N) V3 `
    │  │  │      │  │  │  │      fileHashes.bin5 h  g5 v" Q  q# I7 P
    │  │  │      │  │  │  │      fileHashes.lock: H, B1 C# C& T6 ]' W
    │  │  │      │  │  │  │      9 h+ \5 r3 }8 n) t+ S& V$ a& \8 t
    │  │  │      │  │  │  └─taskHistory+ Q2 a4 w5 P8 {; _9 q; p5 Q
    │  │  │      │  │  │          fileSnapshots.bin
$ X% p1 l2 O& t  h& a7 ~* A+ G    │  │  │      │  │  │          taskHistory.bin/ _. c* l5 z, ?. p9 Q
    │  │  │      │  │  │          taskHistory.lock3 Y- x' T7 P3 t7 T
    │  │  │      │  │  │         
8 _& S) x; l& z    │  │  │      │  │  └─buildOutputCleanup, e& f7 Y) f  [; W
    │  │  │      │  │          built.bin
; Z0 Y9 V$ O# m3 d1 q2 Y" ]$ r    │  │  │      │  │          cache.properties
6 ^% m! _, O) n( J& l    │  │  │      │  │          cache.properties.lock
5 @' J3 I1 W3 \7 v5 @& G* b    │  │  │      │  │         
# U3 m0 c, V2 Z8 N    │  │  │      │  ├─.idea8 c- u4 j+ J- m3 n
    │  │  │      │  │      encodings.xml
" _) G3 X; d/ V; B0 C6 ^    │  │  │      │  │      gradle.xml# D# `% c- O8 O$ ?
    │  │  │      │  │      misc.xml
1 x; c; o& a. {8 ~4 k6 B0 E    │  │  │      │  │      workspace.xml
" s: a% q  x+ t* x* f8 ?5 t    │  │  │      │  │      
4 Q- l& Y, ]  ]# \9 n! y7 g# M    │  │  │      │  └─src7 M" |/ r& \% y  z/ e( W& Y7 G
    │  │  │      │      └─main
: Q5 k0 a3 e1 D* w9 [/ J' `    │  │  │      │          └─java: E! y, n1 p  Z, C2 H
    │  │  │      │                  Haha.java/ q( {# p- I7 v- l- l; [, K, j( h
    │  │  │      │                  Main.java2 X7 k  B$ n0 L( F; i$ E
    │  │  │      │                  Test.java
. E- ?! G* z% J4 p    │  │  │      │                  
- w6 U* v/ I$ t  I2 c2 W. M    │  │  │      ├─GradleDemo12_mul_module- d/ k% K1 M% w. C- ?0 q* [
    │  │  │      │  │  build.gradle.kts
" S/ M. |, c* ~4 {    │  │  │      │  │  settings.gradle
, H6 J; `# q6 v/ v& N- C, O    │  │  │      │  │  
0 z8 Q  p! _5 S) U    │  │  │      │  ├─.gradle
- G! n' G5 ?$ O! h* S    │  │  │      │  │  ├─4.1
7 U- o2 P+ h% y0 A) g    │  │  │      │  │  │  ├─fileChanges
6 `  K" [" |) U2 v4 H' {7 q: E    │  │  │      │  │  │  │      last-build.bin
3 b" G5 D- `' `+ {( c    │  │  │      │  │  │  │      
( R8 r. `  f. N; J) A/ |' ]7 [    │  │  │      │  │  │  └─fileHashes) f- s7 C( N# D6 S) h" \
    │  │  │      │  │  │          fileHashes.bin$ H* K# w3 x4 U0 q( g
    │  │  │      │  │  │          fileHashes.lock, w) y% c0 U9 W8 C9 u/ ]' T
    │  │  │      │  │  │         
6 ~+ P+ d+ B, Y( t0 \( V' [    │  │  │      │  │  └─buildOutputCleanup
: ^9 G+ [8 i9 j2 g4 l    │  │  │      │  │          built.bin
7 K1 x: R+ @8 J+ c# z' P7 a    │  │  │      │  │          cache.properties
& h: j$ Y. Y# z, ^/ o, N    │  │  │      │  │          cache.properties.lock: ?; G1 x& s3 }; \! S9 ]% e9 a
    │  │  │      │  │          , V3 n- K+ {$ i+ |% p/ `2 G
    │  │  │      │  ├─.idea( p& t9 |* D" K8 B/ c
    │  │  │      │  │  │  encodings.xml
: N& L. [7 L$ Z4 U2 j- x2 }0 n    │  │  │      │  │  │  gradle.xml
7 x. x& a1 _, Y, H& |    │  │  │      │  │  │  misc.xml
$ [; J$ A# L; i; ]4 Z5 r    │  │  │      │  │  │  workspace.xml& F' Q5 H0 [  H0 g7 T" v
    │  │  │      │  │  │  
  s$ d* {. Y" T' J$ j3 e; b    │  │  │      │  │  └─modules" o7 ~7 p9 c( ^" f# t' o; Y
    │  │  │      │  │      │  GradleDemo12_mul_module_main.iml
- f; _+ t1 Z! m1 J4 D% C    │  │  │      │  │      │  GradleDemo12_mul_module_test.iml1 B8 A7 O& b' B
    │  │  │      │  │      │  % g; W: v- i% B- n7 f5 o" f, p) {
    │  │  │      │  │      ├─App
2 E( J+ [7 `' g! x: e. i" }- K- P' o    │  │  │      │  │      │      App_main.iml
3 y0 l( D0 }) {1 W+ {    │  │  │      │  │      │      App_test.iml
+ p* i& f2 K- X7 Q3 s    │  │  │      │  │      │      
% S0 g( u6 X6 h    │  │  │      │  │      └─Core
6 R7 a/ n) d7 A. {$ |    │  │  │      │  │              Core_main.iml
* A6 i$ H# S: M" y    │  │  │      │  │              Core_test.iml
4 b; D6 O/ H% Y" r    │  │  │      │  │              
, i, N% I. b) I5 Y& @8 ]4 }    │  │  │      │  ├─App
: ?$ d, P7 C7 t    │  │  │      │  │  │  build.gradle.kts
' t' s" r) v. b; Z    │  │  │      │  │  │  1 }% ]6 U; F1 G3 b* v% e
    │  │  │      │  │  ├─out' M$ h3 _, U, f
    │  │  │      │  │  │  └─production1 T$ G* U' {: k4 Y) V6 C
    │  │  │      │  │  │      └─classes. e9 \' e: v( z
    │  │  │      │  │  │          │  MainKt.class: j2 ]- p: v  F
    │  │  │      │  │  │          │  3 Z$ `$ f5 ^% ?( r' U, {
    │  │  │      │  │  │          └─META-INF
/ {% w! L, A$ F8 D    │  │  │      │  │  │                  App_main.kotlin_module
. K% l( L+ z5 @    │  │  │      │  │  │                  
/ ?* ^# N! r# x; J    │  │  │      │  │  └─src$ B( w# _$ D' A7 d( R
    │  │  │      │  │      └─main6 ~5 L: \- m1 O" [
    │  │  │      │  │          └─kotlin' d& N. S8 F$ M9 H( j7 S: d
    │  │  │      │  │                  Main.kt
, z% L7 p' H: x5 |    │  │  │      │  │                  
, h( y  @& {  d2 O$ v' P    │  │  │      │  ├─build0 ]. H9 ~; S1 I) t% c
    │  │  │      │  │  └─kotlin-build% e0 ?+ ?0 {6 k, y- ^/ w8 B/ d
    │  │  │      │  │          version.txt! j; i( \: M0 ]% g& T1 k% ^
    │  │  │      │  │          " Y& `( ~$ c4 ?4 ~* ^4 p2 K
    │  │  │      │  └─Core* C3 c5 o1 {' D1 c. \; ^
    │  │  │      │      │  build.gradle.kts
5 c( w5 o7 D) m7 N    │  │  │      │      │  
2 C% J  g( k6 O* l    │  │  │      │      ├─out6 b/ q7 ]3 ?4 Z+ S: `( g
    │  │  │      │      │  ├─production
2 R* V; U; b6 J6 C$ Q    │  │  │      │      │  │  └─classes, I4 y( l6 q4 K. `$ e  H
    │  │  │      │      │  │          NetUtils.class& d- |; v# O# y* l9 a5 V6 S
    │  │  │      │      │  │          1 |/ n. }' S+ q' m
    │  │  │      │      │  └─test" b7 z! d: w* ~2 t
    │  │  │      │      │      └─classes9 k8 ?9 r, u4 {
    │  │  │      │      │              TestNetUtils.class7 k6 ~  g- Y$ [) v
    │  │  │      │      │              
+ w9 B3 d  t$ R; ^( `% c& N8 a    │  │  │      │      └─src
' g8 r2 g+ m' o  e2 t    │  │  │      │          ├─main+ J% U& p  |" ]5 B# a
    │  │  │      │          │  └─kotlin
/ [- A" \3 Z3 A& t6 t- ]    │  │  │      │          │          NetUtils.kt# y$ Q9 N. `: S  T: M" i7 b3 N& s6 U
    │  │  │      │          │          + W2 R5 _5 }4 w- a5 P
    │  │  │      │          └─test4 @5 W5 p2 F1 m0 ]
    │  │  │      │              └─kotlin
3 q* v  ~0 D- x. o5 L9 \: E( Y: [    │  │  │      │                      TestNetUtils.kt
1 I) w( p  U& ?    │  │  │      │                     
  p; W! w& m; ~0 D    │  │  │      ├─GradleDemo_conflict_depdence
2 ]0 `4 X" \! c1 a* F/ d& X    │  │  │      │  │  1.jpg6 A* d' m# l; V5 r4 |
    │  │  │      │  │  2.jpg' B' R3 k, a5 v# R) j) ]: m& {  x9 l
    │  │  │      │  │  3.jpg% L. U0 J7 u1 y$ _4 m( j# ]6 X0 Q
    │  │  │      │  │  4.jpg
8 ^* o5 T0 y: k" c# j8 }# Q* r    │  │  │      │  │  5.jpg% @. `4 [$ P( P% e- ]$ x+ b; t
    │  │  │      │  │  build.gradle.kts$ Z3 x3 |* v+ J( _: T
    │  │  │      │  │  settings.gradle
9 T8 z5 |5 t/ \" v    │  │  │      │  │  
; E: l8 O+ P! }/ Y# r+ @    │  │  │      │  ├─.gradle
+ ]2 J: o/ @& V3 ]# s    │  │  │      │  │  ├─4.1
6 u6 l* V; r. y6 e- V% s    │  │  │      │  │  │  ├─fileChanges8 y6 D8 s8 @2 I% \# v0 b
    │  │  │      │  │  │  │      last-build.bin" s8 A7 o0 C* o2 V* H1 B0 x. U& P/ e, a
    │  │  │      │  │  │  │      
) I  w5 r. P4 m, m! u* d    │  │  │      │  │  │  └─fileHashes8 t4 J9 c$ R8 J: R3 ^2 n
    │  │  │      │  │  │          fileHashes.bin% Q* n* @! ~! y
    │  │  │      │  │  │          fileHashes.lock! Z* v4 p/ G+ z% G8 U
    │  │  │      │  │  │          . |- m1 @# y! y
    │  │  │      │  │  └─buildOutputCleanup
# X2 L3 ^+ F3 w  m3 R! N    │  │  │      │  │          built.bin7 A7 R! ]- \3 Q4 O
    │  │  │      │  │          cache.properties3 ?( U/ u4 e: X+ T$ U- N3 w3 S
    │  │  │      │  │          cache.properties.lock
/ {, S! n' e4 ~# T8 |! g    │  │  │      │  │         
: [4 N! n: s" V# b* Z8 p    │  │  │      │  ├─.idea
* U/ p! h. P8 e& Z5 u- a- A. V5 m; G    │  │  │      │  │  │  .name- \" @, P9 g' Q. Q# h! ^& M
    │  │  │      │  │  │  encodings.xml' }2 {+ r4 b0 x. R2 s1 |% x# E. }( F
    │  │  │      │  │  │  gradle.xml# S2 k1 o5 A6 Q+ Y2 O" \
    │  │  │      │  │  │  misc.xml0 h2 n3 m$ F( s$ D5 H
    │  │  │      │  │  │  workspace.xml
  L2 G* A. b& |0 y0 s    │  │  │      │  │  │  
" m6 ]1 g/ \6 a) C% v; L    │  │  │      │  │  └─modules
, y* o. R5 o- X& n3 R5 \: e    │  │  │      │  │          GradleDemo_GirlDownloader_main.iml
$ ]9 j: ?& G. X4 A4 {$ o    │  │  │      │  │          GradleDemo_GirlDownloader_test.iml& U1 `2 }5 ]9 a" I& w0 x9 ^  S
    │  │  │      │  │         
3 W; z0 Z6 @- q; ~( U    │  │  │      │  ├─build
' q) @0 c  M# K( G" k    │  │  │      │  │  └─kotlin-build6 }7 }. o# e/ a0 k; f
    │  │  │      │  │      └─caches
, A! s" ?  B- d    │  │  │      │  │              version.txt
2 k' p$ B: I, m! A; V4 D5 p1 i    │  │  │      │  │              / a4 Z) n( q' `3 @) H1 L4 q+ c7 u
    │  │  │      │  ├─out
9 Q9 \% C" I* W    │  │  │      │  │  └─production' ?1 B, a$ |/ x: ?+ i. _7 \2 a
    │  │  │      │  │      └─classes7 ^6 k3 J# l$ I
    │  │  │      │  │          │  GirlDownloaderKt.class
& v% v# G3 ]' d4 t' {' l& ^+ p    │  │  │      │  │          │  . Z5 L( k# n1 A! Q" O6 d/ e
    │  │  │      │  │          └─META-INF
6 K' q8 z' F. G2 {( u5 L0 _    │  │  │      │  │                  GradleDemo_GirlDownloader_main.kotlin_module
8 l  P1 S# F# }% j- k0 ]3 C8 Y    │  │  │      │  │                  
* c* z6 k& v+ t4 H+ \, W) K    │  │  │      │  └─src
* A' s$ A- N7 O    │  │  │      │      └─main
- M1 o8 I$ o( p# ~& q    │  │  │      │          └─kotlin7 z" y7 J( \3 ^) M" O% n4 V% v$ Q
    │  │  │      │                  GirlDownloader.kt4 ~+ a$ f5 ^, ]' v
    │  │  │      │                  3 g% o2 V6 I6 o- d$ ~; i8 H
    │  │  │      ├─GradleDemo_GirlDownloader) z1 f* ?, Q- p- K9 i
    │  │  │      │  │  1.jpg
- W1 _& P- Q4 F2 A# b2 n    │  │  │      │  │  2.jpg
" a/ r1 C& M4 T% ~. Q2 |8 E+ G    │  │  │      │  │  3.jpg4 i. t# r( `5 p
    │  │  │      │  │  4.jpg
. x$ V" r* Z) S9 o' ^) K' ]    │  │  │      │  │  5.jpg
# Q  J9 L1 ^0 U' {; W1 x8 p    │  │  │      │  │  build.gradle.kts
. ]% ]9 D9 D' f; [- p+ O) m8 o! I    │  │  │      │  │  settings.gradle
. o% d. H, W$ u9 Q    │  │  │      │  │  7 |' g  v  v( m
    │  │  │      │  ├─.gradle
2 X  K' @- T8 R7 p    │  │  │      │  │  ├─4.1
& s/ ]& z/ D" l& G5 G# E' B( h$ p    │  │  │      │  │  │  ├─fileChanges
4 q7 H/ \' r4 W: B    │  │  │      │  │  │  │      last-build.bin
# p- D& w9 B4 r, I$ s; U& _    │  │  │      │  │  │  │      
) Q9 v7 A/ W9 C    │  │  │      │  │  │  └─fileHashes1 V( j; D) A7 \) h
    │  │  │      │  │  │          fileHashes.bin- `: D: Z; l* V6 o6 n
    │  │  │      │  │  │          fileHashes.lock  M# {# [" w- d  g! `, ^6 d
    │  │  │      │  │  │          9 E5 F3 U$ A+ d3 l( u  G" ?0 C
    │  │  │      │  │  └─buildOutputCleanup
* Z5 y* j2 {5 I/ @3 j6 }1 I0 J    │  │  │      │  │          built.bin, [4 h) n. s/ J3 B9 V  `( ~
    │  │  │      │  │          cache.properties
0 R7 h, j0 }6 \0 W* U2 g    │  │  │      │  │          cache.properties.lock
* F& l; D8 T0 N    │  │  │      │  │            ~( E* Q: s4 M; Z7 ?7 |% K$ M7 ~
    │  │  │      │  ├─.idea& W4 G, o) k: G- i
    │  │  │      │  │  │  encodings.xml# r% Y7 T- w- Y4 U1 a/ Y1 v
    │  │  │      │  │  │  gradle.xml: P+ a' `, y, |
    │  │  │      │  │  │  misc.xml
% V8 y7 t1 D8 s* {4 i    │  │  │      │  │  │  workspace.xml
9 M/ _$ l( v3 Y- V5 ^7 w2 l    │  │  │      │  │  │  
5 M6 y& b. Y8 J( {: q  b6 v0 U4 o    │  │  │      │  │  └─modules
& b5 M3 B+ x+ `: K1 @$ y/ F    │  │  │      │  │          GradleDemo_GirlDownloader_main.iml: P5 C7 u! I: f9 ^% C/ M  n
    │  │  │      │  │          GradleDemo_GirlDownloader_test.iml
* Z- F6 G$ L8 b" y- b6 P( x    │  │  │      │  │         
, q1 G0 J4 p) W% P    │  │  │      │  ├─build
: n5 ?. ~+ R2 H" C( e$ F: v' C    │  │  │      │  │  └─kotlin-build
, ?* S: b) a1 u/ s* X* Z    │  │  │      │  │      └─caches0 Q, o; _$ `- i2 ]! N5 @) X8 Y9 |6 G
    │  │  │      │  │              version.txt
- V1 @" R$ q( e! n    │  │  │      │  │              # z1 S* ~9 I' V& q0 z
    │  │  │      │  ├─out
/ N4 M1 S7 @) d) _# \    │  │  │      │  │  └─production2 `4 G0 r4 L- H+ v. a
    │  │  │      │  │      └─classes
3 s% y- F8 a: U    │  │  │      │  │          │  GirlDownloaderKt.class
5 y9 e: r: f/ `" [. }6 t    │  │  │      │  │          │  % b: K( f- c! L3 H
    │  │  │      │  │          └─META-INF3 R8 C7 J8 A8 f3 D$ h: p& ~- s
    │  │  │      │  │                  GradleDemo_GirlDownloader_main.kotlin_module
, R: M( Y7 d. c2 R, l    │  │  │      │  │                  
# h7 B. K% M. R( v# m' U+ p    │  │  │      │  └─src+ B3 {; i- ^) K) S1 r
    │  │  │      │      └─main& V7 r: @: z& C' ?$ c
    │  │  │      │          └─kotlin
, i% Z5 d; d0 _7 z6 b    │  │  │      │                  GirlDownloader.kt
; Q& x- g' q1 ?, }8 |! {    │  │  │      │                  
4 m0 _; b' `0 p- R    │  │  │      ├─GroovyGradle
$ F- N; [6 q8 z, M% c$ ]0 K3 z    │  │  │      │  │  build.gradle
5 L7 y  S- {3 i, k    │  │  │      │  │  gradlew
! l# F1 ^' C/ \9 w7 M    │  │  │      │  │  gradlew.bat$ S! q8 ?1 P- N; K! {- f
    │  │  │      │  │  settings.gradle9 D. P6 ^6 x  o# @- g
    │  │  │      │  │  * G$ i0 R5 \; s$ e
    │  │  │      │  ├─.gradle
8 S% P% k# I: e4 R, m" O. J    │  │  │      │  │  ├─4.4: S" a; e8 \. h' G0 B
    │  │  │      │  │  │  ├─fileChanges
9 R+ D! |9 Y. y8 m    │  │  │      │  │  │  │      last-build.bin
8 A4 n( a8 T/ A: H+ J    │  │  │      │  │  │  │      ' Y% `, c+ z& m! _
    │  │  │      │  │  │  ├─fileHashes
. X* x2 {5 w6 `    │  │  │      │  │  │  │      fileHashes.bin
" U: e7 h7 S& R1 d    │  │  │      │  │  │  │      fileHashes.lock9 I1 L0 D( {& m4 s  _
    │  │  │      │  │  │  │      ; [8 s% s4 l$ B: d
    │  │  │      │  │  │  └─taskHistory# D4 h' j5 n$ e
    │  │  │      │  │  │          taskHistory.bin
' |1 V! E  K$ D    │  │  │      │  │  │          taskHistory.lock, g$ C8 y" o: A9 Q7 v
    │  │  │      │  │  │          6 s- ]/ z9 v* V. H
    │  │  │      │  │  └─buildOutputCleanup
2 Q" k% R% V$ q* s2 Q    │  │  │      │  │          buildOutputCleanup.lock
3 J6 v7 A6 f) ~- }9 o  z    │  │  │      │  │          cache.properties0 j# M4 f4 G  T( W& {4 ~$ a
    │  │  │      │  │          outputFiles.bin
0 j) t; N  s3 s; V2 G4 M4 A# e    │  │  │      │  │          ; t7 _3 V. O6 o' Y  s
    │  │  │      │  ├─.idea
" K2 C2 r. {" W! D+ a& G% A" q    │  │  │      │  │      encodings.xml* m* O/ w% B8 |. P" k+ Z. d$ O
    │  │  │      │  │      gradle.xml3 H+ L) l7 j* A/ E
    │  │  │      │  │      misc.xml8 y9 J9 l0 `: F7 l
    │  │  │      │  │      workspace.xml) w8 ~2 l+ Y1 Q, i* o% }
    │  │  │      │  │      
: N# G0 u  ~; N6 r7 y( s: o, a; x# p- `    │  │  │      │  └─gradle
5 F+ ?/ q* `$ ]+ N) D+ v. e    │  │  │      │      └─wrapper) C: L! K( D3 X( G7 X* A
    │  │  │      │              gradle-wrapper.jar9 K4 ~# E0 e5 P2 a
    │  │  │      │              gradle-wrapper.properties
9 z7 M: U% d4 e% w8 X/ q/ L5 u2 D    │  │  │      │              
5 |# x# k/ y) A+ U, U    │  │  │      ├─GroovyGradle02
- f% j  Y4 z8 |  y    │  │  │      │  │  build.gradle
( B; M$ y9 m- U. e$ V2 G5 f# g    │  │  │      │  │  gradlew
: I, X0 W* G$ {/ S! x; M    │  │  │      │  │  gradlew.bat0 t3 ?; f- \3 j) P
    │  │  │      │  │  settings.gradle
: K4 \$ Y$ q+ ]    │  │  │      │  │  
* i( D1 y$ b. C2 E/ a    │  │  │      │  ├─.gradle6 l7 R2 Y% ?, ~1 s
    │  │  │      │  │  ├─4.4& @5 w& K' F( B- K; Z  y
    │  │  │      │  │  │  ├─fileChanges2 Z* C4 h! Q# G( a! Z
    │  │  │      │  │  │  │      last-build.bin+ b  \7 z5 B; e2 J2 R/ e$ z- D8 q
    │  │  │      │  │  │  │      2 Z  `/ }4 s9 a+ C$ ]
    │  │  │      │  │  │  ├─fileHashes7 m2 l2 {# J" I! w! e, ~
    │  │  │      │  │  │  │      fileHashes.bin
$ ?* k1 c7 X8 |% X+ K, O7 z) \    │  │  │      │  │  │  │      fileHashes.lock( f- C: n$ O6 ?' g% ~  I4 k
    │  │  │      │  │  │  │      ! W7 p0 G2 E# N+ |/ {% [3 E
    │  │  │      │  │  │  └─taskHistory
  r/ V( H, n; i! P/ x# _/ H/ x9 v    │  │  │      │  │  │          taskHistory.bin; B2 ?/ ?$ o0 r+ t8 ]8 {; i
    │  │  │      │  │  │          taskHistory.lock
$ `# a3 X3 q& y* ?  w    │  │  │      │  │  │         
. v6 x" y6 a8 _9 ^4 }. j    │  │  │      │  │  └─buildOutputCleanup
+ ?' U2 K8 |& S. y7 r3 b( r8 X    │  │  │      │  │          buildOutputCleanup.lock4 S/ ^0 a% H( z: p  v+ A4 }8 T
    │  │  │      │  │          cache.properties
7 R0 [$ o: S7 C- \! H+ E    │  │  │      │  │          outputFiles.bin8 `2 r6 |/ ?/ n: [+ j4 o. F
    │  │  │      │  │          7 z" ?) D8 ~! }2 |
    │  │  │      │  ├─.idea# O) f. e% D/ t* Y) _+ B
    │  │  │      │  │  │  encodings.xml
7 `8 A5 Y; [8 R* J* L    │  │  │      │  │  │  gradle.xml' v1 H' P* T, o+ B+ O
    │  │  │      │  │  │  misc.xml+ t, B# ^9 q0 j
    │  │  │      │  │  │  workspace.xml' {0 H* I; v9 n: ?
    │  │  │      │  │  │  * y4 [( K1 w& J* X4 y
    │  │  │      │  │  └─modules
9 I4 ]. h) g$ q9 @    │  │  │      │  │          GroovyGradle02_main.iml
4 B: E* o5 ~/ d    │  │  │      │  │          GroovyGradle02_test.iml0 A* h7 W( n: e5 C1 ~
    │  │  │      │  │          ! a3 y; \% C& U+ U6 t
    │  │  │      │  ├─build3 g0 G3 p5 z0 L' p! {0 S% k
    │  │  │      │  │  └─kotlin-build0 z% C0 N' ?0 t
    │  │  │      │  │          version.txt2 M! V8 K! V) Y4 x  S
    │  │  │      │  │          " F' Z9 x% {# Y  ?
    │  │  │      │  └─gradle
* `; u, i. X6 M8 V  f% y    │  │  │      │      └─wrapper
5 q/ x5 y& ?: i. I" l& |    │  │  │      │              gradle-wrapper.jar
7 r5 n7 ~8 i4 u    │  │  │      │              gradle-wrapper.properties
$ }2 E: ]  O  U, s    │  │  │      │              / {* e& S9 v5 `) O2 s8 J! _
    │  │  │      └─ModuleDemo* h( _  I4 W1 K0 j8 F$ c
    │  │  │          │  build.gradle.kts
7 U8 A+ @6 S: X3 z5 v    │  │  │          │  settings.gradle2 y: b2 @! S/ I( P4 g1 V
    │  │  │          │  
( s' u* r% U7 s: r! T2 c% h    │  │  │          ├─.gradle& h- c6 r) {+ \6 B5 @) W% n7 f
    │  │  │          │  ├─4.1  ^+ `- o9 h2 q" M( p
    │  │  │          │  │  ├─fileChanges
7 E) ~$ L2 x  G* f4 Z0 ?. t    │  │  │          │  │  │      last-build.bin
1 s, H+ m- O8 U- @    │  │  │          │  │  │      ! Q) w# M, d& e6 {5 J
    │  │  │          │  │  ├─fileContent
5 i" y  o. y- r1 f$ I: g    │  │  │          │  │  │      fileContent.lock2 s3 R. Y- H4 B& a( }, ?: T4 ?
    │  │  │          │  │  │      
" n7 h1 s; X, z8 E    │  │  │          │  │  ├─fileHashes
4 J3 i+ @& `* j' |) f' w0 v+ j3 k    │  │  │          │  │  │      fileHashes.bin+ c! @  c$ A, j, `9 W
    │  │  │          │  │  │      fileHashes.lock- u/ W' n" e* l8 o# K
    │  │  │          │  │  │      resourceHashesCache.bin
9 l/ O" B1 c& H  c6 }1 z. o2 E7 a    │  │  │          │  │  │      
, `3 N* l8 A+ ~. C    │  │  │          │  │  └─taskHistory) W4 F& t2 A: [2 z6 t& s
    │  │  │          │  │          fileSnapshots.bin
/ N, C, }1 m+ F7 _    │  │  │          │  │          taskHistory.bin
! T- ?4 N6 f. D    │  │  │          │  │          taskHistory.lock
7 B. Z  d2 B- ^* U    │  │  │          │  │         
5 z$ G/ W6 K9 a. `' v    │  │  │          │  └─buildOutputCleanup
& x+ Z# |( _% j) d4 C5 d    │  │  │          │          built.bin8 i7 h+ t6 g2 ^3 w  r
    │  │  │          │          cache.properties
0 ?5 O! W6 k/ @5 |' k  M, s( K% G    │  │  │          │          cache.properties.lock# u+ d. J; U* L2 p& x3 ?. U
    │  │  │          │          " [7 i1 [$ s7 m2 X. d8 _. B' `
    │  │  │          ├─.idea
0 R7 \4 D% _5 p8 {8 f7 R" J- E    │  │  │          │  │  compiler.xml: d/ r5 _7 o: |3 v
    │  │  │          │  │  encodings.xml
2 n- X+ B( z; i/ X/ a    │  │  │          │  │  gradle.xml
) {4 R; _, m- U0 v* ?    │  │  │          │  │  kotlinc.xml$ _7 ~& X8 O/ u7 I
    │  │  │          │  │  misc.xml! Y8 t( U$ S" T9 d, R
    │  │  │          │  │  modules.xml# x2 U: z" j0 N; D/ }
    │  │  │          │  │  uiDesigner.xml
6 f( A* X$ X$ d+ f2 z    │  │  │          │  │  workspace.xml. R% I( E( W$ A  w
    │  │  │          │  │  ; y0 C' `$ Y3 V7 n, o: S5 ~" n1 m
    │  │  │          │  ├─libraries. F% Z2 R# w6 ]% f# C
    │  │  │          │  │      Gradle__junit_junit_4_12.xml/ l$ K3 `& ^! ]- q9 n7 q
    │  │  │          │  │      Gradle__log4j_log4j_1_2_17.xml6 o4 X& D; x# b" _' Y
    │  │  │          │  │      Gradle__org_hamcrest_hamcrest_core_1_3.xml* \0 r' T& `+ [' d/ B2 s  r2 b
    │  │  │          │  │      Gradle__org_jetbrains_annotations_13_0.xml
- }* d8 T2 `8 v    │  │  │          │  │      Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_1_3_2.xml' u& R- P; Z1 R6 f$ A" F
    │  │  │          │  │      * r" n8 @% Y+ u5 |7 E, j0 c
    │  │  │          │  └─modules. g1 a/ S# V, Q; {: }" v; i; K  x" A
    │  │  │          │      │  App.iml  N% {; \- T9 U4 a) y" a9 K
    │  │  │          │      │  Core.iml
8 @, c& K  n3 |* v0 g    │  │  │          │      │  ModuleDemo.iml
! ]- Y  R# \6 _    │  │  │          │      │  ModuleDemo_main.iml
2 o8 c/ z+ i( ^/ d/ P) I    │  │  │          │      │  ModuleDemo_test.iml
# v" f5 T( s0 T9 p$ c% b( d5 f    │  │  │          │      │  Third.iml
8 @0 b$ E: X8 J" z0 f( o$ E/ m    │  │  │          │      │  
# h6 W( X5 p* e+ g0 l3 X    │  │  │          │      ├─App
* E# ?0 L5 @# |% ]4 p5 V6 F9 h    │  │  │          │      │      App_main.iml
. @7 o1 _! b0 |& F    │  │  │          │      │      App_test.iml/ _8 X0 t* x5 F: X& Y. x3 v7 f
    │  │  │          │      │      6 @9 S9 O0 T+ F) L$ p* l5 ?% A
    │  │  │          │      ├─Core# g+ {7 ?0 @8 c4 _
    │  │  │          │      │      Core_main.iml: W) c+ q  |( t8 v( ]
    │  │  │          │      │      Core_test.iml0 M5 p2 F# k$ q; E+ j
    │  │  │          │      │      
$ B7 q/ w  ^' I4 j, N- Q% }! k    │  │  │          │      └─Third
* I# w& R5 [9 a    │  │  │          │              Third.iml
! X- I7 _0 U! R% e3 W    │  │  │          │              Third_main.iml' Z& d3 K( |# \2 G5 R- J
    │  │  │          │              Third_test.iml
* }) u! _% h/ A6 |* ]( `1 f6 s1 d    │  │  │          │              
" b4 x; u* {  i# k5 h- Z    │  │  │          ├─App% V0 ]+ T, y1 E( u; ]
    │  │  │          │  │  build.gradle.kts
, D/ W( `4 I* \; A. R# f2 Q5 h: ]    │  │  │          │  │  
3 n2 i0 a: T& \. [$ I    │  │  │          │  ├─build
! `& \4 g& G$ N& w. [: @" f    │  │  │          │  │  ├─classes
0 ~' X% d, @6 @    │  │  │          │  │  │  └─kotlin
5 e9 e' r% x! M. g# l6 q: s& y    │  │  │          │  │  │      └─main/ G) K+ c% A) t2 Y
    │  │  │          │  │  │          │  HelloWorldKt.class
" @* g, p. m' w$ w5 K    │  │  │          │  │  │          │  # A" }( O9 n# R3 w; D
    │  │  │          │  │  │          └─META-INF
' s3 }& E5 `$ T4 X    │  │  │          │  │  │                  App.kotlin_module5 \, ~: Z! n) E- {& f
    │  │  │          │  │  │                  ( q. r' ?* n: E8 k0 Z( I
    │  │  │          │  │  ├─distributions
) ]( S/ `' i0 U    │  │  │          │  │  │      App-1.0-SNAPSHOT.zip
# Z4 z0 F# i+ Y) W% J& d8 A    │  │  │          │  │  │      6 [8 V/ g# x( B+ x0 W7 I
    │  │  │          │  │  ├─kotlin: V$ n  Z4 s! T" u0 S4 j/ Y3 D. o% i
    │  │  │          │  │  │  └─compileKotlin
" z: O6 T) i4 v' J7 T    │  │  │          │  │  │      │  build-history.bin6 p! q. ~: ]! }8 D7 \, G1 d
    │  │  │          │  │  │      │  data-container-format-version.txt
: Z- \3 a- }8 g7 k  q3 j    │  │  │          │  │  │      │  format-version.txt
5 |3 Y' Y: Y8 c6 [    │  │  │          │  │  │      │  gradle-format-version.txt
/ T5 c, t4 i/ Y  b2 {; N# }    │  │  │          │  │  │      │  last-build.bin0 @6 B3 j, Q- \0 I0 \2 T+ B& k5 S3 H
    │  │  │          │  │  │      │  4 v9 x  H0 f5 B& `! s
    │  │  │          │  │  │      └─caches-jvm/ y+ B+ U' h" l' C7 S! p9 @. S
    │  │  │          │  │  │          ├─inputs
  A# l3 y8 F( O; w3 ~( A    │  │  │          │  │  │          │      source-to-output.tab
; \( l8 Y! G8 R5 c- _3 T' M    │  │  │          │  │  │          │      source-to-output.tab.keystream
1 R$ u+ a" C4 k6 D8 w1 _    │  │  │          │  │  │          │      source-to-output.tab.keystream.len
' y3 O$ ^9 y1 H  _" A/ T; c1 Q    │  │  │          │  │  │          │      source-to-output.tab.len1 g# d  L' |' c. I
    │  │  │          │  │  │          │      source-to-output.tab.values.at
8 |6 Y6 c' u1 O6 L    │  │  │          │  │  │          │      source-to-output.tab_i' D$ t5 e) O2 b1 S- U8 O
    │  │  │          │  │  │          │      source-to-output.tab_i.len9 X0 t' s% r1 t4 W( G$ z( u
    │  │  │          │  │  │          │      
6 s) R8 |: X, S3 Y3 t, |: B$ n# u    │  │  │          │  │  │          ├─jvm
8 c. j' `6 R/ a9 W3 k. o    │  │  │          │  │  │          │  └─kotlin
( J: A7 _/ M' O' {! J( b% s    │  │  │          │  │  │          │          internal-name-to-source.tab# h( [( M( |9 z# o1 Y
    │  │  │          │  │  │          │          internal-name-to-source.tab.keystream
- Q* @. b$ K  \  ]9 I3 F3 w    │  │  │          │  │  │          │          internal-name-to-source.tab.keystream.len
+ F8 z8 }- t; ?! G# _1 F% d    │  │  │          │  │  │          │          internal-name-to-source.tab.len
  a' z: }, Z" e% `/ Y/ t    │  │  │          │  │  │          │          internal-name-to-source.tab.values.at4 H+ \0 o* u: O! x
    │  │  │          │  │  │          │          internal-name-to-source.tab_i
! P1 A) ~/ e) {1 w+ D+ G    │  │  │          │  │  │          │          internal-name-to-source.tab_i.len
7 E' q7 f+ g2 W- J    │  │  │          │  │  │          │          package-parts.tab/ o3 E6 H9 C9 h: V6 F3 _
    │  │  │          │  │  │          │          package-parts.tab.keystream
: a' [7 p1 a5 P    │  │  │          │  │  │          │          package-parts.tab.keystream.len
5 q$ K0 s$ D8 ]% F    │  │  │          │  │  │          │          package-parts.tab.len+ C" |* L& ?; ^$ c# K  K
    │  │  │          │  │  │          │          package-parts.tab.values.at9 M& Q) D! g. c. o& U
    │  │  │          │  │  │          │          package-parts.tab_i
; f  \: l1 A2 Z1 r6 l% g/ W    │  │  │          │  │  │          │          package-parts.tab_i.len
. y1 ^" r2 k' G! [5 p; x  ^( |3 c3 F    │  │  │          │  │  │          │          proto.tab9 d, T4 ~, G0 Q# M6 ~& \1 i3 J
    │  │  │          │  │  │          │          proto.tab.keystream
$ Z5 K& E$ D1 ~& L; F# u2 j    │  │  │          │  │  │          │          proto.tab.keystream.len3 v0 J# ?6 j. C( W" H' @9 J! l
    │  │  │          │  │  │          │          proto.tab.len) _% O1 s- m0 [/ R- R5 m2 T
    │  │  │          │  │  │          │          proto.tab.values.at; A+ I& M9 _6 r
    │  │  │          │  │  │          │          proto.tab_i4 k. b# Q# j  H+ @9 M* h
    │  │  │          │  │  │          │          proto.tab_i.len
5 ^# k$ L# Y: G9 ~& V- J    │  │  │          │  │  │          │          source-to-classes.tab/ z+ W! P8 c' S7 N2 [& K
    │  │  │          │  │  │          │          source-to-classes.tab.keystream" s! w. Z9 h2 z1 ]6 T" Z% [
    │  │  │          │  │  │          │          source-to-classes.tab.keystream.len+ Z3 o; |& s  N3 i) {) y+ w
    │  │  │          │  │  │          │          source-to-classes.tab.len
+ v' |) }3 h! [. c# `    │  │  │          │  │  │          │          source-to-classes.tab.values.at9 n, F4 i8 x* a  T4 C, R4 s, o
    │  │  │          │  │  │          │          source-to-classes.tab_i
& n# E& E; I+ _2 y4 A4 H8 N' q    │  │  │          │  │  │          │          source-to-classes.tab_i.len2 U. _% g" ^! G8 k% M
    │  │  │          │  │  │          │          1 z! o4 i8 E7 l/ e7 n
    │  │  │          │  │  │          └─lookups
2 C% E! ~6 X+ `    │  │  │          │  │  │                  counters.tab
( q! `$ @' K* Q$ e" V, r5 B% T    │  │  │          │  │  │                  file-to-id.tab
4 x4 l7 F7 i' D4 H! q9 c    │  │  │          │  │  │                  file-to-id.tab.keystream
! t- b, [  a7 O9 u+ F  w8 o    │  │  │          │  │  │                  file-to-id.tab.keystream.len' ]- P" m& a  S, i2 e2 E* H
    │  │  │          │  │  │                  file-to-id.tab.len5 Z1 M" M6 p" c& i. ~
    │  │  │          │  │  │                  file-to-id.tab.values.at7 h$ W* x5 t' ^( ~' O( K2 h
    │  │  │          │  │  │                  file-to-id.tab_i
4 @7 {; f7 p: K( V" v' z+ k6 E    │  │  │          │  │  │                  file-to-id.tab_i.len8 k% z* K1 b6 \; [3 u
    │  │  │          │  │  │                  id-to-file.tab
* T2 h0 B3 m0 B% `- K    │  │  │          │  │  │                  id-to-file.tab.keystream: p1 J$ Y" `7 L
    │  │  │          │  │  │                  id-to-file.tab.keystream.len
- U+ b( i  S& p6 R    │  │  │          │  │  │                  id-to-file.tab.len
6 h* P  d5 F- B4 d1 E    │  │  │          │  │  │                  id-to-file.tab.values.at
1 n" m, \* R1 e9 R" M& `    │  │  │          │  │  │                  id-to-file.tab_i
  e% F9 K3 T- V7 c7 {    │  │  │          │  │  │                  id-to-file.tab_i.len
- t" Y' K7 k# M% n& e6 v! l    │  │  │          │  │  │                  lookups.tab( q0 k3 U, }0 \( K4 j  l
    │  │  │          │  │  │                  lookups.tab.keystream
8 o0 u7 L2 ^1 B; M! ~    │  │  │          │  │  │                  lookups.tab.keystream.len8 |- X. ^; m# M3 u# n
    │  │  │          │  │  │                  lookups.tab.len% ]; n4 I. f) l; t" Y# m
    │  │  │          │  │  │                  lookups.tab.values.at( ^3 S& [* I1 g$ d, u9 T  Q
    │  │  │          │  │  │                  lookups.tab_i+ A5 J# w! \! u, [) ?* D+ y4 p
    │  │  │          │  │  │                  lookups.tab_i.len' ]" X& O3 _/ }# l. j' @. u+ h; |3 B
    │  │  │          │  │  │                  
" ~% M1 J% m9 E; g( {+ K    │  │  │          │  │  ├─libs4 u% H+ j& @/ {1 K/ s
    │  │  │          │  │  │      App-1.0-SNAPSHOT.jar
, Q% P+ M- r  L/ k5 X' \' M% A$ I. |# t    │  │  │          │  │  │      ( P7 S% e% I  O. n/ t" \
    │  │  │          │  │  ├─resources1 D/ O' D9 K8 T  W8 [& k" N
    │  │  │          │  │  │  └─main
9 i/ s7 i7 k5 F! i# H. W    │  │  │          │  │  │          log4j.properties$ e: p% v- {: W+ Q
    │  │  │          │  │  │          & s2 P" o9 q/ v% [4 M4 }
    │  │  │          │  │  ├─scripts
+ Y8 H# P, n1 e. Q0 K3 [- `    │  │  │          │  │  │      App
5 ?/ g# Y# q1 y. p  c    │  │  │          │  │  │      App.bat8 D3 [9 C4 b2 L
    │  │  │          │  │  │      & ~5 j/ D0 y, r$ x
    │  │  │          │  │  └─tmp
9 A% B6 V/ @) Z0 a1 F% [    │  │  │          │  │      └─jar
0 J! p* X2 P4 m2 ]- u    │  │  │          │  │              MANIFEST.MF" t% m6 p* ^; H% q8 _
    │  │  │          │  │              
$ G2 m" g) Q0 ~7 |6 @, H    │  │  │          │  ├─out* A& m* S7 i0 W4 [! i4 Q
    │  │  │          │  │  └─production
" b; x% r6 [, `. u/ X    │  │  │          │  │      ├─classes1 A: V+ G) w1 N9 K0 _
    │  │  │          │  │      │  │  MainKt.class# r+ `0 |2 ^+ z2 {0 k' |# {
    │  │  │          │  │      │  │  
6 y2 u- ?+ ^9 _0 \! g7 x) g0 o    │  │  │          │  │      │  └─META-INF
! h1 w% z5 g: f: d6 w    │  │  │          │  │      │          App_main.kotlin_module
1 C- t9 b0 ~, D! Q    │  │  │          │  │      │         
$ d# }4 U$ G, J. ]    │  │  │          │  │      └─resources
4 L6 q; \' n9 M$ L+ v$ c    │  │  │          │  │              log4j.properties8 D3 U; ?2 C" X( e
    │  │  │          │  │              
" p3 x( Z0 Y" ~$ }' D( U9 ^    │  │  │          │  └─src, i& h: n9 H8 Q2 o) b; f7 ]
    │  │  │          │      └─main
. ]9 Q4 @0 a) _    │  │  │          │          ├─kotlin! K6 n" U, L* N* ]  h
    │  │  │          │          │      Main.kt
: I3 @- A3 m0 f, i3 i6 R( Q    │  │  │          │          │      1 R$ n1 P% h, X! \
    │  │  │          │          └─resources* G5 U' I, \5 t( B1 |
    │  │  │          │                  log4j.properties
+ I- l5 d/ Z; d( ]3 H4 r+ u6 B    │  │  │          │                  
% @: p( d4 K8 T) a. G    │  │  │          ├─build% Y/ H+ O; |3 o. h' U
    │  │  │          │  └─kotlin-build* }/ C1 t/ p" w- ]+ n
    │  │  │          │          artifact-difference.tab8 Y4 y2 ~6 `& ]& i; B, Y: L6 |
    │  │  │          │          artifact-difference.tab.keystream0 x2 {5 n* _4 B, e% ^9 Q0 d
    │  │  │          │          artifact-difference.tab.keystream.len
4 `. P3 t5 ~! k5 b    │  │  │          │          artifact-difference.tab.len
& y. W1 [! R0 v* P1 z4 E    │  │  │          │          artifact-difference.tab.values.at
1 ?# \: J2 Z3 P# Y5 X3 f% n    │  │  │          │          artifact-difference.tab_i: |# I9 W2 m2 S" A1 q
    │  │  │          │          artifact-difference.tab_i.len7 j& S$ |8 U9 _/ ]! d
    │  │  │          │          version.txt6 q$ b* |# a$ ?, e% F/ ]
    │  │  │          │          8 \6 o6 P* V8 o# e  O. }8 P
    │  │  │          └─Core
, H2 c5 T5 c8 u    │  │  │              │  build.gradle.kts1 s% Q1 o. n" @" o* ^+ \
    │  │  │              │  
- h: O$ Q' c9 A6 o! w: Y5 s    │  │  │              ├─build
' H  Y( c' Y+ y% N6 J5 Z3 K( H3 k    │  │  │              │  ├─classes: J6 M: p) x  |! A8 W2 l
    │  │  │              │  │  └─kotlin
- Z+ D- ]. O& @+ @, \) w    │  │  │              │  │      └─main
; `( J4 I. c! o% }6 K8 i0 T, w    │  │  │              │  │              MessageService.class/ M8 Y$ s4 [2 |
    │  │  │              │  │              / I: a$ _4 k4 D) y4 C; W
    │  │  │              │  ├─kotlin* J8 G; \/ K. f6 o4 z
    │  │  │              │  │  └─compileKotlin
( d9 r& W8 m4 U! y( }" q    │  │  │              │  │      │  build-history.bin3 _' e' |5 n. ?0 n4 @- E) a9 T
    │  │  │              │  │      │  data-container-format-version.txt
# U2 z6 X  \/ n, \. S2 V# q/ Z# S7 ^    │  │  │              │  │      │  format-version.txt# I. c7 ~4 K  B! O6 v7 N% y- z
    │  │  │              │  │      │  gradle-format-version.txt
! A  Q7 O5 a" j2 `' q2 D* T( @8 @    │  │  │              │  │      │  last-build.bin6 _, x" T: @+ @
    │  │  │              │  │      │  - c$ J/ r  I$ Y1 `, v5 Z5 |% M: V! f
    │  │  │              │  │      └─caches-jvm
% c8 q8 D, F# D" _7 `4 L: w, ]    │  │  │              │  │          ├─inputs( y+ ]9 `" l4 G- V% g# J0 H
    │  │  │              │  │          │      source-to-output.tab5 t8 Q/ e5 ]1 n( \
    │  │  │              │  │          │      source-to-output.tab.keystream
8 Y( I) U% c$ V3 e) s% A, I    │  │  │              │  │          │      source-to-output.tab.keystream.len, j6 l& M/ G& t  c4 v7 f
    │  │  │              │  │          │      source-to-output.tab.len/ E- X  n* N; o8 h. V- z6 [$ h
    │  │  │              │  │          │      source-to-output.tab.values.at
, }. d1 S/ p* B/ A7 r    │  │  │              │  │          │      source-to-output.tab_i
; Q% `! d0 L7 ]    │  │  │              │  │          │      source-to-output.tab_i.len
7 O* p6 r0 i# b/ D# Z/ t; S    │  │  │              │  │          │      
: n2 |$ [$ ]# A0 y3 c2 p! S    │  │  │              │  │          ├─jvm3 W, p" q' M3 |0 ?
    │  │  │              │  │          │  └─kotlin
0 H7 i& j+ |0 G- I8 _    │  │  │              │  │          │          class-fq-name-to-source.tab
4 H" O' I; M* L. q0 G    │  │  │              │  │          │          class-fq-name-to-source.tab.keystream5 l. b5 ~/ H$ Z: n5 ^' @) j
    │  │  │              │  │          │          class-fq-name-to-source.tab.keystream.len
/ H$ F" x+ _4 L# I7 i: b. W% T    │  │  │              │  │          │          class-fq-name-to-source.tab.len
+ N9 Z9 }- E) M: ?+ {- G; u& Z    │  │  │              │  │          │          class-fq-name-to-source.tab.values.at7 O' E& S* `5 \; S6 w4 b& E0 [& W% s
    │  │  │              │  │          │          class-fq-name-to-source.tab_i, S: }# B4 U! ]. R; b: b$ x6 P
    │  │  │              │  │          │          class-fq-name-to-source.tab_i.len* F1 Z9 q; d. L
    │  │  │              │  │          │          internal-name-to-source.tab
1 S/ X8 }4 f1 G( v0 K& \3 L) B    │  │  │              │  │          │          internal-name-to-source.tab.keystream. t0 {" d9 Q% l* C) n
    │  │  │              │  │          │          internal-name-to-source.tab.keystream.len
8 S1 T$ t& E7 X9 K* K# M    │  │  │              │  │          │          internal-name-to-source.tab.len1 K. p8 K' j! s- ]
    │  │  │              │  │          │          internal-name-to-source.tab.values.at4 a1 I$ a2 s; _, v: y
    │  │  │              │  │          │          internal-name-to-source.tab_i
! r/ n9 y: [0 Z( D; L/ m/ ~    │  │  │              │  │          │          internal-name-to-source.tab_i.len
4 f$ H! V' t9 J8 L# O- q    │  │  │              │  │          │          proto.tab
4 B5 G7 h; v; J; f- c    │  │  │              │  │          │          proto.tab.keystream7 |: H4 b) \1 C/ T/ E$ C
    │  │  │              │  │          │          proto.tab.keystream.len
( k* \3 c1 m( D3 j- J; ^3 ~    │  │  │              │  │          │          proto.tab.len
" U9 a  s% h9 @. @7 a3 F. @3 e6 }    │  │  │              │  │          │          proto.tab.values.at
; U6 d# _+ t% @9 ]4 H    │  │  │              │  │          │          proto.tab_i- U  E9 j1 E# p- I% r; ?+ c
    │  │  │              │  │          │          proto.tab_i.len* s, H! y7 e. A1 ]( a
    │  │  │              │  │          │          source-to-classes.tab2 _! i" U8 z/ p/ M
    │  │  │              │  │          │          source-to-classes.tab.keystream
% M  Q0 i) z' ?% N    │  │  │              │  │          │          source-to-classes.tab.keystream.len6 _; B# S3 _; G' I7 D8 u) w
    │  │  │              │  │          │          source-to-classes.tab.len; L2 {! E2 I, ?' g
    │  │  │              │  │          │          source-to-classes.tab.values.at
  }! O* N6 J& B- Q( Q% \. w    │  │  │              │  │          │          source-to-classes.tab_i0 v; d) s  M% d4 ^) A* i
    │  │  │              │  │          │          source-to-classes.tab_i.len
5 K" T( S% V- d3 S" F    │  │  │              │  │          │          ! T, j6 v) E& o9 @1 `& _( ~) ~) U
    │  │  │              │  │          └─lookups
  B$ I, [, M+ R- Q$ ?    │  │  │              │  │                  counters.tab  K5 U' W: {0 I( A/ m
    │  │  │              │  │                  file-to-id.tab" n- c5 ]7 s! B- ^
    │  │  │              │  │                  file-to-id.tab.keystream
7 [* X6 a2 I$ x" u: e/ J    │  │  │              │  │                  file-to-id.tab.keystream.len5 F  G  w, |, t2 t* I  `2 W/ Y
    │  │  │              │  │                  file-to-id.tab.len
* [, ]9 K. j+ t5 b# G) {    │  │  │              │  │                  file-to-id.tab.values.at1 ]8 c/ b9 P! e. |& I
    │  │  │              │  │                  file-to-id.tab_i
7 c7 s) m5 E) W, ?    │  │  │              │  │                  file-to-id.tab_i.len. _* A9 j& a+ o/ c; n! x7 j
    │  │  │              │  │                  id-to-file.tab: |( B# |, Z( r3 E  ]
    │  │  │              │  │                  id-to-file.tab.keystream
( N2 T: [  x& ^# w& O    │  │  │              │  │                  id-to-file.tab.keystream.len
9 l: L8 {8 o$ b: O    │  │  │              │  │                  id-to-file.tab.len
- s4 `) k6 p' c    │  │  │              │  │                  id-to-file.tab.values.at" w. P7 `3 K3 [( a
    │  │  │              │  │                  id-to-file.tab_i
- h% f2 d9 e6 ]5 }8 }7 ]3 h1 Y    │  │  │              │  │                  id-to-file.tab_i.len
6 ^; L% N! Y% y3 R) v    │  │  │              │  │                  lookups.tab) B( p0 e6 k; F& h! I' k# V
    │  │  │              │  │                  lookups.tab.keystream! i/ E6 [! d* c( j
    │  │  │              │  │                  lookups.tab.keystream.len- _0 h$ C9 |7 y+ F' I* G4 L
    │  │  │              │  │                  lookups.tab.len
6 b+ z: q- ^8 i# K1 U2 Q1 t    │  │  │              │  │                  lookups.tab.values.at
' }, C- e) `; ~% h7 d    │  │  │              │  │                  lookups.tab_i7 d+ r  a$ V# F) Y6 G0 B8 ~
    │  │  │              │  │                  lookups.tab_i.len
! h9 h5 n1 K1 U    │  │  │              │  │                  
' ^' h/ s$ L4 \! t0 I7 G    │  │  │              │  ├─libs
8 P' @6 f& h- A/ d0 v    │  │  │              │  │      Core-1.0-SNAPSHOT.jar
1 N+ P  X% N! x$ e+ t- w    │  │  │              │  │      
2 D% G) H; c/ b2 d) v# g    │  │  │              │  └─tmp
3 ]: f* f( a, w+ a7 d* A    │  │  │              │      └─jar
. J9 y* {( X  J/ Z( t1 n" w    │  │  │              │              MANIFEST.MF8 P# f" R# W+ A3 C" R5 S
    │  │  │              │              # m6 v8 J; M* V
    │  │  │              ├─out( \) t% T8 T. W% g3 J
    │  │  │              │  ├─production: k: X. p) p, R" ?# m3 c
    │  │  │              │  │  └─classes
, ?" G& M' x3 K. b    │  │  │              │  │          NetService.class
2 d; `. @; _. E( ?, x3 D- a* H. P    │  │  │              │  │         
/ p5 V7 Y, L% H6 b/ n    │  │  │              │  └─test2 g/ ~* V% D' y
    │  │  │              │      └─classes5 b9 N3 J- ]% s+ a
    │  │  │              │              TestService.class7 L# r" ~; x! J1 r* D
    │  │  │              │              
  W- c% d- e# m2 ^+ K6 I    │  │  │              └─src
2 |0 j' ]2 C4 n  X+ h+ W- g    │  │  │                  ├─main
! o0 Q; y  w  o- s( L% z    │  │  │                  │  └─kotlin
5 f+ r' c8 x, I8 {1 B# U    │  │  │                  │          NetService.kt8 A+ m' N6 q& [5 R
    │  │  │                  │          2 M, \7 ~2 i" t" y
    │  │  │                  └─test
/ f# @4 w# B3 ]    │  │  │                      └─kotlin% h' ~, \! ^- }7 ~1 ~4 b- P1 D
    │  │  │                              TestService.kt
8 _. p! p1 d4 N' h& B5 C    │  │  │                              ) N9 ^+ P0 }8 U0 [7 S. M4 {
    │  │  ├─ppt9 w4 F# ~+ F) _7 N: b& q, z
    │  │  │      gradle.pdf
( f1 ]. W' d+ L    │  │  │      
. T* U5 T! _4 Z& b5 m! i5 P    │  │  ├─video% N9 R: }# D7 x* W  H: E" n: B
    │  │  │      info.txt
/ D  _6 g0 Q6 H" J/ U    │  │  │      7 o* R8 d# p. {. P. x% |
    │  │  └─资料
( T+ F- m' P$ d; p9 u% i    │  │          commons-httpclient-3.1.zip
! R7 l  }+ d$ U) N! y5 a$ M- v6 d    │  │         
) H2 X+ k! O& ?; S) `    │  ├─day08( z  T1 v& [" D3 z9 H$ u5 j
    │  │  │  readme.md) Z( Q6 E5 ~! E
    │  │  │  
1 {1 ?+ a- b6 U! P* t, Z4 A2 W    │  │  ├─note8 R+ N% d/ V4 i% D4 o
    │  │  │  │  1.png
! _2 F  |$ t6 p6 B+ y    │  │  │  │  2.png$ s0 d9 |  [4 v0 h
    │  │  │  │  git.md
5 b( j' ?1 T4 I9 _" e    │  │  │  │  
0 c! i. o; M% a- }0 i( G# [! q' j( J    │  │  │  └─img) W& v9 G- V0 k
    │  │  │          1.png$ e" J/ q$ j; R: n
    │  │  │          10.png
* u% f! q1 Z; [% d! A; R. [    │  │  │          11.png; d! f# w- b3 B/ O5 u4 D% k
    │  │  │          12.png
$ u6 B6 G9 I# {; A1 V    │  │  │          13.png
6 \) Y; |" q) a- R    │  │  │          14.png
2 }2 ^& ^: s" d' ~% J    │  │  │          15.png
- b5 Y1 x: E9 }4 A0 `    │  │  │          16.png
0 r$ \7 S9 k  V1 j4 u    │  │  │          17.png
. ?6 V/ G% n  L  Q2 Z8 V; z    │  │  │          18.png
$ {; ~' c( w% B7 q# i    │  │  │          19.png
& b# b- p5 A: _1 {    │  │  │          2.png
- L  l7 |0 N6 U9 E0 o    │  │  │          20.png
' _% z* _6 ~% d1 V2 ?* k    │  │  │          21.png. Q: s, i$ r: o& W+ Y) u7 ~
    │  │  │          22.png- b- j/ O' G$ _" k2 x8 h' q
    │  │  │          23.png+ ]6 {6 c5 l! _7 g
    │  │  │          24.png
0 b0 U. L6 y9 f    │  │  │          25.png0 \/ R9 p. D' [6 Z# e1 n- w
    │  │  │          26.png
; j6 U6 g2 D1 E) _! O8 X    │  │  │          27.png* {( o2 `1 `1 H6 f  l
    │  │  │          28.png
- O+ j" P4 N" s3 ~' P3 t9 F    │  │  │          29.png
. Q) Z9 o) I, s7 g, F$ S2 a3 s8 W2 w    │  │  │          3.png1 L/ w0 u" k  R) G- k; {) M
    │  │  │          30.png
8 `' Z. V: n; l6 x  [    │  │  │          31.png
- }" A  O4 L& o- T    │  │  │          32.png8 `) @, a* ]$ `& B
    │  │  │          33.png
' L& A6 g! u+ P, B5 ?    │  │  │          4.png
' G2 `: u( k0 C9 r% w! [: E    │  │  │          5.png
  n3 F; S, V1 T$ Z+ W2 b    │  │  │          6.png9 R1 `  h! i2 T7 d' J9 M) Q, V
    │  │  │          7.png
# o( D6 S. h; \3 q    │  │  │          8.png( m- W' ~2 h; `: ^1 m0 ]: l) u
    │  │  │          9.png# F: j, v7 B" ^/ \: a
    │  │  │          Linus Benedict Torvalds.png* A+ D% ?. Q! |- H" _. ]( R
    │  │  │          3 O  o5 Q% {! r7 {8 Y9 Z- H2 E: K
    │  │  └─video1
+ \# g$ D* J# X& t! `    │  │          info.txt& p7 e2 h/ R3 o6 H8 ]7 X6 U" L
    │  │          0 X5 k  E- _  P$ _7 Z. d
    │  └─day09
/ ^& A% Q1 j' V% ?& D4 }9 ?0 f, k, t    │      │  readme.md
/ F- y* R" g- Q4 y+ D    │      │  ; e# r$ u0 X7 X) H
    │      ├─code
2 V2 Y, z+ A: {- e    │      │  └─Coroutines% F$ I$ X7 f7 W
    │      │      │  build.gradle.kts2 b; Y7 h: I" ?6 u1 D- D2 w0 I
    │      │      │  settings.gradle) M$ J0 i" c* }: k
    │      │      │  6 j* P5 {( f2 B* O. E/ L1 y
    │      │      ├─.gradle2 X1 X8 h7 M9 D1 `% }$ I
    │      │      │  ├─4.15 X5 F* B- M: a" W: ^3 b6 q' t
    │      │      │  │  ├─fileChanges4 w) x3 K( R2 q' y
    │      │      │  │  │      last-build.bin
; J' J7 `  o# X; |% e( @    │      │      │  │  │      
) ?# B9 c6 c5 g4 E    │      │      │  │  └─fileHashes
; I+ ~" F( z) Q+ O1 ]- [    │      │      │  │          fileHashes.bin
: p% I$ [) Q! I" g  w    │      │      │  │          fileHashes.lock
  G/ V0 R' t+ `3 n/ q    │      │      │  │          2 D2 R" I& h* y# G
    │      │      │  └─buildOutputCleanup
) {; g% w5 q5 ~    │      │      │          built.bin) n) N3 i; P& ^
    │      │      │          cache.properties$ @$ a: l" _: z) {$ W; `
    │      │      │          cache.properties.lock
# M1 ]9 {. ~$ q. R% M* s    │      │      │         
0 e0 w  _; R9 q0 O$ S6 ~( ]) ?    │      │      ├─.idea9 H% ^( w. h! t% K6 l0 I
    │      │      │  │  encodings.xml! L8 ^( O* p% d. `( @( O0 b
    │      │      │  │  gradle.xml' ?1 G. D0 {0 ~5 O( r
    │      │      │  │  misc.xml; ?0 R  J6 K- c- r
    │      │      │  │  workspace.xml
* m* }) A( [- ^+ j5 E& O6 ^1 }: w* `    │      │      │  │  
& q" D" U2 J5 m0 Q    │      │      │  └─modules9 p+ |/ N4 a' x. z) ~5 d) A% ~
    │      │      │          Coroutines_main.iml% F$ w# c5 t7 J3 Q: n9 p' Y/ {
    │      │      │          Coroutines_test.iml
8 T( _) m9 _+ Q* J# ~6 i    │      │      │          $ Q. B. H4 b' |* w
    │      │      ├─build
; [+ e8 T- G0 A/ @" A    │      │      │  └─kotlin-build
9 |' s: }) Z5 n( D5 ?    │      │      │      └─caches
# N' o) m" D! r6 B, ]: c, m    │      │      │              version.txt2 m4 Y/ t( \7 L" o5 a2 F6 D$ k" b  ]
    │      │      │              
4 p+ F3 B1 o' U    │      │      ├─out2 A3 C8 k/ P6 y; g. k7 E5 g& Y+ B
    │      │      │  └─production
9 Q+ C5 J' F5 f4 j    │      │      │      └─classes
# Q' `# R) h6 G2 Y    │      │      │          │  MyRunable.class3 h' R" }  k- _- s3 l* b; B
    │      │      │          │  MyThread.class
; |& F! f$ y0 o; j( i$ l    │      │      │          │  _01_第一个协程Kt$main$1.class0 m' M7 W3 K: |0 w) j7 W4 j
    │      │      │          │  _01_第一个协程Kt.class3 n& h) u) j4 L% N9 l" w: U# H
    │      │      │          │  _02_协程打印数据Kt$main$1.class
9 h  O" @. `2 r* N8 y3 M    │      │      │          │  _02_协程打印数据Kt.class
2 o- t) m1 I8 h( O/ c  Y( G    │      │      │          │  _03_launch的参数和返回值Kt$main$1.class3 K5 W6 T+ \9 j4 E9 W# n2 s
    │      │      │          │  _03_launch的参数和返回值Kt.class0 |9 g; l5 _7 w+ [
    │      │      │          │  _04_ForkJoinPoolKt.class: G; `4 I! ~- M. q+ J$ @
    │      │      │          │  _05_协程启动之后的处理Kt$main$1$job$1.class
- S6 G( C& }3 c# u- Y    │      │      │          │  _05_协程启动之后的处理Kt$main$1.class( o6 N, U3 c+ i( B! a& n' }
    │      │      │          │  _05_协程启动之后的处理Kt.class+ {$ e1 o' j. F: l9 F0 i# V( ~
    │      │      │          │  _06_协程实现原理Kt$main$1$1.class4 ^$ r6 p& m: Z8 U
    │      │      │          │  _06_协程实现原理Kt$main$1$2.class
5 M8 h" X; b+ [    │      │      │          │  _06_协程实现原理Kt$main$1$3.class
1 I4 _0 |' I* N5 c/ N) ?    │      │      │          │  _06_协程实现原理Kt$main$1$4.class
; j7 n* l+ h+ f2 X9 c% G" h    │      │      │          │  _06_协程实现原理Kt$main$1$5.class
6 s" P: G; D% O$ A4 W5 ]2 ^+ [    │      │      │          │  _06_协程实现原理Kt$main$1$6.class
" F+ h# z$ @3 ]/ ^1 m5 N    │      │      │          │  _06_协程实现原理Kt$main$1$7.class
* c5 Z- J  I; t    │      │      │          │  _06_协程实现原理Kt$main$1$job$1.class
' {( ?$ [$ {3 @) \* }$ [    │      │      │          │  _06_协程实现原理Kt$main$1.class
3 D8 `, D9 X, E/ C    │      │      │          │  _06_协程实现原理Kt.class4 ]( N* z% |# K
    │      │      │          │  _07_挂起函数Kt$main$1$job$1.class
, K7 v7 X# H1 {    │      │      │          │  _07_挂起函数Kt$main$1.class
. q% i8 m, u; [0 j: ^  H7 q    │      │      │          │  _07_挂起函数Kt$myTask$1.class
# ~' M5 D% u# P: }  j8 o: @    │      │      │          │  _07_挂起函数Kt.class
8 Z1 Y9 t  o8 n  j" H' i; B2 s    │      │      │          │  _08_线程和协程效率对比Kt$main$1$coroutinesList$1$1.class
( u( ^* Q5 ?# T' Q9 O1 l    │      │      │          │  _08_线程和协程效率对比Kt$main$1.class* B5 I! ^& `) n2 u' |/ }2 U( j
    │      │      │          │  _08_线程和协程效率对比Kt.class
4 z8 q5 g. M. ?8 L    │      │      │          │  _09_协程的取消Kt$main$1$job$1.class% u4 G6 `0 S2 q' }2 ~) ]
    │      │      │          │  _09_协程的取消Kt$main$1.class
6 M- s3 M, X$ O& G1 l' O/ A( _+ D( n    │      │      │          │  _09_协程的取消Kt.class
( ]2 v2 w" G) P9 T+ Q  I* I0 c9 j! Q: C    │      │      │          │  _10_协程定时取消Kt$main$1$job$1$1.class; u0 R9 A( N5 a# e% C" Y
    │      │      │          │  _10_协程定时取消Kt$main$1$job$1.class9 W6 S# N: n3 k, r+ Y
    │      │      │          │  _10_协程定时取消Kt$main$1.class
$ h1 Y* G) F0 E; o# D    │      │      │          │  _10_协程定时取消Kt.class1 ^) B6 ^$ t* L% o/ B
    │      │      │          │  _11_协程取消失效Kt$main$1$job$1.class
8 Y+ g! U2 S& X/ [/ a7 w    │      │      │          │  _11_协程取消失效Kt$main$1.class/ c6 r! R% e+ o  Z% j
    │      │      │          │  _11_协程取消失效Kt.class" \, B! ~  c& V3 V% k8 X+ d$ u
    │      │      │          │  _12_协程取消失效解决方案Kt$main$1$job$1.class
0 ?! C- m1 s8 i* \- H/ i    │      │      │          │  _12_协程取消失效解决方案Kt$main$1.class8 E0 t! I2 `( o5 M7 T
    │      │      │          │  _12_协程取消失效解决方案Kt.class
! y5 o# U2 J! ]7 z1 t3 n    │      │      │          │  _13_协程启动asyncKt$job1$1.class4 z4 S/ M! T) Z& ]
    │      │      │          │  _13_协程启动asyncKt$job2$1.class% x; X6 D, S0 r9 o* [7 A5 P
    │      │      │          │  _13_协程启动asyncKt$main$1$job1$1.class
1 |" N5 g  J  }/ c& M    │      │      │          │  _13_协程启动asyncKt$main$1$job2$1.class1 p# o2 S: J2 X% \) n
    │      │      │          │  _13_协程启动asyncKt$main$1.class2 X. r, z) v. S$ l+ M; k
    │      │      │          │  _13_协程启动asyncKt.class* r: ^( V; j3 [! `( r
    │      │      │          │  _14_协程上下文Kt$main$1$job1$1.class
' D' k2 F  @7 f% Z: o! a    │      │      │          │  _14_协程上下文Kt$main$1$job2$1.class
" ~1 ?7 l$ H6 b; ]- Y' s+ u    │      │      │          │  _14_协程上下文Kt$main$1$job3$1.class
6 Z( d# I/ G" a- K    │      │      │          │  _14_协程上下文Kt$main$1$job4$1.class/ k& L/ Z% e8 \6 _  ]
    │      │      │          │  _14_协程上下文Kt$main$1$job5$1.class
- d% G9 o) ]' b% D. E    │      │      │          │  _14_协程上下文Kt$main$1.class5 G6 o, u5 ]- Q( T' l2 n. [+ i/ R
    │      │      │          │  _14_协程上下文Kt.class
, ^0 k1 R9 p: m, s3 A    │      │      │          │  ! m2 {1 U' R! |8 C6 [
    │      │      │          ├─META-INF+ a7 a& E8 o+ _7 _* {
    │      │      │          │      Coroutines_main.kotlin_module
: B- M" j" @$ @& V    │      │      │          │      " D# J$ V) L# j0 i* E
    │      │      │          ├─守护线程
; Z5 m; o% e$ Q5 h7 `, Q; X' G    │      │      │          │      Main.class: ^9 \+ S7 @6 c' [- x: }+ V
    │      │      │          │      MyThread.class7 ^6 ^6 s8 E7 d/ g
    │      │      │          │      8 R, I: L# j, u; K) }% Q
    │      │      │          ├─线程join8 g, U0 C" Y. n1 y# G0 f9 J
    │      │      │          │      Main.class$ I7 }7 }  G$ Z
    │      │      │          │      MyThread.class" O( i) I3 M* w: q( g9 g8 Y- C
    │      │      │          │      ! @# z  `& Q* g0 o, |6 M: u, P- O/ u) V
    │      │      │          ├─线程池
0 |4 t3 ?4 \1 K. F8 i    │      │      │          │      Main.class
/ b# ]$ P0 N3 A8 Z    │      │      │          │      MyRunnable.class9 X, v; ^3 u8 s: J" q" U
    │      │      │          │      
9 C6 I0 v, u" U) n; f    │      │      │          └─线程的创建
; ]1 l0 B; E& k0 A3 b4 i; P    │      │      │                  Main.class) z. ~3 m9 z9 e/ v+ @) m7 u
    │      │      │                  MyRunnable.class
9 Z5 [+ R5 U6 _9 u5 R1 o    │      │      │                  MyThread.class6 o7 ?6 V* U4 g
    │      │      │                  TicketRunnable.class
; G0 G8 f, k" g% F: k    │      │      │                  TicketThread.class$ g9 _+ ?6 o: K0 c2 Q) W1 Q
    │      │      │                  / r/ X' @6 R- j3 p
    │      │      └─src7 O! g9 {; G, N: ~0 R. t* N, \
    │      │          └─main
+ W: y9 I  H* R( w# j/ l    │      │              ├─java" S+ f' y7 A8 a! Y. \2 J
    │      │              │  ├─守护线程7 u+ `4 i7 R. L
    │      │              │  │      Main.java4 k8 q" v- V( l5 O) w  U
    │      │              │  │      MyThread.java
2 D3 P" t7 |/ D, v0 T8 `5 d    │      │              │  │      
# f- \/ ]% U: M3 o* [    │      │              │  ├─线程join8 p: w( i" h" v. [) c
    │      │              │  │      Main.java& l& S2 \8 i" p7 ?6 H" h3 Q4 S$ `! `
    │      │              │  │      MyThread.java
( U* |+ @$ h  R9 T5 i$ y# X    │      │              │  │      
2 w/ U. k6 [5 M' n9 `    │      │              │  ├─线程池
' N4 ]  c  t* c) ]; C    │      │              │  │      Main.java
" T$ p1 F) _- J3 s    │      │              │  │      MyRunnable.java
4 b( e) B; G0 L/ P' {    │      │              │  │      , i5 @! y# F7 D7 n3 J% _
    │      │              │  └─线程的创建
# ^6 g8 L9 }' w, X" s8 H3 s: b! m4 \    │      │              │          Main.java- }6 x4 X% F1 N& H2 ]1 ?) E
    │      │              │          MyRunnable.java
  F, N8 M& [7 j) Z  E    │      │              │          MyThread.java
7 k8 j2 p. {+ c, Y6 P) M; y    │      │              │          TicketRunnable.java
  P5 o. K7 \$ S    │      │              │          TicketThread.java
6 W; L  c" v2 R7 `    │      │              │         
0 d+ }1 {% O' [1 e$ U' l    │      │              └─kotlin: [  f, _  F" y( p! d
    │      │                      01.第一个协程.kt2 N& b; _6 K# @2 W3 k% j
    │      │                      02.协程打印数据.kt
4 X3 q8 Q$ |+ S! Y: C& p    │      │                      03.launch的参数和返回值.kt9 Y  I; u, O( z7 R- [# D5 I
    │      │                      04.ForkJoinPool.kt  e7 Q! N% K& m: |2 F. I, C! T, A
    │      │                      05.协程启动之后的处理.kt
1 Y. b1 v3 P* O, h) {" G$ o    │      │                      06.协程实现原理.kt
/ c- _! S% P! N2 y1 x    │      │                      07.挂起函数.kt$ b; U) x8 ~9 [
    │      │                      08.线程和协程效率对比.kt
/ q8 \2 R" P2 u" s    │      │                      09.协程的取消.kt
! f  @' R7 h5 K+ I  D* R    │      │                      10.协程定时取消.kt
$ k1 s3 J. H4 g. I! F5 z    │      │                      11.协程取消失效.kt3 o. X6 s" m1 E, p  }
    │      │                      12.协程取消失效解决方案.kt4 |7 G/ ?# ~0 Y
    │      │                      13.协程启动async.kt
# O& i+ q" m7 ^0 I7 Y7 g    │      │                      14.协程上下文.kt
: P8 s& g' R* {1 `. u    │      │                      1 @, C/ r6 J) s+ ?9 O/ h3 h
    │      ├─ppt
( L4 F" }3 L* ]    │      │      协程.pdf
' g6 m) F5 _% ?# N    │      │      线程和线程池.pdf
# I% e: D* w/ ~) ~    │      │      * q( w( }4 A* H3 |
    │      └─video
$ V+ l9 c+ f8 [& N( u; C    │              info.txt
4 W+ P# P. A' n. D2 @8 }- y, f# C0 }0 @    │              5 A, K# X' l2 g  \; S$ {
    ├─03_第二阶段-前端开发基础" h6 z$ o1 y) l% Y* Y6 f
    │  ├─day01_HTML
+ S% t# T# X7 J. A    │  │  │  视频下载地址.md. e5 ]3 Y2 g8 q% @8 m, Z# P
    │  │  │  
& \8 C% j2 [; h4 J    │  │  └─代码4 g; f" a2 ~4 N8 Z4 F
    │  │      └─BC01
9 q: l8 d5 p1 u) T  D( a    │  │          │  .project
8 l8 ~, ]  p% @9 Q6 e* ~3 Q5 }7 ?    │  │          │  demo01标题标签.html& G- q$ n8 W0 Y% W, \# ?
    │  │          │  demo02_字体标签.html
' o/ \% W8 U9 @5 f- R. i) Q    │  │          │  demo03_其他标签.html
- F. \5 N2 W* U6 y  U: a% p- l    │  │          │  demo04图片标签.html& x; d5 b# d9 @# E  \/ u1 T6 o
    │  │          │  demo05程序猿.html
  A: }) y, E" W" F0 N3 H( _    │  │          │  demo06列表标签.html
0 W4 R$ V: k5 k6 y    │  │          │  demo07a标签.html3 h$ m, {& N" m$ b
    │  │          │  demo08友情链接.html2 U3 m; d; }& C' w
    │  │          │  demo09回到顶部.html
0 M8 ]& b: `: S; T; j2 |    │  │          │  demo10表格标签.html+ V* L# R) W# Z# b
    │  │          │  demo10表格标签2.html
8 w* D5 F; o5 I6 p, w    │  │          │  demo10表格标签3.html
! z* \& A% [# f, Q) O/ w- O    │  │          │  demo11表格行列的合并.html
2 O6 s0 e. s. }, E/ Z- u    │  │          │  demo12_bottom.html
4 ]2 c5 c) ~/ B1 b    │  │          │  demo12_left.html
1 k0 F  {4 `6 ^    │  │          │  demo12_top.html  I" y. Z  c# w
    │  │          │  demo12框架集.html1 I9 U; t4 _/ |" i5 n# x- h( @
    │  │          │  demo13表单标签.html
! F8 n9 E3 ^* K, s/ L    │  │          │  index.html
" Z5 |1 m& a7 B  X    │  │          │  5 x: f3 ^$ U+ j# p2 [2 ^3 i
    │  │          ├─img
3 Q0 z1 n, q# e9 E9 H8 B: G    │  │          │      1.jpg
" b5 r0 K+ V& l  e    │  │          │      2.jpg
4 W6 L6 Z; Q5 V( Z$ X    │  │          │      3.jpg
/ ~: D" `- _. j    │  │          │      a001.jpg( ?# h/ N: R" e' r1 {8 t) o/ K
    │  │          │      ad.jpg
5 X; \& B- N( K1 J9 M9 i; x4 b    │  │          │      bartlesvillecf.jpg$ ~: K% z3 F2 @0 h3 s
    │  │          │      big01.jpg
5 A3 d* \  g/ k4 `/ I; U3 w    │  │          │      click.png) e* @$ K. p: z! y
    │  │          │      emancipation.jpg$ m- N7 @% [9 ]0 g6 M. L* O
    │  │          │      footer.jpg9 `* j" k. @7 ^
    │  │          │      header.jpg
$ p4 j0 Z) q# ~" v* M    │  │          │      header.png' B- C  Y$ ]* |; [' E3 H, I$ A
    │  │          │      logo.gif
/ u: Q# a2 c3 q' t' [    │  │          │      logo2.png
' ~4 `; m4 R) T* F9 P) H3 l# B    │  │          │      logo6.png
2 ~2 K) ^2 o, g5 ], ?# _    │  │          │      middle01.jpg5 J. V$ m8 E8 L
    │  │          │      okwu-athletics.jpg
) l6 j5 U& [( l! ]1 l4 E    │  │          │      okwu.jpg
* R3 C" D0 L# C, ?    │  │          │      regist_bg.jpg
" m+ H4 \+ f* M: h' J" q    │  │          │      small03.jpg
+ g: V- d* F$ T: W' K    │  │          │      small04.jpg! K: y3 V7 k5 k( ?) v! O$ G5 `
    │  │          │      small05.jpg. n0 C% G% S1 u1 X; _6 e7 ?
    │  │          │      small08.jpg$ ~3 ]/ [4 D$ ?" T5 E3 H
    │  │          │      title2.jpg( L& {8 D4 y, }7 F$ e0 K, H
    │  │          │      
/ y; n4 N" k# w' Q& d* P( [    │  │          └─path1/ S' `" ]: Z  s7 N5 K, n
    │  │              └─path2
/ y2 C% J) M4 U& k/ K$ Y/ L$ ]; h! x    │  │                      demo04图片标签.html
: W5 P0 s! m2 B+ `; ]$ @3 h    │  │                      , |, N9 {- O4 @7 d: o, [0 w
    │  ├─Day02_CSS
+ c5 z; u2 j; Y/ t, y& E# o  }    │  │      视频下载地址.md
) U9 b% V: W4 b- G8 B3 e; l    │  │      6 r. m! z4 l8 c' i+ m* a
    │  ├─day03_JavaScript& T! X" K/ t/ x9 w3 g7 H
    │  │  │  视频下载地址.md3 Z; T' s7 G0 b/ s  [) F
    │  │  │  
0 q7 n0 D$ g! e$ }2 O& V2 {    │  │  └─代码' Q0 g6 D- l2 o9 |" Y! a- k. ^9 n. w
    │  │      └─BC039 A0 n6 I3 z+ M7 e; C! C) y
    │  │          │  .project- O/ \$ q" v: r) d* N; K9 Z- _
    │  │          │  demo01.html2 c- d4 o/ j& l  P* D1 [
    │  │          │  demo02语法.html7 g5 I/ u/ ~/ Z/ z& J
    │  │          │  demo02语法2.html5 `- S3 m% }& N8 B
    │  │          │  demo03声明变量.html( ~9 [6 s& d0 {9 I+ n8 H
    │  │          │  demo04数据类型.html
, M3 P( W  S% n- R* e8 a    │  │          │  demo05运算符.html
9 O! H7 C9 a& `: l# n1 n8 O/ t    │  │          │  demo06流程控制语句.html! ?% j1 r4 d2 z& u% j
    │  │          │  demo07函数.html
' i$ b. V' w  D& o    │  │          │  demo08函数的绑定.html8 A  C: B" s$ h: U# m- |; r
    │  │          │  demo08函数的绑定2.html
) s  E- W  N" }" G+ [, H    │  │          │  demo09数组.html# |  o" I  ^. C7 U4 s- J0 L5 r
    │  │          │  demo10正则表达式.html
) [+ n+ e" y+ \- Q    │  │          │  demo11日期.html
$ f* l! w: w3 W8 e! s$ R; v    │  │          │  demo12元素的查找.html0 z8 w5 Z8 h, M" y
    │  │          │  demo13CSS样式的设置.html
1 O1 [9 I4 T6 A; ?' {* y8 B' K6 n    │  │          │  demo14内容的获取和设置.html
- \3 i' m; e0 A3 l0 }    │  │          │  demo15属性的设置和获取.html
' U6 ^) g7 E# G0 F    │  │          │  demo16鼠标事件.html: C( h! `) J7 ^: J  G! F/ v
    │  │          │  demo17输入框相关的事件.html  C+ z- `: V$ V8 V6 E. O1 ^
    │  │          │  demo18表单提交事件.html/ B6 H. n5 Y& \( ?( |( b
    │  │          │  demo19onChange事件.html4 d) X$ R) u7 H, i" m
    │  │          │  demo20键盘事件.html/ I7 ^& ~4 Z+ U; Q' e; b' `5 `
    │  │          │  index.html
+ l9 Z5 C7 b; e' ]/ x: z& _    │  │          │  
9 L+ Z) R9 o: \& n: A6 \    │  │          └─js; v& {6 |2 k; c5 E' Q
    │  │                  demo02.js
: B: S1 N3 ]- U' _    │  │                    s/ T) Z3 A) Z* k
    │  ├─day04_JavaScript
' s$ Q/ E- {: B: ?% d    │  │  │  视频下载地址.md" F% W8 k2 E( g$ j* }  Q
    │  │  │  
- ~) g& G3 b) ?& H. r    │  │  └─代码" U9 t- i& R6 @1 m
    │  │      └─BC04* o* V9 m: C9 Y$ v, C) b2 J
    │  │          │  .project# t& H" z- q# ^  v8 U% I
    │  │          │  demo01Confirm.html3 w* M1 c# u7 G4 w! H
    │  │          │  demo02prompt.html
1 h' r2 Q# `4 x) }    │  │          │  demo03打开关闭窗口.html
! v9 E8 P6 B- D5 V) M    │  │          │  demo04定时器.html
' ~% O( C5 k  Z2 C) f2 v/ D    │  │          │  demo05history.html1 N$ L& {$ V8 Y( N
    │  │          │  demo06location.html- g* T; r% p% c& T; I
    │  │          │  demo07案例1待办事项.html: |4 o* i6 Q, T  }/ r0 q! q) R
    │  │          │  demo08案例2记事本.html8 p! ~- v4 r1 K: J9 k$ o
    │  │          │  8 M) X; H5 r/ C% D2 S
    │  │          ├─img& N8 X7 e+ C( a% c6 z; k% J
    │  │          │      1.jpg
3 E4 i) p. g1 g+ {    │  │          │      2.jpg
4 x5 \9 W, K  s$ p' s( g    │  │          │      3.jpg
1 U$ [; B2 |/ ^$ z4 E# K    │  │          │      ad.jpg  Y) B6 \* J; y+ E- i
    │  │          │      ad_.jpg! C, E1 {* n( ~$ P/ ]- R
    │  │          │      big01.jpg$ W! A: _/ R2 B
    │  │          │      footer.jpg
/ T: D: A$ g2 s    │  │          │      header.jpg
0 n8 q: `" ^6 p    │  │          │      logo2.png; a1 L1 @9 [- K; m! Y( i
    │  │          │      middle01.jpg6 I1 |& r  q) q3 j0 e0 l3 K% A
    │  │          │      regist_bg.jpg' k" u5 `2 Y4 a& D# V8 E
    │  │          │      small08.jpg8 |0 M; @3 @' \2 R1 V+ F
    │  │          │      title2.jpg
3 L8 ^& U! Y" M& k0 D+ h    │  │          │      6 F+ g; Z# {2 ^- o$ P- o3 B
    │  │          ├─案例1-注册页面校验* X+ Q5 L" p' ]4 i+ R
    │  │          │      案例1-注册页面校验.html3 f3 f: ~$ q% P! L7 o* v
    │  │          │      9 ^0 ]0 U: a9 K6 d3 X- a
    │  │          ├─案例2-轮播图
& H5 Y* _1 C( W) t- E% |    │  │          │      案例2-轮播图.html* Q3 ]2 V& ~7 R! |1 E
    │  │          │      
+ H5 f. D5 Q. V# p* w6 }3 a# U3 e    │  │          ├─案例3-弹出广告
8 F& \6 C9 `: z    │  │          │      案例3-弹出广告.html# W6 S" O  P& a% Y# m$ {# D4 F
    │  │          │      - Y) o" V- o7 o: g' d" ?
    │  │          ├─案例4-隔行换色! h2 U, W; M/ ^8 I
    │  │          │      案例1-隔行换色.html
& x+ z5 N! i+ U: o+ X0 M    │  │          │      
0 f: A  H* J  b) q  c8 ~" T    │  │          ├─案例5-全选全不选
& F) d. Z, g7 u& s) [) f$ l6 M    │  │          │      案例2-全选和全不选.html4 k( S$ r9 S  R! b
    │  │          │      + g7 x4 P3 y2 k
    │  │          └─案例6-省市联动
$ j  w3 v$ \# {7 V: U  E    │  │                  案例3-省市联动.html
/ E/ g- Y6 ^2 F+ P0 ^5 Z4 c  z2 s    │  │                  % T& _/ |* _$ H1 q% O5 S9 t1 V
    │  ├─day05_jQuery
7 O& p# v" Q  R0 p" y    │  │  │  视频下载地址.md" _! Q1 P; l+ b& D! v2 m
    │  │  │  ( b, J, _& ?8 g; Z! O; L6 A' K
    │  │  └─代码
5 P/ ]. \5 z" {    │  │      └─BC05; K) R% R/ w/ P, C+ f: J- ?3 K
    │  │          │  .project- c( d( C+ i$ g" ^8 F( L/ {
    │  │          │  demo01效果.html' M2 P/ m& k9 l: i: \6 S
    │  │          │  demo01效果2.html
$ {1 X" E% o( R    │  │          │  demo01效果3.html
0 Y2 J1 K7 ^9 b- R    │  │          │  demo02基本选择器.html
2 X. H# _3 g$ |5 y# Z1 K7 \    │  │          │  demo03层级选择器.html' s' E* v- k! }/ P
    │  │          │  demo04后代选择器.html
: e0 J+ A/ i7 ~& E    │  │          │  demo05后面的第一个兄弟节点.html
* ]2 p4 L" R6 j) k    │  │          │  demo06后面的所有兄弟.html
) [, V5 |% g5 Y    │  │          │  demo07筛选器.html
% V6 O2 l, R* U0 z9 H1 a' p    │  │          │  demo08内容过滤.html.html1 L9 |9 z% P8 {* E3 g. ^
    │  │          │  demo09可见性过滤器.html2 q* W6 B( `/ Q/ f# c) _0 A' t
    │  │          │  demo10属性选择器.html
' _% B( U! B, f* ]4 f    │  │          │  demo11表单选择器.html! `- _: L, a, a3 ?' D- K& I# |
    │  │          │  demo12CSS属性.html# H9 n+ Z, X3 c$ b  O0 m. S
    │  │          │  demo13属性的操作.html
! i. T6 q# }8 E* Y& h    │  │          │  demo14遍历.html! w$ {, K  A1 i( s  Q1 X
    │  │          │  demo15操作元素中的内容.html
2 U; [+ @5 s9 L9 c' X& _  H3 V    │  │          │  demo16文档的处理.html
) {1 J7 ]; e. R7 f  o    │  │          │  demo17表单对象的方法.html* A, y! I8 v7 O6 t, `0 ]
    │  │          │  demo18hover.html7 k* A! Y/ e4 e0 y9 V& c$ q$ ^: E
    │  │          │  
2 n" ]1 P, {/ K9 _& q8 r    │  │          ├─img( f- A* t4 z" @" Z% I# a
    │  │          │      AssassinsCreed013.png" \$ q3 I! y0 C+ h5 b4 J
    │  │          │      ( i; A; F) u# w4 a# G
    │  │          ├─js
1 a% `- w1 x( J" u    │  │          │      jquery-1.12.4.min.js5 r$ w! |- r% X: V. X
    │  │          │      
5 i) s& c0 [7 A# r* r7 X4 L    │  │          └─案例1-入门% w( D% F: s; R2 W+ t. U; P  C
    │  │                  01-获得jQuery对象.html
! b. O- B) v' V1 v* t7 `    │  │                  02-DOM和jQuery对象的转换.html+ H7 H: R$ ^" ~+ Y- L' L
    │  │                  03-页面加载.html
( p: H5 L& ~7 h, m8 [) K& e& e    │  │                  04-事件绑定.html; ?( |+ c6 J- [% M
    │  │                  05-常见事件.html& k. Z# l; t/ h7 ]
    │  │                  
  v2 R# w; E  F$ Y    │  └─day06_jQuery
9 [) o* j0 }$ J. \9 H  T    │      │  视频下载地址.md
# N, l  J# r4 {' l7 `  U/ F    │      │  
( A; \  C- S2 k8 A/ V    │      └─代码* j- ]8 f/ R" A0 M- f/ ^2 m
    │          └─BC066 X7 _) |' ?  ^
    │              │  .project) V7 N$ J8 z* B( D' }  F5 k/ M; o# z
    │              │  index.html7 X  K: Y' @9 M. G/ Z. H7 K
    │              │  注册.html
1 k2 S1 f' s5 {1 ^3 q* `2 U    │              │  百度地图.html
: n/ u6 Y6 ^- ]% k! i9 G    │              │  省市联动.html9 N+ M4 o1 Z: l; j6 e4 \
    │              │  输入提示.html
. E4 o, f# O: N! E+ z# t, }    │              │  8 P) u7 t* D: @! K0 ^
    │              ├─css9 _' J# g8 N- F+ E: a% ^, [. J
    │              │      city-picker.css5 i% V" ~6 ~9 a6 z  }" r' f
    │              │      7 ]( n) `: C( ~
    │              ├─img
9 `, t" f) q; L$ ]$ u& w    │              │      1.jpg' B; a# B5 U  M, H9 O
    │              │      2.jpg
! u1 @; p6 o+ W+ q% m3 C5 q! G3 y9 p    │              │      3.jpg
! b( E1 [! c6 @- y7 t0 S  S    │              │      a001.jpg
" J, C+ _6 j* F5 s4 B    │              │      ad.jpg
, G5 O* F  ?2 ^9 W$ m    │              │      ad_.jpg
1 C& b* x9 j. ^( o) F    │              │      bartlesvillecf.jpg3 I0 l* r0 z* H" Z1 ^) z  }. r6 N
    │              │      big01.jpg8 J0 O; P. o; |/ H
    │              │      captcha.jhtml.jpg: h. O' x7 }$ V, O- j0 X
    │              │      click.png$ `" a- A! p6 Y& e0 _- _; z% J
    │              │      drop-arrow.png. w: ^. i* R% R- r' e8 l4 Y8 y
    │              │      emancipation.jpg
5 V5 F. F0 x0 ], i  H    │              │      footer.jpg0 m- B- _9 Z) c: U
    │              │      header.jpg
2 O: q' u) c& |5 Y1 u    │              │      header.png# K4 }& C+ s) k. y, D
    │              │      logo.gif
, x$ u2 G2 Q5 k( g, u& I$ {    │              │      logo2.png( y+ e6 \9 ?# u7 Z
    │              │      logo6.png6 e- p/ j, ]+ a; x# j) q# \* Z! j2 O7 e
    │              │      middle01.jpg
, H  F' J' p8 p6 o' Z8 D% O    │              │      okwu-athletics.jpg& i# l1 r' y  w0 y) {! \2 F) {% s
    │              │      okwu.jpg
4 E) j  j. Q2 d0 S1 q0 N" W    │              │      regist_bg.jpg% y0 S1 _9 ~2 h
    │              │      small03.jpg" [& L. u9 M  h
    │              │      small04.jpg
$ j! F, [+ P# V  @" P    │              │      small05.jpg
9 N" a0 l; h* a1 V    │              │      small08.jpg
6 ]0 G/ I, y( \7 y' |) L    │              │      title2.jpg
) z4 ~- X2 [7 Z. k& G1 ^    │              │      
) d0 u& y4 K- f( }* M    │              ├─js  D( `! b$ W$ P8 W+ Y, L
    │              │      city-picker.data.js
, U! m0 a! D2 i. w- k+ ^2 ~    │              │      city-picker.js
+ f' B' v" C6 n8 E0 K    │              │      jquery-1.12.4.min.js* w% z* k5 i, @: B
    │              │      jquery.validate.js
, y" p& R+ P6 ^  J# ]/ Z- [4 E    │              │      messages_zh.js9 z0 h- \5 c  s( x( S3 P( j
    │              │      $ c, Y" x( O7 q/ f
    │              ├─案例1-注册页面校验
/ ^- \2 T  R+ H2 b3 Y" D. t" a7 F    │              │      案例1-注册页面校验.html  ~! L, o: a: f' t2 Y
    │              │      , V# k0 X$ d( _6 n% k0 O/ ]
    │              ├─案例2-轮播图
4 x# R% l6 T9 c) [* D- E/ H    │              │      案例2-轮播图.html
  g9 }% o, {: b) u1 r    │              │      
' N$ B2 u7 z1 P: F9 w6 W+ v    │              ├─案例3-弹出广告6 a4 t5 X5 e: u, \$ `
    │              │      案例3-弹出广告.html/ P5 M9 u! a' b: K% ?
    │              │      案例3-弹出广告2.html' A) r4 m1 k! k8 J2 Z& a4 [
    │              │      
$ K# U- f' }* K+ F/ X  i$ m) f    │              ├─案例4-隔行换色
( n" @' R7 Z9 }% ]7 n    │              │      案例1-隔行换色.html6 w! ?: g  {1 O& G2 M
    │              │      5 ^# E, l' W* j* v% j6 ?" P* z
    │              ├─案例5-全选全不选
6 m0 k# @! [: R8 U    │              │      案例2-全选和全不选.html
+ U; b6 {0 J0 [6 L4 S' o* G# e& q: |+ B    │              │      
. T. p% x4 M0 C0 x2 Q- Z6 u. G0 P    │              ├─案例6-左右选中- c3 k* c; U# k8 m: R: q2 I
    │              │      案例2-左右选中.html
6 V4 P# c$ D' I! V3 v$ ?" [    │              │      
% T+ \: M2 @; e- y    │              ├─案例6-省市联动: C. ?+ t1 g/ t* V
    │              │      案例3-省市联动.html& C8 x2 g) J7 R2 Y
    │              │      7 y3 z- g3 {% ~# r& Q
    │              └─案例7-表单校验: Z2 t4 U: a- ]
    │                      validate使用.html
& }) ~1 W. K# p8 @6 Z    │                      案例3-表单校验.html6 a8 e" W5 I$ ?8 b# k
    │                        y* G! o9 S! F$ ?
    ├─04_第三阶段-Java分布式#springboot#springcloud#微服务#数据库技术
( _+ a0 x0 K5 F    │  ├─day01
' h8 e: t  Z- {% d    │  │      readme.md
9 ^5 b! z% M5 O$ y* f    │  │      6 m, a; \' K; a# |! @
    │  ├─day02
  \# _) p5 G3 J! ~0 h7 P" Q( d- c1 s    │  │  │  视频.md& m. E. P9 E- a% \8 ~2 [9 Y, |2 F
    │  │  │  + x9 B; o4 a) ^6 [/ u
    │  │  └─code&资料
8 E9 t2 o4 O# v: e3 J    │  │      └─code
6 ?4 |7 t& o- i) {    │  │          └─day02
. c& x- C  a! d! s8 n    │  │              │  build.gradle
7 X3 Z8 U; s) M& }    │  │              │  gradlew
5 k. b5 v5 d3 `* h# Y) {    │  │              │  gradlew.bat
6 `( u! ~, P3 E    │  │              │  settings.gradle
+ D. j9 G2 g$ h! c+ n) \    │  │              │  
" K: B) b$ f! x6 w    │  │              ├─.gradle
3 |9 ?& ]& [/ q# J$ ~/ a    │  │              │  ├─3.5-rc-2
5 o2 A3 C; b" p; z    │  │              │  │  ├─file-changes- v0 Z7 m9 x7 o5 F2 N& j/ C7 F
    │  │              │  │  │      last-build.bin3 q, [  c; I. Y4 b6 F. B% D% [* R, V7 n
    │  │              │  │  │      6 v5 W% O2 Z( v0 s! @/ R5 y
    │  │              │  │  └─taskHistory
6 Q* K7 h8 I) w, A3 q    │  │              │  │          fileHashes.bin1 p; F& c1 H6 v$ y2 U
    │  │              │  │          fileSnapshots.bin
8 S2 S, Z2 V5 J& H' S    │  │              │  │          taskHistory.bin" a1 k. W7 A0 d+ E0 H" T! y
    │  │              │  │          taskHistory.lock
5 M& O" {  w0 J( `- b! i  u    │  │              │  │          9 O) i( b4 }) J( C+ z) a5 d! Z
    │  │              │  └─buildOutputCleanup
, {% P0 r) h* _$ W1 y    │  │              │          cache.properties
. W  t* @6 s# a% G& k    │  │              │          cache.properties.lock
' ]% e% i2 E; |2 X    │  │              │          2 S6 W' z$ S$ z! Y9 \& W
    │  │              ├─.idea6 [% C3 E! {; E1 {% L) c% E* E. ~
    │  │              │  │  compiler.xml/ `$ ^) G( ^. r
    │  │              │  │  encodings.xml
6 H/ A0 O) d, ^8 A    │  │              │  │  gradle.xml
. v6 H. h  q8 B, }7 d    │  │              │  │  misc.xml
* Y" v* \% e; [$ Q+ o    │  │              │  │  modules.xml0 E; q$ q- g# A% U& ?, Q
    │  │              │  │  workspace.xml5 Z- H, l& t9 y) b/ H. ]3 E
    │  │              │  │  
( N/ L! S# L! ?3 y    │  │              │  ├─dictionaries
5 Z4 x6 B2 x. Z7 u    │  │              │  │      Administrator.xml5 ~0 x* P/ P5 m5 B& w
    │  │              │  │      
' h  i6 u  ^, x    │  │              │  ├─libraries8 Y% s; U: C9 Q; S
    │  │              │  │      Gradle__ch_qos_logback_logback_classic_1_1_11.xml
) O2 @% U2 K) A9 I    │  │              │  │      Gradle__ch_qos_logback_logback_core_1_1_11.xml; t7 j4 W# h1 G* ]
    │  │              │  │      Gradle__commons_logging_commons_logging_1_2.xml
, H5 D" v: ]( d- a* B6 f    │  │              │  │      Gradle__com_fasterxml_classmate_1_3_1.xml% Q$ l$ b) R# _3 a
    │  │              │  │      Gradle__com_fasterxml_jackson_core_jackson_annotations_2_8_0.xml
. ]  L8 A* o1 B# r    │  │              │  │      Gradle__com_fasterxml_jackson_core_jackson_core_2_8_10.xml
! m' I  j) Z9 Y+ w# [    │  │              │  │      Gradle__com_fasterxml_jackson_core_jackson_databind_2_8_10.xml4 h7 }$ ^6 D% ^
    │  │              │  │      Gradle__javax_validation_validation_api_1_1_0_Final.xml. h  X7 t5 m/ S9 g
    │  │              │  │      Gradle__junit_junit_4_12.xml, h# C! c# P  J: s2 h) l. F" \  `
    │  │              │  │      Gradle__ognl_ognl_3_0_8.xml( Q8 _3 h4 I% k& h
    │  │              │  │      Gradle__org_apache_tomcat_embed_tomcat_embed_core_8_5_27.xml
$ P9 `( g8 o, g) W1 [$ t    │  │              │  │      Gradle__org_apache_tomcat_embed_tomcat_embed_el_8_5_27.xml
) w. E, Z+ u$ a! J6 L    │  │              │  │      Gradle__org_apache_tomcat_embed_tomcat_embed_websocket_8_5_27.xml( `( q2 u1 U! m; K1 h5 c  ]
    │  │              │  │      Gradle__org_apache_tomcat_tomcat_annotations_api_8_5_27.xml
, D+ c' q' o" \6 U( E, e    │  │              │  │      Gradle__org_hamcrest_hamcrest_core_1_3.xml: B7 H) }; H9 A" D4 _
    │  │              │  │      Gradle__org_hibernate_hibernate_validator_5_3_6_Final.xml
; M. T- T8 r3 ?! ~8 {3 ]; ~    │  │              │  │      Gradle__org_javassist_javassist_3_16_1_GA.xml4 ~& D5 Y- a- _# l2 q7 H
    │  │              │  │      Gradle__org_jboss_logging_jboss_logging_3_3_0_Final.xml
. c8 Z4 g% x, i! F* l$ o9 \4 ^; a    │  │              │  │      Gradle__org_slf4j_jcl_over_slf4j_1_7_25.xml6 E7 `  m- B/ Q" e
    │  │              │  │      Gradle__org_slf4j_jul_to_slf4j_1_7_25.xml
' w+ \* e" w& J" L! S& L+ d    │  │              │  │      Gradle__org_slf4j_log4j_over_slf4j_1_7_25.xml0 P3 }" \. P. a- s
    │  │              │  │      Gradle__org_slf4j_slf4j_api_1_7_25.xml6 f) H: Y$ U- u3 L; f5 ~
    │  │              │  │      Gradle__org_springframework_boot_spring_boot_1_5_10_RELEASE.xml
5 Z* F6 B- ^; B! j3 ~, ?5 j7 T% P    │  │              │  │      Gradle__org_springframework_boot_spring_boot_autoconfigure_1_5_10_RELEASE.xml) A* q% X: O+ q8 a
    │  │              │  │      Gradle__org_springframework_boot_spring_boot_starter_1_5_10_RELEASE.xml
8 F  X8 J  Q& q) H5 G    │  │              │  │      Gradle__org_springframework_boot_spring_boot_starter_logging_1_5_10_RELEASE.xml
( |9 n2 y* \6 {2 \7 V    │  │              │  │      Gradle__org_springframework_boot_spring_boot_starter_tomcat_1_5_10_RELEASE.xml
, I6 P: ~' x* M    │  │              │  │      Gradle__org_springframework_boot_spring_boot_starter_web_1_5_10_RELEASE.xml3 s4 ?5 [: z. e" V
    │  │              │  │      Gradle__org_springframework_spring_aop_4_3_14_RELEASE.xml
" |+ l: U7 C+ v' N5 o, u; w    │  │              │  │      Gradle__org_springframework_spring_beans_4_3_14_RELEASE.xml
7 W0 N, z# N9 Y: W2 p9 ?    │  │              │  │      Gradle__org_springframework_spring_context_4_3_14_RELEASE.xml
% v: C6 b- D7 ~" L1 R' B/ Q% S    │  │              │  │      Gradle__org_springframework_spring_core_4_3_14_RELEASE.xml& V* ]4 d! b/ L/ R; o
    │  │              │  │      Gradle__org_springframework_spring_expression_4_3_14_RELEASE.xml( ^% _2 m$ {7 t- O
    │  │              │  │      Gradle__org_springframework_spring_webmvc_4_3_14_RELEASE.xml0 D" d0 f3 v! p- v6 H. a
    │  │              │  │      Gradle__org_springframework_spring_web_4_3_14_RELEASE.xml
+ J/ M, S/ E8 V' {4 X) Q: N    │  │              │  │      Gradle__org_thymeleaf_thymeleaf_2_1_4_RELEASE.xml
3 e) {! _0 Q0 y5 i    │  │              │  │      Gradle__org_thymeleaf_thymeleaf_spring4_2_1_4_RELEASE.xml
( }) |; p" b1 h% {    │  │              │  │      Gradle__org_unbescape_unbescape_1_1_0_RELEASE.xml
6 P9 u" B0 e0 n9 Y, F+ Z  M    │  │              │  │      Gradle__org_yaml_snakeyaml_1_17.xml8 p% m, m8 e9 R  |
    │  │              │  │      1 j( W2 b1 g; T% @
    │  │              │  └─modules
4 h5 |( x% B, Q5 F8 u  A* {4 k# ^# [! s    │  │              │      │  day02.iml
0 G& b1 t) d& Z6 L6 c    │  │              │      │  day02_main.iml0 s! ~- F/ B; M7 j9 ^3 |) M
    │  │              │      │  day02_test.iml0 c- T& q* @( W; ]9 T0 v  c" _
    │  │              │      │  PageDemo.iml
$ h9 p. r3 r/ m, ^+ z    │  │              │      │  RegisterDemo.iml7 w! `7 T( d( _- n! S- H
    │  │              │      │  RequestResponseDemo.iml
8 S2 Q0 A1 @- R( C    │  │              │      │  ThymeleafDemo.iml% k; ]% I$ [5 h4 y* d
    │  │              │      │  * |8 _( D( K1 o( Q7 f
    │  │              │      ├─PageDemo
' T9 [7 T0 ]3 [! M( k    │  │              │      │      PageDemo_main.iml
: E9 ?* w0 B( \* N+ [    │  │              │      │      PageDemo_test.iml" D) E2 c6 c! z+ S7 C8 o
    │  │              │      │      . V/ B1 O; ^9 X+ p8 X% n
    │  │              │      ├─RegisterDemo
( h" |. m$ |0 ~/ E/ p    │  │              │      │      RegisterDemo_main.iml# c9 q& q2 {' r% t$ c/ r3 j' T
    │  │              │      │      RegisterDemo_test.iml2 W# x4 ]) X5 _: B
    │  │              │      │      - A- e4 \3 U. P! c2 ~
    │  │              │      ├─RequestResponseDemo
2 a' m; N+ ?% M+ @    │  │              │      │      RequestResponseDemo_main.iml
6 p5 B" h6 d% c5 i    │  │              │      │      RequestResponseDemo_test.iml
; l2 b8 n4 C4 `1 m+ z! }    │  │              │      │      
2 @! T1 ?: o' w6 S    │  │              │      └─ThymeleafDemo
3 R; |6 m1 V% O    │  │              │              ThymeleafDemo_main.iml
8 X2 w; G0 A) u    │  │              │              ThymeleafDemo_test.iml
3 S  Q' H; \8 B5 d    │  │              │              . M# a7 f8 h7 i# a. `
    │  │              ├─gradle
0 y. q. N5 R/ H+ U7 @: l    │  │              │  └─wrapper
- L. c  m( q. w+ ^% K; q( W% T% V    │  │              │          gradle-wrapper.jar8 A: u+ ~" L6 j- P+ t, _6 I5 G
    │  │              │          gradle-wrapper.properties) G5 o9 m+ e$ w1 k7 ^8 J  D7 r
    │  │              │         
1 W& w3 t5 \. g    │  │              ├─out: t+ P1 `( j3 D& r; |& g- E6 x( D
    │  │              │  └─production
4 g4 F  n4 K4 |. M1 s    │  │              │      ├─classes
# N) u, w, ?/ }/ ?2 q: R" ~    │  │              │      │  └─com
  f- f' h9 X2 ?5 A5 ]    │  │              │      │      └─itheima
* v/ ~( h0 z$ U; U& B+ n. I2 n& ?    │  │              │      │          │  MainApp.class  A! P& \/ ]6 s! k+ A% E3 s
    │  │              │      │          │  . a# U: D" G! c+ ?: [# D
    │  │              │      │          └─controller
, ?% T. n: X+ T  Y- ^, e6 T    │  │              │      │                  DemoController.class; F2 Y/ N7 D: Z" L) K  n. r% T/ S
    │  │              │      │                  
: z/ R& {7 C8 ^$ F* H    │  │              │      └─resources( a- F: |3 R( X# r( ]# s( B* F
    │  │              │          └─static
3 E" w) p5 s' \( i6 x    │  │              │                  login.html( k- }& ^' [, c2 v5 _" x9 d& \+ `
    │  │              │                  
9 _( V% V7 B. }9 B. H    │  │              ├─PageDemo
* i$ Y7 ^' `* m9 `    │  │              │  │  build.gradle( H0 s5 V8 q1 ]
    │  │              │  │  
7 K, i( o! K! m* @2 y( p+ f) _    │  │              │  ├─out
8 G& C  C! T/ T$ C/ {. Q. E    │  │              │  │  └─production
* U" @1 C9 O9 o3 H2 C    │  │              │  │      ├─classes
8 x- I- Q9 w1 s    │  │              │  │      │  └─com6 z: r0 g* b" U, t8 b$ b6 v
    │  │              │  │      │      └─itheima6 K1 Q" N. s5 V, S
    │  │              │  │      │          │  MainApp.class
- W4 @- y  c$ W% G: k* p, A) P$ @    │  │              │  │      │          │  . `1 h' A+ n; X' B' i  L* y
    │  │              │  │      │          └─controller
0 J& |( m! ]' r! b6 r/ c    │  │              │  │      │                  ForwardController.class
% Q5 y* q! {* W2 d6 \: b, C, E    │  │              │  │      │                  RedirectController.class& b% H: |( z0 f7 s9 d/ u% w
    │  │              │  │      │                  TestController.class4 A0 e( e) x$ p
    │  │              │  │      │                  % z: H: |( ~6 D, D1 D+ C2 B# s; _* v
    │  │              │  │      └─resources
* j5 r3 c6 n1 b) ~/ t3 z8 ^    │  │              │  │          │  application.properties- l6 h. j+ p4 [( t
    │  │              │  │          │    v6 P0 F( l8 C- B9 j- g
    │  │              │  │          ├─static
. _: X" {8 R2 R6 @/ M9 |8 x    │  │              │  │          │      result.html
( z/ y6 Y: @# V( \- V    │  │              │  │          │      test.html) |$ H1 Y/ X$ C& A; m
    │  │              │  │          │      ! I. R* J9 a2 h0 {  [, {! m
    │  │              │  │          └─templates" R; g& q  B! A, J. e1 H7 ^( H
    │  │              │  │                  aa.html# P- x2 R* _4 i6 k
    │  │              │  │                  ; Z1 E( y/ @- q. B5 ], E) F
    │  │              │  └─src
7 e7 Z, ]) B2 {; s- C3 B# c    │  │              │      └─main' m7 o+ D2 e3 z& |+ n- V' e3 S. ]
    │  │              │          ├─java; @% c5 t' G$ @5 ^* h7 }6 J
    │  │              │          │  └─com& r6 f- W- R% Z; @  S: r- T( |" b
    │  │              │          │      └─itheima" ~7 c: r" K, a& V# ]' `- o" J
    │  │              │          │          │  MainApp.java
. P8 i/ h" Z$ H& T, p4 R5 i# x  l    │  │              │          │          │  
* i/ Y4 m  m! c" V' T) {8 @4 f    │  │              │          │          └─controller
$ L1 a# R0 n4 x8 {- W5 t0 q    │  │              │          │                  ForwardController.java
! V' j% I4 B; x' Z: d+ U    │  │              │          │                  RedirectController.java+ O( L* _) \7 U0 j! `4 d7 }1 C
    │  │              │          │                  TestController.java
6 Z' f2 V* v8 r8 j( X3 k    │  │              │          │                  
) ]( j4 k/ B- U2 c    │  │              │          └─resources
- B& m2 p3 Z7 }    │  │              │              └─static' j7 z' g7 j0 y* x: a$ {' ?+ X, u6 q
    │  │              │                      result.html
! ^* P9 j. Q; u! v9 J* |9 Y6 j8 ]    │  │              │                      test.html
' u2 O- t, p7 y# q    │  │              │                      9 q+ b& W( u4 T0 d' M
    │  │              ├─RegisterDemo$ @% K) o4 y9 U+ ]' |$ Q' M4 V
    │  │              │  │  build.gradle/ f: A( g7 g) a) L  ?( g
    │  │              │  │  
! m7 u0 _% `# g9 M) t' i) J$ v- d    │  │              │  ├─out
7 S  w" @+ j# k; p+ Z    │  │              │  │  └─production
; H. D$ ^& l, [2 J2 R, z, A1 b    │  │              │  │      ├─classes( G& V% `( O6 j: \
    │  │              │  │      │  └─com, t7 a0 w% s. ?- w
    │  │              │  │      │      └─itheima+ |# n% P- ]; q3 T5 S
    │  │              │  │      │          │  RegisterApp.class
4 ]& [3 n# M& E9 e& _' b. B5 N5 E5 j$ I    │  │              │  │      │          │  
3 C$ b! j, b( z0 t; ~8 x    │  │              │  │      │          └─controller
" N: F, d5 q0 @5 M% z& |/ Q/ \    │  │              │  │      │                  UserController.class
. |# y# z6 i* {- x( Z4 S+ p9 ?    │  │              │  │      │                  
+ F. b5 W  t4 E    │  │              │  │      └─resources
/ J8 c3 l% A! n4 {9 ^( P# \    │  │              │  │          ├─static
/ v/ {0 y6 [3 X1 l! W0 F  a6 Z    │  │              │  │          │      register2.html$ S& k, {9 r. a' F7 G6 B0 S
    │  │              │  │          │      
* T; F. F' t' }3 f8 T    │  │              │  │          └─templates
# x. b$ I  ]+ o3 i    │  │              │  │                  register.html
( p" q( w0 ]9 c* u) s: [9 A    │  │              │  │                  register_success.html
% `) {) v7 I% I7 A; F. |( J! t    │  │              │  │                  ! e/ `2 Q8 L) b0 c) h: R5 `7 H0 H0 E1 m2 k
    │  │              │  └─src
: l& d1 u7 t2 {4 p% N8 j! ?4 M    │  │              │      └─main' D/ P7 s: j/ z/ G8 y
    │  │              │          ├─java
8 C3 f" w* T5 T    │  │              │          │  └─com
+ x; q. s( {. Y* U6 C4 c    │  │              │          │      └─itheima
: }: G* Z$ y8 |* D! z5 V  j    │  │              │          │          │  RegisterApp.java- j' t$ R* K/ v" a
    │  │              │          │          │  & y2 t; e& r) g7 I
    │  │              │          │          └─controller! E4 |0 l& E. u% z' G5 F
    │  │              │          │                  UserController.java
" _6 y9 \: E! `3 E8 L8 j    │  │              │          │                  3 L/ t5 ~$ b, f; |% }
    │  │              │          └─resources3 f8 C: W0 _& s. w* s% f  w
    │  │              │              ├─static8 E" f1 a2 G# y8 M0 \7 x
    │  │              │              │      register2.html
  T- S! V5 @9 C    │  │              │              │      / |) ^/ O& M; S
    │  │              │              └─templates; e. Q+ {+ R2 k* ^& ?# J$ s6 B
    │  │              │                      register.html
* t  P* G% s3 c1 T  G3 n% ?' D/ ^( a$ C    │  │              │                      register_success.html
3 y7 d" A7 L3 ?. j: J    │  │              │                     
6 o3 E( I& Z1 ]1 S. @    │  │              ├─RequestResponseDemo
" A; P6 x6 y+ ?/ J$ F7 w    │  │              │  │  build.gradle
- K& K; i% N9 `' T$ y* r    │  │              │  │  
" L9 Y( z! l5 ?5 M    │  │              │  ├─out
2 T( @% D$ A5 x1 }" C    │  │              │  │  └─production1 O! T9 q6 `& c0 k! `( N
    │  │              │  │      ├─classes" F$ K# ~2 L) x- s0 n+ E' ^% m
    │  │              │  │      │  └─com5 T4 t5 T' M6 x! W+ S
    │  │              │  │      │      └─itheima
4 h% U* R- q1 ?4 N) x8 z" _# E    │  │              │  │      │          │  MainApp.class
( L( ~; b( Q! _  p2 L+ R    │  │              │  │      │          │  ) t* A! z0 Y  j6 I9 N  F& z
    │  │              │  │      │          └─controller# k6 g' T$ T2 G1 w; S, ~5 n
    │  │              │  │      │                  DemoController.class% ]- @/ ^0 U9 @1 v; R0 L
    │  │              │  │      │                  ) k9 [- {+ w4 Z6 X0 |$ f  Z
    │  │              │  │      └─resources
9 }0 G% |  k+ P/ W* K    │  │              │  │          │  application.properties
* Z# M& |4 A4 t7 b7 d# Q    │  │              │  │          │  + r5 W0 g$ L5 w: R  f1 a
    │  │              │  │          ├─html
( V. D6 S% a  ]6 u, g) H, Z    │  │              │  │          │  └─user
. Q* D$ i2 T6 B! |    │  │              │  │          │          cc.html: B; q. t. D. p7 G* B
    │  │              │  │          │          ; E% f/ f+ k3 ?
    │  │              │  │          ├─public
2 Y3 b  [0 ]& e! t; m# L2 X" U; ?    │  │              │  │          │      bb.html  I- {3 y  Z- H* {, v6 H# V
    │  │              │  │          │      + c% E* ^+ l! [3 W& |6 T; t; t
    │  │              │  │          └─static3 i5 M, R* g9 B  L8 {! D- q" i
    │  │              │  │                  aa.html" y) ?5 g/ W$ r5 |
    │  │              │  │                  " [4 _$ t3 B& P: s
    │  │              │  └─src* Q3 g6 T( E% R  ]: w
    │  │              │      └─main" o6 X0 V/ @! A3 g6 v
    │  │              │          ├─java
: V5 @2 c" c' ]6 H    │  │              │          │  └─com5 I. |1 U7 I! a" ]. v
    │  │              │          │      └─itheima( }- X7 D1 M5 k6 B7 ~
    │  │              │          │          │  MainApp.java" ]( R$ @/ A+ h' P( X
    │  │              │          │          │  . M1 L5 g$ w( h) e; ^( O. f" F. u
    │  │              │          │          └─controller
6 \* _: f8 Y6 J" z0 t& Z    │  │              │          │                  DemoController.java
: c9 U4 w# O# X2 _+ a    │  │              │          │                  9 A, _/ b, h! D3 Y- T( g- C* N
    │  │              │          └─resources4 ^9 m$ h; [$ f$ W  l1 J3 t% @
    │  │              │              │  application.properties
) f. x9 Q$ I  i' E( r    │  │              │              │  # u9 e* Y0 K6 M# ~1 v' @5 l
    │  │              │              ├─html
! a4 L9 P& \; C7 r+ f0 q, a    │  │              │              │  └─user* J. m* a3 i7 ]* Z- c) H
    │  │              │              │          cc.html
- E" {. h; K; L    │  │              │              │          ; b% u$ N0 L( \8 U
    │  │              │              ├─public. X/ v$ j8 ?; Z% }' F4 n) Z
    │  │              │              │      bb.html
5 Y- z8 U  G  M    │  │              │              │      6 a4 v& [6 p8 [9 @- }) L+ }8 }
    │  │              │              └─static
- K  Q! s) x3 M; l) E2 J. N! l    │  │              │                      aa.html5 ~8 _+ v5 `& r3 w( U" w
    │  │              │                      : C# [9 Q! D# P# `
    │  │              ├─src& d' T1 [9 f+ T% a, f% V1 x) S
    │  │              │  └─main
2 h( i( |" T$ Q8 ~, x# t  @: K    │  │              │      ├─java
* @8 p2 l3 k+ }" _    │  │              │      │  └─com
" U, c2 N6 Q4 Z7 G5 T+ ]8 r    │  │              │      │      └─itheima
8 G) R5 I5 M+ ~6 h: ^! w    │  │              │      │          │  MainApp.java
8 m/ J3 X& I/ n; I& @- Q; r    │  │              │      │          │  
* I! w: F* m/ L6 ^    │  │              │      │          └─controller
2 S% U3 f5 A* b! v/ Z6 d    │  │              │      │                  DemoController.java
/ a; H* P* |9 I1 P2 s1 ]    │  │              │      │                  / `) N1 s9 y" S& w' I; ]8 M
    │  │              │      └─resources
) t; K$ {( o7 ~/ f3 N, n- o8 y    │  │              │          └─static1 R8 D0 ]% [3 v- x. {
    │  │              │                  login.html
! ]+ y( a# |5 E% x9 u0 S    │  │              │                  
% x& |9 c$ ?- k5 c; @    │  │              └─ThymeleafDemo
, L3 q% k/ y. K2 T    │  │                  │  build.gradle
( n% l+ N0 A$ Y6 p    │  │                  │  " Z, H" f: y9 q- ^* h
    │  │                  ├─out
: B' y* b# X" \2 J8 t. X    │  │                  │  └─production3 w* K" e' p! ^# m* n
    │  │                  │      ├─classes# v( q+ R5 m2 ]* a) A& n
    │  │                  │      │  └─com- ?; y; T0 I5 ~
    │  │                  │      │      └─itheima
, q1 v! `! p1 n! B7 P    │  │                  │      │          │  MainApp.class& R" \& l& O6 ?  s; D! |
    │  │                  │      │          │  ( b. @  _) r/ t; T0 O
    │  │                  │      │          └─controller0 f, r: R% D" d9 ?; F, K
    │  │                  │      │                  DemoController.class
3 u5 g3 y: e# z! V/ [! O    │  │                  │      │                  UserController.class
- I& n  @% L. u    │  │                  │      │                  
( c: y  H/ r8 d+ q    │  │                  │      └─resources3 p1 R+ P) v' U7 o# E
    │  │                  │          ├─static
- F: O3 X1 ~* c: |    │  │                  │          │      login.html
0 a, a( X: b1 m) d% S# J: ^    │  │                  │          │      ; k- `/ ?& C5 y% S
    │  │                  │          └─templates$ R' K4 J* a4 h8 q4 K8 m, K! ]
    │  │                  │                  index.html
" h4 m0 e" _7 \8 x6 r% v) ]    │  │                  │                  testpage.html7 d" q  b7 z/ u6 a0 [# _: g
    │  │                  │                  . C* C+ M) e, M/ x3 h
    │  │                  └─src
' D4 A# c# Y1 e6 D  U$ R" ?    │  │                      └─main
( w) c6 ^6 m& {) q    │  │                          ├─java; u2 ^# A3 |3 d$ Y
    │  │                          │  └─com
* q8 R4 X# H: m4 D' A8 f; k7 {7 P    │  │                          │      └─itheima
4 A( ]! Z+ h" a0 t    │  │                          │          │  MainApp.java7 r+ u* Z9 p$ \4 y0 ?7 W/ P0 s
    │  │                          │          │  $ ~6 R0 e1 D' ]- H5 S! `
    │  │                          │          └─controller
- l8 y' _( W) Y" n. E    │  │                          │                  DemoController.java7 \# o' [" \+ z* \+ Z6 n) d5 ^
    │  │                          │                  UserController.java
: V* X; p4 D9 m8 ?) t    │  │                          │                  
/ ^& D9 ?4 z7 Y/ D5 e    │  │                          └─resources- ]5 e' O8 f: u3 f) @, _% |2 M
    │  │                              ├─static
+ K/ \6 s3 R- W    │  │                              │      login.html2 O" V6 Q, M$ b) t4 X
    │  │                              │      
6 p5 Y9 ?1 N2 X$ n9 s! f6 w    │  │                              └─templates6 I1 w4 I8 g* h7 _- c( O( _/ e9 c
    │  │                                      index.html# m; V8 E) I/ O7 ?
    │  │                                      testpage.html
6 a7 J. `  n, @+ W" U5 X- a    │  │                                      - M) I" @: J: D; F
    │  ├─day038 {9 o  Y; w0 R9 }
    │  │  │  day02回顾.txt
7 L# ?7 a+ n9 S2 d1 J$ h2 O0 u1 h6 ?    │  │  │  视频.md
; `! i. Q# K' ?0 k    │  │  │  购物车.png" `, K+ K# X6 R2 I) R0 Z
    │  │  │  * n6 O; c) K! e9 [& w6 \
    │  │  └─code&资料
5 i0 |' u7 |, V- P% h    │  │      └─code4 p/ h' p# k- s- J/ s/ J0 }, h- y
    │  │              day03.rar
1 f, g. Q3 u0 X# d8 L6 e! U    │  │                V4 f! T( A# n
    │  ├─day04( r& U0 P$ V# R$ T! P" z
    │  │  │  day03回顾.txt
6 n$ L' t/ f& A    │  │  │  视频.md
" L3 |( Z; o( [/ J    │  │  │  6 D2 U! r0 u/ n) g2 [. X% b9 L
    │  │  ├─code&资料/ o* S. m: P& x! N' h- Q
    │  │  │  └─code
% M9 g1 u4 x5 s- O/ M1 P    │  │  │          day04.rar
  t% g- T9 u- X: I0 B$ P, r+ X2 E- c, z    │  │  │         
1 S5 Y3 \; T  N# t! }    │  │  └─linux$ {! G( j. c9 v1 Z0 }- [
    │  │      │  笔记.md
: `) j+ v! D# p0 f    │  │      │  2 l* O9 _+ v# t
    │  │      ├─img; `& H& t7 _7 P6 A: A: i5 w
    │  │      │      01.png% J3 J2 q8 ]. e  z
    │  │      │      02.png4 t. a' z/ B8 C+ f) ?. J, J( `
    │  │      │      03.png5 I  u$ h8 F9 f6 j& a4 w. y# i
    │  │      │      img01.png" s$ {% M$ U; u8 M
    │  │      │      
$ {2 Y, Z5 d3 r7 v    │  │      └─资料4 S8 p# ~/ ?* m
    │  │          └─linux
; U4 B! L0 M9 `+ v( \$ h2 S    │  │                  centos安装.docx
7 v9 F+ C0 w0 u+ q    │  │                  6 L# W& j( x2 p
    │  ├─day05
8 X% ^. B# J2 q; K. X( H  J( d+ N    │  │  │  day04回顾.txt' Z, A- l" M' e4 S+ y9 x. v2 b
    │  │  │  视频.md! m. W  i* Y$ F2 w* H3 Z5 p
    │  │  │  8 V( F8 j* e1 P  @7 g8 m- F
    │  │  └─code&资料
4 o$ U6 |# _2 y; J- b    │  │      └─code
" i8 {( R5 M; M, X  V6 U6 U    │  │              day05.rar1 `) {! }0 L  Q
    │  │              
6 B8 R  ?5 x% c    │  ├─day06
8 [  R4 l8 g8 Y    │  │  │  day05回顾.txt8 y: T% C7 u: F' M7 y4 [$ j0 _3 h
    │  │  │  视频.md2 A1 }. C6 R7 Q0 D+ n4 C$ |
    │  │  │  5 X6 i/ O1 s' G- i! m! L, s
    │  │  ├─课上操作记录# n4 Z8 x! r& S2 g; J% ]
    │  │  │      数据记录的操作.sql) X4 v& r5 v( m. E
    │  │  │      约束操作.sql
- m4 x1 ?+ y! k- g7 m+ W; x- A% w    │  │  │      表的操作.sql
. g) A. W' p+ b; i" T4 [% x4 S+ I    │  │  │      表的操作(二).sql$ Z! }1 U- s) a" l
    │  │  │      
) R5 Q% Q* M" R- V3 [4 A/ B* Y    │  │  └─资料, A% U9 i' F) H9 ~6 W$ Q
    │  │      └─mysql练习! Y$ @% K3 v/ T5 ?* @" g# n
    │  │          └─mysql练习
" Z  j/ @! j! B* `; f& X3 p: r4 l    │  │              ├─第一天单表; q4 t- o* w# k( {, B2 k% f' ?5 W
    │  │              │      sql练习题目.txt
0 ]; c8 [' S/ K    │  │              │      sql练习(带答案).txt
& w' r) A7 v+ Y3 O9 D$ X: p    │  │              │      数据库以及表的CRUD.txt
2 R+ A' i  ^7 V  ^0 u    │  │              │      数据库以及表的CRUD(不带答案).txt
. F3 W. ~3 R# f: h    │  │              │      
' ]+ {6 ~$ O4 o/ H, w    │  │              └─第二天多表& L9 P+ \1 ^$ K- q6 m. d! A  J
    │  │                      建表语句.txt1 M# B' m9 k2 @4 m6 U8 C3 \
    │  │                      练习参考答案(加深).txt
) G- G' E" k7 O; H    │  │                      练习题目.txt- h$ D: n" O$ v5 u0 K' a: I+ q  N
    │  │                      6 \" m' u. R# F
    │  ├─day07' ~* I) `; s( ~& y! J
    │  │  │  day06.txt: \: {# i% I' Y* Z0 o; A4 W
    │  │  │  视频.md% ?# h) c5 H' x6 n  }
    │  │  │  0 l7 s" G. Q" c
    │  │  └─code&资料
3 M5 W, w- w3 k% q  ~    │  │      └─讲义- s: a. h+ K0 u# s' G0 [' g" m
    │  │          │  笔记.md
- M6 U5 a2 S" v# Z+ v' ^8 f    │  │          │  3 _/ r; I! [3 ?' o: q% R3 g$ e
    │  │          └─img9 `" I. e$ ^! E% }+ P( N
    │  │                  01.png4 V9 y/ \) @( y& y5 r/ l7 d" X
    │  │                  02.png7 r+ u# k- @+ P
    │  │                  03.png
6 l! B6 g, J+ x: Q5 @" X/ k" W$ R    │  │                  04.png( d( l) V0 B4 k6 b& Y
    │  │                  05.png
* O6 N' j3 A1 u- A2 B    │  │                  06.png
/ Y! w: i4 V7 j. {  n& r    │  │                  07.png8 A% q9 H2 u: p0 G, I
    │  │                  08.png
/ R5 E2 k5 Q" D; B    │  │                  09.png/ X* F% k' \( o! w1 Z
    │  │                  / d0 D3 }% B4 ~* \/ N0 ]
    │  ├─day08
- Y8 J9 V/ Y1 V3 x1 l4 v& z" O    │  │  │  day07.txt) v% c+ ^5 J& L# k: ^3 P
    │  │  │  视频.md
! o: T4 n0 Q1 y# L6 {    │  │  │  - M' J- Q+ w2 b9 b
    │  │  └─code&资料
0 `$ h2 B* z$ J5 `; C2 b    │  │      └─code
. J, s$ h& D9 V* W    │  │              day08.rar) j4 X' ?+ \( v
    │  │              
" _& s: P/ S$ v, t* w0 L& }$ r    │  ├─day095 D! {9 s3 Y- _8 ?2 [4 i2 o" M; O
    │  │  │  day08回顾.txt! U# j" D2 V- z! H9 n( N+ T
    │  │  │  视频.md* K( c' D# ^9 X( H' }7 U
    │  │  │  7 P+ x7 C0 _4 K. k7 [! \$ N
    │  │  └─code&资料/ i& @- O" N, M
    │  │      └─code
9 Y+ }( ^$ m. ^" ~! H    │  │              day09.rar* U% ]& `; f( k3 s  @6 a5 I
    │  │              
; r: p& V0 W* j! O: ^4 \; K    │  ├─day10
; U2 @" y& ]6 U- \; H5 ]    │  │  │  day09回顾.txt: Y2 o% y% {( x; X3 \
    │  │  │  视频.md, Z7 l/ {% G0 l* p
    │  │  │  
! O/ F; }' I# d: ?+ ~! T5 p    │  │  └─code&资料
0 H! Q/ \  l! L. T8 w6 x8 c& `1 {    │  │      └─code
7 o* S$ |$ K# T+ [+ L    │  │              day10.rar; h% Z% M6 i, `/ q2 {( e3 H0 u
    │  │              , G- y% U+ E4 O2 \& d
    │  └─day11: {) H" ]* }2 r0 |2 _
    │          readme.md
  v6 T6 d0 F/ b    │          ! Y, v8 g9 Q$ ]  a5 \
    ├─05_第四阶段-springcloud和区块链彩票项目
1 @+ V8 y' c5 y# w    │  │  readme.md+ J. Q" Q2 G3 G2 Y' w( ?; _& `. d
    │  │  下载地址.md
# \8 p% a( o# A9 O    │  │  2 W' ~& {* O: t, ?/ ^/ B- b
    │  ├─ppt
$ y1 R8 w7 A) Y2 S    │  │  │  index.html
0 e9 [  B+ U4 P* E" U" a- z3 X- x  Q/ z    │  │  │  6 H  o2 Y, M. P4 Y# q5 `
    │  │  ├─css
/ v* Z2 f. [4 M4 K    │  │  │  │  fira_code.css" R' ?8 c1 V2 s) R8 {
    │  │  │  │  reveal.css
" K6 {3 Q; |4 X9 f    │  │  │  │  reveal.min.css7 P3 b% [, i6 b% ?8 K
    │  │  │  │  reveal.scss& @# n( f, U* h0 w, @: x) @" \
    │  │  │  │  style.css7 S0 w5 r: W& \* r
    │  │  │  │  
# A5 }" D- F+ K+ ^# w    │  │  │  ├─firacode, \$ b( z! C' y  W3 F- @( B
    │  │  │  │  ├─eot/ x$ X5 L3 A; f6 O* i
    │  │  │  │  │      FiraCode-Bold.eot
2 M! ]! l. a" N* _3 \( _  A    │  │  │  │  │      FiraCode-Light.eot
( R: I1 ~, F+ k; ]/ J    │  │  │  │  │      FiraCode-Medium.eot8 y( n- D# a4 }' Y$ L
    │  │  │  │  │      FiraCode-Regular.eot- {: M# c/ L0 C! s9 R  m! k3 v
    │  │  │  │  │      
8 _9 r( w1 X, m$ p4 W8 n    │  │  │  │  ├─otf
" B* q% H4 o- P9 D    │  │  │  │  │      FiraCode-Bold.otf% ~& u9 u! b7 h( s9 x8 I. a: i
    │  │  │  │  │      FiraCode-Light.otf
3 ~. H6 V0 S! a( R    │  │  │  │  │      FiraCode-Medium.otf; b. T: n( B" @
    │  │  │  │  │      FiraCode-Regular.otf
) H6 [" [# U. X: g    │  │  │  │  │      FiraCode-Retina.otf
# Z. [! Q0 o' b    │  │  │  │  │      
* t* q$ D$ ~! [* s% [+ u$ [1 Y    │  │  │  │  ├─ttf
! `! t* S3 G+ ?3 e/ x    │  │  │  │  │      FiraCode-Bold.ttf
& X3 F' Q3 Q9 ~    │  │  │  │  │      FiraCode-Light.ttf) b3 j; H( S1 Z; I" ]3 M5 I
    │  │  │  │  │      FiraCode-Medium.ttf
9 v. M) @. B( L! L$ ?    │  │  │  │  │      FiraCode-Regular.ttf
' d- Y3 R: p0 H8 ^6 ^( S, _    │  │  │  │  │      FiraCode-Retina.ttf
3 E2 @; P! {! ^3 J2 r    │  │  │  │  │      , I: E, I( d/ D, |( b9 m4 u4 {/ |
    │  │  │  │  ├─woff
/ e! E% T/ V( |- v, j    │  │  │  │  │      FiraCode-Bold.woff
+ ?& b: |( L& l( R    │  │  │  │  │      FiraCode-Light.woff
9 w9 j& ^  K9 E9 u. Q8 o    │  │  │  │  │      FiraCode-Medium.woff
! t6 M) A9 {- r$ E4 ~0 ~    │  │  │  │  │      FiraCode-Regular.woff
' a" V- R# l$ \    │  │  │  │  │      ; c; V& J3 j2 n2 H
    │  │  │  │  └─woff26 N) m+ m: S. ~) g$ L
    │  │  │  │          FiraCode-Bold.woff2* d# n$ p+ p6 S/ T3 Y
    │  │  │  │          FiraCode-Light.woff2% ^5 Q8 X- c7 C& P" m! M" u
    │  │  │  │          FiraCode-Medium.woff2+ {% `2 k3 a4 n+ ~) ]
    │  │  │  │          FiraCode-Regular.woff22 ]% M( J' D+ |1 Z' ^
    │  │  │  │          ; _( [! z+ q' E! A# `, a; [
    │  │  │  ├─print& d/ `+ ^$ F9 t
    │  │  │  │      paper.css
- g4 N3 o1 ]0 D/ _2 p    │  │  │  │      pdf.css
& K% b5 [" @3 I4 E. G    │  │  │  │      
: O" }% Z0 {1 m. t2 z! _* Q    │  │  │  └─theme6 K% E, a3 Z* N2 e& |
    │  │  │      │  beige.css
1 K6 H) J, |8 J8 [* e; M4 O    │  │  │      │  black.css
. @9 n  b  t9 y% A    │  │  │      │  blood.css# B6 X! l( [+ [0 x
    │  │  │      │  league.css
. q& ~3 b& R' e" X6 G    │  │  │      │  moon.css
# y& t9 U- Y& g    │  │  │      │  night.css- Z6 }/ v; m1 V. G9 ?, x; I
    │  │  │      │  README.md
& j) v! A3 r1 T* _2 j    │  │  │      │  serif.css
' N" B) w4 V/ u0 w0 B( E9 g7 k    │  │  │      │  simple.css0 i$ c+ A% w5 M5 M1 d% W  o! f
    │  │  │      │  sky.css
2 g) x1 x' e2 @+ h) h8 W    │  │  │      │  solarized.css
3 N' d/ o4 g2 u    │  │  │      │  white.css
  d4 e3 ]/ ^6 h2 O* f) q# |    │  │  │      │  
9 Y! C  A7 w, A1 H- e) v1 Q2 K    │  │  │      ├─source5 `+ d( o, x7 Z5 I8 J
    │  │  │      │      beige.scss9 f7 a; a; l% x/ d
    │  │  │      │      black.scss
- ?5 z. \6 _# C9 J7 U1 D    │  │  │      │      blood.scss
; v& u7 q' H+ F9 O+ c# n6 r+ [( p    │  │  │      │      league.scss
  D% o  X, t! S    │  │  │      │      moon.scss
8 j+ |- Z% X" q6 R    │  │  │      │      night.scss
" w% |( y- p( d    │  │  │      │      serif.scss8 i/ y' S) }5 P, d0 Q9 r- J
    │  │  │      │      simple.scss  R6 e9 A/ E# c+ O8 h4 O
    │  │  │      │      sky.scss: W: E# }9 k- S
    │  │  │      │      solarized.scss
. ?9 H; ]2 f+ u5 [    │  │  │      │      white.scss
+ U/ q3 {) Y9 [' r    │  │  │      │      ; Y7 {  ^6 k- F- |* t7 i
    │  │  │      └─template2 B. d1 @: _4 ^, }
    │  │  │              mixins.scss
" b; v& x+ l7 y* J8 S0 f! S    │  │  │              settings.scss
0 h& h" O5 p) x1 m, L5 c' m" b    │  │  │              theme.scss$ Z5 N5 q+ [- o7 ?, b, b
    │  │  │              
, x4 D  V5 {; k$ b! G7 W8 f    │  │  ├─images
' ?% G7 B5 i  L' K    │  │  │      active01.png: f# Q9 V$ _1 M
    │  │  │      c.jpg1 v+ j. ]( o0 G6 N. P, F
    │  │  │      eureka01.png
6 ^: y) Q8 P4 A$ g) m( \    │  │  │      eureka02.png
0 n2 E8 t" ~2 j  T$ @& f1 J    │  │  │      eureka03.png- Q' o+ V! B5 A% S/ W1 X3 n. }
    │  │  │      feign01.png
- y3 U9 }/ G: H7 G$ ]  Y& h    │  │  │      feign02.png) `0 o8 v9 w& A2 z4 N7 D$ m
    │  │  │      feign03.png- a. p: ^9 P( C
    │  │  │      feign04.png3 K& d# ?1 ~& P& E
    │  │  │      feign05.png
6 ]9 r, d; x% `& X* S8 i- @  {# Q    │  │  │      funny01.png; k- W4 Z: k% s+ R
    │  │  │      gateway01.png
* s  d* r$ R, L    │  │  │      gateway02.png
1 s+ F* ~' ]) Q& k    │  │  │      gateway03.png8 ]& `+ Y; {1 D7 d. ~( V
    │  │  │      gateway04.png/ @" h/ u" C+ C! X# e0 G
    │  │  │      gateway05.png* q( ~+ N. c- [  K
    │  │  │      itheima.jpg: r0 Q" n: j) O$ \0 m. w
    │  │  │      itheima.png8 X! K8 c7 i! x9 N
    │  │  │      jlewis.jpg
+ E0 ^  C6 j% N6 d    │  │  │      loading.jpg0 L/ O) t$ o9 \% e" O# {9 i3 W
    │  │  │      lottery01.png+ [# z% h) l2 ]" H/ A; N
    │  │  │      lottery02.png. V) ~! z0 |3 q* K
    │  │  │      lottery03.png7 s' C' R) j2 a; `  y% K
    │  │  │      m.jpg
/ Y3 Y( Y- v& K6 a- M  r- E    │  │  │      mb.jpg
7 F. A* q! ^: ^7 ~! k) z, q    │  │  │      mf.jpg0 @5 q. [3 H+ n! t1 w. e
    │  │  │      micro01.png
% E; W" r, ?6 ~: I0 X0 m    │  │  │      micro02.png+ }6 p5 R9 k3 A* S7 J4 X' s) s/ H
    │  │  │      micro03.png; V* m$ D0 F. o
    │  │  │      micro04.png
/ r/ @7 T: `9 V$ Y% H9 Q) R    │  │  │      microservice01.png
9 ~1 `! N2 Y7 \4 v: [. J! o    │  │  │      MicroServiceArt.png
) i) K9 y: }9 e% \" r    │  │  │      s01.png
1 X; ]# j! N# p2 p8 }# `    │  │  │      single01.png
2 _& F7 m2 i4 c1 I( L9 Y    │  │  │      single02.png
) b2 }+ D2 H7 `8 Q    │  │  │      single03.png+ ~. s' f  P) ~, ?* A  [
    │  │  │      SingleApplication.png! N/ v' F8 F) E1 m& f0 A; `- K
    │  │  │      6 X: s' l9 d0 N! w3 g2 y# P
    │  │  ├─js& t+ U8 f" y' i
    │  │  │      reveal.js
# W; `" E: M1 F    │  │  │      reveal.min.js
$ B" b/ S% m  S- o2 g( o    │  │  │      - k, y$ G$ ^# f! B4 D
    │  │  ├─lib
- D* s  c, z; Q1 T    │  │  │  ├─css9 a5 P0 ^+ ^# ^, ~" j0 _, W
    │  │  │  │      zenburn.css
9 T3 A, D3 b, h  U    │  │  │  │      , T5 C' S. t% o6 Z: o6 R* ~
    │  │  │  ├─font* n. ?$ L3 x: O2 C0 b: U0 y
    │  │  │  │  ├─league-gothic
2 |3 s2 M$ a! w+ N7 L4 f6 h    │  │  │  │  │      league-gothic.css+ j1 V& l- Y( q' Z2 U# `
    │  │  │  │  │      league-gothic.eot  S7 i- ~2 ^6 p0 E
    │  │  │  │  │      league-gothic.ttf  ~9 K9 T* ]  G+ q! `) w
    │  │  │  │  │      league-gothic.woff
; ~5 u( V. y/ C) E7 ^5 d    │  │  │  │  │      LICENSE- U; {" V" [' }3 J5 ]
    │  │  │  │  │      6 Y' I: d0 W8 J/ b/ ^8 Q; e
    │  │  │  │  └─source-sans-pro" ~/ [5 M6 Z' T, H  C
    │  │  │  │          LICENSE
% y2 O" W, R3 x& g    │  │  │  │          source-sans-pro-italic.eot
9 L+ I9 g3 q3 G    │  │  │  │          source-sans-pro-italic.ttf
# t. ?) X& z" d% R1 B! t    │  │  │  │          source-sans-pro-italic.woff0 i; ]& U! f9 i8 t/ H8 Z  A
    │  │  │  │          source-sans-pro-regular.eot
; p; v# _/ T# F    │  │  │  │          source-sans-pro-regular.ttf
& z. m8 P3 ?8 b( b7 u; k: p4 ^    │  │  │  │          source-sans-pro-regular.woff5 Z. A1 ?  I' J, z
    │  │  │  │          source-sans-pro-semibold.eot
" k( Q  D$ n) F+ [    │  │  │  │          source-sans-pro-semibold.ttf
7 g5 N& H# f/ Q! A    │  │  │  │          source-sans-pro-semibold.woff# i- D3 r0 `  n9 c1 X" n( `( r
    │  │  │  │          source-sans-pro-semibolditalic.eot
. c  @& H* P( [! B$ ^* R    │  │  │  │          source-sans-pro-semibolditalic.ttf
/ r& T% A/ ^0 v& `$ |    │  │  │  │          source-sans-pro-semibolditalic.woff
+ T/ e- ~% e4 v2 l    │  │  │  │          source-sans-pro.css0 Z4 i  T9 Q! S' v" [- g. x' |
    │  │  │  │          7 c3 ~9 D; S4 g9 }
    │  │  │  ├─js! C7 e" k4 n4 r8 M
    │  │  │  │      classList.js4 r0 E# a7 m" i1 T0 A8 I5 o
    │  │  │  │      head.min.js
$ u9 N2 T* ]/ u3 C% ?" R    │  │  │  │      html5shiv.js
" \7 ~: y9 Z* B" L* i    │  │  │  │      
3 w- @" Q% Q, e' v    │  │  │  └─plugin0 d* m" B, g2 W" L- _  o
    │  │  │      ├─highlight( [. i  s) Q) D
    │  │  │      │      highlight.js
- @5 s4 E; J: C8 D4 A    │  │  │      │      0 a9 |3 r0 w, w( P
    │  │  │      ├─markdown
2 ?1 w$ }" D$ L% `" c3 G    │  │  │      │      markdown.js8 t+ {+ F" F: x7 r; l2 Q7 t
    │  │  │      │      marked.js" z( Y, g& ]6 R! g& t" E2 k  {7 D
    │  │  │      │      
9 s1 s/ ]' ^: |- ~/ V    │  │  │      ├─math
0 N0 ^+ B2 s5 G: ]; ~# D, [" Z4 L' y  d    │  │  │      │      math.js
% l* H8 j3 q. [* l0 H    │  │  │      │      
5 G4 Z* G% T$ z8 m" ]% R    │  │  │      ├─multiplex
: f) `2 o4 p" D5 U    │  │  │      │      client.js& Q0 ~' g  M; K) T1 K0 j+ `# K' _
    │  │  │      │      index.js' b5 m5 q6 j0 \1 t, q, `
    │  │  │      │      master.js9 ?1 L# q0 L: j& @
    │  │  │      │      package.json
: {) G9 h0 F0 x# Y- {    │  │  │      │      6 N) i$ N* J. j/ ^2 M/ U: G$ s
    │  │  │      ├─notes
. _& J: [2 t& J& i' @  @    │  │  │      │      notes.html: p( d# k/ o' x1 w0 N
    │  │  │      │      notes.js
/ I+ H; R5 b0 w2 [0 ^: V    │  │  │      │      , z7 b! T6 h! R3 e* H: a* c; V
    │  │  │      ├─search
! s, K5 r5 A* L! X& t    │  │  │      │      search.js2 d/ w2 ?& ?& ^8 ?
    │  │  │      │      1 D1 p4 ?+ N4 s0 a
    │  │  │      ├─tagcloud0 u) x& y8 V) v. y$ Q
    │  │  │      │      tagcloud.css
" }% \3 L. R( |& H6 G: s* E    │  │  │      │      tagcloud.js
8 Q1 M- i8 r+ K/ g+ y8 S    │  │  │      │      tagcloud.min.css% q" ~6 Q5 W- @
    │  │  │      │      tagcloud.min.js
3 P- W/ _! C! @6 D0 u% p' F    │  │  │      │      
6 }  v9 a) }8 m6 x" [/ i8 o4 G    │  │  │      ├─yungen
* ]  H- y* r1 h7 Q3 V! s* y    │  │  │      │  ├─css
+ c  T+ x1 Y, D. `. n5 p    │  │  │      │  │      yugen-logo-hideOnLoad.css$ M. t# _4 e% J! \  O
    │  │  │      │  │      yugen-logo.css
8 F/ w# h" A: F/ S6 p/ @    │  │  │      │  │      
1 ~& f9 m# q+ a3 D) u6 M- g    │  │  │      │  └─js
) K2 Z8 M0 g; Z- i; H9 }9 j1 @    │  │  │      │      │  yugenlogo.js+ r4 d% L3 R  ^1 A
    │  │  │      │      │  yugenlogo.util.js& J0 F5 \) \* W2 _" I- T( `
    │  │  │      │      │  ) O# A3 W% j5 M
    │  │  │      │      ├─input
1 f; n5 L8 g; D7 }    │  │  │      │      │      yugenlogo.input.move.js0 [3 P8 ?2 l- T! u1 w# R. ^
    │  │  │      │      │      yugenlogo.input.orientation.js
* p( {% C' @$ X, g( E/ }% v) n    │  │  │      │      │      yugenlogo.input.press.js& u( s$ q5 M& V2 Q* Y+ C$ a/ o, d
    │  │  │      │      │      
. v6 v! O" C% w) \+ i& H    │  │  │      │      └─libs' B; V) @$ f9 R* y
    │  │  │      │              jquery-1.4.4.js
* r. L% X" \* L0 t1 F! K    │  │  │      │              jquery-1.4.4.min.js" Q; V0 |" D% f: N! I
    │  │  │      │              ) c, N. r8 w5 h
    │  │  │      └─zoom-js/ N4 N) V8 B, X2 S
    │  │  │              zoom.js/ D4 v. H  q4 j5 N+ L8 S$ l
    │  │  │              
( d1 [+ D& J! X8 ?7 C% p    │  │  └─plugin
0 i  Q: f7 z% E8 r& E    │  │      ├─highlight
" V( \* j' ^3 R) y* j    │  │      │      highlight.js0 o+ Q/ K1 C( d8 h
    │  │      │        Z% t3 j+ [- G' `% f5 r
    │  │      ├─markdown* p, {" G4 B* o6 A9 ]+ D
    │  │      │      example.html
/ ^4 I/ A' q( |# R+ F7 b, M* u" L    │  │      │      example.md
7 E1 Q$ d  t- ]    │  │      │      markdown.js" U9 n. F* E" b9 ?, E5 l
    │  │      │      marked.js5 a# D2 J& Z4 i6 Y  `# W7 J9 a
    │  │      │      * p) h: I- J" r
    │  │      ├─math( H2 `+ F! a8 C3 D$ H9 s  p, p; q
    │  │      │      math.js% [% \- A. {, `
    │  │      │      0 L2 f( |7 P' z5 F! o: n+ N+ U2 L2 o
    │  │      ├─multiplex
; m; V% Z4 ?! q( e3 [, L    │  │      │      client.js  k! |2 r% ^% z. B8 D
    │  │      │      index.js  o) h! U! O6 j
    │  │      │      master.js
% B& D0 }6 a+ S# b    │  │      │      package.json( ]) F2 O7 I8 o: D) d
    │  │      │      6 Z  R3 L( \; a+ y/ D5 q6 A1 P
    │  │      ├─notes
  z$ J/ F- [3 h7 B: l, P( F' Z    │  │      │      notes.html* X! ~' J+ L8 K# T, O1 z1 X
    │  │      │      notes.js( l4 H- e* e/ P) R. T8 A( X
    │  │      │      
/ W5 M8 M) e* q5 E3 s/ `' D1 t    │  │      ├─notes-server1 `; h/ c5 m; Q$ ?9 n' A$ }
    │  │      │      client.js
0 c( S) o+ [0 i: }0 r- y    │  │      │      index.js% W* w, R% ?7 J1 v! ?" d" i8 _6 E
    │  │      │      notes.html6 a( j0 P* ^9 l5 i' }7 b4 W! c
    │  │      │      
; l5 k+ A1 H. b) L& V1 ]5 j* _    │  │      ├─print-pdf
! V8 D  e1 i$ ?6 U" V; w    │  │      │      print-pdf.js, A" H. `3 ~0 Y) j
    │  │      │      0 `) O2 ~% x. P1 @0 c4 z0 E* k: g
    │  │      ├─search
4 h( ~8 g+ j- U5 Z    │  │      │      search.js
- {+ D$ C4 \$ b7 I    │  │      │      
+ R4 q% Y0 x: `# U% V; ]. Y& x: g    │  │      └─zoom-js# ^9 K7 D, n* W+ f7 [. u  W) ]( j
    │  │              zoom.js
' R) l! \3 f: f7 Z( W, Z    │  │              
! p& W, P1 U  G- w$ ?& H* x" P) U    │  ├─springboot版本彩票项目& f3 i; }* N' h$ b
    │  │      readme.md3 G& w6 i" t& w0 S
    │  │      
3 n) ]& B6 q/ _, f; v+ O    │  ├─sql! @' E  x/ X0 D0 t* v+ z# T: {2 _+ h  `
    │  │      info.sql5 l' U& z1 U/ V
    │  │      user.sql9 I+ D6 Q4 U  E4 C% [9 M
    │  │      % p# H) e. i9 h
    │  └─工具类
& Q% D6 O, i% q! i% }    │          JsonUtils.java! i/ M* x4 y4 g1 j! @; {7 ^# B
    │          ResponseVo.java
' f: o; d8 F( l2 i    │          UUIDUtils.java$ e' C' m* w1 y0 O' F: A0 t
    │          9 _; h+ Y$ d9 R: m+ O
    ├─05_赠送课程-手把手写比特币
& U4 B/ d7 h/ C4 i    │  │  readme.md
/ w3 A+ k/ `/ T$ K( C! [8 @. f4 M    │  │  
2 u: h, ~) ~* J8 Z6 T) K+ w    │  └─code% b$ n, [, p5 @4 |, A, M7 ~; E. `
    │      │  bootstrap.sh
. I7 v; x) n" k6 F6 a- i' D! y    │      │  
1 s# a% e6 y6 Q/ y" ~- L    │      ├─Note_blockchain1
! i; a0 j3 W- Z7 l    │      │  │  build.gradle
4 N' ^" X4 ?2 d2 Q    │      │  │  gradlew% \2 s% z* @) g9 n/ q! R* f
    │      │  │  gradlew.bat
) m! [& g) A: e    │      │  │  note.txt2 z8 T5 K* L- l0 T" z! P/ e& u2 G
    │      │  │  settings.gradle
: O; [) @; k1 K) R    │      │  │  2 r5 s% ?" Q1 P& W9 }
    │      │  ├─.gradle7 {' B( `9 d! T  i
    │      │  │  ├─4.0
8 G2 P9 X: h6 y    │      │  │  │  ├─fileChanges0 o5 h& E. l3 |  W1 t# ]
    │      │  │  │  │      last-build.bin1 ]1 e. h( A: _
    │      │  │  │  │      
/ o8 ^  s1 }1 [$ }1 [    │      │  │  │  └─fileHashes9 \4 w+ T# Z" x) i
    │      │  │  │          fileHashes.bin7 H/ K  h4 ~+ y7 x0 q" J+ x
    │      │  │  │          fileHashes.lock
+ j0 i9 Y& Z/ _* B9 B) H2 B% ?    │      │  │  │         
4 i, @- \' Y: r! u! l1 L    │      │  │  ├─4.4* T; {: }0 h' a! C+ o
    │      │  │  │  ├─fileChanges% U! _: l9 @2 ]: G! R
    │      │  │  │  │      last-build.bin( p; f; _; ^  }- i8 G" I
    │      │  │  │  │      4 y1 F" E$ P, t8 {/ ]- P- H
    │      │  │  │  ├─fileHashes3 A: K7 f+ d8 }5 \
    │      │  │  │  │      fileHashes.bin3 w# M  V! V# x! g/ M: h" g
    │      │  │  │  │      fileHashes.lock( U- Q3 ]; o! [3 W. Y1 Y2 C
    │      │  │  │  │      $ |" a  W3 n5 p! Y- W# E' Q) y
    │      │  │  │  └─taskHistory6 ~! D5 G# [- v3 W  c  i2 t" Z
    │      │  │  │          taskHistory.bin
) Y4 b8 @& P4 g  h5 C$ V6 a    │      │  │  │          taskHistory.lock
4 d5 e% [7 t. e3 d/ s! L    │      │  │  │         
$ v( c& E4 X  K/ @5 G; A! `    │      │  │  └─buildOutputCleanup, W' \; I, C- y) f/ j% [
    │      │  │          built.bin1 ~2 r, g* ~' o2 U0 g
    │      │  │          cache.properties
+ D3 a- p0 i) V, r" {% ]4 @/ `/ m    │      │  │          cache.properties.lock+ f7 G# j' L) I) b4 M, L* h  O
    │      │  │         
$ Q/ r  L/ I' d( ]; k9 O    │      │  ├─.idea
, N6 j( v7 q# U  {, M    │      │  │  │  compiler.xml4 L9 I$ m) ~( m7 T' b4 C
    │      │  │  │  encodings.xml* F, x' E" w# i  |" j  B
    │      │  │  │  gradle.xml
4 r+ o+ U" H2 Y, L( t    │      │  │  │  misc.xml
; w3 C% ^: u6 D    │      │  │  │  workspace.xml
' T  f8 ]8 L: v/ i$ B$ A    │      │  │  │  # ^( ^, ~( [5 U3 F2 d
    │      │  │  └─modules4 e' D0 E/ V$ N3 @/ L+ {
    │      │  │          a.txt
" E* |/ B  k5 d3 l    │      │  │          note.txt
$ W$ `) r: B; O8 o8 V) P    │      │  │          Note_blockchain1_main.iml
! C1 s% _7 v8 ~5 d  d6 r7 [    │      │  │          Note_blockchain1_test.iml$ F1 {& C  _/ i" h; k7 g4 O
    │      │  │          4 a- w! h& U% B0 M! q
    │      │  ├─build; K3 n! e& e; M
    │      │  │  └─kotlin-build$ p$ J# j# }% s8 I  v
    │      │  │          version.txt
$ e  S  f4 w/ ?" Q4 D9 K    │      │  │         
7 }$ m5 m$ `( e  u# g    │      │  ├─gradle& E$ o9 Y/ L2 ]& U3 }7 L; R$ s. @# e
    │      │  │  └─wrapper
. T5 u$ ]( v* u- q: @. f    │      │  │          gradle-wrapper.jar
( N/ i5 R7 }( Q- I4 z    │      │  │          gradle-wrapper.properties
& Z. Y* p) B( Y+ X* m, f* ~: H    │      │  │          + o) s( N4 @" s
    │      │  ├─out: a# K4 a, r: s# A* `$ @# o0 X+ @
    │      │  │  ├─production' |+ N/ L* n- p( |8 Z+ T( l
    │      │  │  │  └─classes, I' E& V8 C2 Y8 G# f
    │      │  │  │      │  addGenesis.html( u  Y( J7 c; Y2 _" ^* |7 N4 K
    │      │  │  │      │  addNote.html0 b2 ~, X  g9 l1 M0 f
    │      │  │  │      │  addNote.html.baiduyun.uploading.cfg( F2 u( D8 q( }0 ~' v& z
    │      │  │  │      │  addTansaction.html
- \; W; X% m4 R1 n0 @, U    │      │  │  │      │  DecryptJsResultKt.class7 r7 f3 [0 w* @' Z) c5 z7 n% g+ ]9 F- S
    │      │  │  │      │  HashUtil.class
0 \8 N9 w' L* ^  w% a    │      │  │  │      │  MyClient.class% h2 C, B. K2 {$ s1 L, V
    │      │  │  │      │  MyServer.class( p  X# h+ {+ j- }
    │      │  │  │      │  NoteServerKt$main$1.class
8 w8 v" C) x' x1 G6 F' m' ~    │      │  │  │      │  NoteServerKt$main$2$1$1.class0 K7 |+ ]) t, B( O7 {/ O. e
    │      │  │  │      │  NoteServerKt$main$2$1$1.class.baiduyun.uploading.cfg
2 T" p1 M7 d( i# p5 d    │      │  │  │      │  NoteServerKt$main$2$1$2.class
4 l" X+ j. B. u6 r, a; p    │      │  │  │      │  NoteServerKt$main$2$1$3.class  }1 f2 w; x' M+ h
    │      │  │  │      │  NoteServerKt$main$2$1$4.class, j3 D0 i: \6 ]. Y, R
    │      │  │  │      │  NoteServerKt$main$2$1$5.class
, k6 ?4 D( o% K! U$ @9 {/ B1 r  y    │      │  │  │      │  NoteServerKt$main$2$1$6.class
8 @: X6 K3 T( [    │      │  │  │      │  NoteServerKt$main$2$1.class3 d1 k; z! q& o1 l
    │      │  │  │      │  NoteServerKt$main$2.class  j1 i8 v( y5 n# P; \
    │      │  │  │      │  NoteServerKt.class
, W$ a1 b" c- j% g! c* N! N    │      │  │  │      │  RSAUtil.class
7 A: o7 g. I; I+ M! F3 Z9 v    │      │  │  │      │  TestKt.class
& m: y5 `& B% M; P* X1 L" X4 j9 _3 ?    │      │  │  │      │  
4 {' b8 s1 G8 r/ @1 y, e: a    │      │  │  │      ├─bean6 ?8 X7 y- I) f2 I
    │      │  │  │      │      Block.class
: h7 f' v3 |0 ]3 K3 t    │      │  │  │      │      BroadBean.class
* J# }' x9 K; a; K  |    │      │  │  │      │      NewTransaction.class4 w% i/ g2 t! A- a% i+ Y! t# ?
    │      │  │  │      │      NoteBook$loadFromDisk$result$1.class
( B; H: M$ [  B/ R! z    │      │  │  │      │      NoteBook.class1 |. D0 ]# X3 s7 p
    │      │  │  │      │      
7 J- p& K& ^" z( E8 O    │      │  │  │      ├─encode
( ^. H9 u3 E8 e* E3 s    │      │  │  │      │      TestKt.class$ A( q2 _" M( l5 s! @
    │      │  │  │      │      3 _% S; u& C' g2 [3 k/ v
    │      │  │  │      ├─js
8 u! r  k0 h% ^- ^. k! `% r! V8 H3 z    │      │  │  │      │      hashes.min.js
1 ?! S: `0 ]: G% B  n- q- i8 N7 o    │      │  │  │      │      jquery-3.3.1.min.js
" b" @) i: a- x" g$ I    │      │  │  │      │      jsencrypt.min.js
# g. S5 b9 o* A    │      │  │  │      │      " j: P. V( q* X9 y* }, |
    │      │  │  │      ├─META-INF
0 m- q9 T( I. S- y    │      │  │  │      │      Note_blockchain1_main.kotlin_module
2 \$ [0 Z3 d9 ~4 j    │      │  │  │      │      + E9 y: c! j4 j; S1 t! ?
    │      │  │  │      └─translate
0 S) N% X& \/ A3 [$ R# I1 ?9 c6 D    │      │  │  │              Transaction.class
7 x+ Y0 i: A! [" u' q8 ~    │      │  │  │              TranslateTestKt.class  n6 M2 N; D: S/ E& X+ o# w
    │      │  │  │              Wallet.class
' P/ V; [. T1 n    │      │  │  │              0 B3 p1 P& _0 E, a9 K+ b, j& T! q6 S
    │      │  │  └─test
' c+ T% F6 v8 [    │      │  │      └─classes
3 |- p  p  h3 P/ {& Y2 F! h0 V, w    │      │  │              TestHashUtil.class
$ ]  i8 D9 e: s6 m    │      │  │              TestNote.class, f8 N- Q# z7 O& D2 w0 M" F
    │      │  │              9 y0 j) Q% H, h2 z3 F
    │      │  └─src0 @; H1 |) T# J  `$ ~0 O8 ]. J/ s
    │      │      ├─main
" x7 G! U$ u( n( e" E5 O    │      │      │  ├─kotlin6 Y  z' }% B. v  D. {% a# e8 r
    │      │      │  │  │  DecryptJsResult.kt, y* L- \& o+ o0 b, E9 f7 d
    │      │      │  │  │  HashUtil.kt% x9 ], r; q1 L
    │      │      │  │  │  NoteServer.kt5 q% X7 U& |( x2 Z5 z
    │      │      │  │  │  NoteServer.kt.baiduyun.uploading.cfg+ s6 m6 ^& r7 }7 H, F
    │      │      │  │  │  RSAUtil.kt
- n* d0 j5 A7 S    │      │      │  │  │  Test.kt
+ x3 t; o! d9 [- {9 N    │      │      │  │  │  5 }& h1 {( E% I5 @$ l& x
    │      │      │  │  ├─bean
+ }/ n# N- L+ C; z  m* x; J7 c    │      │      │  │  │      BroadBean.kt
) h3 l" {: ?, n* a; G    │      │      │  │  │      NewTransaction.kt
2 ^% n. o  a% E# z3 z    │      │      │  │  │      NoteBook.kt- R9 r4 t( A) v, C) L7 a) `
    │      │      │  │  │      5 n1 Y# y! K8 K. l. c$ f- v7 C) z
    │      │      │  │  ├─encode9 l7 Y( |9 |9 I7 E+ [1 X- b. p" g
    │      │      │  │  │      Test.kt
8 k# u6 \5 I" n% n7 w$ K  U" T    │      │      │  │  │      + Q1 L2 d2 A& C$ a# v
    │      │      │  │  ├─translate% _5 x+ S6 ^: [
    │      │      │  │  │      TranslateTest.kt9 S8 r; b) _3 F% y1 M7 y! L
    │      │      │  │  │      
# E0 |6 P; {0 m& c    │      │      │  │  └─websocket& [7 s4 A$ L7 a2 T( H, I
    │      │      │  │          LaucnClient.kt% }. n. m- E. q
    │      │      │  │          MyClient.kt. ?( C! Y0 Q# W% r, ^: T8 ?* m
    │      │      │  │          MyServer.kt
( ^. _8 K9 p) g    │      │      │  │          4 Z' B3 ~1 S2 [+ h
    │      │      │  └─resources
! G, F0 x. Z: N7 K4 S) p# }    │      │      │      │  addGenesis.html
- \* ^8 ^, v9 v8 h( o    │      │      │      │  addNote.html
3 \& F! f& I5 k' b& P3 `    │      │      │      │  addTansaction.html
0 f( @. g" G& W/ X0 g6 q- A' K    │      │      │      │  addTansaction.html.baiduyun.uploading.cfg6 U/ i/ x9 W% H# A8 L
    │      │      │      │  
. W$ `5 ~7 F7 ]. ]' H3 a7 ^* Q7 l    │      │      │      └─js( v/ M- _' _$ s5 q& a6 X
    │      │      │              hashes.min.js9 h" i! x) O2 d$ e. S# m
    │      │      │              jquery-3.3.1.min.js
$ Z  Q3 P4 D" V/ R2 ?/ |: |( p    │      │      │              jsrsasign-all-min.js
# b# A9 i' T+ o5 q5 D9 G7 S    │      │      │              2 s8 u$ i. ]' Z6 `7 @7 y* i. e
    │      │      └─test
- P, |! Y" ^3 c$ d& ?- B5 m5 @0 h3 k    │      │          └─kotlin1 a+ r8 a9 G' _! _4 W2 U
    │      │                  TestHashUtil.kt
# x8 {$ @* V0 l5 L& a    │      │                  TestNote.kt+ L# A: d2 I% o) ~$ T
    │      │                  & Y, q* J- [& ~$ Q- }
    │      ├─Note_blockchain2
" w3 h  G; L' I( X5 Y4 Z9 \    │      │  │  build.gradle
  \% f9 }- }* p- d- z    │      │  │  gradlew
3 b* J% S- c- O' o4 x7 A2 b    │      │  │  gradlew.bat& ^3 p: D9 V% a4 t7 a/ O- W7 l0 E) l+ _
    │      │  │  gradlew.bat.baiduyun.uploading.cfg
6 ?8 k3 H9 W# i    │      │  │  note.txt( f( h2 E5 N! J" o
    │      │  │  settings.gradle5 ?* W, _/ z+ O) j
    │      │  │  , j5 e7 w( |; r, B1 M! [* d
    │      │  ├─.gradle
- p5 \3 Y1 h: v6 j- j$ G    │      │  │  ├─4.0
8 }) [4 c  O7 K$ I+ A! O    │      │  │  │  ├─fileChanges
# B4 t! V% _( [' e4 s& c    │      │  │  │  │      last-build.bin
! f& F5 h  s  X$ y' h5 {! I    │      │  │  │  │      7 T& a) v$ B$ `/ S; h
    │      │  │  │  └─fileHashes4 t* p5 q$ g) x0 j& j( H8 F
    │      │  │  │          fileHashes.bin
7 ^8 h+ K  Q- I    │      │  │  │          fileHashes.lock5 d1 F3 t7 H) Z5 L
    │      │  │  │          fileHashes.lock.baiduyun.uploading.cfg
: o2 c) i; {$ a: N2 j' Z    │      │  │  │          1 t4 o0 H* R- e) e0 a1 }, ?
    │      │  │  ├─4.4- g3 M2 K$ c, G) z4 `7 I. I
    │      │  │  │  ├─fileChanges
. b+ a, @+ V8 R8 R( w+ Q2 ^    │      │  │  │  │      last-build.bin; l! X# u5 ~0 e2 B& K) o
    │      │  │  │  │      
; G3 C7 W( D; h8 t    │      │  │  │  ├─fileHashes  G- A# {9 M0 K: L: r5 N6 V
    │      │  │  │  │      fileHashes.bin4 i1 D, f: }; o' Y( l2 ?8 c
    │      │  │  │  │      fileHashes.lock
0 {6 m% l" v% N( o    │      │  │  │  │      
- X* D% Z1 d/ L5 S6 p    │      │  │  │  └─taskHistory
* o* ^# X9 k- @1 v2 C    │      │  │  │          taskHistory.bin% q; Y; O/ j$ l" J
    │      │  │  │          taskHistory.lock
, p4 i. J3 v' |2 v6 J2 h8 T2 ~0 ^    │      │  │  │          1 \1 i) @3 k6 {- L5 t9 S0 B% c2 r+ [, z
    │      │  │  └─buildOutputCleanup
4 d7 t8 @* S  }& w    │      │  │          built.bin7 \1 ~% f2 p+ S0 v
    │      │  │          cache.properties# M5 e% C# X. H+ ?* ~
    │      │  │          cache.properties.lock) Y7 }* a8 v- o- T3 ?
    │      │  │         
/ S3 O1 p! A' C$ ^$ _# x. |    │      │  ├─.idea2 u& a& f$ A) h, [1 c
    │      │  │  │  compiler.xml& T) d& i/ q  _, i0 U
    │      │  │  │  compiler.xml.baiduyun.uploading.cfg, d$ ~% u. M3 _" u/ V
    │      │  │  │  encodings.xml
3 b: k+ p; V) V5 H, l  i/ e    │      │  │  │  gradle.xml
/ m% W, U$ g0 m) Y! L* F    │      │  │  │  misc.xml
; X: n4 t8 Z! \0 |& T7 f    │      │  │  │  workspace.xml
1 `* x1 Z/ p5 Q    │      │  │  │  
5 `: e1 x0 H; f7 p    │      │  │  └─modules: D3 D% c$ C2 ^2 N: j
    │      │  │          a.txt4 }% @/ E" {+ O* y; R  V9 L) T% f0 _
    │      │  │          note.txt
& z! r" G3 l6 J4 f    │      │  │          note.txt.baiduyun.uploading.cfg
$ ~& J3 y5 Q+ f4 B/ ]    │      │  │          Note_blockchain1_main.iml" y& W" _) S. R; J- W0 J
    │      │  │          Note_blockchain1_test.iml
( c4 ?3 D1 g1 X! j    │      │  │         
8 q1 _8 u! o7 n; r    │      │  ├─build* I- T+ k! K. T$ [) f
    │      │  │  └─kotlin-build
8 N# \/ {' z4 L, r& R    │      │  │          version.txt7 W' h3 k1 E% C* F# d' S' ~% S
    │      │  │          " |+ ~" K; X" ~* s  h, i5 k
    │      │  ├─gradle% ?* B  r& c4 A0 N2 h3 x2 g7 e
    │      │  │  └─wrapper
* i9 [+ A9 x! Z3 a7 @/ n    │      │  │          gradle-wrapper.jar( W9 A$ q/ u. K2 R9 O: d
    │      │  │          gradle-wrapper.properties7 x0 D( p& R; x# v" ?
    │      │  │          6 ]/ h+ n% D; C$ q- Q+ F
    │      │  ├─out" s& V* ]& y) s/ o7 p* a! Z* V
    │      │  │  ├─production
) C* g0 @! L9 A9 g# c    │      │  │  │  └─classes
5 k. ^* ?6 @6 Y2 d    │      │  │  │      │  addGenesis.html
1 Q7 h! p. b) `# y% V    │      │  │  │      │  addNote.html
( M' t1 L$ i9 s    │      │  │  │      │  addTansaction.html
4 e% L* z0 B# s" r2 V    │      │  │  │      │  addTansaction.html.baiduyun.uploading.cfg2 I' ]  O5 q/ m% c' B
    │      │  │  │      │  DecryptJsResultKt.class
# f( y0 ~5 O/ Y; x4 G4 u4 \* G    │      │  │  │      │  HashUtil.class# R) U' m! K* F+ \! g7 ~! Z" M+ T
    │      │  │  │      │  MyClient.class' u) p7 b. l& F
    │      │  │  │      │  MyServer.class- j1 |4 {8 ?, d7 j
    │      │  │  │      │  NoteServerKt$main$1.class- \2 u. ~/ t2 w% P6 ~0 |
    │      │  │  │      │  NoteServerKt$main$2$1$1.class
: T! `% g( h( H$ M    │      │  │  │      │  NoteServerKt$main$2$1$2.class# S* K9 c' f* e! G  F  N
    │      │  │  │      │  NoteServerKt$main$2$1$3.class2 w/ @" z4 E4 t
    │      │  │  │      │  NoteServerKt$main$2$1$4.class
4 g0 S7 T0 z# c4 E2 ^! H* R3 h% j    │      │  │  │      │  NoteServerKt$main$2$1$5.class
. i5 D( o% }0 |& R7 }3 p    │      │  │  │      │  NoteServerKt$main$2$1$5.class.baiduyun.uploading.cfg& u0 h4 ~. o6 M3 r* E7 t7 b( W
    │      │  │  │      │  NoteServerKt$main$2$1$6.class
$ L  w; n0 [$ m) F- I! r- S* m0 y    │      │  │  │      │  NoteServerKt$main$2$1.class/ f, s1 y: B) P" D4 w
    │      │  │  │      │  NoteServerKt$main$2.class
% r2 t" v' C& m" v+ i    │      │  │  │      │  NoteServerKt.class
9 F5 h& I. \4 B1 W% n' b1 Z- p: N% U    │      │  │  │      │  RSAUtil.class
" i& I7 _" j0 ]. a  S! a% ?    │      │  │  │      │  TestKt.class
1 o: ]# b7 h; g8 y1 S- q" M    │      │  │  │      │  
. A, G7 q  q5 L7 |( P# F    │      │  │  │      ├─bean* x& [# e/ b, W& N
    │      │  │  │      │      Block.class
& E9 B7 {2 I. y, ?& T- Y8 ~" A" z    │      │  │  │      │      BroadBean.class
$ ]# @3 r" ]; a& a    │      │  │  │      │      NewTransaction.class
  A. C; c. s" T    │      │  │  │      │      NoteBook$loadFromDisk$result$1.class
9 B& d% l5 k& R, H0 ], d4 h    │      │  │  │      │      NoteBook.class7 W: ~, E% \1 S3 H* u
    │      │  │  │      │      
7 g: C/ N- A& N    │      │  │  │      ├─encode: E" f3 }( {& p7 J$ ?' c2 ^
    │      │  │  │      │      TestKt.class  c5 D; ^% h8 [- C0 T% M
    │      │  │  │      │      ( ?& v' d5 ^' A+ A" k* }
    │      │  │  │      ├─js
# Q3 T! @3 y+ W( {! k) d( Q% P+ h1 X    │      │  │  │      │      hashes.min.js2 }- I" L' A" \% C& L" Y# F
    │      │  │  │      │      hashes.min.js.baiduyun.uploading.cfg7 _: t8 Z/ n1 n( o
    │      │  │  │      │      jquery-3.3.1.min.js
$ |- D6 D7 `+ S+ a8 b) w2 h) M2 b    │      │  │  │      │      jsrsasign-all-min.js
' X) r2 X: G3 Q# E! y7 l2 q6 n    │      │  │  │      │      
6 P5 N7 I* R1 U, X    │      │  │  │      ├─META-INF
+ s9 R; H6 {4 e! f$ F    │      │  │  │      │      Note_blockchain1_main.kotlin_module
5 ~- Z. ~* [0 Q' E. F! U; @) m    │      │  │  │      │      Note_blockchain2_main.kotlin_module, ?1 B: X- ]/ T- {' Y6 _
    │      │  │  │      │      % m) v0 l6 p& I8 h9 O( l
    │      │  │  │      └─translate  L8 J% W' a  ^7 T7 j
    │      │  │  │              Transaction.class
* e0 @2 A/ M' W1 j    │      │  │  │              TranslateTestKt.class
, m: }7 v9 W5 q- |    │      │  │  │              Wallet.class
. ]3 D, m6 Y% `/ p6 V5 p& x    │      │  │  │              
, g" i) a+ Y- S: u+ z7 P    │      │  │  └─test( ]; i; o# X, h$ _& }) ]. a
    │      │  │      └─classes
- ]4 ]0 k% J( {$ K    │      │  │              TestHashUtil.class
0 n$ D" P% ~& _6 w    │      │  │              TestNote.class
) ~: Y( I9 @5 }2 o    │      │  │              ' V$ Y/ T7 B- ^+ E3 G
    │      │  └─src/ z$ N* C! D; {
    │      │      ├─main9 P7 R- P$ Q7 e# H+ e  R& X
    │      │      │  ├─kotlin
, o  E" N+ l+ h6 M; i. |# ~; C# j    │      │      │  │  │  DecryptJsResult.kt
4 E7 ]5 d& m+ Q" J9 {, e. e    │      │      │  │  │  HashUtil.kt
; Y- h" e% _0 E- s- v+ h# N# I    │      │      │  │  │  NoteServer.kt
) Y8 V: Y  G- ]& v: @+ l    │      │      │  │  │  RSAUtil.kt
) R$ k' r+ D( N4 e4 I    │      │      │  │  │  Test.kt
7 i5 _$ h8 @8 x& W' G, a" n    │      │      │  │  │  
& X% M0 p7 T$ N3 `5 u    │      │      │  │  ├─bean, _5 U1 |/ J: h: _  I
    │      │      │  │  │      BroadBean.kt  W/ I9 L5 G& e, H
    │      │      │  │  │      NewTransaction.kt: K! |7 `/ Y4 E, W6 y* j
    │      │      │  │  │      NoteBook.kt% N3 R6 J4 v# U- P, i8 c7 V
    │      │      │  │  │      & A/ w/ G) A( h; _& m5 ?
    │      │      │  │  ├─encode0 M" s" d5 @9 q& H
    │      │      │  │  │      Test.kt+ u; f, A, w2 Q5 w* T4 E
    │      │      │  │  │      
+ ~# K+ T) U: e6 M4 _! {  f    │      │      │  │  ├─translate
1 Y+ L* e* f9 C+ j/ [* B* Q  l    │      │      │  │  │      TranslateTest.kt
) L# \) r0 _7 @. j    │      │      │  │  │      $ x/ A# \: B  I! g$ A8 E& y0 S
    │      │      │  │  └─websocket4 H# d3 I: ~; C0 J
    │      │      │  │          LaucnClient.kt
: q7 y% m. n0 l3 u$ a2 A' |' {    │      │      │  │          MyClient.kt
* {, z$ |5 s- u2 K* U! z( u    │      │      │  │          MyServer.kt
7 a& k9 r; E2 _+ O    │      │      │  │         
9 D! v, x& m8 \* d    │      │      │  └─resources
; P$ s  Y* C- V% a    │      │      │      │  addGenesis.html; w/ b/ e! u' w. g2 X  O
    │      │      │      │  addNote.html
# p# q3 c9 I- ~! b& N8 d5 J: e    │      │      │      │  addTansaction.html/ K  ?; p' Z$ n' t: U4 e
    │      │      │      │  9 K9 `0 \7 U4 \- x/ d2 N
    │      │      │      └─js
9 F' ]% a: `9 Q+ |+ H4 o    │      │      │              hashes.min.js
) a0 |* e. a+ i# u; M, Z  e5 @    │      │      │              jquery-3.3.1.min.js
4 |5 X1 l' G3 |5 `( G6 T, k    │      │      │              jsrsasign-all-min.js& ~8 K- m  i! ]
    │      │      │              
+ \& u. P: A1 Q7 K& D+ Q    │      │      └─test
3 X! h0 }- }0 O5 e9 Z    │      │          └─kotlin& |! R1 i5 v) i- k1 c
    │      │                  TestHashUtil.kt$ x8 [6 m; T- n  y  C
    │      │                  TestNote.kt" D1 z9 X/ A! M
    │      │                  
. \) Y0 B6 a- r2 l  y- F    │      └─Note_blockchain35 p/ F+ J5 r+ @8 p2 O$ m  Q
    │          │  build.gradle
( {9 |3 J% ?1 _' {; R2 o" M    │          │  gradlew
& M9 Z2 p, Y# j9 l7 g8 n& t! S& `    │          │  gradlew.bat
5 e" W/ ^4 i0 n% Q0 {0 t8 G    │          │  note.txt
# G0 y7 f# Z( F    │          │  settings.gradle, Q/ ?& F: A# e& T0 P  z% s+ N
    │          │  9 d5 e+ j. t/ W4 A% V
    │          ├─.gradle% h- L) r7 j6 s0 r* U9 f5 @( J
    │          │  ├─4.0$ |# _/ I* A4 I6 \8 m, M2 n; I
    │          │  │  ├─fileChanges
6 Q% M5 |0 u. Q" @8 B3 X  |    │          │  │  │      last-build.bin" j* C% D& V3 L; n1 i; y/ G$ A
    │          │  │  │      6 b* _7 _! K1 h4 O' b$ O2 u  A
    │          │  │  └─fileHashes
/ O8 K3 ]' A  R: O    │          │  │          fileHashes.bin
+ [+ G0 g1 C) M% z9 }7 M( Z5 x    │          │  │          fileHashes.lock
- Y+ [) ]* y6 @: N    │          │  │          3 ~, d/ W" B8 [. Y
    │          │  ├─4.4, D5 t1 T  N0 L2 H9 g! ]6 Z
    │          │  │  ├─fileChanges
* e9 A4 Q6 k; y7 i1 O    │          │  │  │      last-build.bin
/ X- t" S3 ?- q3 i6 X% b( x& H) j    │          │  │  │      
7 w6 U2 h0 }  l    │          │  │  ├─fileHashes
6 o0 |' X4 b% R    │          │  │  │      fileHashes.bin
3 p0 K% m( z- }2 k( |; Y    │          │  │  │      fileHashes.lock
; |2 _" y' a5 Q* e- H    │          │  │  │      
+ S) h' x/ A6 Q  F9 O& t/ `    │          │  │  └─taskHistory2 |& [5 n/ f( t# d5 I9 t$ m
    │          │  │          taskHistory.bin$ x) c1 U1 U$ S6 h2 L4 N; @
    │          │  │          taskHistory.lock
6 |2 M0 u  M2 C7 |0 T! V' q    │          │  │         
% G  T( n% f3 _- z2 Y    │          │  └─buildOutputCleanup
9 F5 N8 ]! P# x$ [( z% @# W    │          │          built.bin
6 B4 b$ `; u2 a/ u& n    │          │          cache.properties% H. N' p5 H/ [0 B
    │          │          cache.properties.lock% c2 ?" X2 }) D( G3 M
    │          │         
8 D+ w9 X" t8 Q    │          ├─.idea$ C9 Q; d; M7 G+ [+ V; r
    │          │  │  compiler.xml
6 G- @/ V3 Q; k2 E    │          │  │  encodings.xml9 U/ @- h* C. Q. d$ z
    │          │  │  gradle.xml! {( i/ b: b# T1 U' S% U5 ?
    │          │  │  misc.xml
3 A) l9 U7 t& o, Q" X/ Z  `7 d    │          │  │  workspace.xml+ m! B5 m5 w$ \; T
    │          │  │  $ z+ y8 {/ [( ^
    │          │  └─modules
) Q% R! k6 C9 e& S5 ?/ f2 U  }    │          │          a.txt2 C4 [" \( G; }  {+ s
    │          │          note.txt
! X& j0 X3 ?$ H1 S    │          │          Note_blockchain1_main.iml* s$ r& T4 d# |8 L2 s
    │          │          Note_blockchain1_test.iml$ z( @1 ~! a9 @, ~( O
    │          │         
: L# J, r) }7 B1 y% I0 j    │          ├─build- W! B' c5 V8 }
    │          │  └─kotlin-build# ~5 F' w: p+ K' Q8 y
    │          │          version.txt0 A: x/ ?/ C% S1 x4 x
    │          │          - R: T9 F( `! F  P- f$ d5 n
    │          ├─gradle2 v- K$ R' U* J8 q' Q  i
    │          │  └─wrapper+ O/ _# n9 n3 _2 s: k$ l$ K
    │          │          gradle-wrapper.jar9 ~4 l1 _. y: i, x0 s" R
    │          │          gradle-wrapper.properties0 {. H, c5 f" S" }
    │          │         
- Y: D1 I* `; t7 M    │          ├─out
: L' w% g4 J% g: c* ^6 ^    │          │  ├─production- c" p. ]! w* e9 ?, @6 i8 d
    │          │  │  └─classes; V/ v: A- A  q0 t; h7 V
    │          │  │      │  addGenesis.html
& c& T1 A8 v/ ?    │          │  │      │  addNote.html3 O) f0 E2 h2 ^4 C
    │          │  │      │  addTansaction.html$ a' f3 W9 S% k) [" q) @& B  |
    │          │  │      │  DecryptJsResultKt.class
8 ~( ~3 j! \& q' ~5 M    │          │  │      │  HashUtil.class% W& Y2 U* D; H3 F, Q) _
    │          │  │      │  MyClient.class
# J+ C: ]# s% a: S/ J    │          │  │      │  MyServer.class* L# A# P& Z4 H# Y! Q8 T# }4 v
    │          │  │      │  NoteServerKt$main$1.class& g0 i1 ~0 u8 L- a5 v/ v" d
    │          │  │      │  NoteServerKt$main$2$1$1.class- M% O) d) I1 t+ E2 S
    │          │  │      │  NoteServerKt$main$2$1$2.class+ K8 {4 `! x" o, x# e/ d7 A
    │          │  │      │  NoteServerKt$main$2$1$3.class! s# }* X: M3 L% Q" _* v
    │          │  │      │  NoteServerKt$main$2$1$4.class
$ |+ c" V1 V2 y, M6 v8 w2 m    │          │  │      │  NoteServerKt$main$2$1$5.class
' L8 a! t' w. b, v' y  Y    │          │  │      │  NoteServerKt$main$2$1$6.class
" @; P9 P( G( Q4 |    │          │  │      │  NoteServerKt$main$2$1.class1 O' [( V* Z6 W2 o4 m
    │          │  │      │  NoteServerKt$main$2.class! v; `2 N, C" g: }3 T; n
    │          │  │      │  NoteServerKt.class
3 I9 N3 K2 M- I' h& O$ {$ C5 b/ U    │          │  │      │  RSAUtil.class4 C! U" x! P- p1 \  B# `
    │          │  │      │  TestKt.class& U6 \- `, `( W  Z& f8 v# _
    │          │  │      │  
6 _8 W; f3 [7 t6 K5 f" w& k$ u1 v    │          │  │      ├─bean" _. s* z% y3 B
    │          │  │      │      Block.class  e5 Y& V5 Q9 ?+ a' W) \& o
    │          │  │      │      BroadBean.class
9 P/ h+ E4 k( Y/ j/ K- w; G1 F- X    │          │  │      │      NewTransaction.class+ x# S, @5 i% Z# v! {4 B! K7 a8 }
    │          │  │      │      NoteBook$loadFromDisk$result$1.class
7 O9 c4 ^  Z8 {3 ^8 I    │          │  │      │      NoteBook.class
( @$ R' h' E  g; ?    │          │  │      │      3 k  Z; O8 K4 e7 i+ ?
    │          │  │      ├─encode5 @3 {# R- J" ]
    │          │  │      │      TestKt.class
( ^  o- u& I' [1 \* i    │          │  │      │      ) M. P& l) A9 w* w* J" c
    │          │  │      ├─js
" j) t( ?# h% H/ w9 T8 B7 ?    │          │  │      │      hashes.min.js
. W% I; h7 w+ K4 N* x    │          │  │      │      jquery-3.3.1.min.js: w; Z6 g1 o- a6 A5 I7 Q5 e
    │          │  │      │      jsrsasign-all-min.js, B/ g2 j) W1 Q5 w: R2 A- T& q0 R5 _
    │          │  │      │      
% @- i3 ]6 }' l) O* W    │          │  │      ├─META-INF
0 u; o5 h& Z# C9 u; Z    │          │  │      │      Note_blockchain1_main.kotlin_module
! M3 C# Y! `! N4 z$ V    │          │  │      │      Note_blockchain3_main.kotlin_module
) g4 |0 `) b9 @7 f    │          │  │      │      
# i$ ]4 A) |+ @4 X% V) H    │          │  │      └─translate' r2 h! S! I) u  e6 H& R6 d
    │          │  │              Transaction.class
0 m# V" f- W9 B+ C& t( w1 I    │          │  │              TranslateTestKt.class7 ?. ]8 u- h% w6 V5 \: l! z5 P4 S
    │          │  │              Wallet.class1 z2 o* q/ X9 n' |, _
    │          │  │              
) f2 s6 h1 ^+ g0 m    │          │  └─test
* L( E5 a6 J0 O8 d    │          │      └─classes3 e; f3 c- r) |  W! f" f
    │          │              TestHashUtil.class  ^) j; }! F/ J& _3 o+ `$ Q2 D
    │          │              TestNote.class1 z5 r! o9 d5 J" b
    │          │              5 r- d# ~6 `' F  r
    │          └─src
7 X" u2 z9 K& ~8 I    │              ├─main& A3 u$ \! {4 e! q  B
    │              │  ├─kotlin1 t$ D; z& i: C0 i0 G+ c* J
    │              │  │  │  DecryptJsResult.kt9 h, K/ Z* r% ~* G( [% c. D$ s
    │              │  │  │  HashUtil.kt9 L$ k! m$ q& [" u3 [( B$ S2 c: V
    │              │  │  │  NoteServer.kt; g% t. e* W# I! V" x. N' B* p! U
    │              │  │  │  RSAUtil.kt8 G; O/ V: H7 C
    │              │  │  │  Test.kt
5 F+ w5 j% l8 s" K, Y    │              │  │  │  , V9 a5 z  l: _9 z
    │              │  │  ├─bean
5 f2 r3 R2 F5 f: X4 P    │              │  │  │      BroadBean.kt9 U( H. t: J5 I& o( v- m
    │              │  │  │      NewTransaction.kt
' H9 U. D' i( F  ]1 d5 H$ J    │              │  │  │      NoteBook.kt
; \7 w7 S! Q. w% X* X    │              │  │  │      & V* C8 q( b% R$ G$ j( o
    │              │  │  ├─encode  k% K* {& r# E0 Q+ N- U! D5 n! `
    │              │  │  │      Test.kt1 r7 r) Z! Q% [3 Z3 Z2 o2 v
    │              │  │  │      . @: L+ {/ \$ \" I9 M
    │              │  │  ├─translate2 A# q; x: J2 A
    │              │  │  │      TranslateTest.kt
5 N- u' A  i2 s9 Z: u    │              │  │  │      9 O6 d, m! M0 z7 [! L
    │              │  │  └─websocket' ~  l9 y( ]! N8 S1 z  |% ^1 J
    │              │  │          LaucnClient.kt( ?$ _$ Y  T! c1 k, r) R4 S) ~9 _
    │              │  │          MyClient.kt; C* U0 t  g" m5 v2 q; ~
    │              │  │          MyServer.kt
# D& q' `7 X7 W4 S. q    │              │  │         
  w% ]% B2 B/ [% g    │              │  └─resources
$ [( D1 J7 M1 b! X7 f    │              │      │  addGenesis.html
# m; n" p0 D& L) I& p+ Q: q    │              │      │  addNote.html* k! ~5 W# l3 @7 v+ ~
    │              │      │  addTansaction.html
$ }0 p0 n, p' K1 G8 Q' C    │              │      │  7 \! W" K5 h& ~( |
    │              │      └─js
7 d6 u* x; L2 L2 l7 r" B5 `    │              │              hashes.min.js5 S7 V( }% c* r' b% z* E8 i
    │              │              jquery-3.3.1.min.js
1 O7 F/ W" U# @# @8 ]    │              │              jsrsasign-all-min.js# V# c2 t% d4 Q6 b. {( ~2 o* ^
    │              │              
, x/ Z6 Q( `2 X, W    │              └─test
& H) P# Q; Y1 p/ @+ l) N& u9 ^* n* I    │                  └─kotlin
. n. S; _! V. L5 o$ M    │                          TestHashUtil.kt
% e' }$ Z5 S* z! X" s* y3 \5 g    │                          TestNote.kt
4 k0 T3 `& ?; F7 A/ h: h+ t% J( p    │                          
( N; [& N  Q9 A* [' Y9 c0 K    ├─06_nodejs课程' E  B! U- j2 [* L. c2 w2 b6 L9 U( \& W
    │      day01.md
2 Q% d3 K/ ~; W+ R* h  F    │      day02.md0 u4 B$ [; b3 x: C. ?  ]0 h
    │      day03.md
* L# K& a# ?) i% {    │      day04.md8 E3 s- ?1 I6 @# |8 b/ g
    │      day05.md2 q2 J, G5 X7 Q% s9 F
    │      day06.md' Z3 o$ X9 e* E# v9 R
    │      ( w9 Z1 G' {* o5 g& W
    ├─07_以太坊和智能合约项目实战
( k0 i: t" V9 [% v6 M/ |9 U6 G  ?    │  │  day01.md0 u; t6 q# Q& }  G* v" t
    │  │  day02.md
, y5 T) _( U  C" q3 _    │  │  day03.md: g6 i) O( D" j( z% A1 ~3 H
    │  │  day04.md7 O. i- [2 x6 ~% \3 I
    │  │  day05.md
) W# e  w2 o- G1 g' p2 q7 {* P$ H    │  │  ( B7 e" }" [' R- D8 ~
    │  └─视频' e2 Z; k- D9 t6 E* P; W  i
    │          视频下载.md' v- _. P) {% u3 p" x: _* x3 U" G
    │          % O$ W+ ?6 w  s* r! k" C2 g
    ├─tools& _0 J  [1 q% u) x* }7 {* m& Y
    │      bootstrap.sh
4 `8 L% y0 ~% I( J    │      
0 X, e# T5 \0 `6 {0 N    └─课程表3 W$ C9 B9 A: [( |0 H
            readme.md
; E. Y/ i2 S, Q0 Q7 b+ Z+ g! t) v9 T; E
) z: G6 c5 y# M7 o! q( Y8 m

. a( d* a  B' L
游客,如果您要查看本帖隐藏内容请回复
" u; n9 E1 f# m& O/ j) _$ z: @

7 e, D/ }' q" U4 {9 _

IT充电站 - 免责声明

1、站内所有资源来源于网络用户分享,版权归原作者及其网站所有,本站不拥有此类资源的版权,不对任何资源负法律责任。
2、本站仅为资源分享的平台,站内资源仅供会员参考和学习之用,不得用于其他非法用途,请下载后24小时内从您的电脑中彻底删除。否则,一切后果请用户自负。
3、本站会员均可发帖,转载及发布的内容纯属会员个人意见,与本论坛立场无关。严禁在本站发布反动、色情、广告等不良信息及违法内容。
4、IT充电站论坛作为网络服务提供者,由于网站信息量巨大,对非法转载、盗版行为的发生不具备充分的监控能力。但是当版权拥有者提出侵权指控并出示充分的版权证明材料时,IT充电站论坛负有移除非法转载和盗版内容以及停止继续传播的义务。
5、IT充电站论坛在满足前款条件下采取移除等相应措施后不为此向原发布人承担违约责任或其他法律责任,包括不承担因侵权指控不成立而给原发布人带来损害的赔偿责任。
6、IT充电站论坛为用户免费分享产生,如本文内容侵犯到任何版权问题侵犯了您的权益,请联系QQ网站客服 提供侵权链接与权益证明,我们将尽快处理。
7、凡登陆本网站或直接、间接使用本站资料者,应仔细阅读声明,一旦使用本站任何资源,即被视为您已接受本站的免责声明。
8、一经注册为本站会员,一律视为同意网站规定,本站管理有权禁止违规用户
9、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和IT充电站的同意
10、若发现链接失效了请点此进行链接失效反馈,我们会第一时间修复链接


本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

加入我们:共同分享全网最新IT教程资源

官方微信

官方微店

联系QQ:

1022602116

声明:内容均来自于网络,如有侵权行为请发送QQ邮件或者直接Q我

我们将在第一时间删除!因我们给你带来了困扰,我们非常的抱歉!

微信号:xxwm2048 Email:1022602116@qq.com

Powered by Discuz! X3.4© 2016-2019 Comsenz Inc.