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

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

[复制链接]

微信扫一扫 分享朋友圈

程序媛 发表于 2019-6-25 22:38:12 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

6 i: x; T* j+ G! Z. G├─1阶段 区块链项目开发Java基础" T6 D' P+ f8 M; f! G& x2 C
│  ├─1-1Java基础
9 p# t# E+ ]3 q, z) F1 Q: {+ i0 p│  │  ├─1 编程语言入门9 t0 w* J8 I1 O
│  │  │      01_编程语言入门.mp4
+ U/ J1 S# O" t, g; p* m│  │  │      02_什么是编程.mp4
# d, }1 q( V# i: P! y: ]│  │  │      03_程序简介.mp4! y: ~9 `$ y& O+ a( f- D9 z+ N; {
│  │  │      03_程序简介.mp4.baiduyun.p.downloading
# a; v& Q5 C7 K$ t$ c│  │  │      ! V1 C6 b, b6 P/ y8 J
│  │  ├─10 空字段串和空的区别$ y  ^; _5 j6 [0 n( ~# b" ?% o* T
│  │  │      11_空字符串和null的区别.mp4
2 J5 ^; a9 c% V! B( Y│  │  │      
1 `2 A1 x! O' q7 {9 M% ^9 P8 c: a/ a│  │  ├─11 变量综合练习
  V2 |8 ~5 }9 V& x│  │  │      12_编码练习.mp4
) K; M+ D% _) _- H5 e) E: ]│  │  │      13_变量练习.mp4
/ A: {1 X' k" x│  │  │      14_变量测试.mp48 F' R, }8 a) c' E
│  │  │      7 p% m8 M4 @. ]" J2 y1 T) ~; s+ u
│  │  ├─12 逻辑运算符" B: S6 V4 y0 b) \: q" n$ C: z
│  │  │      01_布尔类型.mp4
! \( r/ U2 h; j& ]│  │  │      02_比较运算符.mp4) R9 }7 F7 x8 d- I% P" s0 }
│  │  │      03_逻辑运算符.mp45 P% {- B0 c% i1 W
│  │  │      04_逻辑运算符相关的练习题.mp4
8 C) N! ]) ~! _$ D, u  |8 n" s- D│  │  │      05_逻辑运算符相关的练习题.mp4
0 x+ k, t1 K3 Y│  │  │      8 N0 R- ?9 |0 p& m& Y- Z7 r( j3 s
│  │  ├─13 条件语句高级
5 j/ ~5 ]3 X, V, t│  │  │      06_if入门.mp4
! `+ m3 h3 D4 G3 O│  │  │      07_ifelseif入门(上).mp4
0 z5 F1 f2 N7 ]4 C. \$ ?│  │  │      07_ifelseif入门(下).mp46 d8 y( s' ^7 e' E/ t: q
│  │  │      08_案例之还剩下多少分.mp4
6 D" ~; T# A% P7 K) W% X│  │  │      09_if语句以及逻辑运算符相关的选择题.mp4
2 M4 u* l5 ?& `" c3 }$ s& f& F2 b│  │  │      
. {5 H9 k  U% A+ B' K7 J! _" ^│  │  ├─14 方法专项练习
: I4 Q. o5 h2 W8 Q│  │  │      10_案例之吃饭和拉屎.mp4. T1 B3 t# G! A) X, _3 a
│  │  │      11_方法专项练习.mp4
6 x( ~$ f' l# Z3 w- `│  │  │      
  f4 l! r3 u8 |# J, p$ ^8 P│  │  ├─15 数组
, r+ _8 `7 M5 W( `. y" F│  │  │      01_同时声明多个同类型的变量.mp4% z3 Q6 o' T/ p' ~! U! U. O
│  │  │      02_数组简介.mp4
3 L2 I, p' i. G& z2 A│  │  │      03_数组的第一种定义格式.mp4* m3 g, L; D4 E) ]; U
│  │  │      04_数组的第二种定义格式.mp4, s; `3 F  h$ L2 D: p
│  │  │      05_如何获取数组的长度.mp4
) U& a8 U/ R! g3 }│  │  │      06_判断数组是否为空.mp45 g, d% ]' N" ~
│  │  │      07_数组的首尾元素比较.mp4
; }5 n4 T% L5 k$ U│  │  │      08_数组相关的选择题.mp4* E: I$ H9 q8 L, _: D
│  │  │      8 `' k& n+ z  _
│  │  ├─16 类和对象) P: {6 f, s1 G' q! m1 [, v
│  │  │      09_面向对象极简介绍.mp4" n1 x0 n' u- N" e; l! R, e0 m9 u" I
│  │  │      10_API文档入门.mp43 X* O" h2 b7 f
│  │  │      10_API文档入门.mp4.baiduyun.p.downloading
# d* G8 ]: O7 i) R3 N2 r! u* s│  │  │      11_构造方法.mp4
3 @0 H. b6 m5 {# w9 d, c│  │  │      ; E# g9 \" E( R! B0 t7 g
│  │  ├─17 字符串处理& t8 p9 A% t; P; O0 y# `
│  │  │      12_String#concat()方法.mp46 e( w* o# Y/ \7 x1 J5 j
│  │  │      13_String#length()方法.mp4$ S9 W* \' J" T6 X
│  │  │      14_String#isEmpty()方法.mp4! u, g2 S0 r; r: x" b9 i
│  │  │      15_String#equals()方法.mp46 ?. d# n6 ?5 P4 A6 k
│  │  │      16_String#charAt()方法.mp44 k, E  Y7 m+ P$ }7 g) k) d9 |
│  │  │      17_String#contains()方法.mp4
) U0 t* B) d( a) ?% ?: |9 V8 y│  │  │      18_String#startsWith()&&endsWith()方法.mp4
0 `  y2 y5 ~4 z( d│  │  │      19_String#equalsIgnoreCase()方法.mp4
3 p: f- ^& q: \│  │  │      20_String#indexOf()方法.mp4
  h! p+ D3 o( }( c. v/ j│  │  │      21_String#lastIndexOf()方法.mp4  e' D+ }/ Z; ~: j/ J
│  │  │      22_String#replace()方法.mp4
  r9 s( ?% `# }; t# K! h│  │  │      23_String#split()方法.mp4
+ d$ C4 i3 e4 R& y7 r; P│  │  │      24_String#substring()方法.mp46 j+ e2 u, ~7 @7 F( h: a
│  │  │      25_String#toLowerCase()&&toUpperCase()方法.mp4
: ^  H! O* S! y│  │  │      26_String#trim()方法.mp4
2 k4 [6 m5 Y/ A  G, k9 k# I( u4 f│  │  │      27_String类中的方法总结.mp42 E8 Y( w0 t# U7 w* [6 t- @9 ^/ @
│  │  │      28_String类相关的选择题.mp4  E: S; T$ |* b  s) w% j
│  │  │      8 c( A9 k' Z: i# X/ n
│  │  ├─2 变量入门
) O" \- l4 _: ~: N│  │  │      04_变量概述入门.mp4
$ D; q8 |. e) w6 K" C. R) ]│  │  │      05_定义变量的格式.mp4: R7 a' L  v( P1 w& k
│  │  │      06_变量名命名规范.mp4" q0 D9 ^9 _. ~* l2 J
│  │  │      07_修改变量的值.mp45 V6 a9 r1 e# P9 ~
│  │  │      08_常见的数据类型.mp4
( j% R; n8 J* F# S5 F│  │  │      09_变量相加.mp4
2 k4 \& u4 J7 |% |$ I2 U│  │  │      * B( G' d$ j! z5 D+ K3 W% z( Q
│  │  ├─3 老王买瓜案例; _3 n4 |2 }- Y5 X# M( Z$ r  v: z$ s
│  │  │      10_老王买瓜案例(if语句的铺垫).mp4$ m# ^3 V3 j' C+ T! y( R, b# }
│  │  │      
8 x5 j% M/ s; m2 G1 Z9 G$ M│  │  ├─4 条件语句
+ i( x. P  ]% f1 L5 s" q│  │  │      11_if-else语句.mp4' a; `7 z$ ]6 Q$ X7 Q9 }
│  │  │      12_if语句的练习题.mp4
9 D0 S* v6 G6 n# @│  │  │      13_为什么要条件语句.mp4
/ F. @1 U' ?- A, H' ^, o│  │  │      , R8 I/ S! B6 @- d9 K
│  │  ├─5 循环简介
7 m- O" N3 s0 L( r# m( g│  │  │      14_循环简介.mp49 {; X# [: _4 N' T* I' Y
│  │  │      
0 m$ f) c9 @2 g, w* G│  │  ├─6 类和方法入门
8 u$ I5 w2 J- `2 L: X│  │  │      01_如何定义类和方法.mp4) P' c& u8 T' W5 D( J
│  │  │      01_方法练习.mp46 g1 `2 ?7 [' d6 H
│  │  │      02_输出语句.mp4
4 A: X( v' A5 G) K! z│  │  │      03_变量练习.mp4
$ T5 {' o% [5 x& N/ ^* N! |│  │  │      04_Java中常见的数据类型.mp4- j& `; z, b2 |. \
│  │  │      
, r9 @5 D, b/ R0 q& C1 `/ Q& I8 j# f│  │  ├─7 简易计算器案例, R9 S* E8 Z) t. U% Y. o( U6 ~( U
│  │  │      05_制作简易版的计算器(加减乘除方法).mp4
" W6 l( U3 r) f1 Z% o; B5 T. r│  │  │      06_如何调用方法.mp4
$ r& n7 y6 ], M+ @+ W│  │  │      
+ P+ r! a3 K0 A7 H4 V│  │  ├─8 变量高级
) @' f9 D: @! o' ~. d│  │  │      07_和变量相关的一些选择题.mp4
9 j- U- G- E8 O│  │  │      07_局部变量和成员变量的概述.mp4
; U2 P" Y& c- u7 U  g# ^' d7 Q1 u│  │  │      08_局部变量和成员变量的区别.mp4$ s9 l! y' d& ]6 e2 o
│  │  │      ! ?' c! d2 b+ x0 U0 m8 }5 R
│  │  └─9 运算符: d$ x0 Z2 Z! i1 C1 \4 R% P" e& R
│  │          09_算数运算符.mp4% L, H" v( \7 F1 B( E
│  │          10_赋值运算符.mp43 ^( {9 R; L3 I5 u7 [
│  │         
# B' T1 b" w( `│  ├─1-2面向对象$ E& ~( `, U2 |* X/ R% s
│  │  ├─1 Eclipse入门
* U6 x) E, u$ I! V% z( y│  │  │      01_Eclipse简介.mp4
# Z5 Y3 y* E$ D7 _│  │  │      02_Eclipse中HelloWorld案例.mp4. g' |2 l, j8 [6 ~. N9 x
│  │  │      03_Eclipse的视窗和视图概述.mp4
/ j- `4 X; p/ ^6 O& y4 p" e│  │  │      04_Eclipse工作空间的基本配置.mp42 Z3 p: G- T- p9 Z
│  │  │      05_Eclipse中内容辅助键的使用.mp4
' w' l/ c* E9 X5 {│  │  │      06_Eclipse中快捷键的使用.mp4
* D" q3 z- H6 C) P, S. j6 m│  │  │      07_Eclipse中如何删除项目和导入项目.mp4
/ v2 s- G( V1 B& t│  │  │      
% b4 W) G' X) e* m( [│  │  ├─2 面向对象和封装
4 x4 C9 J0 X# ~  S2 o# P5 D│  │  │      08_面向对象入门.mp4
. M# E& `: X& Y+ P& B5 |3 D│  │  │      09_获取长方形的面积.mp4. f4 T6 I/ ~; H
│  │  │      10_人类案例.mp4
. U# A: {- v$ ^$ \│  │  │      11_封装入门.mp4! e+ R8 W% ^* e; V  r) `
│  │  │      12_封装的好处和弊端.mp4
8 O+ H. ]& U% d1 [( ?│  │  │      13_封装详解.mp4
- F5 C/ a. O" B6 s/ z│  │  │      14_标准的类的定义格式.mp4
! f! p0 t0 `# F2 n) w+ Z│  │  │      
- Y7 o) Y3 {: {$ P│  │  ├─3 面向对象综合案例" Q2 W) a" J( a! g- ~
│  │  │      15_用户家具城案例分析.mp4
  F' p8 U5 ]; i/ y; t( l) _│  │  │      16_顾客类代码实现.mp4; j8 {9 Q2 A' \) @
│  │  │      17_卖家类代码实现.mp4
: o4 |4 w/ _; d# j+ D│  │  │      18_测试类代码实现.mp4) A. v8 Z+ G+ b) F/ i
│  │  │      
% j  ~! j, ?/ Q3 _0 ]2 I5 _│  │  └─4 机器人对战游戏  E0 [2 |; m- y& S, H3 O
│  │          01_游戏演示.mp4( R. p3 L4 R2 c  I2 `6 S9 N% T
│  │          02_this关键字.mp4
! q9 J$ n- r1 U% W! m& }! v│  │          03_static关键字.mp4- H1 g: v# W/ A8 v- _. b. W
│  │          04_final关键字讲解.mp49 j- p1 A2 m' }$ M8 O* D
│  │          05_Random类讲解.mp4$ l7 A9 P4 q$ s+ E1 Z9 g0 n5 y
│  │          06_while循环.mp4
; H. e( |8 y: {│  │          07_游戏业务分析.mp4
" e5 Q: }+ q7 \4 `% U! g│  │          08_游戏UI部分_玩家和NPC交谈功能的实现.mp4! ^5 |$ G6 k! W1 @! O: j$ t
│  │          09_游戏UI部分_GameScreenUtils工具类的抽取.mp4
2 N! _/ Q9 h  b2 E+ B│  │          10_游戏功能部分_玩家打NPC的功能(上).mp42 z. p+ N* X  \4 v- g$ O7 m% g
│  │          10_游戏功能部分_玩家打NPC的功能(下).mp4
2 q3 w! L" o+ O. A& N│  │          11_注释的补充讲解.mp4
* X' u; Q) \7 b$ X0 @* w) q9 ]; o  m│  │          12_游戏功能部分_NPC还击的过程.mp4
5 n" |% i6 U3 j9 k; k. m2 L│  │          13_代码优化(上).mp4
6 k& n) U( a# L3 J│  │          14_代码优化(下).mp4
6 T5 }4 ^* F2 \│  │          $ L+ E: @8 S; V$ I* N, G
│  ├─1-3集合0 g3 p, U4 O$ }* I. E: u
│  │  ├─1 HashMap集合
, l0 c) G( z0 P# X7 ]( C5 B│  │  │      01_HashMap集合简介.mp46 u5 L. W! U8 p! m' ^+ z' S
│  │  │      02_HashMap集合的初始化.mp44 i+ e( H- T' p$ A( g* n5 A, a
│  │  │      03_往HashMap集合中添加数据.mp4* b" d' w, T* @7 _5 o4 w6 i0 p
│  │  │      04_泛型和包装类.mp4
5 ^1 g, ?' j! K! D/ g2 i' O│  │  │      05_HashMap#size()方法.mp4+ x" f0 g& H* V
│  │  │      06_集合相关的面试题.mp4' m' m9 S2 Z! D" y; z* f! d
│  │  │      07_HashMap#get()方法.mp4
) Y9 `0 L3 |* [3 H1 S│  │  │      08_HashMap#isEmpty()方法.mp4
: h$ c3 T$ P) c9 x/ d0 _│  │  │      09_HashMap#containsKey()&&containsValue()方法.mp4
& p+ f4 C1 o* o6 r1 B/ P│  │  │      10_HashMap#clear().mp4; u: Q) K. C, ~: M
│  │  │      12_增强for.mp4
3 m) v) s( _9 @2 E# F│  │  │      13_双列集合的遍历方式.mp4
, R# p9 Y$ a: P& H# V0 f+ S0 T│  │  │      14_HashMap集合相关的选择题.mp4
+ ?2 R! e  Y* @3 u( x7 K, C) ^│  │  │      
0 ?4 \: P8 S2 l) W  ~│  │  ├─2 ArrayList集合
: w& _$ l  H" S2 I6 J9 W│  │  │      15_ArrayList简介.mp4: w& Z7 l; E4 b7 G. z. b; L4 V; x
│  │  │      16_ArrayList#get()方法.mp4
) C# @5 U% N" c5 U+ A0 t6 o│  │  │      17_ArrayList#set()方法.mp40 u6 a8 F- K+ {" w: O" j# ]
│  │  │      18_ArrayList#remvoe()方法.mp4
" q, K: Z2 o6 G  p( u/ K" G│  │  │      19_ArrayList#isEmpty()方法.mp4
. t  m6 W+ c; A; j7 E│  │  │      20_ArrayList#indexOf()&&lastIndexOf()方法.mp4$ g) \% q' n: O: h* S/ y  k4 H/ J
│  │  │      21_ArrayList#set()方法_代码版.mp4
' ~6 n! u  x" ]9 x: D$ D; ]9 C3 X│  │  │      22_ArrayList#toArray()方法.mp4; N  g( G2 @. M1 f8 d
│  │  │      23_集合和数组的相互转换(理解即可).mp4
6 U# _8 a  p$ {" U) m* U4 s! T│  │  │      24_ArrayList集合相关的选择题.mp4
! Z& e0 Q# u. W/ \│  │  │      
; K; Z  V: \$ \. U8 ~│  │  └─3 集合综合练习9 i) X6 ?8 \) ^
│  │          25_Map集合综合练习题.mp4; w* _) _8 R; ^8 T/ y$ i2 E
│  │         
5 n7 ~  q1 K, l+ d0 G! y2 l5 Z6 O4 s│  ├─1-4继承和多态
! [- ]" f; ^: k7 O, R  o8 ]; s│  │  ├─1 继承
# A3 M- |2 ]' Y# ]: h3 H7 S9 N9 e│  │  │      02_非继承版的老师类和学生类案例.mp40 D- N! M: R4 o- t
│  │  │      03_继承版的老师类和学生类案例.mp4
. G; j- z  G4 ]│  │  │      04_Java中类与类之间的继承特点.mp44 d0 G( ], `3 `9 Z5 s  N+ j: k
│  │  │      05_继承的好处和弊端.mp4* z. f0 t5 N! M; w+ J
│  │  │      06_继承的注意事项.mp4
4 o3 W) W! S( R1 \│  │  │      07_this和super的区别(图解).mp4
2 g$ E6 e6 G3 x; }│  │  │      08_继承中的成员访问特点之成员变量.mp4
6 v$ p" ]+ ?9 t4 o& ~# l% H: V│  │  │      09_继承中的成员访问特点之构造方法.mp4
7 C2 ^& ~; e7 s$ r7 U* u7 b/ L│  │  │      10_继承中的成员访问特点之成员方法.mp4
- w2 c  D. i  P. p│  │  │      11_方法重写的注意事项.mp4/ q- T3 c7 e% ^1 h3 O9 @" Z4 M
│  │  │      12_final关键字.mp4
) |& W6 P* [4 V* X% I│  │  │      ! y6 _5 M  R0 r* ~# l7 Y
│  │  ├─2 抽象
" n+ j  E% F- g2 o! E│  │  │      13_抽象类的概述及其特点.mp4$ `" u5 ^# a: d" |+ \# `! C+ r8 r8 W
│  │  │      14_不能和abstract共存的关键字.mp4* @8 L0 C$ `! O. d, n8 f% v& l# A
│  │  │      
8 \; h! J0 t2 ^) r1 d4 y) q& m. w- ]│  │  ├─3 接口
3 \% e& `' H: Q* M9 x│  │  │      15_接口的概述及特点.mp4
" i$ g' T+ d3 Y4 ~│  │  │      16_接口的成员特点.mp4  y* u: V$ J0 f. h7 W. ], @
│  │  │      17_类与接口之间的关系.mp4. Z  s! f% m7 u8 [* D; s& c
│  │  │      18_抽象类和接口的区别.mp4  k- o: Q% Y# i' B
│  │  │      
/ P: B' k! r5 |5 R. n; R1 @│  │  ├─4 多态' r+ \: H# E' L7 q2 K
│  │  │      19_多态的概述和前提条件.mp4
" d5 J/ p$ C# ]* o, g7 z│  │  │      20_多态中的成员访问特点.mp4
" R8 n1 y$ _- O3 l│  │  │      21_多态的好处和弊端.mp4
; n9 P# ~5 W# a1 K" \│  │  │      22_动物类案例.mp4- Z/ f, Z0 X) g+ E0 S4 z$ @, k
│  │  │      * H  {  r( n: @2 R4 H2 w* s
│  │  └─5 游戏界面" b; y- y/ R; G( `
│  │          01_如何导出以及使用jar包.mp4
! a# q8 Z! p; R7 B0 E4 |( t, Q) m│  │          02_魂斗罗选择界面.mp4
  Y4 b8 m) ^6 k│  │          03_微信打飞机案例V1版本.mp4
% I5 ?8 A: E% s│  │          04_微信打飞机案例V2版本.mp4
0 Y, O% K6 p/ z1 E1 V+ @│  │         
/ w$ E: M( q" b. r3 r: u; a% j/ W│  ├─1-5java基础增强
! A2 |1 d- G( Y# _  j3 \2 a& I│  │  ├─1 循环遍历
3 B+ U/ @2 C, S0 I│  │  │      05_while循环讲解.mp4" B# L9 u( X. I
│  │  │      06_do.while循环.mp46 B; V1 U# l  S" P( m
│  │  │      07_for循环.mp49 |- Q5 T; O/ v' E
│  │  │      07_switch-case语句的练习题.mp4
  H4 u+ M& w& f4 a9 F1 a│  │  │      08_for循环倒序打印.mp4
- @% S3 `0 x4 S6 k" V│  │  │      09_三种循环之间的区别.mp4; m1 ~: S8 q2 Z9 l" U
│  │  │      10_for循环求和思想(计算1-100之间的偶数和).mp4
( I+ M! \" u4 N# s3 q- n│  │  │      11_增强for循环遍历数组.mp4
& L0 y! e7 p; u! x│  │  │      12_双列集合的第一种遍历方式.mp4
( m" V3 l/ f8 g: \  L0 X; }, n│  │  │      13_双列集合的第二种遍历方式.mp47 W0 R8 t! b' N* |0 o
│  │  │      14_for循环嵌套之打印矩形.mp4
5 W7 E5 |1 A' R$ U8 l! u) x) D│  │  │      15_for循环嵌套之打印正三角形和倒三角形.mp4! Q& P0 `3 o. ^
│  │  │      16_for循环嵌套之打印九九乘法表.mp42 p$ C8 ]8 O8 |5 _, t2 h9 ^- e
│  │  │      17_校验金额.mp4
4 S! r+ B2 X5 H│  │  │      18_break和continue的区别.mp4
- [5 c+ d. H2 m) _4 ]│  │  │      
' {! ^9 {6 {/ ^2 p+ ?│  │  ├─10 阶段性总结 & 补充/ T3 ^  |* I/ d. [. n' h3 G
│  │  │      01_Java平台版本的划分.mp4
; T3 h0 |# r0 p+ R, V; m6 n│  │  │      02_Java语言的特点.mp42 q$ i" c/ s* n% a
│  │  │      03_JDK的下载和安装.mp4. {0 w) ~8 f9 @% S
│  │  │      04_path环境变量的配置.mp4* S6 L1 `! P9 c  g
│  │  │      05_三元运算符.mp46 {* T* {3 z. A. j" c
│  │  │      06_switch-case语句.mp4! Y7 x; X5 P. [. _3 R/ Q
│  │  │      07_switch-case语句的练习题_p7wiK.mp43 A% E4 t# I; E+ h0 `2 `5 T0 x
│  │  │      08_方法重载.mp4
0 R# y# O1 k' W│  │  │      09_方法重写.mp4
: O1 v* q2 ~2 H2 m4 _* X6 z" H+ p│  │  │      10_成员变量和局部变量的区别.mp4: @5 L* f: b0 ?3 {  m4 R
│  │  │      11_对象的初始化过程.mp4
$ R  k8 c- v1 P% ^( _* ~# \│  │  │      12_instanceof关键字.mp4
* b& q7 c" R0 ^; ^│  │  │      13_包.mp40 |1 ?' B& I- w7 u5 F; C  x
│  │  │      14_代码块.mp4
. D( K! }) X% ?2 I( `5 v( @│  │  │      15_HashSet集合.mp4& m0 ]  [: ^2 C* P2 g  c8 t
│  │  │      16_集合的体系图.mp4+ U6 Z! B! H: p9 C+ ^; _
│  │  │      17_单列集合的遍历方式.mp4
  s9 n. A: F9 b; ^8 q│  │  │      18_双列集合的遍历方式.mp4
( ], J1 V7 s: p- X7 u│  │  │      19_并发修改异常.mp4* j! a2 z3 A4 E
│  │  │      20_Collections工具类.mp4
6 G+ K& z+ L& \4 K* h│  │  │      21_内存输出流.mp4
' M& ?4 Z  O# f0 W. x) s  v4 z9 ^│  │  │      22_Properties集合类.mp4
# t" y2 ^) T) U+ D& K6 T7 ^│  │  │      23_多线程的声明周期图.mp4
) S2 k; x" Y$ T1 r! `. j│  │  │      0 W5 R6 \4 e7 k9 Y, H7 N, e& G
│  │  ├─2 工具类和正则表达式
( e7 P" Z8 Y6 h│  │  │      19_如何定义一个工具类.mp4
- N5 e9 E+ Q( f7 Y7 G; u4 x1 M│  │  │      20_校验手机号_自己写校验代码.mp4
( y" g4 U  K4 a! {5 X│  │  │      21_正则校验手机号.mp4
. v- Y3 z% l2 L: V, b$ `│  │  │      22_正则校验邮箱.mp4
+ B/ `6 u; d: w5 F9 T│  │  │      23_通过正则表达式切割字符串.mp4- `& C* N$ {! X0 l4 _8 N" e2 P
│  │  │      
( A9 @# \3 Q. D4 w9 l+ g│  │  ├─3 集合补充案例6 v1 ^+ M: u- s: s, H; `
│  │  │      24_ArrayList集合去重.mp49 }8 Y) G) a2 {. @6 B# z( P
│  │  │      25_debug调试.mp4
* r" L/ }5 B+ {% j│  │  │      
7 c& ~  p! ~; j: h/ e│  │  ├─4 异常* Z7 ~5 p9 d6 G- p$ X$ O1 w' e
│  │  │      01_异常的概述和分类.mp4* k! w+ Y, f- R/ v! L9 v
│  │  │      02_编译期异常和运行时异常的区别.mp4
- b- V* z5 i+ O/ [9 V│  │  │      03_异常的两种处理方式及区别.mp4
5 }' C& S4 t/ ^# B# E1 t│  │  │      04_finally关键字.mp4
: X% D0 d1 c6 F4 Z5 F/ `) o4 |5 R4 s; r│  │  │      05_finally关键字相关的面试题.mp45 I& f; t- r% {8 G
│  │  │      
( r, b6 p. F0 K1 z│  │  ├─6 File文件; C2 R; }- e, b; G5 M! B  I3 w2 N
│  │  │      06_File类的概述及构造方法.mp4
2 b7 h1 u: Q2 i  m4 J7 c│  │  │      07_绝对路径和相对路径的区别.mp49 g/ M" d9 m) s8 ?1 [4 A
│  │  │      08_File类的创建和删除功能.mp42 T! X. N- Z5 V3 o  X1 o
│  │  │      09_File类的获取功能.mp4
  l% e3 J7 F# X* Z│  │  │      10_File类的判断功能.mp4
  y1 T, E6 n7 L; D│  │  │      11_File类的list()和listFiles()方法.mp4
0 k, ]4 E# L" @$ e% Y│  │  │      12_匿名内部类.mp4
1 v0 o. h/ t% E$ S& J│  │  │      13_文件名称过滤器.mp4
( T6 A$ ], b5 k9 e! J│  │  │      , J$ G. y7 D' y$ c" y
│  │  ├─7 递归* j$ ^. i1 ^' q$ m  M
│  │  │      14_递归的概述和注意事项.mp4% Y" k0 G7 Z3 x6 G9 b. |
│  │  │      15_递归计算5的阶乘.mp4  ~1 z5 f: }' `% H$ C
│  │  │      16_Debug调试_查看计算5的阶乘的过程.mp4
* ]8 Z: ~% V  D7 ]) ]# [) i* h│  │  │      17_递归打印文件夹.mp4& T) ~1 J0 W9 E! }5 n! f7 k
│  │  │      18_递归打印文件夹(加入键盘录入的功能).mp4
5 y/ j- j" r, S# G4 O) d0 g% b& M│  │  │      
1 ]3 `, z" ^. z6 M" T│  │  ├─8 流操作
- ?$ N6 W* L5 x- A* c; x6 I; ]│  │  │      19_IO流的概述和分类.mp4. s* j, D* A' Y- x
│  │  │      20_三个特殊的字符值.mp4. e( ~; `/ W  e: I! i
│  │  │      21_字节流读取数据.mp4% U/ c9 J# Y8 V
│  │  │      22_字节流写入数据.mp4
& ?3 E$ U" |% Q" S$ N, |$ r0 S; p│  │  │      23_字节流拷贝图片(一次读写一个字节).mp4) M/ S5 F; a1 L; \5 R/ f; X( [
│  │  │      24_字节流拷贝文件(一次读写一个字节数组).mp4# U! g' v. h* n  e7 l
│  │  │      25_字符流拷贝文件(一次读写一个字符).mp4! T+ s/ I5 M& q
│  │  │      26_字符流拷贝文件(一次读写一个字符数组).mp47 [) a3 W% U# z0 W9 f& M5 s; V
│  │  │      27_字符流和字节流的应用场景.mp4+ x1 P; E, ~4 s* X8 t+ C
│  │  │      28_高效字符流一次读写一行.mp4+ m5 p, C: E) ^0 W2 T* d. j
│  │  │      29_IO流读写方式总结.mp4
& E1 W% [* G- b/ q9 [6 Q7 X# j9 X│  │  │      30_制作空文件.mp4
7 H" G( A( C# j8 i& ]3 U( b$ w7 h* |│  │  │      31_从网络中下载资源.mp48 T: {. M) E+ U! {5 b
│  │  │      32_JDK1.6及其以前IO流的标准异常处理代码.mp4# z+ `: c9 O! H  F7 S8 `
│  │  │      33_JDK1.7及其以后IO流的标准异常处理代码.mp4
5 m$ C1 H, G7 g, k, P8 I) \' i│  │  │      34_复制文件夹.mp42 x5 O6 c9 P% l7 G* S4 x
│  │  │      35_commons-IO第三方jar包复制文件夹.mp4
6 v( O3 f/ q* i  O7 }/ a│  │  │      
+ o- ]( P7 N% H. G; x  n│  │  └─9 多线程# t5 n  k% @5 E3 H$ E
│  │          01_多线程的概述.mp4, B, @! K( D. |2 F: O9 K
│  │          02_多线程并行和并发的区别.mp47 P8 L; k: n( A4 S: `( L$ ~8 ?+ P7 ~
│  │          03_多线程的第一种实现方式.mp47 [5 d! e4 ]& b9 Q- D3 S- i
│  │          04_多线程的第二种实现方式.mp4
# i: F! i( u  N1 s( y│  │          05_多线程两种实现方式的区别.mp47 _  i2 @- a# L
│  │          06_多线程模拟卖票案例.mp49 A; `0 l' m. l( j) W
│  │          07_多线程模拟卖票出现安全问题.mp4
$ T; ~* E0 K) c% h9 Q! e# M9 c9 d- [│  │          08_用同步代码块解决多线程模拟卖票出现的问题.mp4
) k# l; l5 ^6 f! A│  │          09_线程同步和效率的问题.mp4
1 W2 _+ E( x: Z│  │          10_实现Runnable接口的方式实现卖票.mp49 C3 o  g: Z+ ]# \2 b
│  │          11_非静态同步方法.mp46 `& o5 I) Q2 W9 T2 Z
│  │          12_静态同步方法.mp4
3 Y0 Q6 f8 q. V  R│  │          13_死锁.mp4
+ ]2 ^0 V- Q! [3 f│  │          14_实现Runnable接口的原理.mp4
2 J8 L) F) ]; _8 M│  │          . `) @4 i2 ]! Z0 G1 {3 T
│  └─1-6坦克大战
! A$ t8 i7 z  Y6 Q! K│      ├─1 项目初始化0 r6 V" w+ F! u6 P" y+ t6 J
│      │      01_项目演示.mp4, g: W3 S4 U  ^/ g# v6 j% f) R- A
│      │      02_新建工作空间.mp4' t3 t0 q. j! c: V1 z- M0 F
│      │      03_设计模式的概述.mp4
2 P( Z1 E$ T/ `- U" R' d% }│      │      04_模板方法设计模式.mp4, k# h. o- q& D4 I
│      │      05_lwjgl_jar包简介.mp4  G6 [2 D7 g7 Z, \1 B# L5 ^
│      │      06_创建第一个窗体.mp4
* m7 j) q: T, C/ s+ J' I) M* z) i│      │      07_页面渲染.mp4
. i$ O) ?+ A' |  P5 p$ ?" N- l9 k7 Q│      │      08_输入输出以及坐标计算.mp4
# D  [6 n# z8 b│      │      09_绘制图片.mp40 k# n& I5 o# F# P& C2 B
│      │      10_播放声音.mp4
. K$ [, e' F- N│      │      11_综合小案例.mp46 `% }0 z3 a9 b) p! i; n
│      │      
. t/ w5 a. J) l7 A2 f/ |│      ├─2 窗口元素绘制  C5 O; t9 l. R7 M
│      │      12_坦克大战案例窗体绘制.mp4
1 V$ s2 \0 J% d│      │      13_绘制一个砖墙.mp4$ q  I4 f( @7 U+ ^  Y: G7 l
│      │      14_绘制一堆砖墙.mp4& T( w2 E4 q3 q3 L6 q) S
│      │      15_绘制一堆水墙,铁墙,草坪.mp4, N# X2 O! f- |+ ^. K8 _2 A& ^
│      │      15_绘制一堆水墙,铁墙,草坪.mp4.baiduyun.p.downloading
: _+ B: H1 i) n  T. _8 f) G│      │      16_抽取Element父类统一管理元素.mp4/ \; ?6 m. A, D  Y, x
│      │      17_坦克的绘制.mp4: a6 r" {5 L& |4 ?3 w( [4 E
│      │      . h9 A' \! f; ]9 z8 X2 |" w( w
│      ├─3 坦克移动1 m1 b0 U1 U. M
│      │      18_坦克的移动和越界处理.mp4. w. J: _/ v6 m( }! Y: \
│      │      19_坦克炮口的随向转动.mp4
+ T$ O7 k. L9 B5 n: i│      │      - Z9 m3 O" {: d3 h6 {4 Y  c1 Y6 K
│      ├─4 子弹发射
8 ^' a0 L; t$ R, E│      │      01_优化项目中的三个小细节.mp47 q. n- Y7 n& V( S% R9 C* `
│      │      02_子弹的移动.mp4! d7 t/ a) G1 \9 p  }5 w. ^3 R
│      │      03_调整子弹的发射频率.mp4( S( s, m. `/ n
│      │      04_播放子弹的发射声音.mp48 Q; Y$ Z* b' j4 j
│      │      05_销毁出界的子弹.mp4& F2 Y5 ?. R9 i2 Q: p
│      │      20_坦克发射子弹.mp4
% f# O1 E9 O. N( o│      │      21_子弹的坐标计算.mp49 K; @. y+ H6 N
│      │      22_子弹坐标计算方式优化.mp48 \) A4 a. C4 l; B
│      │      2 J' S8 n0 H3 O
│      ├─5 坦克隐藏
3 X( R6 ~3 x6 ~; Q! L│      │      06_坦克隐藏到草坪中(简单做法).mp4
7 E& y; R8 S2 e1 s2 _- R: P│      │      07_Comparator接口简介.mp4  W1 n1 Y- f- X
│      │      08_让坦克隐藏到草坪中(Comparator比较器接口实现).mp4
8 P$ \0 k  d3 l; H0 d+ o│      │      
" X5 n3 r" Z( o. \; O8 e4 X( D! z/ ~: e│      ├─6 碰撞检测# u- S! H9 h6 U" C
│      │      09_Collision工具类解释(碰撞检测原理).mp4% x" P+ X/ Q3 y% |
│      │      10_坦克和铁墙的碰撞检测(上).mp4& m4 S9 E/ U0 C
│      │      11_坦克和铁墙的碰撞检测(下).mp49 A( d4 m1 E3 m* w
│      │      12_抽取Moveable接口和Blockable接口.mp4
! q4 @9 H! {, w8 z* |' |+ R2 S│      │      13_子弹和铁墙的校验上.mp4
+ V& q% [7 `' m* J/ B" i0 v│      │      13_子弹和铁墙的校验下.mp4
; a+ v% U; U% @. u, i4 r│      │      14_抽取Attackable接口和Hitable接口.mp4: w8 B$ r, |$ l
│      │      . W7 P5 h7 X8 D: w2 _% ~! G( ]2 S
│      └─7 爆炸物处理
% \2 \$ z( B. p& }% D7 l! ?: Q( p│              15_优化爆炸物的坐标.mp4( B2 |. U# U. U' T
│              16_优化爆炸物图片的绘制个数.mp4: I8 c" t1 _/ z$ T5 L* ^( `( n( \9 Z
│              17_销毁需要销毁的爆炸物.mp4' s0 |- g, ^0 z, q
│              18_抽取Destroyable接口.mp4
% b' e- ?* ~- P  N) e│              
5 F6 E- p( s* L├─2阶段 区块链概念入门
7 |+ W  w6 B- ]& m& a│  └─区块链概念入门8 N" @# R$ v! t+ T& ^' O& P
│          01_从实体货币到数字货币.mp4
# y: J, h2 x' r/ K0 B* h8 {0 F│          02_分布式记账.mp48 p% ?. A( X: z4 v( @% R
│          03_中心化和去中心化.mp4
1 y+ ]0 [8 ~9 t3 D2 h2 F│          04_hash函数.mp4
- L, s; ^" i6 d5 M1 p│          05_hash算法的安全性.mp4
* K' M1 Q7 K3 W& r│          06_分布式系统和数据一致性.mp4
* {3 M+ L/ s, Y$ Y8 k. a& g│          07_通货膨胀和比特币.mp4
! n: h; Z  h4 l% m- D7 s4 T│          08_区块链技术的演化.mp4
0 h8 l+ K* m: Y! M+ Q* y) W│          09_区块链的应用场景.mp4' J' ^8 t* ?9 d* s3 m/ r
│          10_我到底需不需要区块链技术.mp4
$ F% z0 z9 E% Q8 D; `│          11_如何鉴别区块链项目里的猪.mp4
# D2 p5 }1 ^- S& Y│          12_区块链项目的评估方法.mp4/ ]1 W$ L/ ]) o4 X+ q
│          13_ico和ipo和daico.mp4
0 \. c) T( y( L) A: J. Y8 q│          14_关于区块链的错误认知.mp4: Y6 `/ V0 |+ Z  j( F+ s, J
│          15_分布式系统的一些概念.mp4  z% G" D: T# ]( u( t
│          16_区块链技术栈和学习线路图.mp4
/ v$ `6 V: H9 j4 o6 \8 P│          17_区块链的技术现状.mp4
; _' S' W: |! f2 \3 s, B$ X│         
2 W0 N9 G8 }; \├─3阶段 kotlin和变成基本功加强
- d: M( g+ r3 d1 }  G3 d' s│  ├─3-1 kotlin基础语法
0 p0 E6 D  X9 L% }& I- N│  │  ├─1 kotlin介绍
  X$ J8 r1 p6 |* a  Y│  │  │      02.kotlin简介.mp4
3 g; D! \1 y9 o! y│  │  │      03.kotlin发展趋势.mp4( f  }9 U: g' j' A
│  │  │      04.kotlin优点.mp49 Y  I- M' I; z4 O8 {) v
│  │  │      05.kotlin前景.mp4! _& _4 U: O* p" k" m/ ?: y
│  │  │      06.参考资料.mp4
, }3 r6 {( I# l! ~! t1 O8 `0 O' w* m│  │  │      
, E  {. n4 W8 h( P- d- p  J│  │  ├─10 函数
1 D* R$ ^5 ^, v2 l│  │  │      27.输入和输出函数.mp4/ Q- J1 J' H9 ?( L+ j0 }
│  │  │      28.四种函数.mp4/ q& T$ Z) Y: L. K: D% W
│  │  │      28.四种函数.mp4.baiduyun.p.downloading- ^, E0 U# ^0 E0 A; A6 w
│  │  │      29.顶层函数和嵌套函数.mp4
1 e* }2 ~( `0 @* X8 _│  │  │      
/ v8 q9 }; _4 j- z% S+ w│  │  ├─11 字符串模板9 g3 N; B& |/ E5 }
│  │  │      30.字符串模板.mp4
/ N! q* T9 v* Q1 s" |" D) p│  │  │      ; b) }  D% b3 a4 h  ]
│  │  ├─12 条件语句
& x5 g2 g' j! p4 }│  │  │      31.条件控制语句if.mp4  A2 U* s: ?1 n* n# J
│  │  │      
! w2 l! R9 `' D; w& e& ~│  │  ├─13 循环
) M% @( o( @; c/ |4 D; P" E! a% |│  │  │      02.for循环和foreach循环.mp4' W; V5 }' L) a( Z$ N
│  │  │      03.continue和break.mp4
- |* a% S& v3 m+ |$ ~│  │  │      04.标签处返回.mp4" P0 z5 _( {  I. E
│  │  │      05.while和do while.mp4
) D* v, j5 ~& E! l5 b1 ~│  │  │      d2-01.回顾.mp4/ l3 {" g2 M, u$ |+ s4 H4 d7 M
│  │  │      
8 S8 u4 _3 A8 t% s│  │  ├─14 区间* |' I; T8 G2 G& ^. p' u
│  │  │      06.区间定义.mp4
( A& I) i0 W5 Y% c0 z8 Q│  │  │      07.区间的遍历.mp4
7 w; X- x" ~4 K/ w/ H( r$ X│  │  │      08.反向区间和区间的反转.mp4- v- y3 w7 U. x* w  ^
│  │  │      08.反向区间和区间的反转.mp4.baiduyun.p.downloading
/ k+ B* p$ g2 ]3 b; d: c) Z│  │  │      
9 c' `( C: b" L& F% N, y│  │  ├─15 数组
# i8 l8 a6 X) _, o! w/ v, C9 I│  │  │      09.数组创建.mp49 f/ ^) g& }2 S  P
│  │  │      10.数组元素的修改.mp4
( C+ {. v3 [0 b/ D! J) m; {│  │  │      11.数组元素角标的查找.mp4
! R9 Z% A2 C( ?; g: J3 m│  │  │      
3 q2 z. P% O( i0 c) F- b' E* x│  │  ├─16 when表达式
7 }. V, v: e7 ?! V5 c2 H( b│  │  │      12.java的switch语句回顾.mp4
6 u6 C7 {$ [+ m. ~) P' \7 D9 n$ {" n│  │  │      13.when表达式.mp4
" M6 E( {: _& w1 h8 Z│  │  │      13.when表达式.mp4.baiduyun.p.downloading" \8 f. M+ w$ ^( x  n5 [
│  │  │      14.when表达式加强.mp47 X" C# P) g0 G; F! V+ s6 K
│  │  │      15.when表达式原理.mp4( ?: H) W( p6 N
│  │  │      16.when表达式不带参数.mp4
1 W3 H! w. ?4 K- C% S& e│  │  │      17.when表达式返回值.mp4
# ]0 I. \/ l, h. }3 L│  │  │      18.when表达式练习.mp4
5 w$ I  S2 n1 q9 v│  │  │      
6 ?8 D8 h6 W" n3 N8 ^: s, T│  │  ├─17 函数表达式
4 Q$ Q! j  y1 [│  │  │      19.函数表达式.mp4
. E) h/ w& k. C  @( c9 w' P│  │  │      20.函数引用和匿名函数.mp4; m5 U- `7 S5 d
│  │  │      # ~9 d& t. _4 S+ b! }1 R) B; E7 W
│  │  ├─18 函数参数& U; T: Z! m/ U# t- h+ U- N% S
│  │  │      21.默认参数和具名参数.mp4$ N5 q( Y( U( j  y
│  │  │      22.可变参数.mp4+ x- e" I# D! w: t
│  │  │      
9 {9 i5 P1 ]! @3 J  Q│  │  ├─19 kotlin异常处理
+ N3 |# x$ Q  r5 E* S6 |- p8 X│  │  │      23.kotlin的异常处理.mp4
. d, I2 G) ]0 h( V/ W│  │  │      24.上午回顾.mp4
4 q) V& N' V/ ?: ~# [) ]│  │  │      
1 s- C) \6 ^0 k8 @/ N: X) M- S: e│  │  ├─2 IDEA下载安装
+ O4 o# w3 b9 k! j- \+ c' {│  │  │      07.idea下载.mp4
+ f: v: d& g, m2 m; g4 ]; W( z0 K│  │  │      08.idea启动.mp4" }* O. d) w; r" o" J+ Q
│  │  │      
5 F/ Q2 e3 b! l! h: E* |│  │  ├─20 递归
; D& J' ^" r% k│  │  │      25.递归.mp4
) w  P) _+ E: c: ~1 F; p  C7 u│  │  │      26.斐波那契数列.mp44 m+ l  O- D; {5 a8 R6 e& o! p+ A+ ]
│  │  │      27.递归和迭代的对比.mp4% J1 u' _+ i2 V* o, h0 ~
│  │  │      28.尾递归优化.mp4, y( e- K  I. J; z7 z6 P6 X
│  │  │      
) m0 R& g3 H7 k0 B4 M; ]│  │  ├─3 IDEA使用5 E, h1 U8 w3 k# C* o
│  │  │      09.helloworld.mp42 N5 b3 \% G) r% ]
│  │  │      10.导入设置.mp49 s! K. N* E7 T( v' X
│  │  │      11.java和kotlin运行流程.mp41 A2 n) ]' B7 j' K6 E
│  │  │      12.查看kotlin对应的java代码.mp4
; G' p% ^% c8 f' c3 z  y│  │  │      
) K7 k/ M) y4 k# P6 m# O: ?4 C, G│  │  ├─4 kotlin数据类型: l1 Q+ B! T2 n$ Q1 Y: Y
│  │  │      13.基本数据类型定义.mp49 C& B! g2 I* w1 [6 g2 V
│  │  │      14.和java基本数据类型对比.mp4
/ Z, [( _( w+ q' [│  │  │      15.基本数据类型取值范围.mp4
7 R8 _& u& _# x* R9 q' G9 Z│  │  │      3 g- _# H9 K! {( b
│  │  ├─5 二进制
/ E! D+ z0 l& U+ T4 p# |$ N│  │  │      16.二进制基础.mp4  S; @7 D' R5 |
│  │  │      
& P$ E  i+ j& x6 F9 U2 y' ^  ~│  │  ├─6 变量定义
5 B: A7 I/ F3 h1 W% n3 A& D" ?│  │  │      17.kotlin调用java.mp4
/ F, I0 Y3 X7 v+ B" R│  │  │      18.智能类型推断和类型转换.mp4
& v8 ~3 ]- b- b0 {7 \5 N3 v│  │  │      19.可变变量和不可变变量.mp4
0 A8 d7 `" T9 M. E│  │  │      
4 q2 V8 \, D3 u& }! P# Z│  │  ├─7 字符串/ q0 C, X! |9 S
│  │  │      20.字符串两种定义.mp4
3 U9 K% T- V9 |- `7 }1 h│  │  │      21.字符串删除空格.mp4
. z9 C2 y: c7 h( `0 E9 Z│  │  │      22.字符串比较.mp44 w0 J: |7 @6 G, G- j6 N' S& l3 ]( k
│  │  │      23.字符串切割和截取.mp4- Z4 w( p5 `7 M: D
│  │  │      
/ h$ W1 A( @  T7 m  c│  │  ├─8 元组6 c- k) ], F  y2 @5 `, t
│  │  │      24.二元元组和三元元组.mp4/ ?: N2 ~9 t9 K+ X4 Q; a
│  │  │      7 O) |; Y5 B# j6 `" D* G; l
│  │  └─9 空值处理
7 o0 k, F7 r  E1 e1 w& ~│  │          25.空指针异常.mp46 {' f  h' v$ u+ O% B
│  │          26.空值处理运算符.mp49 T9 O6 C. E9 j& Y
│  │         
6 w4 \+ q. ~+ J$ ?8 J  \, D│  ├─3-10 gradle
& [, {3 I. R2 w( A- }. m, V│  │  ├─1 三种构建工具* T( D0 K8 F; x4 \8 o+ y
│  │  │      02.原始人的工作方式.mp4
7 Q) O- f, z3 I* w/ q% o( w- I* p$ \+ ]│  │  │      03.三种构建工具对比.mp4
( @0 {8 `" h" \+ M* D7 a- ^% `' n# C│  │  │      04.gradle简介.mp43 w& I( F! N+ q7 E
│  │  │      1 v% [( B! r, Y
│  │  ├─10 多模块构建
- E) ]3 m2 G& s│  │  │      30.多模块构建简介.mp40 ^2 ~5 V- `; k* j3 i
│  │  │      31.多模块的依赖.mp4! O/ C0 |/ |( p1 ~, N# c: e& \! t
│  │  │      32.多模块构建.mp4
1 M! H3 q& ]0 x4 n+ |│  │  │      
6 H0 S' S& ~6 E& p5 ]│  │  ├─11 groovy入门: t  V" z3 n/ ^; ]8 c% L7 \
│  │  │      33.查看groovy编写的gradle脚本.mp44 c9 n2 H, V7 D" W9 Y
│  │  │      34.总结.mp4
+ z/ B" G* D* b8 x; D│  │  │      d8-01.回顾.mp4
8 t' u4 h& c9 y( S│  │  │      
0 Q* g2 B+ D& _1 ~$ C, G- w/ k3 u│  │  ├─2 gradle使用入门' d7 x  N+ a+ X' P8 h+ Z
│  │  │      05.gradle下载和配置.mp4
* P6 i" o* H& X6 r: k│  │  │      06.gradle项目初始化.mp4# n/ _* b8 V& L  _8 n
│  │  │      07.gradle打包.mp4) f- K, J# \5 {6 N1 R" \
│  │  │      
$ t' \  W- M" k1 N" Q8 ~- A│  │  ├─3 gradle构建kotlin开发9 v- b6 d9 k. D: \1 _1 A  _
│  │  │      08.静态语言和动态语言.mp4
" U. ]& ~& N4 j3 a5 q2 w* A+ ]│  │  │      09.gradle支持kotlin开发.mp4
6 M# I2 K8 G+ C+ O( O! k, e│  │  │      & x+ p2 ^, N" ^3 Z9 R
│  │  ├─4 task任务- \1 f. E! ^6 F7 u" c1 L' n
│  │  │      10.project和task.mp4  e* z% D& ~2 d6 a" E' F
│  │  │      11.第一个task任务.mp4' T) Q7 }/ I# y" z
│  │  │      12.task依赖.mp4
/ x1 Q6 e! Z+ B+ X│  │  │      13.task生命周期.mp4; B8 r. ]6 L/ R6 N
│  │  │      14.tasks任务集.mp44 z% K, o5 J. W0 l5 G+ p' `  l$ i7 ~" I
│  │  │      15.默认属性.mp4
  b  H$ y. V1 M' S8 J; r│  │  │      
1 Q! l* c  p! ~/ ^1 W: ]6 t/ I│  │  ├─5 增量更新
7 R$ @% _4 ]8 R; D│  │  │      16.增量更新.mp4
! g+ u* x4 @+ {% v/ ?│  │  │      4 h) \" k+ u( N- \/ X6 h" w
│  │  ├─6 gradle使用插件
9 b- }  F2 p- v7 v4 ]6 V│  │  │      17.常见的插件.mp4
# r: i/ U0 `; ]% F& l7 O: [0 t& x; c│  │  │      5 \1 I) @! A' E9 T6 }4 S+ x
│  │  ├─7 手动添加依赖" R% a; d) v+ [! K
│  │  │      18.下载和导入httpclient的jar包.mp42 g+ G+ ]+ b9 M6 ~* r4 e
│  │  │      19.使用httpclient.mp4- u7 V, k" d, e" D. B
│  │  │      20.解决httpclient依赖的问题.mp4
8 W' U: g9 G. Z│  │  │      
% Q' h( ~; g# n' p' x) ^│  │  ├─8 gradle添加依赖* a( o$ g# ?" A
│  │  │      21.高级程序员做法.mp4
/ ~% X5 }, V# k4 B9 S│  │  │      22.两种方案对比.mp4
; I- Y1 Z9 a) Q: `│  │  │      23.依赖管理的总结.mp4
9 P' R; B! M7 z$ L3 O│  │  │      24.常见的仓库.mp4
* [4 ?! G% s6 l3 D│  │  │      25.依赖的坐标.mp4' G- `( W# P7 X% w8 j
│  │  │      26.依赖的配置阶段.mp4
0 D- A: G2 q; ], I1 [$ m, {8 j│  │  │      
# ]1 E4 ^4 S& O/ _7 a, J│  │  └─9 gradle依赖冲突解决方法
0 z- d; C# Q: y, q. }' @  B) A( ^│  │          27.版本冲突第一种解决方案.mp4, j+ m, R4 u7 {' P
│  │          28.依赖冲突的解决.mp44 ^3 a% `, ?! g2 P  i
│  │          29.扩展gradle任务.mp40 \% v5 w) z% z! B  V* l& Z
│  │          6 v/ ?  l  D5 p% C
│  ├─3-11 协程
1 y6 O8 ?; H* j# h1 l- @8 H│  │  ├─1 线程2种开启方式
- \& o' m/ M% P5 f" Q. n│  │  │      01.工程准备.mp4
" v3 v! z% ~, O* q│  │  │      02.创建线程的两种方式.mp4
; d1 {' j* E6 Q5 _│  │  │      
0 V, G: n  E6 a% B9 F│  │  ├─10 协程和线程) y, v) w& X6 I9 D8 E% N, W
│  │  │      20.线程和协程效率对比.mp4- N" q8 }9 r' d6 B3 W
│  │  │      
8 ]# f6 v. Z6 C- g2 K% ]8 o9 ?3 F│  │  ├─11 协程取消
# ?8 t7 }! S) c  N7 D; t# s│  │  │      21.协程取消.mp4
6 K. T2 \* b. E+ J( \: M0 b* _│  │  │      22.协程取消失效.mp4$ G4 J5 U% u. N" t! z$ l
│  │  │      23.协程取消失效的处理.mp41 S+ U& `2 l7 a! }& J' J
│  │  │      
0 t. Y) ]) _. H- e& p7 L7 m│  │  ├─12 协程异步启动
+ c2 P* ]0 C  _│  │  │      24.协程async启动.mp4
- F) u! M3 d. Z│  │  │      25.协程上下文指定.mp4
4 `" E+ x3 X/ ^) k$ k│  │  │      
4 p. w( p2 ]: w7 n│  │  ├─2 线程安全问题
3 }, f. K% P; O│  │  │      03.通过Thread直接卖票缺点.mp4& P8 [2 a; }5 ~) _
│  │  │      04.通过Runnable方式共享线程间数据.mp4" W- H! X& o, R1 i2 y
│  │  │      05.线程安全问题解决.mp4
* ~* q. j( r0 @' _2 v+ N7 m│  │  │      
8 ?. O/ c; ^0 ~: v/ g│  │  ├─3 线程join
( t) r9 Y7 K9 L; Y4 a│  │  │      06.线程join.mp43 G( `9 H0 R0 P. V# C( Q+ J( T( F
│  │  │      
: W+ J; V9 e  Z( j│  │  ├─4 守护线程
" I4 h9 k: _1 a* ^4 o│  │  │      07.守护线程.mp41 z' J, ~0 a1 |
│  │  │      
9 m5 R9 ?/ F. L3 Q% P3 L  Z( N│  │  ├─5 线程池
  G6 z  V. X+ W# c' Q4 D1 z' k│  │  │      08.线程池.mp4# v2 \; G0 d: M* w& N3 j0 T- k2 P' v
│  │  │      ! _+ P$ V: t6 V6 f) T. [* N. ^9 Y
│  │  ├─6 协程入门: A6 S5 C* h5 D/ z4 t3 E- X, i
│  │  │      09.第一个协程启动.mp48 e9 K6 B5 [0 m. R2 L
│  │  │      10.协程打印数据.mp4% x; g* T* `3 a( `: [9 k1 o+ u4 L8 s3 y
│  │  │      11.关闭https.mp4- ^" Q% ?+ D0 }  D! x* m3 I( \- q
│  │  │      
/ e1 W7 ]' l( {, p3 X% t│  │  ├─7 协程源码解析& ]0 ]/ u1 p0 W6 i* y! t
│  │  │      12.launch函数的参数和返回值.mp41 i* U" F5 b5 @5 g7 V! G( l
│  │  │      13.launch函数第一个参数.mp4
- e: g  g$ z; }8 Z│  │  │      14.ForkJoinPool的原理.mp4
8 P# ~: ~. b/ ~$ k$ u: e1 l$ j│  │  │      15.协程启动之后的处理.mp43 e6 H, I! V! F9 m0 W0 C' d# w# A- I* ~
│  │  │      
2 ^7 z$ l/ ]' f) x1 e+ R  z" L│  │  ├─8 协程实现原理
! `* n9 o4 f+ Z3 R│  │  │      17.协程实现原理.mp4: b5 g$ Q7 W. o: r. s
│  │  │      18.协程执行原理解析.mp4& F0 V3 ]$ J$ s
│  │  │      2 P6 T' Y! a+ b6 Y8 [4 W
│  │  └─9 挂起函数
. p8 q0 u+ `) k" `3 U$ M1 @% ?│  │          19.挂起函数.mp4
+ |) g7 s% f, e' G│  │         
. Q( W, V9 ^7 p+ ]│  ├─3-12 版本控制
& [' |4 ^, P% W0 A│  │  ├─1 版本控控制工具介绍
. x6 c6 S5 e$ [5 T* }│  │  │      02.版本控制工具作用.mp42 ?( \, u, y) b4 H/ @: i5 m
│  │  │      03.版本控制工具集中式和分布式.mp49 d+ D9 o1 p, h& j2 ^3 c7 i) O9 @
│  │  │      04.git的产生.mp4- N+ k4 N2 l8 i  N, k
│  │  │      
* N: v6 A; i- I: c│  │  ├─2 git提交文件9 U6 f5 G9 p3 {( t! r9 a
│  │  │      05.安装git.mp47 N/ f% y$ t, K& f$ B1 G3 V) W
│  │  │      06.自我介绍给git_以后提交名称.mp4
! e& n. [3 V0 v& [+ [│  │  │      07.git初始化.mp4* N6 y* T6 Y; u8 V; \
│  │  │      08.忽略文件.mp4
% n/ l) ~3 s6 j* W' C. l) d  j│  │  │      09.git status查看状态.mp4
( m. w3 e# |1 N8 P! P│  │  │      10.添加和提交的命令.mp4
3 ^* f% a6 ^  W/ A6 q+ p│  │  │      11.git log查看提交记录.mp4
5 b9 n: j- ^! k. `) {; y│  │  │      12..gitignore作用.mp40 I4 ]& }! _- y% Z6 W- O
│  │  │      13.提交流程回顾.mp4
. L8 s" g7 G' z9 ]# B& a+ E) H7 W+ v│  │  │      " i# l6 S. \: S- C% E
│  │  ├─3 版本回退
0 @  w1 r! p# Y1 Q( e! H( j9 p│  │  │      14.版本回退.mp4
, e& V, z% f+ ~6 |$ a6 K│  │  │      15.回退到原来的版本.mp44 n; C5 t2 o9 h. G
│  │  │      16.小bug.mp43 H" a* o% ~3 c3 ]1 O- C
│  │  │      
, i" }, K* P) e+ Y/ B! u% r- H│  │  ├─4 git分支
3 g- g' q% {* S: D6 O│  │  │      17.分支创建切换和删除分支.mp4( Y' Q. F/ _: ]
│  │  │      18.分支合并1.mp4
1 _* y4 l6 w: S' d2 A; z│  │  │      19.合并冲突解决.mp4& W9 K' K2 F( f8 ^* @
│  │  │      
; V! {% v5 w. [) F% a7 f│  │  └─5 Github的使用# j. `2 \6 p3 w9 ^/ k1 @/ y
│  │          20.github简介.mp4
) J; F+ h- N, K) T8 Y& G: k2 i- x* C│  │          21.生成公钥和私钥.mp4+ P, M5 p$ j  B' v
│  │          22.创建远程仓库.mp4
0 T, B" P( m* w' Z0 k│  │          23.关联远程仓库.mp4
9 R& g, |7 w; H7 t│  │          24.推送到远程分支.mp4
& k  f# `$ j/ R' {. W% d& H3 [7 Y│  │          25.推送其他分支.mp4- H" J: a* x8 M$ ?8 u  \4 s# A) ?
│  │          26.zhangsan分支开发及推送.mp46 X2 I0 f% a4 }2 r2 R
│  │          27.zhangsan推送master分支到远程master分支.mp4
1 o  Q( i( e) k6 U│  │          28.新用户克隆代码.mp4
# R* @3 z( i8 R, \9 I) e│  │          29.lisi推送分支到远程分支.mp4
, p! C9 m, M2 k: Z$ i& k0 V) y│  │          30.推送到远程仓库冲突解决.mp4& |1 {) m0 \$ L* q4 {' a
│  │         
: V+ F/ R  z; J8 S- Y│  ├─3-2 kotlin面向对象
  n2 {) i6 O4 D! m' A7 C1 q. M│  │  ├─1 面向对象入门
, ]- e$ {5 C3 l│  │  │      29.面向对象.mp4
! O) `9 q: R7 ]* `( T+ j│  │  │      & y/ R+ \! ?- t1 {% }( x: u
│  │  ├─2 运算符/ e% c( d9 R  r. S& o# `
│  │  │      02.运算符重载练习.mp47 s5 X3 W5 u0 Z, V. A& k
│  │  │      30.kotlin的运算符.mp4/ L; N5 C& L5 X7 P; w
│  │  │      31.运算符.mp49 }. z5 }( Q- M) K
│  │  │      d3-01.回顾.mp4
$ w* A+ v' w# L* o$ F' @2 `. c0 T│  │  │      2 c+ z1 r8 [2 {
│  │  ├─3 访问器
5 k" N3 S9 `( O0 O, Y6 v3 E6 h│  │  │      03.get和set方法.mp4
  ?2 b7 q. G8 u- K, {, T' o  P, c0 u│  │  │      04.访问器可见性.mp4$ h( I  Y" r' W8 S+ @
│  │  │      05.修改访问器.mp4; {6 \3 h3 \; X1 P
│  │  │      
; c7 u% c5 I; U7 {% n│  │  ├─4 kotlin对象创建过程6 A! u: z/ i+ o9 R$ c) W- Y
│  │  │      06.对象中init使用.mp46 m2 G1 Y1 z! p1 F2 b
│  │  │      07.构建函数参数使用var和val.mp4$ d; {1 H1 d/ l' z
│  │  │      08.次构函数定义.mp4+ y. r1 ]( O" M
│  │  │      09.次构函数参数使用.mp4
1 p! v8 G8 Q1 J9 L│  │  │      10.init和次构执行顺序.mp4
* n! Q3 k* G( R1 f2 W" w- O. R3 }│  │  │      5 k3 p  O. v; h( l5 `3 O" B% h8 o
│  │  ├─5 封装- G, h2 c" F, J+ y9 w
│  │  │      11.封装.mp4
5 H* ?4 z3 s5 Q│  │  │      + b3 p. ?3 e7 U2 T; j# U
│  │  ├─6 继承( I1 h6 i8 L& r  |3 w* ?& W
│  │  │      12.继承.mp4, ?5 T% k* z- ]9 C4 Q
│  │  │      * M  C' B. ~: |& w0 R/ y0 [
│  │  ├─7 抽象0 R" N7 ~! B  s6 I8 B
│  │  │      13.抽象类.mp48 M. s+ V7 e9 C& W/ ]8 L$ C
│  │  │      14.抽象类总结.mp4" w' @9 ~0 x0 O7 k9 i" D( X
│  │  │      ! y. J" f% p& B3 Z. K. n8 ?
│  │  ├─8 接口
; E3 ^- C% y1 C/ y7 w5 E│  │  │      15.接口.mp4- i3 f9 R5 u5 k8 B6 j0 j& g
│  │  │      16.接口中字段处理.mp4
, \0 c5 ]7 r6 {& U│  │  │      17.接口中方法的实现.mp4* d" q5 ?( i9 R: T7 E9 ]; C; m
│  │  │      18.多态.mp4' w0 w; B/ }& Q7 N( F
│  │  │      
3 K- A' h# |: m│  │  └─9 面向对象综合案例
; T1 S1 ^7 m) r7 f│  │          19.智能类型转换.mp42 Q" t) j& N) D. Z7 B6 m
│  │         
- N0 o# E* w4 [│  ├─3-3 kotlin基础高级2 o$ v5 {; ]3 n1 L
│  │  ├─ 1 嵌套类和内部类
7 d3 u: Y" X/ n* C│  │  │      20.嵌套类和内部类.mp4
' V2 q) w/ O5 a& U& J" T4 _│  │  │      21.内部类中使用this.mp49 Z2 w7 n7 K1 z
│  │  │      
+ c) j  E1 R4 ~2 X2 A5 L│  │  ├─10 数据类6 H# O; x( N; X
│  │  │      19.数据类.mp4
2 R2 U2 K5 t1 P% h9 U│  │  │      5 N! M4 \% G1 g' V) g1 K3 Z
│  │  ├─11 密封类7 g0 P7 B! g  x; E/ u% U
│  │  │      20.密封类.mp49 l" ^. L* S* a! C
│  │  │      
4 M1 Y) U& t$ g/ o) `│  │  ├─2 泛型
$ Q" k' c* t& I8 S) W0 c│  │  │      22.泛型类.mp40 I& x% [( I( E) T" a: S( [/ Y
│  │  │      23.泛型函数.mp4
* v  B5 k5 e2 m6 I% D5 h2 `│  │  │      24.回顾.mp4
7 V8 w3 ^/ i3 d' Q│  │  │      25.泛型上限.mp40 z" Z' X0 ]$ s5 y8 n8 S
│  │  │      26.泛型擦除.mp4
* T+ ^) R: J; K( o: S│  │  │      27.泛型类型投射.mp4
5 `6 I/ E; |' p# y1 {│  │  │      28.星号投射.mp4
: a0 }3 e" v' ]( C* ~# a│  │  │      
" y1 b  t% x2 R* v5 {│  │  ├─3 中缀表达式/ o6 ~4 ^1 }! M3 b# V
│  │  │      02.中缀表达式.mp4) b3 O( M2 v2 z* e8 @; H
│  │  │      d4-01.回顾.mp4* }# m  }3 l+ @# c( ^2 F( S
│  │  │      % [3 \; s, X2 F
│  │  ├─4 类委托和属性委托) L1 Q" E' q: w
│  │  │      03.类委托.mp4& I, v2 p5 j% X
│  │  │      04.类委托实现方式二.mp48 C; Q9 g6 X2 l" d3 C' j- e6 z
│  │  │      05.委托加强.mp43 \9 f- Z* ]( D2 J& J$ N6 [
│  │  │      06.属性委托.mp4
6 w5 m/ {& `( Q│  │  │      - q& z" P  V5 y3 P
│  │  ├─5 懒加载" E/ T4 D- @. }0 K# o
│  │  │      07.by lazy惰性加载.mp4
% ]2 V# Q3 ~0 d% X' n$ ]/ o: V│  │  │      08.by lazy和lateinit.mp4
$ _/ z6 ^' }6 `( q, P3 e0 r│  │  │      8 a% |/ u6 [0 c+ }# q3 q
│  │  ├─6 扩展函数9 x9 K, p( O" r$ O# h/ n
│  │  │      09.扩展函数.mp4* k9 N0 R. d! Z
│  │  │      10.父类扩展函数子类调用.mp4
, I. A  m: ?5 X│  │  │      
9 f& B5 t4 w7 s, K4 Z% d│  │  ├─7 单例模式
9 T; {: G' ]" E. L8 I$ [9 |│  │  │      11.单例模式一_饿汉式.mp4+ X9 A+ C0 W" {! k# }$ r% D2 L
│  │  │      12.单例模式二_懒汉式.mp49 D# i$ }1 M: o# Q6 [
│  │  │      
8 j* U- Z7 C( r│  │  ├─8 object单例6 @8 K% ], l1 X, W& F- \2 y
│  │  │      13.object单例.mp4
* P9 P' Q1 \# T│  │  │      14.object单例问题.mp40 V* o) ?" K: c, P2 r7 ]) o) r
│  │  │      15.伴生对象.mp4
/ g: _3 T8 K, Y4 ^& ?│  │  │      16.实现和java一样的单例.mp44 i5 t  r" F6 e2 P9 \$ ?2 x
│  │  │      
6 I9 w$ h, K! I% l│  │  └─9 枚举% ^0 Y0 c0 a9 V
│  │          17.枚举.mp4
" T8 x/ B$ P* a" b1 T; q; ~│  │          18.枚举的高级用法.mp41 }: }3 X) w2 h# y0 X+ z0 j
│  │          # y* [% d/ |5 R' U/ O
│  ├─3-4 集合
! H  X. c% q' ]0 o4 L& ^│  │  └─1 集合函数
. P, n6 i1 ~9 a5 Q; X/ w$ h│  │          02.java集合回顾.mp4/ \, F  C9 b; N$ E# Z
│  │          03.koltin创建java的List集合.mp4
" ~4 B8 q) ?  h3 v% J│  │          04.kotlin的set集合.mp4( l1 ]5 R/ \7 J
│  │          05.map集合的创建.mp4
6 g" p& k9 t! q1 L9 B( U( t│  │          06.map集合的遍历.mp4
3 t6 d# S3 V! D" b3 Y│  │          d5-01.回顾.mp41 x4 v" Y, u5 ^6 r& q
│  │          " Y9 I& _4 A: D$ G
│  ├─3-5 lambda表达! S+ I; D% c- s2 X/ L( E
│  │  └─1 lambda表达# W3 G  z0 a- x# C
│  │          07.闭包.mp48 p3 d8 D; D6 c0 L. a, T: z+ y, ?# k3 u
│  │          08.高阶函数.mp4
8 [% J* }( K  s5 d! Q$ S│  │          09.lambda表达式.mp4
5 }6 L2 _0 a% ?2 c│  │          10.lambda表达式去().mp4/ E! P: t6 r+ y, Z: w
│  │          11.有参lambda表达式.mp4! t6 X7 W3 F! P) `- C$ v) N
│  │          12.保存lamba表达式.mp45 j  Y( N( m' \8 Z; I4 u: z' G3 O
│  │          13.lambda表达式使用it.mp4; s# v2 v! e, K* b# {2 v, E! y3 V- l
│  │          14.lambda表达式返回值.mp4
) M6 R6 X9 x, d$ ]) _/ O0 s│  │          15.常见lambda表达式foreach.mp4
  ?7 w/ k7 `  h- s│  │          16.常见的lambda表达式indexoffirst.mp4- ^# T, J$ ]- [; H
│  │         
! i. n5 t. P* v. j6 Q2 f! l6 o, {( h│  ├─3-6 集合函数
- Z% `, C6 p* _3 l7 [& Q% F│  │  ├─1 集合函数+ f/ ?7 t6 b1 a: a  d! O" }
│  │  │      17.查询练习.mp4) ]  b) _( t' D
│  │  │      18.过滤.mp4
! v  f" j; X& v+ |│  │  │      19.排序.mp4
9 m: s" c+ ]( L. a│  │  │      20.分组.mp4. c& E5 G+ t4 ]  s. J
│  │  │      21.最值.mp4
4 k# w' L/ G+ @0 J7 l8 d, F8 G- o2 C- I│  │  │      22.去重复.mp4
" f+ y2 m% S0 j" K8 ~│  │  │      23.集合拆分.mp4' R  F, w' E' i2 S6 x3 Y
│  │  │      24.集合重新组合.mp4
8 o5 K! g/ R% A6 X$ E& Z$ v│  │  │      25.集合相加.mp4
( b% ]* ~& A* K) V8 B│  │  │      26.上午回顾.mp4) K1 x8 r% T2 g/ ?" N) m
│  │  │      
) ~7 y! E, @: n' O│  │  └─2 四大函数
5 x+ [) c# ?0 V; e2 {9 Q* ], Y│  │          27.大接收者的函数字面值.mp4
/ i6 d0 O- k  X9 W$ a│  │          28.apply函数.mp4
4 {  o' B  L4 a9 g│  │          29.let函数.mp47 r3 `- B  _, J% h5 j: x& X
│  │          30.with函数.mp4
9 ~& x. F( [6 z% x, Q4 y/ t│  │          31.run函数.mp41 ?- G) T  A% {3 ?" d
│  │         
# S; Z* [2 f4 I, x4 g! k! i│  ├─3-7 回调* n6 S! b( A, z
│  │  ├─1 接口回调
; L" o& Y5 a/ X; D$ j2 r│  │  │      32.案例前提.mp4& n) ]' ^6 _. e% h. T1 j( V% n
│  │  │      33.接口回调.mp44 z$ T, W  p0 B
│  │  │      34.接口回调流程.mp4
/ A' P3 ~% y. e│  │  │      7 I9 H; C! b. f% E7 K
│  │  └─2 函数回调; z' T/ p$ M) q$ O: `
│  │          35.函数回调.mp4: z$ p1 A2 Q. J6 v" h' d) n* ]$ j
│  │          36.接口回调和函数回调的对比.mp4
" g' L6 D8 T3 V( `3 S9 M│  │          8 e4 R& g' {* b, ]0 k! w/ Q: `# \
│  ├─3-8 集合函数综合案例
& z. n5 Z( }+ l5 A0 u+ v  l│  │  └─1 集合函数综合案例* W) A( R* Y# s! t/ v
│  │          02.数据库案例查询.mp4' l  V7 x& f/ t$ l) J' f) r
│  │          03.黑马商店练习.mp4
. S& ?4 }% |% V, C) H1 n3 ~+ {│  │          d6-01.回顾.mp4  V  W  b$ {# x% S
│  │         
2 a1 C: o8 X6 @2 ~* W( ?4 a│  └─3-9 dsl
8 V4 J6 j3 A& z4 m# k# J│      ├─1 dsl入门
( O* C7 a: N& D6 u& e. k│      │      04.DSL简介.mp4% G- S* t$ X( o" E
│      │      05.class的普通实现.mp4$ c* ^! C8 T* P/ l
│      │      06.实现person函数.mp4
$ B' b& p, a0 g3 W7 u; a│      │      07.实现name属性的赋值.mp4
2 y, w2 O. \) J2 L  i│      │      08.address函数实现.mp4
2 ?  |# J  J/ W6 g4 [! A7 x- p8 `│      │      09.address里面字段的使用.mp4% F2 }/ B6 A. @/ N+ u8 K! x
│      │      10.dsl流程.mp4
) J# |! i& F7 }- n/ S" ]# J│      │      11.dsl优化.mp43 P/ m0 p2 D% r. G
│      │      12.dsl总结.mp4  [# d& Z$ u: b$ |/ e3 \' @
│      │      5 S/ z  i8 H( ^* C. V4 S
│      ├─2 dsl综合案例9 m* _. @4 n2 U" J5 y
│      │      13.普通实现html标签打印.mp4
8 b0 l* `. x% x: ~, O│      │      14.html实现.mp4
/ j/ Y- G9 y2 T7 n4 x, ]7 T│      │      15.head实现.mp4! l% L' E2 q# l# O9 f5 w
│      │      16.body标签.mp4
& w7 c6 K0 c" c│      │      17.div标签.mp48 S# y( E. {8 m: Q4 k
│      │      
( R3 U/ D' t4 V- `' ~│      ├─3 构建器模式' y! ~0 {' k3 i& h* V$ p
│      │      18.构建器模式.mp45 F; O! L' p2 g( ?
│      │      19.DSL构建器.mp46 M% Z  F% r( T& S. H
│      │      20.通过构建器模式实现多个address.mp4& E8 P$ f& a4 s1 M$ J/ d% u! S
│      │      21.多个address使用.mp45 w/ _5 M5 P$ V7 z, k0 R" N
│      │      7 A+ T9 C; X3 s. c6 Z( T4 t
│      └─4 dsl缩小作用域
" J. @% U2 A6 z│              22.缩小作用域.mp4
* I7 m- [- k3 t  ^" W│              ' p# a/ d+ g0 E* o4 W. w' t
├─4阶段 区@块链前端基础! h9 E8 `; g1 l/ g
│  ├─4-1 HTML; S) |- B7 y/ k, e
│  │  ├─ 2 html基础标签1 L+ q, O9 M4 I  x& w
│  │  │      05_标题标签.mp4
- J8 ^$ W4 [4 [4 ^$ ]0 x; o) i2 b│  │  │      06_字体标签.mp4, {% F' P/ t8 X( [: o% D! F
│  │  │      07_颜色的使用.mp4
- E3 K& R  t/ M. s1 {; Z, t6 q│  │  │      08_其他标签.mp4) h# I. E9 J- i
│  │  │      09_图片标签.mp4
1 W4 b$ T5 ^( F5 k0 o; X3 U$ m$ n│  │  │      2 b; V2 `+ G6 @. I# U2 b
│  │  ├─1 html入门! c. }: _9 v. e" j* M( x$ v. I
│  │  │      02_入门.mp4) D8 P+ I- a$ _% a
│  │  │      03_资料和软件.mp4
6 K2 g5 d* p# n: h: L" x│  │  │      04_html文档的基本结构.mp4# h" w7 P/ ]5 P% E. T# W
│  │  │      
. Z+ Y% J& V6 f3 Q2 [; L+ C, z│  │  ├─10 表单标签2 k1 K( {: s7 v
│  │  │      21_基本表格.mp4+ ]; V0 M5 D* V- c# G6 \! T
│  │  │      22_下拉框和文本域.mp4* ]) D' ~$ o( y- ~
│  │  │      23_常用属性和默认值.mp4
2 `. X' `: c) [7 p, ~│  │  │      24_表单的属性.mp4
3 [; w2 E( A  T│  │  │      24_表单的属性.mp4.baiduyun.p.downloading
9 \% x9 v, [* @( s│  │  │      
6 w$ a# U8 n% u1 K. B2 K1 Y8 j. f│  │  ├─11 html学习方法; O5 C5 r1 P) `6 ]5 U# _( t6 t' Y
│  │  │      25_学习方法.mp4
/ Q. g( m& [! v3 z& Q│  │  │      
0 ]# I3 @3 g. U( k/ \0 p. V  Z2 V│  │  ├─3 案例_程序猿
2 ^9 @0 N1 j& O: ]6 z* {* k& |│  │  │      10_案例_程序猿.mp4) X/ T# {) a2 i8 }5 F9 I
│  │  │      0 `6 b2 B( T2 p& E5 H
│  │  ├─4 html列表标签
/ c7 P" a0 ]/ j( p/ C9 a│  │  │      11_列表标签.mp4
. g% J. \5 E7 L6 h% j; e│  │  │      / p# H# f3 j0 r, X
│  │  ├─5 html超链接标签+ g; A, b8 K4 _. r
│  │  │      12_a标签.mp4
: Q* m. T% P6 F│  │  │      
$ o& c9 ~: B, W/ _1 N+ U│  │  ├─6 案例_友情链接4 v. K5 A2 s$ R& w
│  │  │      13_案例_友情链接.mp4/ Q# o* M' p, |4 g! a
│  │  │      # t8 L; O# h9 t2 P, s8 y9 Q
│  │  ├─7 案例_回到顶部' @  B; B* q5 Y( O; H9 t% c+ ]
│  │  │      14_案例_回到顶部.mp4
: {3 r% f) `  g* X% J$ q" a+ ]│  │  │      2 D& B5 y! Z4 k# I
│  │  ├─8 html表格标签, V- t8 B0 d" K
│  │  │      15_基本表格.mp4
8 {# e2 w3 o+ K; M% u, \│  │  │      16_表格的属性.mp4
! |6 c& }: C0 T  [$ t5 `4 p│  │  │      17_表格的结构标签.mp4
# F$ ?" X9 f# x0 ?4 N/ v│  │  │      18_行和列的删除.mp4
3 q# H' U2 N0 z" W│  │  │      19_单元格的合并.mp4
0 J4 k) q+ A- B│  │  │      6 o% |. ?8 g0 k' ?5 I9 O! Y- m
│  │  └─9 html框架集标签2 k! Y. P& T0 h5 s7 y' b0 w* c8 J# E
│  │          20_框架集.mp4
7 A4 o8 I' ]( w0 @! ~5 G, w) |! a│  │          9 \1 K6 D( y& N/ H% I# Z* D, Q
│  ├─4-2 CSS2 d/ I6 x8 p& I+ v
│  │  ├─1 css入门
/ ~+ K/ t" F" i│  │  │      01_CSS的简介.mp4( i1 |/ q! O$ A: @1 B4 Z7 N
│  │  │      02_入门_QcrI3.mp4' `: q7 n" g( K
│  │  │      
/ A! p( A* M$ O0 I8 J│  │  ├─10 CSS定位
' I$ F1 K! @3 Q│  │  │      32_相对定位.mp45 |( A" M+ m* g! H. X
│  │  │      33_绝对定位.mp4
- k( M# f0 U- X7 P" T( x│  │  │      34_浮动.mp4
% C% O1 |$ o/ `' o  J│  │  │      35_其他属性.mp4. M5 h( a, B7 |) f9 @0 W
│  │  │      
) `" W: S* P- I- L, A, y9 {, S│  │  ├─2 css使用方法5 T3 J+ j' ?) {9 y$ q
│  │  │      03_使用方式1_行内样式.mp4
1 q; W- T% H8 o, o4 {% O│  │  │      04_使用方式2_内部样式.mp4
% E, j3 t% x3 D, @5 F│  │  │      05_使用方式3_外部样式.mp4& n" M6 f% D4 H9 E+ \: G) o3 K
│  │  │      06_使用方式4_导入式样式.mp4
! p& C% U- @+ A3 f2 P│  │  │      07_优先级.mp4
1 e6 W; z* j6 T" n5 I4 h# x│  │  │      
2 b; v" I; m$ e' b6 B& i$ T│  │  ├─3 css学习方法
- G) s& B  E; O1 ]! W4 l$ A│  │  │      08_CSS学习方法.mp47 D* b' H. @( a! e8 B6 c
│  │  │      
7 t# q, R# w! p│  │  ├─4 css选择器1 i( Y  n/ d! q% _2 v
│  │  │      09_标签选择器.mp4
& K+ D# E7 o5 s, i8 C│  │  │      10_类选择器.mp4& A/ e; a! h2 x+ `. S- d
│  │  │      11_ID选择器.mp4
2 f' p3 m! w) ~$ s* q( i/ x│  │  │      12_群组选择器.mp4
2 q: i4 @; ~6 g+ Z3 l- \│  │  │      13_全局选择器.mp4+ w/ f* R# @$ u, M  R
│  │  │      14_DOM的关系.mp4
: z% c# A, W: z7 i5 z│  │  │      15_后代选择器.mp45 f* z" A' s9 O3 v( h6 N; E0 ?
│  │  │      16_子元素选择器.mp46 q/ Q$ J1 \4 o+ ]3 W
│  │  │      17_ID选择器.mp4
5 \) _0 S& O5 I+ d$ N+ t│  │  │      18_伪类选择器.mp4, x8 ^9 f' S1 U: N- @
│  │  │      
, r( Z  W* A5 G$ {3 `│  │  ├─5 css继承8 p* ^, B6 g: N$ E6 Z  E
│  │  │      19_继承.mp47 Q2 H" B; w5 Z' ?0 k2 d5 B& m
│  │  │      6 ~$ J4 i' |7 p- c/ E3 K
│  │  ├─6 css层叠1 @; c/ `  y: {2 p0 U- \% m9 |# U
│  │  │      20_层叠.mp4
: }! R4 Z+ z, k  W│  │  │      ' Z7 y3 T2 _9 }
│  │  ├─7 css命名规范
7 _: Q' ?' |% L, j& f, @2 P│  │  │      21_命名规范.mp4
; p) V7 j& X0 p' Q7 h│  │  │      
" }& t1 Y2 }$ l9 a+ E5 f│  │  ├─8 css常用样式. \  [# l6 J/ }1 P5 \
│  │  │      22_背景样式.mp44 w2 i4 ~: D7 x, F
│  │  │      23_文本样式.mp4$ j+ ^7 p3 D( a7 w
│  │  │      24_字体样式.mp4) O: {4 e0 M: o: e6 x! |. y
│  │  │      25_列表样式.mp4% V5 K. Z& L% N4 t
│  │  │      26_表格样式.mp48 e$ f; Y3 L: \0 K$ p) Q& p! \
│  │  │      27_轮廓样式.mp4
% h0 S% F) e5 C. r│  │  │      ! i" g; P7 o2 L/ h- u7 S) D
│  │  └─9 盒子模型
& c* `& X4 P4 h$ M. a│  │          28_盒子的简介.mp41 `. T$ M; C, d; d' a
│  │          29_内边距和外边距.mp4
5 B9 _) z0 \8 O│  │          30_盒子的注意事项.mp4
- C# d( Q) L% A. ?/ ~9 Y+ Q│  │          31_HTML元素的分类.mp4  V2 \4 A7 w3 _- k# `
│  │          3 ~) u- o1 R) i4 Y4 P' D  W9 [
│  ├─4-3 JavaScript" d+ m5 {) I: B5 A
│  │  ├─1 js简介; L5 C: T' x! l+ x& B3 X
│  │  │      01_js的简介.mp4( c( O; v" H. l# ]# s. _: G+ r% d
│  │  │      ( r0 F: t/ Q5 `% N3 O/ f
│  │  ├─10 案例_隔行换色1 `# O$ Z# x% U5 Z
│  │  │      案例6_各行换色.mp45 Z# d4 B& j0 a
│  │  │      1 }8 [' g2 B' e4 x; b% E+ T& {
│  │  ├─11 案例_全选全不选
" U. A8 v5 j+ Y# ~( S* H3 P3 U" o│  │  │      案例7_全选全不选.mp40 M6 o. Y- i! C2 n) t
│  │  │      * Q$ |7 G) l/ P3 \: G; I
│  │  ├─12 案例_省市联动
) u3 a; b8 }5 h9 A7 _│  │  │      案例8_省市联动.mp4! o: a- s3 l4 o0 F" ^; s+ B( s2 Y" u
│  │  │      4 s) Z6 F! G' i1 B5 h4 s
│  │  ├─2 js基础语法
3 |& Q6 b+ e2 a$ I/ d. U/ E$ |│  │  │      02_基本数据类型.mp4
: H7 z% \5 Y# K2 S9 F  x│  │  │      03_运算符.mp41 E# t2 O0 A) V3 M' K1 ~4 v
│  │  │      04_流程控制语句.mp4
4 |1 d5 t: J. r0 M│  │  │      05_函数的定义.mp49 K. g& z: Z) ?5 \
│  │  │      06_函数绑定的第一种方式.mp44 G& i" o4 Y( `! {
│  │  │      07_函数绑定的第二种方式.mp4
  g0 k. x/ S' O, o0 z│  │  │      08_数组.mp4: _7 s# e" t7 G: b3 V9 [% i- i% M
│  │  │      09_正则表达式.mp4
5 a0 h  i& h" d│  │  │      10_日期对象.mp45 P  u4 H, r# q3 B" K2 ~
│  │  │      1 B, w; P/ v+ R) k! V
│  │  ├─3 DOM介绍
. a4 u5 F: W- t5 q% |  q│  │  │      11_元素的查找.mp41 `7 Z7 ]* x: _- X
│  │  │      11_元素的查找.mp4.baiduyun.p.downloading
5 r+ f! t( m% C' J) x7 }; `│  │  │      12_设置CSS样式.mp4% w4 u; w0 R4 q3 a. X
│  │  │      13_内容的获取和设置.mp4
4 l/ R. @" \2 Z! }│  │  │      14_属性的获取和设置.mp4
, l6 F# Q/ e' _│  │  │      15_鼠标相关的事件.mp40 d1 i: W+ A1 n8 F( E9 Q4 g. Z! U
│  │  │      16_输入框相关的事件.mp41 v8 s" V/ H* f
│  │  │      17_表单提交事件.mp4
" ~, l1 ~! X" c$ C. [│  │  │      18_onChange事件.mp47 D+ e- C: k9 |4 d: f( W+ G
│  │  │      19_键盘事件.mp4# g4 j% l( o8 p
│  │  │      
7 Z& j( E! l- ?* e│  │  ├─4 BOM介绍$ |0 R$ ^2 T; N
│  │  │      01_window介绍1.mp4
- b" i- M# d- p$ _│  │  │      01_window介绍1.mp4.baiduyun.downloading/ D6 f9 }* M$ r
│  │  │      02_定时器.mp45 a; K* q0 q3 z
│  │  │      03_history和location.mp4. J' b! B$ S: e2 T: u! L0 C
│  │  │      
4 f+ D5 f: O3 G7 c: P│  │  ├─5 案例_记事本: u2 R/ a! V3 |* d( Z
│  │  │      案例1记事本_实现.mp48 i) c1 H) m" v
│  │  │      案例1记事本_思路分析.mp4
8 e% ^: }% @0 ]5 {6 I│  │  │      
+ n- e9 F( N$ Q* ^; e. R( u│  │  ├─6 案例_任务清单
3 g! |: S; H1 R4 T( E: M( ?2 M) u│  │  │      案例2任务清单_1_保存数据.mp4- [4 n$ ?+ z# b' B$ v; u/ A% j
│  │  │      案例2任务清单_2_加载数据.mp4
8 Y* F7 S* E6 _; @3 h# Y│  │  │      案例2任务清单_3_修复bug.mp4: e& `9 Q+ ]- e% I, ?
│  │  │      案例2任务清单_4_设置样式.mp4
1 S6 ^* l( `1 G! U│  │  │      案例2任务清单_实现思路.mp48 M# f& q+ a- S4 U; f0 Z
│  │  │      8 n9 Q* x1 J3 x) E, n6 o9 v0 J/ y
│  │  ├─7 案例_表单校验6 u7 h& Q+ [0 g! c& r
│  │  │      案例3表单校验_1_手机号和密码的校验.mp4
6 c: G( y/ c6 E/ s4 R1 g│  │  │      案例3表单校验_2_其他校验.mp44 P  Q/ y  C# A/ n; Q9 r6 q
│  │  │      案例3表单校验_3_校验表单.mp4
2 H: y# w( s5 j: u/ r- g# ]│  │  │      % g6 ^0 H2 o0 g; U: r
│  │  ├─8 案例_轮播图4 `/ }7 }$ z( h6 Y$ W) ^' t
│  │  │      案例4_轮播图.mp4
* ^: G$ f6 S5 I/ F0 j- K4 m% @│  │  │      9 G0 L2 h& V, R7 ]. J
│  │  └─9 案例_弹出广告
% f2 y( T& q/ W│  │          案例5_弹出广告.mp4
) T5 s. s5 s: D' b7 f! I, n# |2 }│  │            ~0 J! v7 R% d% Q0 A5 O
│  ├─4-4 JQuery. ]! Q, @; R3 w( A- e
│  │  ├─1 简介
' y: `9 K. ]3 T1 U6 S2 a$ k" ^│  │  │      01_jQuery的简介.mp4
% j% J2 b3 f" [0 m* z│  │  │      02_jQuery的学习方法.mp4( \' r2 g, J4 H6 R) a- K, g0 q
│  │  │      
. Y" T/ W8 ^( K8 q* I0 c0 A" g│  │  ├─10 JQuery Validation的使用
5 T0 |- V1 A5 f# D9 b│  │  │      08_验证插件的使用.mp4
  w) Y2 a1 K. E0 _% y* |& [│  │  │      09_自定义校验规则.mp4. e2 Z; |3 h2 Y( z
│  │  │      3 q  n0 ^8 A8 y' e8 k
│  │  ├─11 百度API简介
: m! Q4 z4 n" M1 Z+ T- v" l│  │  │      10_百度地址的自动完成.mp41 N/ Z) {: @- `3 s' U- R
│  │  │      ; V$ \% t) R# u8 g. m4 B* K
│  │  ├─12 省市联动插件, F9 A) e. \+ C2 i& {" f  L' ]
│  │  │      11_省市区联动插件.mp4
& f7 ]+ r/ X% D& h) U│  │  │      
3 \  H* h' B) Y. |│  │  ├─2 JQuery中的API的介绍7 q" c, k1 E' D7 P& }
│  │  │      03_jQuery对象和dom对象的转换.mp4
. S1 U) y$ B+ h* i6 R│  │  │      04_页面加载成功的函数.mp4
) m- E& S% r% V' i5 j│  │  │      05_事件的绑定.mp4
0 u' z3 a, W* w" P│  │  │      06_常见事件.mp47 }$ e3 X) x2 o/ M+ a9 C
│  │  │      07_效果的API.mp4
9 g3 n4 ]. }- @5 A3 q2 p│  │  │      08_基础选择器.mp4
4 c( |  M+ ^: C# o1 I; N│  │  │      09_层级选择器.mp40 P% {) D) \0 k" q
│  │  │      10_筛选器.mp4. z& ~$ F/ X, Q- c, V2 ?: [# t
│  │  │      11_包含选择器.mp40 ?. c) A" x4 i9 |
│  │  │      12_可见性过滤器.mp4
+ g. e" ~4 B& w( ?" m│  │  │      13_属性过滤器.mp4& G: a( X3 n: a! v/ l- W
│  │  │      14_表单过滤器.mp4
4 E8 W  T0 C% l" g7 s8 p0 o; V│  │  │      15_属性的设置和获取.mp4
9 Q/ Y0 P  R2 i# q$ L% {! O/ e4 @8 G│  │  │      15获取和设置CSS属性.mp4
9 g3 J4 v' o1 F│  │  │      16_遍历.mp4
! M8 C4 W7 i$ d! g3 X0 ^. P: I│  │  │      17_操作元素的内容.mp4
9 x; h# b- m" P4 I% I7 d1 \1 ^* O4 u│  │  │      18_文档的处理.mp4
' y, j0 f$ z# ~/ ^  t│  │  │      19_表单对象的方法.mp4! P( E) A' z' r' u/ L8 ]
│  │  │      20_其他方法.mp45 P) W  E; e; o4 L% {, U/ X7 w
│  │  │      
7 }2 k9 D' ]6 g" `1 v! u0 v│  │  ├─3 案例_轮播图
5 C4 k& I% ?  c& K5 N) `│  │  │      01_轮播图.mp4
4 p8 p6 W. r* e6 F5 y│  │  │      0 O2 }5 M0 d; _' S# l' t
│  │  ├─4 案例_弹出广告
/ d4 G$ ^/ V4 }& ~6 |& k8 H│  │  │      02_弹出广告.mp4+ _; w* B& g+ v- \* r2 X; M& s
│  │  │      02_弹出广告动画效果.mp46 @8 M/ F+ `% j5 y
│  │  │      
+ B3 S, y5 F# w+ D) g│  │  ├─5 案例_隔行换色# j% c6 `6 s) X0 D; `( Y
│  │  │      03_隔行换色.mp4: @( v% [9 A& m4 h" ?
│  │  │      
$ ^" R9 }3 q1 g7 a$ a8 ^% d│  │  ├─6 案例_全选全不选7 ~, f8 O1 H# P
│  │  │      04_全选全不选.mp4" T& T! M7 O6 M) P/ ~' y$ d
│  │  │      + D+ i) j6 p' N) }
│  │  ├─7 案例_省市联动
. _9 W/ E. d, X│  │  │      05_省市联动.mp46 X+ W* u$ x( f, s* h
│  │  │      
' q3 W+ Y0 [! U/ n- o, [5 S│  │  ├─8 案例_左右移动% t( K# c! a, ^8 {( m) @; ]
│  │  │      06_左右移动.mp4
3 q4 O  _  Z, S0 V# Z% q4 N│  │  │      " X' L$ \" u; I' t$ n
│  │  └─9 github的使用
- n7 B0 |9 @" J7 F! j) V- i│  │          07_github的使用.mp40 H) ~; C! p% L* B% L9 ?
│  │          ' c# T# _2 Z8 b" R
│  ├─4-5 BootStrap5 {" W5 Z0 c0 U! p
│  │  ├─1 简介
7 `# r7 Z1 R( {│  │  │      01_简介.mp4: Z; w8 r6 T: o
│  │  │      . E# j2 z" O1 i1 q# N. D
│  │  ├─2 全局CSS样式
5 g: b3 ~* o6 K5 q! n" J│  │  │      02_使用步骤.mp4
7 L6 X& L7 ~9 L; u' q/ g, ~5 q│  │  │      03_排版样式.mp4
" P; l" R% {' p: W│  │  │      04_代码样式.mp4- a3 o, j2 g" O0 y
│  │  │      05_表格样式.mp4. V" \0 o7 m4 A' \& A
│  │  │      06_基本表格.mp41 W! A, l8 |; Y7 I- C( Z
│  │  │      07_内联表单.mp4
0 |7 b% R3 b% m, F& q9 ]│  │  │      08_栅格系统.mp48 _- m3 a2 G' S/ d& A
│  │  │      08_栅格系统.mp4.baiduyun.p.downloading
: v% ]7 Q" k* `. W4 |│  │  │      09_水平表格.mp4
6 C, T  o4 Y5 ?, y! e) O" f6 C$ M│  │  │      10_移动设备优先.mp40 P$ D8 e- E6 U
│  │  │      11_表单的其他使用.mp4# {& F- t# U6 E) Y
│  │  │      12_情景表单.mp4.baiduyun.p.downloading4 P1 Q# B  t* x: c0 C' q7 \+ C
│  │  │      13_其他样式.mp4' b) y  G, y4 {$ [) E! r
│  │  │      
+ _/ [" t7 F  O5 h9 q8 J* c2 k│  │  ├─3 BootStrap组件
/ z* x) S5 B; c│  │  │      14_下拉菜单.mp4
" M4 x5 X7 F) _+ H, I$ n│  │  │      14_下拉菜单.mp4.baiduyun.downloading# C; d2 d: A* V/ Z+ O4 L
│  │  │      15_按钮组.mp4+ `2 E( J) E7 ~& C6 @
│  │  │      16_按钮式下拉菜单.mp4
5 f5 K; P6 ]  ~( V! A' ?$ V. ?│  │  │      17_导航.mp4
# g2 [/ \4 k, r8 j+ \0 W2 u│  │  │      18_导航条.mp4
0 H3 G! h( r) b, ^% s  O- \│  │  │      19_固定导航条.mp40 Z$ B8 q) L' o) |. U) B
│  │  │      20_路径导航_分页_标签_徽章.mp4
) l, C/ L  f7 a; L( j1 ^" a5 D│  │  │      21_巨幕.mp4
3 ?* [4 D7 a; V1 o, }/ o/ n│  │  │      22_缩略图.mp4
% S5 \  `. @( k│  │  │      23_警告框.mp4: K7 i+ M2 C" u; H! V* D
│  │  │      24_进度条.mp46 E" t  |6 X( ]  S7 }3 y4 l. a
│  │  │      25_媒体对象.mp42 X; ~( Z+ L. `& r
│  │  │      26_列表组.mp4
+ P1 O" V3 V$ r5 K│  │  │      27_面板组.mp4; C' F" g4 S- C  I( Z
│  │  │      28_响应式嵌入内容.mp4
- U$ }% ~* {2 _5 K│  │  │      
$ H8 t  ^3 c- O│  │  └─4 JavaScript插件& _8 m0 v9 D! H9 n+ e1 K& Z
│  │          29_模态框.mp45 V; S9 o' k( n" u6 Q
│  │          30_轮播图.mp4
9 v9 i$ i) J9 t  x) s( K│  │          30_轮播图.mp4.baiduyun.p.downloading
+ f2 E; [3 L6 s5 i* Y* _│  │         
: z2 y+ Q4 ]+ p& b6 A1 A0 ^│  └─4-6 Kotlin与HTML  s1 c5 G6 C% p1 z" q6 S& ?& L
│      ├─1 Kotlinjs的入门
& T* g% H  R. H' C9 ]' ~│      │      01_kotlinjs的入门.mp4( h9 Q5 \. {8 R* |7 C# j! j8 l
│      │      " W# r' Z& E6 j, r
│      ├─2 案例_轮播图0 I0 P, J; N. p( Z5 r/ X
│      │      02_轮播图.mp4
0 p6 Y: c; K5 r2 W' R% G  K; h; }! v│      │      
& n% x4 F( v- K│      ├─3 案例_弹出广告
8 ^2 I2 B+ \3 i$ C│      │      03_弹出广告.mp41 X- A2 @& P; s# n9 s( v' @
│      │      4 a9 Q- i  g' N+ B4 G
│      ├─4 案例_隔行换色( F1 w6 b2 D; U/ a
│      │      04_隔行换色.mp4
$ V6 `3 K9 y" W: D5 ?│      │      5 W+ p0 {& ~2 I+ d
│      ├─5 案例_全选全不选
; `" P$ r% X" M5 R│      │      05_全选全不选.mp45 z% h, N: l: \' Y, H: ^
│      │      " q# m  x8 q7 W
│      ├─6 案例_时钟
5 G6 \3 y3 r: ^" q3 K│      │      06_页面初始化.mp4) [$ ~+ u1 X6 w5 ~% w( z
│      │      07_绘制线条.mp4+ X% c1 j. e8 m- h- f
│      │      08_圆的绘制.mp4. Q  A) J# b% [4 ]4 @" D
│      │      09_填充.mp4
( F" Y! B5 Y# y) s+ C8 K# G│      │      10_绘制外边框.mp42 u8 F. t: w1 v" j; J
│      │      11_绘制60个小点.mp4
! O' V- N! Q3 s2 c, Q8 m6 Y1 _│      │      12_绘制12个文本.mp46 j# @  F+ i; i" }0 I" D' G
│      │      13_绘制时针.mp4
3 J- n( m' Y' {│      │      14_绘制分针和秒针.mp4
- f" u% Q0 O2 {! q│      │      15_绘制当前时间.mp4+ w# U; @5 V# J8 J  u1 w( b) f
│      │      16_优化.mp41 ^, z3 [3 I2 A6 f; T+ j4 i
│      │      # {  L1 C8 {( }% S
│      ├─7 kotlin入门" R2 y  {* w4 V' D5 ~
│      │      17_kotlinx入门.mp4
1 E/ F5 G" z+ R& c( Z│      │      7 V( I4 f$ X8 T+ B5 y! m
│      └─8 案例_主页
# z: J" f; A. D6 A│              18_主页页面.mp4' a0 `9 j, k3 G$ ^/ Y
│              4 _3 A7 {, B5 b5 V0 m& I
├─5阶段 区@块链后端基础3 V: |5 u3 X2 s/ f4 k
│  ├─5-1 SpringBoot基础. @1 G2 W$ \5 `5 q; }0 @
│  │  ├─1 MVC设计模式. L: z; j; \3 y7 z* s) t
│  │  │      01_软件架构解释.mp47 \7 V) j1 j' r7 J
│  │  │      02_MVC模式介绍.mp47 K! \5 C* y7 A- u
│  │  │      03_MVC模式具体实现(三层设计).mp4
& w1 A2 i) l7 Y2 o, t│  │  │      / c9 ]9 {! p, V% ~
│  │  ├─2 基础搭建
: |+ e# [3 }) O# x) L│  │  │      04_web常用框架介绍.mp4( J  v& X3 k: Z1 O! A
│  │  │      05_SpringBoot环境搭建.mp4% {; Z- Z5 u: d+ W( Y
│  │  │      06_服务器软件介绍.mp46 t3 C+ L( l+ d6 B; J
│  │  │      07_tomcat 演示.mp49 i% T: l% r9 ]
│  │  │      3 o! C  a+ `2 o- N* A( j
│  │  ├─3 Controller详解
  ]/ [: }/ G/ U) O/ B0 d│  │  │      08_第一个controller.mp4
6 x7 u5 F6 Y7 }% k( ?' a1 r│  │  │      09_第一个Controller(细节处理).mp4
& j5 F& O: [( p0 O│  │  │      10_postman 介绍.mp4$ V& r! f* q$ ^) J* ?; h0 A  Q$ c
│  │  │      11_答疑 - 包的问题.mp4: F8 @: E8 B5 o/ T+ o; i
│  │  │      12_参数处理 - 接收简单参数.mp4
! G+ P  w8 n% Z: x( M1 S; ^, f│  │  │      13_参数处理 - 接收对象数据.mp4# D$ ?( k* O, ^2 Y
│  │  │      14_controller crud (添加学生).mp4
' Y* T8 ?8 O6 d9 c/ d7 @│  │  │      15_controller crud (添加学生 二).mp41 ^- o9 B6 A( ~. ]% V8 q
│  │  │      16_controller crud(删除学生).mp4
5 i0 U6 }5 q. w8 w& b3 f- y│  │  │      17_controller crud(修改学生).mp4
' `+ e2 ^- U, z7 C2 Y& i1 B; X│  │  │      18_controller_crud(查询学生).mp4, V5 J5 T* D' E
│  │  │      
! g: A7 C  I  b1 g" b8 N6 t│  │  ├─4 部署应用
0 k6 Z! x) G7 y4 o& C2 ^│  │  │      19_打jar包.mp44 p5 O  x2 M8 O3 W
│  │  │      20_部署云服务器.mp45 Z6 q- P% s& t1 N
│  │  │      # X& n. C, N0 O. n/ v( I1 u
│  │  └─5 自定义toobar
! r4 H; @. A/ x3 c8 C4 p, @& D. U│  │          21_idea自定义toolbar.mp4, X. r% W# {( C$ B) s) V3 V% h
│  │         
7 O* S: K2 A/ b! c3 I│  ├─5-10 H2数据库
: g) ]6 ^( b3 h2 _" }+ h+ Q│  │  ├─1 事务详解+ y2 N  M4 i6 N, s
│  │  │      01_事务 介绍.mp4
/ e& a; g! ~; S4 |# P6 F│  │  │      02_事务 入门(命令版本 一).mp4
8 y0 p  n% e! {( {% T  x│  │  │      03_事务 入门(命令版本二).mp49 H0 Y- ]# u& c) i( |
│  │  │      04_事务 入门(代码版本).mp4
5 a0 c5 r' Q# d7 V" n7 G│  │  │      05_事务 特性.mp4
% v, g3 p4 v( @$ P% ?( f' Z: j% P│  │  │      06_事务 并发执行的问题.mp4
/ }! E. b7 Q, }+ y2 [& x+ |" n│  │  │      07_事务 隔离级别(读未提交).mp42 G2 x* ^' ], t- g; ]& f) Q
│  │  │      08_事务 隔离级别(读已提交).mp4: x- B" V8 c! j
│  │  │      09_事务 隔离级别(可重复读).mp4$ _8 T3 A7 G8 V' n; p
│  │  │      10_事务 隔离级别(序列化).mp45 Z$ O8 o/ E+ J) U+ `6 e0 ~5 i( O
│  │  │      11_事务 写的问题(丢失更新).mp45 a0 L# L6 Z$ ]. B
│  │  │        @7 t3 h8 w, z% d
│  │  ├─2 事务案例1 t$ i/ S, u& m, y1 ?7 `
│  │  │      12_事务 - 转账业务(三层结构 一).mp4
4 P4 C. Q" H5 D2 n1 J( I0 U│  │  │      13_事务 -转账业务(三层结构 二).mp4! L* a: n* W5 T/ T
│  │  │      13_事务 -转账业务(三层结构 二).mp4.baiduyun.p.downloading$ o3 u. ]6 O$ Z; _6 d* U
│  │  │      14_事务 - 转账业务(事务位置).mp46 r/ M+ H; q+ N* X, L& y+ \
│  │  │      15_事务 - 转账业务(使用事务 一).mp4
! h! W. M2 Q: c│  │  │      16_事务 - 转账业务(使用事务 二).mp4
, A; E' c- G# x! t, T5 J; d│  │  │      17_事务 - 转账业务(ThreadLocal).mp4/ S. r6 e: H+ v7 Z# F; ~  e
│  │  │      18_事务 - ThreadLocal解释.mp4! a8 a. A1 G/ B7 ^! q* N! ?. c5 y* H
│  │  │      
8 [0 }/ H3 C8 e4 j│  │  ├─3 H2数据库
( K1 J7 p8 c* x' F& [) `│  │  │      19_H2数据库 介绍.mp49 g4 i- D2 K  J$ ?
│  │  │      20_H2数据库 运行模式介绍.mp4
$ ~# H5 J2 Q# R│  │  │      21_H2数据 java操作(内嵌模式).mp4; M8 D' U  y( c7 W9 {* E
│  │  │      22_H2数据库 java操作(server模式&内存).mp4
% g0 X8 @' }. t5 ?2 Q( C│  │  │      3 ], s  P. |. j% V
│  │  ├─4 基础增强_反射. O5 S9 j- j" O: G' ^* a
│  │  │      23_反射 - 介绍.mp4
. V$ j0 v) h( e; u5 g│  │  │      24_反射 - 字段操作.mp44 V$ ~+ N6 x! q# L9 J- x  D
│  │  │      25_反射 - 方法操作.mp49 F7 r  O) d; d' H. |
│  │  │      ; d0 {8 z7 q" z* G3 v$ Y, }
│  │  └─5 基础增强_代理
3 d5 \: `5 O' U. y3 X; e5 s. d- w│  │          26_代理 - 介绍.mp40 T2 F7 ]: n: N# ?4 k$ x6 j/ K
│  │          27_代理 - 静态代理.mp4) |& g! @6 N. R" C
│  │          28_代理 - 动态代理(JDK方式).mp4
% I5 m: R* ~. O' z& P+ C. A5 i│  │          29_代理 - 动态代理(cglib方式).mp4
3 a8 n. M; M* p# X9 ]9 x│  │          1 M3 x/ J* l% |  ?
│  ├─5-11 Spring2 X8 [# {4 U0 V3 u$ D
│  │  ├─1 IOC简介4 i% ?' u' y/ _( i
│  │  │      01_Spring 介绍.mp4
* u: H  _8 J/ p& ?' P│  │  │      02_IOC演变(一).mp4
0 k! J0 O/ }3 ~( b2 x│  │  │      03_IOC演变(二).mp4' U! O) e* Q7 c1 v" n
│  │  │      04_IOC演变(三).mp40 s" j  P. H( z5 }
│  │  │      
, R1 @& S/ z* b7 h% s+ h│  │  ├─2 Spring入门
# Q" u- g7 `1 `$ r│  │  │      05_Spring 入门(一).mp4
2 z+ X: W) f3 G│  │  │      06_Spring 入门(二).mp4
+ j& S% Y3 j3 w$ V3 H$ N1 S' K& E│  │  │      07_Spring 入门详解(xml解释).mp4
" Q* B7 j$ Q% h! C7 e6 Z, _│  │  │      08_Spring 入门详解(代码解释).mp42 g  N. ?: l: t3 y
│  │  │      # @4 A! T+ M; d: P
│  │  ├─3 IOC案例
4 g- N1 y6 ?! X: M% O$ h│  │  │      09_IOC xml版本.mp49 K" v% ]1 C0 Y8 J$ X2 S9 k, l
│  │  │      10_IOC 注解版本(一).mp4
$ y. f: i; J3 J; u/ `│  │  │      11_IOC 注解版本(二).mp4- t0 {' n7 b2 ]. g) P' ^+ Z
│  │  │      
1 j( o# p! X% e+ o0 ~7 D: i│  │  ├─4 DI详解( {. e1 |8 e- }# Q+ D
│  │  │      12_DI 介绍.mp4
' M% Q1 F$ L9 g/ z4 W" q) ~│  │  │      13_DI 注入方式(有参构造).mp4
- [$ }9 z2 g: H8 {" z│  │  │      14_DI 注入方式(set方法).mp4
" [9 v+ E7 E" ~/ B9 k8 J# c: k0 l│  │  │      15_DI 注入数据(集合类型).mp4
$ p) B0 d6 s' f7 o7 i) g" p8 ^│  │  │      16_DI 注入数据(对象类型).mp4
. N4 D/ y7 ]3 r; ]8 {│  │  │      17_DI 注解方式.mp4
- x$ [4 ?3 m$ S  k# A│  │  │      
+ V7 ^) ^. R* Z& H! @- b│  │  └─5 AOP详解
: T% m* c8 s0 X% b$ V/ j9 b│  │          18_AOP  介绍.mp4
) c4 a# u1 Y, f: ^- C│  │          19_AOP 底层原理.mp4; y$ j" Z0 q3 A: Y$ I
│  │          20_AOP 动态代理(JDK方式).mp46 C& g6 ]% x% p
│  │          21_AOP 动态代理(cglib方式).mp4
- u. L/ g9 D* m2 g8 V/ e" J' ]: S│  │          22_AOP术语.mp4
: W. E. F0 h8 {) y2 Q9 j, I( J0 Z│  │          23_AOP 入门.mp41 U. u4 M9 {& i( y9 A6 }; Y9 ]
│  │          24_AOP增强.mp4
0 q4 o: q. |* |7 l3 n% n5 z/ M│  │         
/ n5 }& q/ ]7 W* `' }6 O│  ├─5-12 JPA与DpringDataJPA) c; S: b) t- k- d" A: u
│  │  ├─1 JPA详解4 |; S0 l4 |' u1 \& O
│  │  │      01_JPA  介绍.mp4/ S/ F2 C5 }; |9 M' P3 }
│  │  │      02_JPA ORM思想.mp4: U) `6 K4 ~+ v# H
│  │  │      03_JPA 入门(实体类).mp4- }6 g5 u! @: S+ B
│  │  │      04_JPA 入门(配置).mp4
' W0 C! m0 v/ R9 f, ~│  │  │      05_JPA 入门(测试).mp4
; A$ _; {2 [, i# G/ \, ~│  │  │      06_JPA 入门详解(实体类).mp45 e$ m: Y. a# ?* y& s
│  │  │      07_JPA 入门详解(配置).mp4
( U2 i+ }8 f1 k: A7 r│  │  │      08_JPA 入门详解(代码).mp48 a) ]- L% _% A8 ~: ~6 J
│  │  │      09_JPA CRUD.mp43 C5 n( W; A+ x, i0 Z9 i& s
│  │  │      10_JPA 对象时态.mp4/ R' y8 R( D, E* v. b9 u. o
│  │  │      11_JPA 多表关系(搭建环境).mp4
# w$ @) @( j8 b1 k│  │  │      12_JPA 多表关系(多对一  int类型).mp40 f( {7 a5 n2 M5 Z
│  │  │      13_JPA 多表关系(多对一 对象类型).mp4" v2 c/ j# ]3 s) x
│  │  │      14_JPA 多表关系(一对多).mp4
+ \8 C2 i- i- K6 h/ M│  │  │      15_JPA 多表关系(对象导航查询).mp4
; c) }2 w: ^9 e' s7 T; J│  │  │      
- x% ]0 @$ x, d( O: W│  │  └─2 SpringDataJPA详解
9 r" I6 G! q1 O. O0 k/ b! f│  │          16_SpringDataJPA  - 介绍.mp4" @* n) U* q. K" ^; @0 j( B% W
│  │          17_SpringDataJPA - 入门(一).mp4
5 I/ H. n! ]+ O, T# s6 @+ t│  │          18_SpringDataJPA 入门(二).mp4( S  t+ q9 W) B
│  │          19_SpringDataJPA 通用接口介绍.mp4
, ^& f! X# c: D/ Q. ~8 q$ d│  │          20_SpringDataJPA 自定义方法名.mp4
; B' N: W# S3 Z│  │          21_SpringDataJpa crud.mp47 V9 G& n) u2 o
│  │          22_SpringDataJPA 分页查询.mp4
! r8 z  V, U7 a/ B, \2 c- p9 |* K& r│  │          0 c+ o$ N$ x( X( U8 |, j+ L# u
│  ├─5-13 彩票项目-墨刀使用
) r4 z/ L1 @" s. r│  │  ├─1 博彩项目介绍- m. ~* {: V% e
│  │  │      01-项目的介绍.mp4
. H, L3 {: n5 R( ~│  │  │      02-友情提醒.mp4
+ Y0 G* h. x1 a" ?5 i' f3 ?│  │  │      
2 K1 Q/ o1 o( [  Z$ E( r│  │  ├─2 墨刀软件基本操作6 l4 {- k  a, p& L( L0 U( g
│  │  │      03-软件开发流程.mp43 m( l- ^& q& _, S% s; c
│  │  │      04-产品设计介绍.mp4" V: Q1 m3 Z; l7 h* t( u  s
│  │  │      06-墨刀软件的基本使用.mp4, r; {1 z) S* k6 Q$ B5 a
│  │  │      07-分享软件.mp40 C8 J0 K! T5 a/ n1 V1 `: {& W  j# ^
│  │  │      
9 Y) h( K# G) q$ w│  │  └─3 使用墨刀设计博彩项目
4 k7 e: y8 O7 W2 O6 p│  │          08-新建项目.mp4
: B5 b7 c) t& t│  │          09-首页-创建轮播母版.mp4+ y3 K: y5 o1 f4 z+ o6 I
│  │          10-首页-博彩讨论区.mp4
. k7 k1 ]6 q$ t6 \2 \. a3 i% q│  │          11-首页-彩票条目.mp4* {$ S% h: h0 m# F
│  │          12-首页-封装菜单母版.mp4
( e9 Y9 Z6 i" I4 o- E8 _( C│  │          13-首页-母版链接跳转.mp4/ F, X+ a5 k6 W6 h) A9 C" t, F, `
│  │          14-首页-选号页面搭建.mp4: N$ x& T  c, n% K: j' C
│  │          15-我的-需求.mp47 y/ q* _: z9 G$ @2 ?- |' C
│  │          16-我的-设计.mp4. D2 u% }& ~) o9 y  P
│  │          17-头像上传.mp4) n! t) Y' u' I1 m% P9 y
│  │          18-注册页面.mp4
6 [! g0 z1 V; g9 U│  │          19-小结.mp4
  S( B+ p5 O/ V; m│  │          $ s& k/ I3 S  Z+ _: V% H& E
│  ├─5-14 彩票项目-前台页面
- S9 Q- j8 K# j' G8 _6 r│  │  ├─1 bootstrap编写博彩首页- W, u+ F/ g# y' Z* [. R
│  │  │      20-使用Hbuilder.mp4
6 e  {/ Y, V( {4 }/ T3 w/ y& }│  │  │      21-回顾bootstrap.mp49 x6 L2 n; J- I+ S) y, Q
│  │  │      22-补充bootstrap.mp4
$ s5 ?2 p6 o+ _5 c4 p  h│  │  │      23-拷贝轮播图代码.mp4! Z  f, m7 N( ~; s: \
│  │  │      24-封装彩票条目.mp4
- ?. P( O' s: m9 g9 V5 O% ]7 J/ a│  │  │      25-封装彩票菜单栏.mp4
: ?% `! a& ~: q! X2 @│  │  │      
5 R5 m, X* o7 z) g│  │  ├─2 bootstrap编写博彩详情页面% B  Y  L4 ^/ a& [' s2 n& y
│  │  │      01-今日课程介绍.mp4
6 j6 V, ]; T; ~7 {4 L+ r│  │  │      02-彩票详情界面.mp4
6 u' i2 S; p+ [6 z6 O│  │  │      03-解决页面显示不完整的bug.mp4, J7 e( v* t) |1 ]  s. x
│  │  │      04-页面跳转.mp4
9 [+ u( g% Z: K7 a9 C│  │  │        x% H/ r- H9 P
│  │  ├─3 bootstrap实现登录和注册
! p" H' \; f2 h" w- e$ T& i1 {│  │  │      05-完成注册页面.mp4. r& w  e* @+ D: b7 `9 `* l! J; Q
│  │  │      05-完成注册页面.mp4.baiduyun.p.downloading/ Y$ y( L1 t+ b- I/ @( R% U
│  │  │      06-完成登录页面.mp4' V+ P4 ?" z4 [! ]
│  │  │      
* E+ H4 ]% p2 j4 q% P/ U; v  v# ?2 N( R│  │  ├─4 css,js,jquery实现选号页面逻辑( r* i8 P% F$ W4 j2 v
│  │  │      07-完成选号页面-布局.mp42 S: ?8 A: j5 K- |% E5 |" Y' A
│  │  │      08-球的选中样式.mp46 m, j9 O0 V+ Q. o' l! H
│  │  │      09-红球选中的逻辑.mp4
! C( w& f5 ?! c! C1 D│  │  │      10-蓝球被选中的逻辑.mp4
! g0 y" V. @8 c/ T) t│  │  │      11-随机选中红球.mp4
, g7 B2 |: [; k, _7 V│  │  │      12-随机选中蓝球.mp4
5 e0 c0 g6 O" w, E7 j! K│  │  │      + j. i+ |" h0 |4 q/ r- K
│  │  ├─5 bootstrap实现购物车页面4 b  G5 a6 i. u  |3 k
│  │  │      13-购物车页面.mp4( U( ~% }" y. D8 d
│  │  │      14-订单详情页面.mp4
+ n4 W/ Z: s) Q& O( G+ c│  │  │      15-订单列表页面.mp4# V! i* W% @# ~
│  │  │      
$ o9 T1 ~& b4 u, p+ J8 b6 K9 m( t│  │  └─6 快速实现后台管理系统; C5 r6 H2 U1 I8 l; U* a
│  │          16-使用轮子.mp4
1 N7 c3 l( L) d3 Z│  │          3 L& B) ^2 v  |) E
│  ├─5-15 彩票项目-后台数据展示
$ l$ `" y* W. k3 o: V/ l! D$ v│  │  └─1 thymeleaf模板引擎学习
# @, C4 D& H+ H# o  l9 F│  │          01-课程介绍.mp4* \8 f* j( t% N9 y7 G! |
│  │          02-thymeleaf介绍.mp4; V* L6 @9 L; U, g! y- D7 J; P& n
│  │          03-搭建thymeleaf演示工程.mp4% a5 _& W5 |7 P6 C
│  │          04-入门案例.mp4
3 O; S4 w1 z: j│  │          05-thymeleaf特征.mp4
" Z: }' N" I, f$ T│  │          06-url标签.mp41 W4 X9 v6 l  Q+ B5 _3 D
│  │          07-代码段标签.mp4/ l$ b. L% K; M. M+ y# [! M( u
│  │          08-条件表达式.mp4
! a$ g$ _7 e6 F$ m% L│  │          09-循环处理.mp42 n. {4 B- ?& E7 ]4 F1 @; I
│  │          10-js拼接数据注意问题.mp42 m/ G7 x. O7 M9 G
│  │         
& k% T5 H- ]: }$ G│  ├─5-16 彩票项目-项目结构分析
7 p; Q9 r" V) l$ N9 W; Y│  │  ├─1 高效开发的准备工作9 Z( f4 y% i: }6 c5 b- ]  R
│  │  │      11-代码的热更新.mp4  P6 q. {. G  ^
│  │  │      12-lombok插件安装.mp40 w; x- s" D& h5 ^! `2 k& E! Q
│  │  │      12-lombok插件安装.mp4.baiduyun.p.downloading
- F3 u) d. x) a+ x) E│  │  │      
! E2 j' \. ?3 m$ M1 e│  │  └─2 认识项目结构
0 e2 B5 d" }; s) P# \/ }- t3 ~) }│  │          13-数据库表的关系.mp4# u! m. h. q7 T8 u
│  │          14-分析项目结构.mp4+ W  X6 Q% D. P
│  │          & \) o0 |( m" d7 X7 |: E
│  ├─5-17 彩票项目-首页模块
+ M& _9 v  v- p2 e! Y( Z│  │  ├─1 使用springboot完成首页后台业务逻辑
# o, q+ P- S8 c& s│  │  │      15-首页-后台代码实现.mp4
& W8 L5 O% G$ K: ]4 l) W) _( l6 l│  │  │      16-首页-前台代码实现.mp4
5 ~+ @% @2 Y" n│  │  │      17-首页数据倒序排序.mp4( ?8 G+ ]1 [, U8 a" U# \- `
│  │  │      18-分页查询.mp4
% {  F5 G! |. u: q% q8 a" o$ o; c│  │  │      
3 E' }4 M8 z4 b9 g0 g; ~│  │  └─2 springboot完成开奖详情业务逻辑
7 P0 S$ R$ p! T* E7 F│  │          19-开奖详情-需求分析.mp4  p# b9 n# C2 F1 Q  d
│  │          20-开奖详情-代码实现.mp4
. i% S+ g* m6 W) R1 c: s& o& d│  │          21-抽取底部菜单栏.mp47 r) h% D9 q5 X+ j
│  │          22-小结.mp4
  w3 S# j7 J& }. I9 D; K" s5 ^│  │         
' G7 g. ?5 z0 x7 R2 L│  ├─5-18 用户模块
, s3 a- r- W$ q  g/ q│  │  ├─1 springboot完成注册业务逻辑1 e8 x' O5 k8 C" x
│  │  │      01-注册案例-需求分析.mp4
7 m/ k6 m  _4 g9 a; f" T, ?│  │  │      02-注册案例-显示注册页面.mp4* S: w1 o( a& I& V
│  │  │      03-注册案例-代码实现上.mp4
% U, n, v8 k- @│  │  │      04-注册案例-代码实现下.mp4
3 U( W3 r0 T* T) N# k9 o# W& v│  │  │      05-注册案例-刷新重复提交的问题.mp4
/ [3 w. t) G) A5 W7 Y& o1 H│  │  │      6 L/ p% D  a( B' K, n2 c; L$ s+ K
│  │  ├─2 使用java代码发送短信验证码8 X7 Q5 Z& D& Q
│  │  │      06-阿里大于-步骤介绍.mp4$ }% w2 d* f/ k+ r% x
│  │  │      07-使用阿里大于发送验证码.mp49 i2 m+ ^; \, ?7 g7 A' L
│  │  │      08-注册案例-发送验证码.mp4# i8 K& U5 f8 A
│  │  │      09-注册案例-代码完成.mp47 w( u# f# w6 k2 s9 |$ C
│  │  │      
0 _7 Z8 Z3 |# |- y/ n+ F- Q0 ]( }│  │  ├─3 springboot完成登录业务并且密码MD5加密
5 |8 {7 V8 X7 ?: m│  │  │      10-登录案例-需求分析.mp4( ~3 w4 B/ Q1 s: g  f7 z. X
│  │  │      11-登录案例-代码实现.mp4
6 F! ?. i7 T) w- l2 p/ c│  │  │      12-扩展-MD5加密算法.mp47 j2 q; u# U0 ^% Z+ o* y$ \
│  │  │      13-解决页面user为空问题.mp4
/ J* `( F# e( w4 @& a2 n6 F+ k5 @│  │  │      14-演示加密之后的登录和注册.mp4
1 s# H$ }4 y) @; x3 J. W# h│  │  │      7 C! \0 d1 y: |/ @7 b" C
│  │  └─4 后台展示个人信息$ D: A: h1 n$ j- {7 w6 W
│  │          15-我的信息页面-代码实现上.mp4
! w- V3 M% G3 C7 I  ]  I│  │          16-您本次幸运号码.mp4' D; [7 T2 t7 `0 m+ z2 W9 R
│  │         
- Q. a; |% J3 v' r│  ├─5-19 彩票项目-论坛模块8 r) j. {; [; ^/ ~" x$ ]$ ]* `
│  │  ├─1 springboot完成发帖功能
4 P% a* C7 _( x( J8 W│  │  │      01-回顾MVC和三层架构.mp4
% `& P/ S; h% m: N' v  r│  │  │      17-论坛搭建UI跳转.mp40 G" v5 P6 [$ ~# S$ G/ c
│  │  │      18-论坛首页-需求分析.mp4
& d0 U5 \( u8 s' m, o# Q3 B9 @; E│  │  │      19-论坛首页-发表帖子的功能.mp4% B0 z  d" V; E, ]4 `
│  │  │      20-论坛首页-列出帖子后台代码.mp4$ V$ E: o2 G2 e. F0 s; w. v
│  │  │      21-论坛首页-列出列表前台代码.mp4
/ y* Y2 Z: k. }│  │  │      & I6 v% ?/ \5 e, K5 c
│  │  └─2 springboot完成发表评论功能4 J! a& L5 G& h8 M$ d# n
│  │          02-帖子详情-需求分析.mp4
# c$ m8 p  j1 @9 K3 z- N│  │          03-帖子详情-展示帖子的内容.mp4
( q, ^0 e( I7 r1 }! D; j│  │          04-发表评论-需求分析.mp4
8 s( m8 D) _  d# q; l% Y│  │          05-发表评论-代码实现.mp41 v) C" h3 c8 g5 Q9 c$ I
│  │          06-前台展示所有评论.mp4
+ E8 o3 C- S5 V! Y│  │          07-展示最新的帖子.mp4
( F# K/ p7 s0 s( `: ]. S# Z│  │          5 Z: L1 E2 y; k2 C* R' Z# c" ]) D
│  ├─5-2 HTTP协议
* [5 b: [: i1 z$ v# ]6 P9 M  M: H│  │  ├─1 环境搭建6 F3 u. q9 w# H: n" ]2 W+ a
│  │  │      01_今日内容介绍.mp44 `3 `5 h+ l, O, p
│  │  │      02_http协议介绍.mp4, S) e4 f. r" u- B$ A4 Y4 e+ ^
│  │  │      03_PostMan 抓取数据.mp4/ i0 w6 n* w" N9 x/ Y
│  │  │      04_firefox &  httpwatch 安装.mp41 J. o" b" e6 |1 `' U" ?$ Z) J
│  │  │      05_搭建环境 - 编写controller.mp4
$ S9 \$ F  q; Z│  │  │      06_搭建环境 - 编写html.mp4# v% I0 S0 I3 e) F& o. B
│  │  │      
# Y, Z2 M* i! p& o' q│  │  ├─2 协议介绍- l6 |  e/ D5 S6 `. _
│  │  │      07_Get请求数据解析(一).mp4
5 c# {* H/ G5 O# P: X  C! A│  │  │      08_Get请求数据解析(二).mp4
1 c- {  g7 g, r0 `) P+ ^, X│  │  │      09_Post请求数据解析.mp4
/ a- B! K8 l; D2 l4 {& `│  │  │      10_Get请求和Post请求的区别.mp4
/ w5 j  L: ?/ |$ c$ j" ?) M% R│  │  │      11_request对象介绍.mp4
6 r3 K# q! g! f, O  Y6 `│  │  │      12_response对象介绍.mp49 y. |7 l5 D3 J, j
│  │  │      
; T9 A9 ~! c; c2 P0 i│  │  ├─3 静态资源配置
& Q/ {. ~, k) Q, O│  │  │      13_静态资源目录位置.mp4  W# S7 }' v4 u
│  │  │      14_自定义静态资源位置.mp4& D! y5 t- L2 k1 g
│  │  │      
& \  m! v) s4 a) X: E│  │  ├─4 转发和重定向8 a7 U9 _9 f+ F# L/ V2 Y1 V, E
│  │  │      15_跳转页面 示例.mp4# z) u- {) [2 X
│  │  │      16_跳转页面 请求转发.mp4
! f, Z7 b1 F* f5 j5 S│  │  │      17_跳转页面 重定向.mp4
8 u, ?9 i+ M% A9 y/ D5 ]│  │  │      18_请求转发和重定向区别.mp43 N) s$ ]5 `* f3 X, m
│  │  │      19_请求转发&重定向 使用时机.mp42 Q. K" p2 l' V1 U- O
│  │  │      
0 v  ~' K( A' W│  │  ├─5 Thymeleaf使用
: U* s( U$ p+ k* _, J' ]  |│  │  │      20_Thymeleaf 使用 - 环境搭建.mp4
# }; ?/ H0 r, Y2 s1 }# V│  │  │      21_Thymeleaf 入门.mp4
2 `1 j6 U) u' v7 J│  │  │      22_Thymeleaf 取值.mp42 ?0 ?+ R. P# \2 d
│  │  │      23_Thymeleaf 存值.mp4
  g9 m9 P( ?& z/ c4 @/ r│  │  │      
( _* ]9 d( X) }% a4 v3 M1 }& N│  │  └─6 案例% z6 {. p8 E0 ]& w
│  │          24_注册例子 - 失败细节处理.mp4
* W: o" ]6 V9 b# A7 N, V$ L' ^│  │          25_注册例子 - 成功细节处理.mp4# [! I: ?3 N% v; z7 X+ n' w. ?6 a
│  │         
* N/ P/ P: s8 F* [│  ├─5-20 彩票项目-购物模块! a& J8 S+ P- ], B" [0 n
│  │  ├─1 使用filter过滤器过滤未登录请求. K# ]6 k9 v' u
│  │  │      08-校验登录-需求分析.mp48 |, o, M# Q9 r7 `% y& d
│  │  │      09-校验登录-代码实现.mp45 p  ?9 e; Y* }& t; J7 J
│  │  │      
4 Q' D) s4 x, I│  │  ├─2 代码完成选号逻辑
7 ]( r4 r/ a9 c% \' b' R│  │  │  │  10-选号前端逻辑-代码实现.mp4
6 j0 i* c  r. X' a! @$ S│  │  │  │  11-前端发送异步请求逻辑.mp4
: s6 A' z( X' P│  │  │  │  12-前台发送注意转成json字符串.mp45 D' x5 o3 O; y$ V2 C  l
│  │  │  │  
7 n5 b$ q% ~0 M- k! e+ R3 I│  │  │  └─4 实现购物车功能) @) M( Y1 a/ p/ `$ t/ W6 V
│  │  │          01-回顾购物车前端.mp4
! \1 g' r' K% T│  │  │          18-购物车页面显示所有购物项.mp4
  O1 ^: Q' W1 w' a│  │  │          19-删除购物车中的某一项.mp43 B0 z! V" e$ S& A
│  │  │          20-清空购物车.mp4: |* P* r: {- p: I
│  │  │          21-机选一注彩票.mp4
( r# F$ K8 t  T│  │  │          22-机选一注彩票的小结.mp4
( G. ]5 w3 e$ h2 m5 q│  │  │          23-手工点击添加一注彩票.mp48 i$ d% a9 Y  t2 q8 g. X; q/ U8 }
│  │  │          ( y% }1 V8 W) u
│  │  └─3 购物车分析4 v1 b! S0 R. Z! L2 W6 C, F
│  │          13-封装购物车和购物项对象.mp4' {  p* d5 F7 _9 c2 @$ Z
│  │          14-上午内容简单回顾.mp4
' }6 f( [1 L% o7 L8 K% ~│  │          15-使用fastjson.mp4
) {0 I0 D7 U! r* W* g│  │          16-购物车Controller逻辑.mp4
8 Z. Y2 a' a  c8 }9 Y7 n│  │          17-购物车前端显示badge.mp4; Y* m8 P7 ~7 u8 l6 W
│  │          ' e% C0 V, ?7 L# b& j6 s
│  ├─5-21 彩票项目-订单模块
$ I5 j$ ~5 h% e  }3 @│  │  └─1 实现后台合成生成订单功能+ W0 h1 }, s( Y% R& m; u! T* l6 h
│  │          02-分析订单项对象和订单对象.mp4! A! q7 s) R* k4 K, a1 U: O% ^1 \
│  │          03-生成订单-需求分析.mp4
; T" ?8 m- l' t0 ]+ o│  │          04-生成订单-代码实现上.mp4
, Q' |- Q3 ?. w│  │          05-生成订单-代码实现下.mp47 c. o+ P* z4 V- [) W/ {
│  │          06-生成订单-前台展现.mp4
7 d$ ~: A/ ~5 y3 W│  │          07-遗留的需求.mp4& E8 K. `" L1 u  e- Z( C0 N
│  │          08-我的订单-需求分析.mp4/ ~$ z3 P% [( H- b  u
│  │          + y0 w4 T* {# q/ @4 o
│  ├─5-22 彩票项目springcloud; O* h5 J" S' @/ ^! R
│  │  └─1 springcloud3 T+ R: M( @3 \- h5 u% I
│  │          01_微服务介绍.mp44 ~8 O- j: k5 r( H9 Z
│  │          02_单应用框架的介绍.mp40 P: u5 o1 E2 ]
│  │          03_微服务框架的介绍.mp4
" a( r* `/ K* U' G│  │          04_服务注册中心.mp4
8 v& X4 Y2 V8 _6 u│  │          05_服务注册者.mp4' \6 d: C7 W9 d
│  │          06_注册中心高可用性.mp4
/ Q$ r7 p! F+ s5 B│  │          07_profiles配置开发和部署.mp4
1 F5 k- Q- [' n* ^│  │          08_feign-注册的实现.mp4
9 w" R# I( K) ~8 E/ p" n│  │          09_feign-服务间的调用.mp4
$ t* Q' c, t+ t0 h5 f│  │          10_feign-高可用的实现.mp4
. V3 Y4 w+ W& ^! W3 Y│  │          11_Api网关准备.mp4. n1 j, R0 f, V9 `0 M0 v' p
│  │          12_Api网关实现.mp40 \* c0 Q+ @6 g- d4 n& H0 O; {
│  │          13_彩票项目介绍.mp42 K4 P* C: r) r
│  │          14_彩票信息相关的服务创建.mp4: V1 D9 ]# W7 b' \+ B- w
│  │          15_info服务 数据实现.mp4+ Q3 P5 s9 u  |2 _$ J* ^
│  │          16_info服务 接口实现.mp4
% S* [& [) @" u; q7 X( Q7 M2 h│  │          17_前端项目部署.mp46 x: `5 h  Y! W
│  │          18_user服务 数据和接口调通.mp4
$ }2 K5 s8 ~' U& Z0 ~│  │          19_user服务 逻辑实现.mp4) W3 s2 b2 B  q$ g; ^: I- k
│  │          19_user服务 逻辑实现.mp4.baiduyun.p.downloading
& Z; L1 \) l, k$ N; f│  │          20_订单服务 接口调通.mp4' U) i/ E: z/ v! ]/ d0 F8 n' o
│  │          21_订单服务 逻辑实现.mp4
7 H1 I3 B; c% k, H  X7 s& D│  │          22_静态资源服务实现.mp4
6 n: Y0 z) j. S- X% C" v  _│  │          23_微服务整合.mp42 d& `; u, s! x' R0 K8 o* Y
│  │          Thumbs.db
9 C( @' ?2 Q" ?3 t0 z│  │         
, V) j8 v$ Q0 j- G) k% ?& W│  ├─5-23 密码学
, h% S8 T( D6 l7 s│  │  ├─1 密码学基础/ E% U0 y# f' j, J
│  │  │      01_ASCII编码.mp46 {& r1 x9 K8 Y- K9 l8 I
│  │  │      02_凯撒加密.mp4
3 a; x# U9 z/ R) k; P% q│  │  │      03_频度分析法破解凯撒加密.mp4
, ?/ T7 }. a: i' E│  │  │      04_byte和bit.mp4
& m: ?9 `0 H0 b│  │  │      / x: A  ^! O& R& l* m6 S" ~& L
│  │  ├─2 对称加密
  P8 h/ h" G8 R  K! N* [" x8 e2 \│  │  │      05_加密基础.mp4
4 }; S2 F$ `0 Q' w2 u8 r  }│  │  │      06_DES加密.mp4
% R) w" O9 O9 r, s1 `  @│  │  │      07_DES解密.mp4: F+ r) w! N: e% }4 G
│  │  │      08_AES.mp4
1 t7 L5 p2 J1 C! x5 B│  │  │      09_加密模式和填充模式.mp46 ^! S" U2 N2 g/ X* G, p
│  │  │      
, q- ]& |& F$ q│  │  ├─3 消息摘要0 B7 ^+ R; X9 \2 i1 k5 e- S. @6 ]
│  │  │      10_获取消息摘要.mp4
! W; [# I! ^; Q' K2 w; |│  │  │      11_消息摘要的其他算法.mp4" U5 L8 `, v5 H
│  │  │      12_获取文件消息摘要.mp40 Q$ f4 Z8 z& r
│  │  │      
. Q8 `' P4 m1 \' k$ P) ~" D0 `; C│  │  ├─4 非对称加密
( d3 {. a/ n" k" L. U│  │  │      13_非对称加密的概念.mp4. Z( n6 T. T! g8 X+ E
│  │  │      14_获取公私钥.mp4* O% j& l" I" Y- g9 v
│  │  │      15_非对称加密解密.mp4
7 a( `: `  K' h2 v│  │  │      16_保存公私钥.mp4) R: o: V( ^( x/ r
│  │  │      17_获取私钥.mp4
* A. M  b: i# p│  │  │      18_读取公私钥.mp4( m7 D0 B9 N$ e. h$ j' }
│  │  │      19_分段加密解密.mp4
" u! r6 t2 m% q& ^│  │  │      20_生成签名和验证签名.mp4
  }! d+ O6 \4 Y( j2 D│  │  │      
  N0 z7 Z( Q7 S. [8 e│  │  └─5 实战案例4 j  c( X6 }& e. j% P0 _2 R2 B
│  │          21_搭建项目.mp4% F- u& t. W; M( r% g5 ~
│  │          22_集成Swagger2.mp4  X: P% I& _# t8 K! p2 b/ s9 I: Y* `
│  │          23_解密数据并缓存在本地.mp49 H1 x+ X9 ^3 n* s
│  │          23_解密数据并缓存在本地.mp4.baiduyun.p.downloading
* L" @- C  P5 o9 T2 x  r│  │          24_模拟登录.mp4$ a7 h4 @+ _7 E- W: X  o
│  │          25_验证签名.mp4
3 U# v- j7 S; |# u│  │         
2 |% {7 j! y  l5 D3 a( n│  ├─5-24 比特币java版本
7 v/ ?- r, e) o* t" b; I# D│  │  ├─1 传统技术实现区块链
! |- m' P1 [$ T( c; u/ {' V9 Z│  │  │      01_第一版增加功能的实现.mp4
$ D8 B+ h  N$ N; n* {│  │  │      02_第一版保存功能的实现.mp4
; u+ r! \/ f1 p4 I: Q! N│  │  │      
* ~% D2 Y6 |9 N/ H+ |4 |│  │  ├─2 增加网络接口
1 o) y: x! I# g2 S9 v# a│  │  │      03_第二版后台的实现.mp4
" b2 Z) Q- [: B1 v+ @. ~$ t" b│  │  │      04_第二版前台页面的实现.mp4# ?) u' r" X. c3 M
│  │  │      05_完善页面.mp4  t3 g4 P! h5 ]! a) |3 R
│  │  │      9 @/ Q7 K2 X$ @  v' ^3 e
│  │  ├─3 增加Hash校验
8 u* C  E( [8 g4 e6 U" {│  │  │      06_增加Hash值.mp4! F3 x* M7 L1 l8 X+ @
│  │  │      07_校验hash值.mp4
0 h5 O, G# C3 }& T│  │  │      
5 U) z: c$ A- p! f: \" f; n│  │  ├─4 增加工作量证明& B4 W9 h4 |% ]  @1 r' n% i' t0 {: W
│  │  │      08_增加工作量证明.mp4
0 C- Z9 |; v7 _& t6 _' w7 B2 m( B0 N│  │  │      09_修改校验的方法.mp4
- t$ ?$ g1 n  e0 A1 B5 o: J3 n8 b│  │  │      5 m- S+ W7 {# d% v1 J
│  │  ├─5 增加PreHash6 p' B' B  c7 s' C' w: u  C
│  │  │      10_增加preHash.mp4
, i, S: [' u8 B5 e9 ^2 |' |5 |│  │  │      11_校验preHash.mp4
. ^: @7 Q3 R4 M+ J/ v│  │  │      
6 \% t$ Y/ o( E* J* `  k│  │  ├─6 增加钱包功能
) w& D! _# V0 Y0 Q$ C│  │  │      12_定义钱包.mp4
. A( ^, k* r% j9 S2 W2 w4 C│  │  │      13_钱包功能简介.mp4
( ?& \5 I+ T. I( e8 r5 b) Y│  │  │      14_转账页面的搭建.mp45 v5 K% Z2 X6 v1 Z# t
│  │  │      15_转账后台的实现.mp4
' C5 r- ?2 p* q, Y8 U! s│  │  │      
1 G. P! ^: q; S" P│  │  └─7 增加WebSocket功能
7 g5 \7 |% V% O  d, p│  │          16_webSocket入门.mp4
- Q" k0 Q7 I. ~7 x* I& i│  │          17_模拟节点之间的通信.mp4
7 |1 b6 s0 N" Z( A: e, W% q' J│  │          18_本项目集成WebSocket.mp4
" M( W: U' [3 \% m6 i│  │          19_请求同步区块数据.mp4, {6 w4 ?1 a; j3 `- S7 W7 s
│  │          20_修复同步区块的bug.mp45 X' x; a+ T% q! M; X* G
│  │          21_广播交易数据.mp4
: F5 R: l/ ?; J5 j0 v7 a! o6 m& w│  │         
6 T/ h# {$ @8 j! b│  ├─5-25 比特币kotlin版本8 g7 |/ W' L4 d$ j, `  x
│  │  ├─1 传统笔记本0 d; U- @3 n- F" \
│  │  │      01.区块链知识点简介.mp4" J# a. z0 i6 v
│  │  │      02.笔记本1.0版本a.mp40 `1 h* ]3 Z+ O( r0 F" A
│  │  │      03.测试笔记本1.0版本a.mp4
+ T# u: \& r# b4 G│  │  │      04.笔记本1.0版本b.mp44 h: D; t$ E- L* @0 c- J
│  │  │      05.笔记本1.0版本提交到git仓库.mp4" {: O! N9 ], r( I
│  │  │      06.消息添加id属性.mp4, M+ ?" R' @* w# J' _! S( C% V
│  │  │      
- r) l8 g  w3 }! M- q4 l  |│  │  ├─2 服务端搭建
( }' D4 G4 X2 X8 v) G│  │  │      07.ktor库使用.mp45 B8 w! y3 p$ f* q: S
│  │  │      08.接口搭建.mp4; @: |: p  \8 O
│  │  │      09.前端界面提交更新.mp4% g; m7 R) e: F! n% w
│  │  │      10.静态界面提交数据.mp4
1 q. F# D# i- T- K│  │  │      
* h  H' W7 l* h  w$ s4 t0 a│  │  ├─3 校验和区块链* K+ E* O* @' }7 v8 q  Q
│  │  │      11.数据篡改.mp48 z! i# z" Y( v! b' w
│  │  │      12.hash校验.mp4! A1 c8 j5 O5 a/ F$ h6 `
│  │  │      13.工作量证明.mp4
9 _  r0 Z: s9 b│  │  │      14.增加preHash.mp4
4 c5 M) l  X" `1 I) T1 t│  │  │      15.篡改数据修正后面每一条数据.mp4
/ ^+ q8 J$ t( T5 ~+ {0 J' ~9 l│  │  │      
/ K9 D0 `: Z) G1 {3 _3 S% b9 N7 O│  │  ├─4 转账操作
" n$ H5 e7 M! Y# F- a+ s$ p1 C│  │  │      16.转账流程.mp4! S" M9 L6 t# K) X
│  │  │      17.转账界面搭建.mp4
4 N1 ~3 ~' n' V9 S2 k0 p│  │  │      18.转账信息签名.mp47 k4 Q1 G3 |6 z3 s- y- `( g9 {7 |
│  │  │      19.ajax发送转账请求.mp4) f" K9 R7 C  u$ N( Q
│  │  │      20.节点服务器处理转账请求.mp4( _/ T8 r! `6 Y* [4 W- s
│  │  │      1 C; W& \8 A9 X% c
│  │  └─5 节点间同步& N4 v% l) i! \% b" t
│  │          21.websocket简介.mp4
- M$ n& A: X- d│  │          22.节点间连接流程分析.mp4/ |& |. v2 C7 c, A, a
│  │          23.节点间相互连接.mp4# b0 V  @' Z, R  Q7 t
│  │          24.节点间任务广播.mp4
% P( H3 p  G' M9 X│  │          25.节点收到任务广播处理.mp4- d1 h( j: |5 p! i& n
│  │          26.节点更新.mp4& s4 l2 ~' A  ]+ ^- ?  \
│  │          26.节点更新.mp4.baiduyun.p.downloading
2 @) t0 e! {# k" @& y$ Z" U. h1 G│  │          27.总结.mp4
$ G0 l; I0 l5 _- Y) M' g│  │         
. K+ A9 o" J% Q4 z1 ^: @% o9 ^│  ├─5-3 会话技术0 j; |- V! @1 k' M7 \: ]" G& X
│  │  ├─1 简介
+ G* X7 a' f" I. m│  │  │      01_会话技术介绍.mp4
4 ?6 M$ O/ j: S6 w6 |+ N2 X, f│  │  │      ( {% V3 q  V. e( R* a
│  │  ├─2 Cookie详解# @1 {; `2 @) n3 m+ F& R
│  │  │      02_cookie介绍.mp4& f2 G& [5 x- W% \5 D2 ?
│  │  │      03_cookie入门.mp48 ?0 e; K$ Z% x
│  │  │      04_cookie 分类(持久性cookie).mp44 R+ V* [6 n$ O4 {
│  │  │      05_Cookie 存储在哪里.mp4
. M2 o; N, D9 V: r│  │  │      $ ~3 N* _: X  W7 {3 v9 m! K7 M
│  │  ├─3 Cookie案例
% [  \# K4 P! b; {. u* g3 Q│  │  │      06_Cookie 示例 - 上次访问时间.mp4* v( G- B0 Q" A8 l
│  │  │      07_Cookie示例 - 上次访问时间(一).mp4$ D) J1 W5 k; y2 d
│  │  │      08_Cookie示例 上次访问时间(二).mp4
9 N% [% }/ ^6 o" ?+ F/ P  F│  │  │      09_Cookie示例 上次访问时间(格式化时间).mp40 C# N3 m7 |" R" X- _0 k
│  │  │      . [; K  [4 J) t# f% u* E3 {) `5 F
│  │  ├─4 Cookie细节
5 F* L& b0 t2 ]: j7 [2 e│  │  │      10_Cookie 细节.mp4
" }0 R  _% {$ c) F│  │  │      11_Session介绍.mp4$ @% e- Q1 c! @6 Y
│  │  │      12_Session 基本能使用.mp4
% a) j. o3 A* r* J: R0 f" V1 r│  │  │      13_Session的细节(没关浏览器).mp4$ G" O; G) B1 h6 s
│  │  │      14_Session的细节(关闭浏览器).mp49 S- |( Y5 C& d  V* I  ~5 I
│  │  │      14_Session的细节(关闭浏览器).mp4.baiduyun.p.downloading
* I1 i3 M4 m6 o│  │  │      15_Session销毁的细节.mp41 G% p0 i' E7 z8 C& F6 W2 V; ?
│  │  │      16_Session生命周期.mp4
/ e% R0 u  l# W) ?$ n! p│  │  │      1 p4 k! T% ~, [# y' a- b8 _
│  │  └─5 Session案例
5 I; \4 R" p. S│  │          17_购物车 - 需求分析.mp4
- ~) {! L6 E4 O, n# d. E" r│  │          18_购物车 - 后台准备商品数据.mp4( Y: l" {! U6 n* g) ~7 v/ v
│  │          19_购物车 - 页面显示商品列表.mp4
5 ~/ }; V6 B- t7 g; {" m│  │          20_购物车 - 添加商品到购物车.mp4
! f0 O) l+ B6 K2 J│  │          21_购物车- 添加商品到购物车(二).mp49 W& {& O, M  B0 [: B
│  │          22_购物车 - 显示购物车.mp4" R8 X6 e9 g) n0 n4 {+ S/ [' z
│  │          23_购物车 - 持久化cookie设置.mp4; }- L0 H- x/ @3 b
│  │          " }5 q& H# N6 R0 h
│  ├─5-4 过滤器RestFul
. f: R- L" {4 q  c1 o│  │  ├─1 过滤器详解) o6 q6 f* K. d$ d; U8 I, I5 Z
│  │  │      01_Filter 介绍.mp4" U9 i% L7 ~# m% `0 h. j
│  │  │      02_Filter 入门.mp49 E! G2 x3 [8 x+ {$ [
│  │  │      03_Filter 特点.mp44 e3 H, c7 |8 B  w% O+ u5 l
│  │  │      04_Filter 忽略请求.mp4' B4 i) ~* Y/ Q+ F" c+ s) m2 k% r
│  │  │      05_Filter 特点(放行后执行代码).mp4
- F8 e( F2 Q& J+ U/ g2 B# t: G2 ~│  │  │      06_Filter 生命周期.mp4
/ ], @1 S! w! a9 g! o: `2 Y│  │  │      07_Filter 过滤器链.mp4
( K0 e; v  N# m! o2 V# b0 ?  M│  │  │      08_Filter 自定义过滤器顺序.mp4# m1 U% r* B/ W$ Z/ E  O6 b
│  │  │      09_Filter 总结.mp4! T+ f7 U+ J/ }6 ]
│  │  │      & h; q! _  K& }( F3 |) F  v2 v
│  │  ├─2  过滤器案例
5 j+ p' J, T! V3 {│  │  │      10_Filter 自动登录(分析).mp4
- n5 G& f3 E# r, g, M" p* B│  │  │      11_Filter 自动登录(登录环境).mp49 l" j/ O9 H  R2 l# P7 E
│  │  │      12_Filter 自动登录(成功&失败的细节).mp4% K1 D  `! T* j& q! B
│  │  │      13_Filter 自动登录(勾选自动登录).mp4
  e. n- E5 o) i( l  k  e! l. q) Q│  │  │      14_Filter 自动登录(会话有效).mp41 h1 ~. q! W# v3 ?, s- m- w
│  │  │      15_Filter 自动登录(强制跳转登录页面).mp4
& ?0 F+ B% U- s' h* \2 K7 K; r- _" P8 N│  │  │      ! f+ Q$ ~2 S! }" m' G
│  │  └─3 RestFul详解
- F. I. u$ e+ i( s: n1 s' {7 }│  │          16_RestFul 介绍.mp49 J: L6 T) s8 G8 B6 n
│  │          17_RestFul 使用的必要性.mp4
8 c, Z7 F7 P& H1 B4 [% Z9 g8 }8 N│  │          18_RestFul 入门.mp46 u/ a2 I( k: w6 x2 S! b7 M
│  │          19_RestFul 命名特点.mp4
  P4 R* u8 R$ J' y4 Q│  │          20_RestFul 保存操作.mp4
1 O9 A* {/ M2 ~' G1 Y5 y│  │          21_RestFul 删除操作.mp4
, `; z$ Y" o$ Y1 d& x* \│  │          22_RestFul 更新操作.mp41 U% s, x" g$ M6 Z" k% {: e4 u! X
│  │          23_RestFul 查询操作.mp4
! k- ~; Z" x: }7 N" x) d│  │          , h9 y! [% \5 P2 q) d& Z
│  ├─5-5 Linux入门
" i; z* C9 C) E│  │  └─1 Linux入门
  A2 L5 ^3 M3 r4 V4 }7 N│  │          24_linux 介绍.mp4
5 m2 e: z  W/ k* {, K( a- v│  │          25_安装虚拟机软件.mp4
+ ?' U- ?( k$ G; ^" {│  │          26_配置虚拟机.mp4
) Q0 z9 p5 r% A│  │          27_linux安装.mp44 k! X( K7 V% I# O1 Z% @0 a8 U
│  │          28_安装SecureCRT.mp4
0 H; j( P1 X7 h% g/ y# \; t9 F│  │         
6 v, T1 f4 {6 ~2 T( {' q│  ├─5-6 Ajax与JQuery
7 e& K) \5 E& ~# `; @+ I3 [│  │  ├─1 AJAX详解
1 f7 ?. F8 u; t# R; C! o% P│  │  │      01_同步&异步介绍.mp4
9 y0 E$ d: ?3 v6 s) ]9 A│  │  │      02_Ajax 介绍.mp4$ M7 F9 }. L1 z! U8 E1 f
│  │  │      03_Ajax - Get请求.mp4
3 C2 e. u! L+ w8 P! C) H│  │  │      04_Ajax - Post请求.mp4% X# W) o5 a2 h5 {
│  │  │      05_Ajax - 获取响应数据.mp4
9 o0 e$ D: e, L% V5 ]│  │  │      06_Ajax - 校验用户名是否可用.mp4
, ~" l8 b" o' \# A8 w│  │  │      
- u! B% n4 k# D  b" W│  │  ├─2 JQuery的AJAX2 f! Z% p0 d8 A. C! r
│  │  │      07_Jquery 介绍.mp40 M2 w* _" c; b
│  │  │      08_Jquery - Get请求.mp4+ U, L( _2 S3 [+ G6 w
│  │  │      09_Jquery - Post请求.mp4
- H) h- E& e- _* w( S. h│  │  │      10_Jquery - Ajax请求.mp4% O  ~. C( M$ u' F  g) |2 L0 ~0 Z/ D
│  │  │      11_Jquery - 校验用户名是否可用.mp43 \; W4 Y$ y* U. A1 D+ D$ D( H
│  │  │      1 F  {# z  q/ X! ~# J* Z# ~5 L
│  │  ├─3 XML详解, l( m, C8 q+ t! Q9 X; |, c/ X0 x
│  │  │      12_xml - 介绍.mp42 L  Z; \7 k( B2 N# c) S0 p+ W" B# X
│  │  │      13_xml - 定义xml.mp4
( v, P$ d# I- M4 @  C/ H! L│  │  │      14_xml - 注释.mp40 A9 Z% E: I1 r6 \6 h) e* J4 ^
│  │  │      15_xml -  解析方式.mp48 W! |1 S6 |* Z" _
│  │  │      16_xml - 解析特点.mp4
9 Y/ r' B3 x2 n5 l│  │  │      17_xml - 解析xml.mp4
6 n1 `/ w  T* E5 C│  │  │      18_xml - xpath简单使用.mp4
) d; H. E2 D3 Z6 E7 z3 F" k│  │  │      19_xml - 封装数据.mp46 [$ c  l& S$ I) d* p
│  │  │      20_xml - 约束介绍.mp4
  a$ r# w0 `; W4 {) m4 f$ ?│  │  │      
# J7 V/ j+ M& B! E0 d$ a& `2 |* B│  │  ├─4 JSON详解
* I& j5 w& g8 ^8 p( M% Y3 k5 h│  │  │      21_json - 介绍.mp4+ s8 r6 X& M- N, W8 @/ r( U
│  │  │      22_json - 前端解析json.mp4
' q# v9 ~! c7 Z! c8 Z│  │  │      23_json - 后端解析.mp4
* D& ~" p+ J  M: ?5 \! O│  │  │      24_json - 后端返回json字符串.mp4
+ {' g! G- n8 H: w( A1 Y$ s│  │  │      
# p! V% t( \* I. R│  │  └─5 AJAX案例0 [, C" ?6 L0 f" G8 }' t
│  │          25_省市联动 - 获取省份数据(一).mp4( R9 @, i$ \6 W4 R$ Y
│  │          26_省市联动 - 显示省份数据.mp4
  h8 M& J+ P% S│  │          27_省市联动 - 省份数据改变监听.mp4( n: e0 g8 S& H- i& K% H# F
│  │          28_省市联动 - 显示城市数据.mp4
# E  X' ?$ x2 x. f│  │         
7 ?4 O0 k) [$ ?) _│  ├─5-7 数据库
4 a) @+ R, H5 U4 {│  │  ├─1 环境搭建和软件使用, T9 k# o, O% r4 m
│  │  │      01_数据库 概述.mp48 i! A$ x; y" F; d: H9 C( G
│  │  │      02_数据库 常用数据库.mp43 E: |8 @2 `9 \8 M
│  │  │      03_数据库 安装mysql.mp4
* @2 b$ w9 s4 B│  │  │      04_数据库 - 可视化工具介绍.mp4( z0 V# I  L! w& s
│  │  │      05_数据库 - CRUD操作(命令版).mp46 M2 I: k9 S! ~  V1 A5 t/ ]
│  │  │      06_数据库 - CRUD操作(工具版).mp4
! y+ E$ K9 i: {; H6 s1 E: o│  │  │      07_数据库 - 字段类型介绍.mp4# k& G: w4 f" k) y
│  │  │      4 _& p. G7 X2 x& S
│  │  ├─2 表的操作) s/ |% C* l( t2 E5 @4 s6 E
│  │  │      08_数据表 - 创建表.mp4
$ B: q( ?+ ^8 N, [( V- n│  │  │      09_数据库 - 查询表.mp4
" Q- R4 F$ s4 \  _3 a6 u│  │  │      10_数据库 - 删除表.mp4
9 N" ~3 K6 a& d/ S6 O# b│  │  │      11_数据库 - 修改表.mp4
! U; L2 K* \4 W: V8 S% g! [│  │  │      12_数据库 - 修改表.mp44 F& r( t' `; R. ]0 c6 n% s
│  │  │      13_数据库 - 约束介绍(主键约束).mp4
3 }. [+ c7 Z8 H/ o2 [; ^3 D│  │  │      14_数据库 - 约束介绍(唯一&非空约束).mp4& _6 v- ~4 P! l. H! o. Q
│  │  │      15_数据库 - 主键约束演练.mp4& e! T1 w$ J9 R, p
│  │  │      
9 T0 ~7 u) j# m1 Z" o│  │  └─3 数据的操作
. }7 K2 Y& c: T6 i0 X│  │          16_数据库 - 添加记录.mp4  N$ H! k! h5 T
│  │          17_数据库 - 删除记录.mp4
$ J" C  y& ~9 Y; z# x& K│  │          18_数据库 - 更新记录.mp4
3 c2 {0 ?* D1 V6 h4 Y3 h│  │          19_数据库 - 查询记录(简单查询).mp4
% X  F* @+ }3 @' [2 [3 N% D│  │          20_数据库 - 查询记录(条件查询).mp4* e  ]2 _+ V" v$ c
│  │          22_数据库 - 查询记录(分组查询).mp4) [( _- X  _# W* s  H. ]
│  │          23_数据 - 查询记录(分页查询).mp4
9 \' k- R, B- d3 \│  │          8 Y3 Q4 W' ]9 i0 a" |
│  ├─5-8 数据库和Linux7 M- j3 I2 A. N. }- m5 @
│  │  ├─1 表关系介绍
! r$ F+ K6 \" M6 h8 B  p│  │  │      01_为什么要有表关系.mp4
/ i6 G( U* a" w1 h  _' L│  │  │      02_表关系维系的点(外键解释).mp4; r; Z9 N/ f' x  P; \) H6 l
│  │  │      03_表关系维系的点(二).mp44 y! L+ q' Q) p# e8 C* [
│  │  │      04_表关系提问.mp4
0 a/ u2 q0 W$ S6 g1 z! T│  │  │      
! L- O8 x, k7 c/ I│  │  ├─2 表关系分类( \, x# b& j' \( `$ Y
│  │  │      05_表关系的分类.mp4
+ p" @% Q$ T/ }) }$ e0 T% P│  │  │      06_表关系-一对多关系.mp47 u  s/ C  Q$ f
│  │  │      07_表关系 - 多对多关系.mp4
6 X  {+ j5 c  M( u4 e4 \. n│  │  │      08_表关系 - 多对多关系建立.mp4
: l# A7 O- U4 |0 t1 R- Q7 ^$ d2 c; [│  │  │      : u# ^$ f$ a6 K( }% G, d
│  │  ├─3 多表查询- Z% V1 }" C* d( l
│  │  │      09_多表查询 - 子查询.mp4+ y4 F0 Y- x* X, O
│  │  │      10_多表查询 - 内连接.mp4
" \6 M9 s: y: ]3 J0 i( F│  │  │      11_多表查询 - 显式内连接.mp4+ a1 F0 e( [# S/ \
│  │  │      12_多表查询 - 外连接接查询介绍.mp4
( s9 R+ [2 Z# T) `' o6 B  c2 d│  │  │      13_多表查询 - 左外连接查询.mp48 p! i3 N6 j$ S
│  │  │      14_多表查询 - 右外连接查询.mp4+ p" ]/ m, [, _) T& J
│  │  │      15_多表查询 - 练习.mp4) M4 A- z% E2 T; P5 h2 {% s
│  │  │      6 B: _7 S: y( E6 W
│  │  ├─4 Linux常用命令  }2 W& B* E* M+ s  Q0 d8 o
│  │  │      16_linux - 常用目录.mp4$ N8 x+ Q6 F6 ?1 C
│  │  │      16_linux - 常用目录.mp4.baiduyun.p.downloading
& k$ i5 O! i) V7 l7 q│  │  │      17_linux - 基本命令.mp4
& K4 k7 Q: c; P6 R" Q" [│  │  │      18_linux - 操作目录.mp4
* o1 ]# S/ w& S6 l4 r) o4 W│  │  │      18_linux - 操作目录.mp4.baiduyun.p.downloading
0 Q5 k" t# H, y│  │  │      19_linux - 文件操作(一).mp4
3 W  p& r5 b6 \- T2 Q│  │  │      20_linux - 文件操作(二).mp4& B: |: ]5 z  }+ g7 d
│  │  │      21_linux - 打包压缩(一).mp47 f/ S% X$ z' D4 t
│  │  │      22_linux - 打包压缩(二).mp4
# D) M% J2 a4 {% e( d: q+ L0 U3 G│  │  │      23_linux - 文档编辑.mp45 i5 }3 ?" M/ T+ H1 ?; a
│  │  │      24_linux - 其他命令.mp44 R* [: i( Z4 c5 l2 @# k
│  │  │      25_linux - 文件权限.mp4# n5 T0 \  U8 E& u6 `+ r
│  │  │      25_linux - 文件权限.mp4.baiduyun.p.downloading
1 k1 B' E* J% d/ t* ], a  U│  │  │      
" o, ]+ q) s4 c) _, a( M│  │  └─5 Linux安装软件
' i9 [" F; h* `7 Q% t│  │          26_linux - 安装jdk.mp46 \3 D7 l$ _: w+ M9 ~8 e1 u! z
│  │          27_linux - 安装mysql(一).mp4
. H4 r+ ]5 A" l0 H0 W9 K9 E' @│  │          27_linux - 安装mysql(一).mp4.baiduyun.downloading0 u" P# L! I0 v5 {: P9 R
│  │          28_linux - 安装mysql(二).mp4
3 {% L' a! z, `4 y: Q0 f1 k│  │          $ ^$ P- K0 ^4 J7 R0 [0 q
│  └─5-9 JDBC
1 A7 P% h# [( M2 F│      ├─1 JDBC详解
# [) }9 E9 C( l7 R│      │      01_jdbc介绍.mp4
* E' c1 I/ B( U# n│      │      02_jdbc - 入门案例(一).mp4  M& W; a$ u; Q: E3 Z
│      │      03_jdbc - 入门案例(二).mp4* T9 ^8 f. f0 m5 d- g; s
│      │      04_jdbc - 注册驱动细节.mp4
" x! K7 a) z2 P1 ~' p  x# x│      │      05_jdbc - 工具类抽取(一).mp44 m, N6 I; S6 i$ w5 \' ^
│      │      06_jdbc - 工具类抽取(二).mp4
( `2 o% C4 }& c$ n│      │      07_jdbc - crud(sql语句回顾).mp4- c- f( T/ R: p' k) o8 Q1 ?9 V
│      │      08_jdbc - crud(添加).mp4  m. w7 S" r& ^! Z; b+ n$ h& I
│      │      09_jdbc - crud(更新).mp4
9 J/ K9 J+ [- s- s* Z8 ~; \│      │      10_jdbc - crud(删除).mp48 k. l- _1 N1 p& S; C7 M
│      │      11_jdbc - crud(查询).mp4- L4 e( _/ c3 Y
│      │      12_jdbc - crud(查询单条记录).mp41 w3 Z5 {' s! N
│      │      13_jdbc - crud(聚合查询).mp4" p3 D; d  l2 R' O. @6 |6 Q/ x
│      │      
; Z8 q# n0 G. |│      ├─2 DAO设计模式
8 |; t, ?& a+ B' l0 @│      │      18_jdbc - dao模式(一).mp4
  |4 n& g- U% P! m$ k│      │      19_jdbc - dao模式(二).mp4
/ h( @/ H% ]$ _) U│      │      20_jdbc - dao模式(三).mp4
$ q9 r4 u' g* ]8 E8 x# `│      │      21_jdbc - dao模式(为什么使用接口).mp4
: F; T# I$ u  H* c; a/ ^" l3 r│      │      9 C, [) m' z, U) {- ^' i4 w9 t
│      └─3 连接池技术
% L) N# D. H4 p, W& z3 t! g│              22_jdbc - 连接池介绍.mp47 T5 z5 Z" s1 W# _- u
│              23_jdbc - c3p0连接池(代码版本).mp4" `5 |$ L# h, T, ]$ l9 [' i; T
│              24_jdbc - c3p0连接池(xml版本).mp4& R* H5 m: ]: ]3 P
│              25_jdbc - dbutils(一).mp48 P# P+ W9 E' }5 v. Z
│              26_jdbc - dbutils(二).mp48 c# y/ q  m8 j
│              0 R8 |" V( G6 f5 i1 e  j$ k
├─6阶段 区@块链前端加强和中间件开发5 p0 I7 g  O) J3 t$ C
│  ├─6-1 NodeJs
- \# b/ e4 D, n0 \6 m- E, ~│  │  ├─1 ES6语法
, P' c, N( R+ p/ t│  │  │      1.ES6介绍.mp4
4 L' K3 H7 c/ d1 }( |- ^8 V│  │  │      2.ES6变量定义.mp4
& R! o" R/ w. f+ M: N4 h  @  O│  │  │      3.ES6解构赋值.mp4) s$ F# G# q3 C3 Y0 s  h( W
│  │  │      4.ES6函数扩展.mp4, C; Z& o" w5 L: l3 w9 i: Y2 J
│  │  │      5.ES6class语法.mp4* t7 I. v5 |: ?
│  │  │      
$ r& ~/ k" ?' V2 |+ t  v3 }│  │  ├─10 美女爬虫项目8 ^2 k* n* `3 }7 X/ U
│  │  │      5.爬虫项目-获取html.mp4
/ Y% `; u9 r6 u/ H3 K│  │  │      6.cheerio类库的学习.mp4
3 b' i) ?1 v* G4 m  U│  │  │      7.爬虫项目-解析dom并下载图片.mp4, K: h6 Y) }3 U/ \3 Y
│  │  │      8.events模块重构爬虫项目.mp42 o) o: W" c3 [% `3 ?
│  │  │      
0 G/ f& \# _7 m7 F' C  W6 \│  │  ├─2 NodeJs的发展和起步IO
, q0 W. O3 o7 K│  │  │      6.NodeJs的发展历史.mp4+ ]9 W; Q& ~7 M+ S8 s+ v: Z
│  │  │      7.NodeJs异步IO机制.mp4  X6 H7 n: T+ w7 ?
│  │  │      8.NodeJs功能介绍.mp4' `5 M2 I, ], v8 Q/ m% y
│  │  │      
- L+ [* ?# Q& h1 b' n' V- x│  │  ├─3 NPM介绍
  b  y. Q# }* g│  │  │      9.npm包下载.mp4
# M7 J  N5 ]% f. K1 L5 t! v2 p│  │  │      
1 b0 |" H- S9 o, X, w; I│  │  ├─4 NodeJs全局变量* N# j( A% z7 v: e5 }
│  │  │      10.全局变量.mp4/ H# U/ o( u# |. X
│  │  │      ( S6 T. H1 s1 N+ N2 s& Q+ a4 B
│  │  ├─5 NodeJs文件操作/ H! d; S- J% t& W1 H+ F
│  │  │      11.path模块.mp47 e! t6 Q( z. T  h
│  │  │      12.fs模块.mp4
* m! {9 T8 u% d: Z! p. k│  │  │      13.fs模块reader流.mp4
! n, L. @! h: J; w4 i; l" Y4 m8 f│  │  │      14.pipe的使用.mp4
+ @" ~; k0 w0 M# `│  │  │      
# K2 n- t" v2 H: ^: m│  │  ├─6 NodeJs异步语法' s# Z* t! S2 s
│  │  │      15.promise和async_await语法.mp4
, \+ G" H/ |- @  R' V│  │  │      
5 x% P7 I3 p9 \# {! ?+ U5 ?│  │  ├─7 http模块学习' l3 {8 ?  G$ u* |/ m
│  │  │      1.解决昨天遗留bug.mp4
( `: L- W) J: b│  │  │      16.http模块.mp4
- V& v$ b! I7 _8 m0 v  j5 l, H│  │  │      17.static-server(有bug).mp4% S! z5 {" q- |) N' N( N
│  │  │      2 `: q$ `9 I+ q) x: I, c* ~, f( R/ d
│  │  ├─8 模块( M7 x6 d1 ?: a0 L8 E
│  │  │      2.模块导出.mp4
+ I2 |* t" z# ^; z. N" c│  │  │      3.crypto模块hash算法和aes算法.mp4
& d; ~! u# I9 G1 o. w: x4 q. o  f│  │  │      4.events模块.mp41 I/ j) j7 t0 L: B, l, a
│  │  │      0 d8 ^1 f) a* w4 ?
│  │  └─9 crypto模块和events模块% H- P$ ]2 }; b
│  │          4.events模块_doEbD.mp44 U0 N+ `, g6 L  ~: ?8 w
│  │          , w+ I* }/ r  q% [! Y
│  ├─6-10 React项目开发
# c6 R9 ~& b8 M: |$ S5 I( t" _│  │  ├─1 Module导入及导出
( e( M7 k( Y% }4 Q! p. }│  │  │      09.组件的抽取.mp45 F( `  W& W8 y/ s
│  │  │      $ ~# K3 k. }( b' _5 N) a! K
│  │  ├─2 GTD综合案例
& I3 X4 K1 y3 a( t8 v1 Y│  │  │      10.条目的添加add和删除del.mp4
- [3 l- |) g, @: O│  │  │      11-Props类型检查及默认值设置.mp4
5 k4 S: p$ g4 _; ~, j" B$ q- D) ?│  │  │      12-配置样式&条件渲染.mp4
; A" l6 s. A. L: `  F8 r' I│  │  │      13-在受控组件&非受控组件之间抉择.mp4
5 D4 G1 l# x) S# W8 z  |" x│  │  │      14-路由.mp4  H. W. l+ T+ [% I3 m
│  │  │      15-组件的组合.mp4
) I0 T) ]3 v- D5 Z│  │  │      
& @1 ^' a8 N- V" b/ J4 j│  │  ├─3 三方UI设计语言  Q  R8 c& Z6 ^5 c; x9 Q- C& L
│  │  │      16-三方UI设计语言antd的使用-0.mp4+ a3 y7 i' `3 W  S- @6 i( ~8 r( h
│  │  │      17-三方UI设计语言antd的使用-1.mp43 t+ F7 i  ~3 U9 N
│  │  │      7 W' Q1 M! \$ }! r: ^# A9 o
│  │  └─4 打包及部署& A/ Z* ^- w9 Y5 S/ ^
│  │          18-打包及部署网页.mp4
* i; \6 Q; E9 m6 I0 l) s│  │         
* {9 f! F( O0 C5 z│  ├─6-11 ReactNative入门
- N8 Y: h* _0 x  A' [│  │  ├─1 ReactNative入门
3 x3 g+ A" `' a: w+ J│  │  │      01-知识点&案例介绍.mp4# r; G1 _( H8 \( ^
│  │  │      02-了解React-Native.mp4' n& Z  ~7 M9 E5 j
│  │  │      03-了解React-Native工作流程.mp4
  }" }( R& g: G- A1 z& H│  │  │      04-创建第一个React-Native项目.mp4
6 k) c. q2 P  n, k3 m" ~& [│  │  │      05-了解React-Native目录结构.mp4
% l1 p. y0 ^0 d' t│  │  │      06-ReactNative开发资料.mp4
) Q5 {3 q1 ^3 `& T│  │  │      
9 h# W; y! {; q4 A9 w8 R│  │  ├─2 ReactNative 页面跳转2 q2 l/ M7 y2 u" s
│  │  │      07-通过react-native-router-flux完成页面跳转.mp40 t* m$ g! t# u3 f0 R
│  │  │      ( w# ]& f3 p1 E/ l9 F
│  │  └─3 ReactNative组件/ v: b% _2 }' M$ y, f& c
│  │          08-开发组件(swiper).mp4
6 P4 E/ q( m* m& I: {( V% W$ f│  │          09-长列表FlatList入门.mp4
( M! v# M, j/ _│  │         
" r( v  D  t0 m# \│  ├─6-12 ReactNative进阶
& d3 `/ ]* ]4 D* o- t) P2 a, ^+ R│  │  ├─1 网络数据加载及展示$ A; K" a0 X" ]9 x% g" H% d+ V) _4 R
│  │  │      10-通过fetch请求网络数据并刷新页面.mp4
% D& m: u% f& H1 n% y│  │  │      11-FlatList页面优化&按下事件.mp42 v# O, }( S7 X
│  │  │      12-电影详情&Image的resizeMode&ScrollView滚动布局.mp4
$ J8 w3 [/ m+ Y$ X4 k8 D│  │  │      
+ Y- q5 B3 A7 j6 i; j& t│  │  └─2 调试&打包应用
9 `5 E* n1 l2 t1 e4 w│  │          13-日志与调试.mp4+ I0 b, ^8 a* g/ Q
│  │          14-打包签名Andriod应用.mp4
2 }) Z" K1 L+ H4 T9 r* W│  │          15-修改应用图标.mp4
! {! x6 u# `6 k2 d│  │         
) R! I4 ?4 P9 g7 [/ Y0 G" i│  ├─6-13 ipfs基础入门: U# p  ]2 b* L" f" V7 N
│  │  ├─1 ipfs入门介绍
* R) R6 o9 |* _│  │  │      01-ipfs&音乐播放器课程简介.mp4
2 q5 Y2 ]1 G) h1 Z8 a* W" }7 c* u│  │  │      02-ipfs简介.mp46 v3 i" @) H4 Y4 c6 j2 `9 H
│  │  │      03-Http协议的特点及问题.mp4
" ]% S+ u* b9 F" A# m4 u& e│  │  │      04-ipfs的特点及优势.mp4; I: E7 R' A8 f( a. ?; ^  k
│  │  │      + Y4 I  s" C/ d; z: C. R$ ]* x
│  │  └─2 ipfs的常用命令
3 W0 A. x# ~; Y  `- w/ `; i2 J│  │          05-ipfs入门&基础操作(上).mp4
; D2 t/ h* L+ D0 j- l6 x│  │          05-ipfs入门&基础操作(下).mp4% r" @3 w8 n' ]$ |0 P' o' s
│  │          06-ipfs数据传播方式.mp4
" g! m$ m  R+ [9 M- u$ x2 ^: v) [# B│  │          07-ipfs的files操作.mp4
3 U2 F8 I3 T# x│  │         
' F$ b6 d9 M, z5 K│  ├─6-14 ipfs进阶技能8 D. [! S; o7 D, j8 Z8 p/ [( f
│  │  ├─1 ipfs的配置
, H4 i( [& m3 X; G8 D6 f- L│  │  │      08-网易云音乐的API.mp4
% J/ g0 V2 D9 r│  │  │      09-开放网关&修改默认IPFS存储目录(上).mp4
$ [0 Q& S" ]) `4 O6 ^9 z6 }│  │  │      09-开放网关&修改默认IPFS存储目录(下).mp4% }$ ]+ Q, a9 s5 Z4 I" _
│  │  │      10-ipfs添加&访问图片数据.mp4
6 E6 P) x: L2 w' r, ^$ i│  │  │      7 t$ G+ Y/ Z6 N9 b5 \0 q- P& r3 z
│  │  ├─2 使用js-ipfs-api
' V; O. Z4 K# G! v│  │  │      11-使用ipfs-api获取网络数据.mp4, W' ^4 I5 [  o0 g3 Z
│  │  │      12-使用ipfs-api上传网络数据.mp4
, {2 l7 D- S0 k5 P- B' M/ f│  │  │      3 Z* N5 R1 J0 H. P) ~
│  │  ├─3 ipns
! s, _) U- A$ }4 s│  │  │      13-ipns绑定hash数据.mp4
$ n8 o- Q# H  k1 S│  │  │      6 U* G; ]6 a- r8 r' N
│  │  └─4 ipns的其他常用操作
) t" A1 y* P* F# f: b│  │          01-课程介绍_2EbFP.mp4
0 {4 H0 D5 f! E( c│  │          02-ipfs其他常用操作-pin.mp4( j- n1 u( V, a( O
│  │         
  N, ^. ^+ @! ~8 @+ P. ^- l( n$ Q8 E│  ├─6-15 ipfs-api案例项目
; R; s+ o  Y; ]$ |8 c1 }0 G│  │  ├─1 ipns-api案例开发
) y( I' I3 D( p3 T; n  p│  │  │      03-ipfs页面路由.mp4
) Y2 V9 E1 {9 w6 g  w( B% ~( b! e  U│  │  │      04-ipfs-api文本的上传及获取.mp4
8 H! J/ C4 o# h, Q│  │  │      05-ipfs-api多媒体文件上传.mp4
' ~; M3 p6 y$ l1 e) ^│  │  │      06-ipfs-api图片文件上传&Promise封装.mp48 _. r4 J. H& O4 y+ Y" a
│  │  │      07-ipfs-api文件files的使用.mp4" g5 C* `) ^, K: V- k( r
│  │  │      0 O# V9 l* l( z) Q; w# n
│  │  └─2 antd设计语言3 I, I7 y+ s/ \5 ~5 N/ r8 n+ `# \
│  │          08-引入antd布局.mp43 J- t8 \+ w; `1 O; O9 D
│  │          09-配置antd的布局路由.mp4  ~7 Y2 ]) ?1 I8 M3 B$ w' P2 `
│  │         
0 o4 M" q* w9 c$ s; {) D│  ├─6-2 mondodb
3 c9 g/ _1 P+ l/ T' }* }% P4 R3 Z│  │  ├─1 mongodb
  a% r. E) |& l7 X7 c0 V│  │  │      10.mongo命令行增删改查.mp4
. i2 _8 f( ~. K3 i; O! ^, i│  │  │      9.mongodb介绍和安装.mp4# f$ w1 j; {6 S; n. A2 z
│  │  │      
; Y' G' w* x' P5 t: j5 U7 H# I. [│  │  └─2 mongoose/ k3 S1 J/ G2 d. `# C& F& _7 g
│  │          11.mongoose连接数据库并插入数据.mp46 O1 p  ~; H" O0 E+ K) |$ h) e
│  │          12.mongoose基本CRUD.mp4
+ Y: L8 D9 S; {8 i5 t7 F- E│  │          13.mongoose高级查询.mp4
, _" t4 S5 Q5 }1 p│  │          ; j" W( h7 j2 U
│  ├─6-3 Web框架
4 w( l$ V$ r- d* [2 m/ X& l* j: U│  │  ├─1 express框架# O/ Z4 V/ t' j& U' n' ~' c
│  │  │      1.Express简单使用.mp4% X, T/ `8 V7 h' @: n' O- A2 F
│  │  │      2.静态文件托管.mp4: j+ ?( ?/ ^' J
│  │  │      3.路由的简单使用.mp4/ c/ q9 E1 j# }$ ]. v1 N, U
│  │  │      4.强大的路径匹配.mp4
3 i7 \- L' G0 T/ G│  │  │      5.模块化的路由.mp45 F! [0 P  K! ?4 c2 o
│  │  │      6.中间件系统.mp48 z  D, {3 E2 U
│  │  │      7.全局错误处理.mp4
' U- b1 R% ^$ F│  │  │      8.模板引擎.mp4) l. f5 i& X5 b7 x0 x, P; m8 w
│  │  │      
) S3 k9 L3 J$ G0 V6 O0 _9 H' A│  │  ├─2 pm2
# P  O& ]3 y/ p$ H│  │  │      9.pm2进程管理的使用.mp4
; W/ |! W" z8 Z/ s( S5 w7 b$ [2 J│  │  │      5 O4 k" \1 [0 G7 F( }
│  │  └─3 Todo项目) O9 N) j1 C' F( h% P
│  │          1.Todo项目service的编写和单元测试.mp4
/ P1 t4 B) w% Y  O' X. |; e│  │          10.Todo项目的架构搭建.mp4
3 Q( |8 q" F. r0 l, R- F│  │          2.Todo项目router层的编写和测试.mp44 Y4 J7 f+ j6 G- J  o" [. d1 \4 X
│  │          3.异步异常的捕获.mp4! A) F! d) ?) L( D8 N
│  │          4.日志中间件和config文件的使用.mp4; Q0 U5 s! M8 g! K
│  │          8 J5 ~- P2 h$ }5 r
│  ├─6-4 Web开发" Q% j# i) i8 C  {
│  │  ├─1 RESTFul API设计和前段端分离! c$ Y7 K9 R% W) L/ @) Z
│  │  │      5.RESTfulAPI的设计.mp4
: u1 j+ m7 A' }│  │  │      6.前后端分离的概念.mp4& s) i4 p, [' ]/ U8 z( i2 L+ _
│  │  │      
% @/ Y5 Q8 L% B4 U( H│  │  ├─2 电商管理后台项目架构搭建
# X. O2 ]  B+ X6 L  J- m4 m8 \7 }5 B│  │  │      7.电商后台系统介绍.mp4# {1 j5 A0 w' t: n
│  │  │      8.搭建电商后台项目的MVC架构.mp48 Q1 G8 q& J, q/ k
│  │  │      9.config的动态切换.mp4
, i8 Y7 r3 u% ]' C6 l% w. J│  │  │      
. W4 }( q* ~4 B3 `' R8 \│  │  ├─3 用户模块- G1 U- _% B/ h4 W0 N  F' ]
│  │  │      10.res_md中间件的封装.mp4
' A" [- \& K( |3 z8 \. y# K│  │  │      11.userService的编写和单元测试.mp4) P' D. J/ K4 L1 r! s6 z- v
│  │  │      12.使用token来实现用户的认证.mp4& N+ @. S% g! Y( x1 K1 Z1 m0 d* z+ j
│  │  │      13.user模块的router层.mp4
$ z9 w! e8 I0 J* s* O│  │  │      
5 k( L; o: _2 Z, V$ F0 e9 U% V│  │  ├─4 分类模块
7 K* S# s& [# g- f0 A│  │  │      1.category的service层编写和单元测试.mp4
* n! G2 S$ e0 t3 ?7 m5 U3 H│  │  │      2.category的router层编写和测试.mp4
! K' K4 I, y5 Q' T: I│  │  │      
/ H! y: b0 s- B8 ^( V( o! h" K9 J│  │  ├─5 商品模块# s! @/ ^1 |/ W, z7 E# @( b
│  │  │      3.product的model层编写.mp4" I, [( g6 i" i1 Q% E
│  │  │      4.product的service层编写和单元测试.mp4* x% K) P9 n$ Y7 h
│  │  │      5.product的router层编写和测试.mp4
, S8 n& K. E2 d* B( M│  │  │      
7 T8 h4 `# V, a- ~' H- L! }│  │  ├─6 订单模块3 x" S. q6 ~* g# q- W) g
│  │  │      6.order的service层编写和单元测试.mp4
# |5 [4 u. R, [- W% w2 a│  │  │      7.order的router层编写和测试.mp4
' T- X& g8 c# m2 Z* I│  │  │      
# E" m( ~2 d" J# F: q2 t│  │  ├─7 token认证和权限管理
' B- r2 q: k9 l" `$ }+ Q) B│  │  │      10.permission中间件.mp4
" W4 w) L. v8 C+ \6 I7 }7 C# ^│  │  │      8.token认证中间件.mp4
7 K& F6 m) A( a$ s4 p+ j8 b& Y│  │  │      8.token认证中间件.mp4.baiduyun.p.downloading
; p  p. Q: b  m5 a│  │  │      9.完成token认证的中间件.mp4
% E1 W7 z  @7 A9 p' \│  │  │      + V6 s7 p5 F) S" z6 u* {: t
│  │  └─8 集群搭建和线上部署. a/ R) T- b: V- M
│  │          11.pm2集群搭建.mp4
1 B2 f) P: ~5 G% u% L" V. H│  │          12.线上服务器选择.mp4( P/ r/ u" C4 g0 {1 d
│  │          13.阿里云部署工作流.mp4
' \/ f9 \! I) j4 {) p9 w7 p│  │          # Q9 O# J5 R; I" u/ C8 u+ J
│  ├─6-5 高并发解决方案( T. U! M  A# ^) `( R
│  │      1.高并发的硬件和软件的解决方案.mp4
9 @* {2 N8 D2 @" V) {│  │      2.Redis介绍和命令行操作.mp41 d. r% R1 \3 `: v
│  │      3.Redis在项目中的使用.mp4
' {& |6 L' A0 }: T" @8 w! W2 }9 r│  │      Thumbs.db) ?' p; P1 G- W
│  │      9 Y9 m/ i+ Z: e' o3 ~
│  ├─6-6 Vue的基础语法
( p7 e; a- ^8 E9 q2 |! l/ M│  │  ├─1 Vue的入门* e* J2 T6 c! g8 R. q5 q9 ~
│  │  │      01.课程介绍、.mp4
6 f6 C# M6 Y. C0 E- V# W│  │  │      02.vue的介绍.mp4
6 s) ]1 k$ U( y1 h% C│  │  │      03.vue的简单入门.mp4
& A$ Z" @4 C& K. P│  │  │      04.vue快速尝鲜.mp4
( U& ]: j/ V( h& ]5 v│  │  │      - ^; t/ O0 s, @7 ?& m$ x* R6 Q
│  │  ├─10 结构和路由8 B6 E& L9 x, E
│  │  │      26.工程结构.mp4( b. R0 K2 n+ ]* d( F
│  │  │      27.vue-router.mp4
0 e. Y+ e% r0 f2 K│  │  │      28.总结.mp4) H' i2 H' R# I0 _  J: I& v1 l9 N
│  │  │      
0 c4 {5 ?8 K7 ~! L' P0 l2 |+ r│  │  ├─2 Vue的实例* S( q8 m4 l/ |# K/ U
│  │  │      05.数据和方法.mp4' t4 H6 `5 P2 g8 b. d
│  │  │      06.生命周期钩子.mp45 v1 @3 a3 }4 a# x+ R
│  │  │      07.计算属性.mp4
! q9 T) j; @2 W+ M│  │  │      08.侦听器.mp45 d9 U; G8 G, w( z9 j  i; P
│  │  │      5 a/ m; V% h0 ]  i" z) _
│  │  ├─3 class的动态绑定
5 B* x6 p, {# p6 B$ z8 \7 @0 h│  │  │      09.class的动态绑定.mp4
8 }+ W! k2 S4 R' k4 R│  │  │      
: y9 x# |$ f) e4 ^│  │  ├─4 vue中条件判断- @8 `: N) X' x, ?# m# F
│  │  │      10.条件渲染.mp4
0 D) P& }( {1 `│  │  │      + c- n8 c5 o* h3 Y
│  │  ├─5 vue中列表处理
# T3 @/ ^( _) K│  │  │      11.列表渲染.mp4! r( o/ U7 u- ]6 U( x
│  │  │      12.演示数组中的操作.mp46 F: F6 w4 r& e
│  │  │      13.遍历对象.mp4
& a* V8 O: z8 w! k1 K& n/ H5 P│  │  │      14.修复数据-注意事项.mp40 |3 x2 p6 L3 @+ W# q# @" B& q5 w
│  │  │      15.完成todos案例.mp45 C+ G. r1 i9 Y6 f! h
│  │  │      
9 S4 L& h7 ?( l$ ~│  │  ├─6 vue的组件9 v+ X8 Z5 E3 c6 M  W
│  │  │      16.全局组件.mp40 m$ ~5 a4 ~7 V6 |) @' C
│  │  │      17.局部组件.mp46 g$ F6 ]  Q& g# E* h: g  C) t
│  │  │      
$ G! |  I8 G  R4 T; n$ t$ T│  │  ├─7 vue的组件通讯2 x( g# H& D# s" `% F7 `9 k8 c
│  │  │      18.父子组件通讯-父传子.mp4  I* E' }8 X/ e/ X1 L: P
│  │  │      19.父子组件通讯-子传父.mp4
- b) ]. \' G1 w│  │  │      20-注意-子组件不能修改父组件数据.mp4* }& z! a  B1 G/ \8 b
│  │  │      
2 B$ Y- W- k1 g& s7 S; o│  │  ├─8 vue的插槽, Y7 Q$ u5 a- i, n! C3 d# n9 `
│  │  │      22.组件的插槽.mp4
1 A' [- O$ H8 j5 x│  │  │      23.具名插槽.mp4
  z9 O; I& u5 F6 _  X6 f│  │  │      24.动态组件.mp4
% v% P; j4 B; m' a" p, r. g/ J! x; j│  │  │      
" u+ I* d- K6 u0 s( |, t│  │  └─9 Vue的脚手架工具1 U4 r* e/ o, F4 X' }0 X$ e
│  │          25.vue-cli脚手架工具.mp46 L8 \/ s  D$ Z! m: r
│  │          3 K6 K; }8 j! l, ]
│  ├─6-7 彩票排项目重构
( `' a  d+ e/ f' y7 \$ ]4 B│  │  ├─1 搭建项目结构
. Y4 s! m5 a6 k/ s' ~' v# \│  │  │      01.上次课内容回顾.mp4
4 c9 r8 \" `# K& ^& t  \│  │  │      02.今日课程介绍.mp4
4 y# J: ?4 ]3 s│  │  │      03.搭建目录结构.mp4% ^" F0 @! d4 u) q* C+ t
│  │  │      04.引入bootstrap.mp4
- W: Q8 c$ Z1 t5 n! I│  │  │      0 W: _4 [4 r, p* a
│  │  ├─10 完成选号组件的业务逻辑
' o3 t& b6 Y1 Q! V  T$ W│  │  │      01-今日课程介绍_gTKQW.mp4* Q4 |4 G, Z! d# t( _
│  │  │      02-搭建选号组件.mp4/ ^7 v0 D3 X  {4 }1 W
│  │  │      03-初始化所有红球.mp4
2 G1 a5 T. w( t& Y9 Y+ l│  │  │      04-红球单选的逻辑.mp4
( |. e8 t1 J, l' x│  │  │      05-selectpage获取选中红球.mp4
- x8 ?7 _/ ^6 X7 k$ K( n│  │  │      06-初始化所有蓝球.mp4, \: }' S! h( f/ ?$ r* l9 r$ R
│  │  │      07-蓝球的单选逻辑.mp4
% g7 W9 E8 h& ?$ p. Q+ L( i│  │  │      08-selectpage获取选中的蓝球.mp4
- j" ?$ c8 q, a. @) d) j; q. b│  │  │      
) u7 A7 G" v" s5 I& T0 G. v8 ?4 o│  │  ├─11 添加数据到Vuex中
. w0 B6 f. F6 p) R! P6 P' V' g+ q; c│  │  │      09-添加数据到cart中.mp4# y) O- v4 G7 A! Q; m2 u9 O
│  │  │      10-上节课遗留问题.mp4
, w6 U5 \( x3 ^7 U- B│  │  │      11-修改数据为购物车定义的格式.mp4
) H5 u4 g6 `& H: `│  │  │      
( V1 L# e5 f7 ~( A+ C$ y. T│  │  ├─12 完成购物车组件
( Y; h. L  t) N' G1 x, T│  │  │      12-显示购物车中的数量.mp46 S8 I* x" ]$ V
│  │  │      13-购物车组件.mp4# ^9 _8 S  H! Y# G4 ?
│  │  │      14-显示购物项信息.mp4
( b3 A8 x; [, {9 ]3 O│  │  │      15-完成机选功能.mp48 _; B* T5 M+ u  W, U* g' F) R
│  │  │      16-完成清空的功能.mp42 M2 f+ c; ?/ _& P
│  │  │      17-完成删除单个购物项.mp4
: n- }# m+ G8 ]6 U3 ~│  │  │      18-显示购物车总金额.mp4' C: m5 v  D# O+ ]: n# I
│  │  │      / M8 V) q8 |4 ~8 \# t
│  │  ├─13 将数据保存到浏览器中: }: Y9 K; j# @) B- U  ~2 e
│  │  │      19-使用localStorage改造项目.mp4
9 U& f/ N; {. x│  │  │      / [" `( c. s9 A( O7 [7 }* o3 G
│  │  ├─14 机选逻辑6 k: o- H: ]/ v& [
│  │  │      20-红球机选的逻辑.mp49 K" T9 S' [2 _$ v' a* O
│  │  │      21-蓝球机选逻辑.mp4% l+ Y1 \& I" G, F$ `% @* z
│  │  │      22-机选逻辑完成.mp4# C7 F- T0 h1 ^
│  │  │      7 ~; D; H/ Z3 m" |
│  │  ├─15 总结' |# `4 k$ P* e- I# R0 R' e  J
│  │  │      23-打包.mp4: g( ~" j' n9 ^* K: \
│  │  │      24-总结.mp4# `: y: @3 h; v# T# P
│  │  │      
+ \) {5 d' p* ?* f│  │  ├─2 完成首页模块1 d# n3 U6 \! Z5 z- `' I2 [, ~
│  │  │      05.TitleBar-上.mp4
0 g3 H; l, X3 B, I% n│  │  │      06.TitleBar-下.mp4
8 M. S, c8 t/ E0 C+ E' Z- ~5 T. ^" H│  │  │      07.抽取Carousel轮播图组件.mp4
4 ~) U0 z5 J; j# u- D& p+ z2 D│  │  │      08.抽取HistoryList组件.mp4
7 _  ]0 c* u' R# ^( a% ^+ F) o4 g2 m│  │  │      09.发送请求分析.mp46 @! n. @0 }+ J/ z, m6 L
│  │  │      10.发送请求获取staic中的数据.mp4
' _/ f5 U2 c; I& D│  │  │      11.完成首页-列表展示.mp4. V! O8 y9 z/ R$ E1 |: G' M/ R
│  │  │      12.回顾首页案例.mp4$ w) a. P$ ]" x0 P  K: P
│  │  │      
* C8 k7 P- K$ o( b│  │  ├─3 调试配置
/ E' N9 J9 O% i. p│  │  │      13-pathRewrite前后端代码联调.mp4
) i7 j: A' K' i. Y│  │  │      ' B9 R( B' o# w- L: U+ Y7 [  ?4 e  a1 d
│  │  ├─4 重构menubar和titlebar) i5 G8 M6 I2 i3 X7 P7 g
│  │  │      14-抽取menubar组件.mp4
; \1 e& d5 _: _( [: \- P0 r- `│  │  │      15-组件之前的跳转.mp4
8 r) N7 `- e' f7 ^5 b│  │  │      16-修改titlebar中needback为布尔类型.mp44 [0 n1 d9 T- V1 P$ A
│  │  │      
8 G: f, y8 ?7 N: X$ s' V( K6 M9 J│  │  ├─5 完成彩票详情组件
* x  D9 {7 x. n% W0 e5 p: P│  │  │      17-完成彩票详情组件.mp4
' ?/ f0 R- T* L. Q- X; r│  │  │      0 l4 ]1 H# P4 \( m% c
│  │  ├─6 解决遗留问题
! E1 K) s+ d: C0 j  O4 W' z& S│  │  │      18-上午小结.mp4' V: j5 t( `8 E7 C. x9 L3 O4 u
│  │  │      19-创建登录组件和用户组件.mp4
( u6 p; N; H" f│  │  │      20-解决menubar跳转问题.mp4+ x6 V5 }9 B3 m$ D7 o* X
│  │  │      + y& l$ a: \' b( f% C( Y9 x% }
│  │  ├─7 Vuex的介绍% K" i5 j( B( D; U: E
│  │  │      21-保持用户状态问题-非父子组建共享数据.mp4) z- y( {! }' Y
│  │  │      22-Vuex中的简单实用.mp4! x4 O" }/ @" j# P
│  │  │      23-vuex中getters的使用.mp4( k* s' a% ?* z  o9 @
│  │  │      24-vuex中抽取模块.mp4; `7 V' T. `( ~! V" N' H
│  │  │      25-总结vuex.mp4' z2 k6 [: q, z3 S9 w' W
│  │  │      " Y' s  F2 z2 [# Y4 q1 g
│  │  ├─8 使用Vuex- `) [6 P4 g5 Z& a/ j
│  │  │      26-封装一个user的Store.mp4( p" H& P( G$ a4 u9 Q9 H9 @
│  │  │      " j" ?2 W6 D" c
│  │  └─9 完成登录和用户组建共享数据
0 |# x6 t& J+ s0 X# s2 e│  │          27-完成登录和用户组件.mp40 E' L3 r0 }  X" E& Y( k  j& y4 y
│  │         
4 D% \/ |* N" s/ h9 C9 B│  ├─6-8 React基础入门) x' r, A6 x. R+ ?2 l: g5 o
│  │  ├─1 React介绍与入门. w. [8 `# |5 q# T/ r, R
│  │  │      01.react简介.mp4, S3 i0 B  s# B" m: Z
│  │  │      02.通过脚手架初始化React.mp4
* J: S5 p* E  a# M2 J0 x9 }│  │  │      03.配置npm淘宝镜像.mp4: ?( P# u4 j9 ]
│  │  │      04.通过ReactDOM渲染元素.mp4! y& f" s* G# G* k- }( D
│  │  │      
+ d, R9 q2 E: N. s1 D! \│  │  ├─2 React属性&状态3 J5 N" N. Z6 G. W! _$ Q# f
│  │  │      05.组件的声明及组件的状态.mp4
2 s) ]6 O0 |, s' ~8 W+ ]│  │  │      06.组合组件及props的特性.mp4
! P2 C4 P6 t8 P# v4 I5 W│  │  │      07.state状态及更新.mp4! C/ O/ c0 p4 D4 z+ Y
│  │  │      08.state状态的特性回顾.mp44 j) e# }; m! @( X, `/ P/ }
│  │  │      
7 G0 y! y2 s! o+ B/ |│  │  └─3 生命周期7 z0 S9 R& e6 H. u* e
│  │          09.react生命周期.mp4/ f7 N, Z. \/ ?
│  │          10.多个组件的生命周期和状态维护.mp4* }$ z; X& o2 A- n7 `
│  │          : B: e, X" c0 n* k
│  └─6-9 React进阶知识
: [: Z$ q3 B. K8 s: x$ ~│      ├─1 React事件
1 }* w# C9 p  l( c+ _2 w│      │      11.event事件.mp40 u, u1 {8 }3 J5 k$ I2 U# V% f6 x5 a+ m
│      │      12.event事件传递参数.mp4, z4 Q9 ^; r/ b  V
│      │      13.计数器游戏.mp4. t+ x- R1 {( w* z$ k  f+ Z: N
│      │      13.计数器游戏.mp4.baiduyun.downloading
0 J+ V( U2 W5 b│      │      ) V% Z$ j& c- j6 }0 a
│      ├─2 style样式
+ n4 [. i6 m0 ?6 v$ f) l2 @│      │      0.通过文件引入.mp46 h2 y  e) {& {  K: a) P
│      │      00.yarn及翻译插件.mp4" }+ e* M" b$ o- V% ?& g# \
│      │      14.style样式写法.mp4
. }; U9 M/ T1 h, ?3 K7 T0 o! f│      │      # h$ P" a7 D0 P/ m8 \
│      ├─3 受控组件
& n; `& v/ t# j* I) v8 i5 f. [6 l! p│      │      01-内容回顾.mp4
9 u* [# v/ @) ~│      │      02-付款计算器页面搭建.mp4
1 B- X& f! _% I│      │      03.受控组件.mp4
0 l/ k( ^% B! c' H* U1 a│      │      ; I8 r+ F3 K- E9 @4 N6 Z8 X
│      ├─4 状态提升! b: U) }  g1 C; M, p5 Q
│      │      04.状态提升.mp40 s; B/ g: |) D% M6 _9 S8 Z6 O3 `
│      │      05.状态提升-组件数据流.mp4
% T+ j  f2 [% C: _4 z* K. \1 l3 o/ k│      │      06-状态提升-付款计算器代码优化.mp4/ U$ ]( l5 C* o% F( A% L
│      │      - t7 L& F+ Z& O" ?( n
│      └─5 非受阻组件  B  p1 j  W# Y) g, P* e* C( o
│              07-非受控组件-refs.mp4) r( L: ?0 R  ]; S# H
│              08.非受控组件.mp4
) X$ Z2 e. d+ O# {│              
: P8 I6 h4 ?$ y# E├─7阶段 以太坊区@块链和智能合约实战: J4 W) s6 R  }0 J2 F
│  ├─1 以太坊入门
& {* T, A9 s7 Z7 N, r│  │  ├─1 区块链市场价值$ r' J8 c$ J+ _% X& {/ O
│  │  │      01_课程安排介绍.mp4  o4 R% L+ k( e/ I/ ^+ i
│  │  │      02_区块链10年.mp4# L# U/ R! W0 g9 N3 S6 p
│  │  │      03_区块链的市场分析.mp4. d0 L1 i5 l1 f" n: [
│  │  │      04_区块链的项目机会.mp4
' X5 r4 o# ~& o+ q* d7 `' ]6 c│  │  │      05_信息互联网和价值互联网.mp4( N* g; S2 S0 E% a# O
│  │  │      ) E7 b+ H& V. m$ \0 t' C. t# L
│  │  ├─2 以太坊介绍* ?: I# }% j* M/ n9 V+ Y+ m
│  │  │      06_以太坊的历史.mp4; _& }4 u) v9 T' f
│  │  │      07_什么是以太坊.mp46 ], v4 n( L9 L0 ?: a2 a; i
│  │  │      08_如何和以太坊网络交互.mp4
& n: N# x# @; j0 O│  │  │      * ^& k% @" j% Y" j
│  │  ├─3 以太坊钱包安装, o* c" k2 l( C# w% @+ P+ s
│  │  │      09_metamask的安装.mp4/ ?9 V" N8 t. S8 M6 C
│  │  │      10_如何安装metamask.mp41 c, @' Z. `" {
│  │  │      7 j2 K5 J7 L/ `
│  │  └─4 以太坊常见概念+ E+ P5 P, H4 v5 l2 v' b! W
│  │          11_以太坊网络介绍.mp4
( g& s% V1 A( P2 O│  │          12_区块链工作的核心原理.mp4* p$ \4 R/ p% o; K3 m
│  │          13_以太坊的账户系统.mp4& f) C+ ~0 H0 v0 i- `2 E
│  │          14_演示以太坊转账和账户的概念.mp4" m6 T5 Z( _! X/ J0 e% @
│  │          15_为什么转账需要一段时间.mp4+ p; U$ H, j  }7 v+ K
│  │          16_交易打包的过程.mp4; ~8 S# `1 y$ J% v, }5 I8 _/ c
│  │          17_区块时间和难度调整.mp40 {4 f  Z; O, s6 X% T2 U9 o! R
│  │         
$ S1 P* h7 D# h│  ├─2 solidity智能合约6 f$ R0 A% v  l" i
│  │  ├─1 soliddity智能合约编写
4 m% i% Y8 U9 j% H$ g, B│  │  │      18_什么是智能合约.mp4' p9 @+ H* c4 H$ E2 ~+ x
│  │  │      19_solidity特点和工作流程.mp49 f; A2 m$ a9 X* c1 g+ v/ m9 n% W
│  │  │      20_智能合约的源码和实例.mp40 I6 [6 R, I/ k
│  │  │      21_智能合约的helloworld.mp4
, E7 z' P( H5 b; u6 ^: [│  │  │      22_自己搭建remix的开发环境.mp4
/ Y0 q& D9 K7 {9 z- X│  │  │      23_solidity函数关键字.mp4# @! a* e8 n+ s; i7 i) \
│  │  │      24_以太坊的call和send.mp4, D* S0 k* d- l4 {
│  │  │      25_以太坊的单位.mp4
5 S  Z/ @+ U* v- i/ a5 U│  │  │      26_gas和gasprice.mp4
/ G- J: w2 O& V$ r/ M, ]│  │  │      27_助记词bip39协议.mp4) M3 m& W# I6 r3 C/ s
│  │  │      28_更多以太币的获取.mp4
3 Z, ~8 T5 w& e- N2 i│  │  │      谷歌浏览器使用.mp4
/ X3 O3 P5 s* o3 i2 H' N│  │  │      
! D; ?* d. s  J5 [1 A# }) {* J│  │  ├─2 soliddity智能合约编译
& f# h, x$ y. J. e│  │  │      01_开发环境说明.mp4
2 m" _9 `& T# [0 D6 _, l4 n$ e│  │  │      02_项目的目录结构.mp4
1 d# @5 z2 `1 o) T, F) J│  │  │      03_编程简单的智能合约.mp4. D" Q6 J! P+ e: O( e1 Z
│  │  │      04_智能合约的手动编译.mp47 u$ y1 c4 s. t& U. I' y
│  │  │      1 Y) Z7 y2 F: C0 p# g+ K4 b2 _$ W
│  │  ├─3 solidity智能合约框架
7 ]  J  I2 D8 F- f1 [& [& U( W5 D! Z│  │  │      05_智能合约的安全问题和软分叉硬分叉.mp4
+ n# q$ \( X. m* w4 t( s( A│  │  │      06_mocha测试框架入门.mp4
2 E% ~5 n# K  t9 e+ l, v│  │  │      07_安装ganache测试环境.mp48 a3 z8 Q% t' z: V1 @" U0 t
│  │  │      08_web3js的安装.mp4+ i" R4 |: @4 B
│  │  │      09_web3初始化和版本检查.mp46 E; T5 Y! V" b/ R' q9 F
│  │  │      10_web3一些常用的api.mp4
4 ?1 @4 q! A$ S2 F│  │  │      11_web3与账户相关的操作.mp4
  h3 `* ~  ^5 |' T2 d& N' h│  │  │      12_es6的新语法async和await.mp4) R9 E- T' X) u) n% M0 _( r4 I
│  │  │      : ~. u1 G2 A5 L* H9 m$ q, F
│  │  ├─4 solidity智能合约部署# t( H1 H$ ?' _0 d8 t
│  │  │      13_部署智能合约到ganache测试网络.mp4" d- Q( h* E( p, y3 ~3 S
│  │  │      14_智能合约的方法调用.mp4
0 I; e- n; [0 P% O" E8 A1 d3 z' z│  │  │      15_部署智能合约到真实的网络.mp4- y9 b1 W# g$ B8 c
│  │  │      7 j. S: A) k: |0 I( K7 N  M
│  │  └─5 以太坊水龙头开发
/ h. p7 v: i" t! n  _- O! z3 t│  │          16_智能合约开发流程回顾.mp4
0 _& o6 K$ p$ S" c│  │          17_以太坊转账逻辑.mp4. x, Y0 ^% s2 f
│  │          18_以太坊水龙头的开发.mp4
0 s: C8 m# @( x+ f8 P: B3 T4 J" ~│  │          : b1 i0 q- x/ p  B& g, c: ?8 R# D4 k
│  └─3 区块链项目实战2 J+ Z) X, r4 j7 l: [
│      ├─1 区块链彩票业务分析4 U8 U8 t; [/ I3 x2 U: m2 K: I
│      │      01_传统彩票业务痛点分析.mp4
" _# V" x# L, r" q& J│      │      02_传统彩票业务的信任危机.mp4* t' X! Q. L; }  `1 s
│      │      03_区块链彩票原理分析.mp4
" @$ e" @  _9 l) ^4 i│      │      " `* m8 x& K+ t6 Y  X
│      ├─2 区块链彩票业务实现
, j4 j5 z" T% d( a+ N  x│      │      04_solidity的基本数据类型.mp4
+ q* ]1 i# ^" P+ `: i: H│      │      05_彩票逻辑的构造方法&msg全局对象.mp4
" r: H$ q5 g4 e0 S2 y- m# U! Z│      │      06.solidity数组入门.mp49 O& b% O5 x  l; j: U- S) `; t+ O
│      │      07.solidity数组长度和方法多个返回值.mp4* X* C0 E, |/ I/ g+ T! C
│      │      08.solidity的复杂数据类型.mp47 S2 ~: \  H4 I( R
│      │      09.solidity二维数组的小细节.mp4
( {) _" ], O* P2 q│      │      10.不同版本的细微差异.mp4
9 ]! L6 e4 V3 Y2 Y% E0 K! b. E2 ]: e│      │      11.彩票投注的流程.mp4& S) t! M, q8 Y7 B: w3 M7 X; n7 |" h7 X
│      │      12.智能合约的debug.mp4
- g" r1 h: c* y- K( I  L3 d* L│      │      13.奖池金额的查询和参与人的查询.mp4  _. C/ f! U" T  J4 }9 _9 k+ w7 o1 W
│      │      14.彩票随机数生成和开奖.mp4/ `4 _6 Y3 O/ }: t2 M
│      │      15.彩票的退款逻辑.mp4
5 h, G, }- K5 L' |│      │      , g% }# G* c' q
│      ├─3 modifiner使用
8 c! ?& D% e9 h! R; S5 z│      │      16.modifier的使用.mp4- y* o1 d. v9 c7 q& G" C, k
│      │      3 _1 U) `$ [; v& u# w
│      ├─4 fomo3d原理9 y% z9 \# ]* L  x  O& f
│      │      17.fomo3d原理分析.mp4
  Y7 v0 y/ r! E/ B9 T! j0 O2 T│      │      18.fomo3d的漏洞解析.mp4
; Q/ O9 i& b' l# e. q  y- I% \│      │      + X  c( M9 W* Q* V
│      ├─5 智能合约测试/ _& \2 o; N* K7 m9 ]
│      │      19.智能合约的测试(上).mp4
, v* {# S9 M, D$ [* q$ P: ^1 C, m' _│      │      19.智能合约的测试(下).mp4
) P; k( T5 W1 ~" ~1 b3 R* C│      │      0 b: x+ b5 F! \) }) K2 Q
│      ├─6 彩票项目实战
) _. R& D! M- t$ W: n" ~! K- c│      │      01.dapp的架构分析.mp4- f2 K+ e, ]1 P
│      │      02.react开发脚手架搭建.mp4
6 h# H1 G4 T. O: s│      │      03.react的ui开发.mp4
- i. i5 n2 L+ S. f% R' x│      │      04.彩票智能合约的部署.mp4- n/ B4 [4 J: M9 e
│      │      05.web3版本的问题.mp4
; k# F9 u+ p- D0 c│      │      06.获取rankeby网络的信息.mp4
. D' y' T7 s& f│      │      07.获取以太坊的数据和react的生平周期.mp46 v9 {* _, d5 {# O5 j5 W$ V9 k
│      │      08.从以太坊获取其他的数据.mp4
- f5 w8 j  Z* z: G6 t│      │      09_前端的点击事件&购买彩票.mp4. V1 F7 ]# K) v9 J2 p
│      │      10.开奖逻辑的完成.mp42 I* {0 }& s# X! x) V
│      │      11.智能合约的send方法是不能有返回值的.mp42 R$ P4 f3 g9 M- N' R! X, {
│      │      12.智能合约的安全问题.mp4/ `2 O% i, ^! a/ k0 R* E4 O
│      │      * u, w* C* N' v7 s9 y4 [
│      ├─7 众筹系统后端智能合约实战4 E; B' B- ~" A3 k& B# m
│      │      01.众筹模式简单介绍.mp4$ N* n* {& Z: O
│      │      02.众筹的痛点分析和区块链的解决方案.mp4
$ }( u7 Q; ^% I8 |8 r6 ^8 O- `│      │      03.众筹智能合约的结构分析.mp4+ g- {  a) d# \# A/ S! w2 {1 b
│      │      04.众筹智能合约的构造方法.mp42 I# Z( P( U6 a5 P+ s0 O6 v. G
│      │      05.众筹智能合约数据的获取.mp4
3 k. O( v1 M# ]3 l2 }; \; s* L│      │      06_付款申请的结构体和逻辑编写.mp4
% c1 h& p" g$ u2 h│      │      07.智能合约中storage和memory的概念.mp4# W8 r+ B+ ^4 E6 i# ^6 u. y
│      │      08.memory和storage关键字.mp4
: H% T' d% b1 X0 Y. L* L│      │      09.付款请求Request函数的编写.mp4
: @4 V2 y/ N5 }; n, L2 g6 K5 Q│      │      10.付款批准的操作编写.mp4
. q0 n( j7 W: c8 `( t' j3 _│      │      11.批准付款的操作(严重的bug分析).mp4' J5 u. f* K$ C/ }- w0 O4 t
│      │      12.优化批准支付的操作.mp4
4 Z* I4 c$ r/ G1 U/ H6 a0 X8 `& b│      │      13.众筹业务的完成.mp46 ~- x% q$ K* Y+ ?; y4 \& W1 R
│      │      14.部署逻辑分析.mp4
7 L+ ~. g& }1 r' d│      │      15.使用智能合约部署智能合约.mp4
2 N4 s/ J( W6 L6 F│      │      
; c  K3 |& r6 u" g│      └─8 众筹系统智能合约前端开发! h2 V7 b" v! W( @+ b+ w
│              01_项目功能演示.mp41 V$ P6 s8 C. K& x$ M* U' Q) N3 v
│              02_众筹项目需求整理.mp4
6 q' s' z8 P! T! d│              03_众筹项目合约完善.mp4
# [. W0 N6 c1 w) g- Z0 L8 k│              04_智能合约及测试(web3.js)需求.mp4' M2 L+ q" ~, q
│              05_通过web3-使用Factory创建Funding众筹合约.mp4, A* m" \: Q9 h/ z
│              06_众筹项目api操作的封装.mp4
& U9 u( l9 x2 @  K6 v│              07_外部函数调用demo.mp41 L# F' P0 X, M0 Z% ~7 M
│              08_获取所有众筹地址&获取众筹详情.mp4
) \2 z; C( v7 r5 [% e( S$ J, W│              09_众筹项目合约列表加载展示(上).mp4
$ c; t9 ], Z1 ]' U" [1 N  t. w│              09_众筹项目合约列表加载展示(下).mp4/ i; H2 ?7 K9 F+ k" x2 `
│              10_获取发起人&参与人的众筹项目.mp4
! }1 i! h) x* O5 P& x│              11_创建众筹项目.mp4
! \- \+ ]. A5 J  z│              12_参与众筹.mp4
' j' O: t* A! I2 o8 A; |│              % ]" D5 L9 O' M' B3 D
├─8阶段 hyperledge区@块链项目开发/ C, O/ _2 n* d: x; |8 V
│  ├─8-1 hypeledger基础
2 P: X( i  u, k9 l% ~! X. H4 M│  │  ├─1hypeledger基本概念6 v# e  Y% u/ L
│  │  │      01.hyperledger简介.mp4
7 f6 P6 z6 ^( B% k│  │  │      02.hyperledger的参与人和合作伙伴.mp4: e* P' X0 E6 Y6 ?0 L1 v( l
│  │  │      03.hyperledger重建任务.mp4
# I0 P+ e$ o  d/ W) M# W' E│  │  │      04.hyperledger的重要概念.mp4
" J2 O0 g; a  N! }+ ]+ o. c4 n│  │  │      ; |/ W& I+ d: l
│  │  ├─2 hyperledger常见组件
' C5 j- P- G! i) L* A/ a" L# W1 h│  │  │      05.资产链码和账本.mp41 r* k# P/ D8 N) o2 Q6 c8 Q* o: w
│  │  │      06.hyperledger解决现实问题.mp40 h1 ?6 _) x$ G+ Z
│  │  │      07.msp和fabirca概念入门.mp4
! {! X; j2 m1 }4 Y$ F│  │  │      08.hyperledger中的peer、client和orderer节点.mp41 z. z6 G9 p, O
│  │  │      7 F! j5 O  B5 c# w1 z: h9 U7 P1 |9 B
│  │  └─3 hypeledger智能合约和各种流程& W/ C. `, @- }0 s  E
│  │          09.hyperledger业务分析.mp44 l/ o6 E! L& G
│  │          10_channel详解.mp4  A8 b8 Z; R0 M4 e4 \9 @. J5 v! y4 M/ v
│  │          11.chaincode详解.mp4* L8 C4 j' d$ C0 k" F
│  │          12.hyperledger的工作流程.mp4, h$ ^3 Z+ f" k& |0 z( i5 [' R
│  │          13.术语回顾.mp4$ n# A! `# b7 W
│  │          6 Y+ X: f, C2 N& ^
│  ├─8-2 hypeledge进阶9 z2 ~  c' J% h+ n/ t
│  │  ├─1 fabirc环境搭建
) N2 k; i: N$ J1 l0 a' L  B│  │  │      01_开发环境复习.mp4
+ Q( J3 E/ u/ m, c3 R' }' N│  │  │      14.渔业系统业务复盘.mp4
; L" P; i' n% X8 Z│  │  │      15.docker简介.mp4' I  O0 Y: {9 x% `1 H
│  │  │      16.docker的原理和工作模式.mp46 {- W8 f, f! _( U1 q- v1 p- C
│  │  │      17.docker的安装.mp4. D2 R, ~3 g0 i+ L* t/ c+ @$ L2 z
│  │  │      18.docker常用指令快速入门.mp4( ^* B6 I! {! A/ K1 ^
│  │  │      19.hyperledger的环境搭建.mp4
. W- p0 z5 x9 b2 d& l4 N, l│  │  │      20.hyperledger fabirc end 2 end案例分析(上).mp4
. H5 `3 M- e& ?$ }5 G6 {9 h│  │  │      20.hyperledger fabirc end 2 end案例分析(下).mp4
! v' e! V) B; ?0 F& D│  │  │      21.hyperledger的end2end业务复盘.mp4
' [* n( [. ^4 m$ E  P9 B│  │  │      ; f9 \8 e4 P: I" L2 F+ \
│  │  └─2 fabirc脚本分析和链码编写
2 N. [- M! o# e│  │          02_hyperledger开发环境脚本分析.mp4
, P5 c2 s3 N; Y% }" o% B- G│  │          03_byfn脚本分析.mp4
0 L  `% x8 D3 f│  │          04_cryptogen的配置(定义谁是谁).mp47 C' |- R9 q. f, I
│  │          05_在创世区块里面声明orderer和peer所在的org.mp4
) N2 {: \) z* \$ h) O, w│  │          06_orderer节点的配置(性能调优).mp4
! v) n! u- v8 i/ g8 p│  │          07_创建orderer节点的创世区块和channel.mp4' u2 ]0 _0 M) U* P, d+ L
│  │          08_更新通讯的锚节点.mp4
6 C; q" k3 f7 Z) a$ i2 R│  │          09_手动创建网络手动执行e2e的逻辑.mp4
7 S- d4 e  }, D( C  a+ {# f5 q0 e│  │          10_手动创建channel,加入channel.mp41 Z2 V4 |7 X9 \3 z6 Y+ n  z9 H3 w
│  │          11_chaincode的编写和部署.mp4
& L  y: m9 H6 Y9 d. s│  │          12_invoke逻辑的编写.mp4
& e: d2 n6 F/ A9 J8 {│  │          13_开发环境nodejs搭建.mp4
5 R3 w+ `# b" _, D( `│  │          14_nodejs开发调试环境的搭建.mp4) R+ U& O. o5 `" {
│  │          15_nodejs 链码的架构.mp4$ x3 f0 O+ }% Q
│  │          , r, E: K# d, f/ M% O  z1 ?( U% u
│  └─8-3 hypeledger项目实战* r( c2 ?) W5 ]3 J( U: z
│      ├─1 fabric项目业务分析. R* r& O3 A5 E0 H3 u0 ]$ M
│      │      01.hyperledger的工作流程.mp4
. \/ g! d# S( ?3 s5 E│      │      02.fabirc架构流程分析.mp4, k% H' h4 w+ ^& {4 |/ H1 S0 `. R
│      │      03.hyperledger的其他重要概念.mp4
1 A. \4 w1 S: G, S2 |│      │      04.hyperledger前后端开发环境搭建.mp4' F7 x+ e% q9 ^; X# H7 n
│      │      05.区块链技术的使用场景.mp47 S% D+ |& @! D$ X) x8 C  F0 I
│      │      06.fabirc项目分析和简历书写.mp4
, z- [, F# ~; ~4 |+ b1 n& W│      │      07.渔业管理系统智能合约的编写.mp4% b+ x0 ]( \- u' ]
│      │      08.nodejs链码和go语言链码的类比.mp4
3 Z' ~: x/ Y* T  E" d│      │      
+ y: t0 U) {& J1 |, }1 I8 ]% H│      └─2 环境搭建前后端联调( W8 W$ j' a0 m2 U# C6 ?
│              09.网络环境配置.mp4
' \+ d& K* p2 y+ `, S1 ?│              10.网络的docker-composer文件讲解.mp4) U/ V6 J, I0 |* h; U
│              11.环境问题的debug(上).mp4
3 l' g% [- X( r│              11.环境问题的debug(下).mp4
' `+ p4 V5 o' k9 T5 g6 q2 D! d│              12.hyperledger的环境搭建完成.mp4
8 P3 Z: m; X, V' [│              14.nodejs的sdk演示.mp4& U3 }+ y& l, ^+ x/ X
│              15.nodejs中间获取服务器数据.mp4" K, I  |9 h" j) c
│              16.coachdb的配置.mp4
5 L; D- ?* U+ F7 q) x- L6 F( {│              ; {- }  u$ g7 [0 v5 L( g
└─BlockChain-master
% x& |8 Q" W( J& ]9 W5 j    │  .gitignore
. b- l+ C" m" G9 |( W; [    │  LICENSE
% K4 a. V8 \. y5 q4 ~0 \    │  README.md3 r4 D- r3 H( l$ L9 c3 W
    │  
5 u; O" X2 y5 H& K8 U1 |+ I    ├─01_开学典礼-区块链理论基础
6 O* |2 z/ _3 D- u    │  │  readme.md
) x! R/ v- A1 b1 A    │  │  视频下载地址.md6 W9 [0 K; N9 Q: s; {
    │  │  
, d3 X; o+ Q  H+ x. B    │  └─ppt: A7 Z9 G9 ]$ [4 y8 s8 o; i
    │          01_什么是货币&货币的发展.pdf
8 }5 E9 A5 S0 _9 {+ Z1 L    │          02_分布式账本演示&台币.pdf6 x+ t( k4 Z5 K
    │          03_哈希函数.pdf
( L+ @* k* l5 ?5 r8 h* T    │          04_hash的安全性.pdf
; n; L( `. e3 h' S    │          05_数据一致性问题.pdf
! f) v& U. z! I: O4 q0 i0 g5 l    │          06_通货膨胀和比特币.pdf2 e& y2 U) y8 r) X9 j
    │          07_区块链技术演化.pdf
9 I3 ?, L  F: A    │          08_区块链的应用场景.pdf
. s% x$ R. x: O& e4 Y    │          09_我到底需不需要区块链技术.pdf
4 K0 e0 Q/ d! }* D$ _    │          10_区块链风口的猪.pdf; Y5 a# J$ W/ ^% t% q2 H
    │          11_ico和ipo和daico.pdf
' S# W$ i; a& x, G' ?8 E4 ~$ Z& y: D4 D) A    │          12_区块链的一些疑问.pdf7 j# Z) F7 M: k% H6 g0 L. A; |
    │          13_分布式系统核心问题.pdf
' N) A/ Y# y: y  a6 w! b( ^    │          14_区块链技术栈和学习线路图.pdf- \, l* T2 C/ E8 q" y, j
    │          15_区块链技术现状.pdf1 Y5 e; z+ L# F' {
    │          1 A: N- r9 U5 n$ U
    ├─02_第一阶段-java加强-kotlindsl-函数式编程-gradle-git-高阶函数-lambda表达式
1 c; @7 T. a" B5 j    │  ├─day01
4 U5 Q$ ^  N( G$ r" M  r8 C+ `    │  │  │  readme.md& |- d2 p( o9 h' ]
    │  │  │  
. `" r0 q9 |4 o+ |0 I8 G( K    │  │  ├─code" d. ?6 ]( F" v8 U0 `8 a
    │  │  │  └─src
$ Q8 A- s& t  t    │  │  │      └─com2 v& m  l7 T" ?8 D: f* g
    │  │  │          └─itcast
, ]: J! q; \$ q& y+ E    │  │  │              └─day014 F" T# W' R9 [$ l
    │  │  │                      01.Helloworld.kt
# G7 o. h4 D! r( N1 ^& @    │  │  │                      02.基本数据类型.kt; Y0 y- s4 B; ]9 X& ~- T' g+ S4 P8 {
    │  │  │                      03.kotlin基本数据类型和java对比.kt
7 z% d( W+ D' y& d    │  │  │                      04.基本数据类型取值范围.kt1 m$ J' K7 V5 w8 i6 o# X* M: o; q
    │  │  │                      05.kotlin调用java.kt
& L% a3 [4 y8 m+ k2 ~: ^" J& X    │  │  │                      06.智能类型推断和类型转换.kt! f- x6 k* u! K+ \
    │  │  │                      07.可变变量和不可变变量.kt$ o5 C" v- K! y  ?2 @
    │  │  │                      08.字符串.kt
- f# V- H7 f1 Y2 @  b' p9 f* e    │  │  │                      09.字符串删除空格.kt. B' \& g3 d2 G) C; {
    │  │  │                      10.字符串的比较.kt
/ o) c4 p: q# w$ V6 {* o! R9 [8 @    │  │  │                      11.字符串切割.kt; V& v- V3 z- T7 L9 n$ m
    │  │  │                      12.字符串截取.kt
8 R+ F+ b7 v4 v. U& x! ]7 U" K    │  │  │                      13.二元元组.kt. |2 l; m0 }! P+ K! Y$ ]0 V
    │  │  │                      14.空值处理.kt3 V* J: Q+ s8 g4 R; z- v+ F
    │  │  │                      15.人机交互.kt5 D& Y! j  `/ D4 H! n1 F0 u
    │  │  │                      16.自定义函数.kt
2 r; D, u+ y; m1 B    │  │  │                      17.顶层函数和嵌套函数.kt0 v: J* S1 R! ~( X
    │  │  │                      18.字符串模板.kt9 ^! K, n' r, P. f# U- ]. H) O
    │  │  │                      19.条件控制语句if.kt
. ~6 `* @% r; T    │  │  │                      Test.java% i7 ~, A' M9 R/ E8 a
    │  │  │                      " Q0 V# e5 V$ ]- I+ ~
    │  │  ├─ppt" m5 b, u3 X3 c; ~3 c
    │  │  │      第一天.pdf! A* A% R1 ?" W. e
    │  │  │      + Z+ C" x7 u+ Q" i% ?
    │  │  └─video. N) K( }" u! ~$ g  I/ V# d9 s
    │  │          info.txt: {4 P  @3 c: n) A% Z  O
    │  │         
, P  V/ q5 Z+ H- N- x+ L    │  ├─day02
& Y) }& I$ c( t( i& `; O' d    │  │  │  readme.md
* ~8 \1 g) h3 R7 Q; J5 o    │  │  │  
- `( l& j* w0 ^! H9 r- q9 f    │  │  ├─code
& \$ q) ~- T9 R    │  │  │  └─src
+ p6 _2 K2 [- ?, l7 V    │  │  │      └─com. L9 E' U% o0 n0 Q  ]! x& j
    │  │  │          └─itcat3 F; x, e# s8 z! [$ j
    │  │  │              └─day02
8 V1 ]/ i3 Y% m    │  │  │                      01.for循环和foreach循环.kt
6 y$ @1 S" A& i; t2 T    │  │  │                      02.continue和break.kt
5 Z/ P2 X" y2 X7 a3 n; L$ j    │  │  │                      03.标签处返回.kt$ u; w/ K% F8 }
    │  │  │                      04.while和do while循环.kt
) U7 ~. {. }/ k2 u4 K    │  │  │                      05.区间定义.kt
/ T4 Y1 Q2 x! P    │  │  │                      06.区间遍历.kt4 V2 d( s( X) V7 n1 C
    │  │  │                      07.反向区间和区间的反转.kt
7 A/ L/ U4 h" ~8 N" m! C: R7 T' O* K- D    │  │  │                      08.数组的定义.kt
# D4 b" ?2 ]6 o: {1 r5 Y7 R    │  │  │                      09.数组的遍历.kt
  v4 R5 g8 L# Z- g$ R2 i    │  │  │                      10.数组元素的修改.kt! x: a. L6 p' \" o
    │  │  │                      11.数组元素角标的查找.kt
1 T) C: D9 D( P    │  │  │                      12.when表达式.kt
* X5 b% e1 G- u' ^$ `( D' p5 `* O* U    │  │  │                      13.when表达式加强.kt+ z) X: H& s& a$ z# {+ M! [4 U
    │  │  │                      14.when表达式不带参数.kt) L9 v5 \4 S. J( W( C" g6 z
    │  │  │                      15.when表达式返回值.kt
! c! H, [% G$ ?# q7 p    │  │  │                      16.函数表达式.kt& e2 L( S; |. \! s
    │  │  │                      17.函数表达式补充.kt# ~( o3 M( Z; X2 @7 {
    │  │  │                      18.默认参数和具名参数.kt
+ p  A/ w$ e* M0 ^. ^1 D' n    │  │  │                      19.可变参数.kt# z7 o7 {5 l3 S) I- O
    │  │  │                      20.异常.kt
! a" _) o4 @+ `: `    │  │  │                      21.递归.kt
3 x2 f9 _* T' q- v1 T6 p    │  │  │                      22.递归和迭代的对比.kt
" y# M! j  e, u& |+ ?# ?3 @    │  │  │                      23.尾递归优化.kt
/ O$ i+ [; W) [6 J& ^6 _    │  │  │                      24.面向对象.kt8 T, c6 P2 J$ ^% `8 Y! h
    │  │  │                      25.运算符重载.kt0 s7 ]: D0 y4 }' l$ U
    │  │  │                      NetUtils.java7 ]# i. ~; h/ v& ^- Y& ]
    │  │  │                      Operator.java; A- \+ a2 o* p
    │  │  │                      SwitchDemo.java
+ W: z6 x9 R: [. v1 d    │  │  │                      Test.java
( J! |: C8 ]$ v- n4 J    │  │  │                      判断用户名是否合法.kt/ v7 w+ G: F3 [/ r7 K. b4 g; ?6 @/ q
    │  │  │                      / v* e1 B) ^6 ~& I" I/ n; i8 |, K
    │  │  ├─ppt
% c) [3 n; o3 o, H: K    │  │  │      第二天.pdf% j- @1 o& [- S- f
    │  │  │      
5 `2 U, \0 _6 ]; [3 E9 ]) K8 E    │  │  └─video
+ \+ n% u! }. z  w    │  │          info.txt
2 N9 c+ [0 A& H8 r( w. @  j    │  │            u4 t, V) o+ L/ {( W# {
    │  ├─day03( _3 w8 `  n0 p7 O- D) C) s: A
    │  │  │  readme.md% r  k2 t$ [0 o1 ]5 j+ |
    │  │  │  , i5 v& g4 w' G! p( K
    │  │  ├─code1 }2 L! {/ u, b* \1 N
    │  │  │  └─src
/ g1 B* N2 d: I/ C$ i; @    │  │  │      └─com
: h6 \; N$ ^% U( W    │  │  │          └─itcast) r) Q, C2 l( f7 z- m
    │  │  │              └─day033 {7 B* o% {) v. l& H; }9 f
    │  │  │                  │  01.get和set.kt
% N3 h" s0 V7 y6 O* T    │  │  │                  │  02.访问器.kt1 o1 _0 T8 B2 q; f
    │  │  │                  │  03.自定义访问器.kt9 M+ ^4 O/ w( f1 |
    │  │  │                  │  04.构建函数.kt- L$ Q( F1 s8 d+ a/ U
    │  │  │                  │  05.构建函数参数使用_init.kt
! G# Y7 N+ [# ~4 e+ {' z    │  │  │                  │  06.构建函数参数使用var和val.kt
: t! v. z0 v% d, b: I; u    │  │  │                  │  07.次构函数.kt
: M( y; n; H' X& M9 i) N0 ]0 d    │  │  │                  │  08.init和次构执行顺序.kt
7 E! `2 `0 c* e, \0 G( L& ~    │  │  │                  │  09.继承.kt, }9 j0 b2 a- I; J; O* v
    │  │  │                  │  10.抽象类.kt
" A0 }! `- {9 {. f    │  │  │                  │  11.接口.kt
  T: d) {" B# J' T1 G) B    │  │  │                  │  12.接口细节.kt1 S. W# d* u. J0 y: L
    │  │  │                  │  13.接口细节2.kt
9 ^; F4 v+ @1 \    │  │  │                  │  14.多态.kt5 _% o. h1 R1 _5 l2 a7 H
    │  │  │                  │  15.智能类型转换.kt
) ]+ K( O1 d! B9 V: l) t* |. R    │  │  │                  │  16.嵌套类.kt
3 j6 m& P" z. F1 b/ a    │  │  │                  │  17.内部类.kt  O) b9 q6 }" K7 o( o2 a; g* i9 g5 [
    │  │  │                  │  18.内部类使用this.kt
; a4 r; q4 t2 q8 J' l, A    │  │  │                  │  19.泛型.kt
% b" b/ S7 \. j3 P0 g' Z6 g    │  │  │                  │  20.泛型函数.kt/ j% i$ a4 ~3 T4 ?" w
    │  │  │                  │  21.泛型上限.kt% ]* C2 E! ?' x
    │  │  │                  │  22.泛型擦除.kt
) a7 W! f+ p0 i3 H7 {  D    │  │  │                  │  23.泛型类型投射.kt* \+ u5 u* }5 a0 [. Q+ n' H
    │  │  │                  │  24.星号投射.kt+ T9 B0 R4 w2 i/ I8 E2 }3 @  A; T9 [
    │  │  │                  │  Dats.java  O- A1 O0 e# v2 @7 Q" D' {8 z
    │  │  │                  │  News.java7 A; z$ n6 q* v% s& p
    │  │  │                  │  Test.java
7 @* N# w3 P% P4 f    │  │  │                  │  运算符重载练习.kt5 a, w- j4 s" ]. F
    │  │  │                  │  ! [: d# Z; |5 ~, L) O5 B
    │  │  │                  └─封装
8 E) C8 X7 ~9 M4 q% q+ F7 t    │  │  │                          Consumer.kt& p/ x5 Z' p6 t: J  j3 K& }
    │  │  │                          WashMachine.kt2 @! q9 W. X* ?$ p
    │  │  │                          
5 t; m- @, r5 @    │  │  ├─ppt$ m+ u& C$ y2 U- C# O+ _" B
    │  │  │      day03.pdf, ]. E# Z+ h9 d% O3 V; r
    │  │  │      
: M% t* ^) Q4 W0 Y4 L! z    │  │  └─video
$ H# E8 O2 G; C    │  │          info.txt, \" K4 x5 ?# b
    │  │         
9 T3 E' I; k0 g    │  ├─day04
2 T3 ~! O! V1 D    │  │  │  readme.md! ], N" q( G6 K) j
    │  │  │  
( g, A! }* l$ m( p. ~" E    │  │  ├─code4 @9 {4 i9 m; l& ?3 F( q' X: r
    │  │  │  └─src
5 G* E4 x- k: Y! R; o8 X+ b    │  │  │      └─com
4 D2 ?9 U. r/ W; I" J( V( y' g- f    │  │  │          └─itcast
: b& Y: ~8 H( n5 ~    │  │  │              └─day04/ `0 A0 V( D5 P; a
    │  │  │                  │  01中缀表达式.kt
: e9 G! P2 r3 s5 C7 i* n    │  │  │                  │  02.类委托.kt1 ^9 ?" i, s8 h: K) D" J- e
    │  │  │                  │  03.类委托实现二.kt/ T6 A0 J7 M  W' q. l1 y' N
    │  │  │                  │  04.类委托功能加强.kt- D  h3 M0 v4 G7 J: M
    │  │  │                  │  05.属性委托.kt
  Z, v' w' t" r  j; X* m    │  │  │                  │  06.惰性加载.kt
9 Z  E6 ^  R- E    │  │  │                  │  07.延迟加载.kt) N+ L/ U4 Y  Z5 R" H
    │  │  │                  │  08.扩展函数.kt5 `$ X& A; @( y
    │  │  │                  │  09.kotlin的object单例.kt
* Y8 p0 {9 |- H+ p1 f8 k' ^! D1 q' ?    │  │  │                  │  10.伴生对象.kt$ S  E5 m2 g3 Z9 w! g
    │  │  │                  │  11.和java一样的单例.kt
7 Y3 k! ~0 r7 t3 T7 ?    │  │  │                  │  12.枚举.kt, i2 W# y7 U4 s& ^4 G" q
    │  │  │                  │  13.枚举加强.kt
0 d: O; K' ]" i) r5 C    │  │  │                  │  14.数据类.kt' J$ J& S  \( f3 M, N0 B
    │  │  │                  │  15.密封类.kt
: r# j3 K) b3 L* A; e; O& T; T    │  │  │                  │  NetUtils.java; F7 H9 N- s! x! _
    │  │  │                  │  SingleInstance.java. |9 r& ]9 h1 ^7 W
    │  │  │                  │  
" G: ^- y3 N  }: v    │  │  │                  ├─bean类
9 c5 T! o9 B+ E' W. ]    │  │  │                  │      News.java( ]# @6 D( {, D. q5 B$ W
    │  │  │                  │      
4 f) b  d) c7 Q6 @) i    │  │  │                  └─java的util; {& M9 @. \/ {% h3 Q6 \% H# I
    │  │  │                          StringUtil.java
. D3 u0 e- ]' y8 I0 W9 F5 a& k! _    │  │  │                          Test.java1 V( D3 H+ t' H  d' Q0 y
    │  │  │                          ) k% T2 ~. {( _  F% |% h/ w
    │  │  └─video1 B' @( g; s) ~' ?/ _: @
    │  │          info.txt& V0 G! y7 O$ Z
    │  │         
3 s6 C  W3 \6 z- [: ?    │  ├─day05
+ v0 k/ _) W4 W5 l3 k, l- b    │  │  │  readme.md8 r+ e( v5 L( O% y1 H: D
    │  │  │  0 m  f& W/ g! V5 d$ x- [
    │  │  ├─code
; z- q* Q( n4 B; I    │  │  │  └─src
5 l$ d9 F2 T$ e: v/ w& ^1 k. l& X    │  │  │      └─com5 q: E* `# a$ q9 l5 w, M% I
    │  │  │          └─itcast6 T( z0 H+ V9 S2 }0 r7 R1 t- r# T
    │  │  │              └─ay05
! ?4 M5 v% ~5 L, m8 w' c! }    │  │  │                  │  01.List集合.kt
9 x  a% F+ y8 {! L) ]    │  │  │                  │  02.List集合的遍历.kt
8 |8 B: j+ a/ C; W    │  │  │                  │  03.Set.kt
: D* k) A  V0 A  i    │  │  │                  │  04.kotlin的set集合遍历.kt2 o& V9 d' G! O7 i
    │  │  │                  │  05.map.kt! [0 j8 u% {% Q8 O$ S. b
    │  │  │                  │  06.map遍历.kt
- Y9 ]/ V/ b0 {1 S5 z+ X. z) p    │  │  │                  │  07.闭包.kt
+ L* J& m/ n$ A9 p; z8 f$ v    │  │  │                  │  08.高阶函数.kt, Z3 ^0 e/ b2 l' O/ H# H
    │  │  │                  │  09.lambda表达式.kt
7 m- k& [& a' X: T    │  │  │                  │  10.lambda表达式去().kt
. D6 p, }' I/ s9 a9 U$ L    │  │  │                  │  11.lambda表达式单独存在.kt% c" c3 Z# \6 A( p
    │  │  │                  │  12.有参的lambda表达式.kt
7 ?$ k* t( s8 G* U0 w! `    │  │  │                  │  13.保存lambda表达式.kt
1 h9 p2 k' V- Z, q# T    │  │  │                  │  14.lambda表达式使用it.kt
7 n: [. L1 X6 y5 J2 |- t    │  │  │                  │  15.lambda表达式返回值.kt
9 C- r/ {9 v6 t8 R    │  │  │                  │  16.常见的lambda表达式.kt& e7 @, Y& R, s
    │  │  │                  │  17.非诚勿扰.kt8 \5 g3 S& x) ]; o* l
    │  │  │                  │  18.过滤.kt
  x- {. K9 V) k$ V, {; s) a2 X    │  │  │                  │  19.排序.kt% |: [) C/ N- \& L8 b
    │  │  │                  │  20.分组.kt  n  b5 h# k* Z. }; {+ j5 P/ D
    │  │  │                  │  21.最值.kt
$ p7 N& n. f5 r9 J    │  │  │                  │  22.去重复.kt
" f6 T, _6 j4 |, B! ~3 J    │  │  │                  │  23.集合拆封.kt( g1 X$ f9 X7 Q' y4 r. ?/ E
    │  │  │                  │  24.集合重新组合.kt
' p( `- v" e; y( l    │  │  │                  │  25.集合相加.kt9 r2 V0 j, h0 o7 I: P, z
    │  │  │                  │  26.四大函数.kt% T8 Y# D9 J! U9 c6 b6 m6 A
    │  │  │                  │  TestCollection.java
" o& `- {* l. u/ M- ?6 d8 h9 j- {    │  │  │                  │  
$ j' a9 W) M( l* ^9 B0 f    │  │  │                  ├─函数回调3 {' S% U5 [. I. ~7 \$ \" E5 K  ]
    │  │  │                  │      Mother.kt
! G! Q& M$ E* H) P  X* J6 v/ o) i    │  │  │                  │      Soy.kt5 t7 }4 u0 G8 D4 D
    │  │  │                  │      SuperMarket.kt
: A) Z4 O6 P/ @3 M4 h    │  │  │                  │      $ M; y' j  U. Y- r0 O  A
    │  │  │                  └─接口回调
  p0 E0 r5 c# u: J4 q: A6 I    │  │  │                          Mother.java
; r3 `" H, m! N3 j% n* @    │  │  │                          Soy.java
  d( _9 Y  {1 y) B1 t7 u6 o    │  │  │                          SuperMarket.java$ |5 y: H8 h6 |" i5 W/ F$ [
    │  │  │                          
3 u6 R) K% H" @+ t$ w" w    │  │  ├─ppt7 ]% t4 ~0 \: r- z7 y
    │  │  │      高阶函数.pdf! Z9 L3 R/ u" D, U# p9 U
    │  │  │      
% J! A' l0 [4 w0 J' o7 v6 G    │  │  └─video
# r7 b" z8 \3 O2 T) B$ L( D    │  │          info.txt0 c2 \$ |! R& v( f
    │  │         
* e4 W& ^2 O$ X- Y    │  ├─day06: s; w1 N2 ?5 b3 P
    │  │  │  readme.md
/ g: ]. v* U" L! r5 c3 u' A    │  │  │  / K. Q/ G6 v' {- ^$ s1 U
    │  │  ├─code
% I8 ^0 T4 l4 w6 N* ?# Z4 [/ P5 K' P6 V    │  │  │  └─src' Y, y; `: Q! d! X% h
    │  │  │      └─com" R* F( E: X9 q4 m
    │  │  │          └─itcast
7 E1 V9 G& y. {    │  │  │              └─day06
$ e' R& z! N4 H" j8 ^- i    │  │  │                  │  01.StandClass.kt
" U- D- I# W% I( u3 |- S5 C    │  │  │                  │  02.DSLClass.kt
1 s9 ^; C; {6 Z& h; z1 ^5 _2 a    │  │  │                  │  03.StandHtml.kt/ z4 T* c. O& S1 Q
    │  │  │                  │  04.DSLClass_构建器.kt# |$ v/ n; O& g% I
    │  │  │                  │  04.StandHtml_缩小作用域.kt
% E0 U9 {- @" I8 ~# T1 S    │  │  │                  │  Test.kt
9 n$ D0 E) E. T3 c& j& W    │  │  │                  │  $ O0 Q* X2 u4 T9 d
    │  │  │                  ├─构建器模式
+ J( {$ d: B8 B7 G' g7 D  \4 B    │  │  │                  │      Notification.java
: g' L' i4 ?3 x% r( a9 D/ n% b    │  │  │                  │      Test.java8 k# V- T0 c) R1 I6 N2 ?
    │  │  │                  │      
8 C! y/ u7 t% w+ k; {' p4 s    │  │  │                  └─练习% _  w$ C+ \$ J
    │  │  │                          网络请求DSL.kt9 R& r# c1 k  x2 l, O  M
    │  │  │                          $ _) f. T6 D# R4 x1 O
    │  │  ├─ppt( G+ x3 h. c) {6 @
    │  │  │      DSL.pdf
# f/ _/ d2 }% K, A3 D4 v    │  │  │      3 }  `9 I2 r) p$ i1 C" s
    │  │  ├─video
0 p% c! X% A' r! L- D! E5 [4 G9 L    │  │  │      info.txt
. Z7 y% C% a2 ]" k0 [. O7 q    │  │  │      
5 P, K2 t0 p0 X& Y    │  │  └─资料
9 C" N0 l, l( X& c    │  │          网络请求DSL.kt
+ l* a  d6 \: m$ D6 {8 @6 d    │  │         
7 _$ F2 z/ g3 o$ V$ i    │  ├─day07
( ^; Y& l, [. r* y6 t& x    │  │  │  readme.md
" y$ [) ]+ c0 ?' x* a( l* g* u  z    │  │  │  
3 s7 Q* K5 F! q& I4 X7 O    │  │  ├─code
/ g* `/ C" ?$ ^4 Z    │  │  │  └─gradle
" D% u, E1 F# |& \. l    │  │  │      ├─GradelDemo01
. x' G2 \1 C( H% ~' V    │  │  │      │  │  build.gradle.kts$ _+ p' `- A6 R; g' ^( P' {
    │  │  │      │  │  gradlew
, L4 _) a& g: h& d. B. d1 U    │  │  │      │  │  gradlew.bat& A6 o/ R) @' _) I: \9 y7 R6 a
    │  │  │      │  │  settings.gradle. J) g4 a) u8 O
    │  │  │      │  │  " \* @% h! E4 R4 H5 t
    │  │  │      │  ├─.gradle
* u8 W/ D! V. m4 G, Q/ Z9 |* j    │  │  │      │  │  ├─4.1$ i) ]( G' c' {- Q
    │  │  │      │  │  │  ├─fileChanges
+ T9 b1 i5 {1 Q% g7 X  B: _5 b    │  │  │      │  │  │  │      last-build.bin
, h1 U" s9 l2 q7 w( Q3 z    │  │  │      │  │  │  │      
$ M" X3 K1 h. O' Q    │  │  │      │  │  │  ├─fileContent. D8 w! x0 w, l
    │  │  │      │  │  │  │      fileContent.lock- k4 W2 y6 Q+ g& p
    │  │  │      │  │  │  │      
$ J7 s- G/ [1 L# c    │  │  │      │  │  │  ├─fileHashes
! }2 F9 Y! X( r    │  │  │      │  │  │  │      fileHashes.bin; ?0 U0 G% {8 Y- s7 Y$ ^
    │  │  │      │  │  │  │      fileHashes.lock9 I1 e6 V- d: t' y
    │  │  │      │  │  │  │      * j6 H# u# |% `4 g7 g0 b
    │  │  │      │  │  │  └─taskHistory
+ z; }2 {( \: R' L5 L    │  │  │      │  │  │          fileSnapshots.bin
- k# e4 `8 o4 ^* l, |$ O    │  │  │      │  │  │          taskHistory.bin
1 o& U% o6 c3 ~5 O2 J7 P) s/ h    │  │  │      │  │  │          taskHistory.lock
" F; n$ ^7 n1 h" H0 k    │  │  │      │  │  │          6 v' T1 s) d. ^. c, j+ c0 f
    │  │  │      │  │  ├─4.4, @$ P3 I0 f# q0 ]5 m& f! c' [
    │  │  │      │  │  │  ├─fileChanges8 K7 O6 D( e' a
    │  │  │      │  │  │  │      last-build.bin8 G' H8 {" ]' i- r% x& y' d) ]" |  X
    │  │  │      │  │  │  │      8 Y6 z9 Z4 U) _, x/ u
    │  │  │      │  │  │  ├─fileHashes/ j" ^+ [4 y3 k5 j0 C
    │  │  │      │  │  │  │      fileHashes.bin5 C# D. C) D! f1 G( J" g) Q
    │  │  │      │  │  │  │      fileHashes.lock3 x& m$ T1 x( X' d
    │  │  │      │  │  │  │      * I3 y3 D6 i) A  F% n9 b
    │  │  │      │  │  │  └─taskHistory% {6 @4 K3 J) u+ D) f/ R
    │  │  │      │  │  │          taskHistory.bin8 y7 V+ t! H. W, S! `9 M
    │  │  │      │  │  │          taskHistory.lock
4 T. q, j, v4 U7 y1 a3 C- v    │  │  │      │  │  │          9 `# |8 s# V: \$ U6 I2 O: W5 a. E  l
    │  │  │      │  │  └─buildOutputCleanup+ A0 z9 H8 p# K/ [7 u7 l
    │  │  │      │  │          built.bin
$ s/ K0 n) L+ ?! k: [! Y: L# W9 ~+ Y    │  │  │      │  │          cache.properties3 l; v9 j1 a* J( H8 R* n
    │  │  │      │  │          cache.properties.lock
% s& o8 ?; k6 z, j4 }: Y    │  │  │      │  │          - G5 f3 G$ E: c
    │  │  │      │  ├─.idea% p+ R3 l. k8 M" X" |( s  O
    │  │  │      │  │      encodings.xml
* f+ _/ f7 p3 v' v    │  │  │      │  │      gradle.xml$ E9 T) k# M5 j1 J) c) {
    │  │  │      │  │      misc.xml
) A/ }8 {& H/ x5 y1 d6 j    │  │  │      │  │      workspace.xml
: U0 h0 r4 @/ f    │  │  │      │  │      
7 @' Q) Q5 ]8 X* o7 }+ i    │  │  │      │  ├─gradle) F' W. w/ n% z+ D8 c8 Z
    │  │  │      │  │  └─wrapper
5 o* y3 H/ H- Z    │  │  │      │  │          gradle-wrapper.jar6 w4 x5 _" G* T
    │  │  │      │  │          gradle-wrapper.properties* w9 d9 p. _# f5 N- I8 a; ~: i
    │  │  │      │  │          ) _" P2 m# ]; y* S3 ?5 a. g" ~
    │  │  │      │  ├─out  [' n7 |9 M7 [. }9 ~8 z& M1 `
    │  │  │      │  │  └─production
; m, @# z# C; h4 f- w/ _7 R# `6 y    │  │  │      │  │      └─classes
' A, s4 s, w- w  m4 Y    │  │  │      │  │              Girl.class
! `9 ^' q7 ~, i, ], y: o7 d    │  │  │      │  │              Main.class( u( u! h; L8 u! o% @4 x
    │  │  │      │  │              
5 c1 v& D3 L; q    │  │  │      │  └─src
" |7 W$ q: c0 S# O4 H) `    │  │  │      │      └─main
, C8 d, c7 c9 x. A    │  │  │      │          └─java
& X6 j9 y3 s0 }5 @    │  │  │      │                  Girl.java' P9 X) F6 o& e7 \3 U
    │  │  │      │                  Main.java
/ G0 ]) b+ f! u2 q7 _) m: m2 _    │  │  │      │                  
: W4 `) ~  Q( f3 ^$ H    │  │  │      ├─GradleDemo023 b# n) K' `' v! i7 Z
    │  │  │      │  │  build.gradle.kts1 \7 ^( O8 X7 V  a  b9 k
    │  │  │      │  │  settings.gradle
) `; A- {, l; o% x* e    │  │  │      │  │  - z4 X, M! Z# J
    │  │  │      │  ├─.gradle; G) N5 G5 i2 ?+ P( o
    │  │  │      │  │  ├─4.1  Y# c" G3 ?# P  E1 m
    │  │  │      │  │  │  ├─fileChanges
0 |3 m' D; G% O; `" s/ c    │  │  │      │  │  │  │      last-build.bin
  C& A7 Y( f3 I% u7 z* o5 s# {" B& N, M    │  │  │      │  │  │  │        d  g  D$ V0 D: F  L
    │  │  │      │  │  │  ├─fileContent
9 c7 @, d- I# `% L" D9 \    │  │  │      │  │  │  │      fileContent.lock
) K+ }6 k9 L4 Y' R  c+ W' {    │  │  │      │  │  │  │      
' d5 s! O% w! B* }" W& K# V    │  │  │      │  │  │  ├─fileHashes; S1 ?6 E% x/ O: W" V# |
    │  │  │      │  │  │  │      fileHashes.bin7 u* c* i& g) c! X$ V
    │  │  │      │  │  │  │      fileHashes.lock
+ j( b1 F& u; Q5 y/ Q0 ^    │  │  │      │  │  │  │      resourceHashesCache.bin
5 r. t7 }" w! b2 s/ \0 @    │  │  │      │  │  │  │      , S! R' j8 `( P( Y: v
    │  │  │      │  │  │  └─taskHistory
1 h* w" s% ~: f: }8 W    │  │  │      │  │  │          fileSnapshots.bin& @; B7 |; I, Q# @; X" I
    │  │  │      │  │  │          taskHistory.bin
2 h: o$ O3 b: Q) T3 `$ b; J# j% k    │  │  │      │  │  │          taskHistory.lock4 x) S- l( }/ C  |" C7 N" }4 P! v
    │  │  │      │  │  │         
# S$ z5 @* O! P+ H. t% R( N    │  │  │      │  │  └─buildOutputCleanup
* c( G9 T; G1 J    │  │  │      │  │          built.bin7 l! d( B7 o- B) G; {+ W3 M; E8 }9 t
    │  │  │      │  │          cache.properties( S" B# h8 e. R  y; P# A, s
    │  │  │      │  │          cache.properties.lock! R0 x- [$ Y& m# G5 X; _
    │  │  │      │  │          . U+ M1 s% ?1 \+ E
    │  │  │      │  ├─.idea( I8 T0 ^' T" e; G3 r# p9 J: |* Z/ s
    │  │  │      │  │  │  encodings.xml: H; D. N% T/ u" j' t
    │  │  │      │  │  │  gradle.xml
0 x; g* ^8 G2 I2 ^. m1 v* m% J    │  │  │      │  │  │  misc.xml6 M; a* x  ]3 R: u6 v; f; o/ M
    │  │  │      │  │  │  workspace.xml
* i1 C  V& V( E% X" W# i    │  │  │      │  │  │  ' r/ s" R6 r- k! o5 S
    │  │  │      │  │  └─modules
4 F2 b( H  D# x. K7 U2 S, F+ P    │  │  │      │  │          GradleDemo02_main.iml0 E2 R& ?2 @8 H$ T  _
    │  │  │      │  │          GradleDemo02_test.iml
$ p! S/ W+ h- D2 ?2 v6 N    │  │  │      │  │            [) M6 }* o+ C% g* x( ~
    │  │  │      │  ├─build" B" [. `' l  l; J* U
    │  │  │      │  │  ├─classes( N2 C$ h- M& F
    │  │  │      │  │  │  └─java
* O, j; G' @: a% D    │  │  │      │  │  │      └─main; j% C! [& u4 O6 P: |
    │  │  │      │  │  │          │  Girl.class  g3 D1 S1 v, J7 Q8 m- n+ B: z2 T
    │  │  │      │  │  │          │  MainKt.class( m  t; P; M5 v2 R8 |. P
    │  │  │      │  │  │          │  
) ^+ K% _  A* j/ c    │  │  │      │  │  │          └─META-INF, [$ d- L- G1 W( m2 X
    │  │  │      │  │  │                  GradleDemo02_main.kotlin_module
7 a* D8 p2 T' \+ ?2 B$ Z* ^$ ~    │  │  │      │  │  │                  ! O8 E/ s, K3 B
    │  │  │      │  │  ├─distributions( R7 e. g7 _& {/ i  O; b: w' E
    │  │  │      │  │  │      GradleDemo02.zip# `- m3 o6 x& @7 Z) \8 }- n% ~
    │  │  │      │  │  │      
" E, e' {; j9 `' k  u) s# P    │  │  │      │  │  ├─kotlin4 G, p9 G4 g# H0 G* V
    │  │  │      │  │  │  └─compileKotlin
8 H, j9 V, C1 Y. b/ @# z1 s    │  │  │      │  │  │      │  data-container-format-version.txt/ l: @, f0 ^! x- A" a; f
    │  │  │      │  │  │      │  experimental-format-version.txt
2 |4 @7 b' F+ u! |' Y) D5 x    │  │  │      │  │  │      │  format-version.txt
& y  h, [, J+ H/ O; J    │  │  │      │  │  │      │  gradle-format-version.txt
0 L6 X& l. `  w5 w; u    │  │  │      │  │  │      │  last-build.bin2 j) M) x% x6 B  V* U
    │  │  │      │  │  │      │  . R7 g1 W. B# t0 P, w" y% d
    │  │  │      │  │  │      ├─caches1 P6 \( D! t0 U9 x0 [+ a
    │  │  │      │  │  │      │  ├─increCache.GradleDemo02_main
3 A1 |; g  ?* G    │  │  │      │  │  │      │  │  └─kotlin" r' [) [; y+ N9 S, B
    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab
1 D8 ^9 r% ~& @$ Q) ~; p    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab.keystream
% C5 o- ]1 F# d; |2 b8 E    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab.keystream.len
0 e6 G5 l( u4 j    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab.len
5 F% T" P4 q$ h' h$ n    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab.values.at  x: @) s2 ?1 r* K5 ?! f) @
    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab_i$ G' O( j& m7 B  u, @
    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab_i.len/ s! F1 E! [# D0 b4 T8 |+ y
    │  │  │      │  │  │      │  │          internal-name-to-source.tab% B! o, V: \% b) J2 E0 u$ j& H
    │  │  │      │  │  │      │  │          internal-name-to-source.tab.keystream
' a$ z' v* c( Y# ^1 r    │  │  │      │  │  │      │  │          internal-name-to-source.tab.keystream.len
  m  U) Z  m5 [. N4 K    │  │  │      │  │  │      │  │          internal-name-to-source.tab.len  e) W8 T3 P- I4 a5 m4 o0 R
    │  │  │      │  │  │      │  │          internal-name-to-source.tab.values.at2 W3 A* b+ r+ ?0 Y  Q
    │  │  │      │  │  │      │  │          internal-name-to-source.tab_i
% e3 O6 R2 Q- Z7 \    │  │  │      │  │  │      │  │          internal-name-to-source.tab_i.len1 H. |# Y, E- W8 G+ `/ n
    │  │  │      │  │  │      │  │          package-parts.tab
5 y8 {0 m+ J; h3 j    │  │  │      │  │  │      │  │          package-parts.tab.keystream  q0 I9 S# U$ C6 u5 [9 c; E% `/ ?
    │  │  │      │  │  │      │  │          package-parts.tab.keystream.len
  p- d+ G- }& w    │  │  │      │  │  │      │  │          package-parts.tab.len# x! |1 o0 l6 }: d; s+ d
    │  │  │      │  │  │      │  │          package-parts.tab.values.at! I2 t  T# _8 s  I
    │  │  │      │  │  │      │  │          package-parts.tab_i% q/ q# z1 T. e* \' x' w
    │  │  │      │  │  │      │  │          package-parts.tab_i.len' Y7 p  E6 M" C, ~7 q+ ?# J
    │  │  │      │  │  │      │  │          proto.tab* b* z" _" }  o1 ?5 v  T
    │  │  │      │  │  │      │  │          proto.tab.keystream2 C" S; }* Q) u
    │  │  │      │  │  │      │  │          proto.tab.keystream.len
5 J3 g2 ~' O0 s/ G) b: b* C    │  │  │      │  │  │      │  │          proto.tab.len+ ?9 s0 O" \: n' o$ _( c
    │  │  │      │  │  │      │  │          proto.tab.values.at
# F" W( m7 U5 o' s6 A- d    │  │  │      │  │  │      │  │          proto.tab_i8 Z- y2 c0 g+ M, w. h* D& {, L
    │  │  │      │  │  │      │  │          proto.tab_i.len
4 [: e1 h7 q8 H0 T6 `8 ^    │  │  │      │  │  │      │  │          source-to-classes.tab, H$ H. L# T) q
    │  │  │      │  │  │      │  │          source-to-classes.tab.keystream
0 }, c" d& b+ o: N    │  │  │      │  │  │      │  │          source-to-classes.tab.keystream.len
% x9 o, o. _6 @, a, e! Z7 x+ a- N    │  │  │      │  │  │      │  │          source-to-classes.tab.len
2 ^1 |4 q& K5 B: S- g7 _8 T1 Q    │  │  │      │  │  │      │  │          source-to-classes.tab.values.at
! h& T9 h' F- H# y6 L* e1 R    │  │  │      │  │  │      │  │          source-to-classes.tab_i
* V, y7 R$ x1 d1 r' B% R  W2 y* }8 B    │  │  │      │  │  │      │  │          source-to-classes.tab_i.len
# k! z& F: Y+ I    │  │  │      │  │  │      │  │          source-to-output.tab2 h6 }- o0 b1 ?( R
    │  │  │      │  │  │      │  │          source-to-output.tab.keystream, l/ v- `- c, q1 v: C
    │  │  │      │  │  │      │  │          source-to-output.tab.keystream.len! J2 W" v' @" p2 |" X2 C+ M
    │  │  │      │  │  │      │  │          source-to-output.tab.len/ q# O4 [' m3 U4 L1 e
    │  │  │      │  │  │      │  │          source-to-output.tab.values.at
0 a9 v5 B9 Z* o0 n% ?6 I& d+ M    │  │  │      │  │  │      │  │          source-to-output.tab_i
* f/ S- E1 G9 n8 Y* U) G# m$ K    │  │  │      │  │  │      │  │          source-to-output.tab_i.len- I+ _' S* l$ W0 L$ i% u) d
    │  │  │      │  │  │      │  │          " b" u6 a+ d5 P
    │  │  │      │  │  │      │  └─lookups- r  j: V5 U8 ^+ p0 [
    │  │  │      │  │  │      │          counters.tab# d5 A/ ?( l: J- a8 v/ L# _% a
    │  │  │      │  │  │      │          file-to-id.tab; u# u! a/ ~8 s9 r
    │  │  │      │  │  │      │          file-to-id.tab.keystream
- m/ r. i- Y$ @$ W+ _: W5 w  E    │  │  │      │  │  │      │          file-to-id.tab.keystream.len3 }0 T4 A' V- {! X, C
    │  │  │      │  │  │      │          file-to-id.tab.len
5 a$ I2 m- o) u# }2 X    │  │  │      │  │  │      │          file-to-id.tab.values.at
! [2 B9 F0 z- ^  m& q, Y    │  │  │      │  │  │      │          file-to-id.tab_i
" ~- M2 h& x5 V5 c! Y    │  │  │      │  │  │      │          file-to-id.tab_i.len
* u" f" d& ]3 ~1 X7 |    │  │  │      │  │  │      │          id-to-file.tab2 v# W" R! Z3 v+ M! y
    │  │  │      │  │  │      │          id-to-file.tab.keystream- X$ J* v/ w! ?- c5 N, z
    │  │  │      │  │  │      │          id-to-file.tab.keystream.len
9 R- Y" |# {# `% e9 W# }    │  │  │      │  │  │      │          id-to-file.tab.len
. t: I( J6 Z! W! s    │  │  │      │  │  │      │          id-to-file.tab.values.at# \; W! C1 v" `3 C6 a8 N, ]! a
    │  │  │      │  │  │      │          id-to-file.tab_i: W  h9 K4 L6 q9 p
    │  │  │      │  │  │      │          id-to-file.tab_i.len% `. H. H  Z9 J( x8 ]& E
    │  │  │      │  │  │      │          lookups.tab. z% w- ], n- t. s' s5 x
    │  │  │      │  │  │      │          lookups.tab.keystream
" r' ?3 a; m0 x/ t    │  │  │      │  │  │      │          lookups.tab.keystream.len
& L. u+ U) _& f. |4 N' A% b    │  │  │      │  │  │      │          lookups.tab.len
" {2 W' I  ~* q* J: t    │  │  │      │  │  │      │          lookups.tab.values.at
! j/ H, N% L# W, @2 n6 }6 }    │  │  │      │  │  │      │          lookups.tab_i
4 E6 i; Y2 }7 ^  m    │  │  │      │  │  │      │          lookups.tab_i.len& D2 @3 W$ }. @* v, n3 c
    │  │  │      │  │  │      │         
# f/ k1 E4 Q" ?  l( I9 \/ d    │  │  │      │  │  │      └─sync& {* T! v3 K- q3 T
    │  │  │      │  │  │              kotlin-files-in-java-timestamps.bin
- f2 U$ `2 ]; L4 r    │  │  │      │  │  │              
5 l/ }4 R. A: c( G8 G7 J    │  │  │      │  │  ├─kotlin-build
' Y- r/ L3 E  K    │  │  │      │  │  │  └─caches
1 D  R( j& T# r  k% o( g    │  │  │      │  │  │          version.txt
) l, w  m# f+ R3 I2 w    │  │  │      │  │  │          8 O6 X3 x/ y3 `
    │  │  │      │  │  ├─kotlin-classes
$ r# K1 A3 z/ S+ c    │  │  │      │  │  │  └─main
: o  ~+ y  K! [. n5 i' G  X    │  │  │      │  │  │      │  Girl.class
( p! H0 j8 ?; }3 A7 J' V    │  │  │      │  │  │      │  MainKt.class
9 J2 m7 a- q( r    │  │  │      │  │  │      │  
0 j5 e5 @0 H' D' w    │  │  │      │  │  │      └─META-INF) @! r! n" o, K8 C7 h3 ~6 q
    │  │  │      │  │  │              GradleDemo02_main.kotlin_module% d: p1 p( x& ^4 K; M; N
    │  │  │      │  │  │              3 h& l% h& _- P- q% Y* q
    │  │  │      │  │  ├─libs
) B2 ]$ d0 y) B7 M! E    │  │  │      │  │  │      GradleDemo02.jar
+ ]2 W0 q& z" ?/ N: M8 G( |    │  │  │      │  │  │      
( i' a5 U  T. j1 c    │  │  │      │  │  ├─scripts/ t5 k% U0 r+ K- X/ Q. ]
    │  │  │      │  │  │      GradleDemo02# T1 W6 W0 f7 h. O0 v  g1 M8 w5 |
    │  │  │      │  │  │      GradleDemo02.bat
; L& M6 x2 W2 L! l* g/ n) p7 ?    │  │  │      │  │  │      
9 R( a. e8 ?, ^; C& w+ c    │  │  │      │  │  └─tmp" h; R) t, g* I- @+ \6 h
    │  │  │      │  │      └─jar
/ h+ |8 A! \2 S. \, @% {    │  │  │      │  │              MANIFEST.MF
( j& V9 E6 Q" o. K    │  │  │      │  │              ; i6 t8 s  }- O6 r
    │  │  │      │  ├─out
) {* J4 B; r$ l    │  │  │      │  │  └─production
. T- l9 C* {, Y0 D' O    │  │  │      │  │      └─classes7 [% @5 g$ K% b% o. j4 Q# H
    │  │  │      │  │          │  Girl.class
% n1 n! }! D$ Z    │  │  │      │  │          │  MainKt.class+ H" w  X% i' T- [
    │  │  │      │  │          │  
6 r+ z7 b& s* w8 R/ j/ `    │  │  │      │  │          └─META-INF: }- o' n, z" Y- H
    │  │  │      │  │                  GradleDemo02_main.kotlin_module
5 G, Z7 }) ~9 ^% u/ r! ?/ T5 |    │  │  │      │  │                  6 B) d: @. N1 j( z1 B8 S# ~
    │  │  │      │  └─src
* l. I: f% }( k( ^* z2 |% ^2 w    │  │  │      │      └─main
6 ^. }* G! v: I3 A" H! }- x/ c2 y; ?; Y    │  │  │      │          └─kotlin, w- }& |+ r! b7 K3 s) k/ @
    │  │  │      │                  Girl.kt! R! ~! V! U2 G0 S
    │  │  │      │                  Main.kt
$ C4 d" |7 r4 n1 r6 m    │  │  │      │                  
0 J4 r9 G% N# H7 Z, V) v    │  │  │      ├─GradleDemo03$ A9 \. c% ]* C# G0 {( X. l
    │  │  │      │  │  build.gradle.kts' a+ M8 q& R# w4 z) S+ ?1 m+ G1 Q4 }1 D
    │  │  │      │  │  settings.gradle( y6 K" }( J( Q6 H. c" k  N
    │  │  │      │  │  
+ a: M8 @+ h! B    │  │  │      │  ├─.gradle
  Y' `& p$ R+ C. m3 Q& s" o    │  │  │      │  │  ├─4.12 }4 w$ `8 F. P% W1 K  z
    │  │  │      │  │  │  ├─fileChanges
8 C+ w" P/ v2 R" R1 {  F    │  │  │      │  │  │  │      last-build.bin8 P" Y1 J' x4 r
    │  │  │      │  │  │  │      
) U6 ^* W' P4 k    │  │  │      │  │  │  ├─fileHashes
4 H, y# k5 f. X' u4 u' m* n; b/ U    │  │  │      │  │  │  │      fileHashes.bin' F+ V: o* e( [
    │  │  │      │  │  │  │      fileHashes.lock/ T+ l* H# N" E
    │  │  │      │  │  │  │      ' g3 B& N0 H$ I# u- o( o: s$ ?/ X
    │  │  │      │  │  │  └─taskHistory
+ A9 w, v% z' i, g2 \    │  │  │      │  │  │          taskHistory.lock, {* p, |9 S+ }3 I* }
    │  │  │      │  │  │          2 S; ^' y7 `7 }
    │  │  │      │  │  └─buildOutputCleanup
0 L( y) B! q* s( G) u    │  │  │      │  │          built.bin
& v# i1 g! U* j* k: n) v    │  │  │      │  │          cache.properties" d1 {2 Q3 P' `& @, ^6 Y6 k
    │  │  │      │  │          cache.properties.lock* o& {' N. v& d8 z0 n1 J+ F
    │  │  │      │  │          , I( t9 C' o+ g" z( ]: J6 n
    │  │  │      │  └─.idea: s8 O3 v8 D* `1 ]
    │  │  │      │          encodings.xml. }9 I# c' H2 A6 a
    │  │  │      │          gradle.xml4 D( ~; f. x  N5 f( s
    │  │  │      │          misc.xml3 u1 c3 g" w* K- [6 T4 z' A
    │  │  │      │          workspace.xml7 y) ^9 h4 a0 o
    │  │  │      │         
: o. _( W: Q. Y0 J) j% Y    │  │  │      ├─GradleDemo04_task_depdence8 F9 N+ ~7 v$ L) D3 k
    │  │  │      │  │  build.gradle.kts
/ X) g$ B) _/ S8 G    │  │  │      │  │  settings.gradle/ I  C; A% F1 ~( r; D. l
    │  │  │      │  │  
. t: z* a- b! d# v' @  Y8 o* E* c    │  │  │      │  ├─.gradle
" p* t9 u3 r( k; N( C( L    │  │  │      │  │  ├─4.1
% @* L- g: Y. J2 N    │  │  │      │  │  │  ├─fileChanges* @7 e; @+ k& i9 r3 u  F( d- @
    │  │  │      │  │  │  │      last-build.bin% l; X" T7 c/ |+ c4 u: h
    │  │  │      │  │  │  │      ) g8 y& {: E' ~: ^' A6 @% U
    │  │  │      │  │  │  ├─fileHashes
: Q( e! T  ^8 q$ X" l! O    │  │  │      │  │  │  │      fileHashes.bin
8 j2 t" a: s* v6 Y! z    │  │  │      │  │  │  │      fileHashes.lock- K, O! k3 M4 A0 ~1 \' o/ ]
    │  │  │      │  │  │  │      2 J  J+ w% N( }6 a
    │  │  │      │  │  │  └─taskHistory2 s1 V- w$ E3 U6 p/ ?( w" a' A
    │  │  │      │  │  │          taskHistory.lock
7 _0 N& Z6 d1 f# g8 y9 c  J    │  │  │      │  │  │          + Q5 A# U1 p3 X" c
    │  │  │      │  │  └─buildOutputCleanup
! k! n/ n# Z0 B3 m5 D. e    │  │  │      │  │          built.bin6 [2 v, B% R1 l1 X
    │  │  │      │  │          cache.properties3 w: S4 i" C; _, }3 s# |, Q
    │  │  │      │  │          cache.properties.lock
# ~3 |: h6 a. |8 |    │  │  │      │  │         
7 F4 [9 f# k; p    │  │  │      │  └─.idea
4 a6 ?+ t; F; T- }    │  │  │      │          encodings.xml: i% w6 V: q% H% y- w6 K  n
    │  │  │      │          gradle.xml
! e% q! |  l, g( R9 }, }    │  │  │      │          misc.xml! o; {, O, o0 N/ F; W6 {! l& W. H
    │  │  │      │          workspace.xml
3 }# d! o/ T5 g* C# s    │  │  │      │          ! r8 h$ u; H( N- s3 X
    │  │  │      ├─GradleDemo04_task_lifecicle
4 q) k" ~; @% v: \* q6 Q" u+ Q    │  │  │      │  │  build.gradle.kts
) a2 J+ [: ^  Q" \# _/ K3 I1 k" b( a    │  │  │      │  │  settings.gradle$ I! q8 G% d4 V5 w" R2 m" |' t
    │  │  │      │  │  
- f1 E5 l- h" r+ Y8 n* W; Y    │  │  │      │  ├─.gradle+ V- |; S! q8 }' F4 X3 @1 @
    │  │  │      │  │  ├─4.1
1 g  T6 f2 E& w% w7 O( w" U+ D% w+ B- n    │  │  │      │  │  │  ├─fileChanges
6 S  P9 x0 y+ T0 {8 x1 x    │  │  │      │  │  │  │      last-build.bin
* S* Y! c# c3 D/ R    │  │  │      │  │  │  │      
7 B8 Z: h  ^- B    │  │  │      │  │  │  ├─fileHashes! S, z* X  _2 l& j
    │  │  │      │  │  │  │      fileHashes.bin/ W5 P. ]/ h# [7 t; N# I+ B
    │  │  │      │  │  │  │      fileHashes.lock
; f8 h, E  ^1 i0 W, |5 |* I    │  │  │      │  │  │  │      8 [! R, {$ ^7 ^6 b5 F! D
    │  │  │      │  │  │  └─taskHistory
% x3 i# r& J5 Y. w, ^- D    │  │  │      │  │  │          taskHistory.lock' W& N6 D+ N" F" M" J" q3 u4 B. K
    │  │  │      │  │  │         
. ~6 V! q2 I0 o4 W8 |+ G7 m7 s7 w    │  │  │      │  │  └─buildOutputCleanup
& s+ Z' |8 F% K3 R  i    │  │  │      │  │          built.bin2 T7 @3 E5 k$ m4 W' L
    │  │  │      │  │          cache.properties) b$ v/ {$ p7 n0 G3 N: A1 i+ p* v+ S6 o
    │  │  │      │  │          cache.properties.lock
! `' P% r; D6 p5 K( F    │  │  │      │  │         
7 j: O, X: M7 }3 e" K% v    │  │  │      │  └─.idea) l+ D1 t4 Y- X. l( b; K# b6 f
    │  │  │      │          encodings.xml1 `7 o, V3 T* H; O
    │  │  │      │          gradle.xml6 x' V5 P1 _  W& l9 N7 `9 W9 _+ F; |
    │  │  │      │          misc.xml. ~( O/ G" l: g' B( i% G1 K8 ?0 e
    │  │  │      │          workspace.xml
) j* k4 \2 d0 v% t9 J    │  │  │      │         
) ^$ u6 [  X; S# {' c/ j    │  │  │      ├─GradleDemo05_tasks0 j3 d, K- Q+ E  p
    │  │  │      │  │  build.gradle.kts
; t5 L5 \5 `2 w+ m% t) I    │  │  │      │  │  settings.gradle  r, p/ V+ [/ d0 ?
    │  │  │      │  │  
* C" x# d: h% q, @/ N# J    │  │  │      │  ├─.gradle8 i6 g  Q) E7 T! @8 p, z8 u& f
    │  │  │      │  │  ├─4.1$ g7 C) l  w* S; S$ g
    │  │  │      │  │  │  ├─fileChanges6 b# E- n5 X% R" N  |$ b
    │  │  │      │  │  │  │      last-build.bin
$ U! R/ w! W5 I% n3 N1 f2 J' \    │  │  │      │  │  │  │        e0 y; {% ?' L7 g) J/ p* u
    │  │  │      │  │  │  ├─fileHashes
! h6 H" k! _$ L+ G, A    │  │  │      │  │  │  │      fileHashes.bin
+ R) p4 N4 a: M; a( I+ Y    │  │  │      │  │  │  │      fileHashes.lock
) o, U2 r5 b6 C% \% @& w. W$ z1 h1 F    │  │  │      │  │  │  │      
8 F) E9 L# v% z# E    │  │  │      │  │  │  └─taskHistory0 A4 c) s0 ~7 P4 T& P
    │  │  │      │  │  │          taskHistory.lock* M* |/ E/ b4 E. L5 H7 p
    │  │  │      │  │  │          9 @# R  y# b1 d8 {1 Z4 g* h
    │  │  │      │  │  └─buildOutputCleanup: e9 F9 ~7 x" R3 v* h6 g& o0 _' x
    │  │  │      │  │          built.bin8 T$ P; P# e8 @' \
    │  │  │      │  │          cache.properties2 c& Q  `1 _5 f0 ^. x9 T$ g
    │  │  │      │  │          cache.properties.lock0 Z+ P6 ?  @$ D! i! D
    │  │  │      │  │         
( m& b. q0 [6 |! \# [, t    │  │  │      │  └─.idea8 `9 Q9 B: Y- z& j
    │  │  │      │          encodings.xml
3 h3 i" b- O1 o3 w( G7 b4 U    │  │  │      │          gradle.xml
% p0 Q; ?5 |. t- M- w: _: O    │  │  │      │          misc.xml
8 [, u& T- y; o3 ]  w: S+ P; _& c    │  │  │      │          workspace.xml  r4 V# O, L& _
    │  │  │      │         
" \& |" q$ v- T6 r( e& {    │  │  │      ├─GradleDemo07_properties' R" c8 J- ]# I/ L( G
    │  │  │      │  │  build.gradle.kts; S, s/ K4 T! U2 R' g3 n
    │  │  │      │  │  settings.gradle
% [4 x# Z0 e  ]' P0 }/ T; k& Q- t    │  │  │      │  │  / m* k/ T# S+ t( Y% \# S/ m/ N. \
    │  │  │      │  ├─.gradle
8 ^3 F, b. N: i    │  │  │      │  │  ├─4.1
, D0 a( m( T( v+ E( P    │  │  │      │  │  │  ├─fileChanges) W2 m$ r9 ^( g% |
    │  │  │      │  │  │  │      last-build.bin, V" |7 J" H) d# O0 g( S' y+ l
    │  │  │      │  │  │  │        @/ V$ f0 \6 Y" p$ R$ M6 L! O
    │  │  │      │  │  │  ├─fileHashes
7 n, H2 _  _7 ?4 i( t8 _/ F    │  │  │      │  │  │  │      fileHashes.bin9 ]0 e5 V, C5 T- w! J
    │  │  │      │  │  │  │      fileHashes.lock
1 p! d3 u4 M5 T    │  │  │      │  │  │  │      
+ q) V# Q8 i( ~& _$ J    │  │  │      │  │  │  └─taskHistory4 [& r* X& d9 k  q0 N9 I
    │  │  │      │  │  │          taskHistory.lock
, }$ E; b( E! `" ]" j5 p    │  │  │      │  │  │          : p* @. ^8 ~: L0 c/ d( M8 N
    │  │  │      │  │  └─buildOutputCleanup( }8 s* h& _. ?! P
    │  │  │      │  │          built.bin& t& c" D5 R( m7 u
    │  │  │      │  │          cache.properties# z1 \$ d0 i8 l. X' i( E  n& }
    │  │  │      │  │          cache.properties.lock* ?- I6 V  t/ `! k& z
    │  │  │      │  │         
- y6 l9 M5 k( I' Y! k    │  │  │      │  └─.idea0 D9 `* h8 q1 ]4 K% d, L8 a- E9 K
    │  │  │      │          .name
' i) P; x! O- d4 Y7 i1 v# t    │  │  │      │          encodings.xml8 z  D0 y- |2 A1 T( F% J
    │  │  │      │          gradle.xml% W" E6 I* x+ F
    │  │  │      │          misc.xml
; {+ J' c* B, [9 W0 I. i7 z- ?$ ^5 y    │  │  │      │          workspace.xml
" O- X9 T- n& e    │  │  │      │         
  r1 m, l. u: j! l    │  │  │      ├─GradleDemo08_update: a/ C& h8 c. [1 k: s  A* C, L+ M
    │  │  │      │  │  build.gradle.kts
, E/ l3 H7 i& @- S$ R    │  │  │      │  │  info.txt
+ ]& y; {7 C7 C1 Y" R    │  │  │      │  │  settings.gradle3 e9 Q5 x' L! E
    │  │  │      │  │  9 I  o4 L5 `9 ^$ L( z& Y' e7 \- N; L
    │  │  │      │  ├─.gradle
5 F4 G3 x) W7 K$ g, n    │  │  │      │  │  ├─4.12 f9 J0 E3 M0 y2 ^# h, e& h
    │  │  │      │  │  │  ├─fileChanges* {6 u! N- T$ ]: b1 g4 [4 N
    │  │  │      │  │  │  │      last-build.bin7 _1 z0 b+ b, H  L$ x4 X
    │  │  │      │  │  │  │      : ~, C/ N/ M$ _7 H
    │  │  │      │  │  │  ├─fileHashes
# U% w) q6 j9 H$ v0 U& W# U    │  │  │      │  │  │  │      fileHashes.bin$ [, j3 b: F5 L2 R( \
    │  │  │      │  │  │  │      fileHashes.lock/ q( l) q$ c% f$ Z4 E4 t3 y
    │  │  │      │  │  │  │      3 V- S+ _; B& m3 H) {9 j5 m* G
    │  │  │      │  │  │  └─taskHistory
: q( l0 p  _9 u! u    │  │  │      │  │  │          fileSnapshots.bin$ B4 ]: C5 F' E$ Z  _( H
    │  │  │      │  │  │          taskHistory.bin4 X6 m: A; K5 D  d( b3 G/ t$ c
    │  │  │      │  │  │          taskHistory.lock
3 m( T( _! B4 v3 f4 H, @    │  │  │      │  │  │          ) U. X% b! i8 F
    │  │  │      │  │  └─buildOutputCleanup% N2 ]* [+ P; M3 u- M2 p9 e
    │  │  │      │  │          built.bin7 I/ i) m: T5 b4 I
    │  │  │      │  │          cache.properties
6 Z$ t0 N7 D/ E, |  z    │  │  │      │  │          cache.properties.lock4 O2 H+ o* }) p
    │  │  │      │  │          # j9 E; w% a5 n8 q& ^; X6 ~
    │  │  │      │  ├─.idea* P0 v2 g% Z% x7 C, F3 x- |
    │  │  │      │  │      encodings.xml" _8 M# |+ n, v: m4 P  ~
    │  │  │      │  │      gradle.xml
, k3 A8 D& W0 l/ F  ~  y    │  │  │      │  │      misc.xml
, _* x$ ?" l5 m( ^+ _; Z0 c* \    │  │  │      │  │      workspace.xml% Y. l4 V: I$ k8 e5 k* A
    │  │  │      │  │      / D% ^% H3 e! |
    │  │  │      │  └─src
. @3 J9 A. b) K1 W* d: g    │  │  │      │      └─main3 ?* a3 v- o2 F. j# y
    │  │  │      │          └─java
7 E3 I+ V8 _7 ~5 y. k  m    │  │  │      │                  Girl.java( R- ]# R3 E8 K+ a
    │  │  │      │                  Main.java* X+ e- k+ d$ X: }+ t8 o
    │  │  │      │                  Test.java
5 d! B! ]1 N8 a4 E    │  │  │      │                  
* [, P# P# ]! c: V! D5 T* ?    │  │  │      ├─GradleDemo09_plugins: |, l: Q+ J( ]5 K8 t2 ~' h" `% K
    │  │  │      │  │  build.gradle.kts4 C' r4 r$ [: _
    │  │  │      │  │  settings.gradle+ v2 p/ }& g/ m
    │  │  │      │  │  ! ^1 l3 @- G% r$ A+ @' A
    │  │  │      │  ├─.gradle
- J, @3 w, W8 m1 r: s2 M    │  │  │      │  │  ├─4.1. x+ {6 G9 z! ?& B/ c
    │  │  │      │  │  │  ├─fileChanges5 u, Z0 v; b+ o6 v
    │  │  │      │  │  │  │      last-build.bin
3 {4 L7 M% x) V; W+ m, B1 L    │  │  │      │  │  │  │      & U' ]; n$ h; j& }) L$ e
    │  │  │      │  │  │  └─fileHashes
9 y7 G" I8 Q5 f# S! w    │  │  │      │  │  │          fileHashes.bin
4 n- [9 O4 T; o) _! B    │  │  │      │  │  │          fileHashes.lock7 N' ]; T& h& d1 _- v
    │  │  │      │  │  │          + \8 q0 V4 u' e2 c! f
    │  │  │      │  │  └─buildOutputCleanup" F! u% {9 F# x
    │  │  │      │  │          built.bin3 ]" ]4 b  o( v( D* c2 |" r
    │  │  │      │  │          cache.properties
5 V. h1 u) g1 {  E  C7 U    │  │  │      │  │          cache.properties.lock4 y7 ]2 t/ t7 P' r" \+ C+ L3 {
    │  │  │      │  │          . ^: U4 q2 }  U3 U) j
    │  │  │      │  ├─.idea  H8 A( j7 C8 N3 [/ O
    │  │  │      │  │  │  encodings.xml, N* i. k2 X6 }
    │  │  │      │  │  │  gradle.xml6 }! _, o( r8 D% h8 `
    │  │  │      │  │  │  misc.xml
# G, ]0 G, C7 ]    │  │  │      │  │  │  workspace.xml8 `/ p- r( w: ^% r; W+ B/ P
    │  │  │      │  │  │  
( N5 K" a: F1 r4 z6 H8 H    │  │  │      │  │  └─modules, L) N( W& S! m; e
    │  │  │      │  │          GradleDemo09_plugins_main.iml! B" m: ?" E. |9 s/ ~' S
    │  │  │      │  │          GradleDemo09_plugins_test.iml8 l# @# A! U7 T3 ]9 m% J7 ^( p
    │  │  │      │  │         
. R/ z- m9 n, V3 B    │  │  │      │  └─build( q1 [: K4 `# H) X+ f9 w+ T
    │  │  │      │      ├─kotlin-build$ j! m2 h8 Z+ s) W1 M' D" o% M: D
    │  │  │      │      │      version.txt
! A% L) q2 q, K: p1 x    │  │  │      │      │      1 M9 D! p. l8 x! [5 S
    │  │  │      │      └─tmp
, S# Q: j8 Y, n3 _4 B, Y  A& a1 R    │  │  │      │          └─war% n  f. j& j. k, K$ [
    │  │  │      │                  MANIFEST.MF
, {1 d. m0 G/ I; h  Z1 Y& V2 `    │  │  │      │                  8 [. `  v3 ]. I5 J
    │  │  │      ├─GradleDemo10_TDD; c7 M/ a% r6 q# O3 x# k. ]
    │  │  │      │  │  build.gradle.kts$ }7 j7 f, |& o0 o7 n
    │  │  │      │  │  settings.gradle1 v: u4 A8 l  ~2 @
    │  │  │      │  │  . b* N% _5 Z, O; T* ~+ r
    │  │  │      │  ├─.gradle
) o/ T% @% m/ f5 [    │  │  │      │  │  ├─4.1
7 Q1 |4 ^) A) Z9 r! h2 z# q/ O) `    │  │  │      │  │  │  ├─fileChanges5 h. g3 b" y/ k+ d
    │  │  │      │  │  │  │      last-build.bin
8 k: J# O& ]' [) `+ i' j) g    │  │  │      │  │  │  │      
& K1 W4 a' H. k9 S: L5 e- c: a    │  │  │      │  │  │  ├─fileContent
, b1 K2 I+ G* k9 I    │  │  │      │  │  │  │      fileContent.lock
3 J: R7 e. v4 h4 n- `! c" U    │  │  │      │  │  │  │      
+ \9 c* q! G$ W$ u2 O    │  │  │      │  │  │  ├─fileHashes
; d" R& s; G3 z8 [3 ?    │  │  │      │  │  │  │      fileHashes.bin& a; a6 f# N* |
    │  │  │      │  │  │  │      fileHashes.lock
! D4 Z3 b2 ^% O2 t' U2 q    │  │  │      │  │  │  │      resourceHashesCache.bin
  ~. B6 x; a! }% P7 g2 ]    │  │  │      │  │  │  │      
! q& }/ ]1 X! F/ b) n    │  │  │      │  │  │  └─taskHistory
! T9 Y, X1 `- ~; J/ K7 j    │  │  │      │  │  │          fileSnapshots.bin
, I9 Y7 M6 H; J; i" c    │  │  │      │  │  │          taskHistory.bin. D0 p8 a0 U! h' P9 J8 O
    │  │  │      │  │  │          taskHistory.lock% h( n  |, ^- W7 c1 t* N
    │  │  │      │  │  │         
$ _+ F+ E7 d! M" q7 w/ N9 P    │  │  │      │  │  └─buildOutputCleanup" V$ P- v1 Q  J# i$ H9 @0 W( n! x$ x
    │  │  │      │  │          built.bin9 A0 W  B. h9 U6 E1 H  X8 v: p) b
    │  │  │      │  │          cache.properties
9 {4 f; v8 a: l7 w( @6 v( p    │  │  │      │  │          cache.properties.lock6 Q+ J, w" t9 ?/ T) V! A! w' D" D; z
    │  │  │      │  │         
; M6 q$ V. i6 I* l! {" Z' [    │  │  │      │  ├─.idea  l3 q, E/ m# f+ V: f- A% x& o$ X
    │  │  │      │  │  │  encodings.xml; t2 A$ N7 H$ q; I: _
    │  │  │      │  │  │  gradle.xml
8 |. q( o% w. }: q2 w    │  │  │      │  │  │  misc.xml( i3 z. n6 O2 N& ]5 K' P  V
    │  │  │      │  │  │  workspace.xml
8 g6 M: D7 k$ v% n) C3 Z+ X! ]    │  │  │      │  │  │    B; |' [9 U' y: w' r
    │  │  │      │  │  └─modules
5 Y8 g: _1 n9 X+ c+ B- i8 d4 a7 O4 q    │  │  │      │  │          GradleDemo10_TDD_main.iml
; l' D$ k2 |( S9 s* J, v% W    │  │  │      │  │          GradleDemo10_TDD_test.iml
$ Z, f. O/ W0 h& ~- J0 E8 g5 Z: b    │  │  │      │  │         
5 `& y' Y& m$ G8 Q7 r- W4 X% a( |    │  │  │      │  ├─build
" T2 I% C: R4 H; n  ?    │  │  │      │  │  ├─classes: }( o4 F* S, Z# k3 Q: V
    │  │  │      │  │  │  └─java! K. L& x- ^! V
    │  │  │      │  │  │      └─main8 R% j" N  e5 f( l6 L  R2 u2 a
    │  │  │      │  │  │          │  Girl.class% M/ n7 w' i) }. q
    │  │  │      │  │  │          │  MainKt.class
; p4 P- c; n+ j9 x% V    │  │  │      │  │  │          │  
1 N& }9 U, V% n* s" V1 i    │  │  │      │  │  │          └─META-INF/ r- a" b! \; B6 K( z
    │  │  │      │  │  │                  GradleDemo10_TDD_main.kotlin_module
% J5 h5 a% Q: j! K0 F8 o    │  │  │      │  │  │                  3 }" x! m, V/ P: m
    │  │  │      │  │  ├─distributions! A) T) C( L4 W/ U  M
    │  │  │      │  │  │      GradleDemo10_TDD.zip
+ Z! a# V; D* B: r4 \2 t. Q    │  │  │      │  │  │      
7 G% \" ^  ?. R' q$ |    │  │  │      │  │  ├─kotlin
; r2 U& J( a) B3 ]    │  │  │      │  │  │  └─compileKotlin% {. n8 U4 X/ ]( @: l! s
    │  │  │      │  │  │      │  data-container-format-version.txt
; F% c- L" ^; X# Y/ @    │  │  │      │  │  │      │  experimental-format-version.txt
& ^0 ^- S& s& K7 R+ L- ?    │  │  │      │  │  │      │  format-version.txt. ?3 ^" ]$ y! j3 s
    │  │  │      │  │  │      │  gradle-format-version.txt
" H# O! F$ N: t8 W; ?4 e    │  │  │      │  │  │      │  last-build.bin
3 ]+ w2 h: G3 w    │  │  │      │  │  │      │  $ |9 A- |  v2 x  s
    │  │  │      │  │  │      ├─caches5 ]- Y8 L( J! F3 N! @
    │  │  │      │  │  │      │  ├─increCache.GradleDemo10_TDD_main
$ |4 o6 ?: \. ]! R    │  │  │      │  │  │      │  │  └─kotlin0 K1 u" w  _3 t5 x& x/ K; A
    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab
2 d2 a( m" K5 m+ W2 r  k; a! r; w    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab.keystream$ i! o6 |7 ^6 n
    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab.keystream.len+ W0 p" `( o2 T' o; Y: c
    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab.len) z$ E. ]' ~) J- _& z9 e- H( X8 b6 F3 Z
    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab.values.at/ N& Z$ ]* p. V8 A1 w0 G
    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab_i. l4 Z: N8 {/ N, N. K
    │  │  │      │  │  │      │  │          class-fq-name-to-source.tab_i.len! |+ x5 V- M4 Q* P
    │  │  │      │  │  │      │  │          internal-name-to-source.tab
0 x. e+ W/ K5 _9 q    │  │  │      │  │  │      │  │          internal-name-to-source.tab.keystream0 s2 H7 e! n4 w( K8 k- t8 E* u2 g# k- c
    │  │  │      │  │  │      │  │          internal-name-to-source.tab.keystream.len7 U* |7 ]" ]3 \, p
    │  │  │      │  │  │      │  │          internal-name-to-source.tab.len8 t) i+ w6 v1 Y
    │  │  │      │  │  │      │  │          internal-name-to-source.tab.values.at
% H* I  ^( a$ s3 Q4 ~4 P/ M- g. ^+ p    │  │  │      │  │  │      │  │          internal-name-to-source.tab_i% I& y, `/ X# A* Z* k/ V" c2 r* P
    │  │  │      │  │  │      │  │          internal-name-to-source.tab_i.len
4 k9 ?5 U0 P) i" r" |    │  │  │      │  │  │      │  │          package-parts.tab
- r5 S+ \- O) ]  ^9 t$ |    │  │  │      │  │  │      │  │          package-parts.tab.keystream
5 }2 ]8 N& x: Y    │  │  │      │  │  │      │  │          package-parts.tab.keystream.len
; u! z: e" ?' ]( O# h    │  │  │      │  │  │      │  │          package-parts.tab.len
* L( A. u- H6 Y3 O    │  │  │      │  │  │      │  │          package-parts.tab.values.at
% S! a7 Y" V! Y: f$ }5 Q' y% q    │  │  │      │  │  │      │  │          package-parts.tab_i
( I" l6 O* U# J6 j+ y+ [3 x    │  │  │      │  │  │      │  │          package-parts.tab_i.len
4 ]+ k1 Z- _& ?2 |# x' r0 V    │  │  │      │  │  │      │  │          proto.tab
% ]( R- U' Z2 U* w4 I9 X5 }    │  │  │      │  │  │      │  │          proto.tab.keystream+ u" x& e# y1 _& E4 ]
    │  │  │      │  │  │      │  │          proto.tab.keystream.len
- U$ v5 C- d4 b) I2 k    │  │  │      │  │  │      │  │          proto.tab.len8 `& v) G4 @) S' O! b/ r
    │  │  │      │  │  │      │  │          proto.tab.values.at1 v# z8 D9 ~+ C4 t9 H9 e3 I! F
    │  │  │      │  │  │      │  │          proto.tab_i
+ E& H1 _: K9 t. y6 e$ _0 s! q    │  │  │      │  │  │      │  │          proto.tab_i.len
! t  A7 Y4 X& k* q5 t% N/ m    │  │  │      │  │  │      │  │          source-to-classes.tab
: t. h3 ^  x) k9 l9 s! {/ Z. q    │  │  │      │  │  │      │  │          source-to-classes.tab.keystream
  H* ^, l4 c# D0 p    │  │  │      │  │  │      │  │          source-to-classes.tab.keystream.len$ \4 C0 a: O' ], q5 t; H
    │  │  │      │  │  │      │  │          source-to-classes.tab.len
& q% o+ y# D$ C' c0 @6 x    │  │  │      │  │  │      │  │          source-to-classes.tab.values.at2 o# i! k  b/ {0 ^) F5 r) S  B
    │  │  │      │  │  │      │  │          source-to-classes.tab_i9 O* r' }4 a: R5 `! q7 N
    │  │  │      │  │  │      │  │          source-to-classes.tab_i.len
* B. I  Y. ^* w- l) l    │  │  │      │  │  │      │  │          source-to-output.tab; K! r6 T. P* O$ z
    │  │  │      │  │  │      │  │          source-to-output.tab.keystream  r" A- l: X2 u. U
    │  │  │      │  │  │      │  │          source-to-output.tab.keystream.len
$ C0 f: k& w; S* C0 _, j    │  │  │      │  │  │      │  │          source-to-output.tab.len* {" C0 K; {; W7 g
    │  │  │      │  │  │      │  │          source-to-output.tab.values.at
0 s- Q6 B  L# ^6 L8 [    │  │  │      │  │  │      │  │          source-to-output.tab_i2 i; e8 ?1 I4 S! W  h
    │  │  │      │  │  │      │  │          source-to-output.tab_i.len* x% S: n2 O8 @" `( _; P2 c  c
    │  │  │      │  │  │      │  │         
) L& K! t" H& v$ z    │  │  │      │  │  │      │  └─lookups* P% p* o" G9 F( y% I/ s' |
    │  │  │      │  │  │      │          counters.tab
8 ~' z; n* L8 ^# _    │  │  │      │  │  │      │          file-to-id.tab- V9 X0 e  R' w' i5 _7 a9 u' H/ ]! M
    │  │  │      │  │  │      │          file-to-id.tab.keystream. A1 b& Z. Q  `$ h, {
    │  │  │      │  │  │      │          file-to-id.tab.keystream.len) M4 J0 a4 G6 u
    │  │  │      │  │  │      │          file-to-id.tab.len* W  F" |" k& F- s/ M2 C; W/ Y2 }
    │  │  │      │  │  │      │          file-to-id.tab.values.at
$ d* [  W  G* s) o    │  │  │      │  │  │      │          file-to-id.tab_i
# @* T- ]2 F: Z    │  │  │      │  │  │      │          file-to-id.tab_i.len' u8 G  x; P4 n/ ^! ]
    │  │  │      │  │  │      │          id-to-file.tab
7 _0 S3 M* i5 O+ `1 R    │  │  │      │  │  │      │          id-to-file.tab.keystream9 V& y1 s3 f1 {; {9 Z) b
    │  │  │      │  │  │      │          id-to-file.tab.keystream.len
0 a8 u6 Y4 X+ D% P5 {. n, Y  K4 {    │  │  │      │  │  │      │          id-to-file.tab.len
1 d) Y' C0 q. {) \3 `$ h    │  │  │      │  │  │      │          id-to-file.tab.values.at) a% d7 n; r9 \: l2 b
    │  │  │      │  │  │      │          id-to-file.tab_i$ F" t& s* |! b5 l  G8 U* |: t
    │  │  │      │  │  │      │          id-to-file.tab_i.len6 f8 f4 z. {4 }7 I
    │  │  │      │  │  │      │          lookups.tab3 f) O1 c2 f+ w
    │  │  │      │  │  │      │          lookups.tab.keystream3 O. o+ U; C9 s. `5 e' O/ R
    │  │  │      │  │  │      │          lookups.tab.keystream.len$ ?4 v/ u) ^# o) u
    │  │  │      │  │  │      │          lookups.tab.len
! U  G: b! P3 ?3 _% t( C& A! K6 c; J    │  │  │      │  │  │      │          lookups.tab.values.at9 G- d  ?7 m3 C$ q& Z1 l* h5 S8 K
    │  │  │      │  │  │      │          lookups.tab_i8 R% y- Z3 K4 ?/ `. s# O
    │  │  │      │  │  │      │          lookups.tab_i.len
3 ]5 S5 }$ b$ C6 z4 U( V, C5 ?; u    │  │  │      │  │  │      │         
/ N" B% K% D, R8 s0 U) I9 I    │  │  │      │  │  │      └─sync. Y* K. N  B4 H
    │  │  │      │  │  │              kotlin-files-in-java-timestamps.bin( M" t9 o7 y0 j: A
    │  │  │      │  │  │              
3 t2 ], ?& N# m% N    │  │  │      │  │  ├─kotlin-build' }4 M" @: |' q4 ~5 o
    │  │  │      │  │  │  └─caches
- ^6 j8 N7 q0 r. o4 @% H    │  │  │      │  │  │          version.txt
: ~. S+ d) q( e6 ^& R* m5 i, u    │  │  │      │  │  │            J# y- a  _8 G7 k
    │  │  │      │  │  ├─kotlin-classes' s  @+ I( K" Z" I
    │  │  │      │  │  │  └─main
5 ], T8 u! o& k* |5 B/ ~+ d    │  │  │      │  │  │      │  Girl.class5 ^9 h& G9 o6 L4 H! g* g0 z
    │  │  │      │  │  │      │  MainKt.class
1 `9 e5 y+ i$ s$ ^    │  │  │      │  │  │      │  * H+ C" ^! Z( o  z  b6 }
    │  │  │      │  │  │      └─META-INF& ~+ J! ^& y7 P/ o$ x
    │  │  │      │  │  │              GradleDemo10_TDD_main.kotlin_module/ A- o' Q4 ]  g; k# A
    │  │  │      │  │  │              
7 y) W8 M4 y; a  I" j7 G    │  │  │      │  │  ├─libs- Z$ K- F% p/ u
    │  │  │      │  │  │      GradleDemo10_TDD.jar8 o5 q3 x; F- [
    │  │  │      │  │  │      
$ c0 u* I) x+ r    │  │  │      │  │  ├─scripts7 i3 h7 W9 ]+ N6 ~2 @% S
    │  │  │      │  │  │      GradleDemo10_TDD
. Z  X) r& u1 r% `* @6 K$ j) o    │  │  │      │  │  │      GradleDemo10_TDD.bat7 m) j0 a2 T' J5 ]; s. _2 v
    │  │  │      │  │  │      ( e6 V2 I  X+ ]6 p( x
    │  │  │      │  │  └─tmp6 ], s. j8 r, s0 D2 z
    │  │  │      │  │      └─jar
6 ^" \$ b9 E3 _$ w    │  │  │      │  │              MANIFEST.MF
. Y5 H' P( V; x. M) W& n    │  │  │      │  │              ( B' h! e5 k4 a' s) a1 A
    │  │  │      │  ├─out
% N  @- f; ]9 Q* ^    │  │  │      │  │  ├─production& M  u7 Z. X4 M
    │  │  │      │  │  │  └─classes# Y3 k, B& T5 }
    │  │  │      │  │  │      │  Girl.class0 o9 q" l7 ^/ m) n7 r
    │  │  │      │  │  │      │  MainKt.class
# b7 E$ N9 P1 I5 g    │  │  │      │  │  │      │  5 b! r- Q" G2 `; t$ L# t  I
    │  │  │      │  │  │      └─META-INF6 m, A1 o/ A( n8 h5 x
    │  │  │      │  │  │              GradleDemo10_TDD_main.kotlin_module
  m9 L% a% ^( }, q$ Z    │  │  │      │  │  │              - `7 Q# N$ v! L$ s
    │  │  │      │  │  └─test- A! ]8 U& Q+ v' X+ \. J/ X
    │  │  │      │  │      └─classes$ c6 k2 @" t# Z7 d
    │  │  │      │  │              TestGirl.class) ?. b# j. u. W  P! x
    │  │  │      │  │              
, U- g3 a8 ?2 T! w" C/ F4 c5 M    │  │  │      │  └─src
: o: a( F& h+ ?" O; }2 t    │  │  │      │      ├─main& T% A9 q- |+ X
    │  │  │      │      │  └─kotlin2 \) Y1 `& B6 F- c
    │  │  │      │      │          Girl.kt8 @+ d5 z6 X( j
    │  │  │      │      │          Main.kt. ~& ^9 L  r! A% X+ ^9 ~
    │  │  │      │      │          + K7 n/ E9 w9 e6 U# B0 b% K
    │  │  │      │      └─test/ @9 M6 G* z1 @; ?1 U7 C& i) X
    │  │  │      │          └─kotlin
; x0 k! n( e) \# E- g5 n    │  │  │      │                  TestGirl.kt
/ @+ u( c2 [+ v0 K    │  │  │      │                  4 x% ~0 V* o3 n3 X, W+ N- ~
    │  │  │      ├─GradleDemo11_task_exptension
3 F9 L8 y3 t4 M! @3 y/ `( T    │  │  │      │  │  build.gradle.kts
6 O& Z" N; \+ x  v# {2 ~* N    │  │  │      │  │  settings.gradle+ G' K$ Q2 d/ y- N" n
    │  │  │      │  │  
$ ]% a) A. E2 z6 k5 \  D: ^    │  │  │      │  ├─.gradle
- G3 D7 }1 L: r  ?) k    │  │  │      │  │  ├─4.1
  u; |0 o5 ]2 J3 ^! A( ]( |3 k    │  │  │      │  │  │  ├─fileChanges+ d2 m  I5 M3 T- a6 o
    │  │  │      │  │  │  │      last-build.bin0 M( K2 w8 [* J  M* S
    │  │  │      │  │  │  │      
4 S; x* M7 I+ G    │  │  │      │  │  │  ├─fileHashes
. T1 O: _) U0 B4 I, C- A/ c    │  │  │      │  │  │  │      fileHashes.bin
0 @# j5 B! S' G( s, ?0 ]    │  │  │      │  │  │  │      fileHashes.lock
8 o+ f% `. I0 ]- O7 R2 l    │  │  │      │  │  │  │      % j( S0 V! i# w9 N
    │  │  │      │  │  │  └─taskHistory: e: \' k$ B3 o, d: u
    │  │  │      │  │  │          fileSnapshots.bin
8 ^7 O  J" _1 m- r0 }* M: _; H    │  │  │      │  │  │          taskHistory.bin
# G4 k9 O* `8 Q    │  │  │      │  │  │          taskHistory.lock3 _. ?. g' A' m& B8 \! u
    │  │  │      │  │  │         
- ~  x7 I4 D' F, n8 ~& d) Q    │  │  │      │  │  └─buildOutputCleanup; K/ o- g( k- c+ o) i* t: f0 T
    │  │  │      │  │          built.bin* i- a3 S/ {" t
    │  │  │      │  │          cache.properties
! |; |. R2 ~% z$ S, q    │  │  │      │  │          cache.properties.lock
# X( O$ h$ v1 Z: W    │  │  │      │  │         
5 y$ t7 x# h7 j, e    │  │  │      │  ├─.idea
2 Z$ D1 N  D; z! q    │  │  │      │  │      encodings.xml2 i" D. y7 ?2 d" m: |0 C
    │  │  │      │  │      gradle.xml
9 J. K  J  e% o* D' A8 C    │  │  │      │  │      misc.xml
7 |  x- q" v/ r' I$ g( V: I    │  │  │      │  │      workspace.xml
( Q1 E. P* D5 N, c  n' V7 G    │  │  │      │  │      
' x/ {. ?& W( a9 V2 y    │  │  │      │  └─src+ i$ V' f# z9 ?' f+ g
    │  │  │      │      └─main2 k$ \' k: `* @# o9 E; q
    │  │  │      │          └─java) o7 M6 t: H% _( X
    │  │  │      │                  Haha.java
' Y) t  C4 h# e    │  │  │      │                  Main.java! K# s# o# @1 `- _/ A
    │  │  │      │                  Test.java; q# z8 F3 q- m/ ~" n0 k6 a+ E
    │  │  │      │                  + Q0 V5 s+ t2 u& f0 y% P/ V+ C
    │  │  │      ├─GradleDemo12_mul_module
' ?9 M( n- e, s    │  │  │      │  │  build.gradle.kts& X7 k  J  ?& n4 ~% n. E5 p+ ?
    │  │  │      │  │  settings.gradle
! Y; S" k4 I* j$ e/ [  T* n    │  │  │      │  │  
5 M5 T5 u# T" T# ^    │  │  │      │  ├─.gradle0 f! F$ j: d: N0 A) v5 `
    │  │  │      │  │  ├─4.1
! M- p8 h3 D7 n. O    │  │  │      │  │  │  ├─fileChanges
0 ]( H+ J: k# I: ?5 F    │  │  │      │  │  │  │      last-build.bin7 s. y! t7 m- c* G; `
    │  │  │      │  │  │  │      ( W# F1 L6 U! @+ f: \  z
    │  │  │      │  │  │  └─fileHashes
4 }; b6 d9 K& f9 _% l    │  │  │      │  │  │          fileHashes.bin3 `0 \/ O9 ?$ U  S4 U1 N
    │  │  │      │  │  │          fileHashes.lock' [' `2 K# M8 ~% U: b
    │  │  │      │  │  │         
1 e3 z# g: A/ y! @$ D1 _    │  │  │      │  │  └─buildOutputCleanup
$ |! m& w/ y- m: M4 I    │  │  │      │  │          built.bin
6 o1 \0 o  p9 @% w    │  │  │      │  │          cache.properties7 A6 W! j# v) J& |; M
    │  │  │      │  │          cache.properties.lock% Z9 Y3 d" T8 u$ v+ j! B" H
    │  │  │      │  │         
; ^# O# @0 O/ E  Z    │  │  │      │  ├─.idea
; I+ }7 x: E4 S0 Z- G/ P    │  │  │      │  │  │  encodings.xml
) g! v6 E4 s9 j& f6 H- x+ O) e    │  │  │      │  │  │  gradle.xml
" m3 X" i/ F3 P    │  │  │      │  │  │  misc.xml$ w# z$ h, i9 {, L: w3 ?1 O# F
    │  │  │      │  │  │  workspace.xml$ s9 f9 u& J/ D" T; U% A" E, C
    │  │  │      │  │  │  
3 r. Q" t" p9 t# Y    │  │  │      │  │  └─modules: y3 m1 T! A* d# g0 M
    │  │  │      │  │      │  GradleDemo12_mul_module_main.iml
0 A  C4 E' X4 @9 b    │  │  │      │  │      │  GradleDemo12_mul_module_test.iml7 N& d8 C$ J" p" L+ R
    │  │  │      │  │      │  / M' Z$ l' x3 I1 |) E
    │  │  │      │  │      ├─App
, S0 `$ z+ R: m    │  │  │      │  │      │      App_main.iml, i1 ~: W2 r6 b  t4 t  `6 ^- Q/ S
    │  │  │      │  │      │      App_test.iml% f: S9 [+ H& p- ]& n! f) ~! y
    │  │  │      │  │      │      : X; d+ a* }9 s
    │  │  │      │  │      └─Core
) p  }7 P" ?8 L5 E& D    │  │  │      │  │              Core_main.iml2 X/ c3 ~  A& w5 {5 i
    │  │  │      │  │              Core_test.iml. z7 n5 T* n# l+ t& Q. o5 ~
    │  │  │      │  │              * k5 Q3 C8 L6 C- y- S
    │  │  │      │  ├─App* w$ w! a8 [+ H1 U# k$ D
    │  │  │      │  │  │  build.gradle.kts- `( g5 i; \- Y7 `
    │  │  │      │  │  │  + B- G. {$ o* f' Q# L. s
    │  │  │      │  │  ├─out
: D# @: ]1 G' k# t    │  │  │      │  │  │  └─production8 R8 h. ^3 r7 }8 Z. v( m
    │  │  │      │  │  │      └─classes
( W; y$ I7 J. l! p( e/ P* o0 Q    │  │  │      │  │  │          │  MainKt.class& u2 n# X& H# E1 M
    │  │  │      │  │  │          │  & s$ R' J$ \# X
    │  │  │      │  │  │          └─META-INF1 P- i1 s: D  p' l1 r, Q$ ?2 L- m
    │  │  │      │  │  │                  App_main.kotlin_module* W1 P$ i" {% h1 e, Y9 V( u
    │  │  │      │  │  │                  7 q9 P' y. s5 R1 S
    │  │  │      │  │  └─src5 D; L, u* a; j& G6 A" @: Q
    │  │  │      │  │      └─main+ M8 r$ N  G9 l, V: F4 S0 G0 q. I
    │  │  │      │  │          └─kotlin
" m+ J( l6 h3 V* I    │  │  │      │  │                  Main.kt; C+ h% L/ d2 f' k' y
    │  │  │      │  │                  / \2 @% I  v/ H5 B# T
    │  │  │      │  ├─build* j6 {0 n3 a' r8 }* N
    │  │  │      │  │  └─kotlin-build- R' m5 j9 O5 Q9 c. H+ C2 ?
    │  │  │      │  │          version.txt
4 ]0 {: c, A1 h/ i, d    │  │  │      │  │          6 @  @, f! o+ {: Q0 O, H  Y' V
    │  │  │      │  └─Core& e( _  x* ^4 p9 n: E7 X2 n2 t
    │  │  │      │      │  build.gradle.kts3 O8 Z7 `8 X8 w& Z
    │  │  │      │      │  3 }# h! T; E3 g* j
    │  │  │      │      ├─out' ~4 g6 a, ~* P2 W' D& K8 |
    │  │  │      │      │  ├─production
6 b8 C* p& V$ N* f: ]' ~& c( t    │  │  │      │      │  │  └─classes
7 j; n3 u5 A7 }4 y" G% B    │  │  │      │      │  │          NetUtils.class# K& V# J: o4 C: s  {
    │  │  │      │      │  │          0 v' J; ^7 r1 }! f  |* o2 _
    │  │  │      │      │  └─test3 K) ^5 @/ b) K/ U* Y
    │  │  │      │      │      └─classes
5 _- b0 P( U7 [9 F. a    │  │  │      │      │              TestNetUtils.class" m9 C" i  V* ~4 u
    │  │  │      │      │              8 W* [5 g, F4 B. y0 Y/ O6 M8 ]
    │  │  │      │      └─src
8 ?( h" G4 g; |5 j! _    │  │  │      │          ├─main
4 D1 M4 v6 U% U( t4 d4 j    │  │  │      │          │  └─kotlin1 s) l; c2 G1 o$ {2 f: L) ^' Z) W
    │  │  │      │          │          NetUtils.kt
4 M4 Y/ a5 h/ |2 m! F    │  │  │      │          │          " a; ^7 `" g0 `" X! h& G
    │  │  │      │          └─test, `; ]4 C$ ?# H# K4 f
    │  │  │      │              └─kotlin
4 ~' t! [7 f9 E* {! B: U    │  │  │      │                      TestNetUtils.kt
9 S2 P% z0 a  t, ]8 e    │  │  │      │                      : V' {" G4 j6 n+ j7 O7 s9 \4 ]
    │  │  │      ├─GradleDemo_conflict_depdence
5 d$ y9 V5 H: V. T7 y. n    │  │  │      │  │  1.jpg8 u5 D6 l* R& D3 ?+ C  W
    │  │  │      │  │  2.jpg
* q7 o: m0 {3 e5 h    │  │  │      │  │  3.jpg! A! T: \) b; W
    │  │  │      │  │  4.jpg8 a# @- F5 b$ O/ ^; {  V5 ?# F1 b
    │  │  │      │  │  5.jpg( B3 O5 b1 E' }9 G% o5 S5 D. W
    │  │  │      │  │  build.gradle.kts
) J) }$ n7 Y, Y+ [0 `4 p9 M) u    │  │  │      │  │  settings.gradle& ]/ ]. z8 K; i" ]; L* N& E3 w2 t
    │  │  │      │  │  
% z# J6 N6 P! K/ X. |5 T) g    │  │  │      │  ├─.gradle; n5 @8 {4 r1 r
    │  │  │      │  │  ├─4.1
9 f# D- Y( y9 q" [& M    │  │  │      │  │  │  ├─fileChanges
2 b8 T) W/ J3 K3 ^# i& d    │  │  │      │  │  │  │      last-build.bin( L$ w3 Z4 {9 t+ S7 D; w8 |
    │  │  │      │  │  │  │      
  {; U4 x$ e' s9 H5 h    │  │  │      │  │  │  └─fileHashes+ v1 F! }  n! {5 U9 C, V
    │  │  │      │  │  │          fileHashes.bin
1 U6 Q% X' u( V9 y    │  │  │      │  │  │          fileHashes.lock
: I0 P0 [# W7 M7 U2 ^$ l4 d    │  │  │      │  │  │          3 J- d1 O8 B1 E% \
    │  │  │      │  │  └─buildOutputCleanup
( h+ Q: q6 H: m5 i/ W$ \    │  │  │      │  │          built.bin  p* g8 n) T( V# G1 W
    │  │  │      │  │          cache.properties
1 g0 m* R9 Y& L7 I! o, r7 P    │  │  │      │  │          cache.properties.lock7 J" r% Z8 t$ L  ^
    │  │  │      │  │         
; i0 H# O) j2 j8 p' G    │  │  │      │  ├─.idea
0 z0 y  W6 V4 d5 j2 i' ?    │  │  │      │  │  │  .name: g6 J/ C) z8 @- b- b8 Z2 l( x, E
    │  │  │      │  │  │  encodings.xml7 n) }$ S! j0 Y: Y' f. N6 U
    │  │  │      │  │  │  gradle.xml1 N3 j# u' m+ E6 o! l+ g; n
    │  │  │      │  │  │  misc.xml
6 A# `; V3 ~, I9 D* @    │  │  │      │  │  │  workspace.xml* z+ A! e& ]6 e% o! B% \' M
    │  │  │      │  │  │  ' G8 h' `7 [; s- I" G
    │  │  │      │  │  └─modules5 [/ ^8 w; _) i# m7 x& G7 q
    │  │  │      │  │          GradleDemo_GirlDownloader_main.iml
, \4 K; C% R& W$ D+ A    │  │  │      │  │          GradleDemo_GirlDownloader_test.iml3 @% O% g' T3 m, K" [
    │  │  │      │  │         
& i1 ~5 m2 _! u1 D  k1 r    │  │  │      │  ├─build4 s! _( k4 \* H
    │  │  │      │  │  └─kotlin-build) D& q8 |9 S" P  g5 d3 V
    │  │  │      │  │      └─caches6 a8 h( U- _- c- o
    │  │  │      │  │              version.txt
# Q3 l& L( j- J8 Y" |: n0 |! c    │  │  │      │  │              
2 |* o6 j% V* p! w    │  │  │      │  ├─out
( v# A- t. K' C! z    │  │  │      │  │  └─production
5 i( B6 D: c9 G7 G; J1 b# f    │  │  │      │  │      └─classes7 i: N4 ]; E; \' i! ~( P9 x' Z7 h
    │  │  │      │  │          │  GirlDownloaderKt.class
: H/ H8 h2 C! X) M! I! N* `    │  │  │      │  │          │  ( n3 n7 `* ^/ q+ f, ^. G( Y# M) t
    │  │  │      │  │          └─META-INF0 z- F* U! `+ ~: ^
    │  │  │      │  │                  GradleDemo_GirlDownloader_main.kotlin_module
* s; k$ `- w. V$ E" |    │  │  │      │  │                  
5 o+ t. O" z) F# s/ e    │  │  │      │  └─src8 Y( l# W  z  ~6 C* i
    │  │  │      │      └─main6 u& U0 R( S3 t' ]: T
    │  │  │      │          └─kotlin' S0 ~2 c2 @2 N4 J8 v' n. h7 h6 F
    │  │  │      │                  GirlDownloader.kt
1 e5 |1 O( L/ a    │  │  │      │                  
6 o+ y/ C" D- }0 d8 _3 o. y    │  │  │      ├─GradleDemo_GirlDownloader
/ P/ Q0 ]5 F0 O' _    │  │  │      │  │  1.jpg
! t& h$ w: F! ?$ p5 y$ c: K! U    │  │  │      │  │  2.jpg# S3 G3 D" }* X0 K
    │  │  │      │  │  3.jpg! V% M1 F! [8 s7 g
    │  │  │      │  │  4.jpg0 X% g, N/ |, g9 ~% `
    │  │  │      │  │  5.jpg
& J( Z/ n1 t2 X1 X) ~9 `& D8 l$ N    │  │  │      │  │  build.gradle.kts
6 m, {5 e/ B6 @; M) X" d    │  │  │      │  │  settings.gradle
  g  {9 i5 o5 U- _5 W/ T    │  │  │      │  │  ! |- W8 c! u( w- w% M
    │  │  │      │  ├─.gradle7 k# U2 k" c9 ?1 [9 L" s* w4 H! T
    │  │  │      │  │  ├─4.1
/ X' V6 I* Z/ r" K% h' {" H    │  │  │      │  │  │  ├─fileChanges9 Z! Q0 n3 V9 [1 v% Z* q. C& ?! i6 x
    │  │  │      │  │  │  │      last-build.bin" B3 A5 }) z# \" s
    │  │  │      │  │  │  │      
' t1 _: k% t0 D* _    │  │  │      │  │  │  └─fileHashes
6 T: d+ Y( K$ }. y% y    │  │  │      │  │  │          fileHashes.bin
9 L% Z; I6 ^9 c! h5 i    │  │  │      │  │  │          fileHashes.lock
! y$ c- R; s/ [9 k    │  │  │      │  │  │         
6 o" V) t" D; f$ M) f8 l" o  M    │  │  │      │  │  └─buildOutputCleanup; a0 W/ M; S4 c& O- J6 B' R3 z  z- n
    │  │  │      │  │          built.bin( ?  E+ V, B3 f+ L; T/ U& L) u
    │  │  │      │  │          cache.properties" F* Y; F! n; I. r
    │  │  │      │  │          cache.properties.lock5 o- Y4 W5 Z; |0 y: b. R7 n
    │  │  │      │  │          ' F. z3 m- Y9 c+ i3 j/ I
    │  │  │      │  ├─.idea; _& E7 o# e3 A: c# f0 a
    │  │  │      │  │  │  encodings.xml
1 u7 Y" z7 V; a7 B0 r4 D    │  │  │      │  │  │  gradle.xml, u  B$ Y5 }. W1 o# P9 ?' n
    │  │  │      │  │  │  misc.xml% D5 {4 k- P$ L; Q4 c$ o  M
    │  │  │      │  │  │  workspace.xml/ E* X% T) k1 Y
    │  │  │      │  │  │  
, F, D) f$ g# A2 ^6 y9 {    │  │  │      │  │  └─modules
# m( U# z1 O" S+ l( `+ N) T! u    │  │  │      │  │          GradleDemo_GirlDownloader_main.iml
* v7 P% M1 _, T0 @2 z6 T    │  │  │      │  │          GradleDemo_GirlDownloader_test.iml7 e- B* d# r6 b3 R$ s; [! n  l
    │  │  │      │  │         
2 z4 T. e* h; j6 T, K$ b1 N    │  │  │      │  ├─build: i- i, w/ `  |# x. A5 ~
    │  │  │      │  │  └─kotlin-build* x: ^9 L/ `+ p! a
    │  │  │      │  │      └─caches
& S3 m2 E7 T- J1 w- O    │  │  │      │  │              version.txt
" I( C- U- u) a% Q) y$ w' ^" I4 N    │  │  │      │  │              
! |3 P! }; s, _2 U! C) a1 p1 v) S    │  │  │      │  ├─out
8 l) ^9 v2 q" [, K% Q3 U: p    │  │  │      │  │  └─production* `* T0 @. a7 m
    │  │  │      │  │      └─classes2 s9 b  l/ ?2 u6 A( [2 L2 y7 I9 g
    │  │  │      │  │          │  GirlDownloaderKt.class8 u  T* d7 R4 O2 |0 C! k' o8 _" O; E
    │  │  │      │  │          │  
2 a8 I6 c! C9 A5 m& X    │  │  │      │  │          └─META-INF
& r/ O$ ]1 e; h# q/ B; R. e    │  │  │      │  │                  GradleDemo_GirlDownloader_main.kotlin_module- O. c: q& t/ E$ V* ?; \% t7 c6 o
    │  │  │      │  │                  
# ?$ s  U8 J( Z- \- r    │  │  │      │  └─src! A& g: y+ B. a" U
    │  │  │      │      └─main9 \/ w0 e- R  p2 F6 T  o* l
    │  │  │      │          └─kotlin
9 {1 @0 e3 @! S% G7 Y1 n6 }    │  │  │      │                  GirlDownloader.kt
  X; b  i5 K# |5 v& g# @, z) J    │  │  │      │                  8 W( ~# O) C/ f4 ]4 v, ^
    │  │  │      ├─GroovyGradle, Q( U: ?6 A5 w& u6 J8 t/ F! f# M
    │  │  │      │  │  build.gradle
2 D6 {  @9 U3 c6 n+ a$ J& f0 X    │  │  │      │  │  gradlew
% P: u; v6 }! G* C6 J    │  │  │      │  │  gradlew.bat0 [1 Q; U, ?3 O0 O2 `' a6 k5 x
    │  │  │      │  │  settings.gradle% T' ]7 J7 j  F& v; h
    │  │  │      │  │  
" d0 {; b6 p6 `- ~- C4 P* h2 S    │  │  │      │  ├─.gradle$ a/ c6 k4 _0 e" [3 Y
    │  │  │      │  │  ├─4.4
9 Z2 E$ Q$ d# j0 L    │  │  │      │  │  │  ├─fileChanges2 g* ~+ p- B4 b* ^& `1 \: {
    │  │  │      │  │  │  │      last-build.bin$ ^8 g; _1 G1 `' O" D
    │  │  │      │  │  │  │      ! M2 `$ n8 z4 y* _9 c. z$ b
    │  │  │      │  │  │  ├─fileHashes" i6 x/ |  P  m0 w
    │  │  │      │  │  │  │      fileHashes.bin
9 W# o9 y/ |! Q' `$ C4 ]    │  │  │      │  │  │  │      fileHashes.lock
8 \# c" i# }- g9 N8 |    │  │  │      │  │  │  │      " P5 d$ A7 X& {
    │  │  │      │  │  │  └─taskHistory
/ R: O) x. b: z% u    │  │  │      │  │  │          taskHistory.bin
+ A; L6 H+ s* z* v* t9 |    │  │  │      │  │  │          taskHistory.lock$ p6 z+ w; a8 m$ e) U( m
    │  │  │      │  │  │          8 s! U0 G: L% x& h% |9 x( P; \2 w
    │  │  │      │  │  └─buildOutputCleanup* X' O# Z4 G; a+ z* \# K' m6 n* ~# \0 }, S
    │  │  │      │  │          buildOutputCleanup.lock
4 D6 p* _) V: U) t. P    │  │  │      │  │          cache.properties
% \( L. Z1 Z" j! i    │  │  │      │  │          outputFiles.bin
9 K9 |: B8 Z  v* Y    │  │  │      │  │         
" Q8 [7 T. g; Y9 M    │  │  │      │  ├─.idea
$ \, a2 A" R; B6 |/ l7 h    │  │  │      │  │      encodings.xml
- a: |' k/ d  }    │  │  │      │  │      gradle.xml
- S2 @/ B3 i& b    │  │  │      │  │      misc.xml6 r' O7 V, o5 c0 K* [( L
    │  │  │      │  │      workspace.xml. L' r6 {3 g7 A7 E; I
    │  │  │      │  │      ( w1 q5 `7 r+ U4 G
    │  │  │      │  └─gradle& f" N# `: ]8 J# p
    │  │  │      │      └─wrapper! T+ }4 B- K6 U/ o) L1 ?
    │  │  │      │              gradle-wrapper.jar8 |; u" y3 a& U& z% {% b0 Q
    │  │  │      │              gradle-wrapper.properties
. d/ _% w0 R/ _9 I3 R) Z' p6 w, V    │  │  │      │              
2 R7 \% y6 R. @    │  │  │      ├─GroovyGradle02
& [% V' E/ Z- L9 H- e6 J    │  │  │      │  │  build.gradle, C: T6 h5 h) |+ r) X0 J3 j2 J
    │  │  │      │  │  gradlew
' C2 j4 }7 |7 \: f  q    │  │  │      │  │  gradlew.bat
/ Y! u3 L. b2 Y# z    │  │  │      │  │  settings.gradle, S6 ?0 W( X) S) f, L- j% |5 z
    │  │  │      │  │  
9 F2 o* H5 s/ f9 H7 E2 |  q3 g  b    │  │  │      │  ├─.gradle
* K! F1 K: L3 o; i8 ~' [3 X* u1 m    │  │  │      │  │  ├─4.49 P- y8 d8 e0 o' R- k, M) p
    │  │  │      │  │  │  ├─fileChanges
1 H) |; x; q: [" c, i    │  │  │      │  │  │  │      last-build.bin" Z. l6 X* F0 D. r2 b: m9 W
    │  │  │      │  │  │  │      - r# D* H! h+ |8 p( f( t" c" [. @
    │  │  │      │  │  │  ├─fileHashes0 s6 _2 a& R, t5 t
    │  │  │      │  │  │  │      fileHashes.bin
- r9 h( }! \$ v, _' ?    │  │  │      │  │  │  │      fileHashes.lock
5 P3 h( c+ U, D) l    │  │  │      │  │  │  │      ; o) H/ F) U2 w* C. X
    │  │  │      │  │  │  └─taskHistory
. V" t9 D) q; d' G, O! B    │  │  │      │  │  │          taskHistory.bin1 E+ ^3 i2 M; l7 R; k, F) r: Y$ f
    │  │  │      │  │  │          taskHistory.lock% }  i% L. t* ~( L6 f
    │  │  │      │  │  │          . q5 F( C) \4 }! @
    │  │  │      │  │  └─buildOutputCleanup
* T0 U% ]9 i* w5 L. L+ w    │  │  │      │  │          buildOutputCleanup.lock
) Q' j3 H! h: x' `    │  │  │      │  │          cache.properties
  V1 h& U; R7 ~) N2 x: \# x    │  │  │      │  │          outputFiles.bin, E, H% W& L4 W% I$ K2 R
    │  │  │      │  │          " _& z$ K$ U+ G* s% P
    │  │  │      │  ├─.idea
5 Q* `+ m0 B& U+ r" K8 f! X  a8 @% j    │  │  │      │  │  │  encodings.xml
4 }( n7 H. v  I( L. ]    │  │  │      │  │  │  gradle.xml
! m2 k2 z: l; \( ]. @    │  │  │      │  │  │  misc.xml; b. f$ I- i1 ~3 Q9 D
    │  │  │      │  │  │  workspace.xml
# |3 h/ }* i" g# y6 ^# u2 U    │  │  │      │  │  │  % E8 ]& c. e3 M1 \  J1 K
    │  │  │      │  │  └─modules, ?' E0 ^# ~4 |( t0 }
    │  │  │      │  │          GroovyGradle02_main.iml
: ^' ?1 e7 j) g$ M    │  │  │      │  │          GroovyGradle02_test.iml
, E; Y6 x# @6 C4 B% J7 L    │  │  │      │  │         
/ M% p6 W5 L6 T% o9 @$ b: T    │  │  │      │  ├─build" ], n; w+ C# t0 |5 @  \
    │  │  │      │  │  └─kotlin-build0 {! }" j* x9 R% z
    │  │  │      │  │          version.txt" W0 c2 ~* S6 q$ [
    │  │  │      │  │         
. D4 w! {+ [# x. x; P; X    │  │  │      │  └─gradle
- y" v4 \6 c& ~    │  │  │      │      └─wrapper
9 T9 _: }8 O$ v! }2 i    │  │  │      │              gradle-wrapper.jar
$ k: F6 Q$ A! {! @    │  │  │      │              gradle-wrapper.properties3 `1 {% y0 v" M! ~: A" x
    │  │  │      │              5 h) P3 u# F' X; p3 L7 O, M
    │  │  │      └─ModuleDemo
/ ?" P. c/ v8 w3 B    │  │  │          │  build.gradle.kts' P: v1 f+ [4 \# c8 p' ^1 k
    │  │  │          │  settings.gradle0 r1 g. W/ W9 l5 g
    │  │  │          │  
, n# S% e* Z! B! @! @8 D    │  │  │          ├─.gradle
0 O* ?$ |' ^7 T% X4 Y    │  │  │          │  ├─4.1
  }- C  @7 T+ }5 {8 B+ ]    │  │  │          │  │  ├─fileChanges# `8 q# w- z5 U& V
    │  │  │          │  │  │      last-build.bin
* q4 A! k6 e! h' k: b. a1 K    │  │  │          │  │  │      
) f* C, J1 F! w- h/ \# c0 ]    │  │  │          │  │  ├─fileContent
1 \# O5 ?+ u+ y    │  │  │          │  │  │      fileContent.lock* o. l% j# k7 {, E' m% ?/ G
    │  │  │          │  │  │      
& q* O0 Q1 f8 G    │  │  │          │  │  ├─fileHashes
' u5 {$ r3 F4 W2 j; ]$ _    │  │  │          │  │  │      fileHashes.bin6 e+ \; ^/ X3 B8 J5 k* M
    │  │  │          │  │  │      fileHashes.lock
' u. c7 M2 }; e" O+ t    │  │  │          │  │  │      resourceHashesCache.bin
. d. s5 X2 n# E9 ~5 J; S    │  │  │          │  │  │      $ S8 b2 |3 s& [1 `! d
    │  │  │          │  │  └─taskHistory
4 G2 u* h  f8 {1 c1 \, F0 m    │  │  │          │  │          fileSnapshots.bin; H: I9 I* ~5 U9 t$ u, Y4 I/ A8 t
    │  │  │          │  │          taskHistory.bin/ T+ C! f# t4 _* x' S
    │  │  │          │  │          taskHistory.lock
9 H- ?0 N5 w' q# e, u! y$ ?% g) C    │  │  │          │  │         
9 u% ^9 V  @0 K! q4 C1 c7 |    │  │  │          │  └─buildOutputCleanup; {3 A  c! r4 `( P$ D8 Q- `
    │  │  │          │          built.bin+ a4 I8 N. L. A
    │  │  │          │          cache.properties
: O) I$ F2 c2 C( C$ T6 W    │  │  │          │          cache.properties.lock8 d. ?1 `$ L' N+ r$ ?5 w; P/ l) p
    │  │  │          │          - p0 o% O- ]  t" J( W* u
    │  │  │          ├─.idea( i# v* B( \2 J2 I0 v( _+ J1 l
    │  │  │          │  │  compiler.xml# @+ G) F! N( _% a; ^
    │  │  │          │  │  encodings.xml* I+ B) b, M$ }* o; Z
    │  │  │          │  │  gradle.xml$ i2 V3 B- f, r* A' T
    │  │  │          │  │  kotlinc.xml2 Y5 q3 L: s# _4 _5 f
    │  │  │          │  │  misc.xml
& Y( ~& {( j2 t. s& X    │  │  │          │  │  modules.xml
( s3 r8 ^  p1 e+ t  {2 Z    │  │  │          │  │  uiDesigner.xml
3 v% o3 x3 E/ C) g! O    │  │  │          │  │  workspace.xml5 v& v: t6 J; r6 ~9 W
    │  │  │          │  │  & g6 g2 w: j2 N6 n
    │  │  │          │  ├─libraries. y- {& P+ k4 b6 `% n: e
    │  │  │          │  │      Gradle__junit_junit_4_12.xml' Q+ ]* Z0 C, V. E
    │  │  │          │  │      Gradle__log4j_log4j_1_2_17.xml- b' k+ s7 C6 V) }( q
    │  │  │          │  │      Gradle__org_hamcrest_hamcrest_core_1_3.xml
+ j: |# F# j$ I. }    │  │  │          │  │      Gradle__org_jetbrains_annotations_13_0.xml
2 u9 ~) }2 G* I, x3 ^( q+ J    │  │  │          │  │      Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_1_3_2.xml5 g# S% n9 a- v4 W: r4 `
    │  │  │          │  │      1 d' |( g: B) C+ x' B2 c% Q3 S, k
    │  │  │          │  └─modules* v+ X) i( K. i/ G+ }* v5 @* `. @
    │  │  │          │      │  App.iml
6 R! f* ?( U- W8 v    │  │  │          │      │  Core.iml2 y" Z* u* c; G! ^# o. O
    │  │  │          │      │  ModuleDemo.iml
9 q# z4 e4 U$ S, H3 `1 d6 M    │  │  │          │      │  ModuleDemo_main.iml. c8 i7 ^% b- z; ]5 y' e8 B
    │  │  │          │      │  ModuleDemo_test.iml2 N7 |6 ^2 D9 N. Q
    │  │  │          │      │  Third.iml
  |; l) Q/ `, F0 ^( {    │  │  │          │      │  % O8 X5 @4 s2 ~9 C+ R$ t
    │  │  │          │      ├─App2 P' i1 x4 H+ {! ?  r( M% a5 E; ?
    │  │  │          │      │      App_main.iml. ^2 M) m8 O8 `/ X2 y. R
    │  │  │          │      │      App_test.iml
9 R% S- O" R4 r    │  │  │          │      │      
6 O1 W. J, e1 ^: U    │  │  │          │      ├─Core2 {! T9 Q* n  ~9 w  M. \# h8 i
    │  │  │          │      │      Core_main.iml
1 \$ F& q0 l. S& S1 b    │  │  │          │      │      Core_test.iml
7 B; e* ^# N3 v4 j) a- F* d: R    │  │  │          │      │      
& t0 O( p# Y- W    │  │  │          │      └─Third
& x6 i+ o% J4 M& E' H0 }    │  │  │          │              Third.iml3 D+ N9 E+ w, u) p  ]1 r
    │  │  │          │              Third_main.iml
$ p9 U- [$ @, n+ P8 X    │  │  │          │              Third_test.iml
$ L" [# R' n: A* R2 V6 V! x    │  │  │          │              0 }$ G5 S6 {# F% |$ ?* \% A; D7 V
    │  │  │          ├─App
* G; }2 q$ ?. d. R& B    │  │  │          │  │  build.gradle.kts
* q: h, C. y+ H% m# O6 o3 c- e    │  │  │          │  │  3 D  Z4 j% m+ ^" R5 v
    │  │  │          │  ├─build. s7 |1 S( D/ h9 i. z# Q# Z* d/ N
    │  │  │          │  │  ├─classes1 O0 \5 z4 f0 @# S3 S
    │  │  │          │  │  │  └─kotlin& h/ }# y: B) L
    │  │  │          │  │  │      └─main
) G4 l, B4 g/ i) W2 A0 U    │  │  │          │  │  │          │  HelloWorldKt.class7 G6 ]4 F4 v4 S
    │  │  │          │  │  │          │  
- }6 N7 V  e* I$ {1 W( z    │  │  │          │  │  │          └─META-INF% q* H0 m7 }' o+ H% e, Q7 q
    │  │  │          │  │  │                  App.kotlin_module) E; g6 H4 e3 i! j0 u, `  ^6 }. e7 r
    │  │  │          │  │  │                  
; P! a/ C0 z! h( h% Y9 ~3 m" |    │  │  │          │  │  ├─distributions: O5 n( f: O4 ^2 r8 J+ ]
    │  │  │          │  │  │      App-1.0-SNAPSHOT.zip
/ l/ h% ~  ?7 V2 M% z# J/ |    │  │  │          │  │  │      ( H$ G. `7 p9 m$ v, a0 s$ M
    │  │  │          │  │  ├─kotlin% x! K  F; L) c: G7 y$ Q, X* v- `
    │  │  │          │  │  │  └─compileKotlin
! Q8 h6 J! r8 {; h    │  │  │          │  │  │      │  build-history.bin$ @/ O# Q6 w9 J1 o" z: ]
    │  │  │          │  │  │      │  data-container-format-version.txt0 x+ J/ t# ?+ b" Y
    │  │  │          │  │  │      │  format-version.txt
: p& f. P' X3 w0 ?    │  │  │          │  │  │      │  gradle-format-version.txt! r7 J/ _# u( O5 T
    │  │  │          │  │  │      │  last-build.bin; V! B8 |# l1 p- B! F
    │  │  │          │  │  │      │  - P; Y, ~! f& @/ D; ]
    │  │  │          │  │  │      └─caches-jvm
! `, w6 I6 W5 E" h% C    │  │  │          │  │  │          ├─inputs
0 K. L- @$ c# U) I    │  │  │          │  │  │          │      source-to-output.tab/ Y1 M  N( ~8 G% B: z6 A! s2 r; I
    │  │  │          │  │  │          │      source-to-output.tab.keystream' O- y7 q' K( l; ~0 \
    │  │  │          │  │  │          │      source-to-output.tab.keystream.len
6 O6 \2 c7 k4 X  j( C    │  │  │          │  │  │          │      source-to-output.tab.len
, h, V. {! T  |; A    │  │  │          │  │  │          │      source-to-output.tab.values.at! w) |& r% @' Z: Y  }
    │  │  │          │  │  │          │      source-to-output.tab_i
) W* p5 X4 o6 n  i7 J; j    │  │  │          │  │  │          │      source-to-output.tab_i.len
1 j0 u4 A  x7 T  a* B% A    │  │  │          │  │  │          │      
5 d! y! j) b: H' o2 v' J2 P    │  │  │          │  │  │          ├─jvm
5 _& ~8 F3 ~9 v3 ~    │  │  │          │  │  │          │  └─kotlin. R- d. {* I: a0 {9 t! m
    │  │  │          │  │  │          │          internal-name-to-source.tab8 R% p- ^1 j/ v; _
    │  │  │          │  │  │          │          internal-name-to-source.tab.keystream
+ Y: {. Z1 b& D" s. a    │  │  │          │  │  │          │          internal-name-to-source.tab.keystream.len) U. a0 j5 j+ ^9 r: J  c
    │  │  │          │  │  │          │          internal-name-to-source.tab.len7 Q9 C2 ~1 N" V& m1 b) n
    │  │  │          │  │  │          │          internal-name-to-source.tab.values.at, \0 D( M1 U4 f" e% S, o# c& g# X) a
    │  │  │          │  │  │          │          internal-name-to-source.tab_i
0 S$ A( o. H- n+ ~# E    │  │  │          │  │  │          │          internal-name-to-source.tab_i.len' R7 H0 w! c; P4 t0 i7 Y
    │  │  │          │  │  │          │          package-parts.tab
7 L+ }9 y( Y3 `+ D& \: P7 D+ F    │  │  │          │  │  │          │          package-parts.tab.keystream. q5 J7 J1 H  {- f* }( e; z
    │  │  │          │  │  │          │          package-parts.tab.keystream.len
1 B1 c, T( c% P2 f$ \4 Z    │  │  │          │  │  │          │          package-parts.tab.len! {' L. H6 X( ~  A1 w0 v
    │  │  │          │  │  │          │          package-parts.tab.values.at
1 R" {3 D" u3 N2 I    │  │  │          │  │  │          │          package-parts.tab_i6 ^7 Q0 u% U7 p/ Z
    │  │  │          │  │  │          │          package-parts.tab_i.len# M( s+ q. f  o, @
    │  │  │          │  │  │          │          proto.tab/ x$ [" g' c4 }1 K% r+ a
    │  │  │          │  │  │          │          proto.tab.keystream
. A! V3 s7 ~+ o    │  │  │          │  │  │          │          proto.tab.keystream.len
& c* R6 w- D; p" ^( O  m1 ~3 ~( J    │  │  │          │  │  │          │          proto.tab.len$ e& N6 }; E0 ~$ c  v
    │  │  │          │  │  │          │          proto.tab.values.at: b& d  i5 N3 [, C/ F- X
    │  │  │          │  │  │          │          proto.tab_i( U4 W2 @$ }2 w- B3 R
    │  │  │          │  │  │          │          proto.tab_i.len/ @7 U5 P+ J! \
    │  │  │          │  │  │          │          source-to-classes.tab* J/ |/ ~5 H3 ~7 x% \7 b
    │  │  │          │  │  │          │          source-to-classes.tab.keystream
% N: a  e! C+ ~- r* V    │  │  │          │  │  │          │          source-to-classes.tab.keystream.len8 T3 v7 ?9 b  s3 J3 V
    │  │  │          │  │  │          │          source-to-classes.tab.len. Z3 f. f. w4 M0 A: d3 c  n$ p7 l
    │  │  │          │  │  │          │          source-to-classes.tab.values.at
, M2 _. f+ d1 i& a/ l    │  │  │          │  │  │          │          source-to-classes.tab_i% v9 }) \7 o3 Y" N. X- D5 H
    │  │  │          │  │  │          │          source-to-classes.tab_i.len
9 ~( o; w% b3 n) J' L    │  │  │          │  │  │          │          + l6 d5 D; l4 C  e3 e
    │  │  │          │  │  │          └─lookups! g0 t' g9 q' d9 G
    │  │  │          │  │  │                  counters.tab
; a7 C" j% B! P6 }% J( |# u4 Z    │  │  │          │  │  │                  file-to-id.tab  ?$ t& Q6 z) W- \4 A3 a$ T
    │  │  │          │  │  │                  file-to-id.tab.keystream4 F# S  U6 v& t
    │  │  │          │  │  │                  file-to-id.tab.keystream.len
2 b3 @3 r1 z3 d( y    │  │  │          │  │  │                  file-to-id.tab.len9 L6 p) `4 X8 K3 z/ ]
    │  │  │          │  │  │                  file-to-id.tab.values.at
: X$ ^9 q: ^0 i2 O' W- ^    │  │  │          │  │  │                  file-to-id.tab_i
$ t2 v1 {- b: ~) ?7 ~    │  │  │          │  │  │                  file-to-id.tab_i.len
* A* P2 \& N8 A8 m) R    │  │  │          │  │  │                  id-to-file.tab
2 @) A8 h3 ]/ D; ~* U2 w" O    │  │  │          │  │  │                  id-to-file.tab.keystream. `) w. y6 H1 a* Z9 b. P
    │  │  │          │  │  │                  id-to-file.tab.keystream.len
* f7 i+ r/ `, S* @( y    │  │  │          │  │  │                  id-to-file.tab.len( X% I, x& y& l. M. r8 W0 e; u1 \" i
    │  │  │          │  │  │                  id-to-file.tab.values.at
) J& U# m- _( p( l    │  │  │          │  │  │                  id-to-file.tab_i' u' D6 ?: u0 M; Q3 @( c3 A
    │  │  │          │  │  │                  id-to-file.tab_i.len
) ?% p5 L/ }$ @* v! o    │  │  │          │  │  │                  lookups.tab. [1 w' \1 E+ W/ p3 R1 J. o
    │  │  │          │  │  │                  lookups.tab.keystream
7 S8 ~6 ^1 D$ ^+ j7 j    │  │  │          │  │  │                  lookups.tab.keystream.len
/ P! R( y9 r- u' Q5 P* {8 W) f    │  │  │          │  │  │                  lookups.tab.len
' U( J: n  @7 c    │  │  │          │  │  │                  lookups.tab.values.at
: A  A. I. U8 r4 O" I    │  │  │          │  │  │                  lookups.tab_i
5 ?1 Q% K/ Y6 ~% K% l5 m    │  │  │          │  │  │                  lookups.tab_i.len
# F4 ?5 e) z( x" d    │  │  │          │  │  │                  
1 R! t2 K* E  m5 A    │  │  │          │  │  ├─libs- F7 K% o9 k' f& |2 a, \( I7 n
    │  │  │          │  │  │      App-1.0-SNAPSHOT.jar
8 p- F, \+ \1 n' w+ ], E    │  │  │          │  │  │      7 {8 x8 q. R+ y8 q5 W# F8 ]
    │  │  │          │  │  ├─resources* s6 a6 `3 r$ R+ u7 C
    │  │  │          │  │  │  └─main
+ t) U# A$ f/ n' G: }; t) }8 j; o# Q    │  │  │          │  │  │          log4j.properties8 @3 D& R4 P+ w- |% V, r
    │  │  │          │  │  │         
; l) t! B1 V2 N- q1 T. X    │  │  │          │  │  ├─scripts5 b& G: ]* V+ x3 q* R) [/ P0 t
    │  │  │          │  │  │      App
* o" W( [! n, q; p8 n  y    │  │  │          │  │  │      App.bat( s' m* R; I5 H4 a9 t0 \
    │  │  │          │  │  │        u! w' ?5 V, Y) g0 R: ]
    │  │  │          │  │  └─tmp/ ^! ~% |+ P) |/ M# f4 a. U' V( N
    │  │  │          │  │      └─jar
4 [' k3 h: ~; M/ v3 D6 L    │  │  │          │  │              MANIFEST.MF
& Q4 E. Y, ?4 W$ i8 |; p( t5 f    │  │  │          │  │              * F4 s- ?5 j+ L& w" M* v
    │  │  │          │  ├─out
1 h, l+ z; ?" W% B& E4 q# C    │  │  │          │  │  └─production
3 i: e6 ~4 M% S  `& A; X$ o    │  │  │          │  │      ├─classes' j$ ?; R9 Q4 u% ]0 H+ m
    │  │  │          │  │      │  │  MainKt.class. n2 v6 }4 n# {4 t- _
    │  │  │          │  │      │  │  8 ]  \. N; I" `  s
    │  │  │          │  │      │  └─META-INF
6 b1 Y  f! W; _! P% I; N    │  │  │          │  │      │          App_main.kotlin_module, i2 a$ _# _+ y# O3 i% s' e
    │  │  │          │  │      │          ) c( A2 k3 B& v" J& `" K, S
    │  │  │          │  │      └─resources3 ~0 `# S- ]$ d/ l+ Y
    │  │  │          │  │              log4j.properties( k/ E" b& e6 r9 @# t" M3 L
    │  │  │          │  │              
! b) X8 D" I! J% F    │  │  │          │  └─src% M6 L$ q3 `, u: J# Q* G
    │  │  │          │      └─main
/ `- O. V, F1 _7 z% O0 _    │  │  │          │          ├─kotlin, Q( C' j6 {6 t
    │  │  │          │          │      Main.kt
- t8 t) H4 b8 s) I5 W    │  │  │          │          │      
% ]2 O. x1 z9 E- E3 j    │  │  │          │          └─resources
, p0 P) n/ W4 ]. _$ l    │  │  │          │                  log4j.properties; `, m7 \/ u5 U! A
    │  │  │          │                  
9 G" [" V* l( q- S$ z    │  │  │          ├─build
# {3 U4 b( v& B6 b, J$ h    │  │  │          │  └─kotlin-build
: p* a3 U' V# r+ C; r6 F6 y& ^' Q. l    │  │  │          │          artifact-difference.tab
% F& L6 L- I( ?6 {& ~! [# K    │  │  │          │          artifact-difference.tab.keystream
7 }1 c# k. S% t% D2 Q( z    │  │  │          │          artifact-difference.tab.keystream.len
9 X4 Z" q# w# v" U    │  │  │          │          artifact-difference.tab.len
% L" n2 i8 e6 U- [: g    │  │  │          │          artifact-difference.tab.values.at8 _7 ^5 I4 B6 q8 ^/ t3 G
    │  │  │          │          artifact-difference.tab_i/ ]* @; U6 v! d2 I' e. T# _
    │  │  │          │          artifact-difference.tab_i.len
% B. |5 m, l% c    │  │  │          │          version.txt" {, X; N' ?* |8 K4 r
    │  │  │          │         
: h9 v/ {+ z8 M& j4 h; T  y/ k    │  │  │          └─Core
6 b! H& v* Q/ G    │  │  │              │  build.gradle.kts
3 h* l9 @) L  B2 A# Z    │  │  │              │  4 l) c) i' {  V& S
    │  │  │              ├─build% _0 F" H' {6 o( U, ?& H, i* j
    │  │  │              │  ├─classes
7 Z; b4 ^0 ]4 ?% f    │  │  │              │  │  └─kotlin% K1 ^/ V# V; {* P$ `" H: k& r
    │  │  │              │  │      └─main( [! ]7 V7 ]  f' q0 u
    │  │  │              │  │              MessageService.class8 K; m, ]* \: G9 O1 N& u( S
    │  │  │              │  │              
# _8 C5 S2 f/ j7 V    │  │  │              │  ├─kotlin
1 `* j& y3 X7 r; g    │  │  │              │  │  └─compileKotlin+ O" V7 B& E. g
    │  │  │              │  │      │  build-history.bin
4 }( d* ^: b2 ?+ c, ^    │  │  │              │  │      │  data-container-format-version.txt
* X) q% x# c/ H6 [$ r    │  │  │              │  │      │  format-version.txt+ o2 b- T2 z; o- E3 I
    │  │  │              │  │      │  gradle-format-version.txt$ S) q& ~' U# L5 k' \5 j- b8 B
    │  │  │              │  │      │  last-build.bin  m# n# z" {0 \5 V
    │  │  │              │  │      │  
* e: G% h& K9 y0 W5 c3 k- T    │  │  │              │  │      └─caches-jvm, M$ ^, n- F: Q! c; B- M% `
    │  │  │              │  │          ├─inputs
# v+ @1 ~* ~* H    │  │  │              │  │          │      source-to-output.tab0 d9 D" P# J+ X9 l$ K) E
    │  │  │              │  │          │      source-to-output.tab.keystream
4 v% y$ R  w- e: {    │  │  │              │  │          │      source-to-output.tab.keystream.len1 k1 L& K1 i+ M% \
    │  │  │              │  │          │      source-to-output.tab.len5 T; L  _5 ]8 v" h4 S% g# T2 Y, d
    │  │  │              │  │          │      source-to-output.tab.values.at
# p- ^5 Y, c% ~' S/ N7 `    │  │  │              │  │          │      source-to-output.tab_i
- [7 Y* y$ T* f: R5 B0 Z    │  │  │              │  │          │      source-to-output.tab_i.len
  T# ~% C9 S( ?+ M& G    │  │  │              │  │          │      
1 q0 W3 K; r) n4 f* u: y    │  │  │              │  │          ├─jvm
* s  f9 r6 N1 P" H  r8 C    │  │  │              │  │          │  └─kotlin" K! t- W9 z) Q+ T# D
    │  │  │              │  │          │          class-fq-name-to-source.tab- L/ r+ l/ g6 G
    │  │  │              │  │          │          class-fq-name-to-source.tab.keystream( I. i9 S: [5 c
    │  │  │              │  │          │          class-fq-name-to-source.tab.keystream.len
5 i3 S0 D0 |0 T- T# O/ H    │  │  │              │  │          │          class-fq-name-to-source.tab.len/ X+ z/ @) b3 Y( Q* L
    │  │  │              │  │          │          class-fq-name-to-source.tab.values.at6 l* q. s- k; ?
    │  │  │              │  │          │          class-fq-name-to-source.tab_i
3 Z7 i. o& J8 t2 l+ n. g' o' x    │  │  │              │  │          │          class-fq-name-to-source.tab_i.len% e) z, m- Y; a3 w: S
    │  │  │              │  │          │          internal-name-to-source.tab, a& s: d& l" G" F' v# v- d
    │  │  │              │  │          │          internal-name-to-source.tab.keystream
- Y3 {8 a1 a7 ^    │  │  │              │  │          │          internal-name-to-source.tab.keystream.len0 j. K/ {( q8 T; M
    │  │  │              │  │          │          internal-name-to-source.tab.len
  e9 \0 E' E( n4 U    │  │  │              │  │          │          internal-name-to-source.tab.values.at
0 H; P, h( U" g) T0 c8 |# n    │  │  │              │  │          │          internal-name-to-source.tab_i
& @% n4 W( E3 V. h3 ?    │  │  │              │  │          │          internal-name-to-source.tab_i.len
7 W2 o- Z1 s+ U% D6 r0 Y    │  │  │              │  │          │          proto.tab: M2 H* v$ R8 C; [# N/ G1 `
    │  │  │              │  │          │          proto.tab.keystream# K; [  j1 A& ~  d" _) p; @0 k
    │  │  │              │  │          │          proto.tab.keystream.len/ J4 a2 B  S2 B4 A' |
    │  │  │              │  │          │          proto.tab.len
- n( q- c$ k  Y' b5 z    │  │  │              │  │          │          proto.tab.values.at, N8 ^, {" P3 N) A
    │  │  │              │  │          │          proto.tab_i
" x. A' q7 I% c; o9 M( q' M9 r. b    │  │  │              │  │          │          proto.tab_i.len, e/ y& D  k7 R! W% X
    │  │  │              │  │          │          source-to-classes.tab
9 Z) M8 B* Z7 e0 _    │  │  │              │  │          │          source-to-classes.tab.keystream
% Q6 C$ v9 j* T  s4 P; x7 k% s    │  │  │              │  │          │          source-to-classes.tab.keystream.len* Z1 B: q0 @* L) [  D% s
    │  │  │              │  │          │          source-to-classes.tab.len
# \: Y* @, T! Q+ q( u+ Y+ V( a    │  │  │              │  │          │          source-to-classes.tab.values.at
$ S5 G2 n0 q( y    │  │  │              │  │          │          source-to-classes.tab_i, s- ^6 }, o- J% R
    │  │  │              │  │          │          source-to-classes.tab_i.len8 E* ~' r* S9 B% L0 K; ~6 A7 \7 u  h
    │  │  │              │  │          │         
; n9 D' Q/ q4 R    │  │  │              │  │          └─lookups# b8 T' s+ T5 d8 M5 |* E, W4 _
    │  │  │              │  │                  counters.tab
7 `/ Q! z( B0 \" x8 ^% D" U" L& I    │  │  │              │  │                  file-to-id.tab
8 }$ z* v9 ~/ J$ l2 ~% g. B/ H    │  │  │              │  │                  file-to-id.tab.keystream9 p. W% \3 w% H7 t
    │  │  │              │  │                  file-to-id.tab.keystream.len5 L9 d; `- R% U! V! Q, f
    │  │  │              │  │                  file-to-id.tab.len
# i7 r; T/ e3 E/ P# k2 Z    │  │  │              │  │                  file-to-id.tab.values.at
8 H4 p7 l) I4 m4 g% |8 l    │  │  │              │  │                  file-to-id.tab_i0 ?% S* `, O5 q
    │  │  │              │  │                  file-to-id.tab_i.len
, D0 ?& z6 |0 Y7 E* K2 c) C    │  │  │              │  │                  id-to-file.tab
6 c" j0 z# `/ U    │  │  │              │  │                  id-to-file.tab.keystream+ l+ }' h: F$ [  B" g# U
    │  │  │              │  │                  id-to-file.tab.keystream.len
! ]/ z' O. N5 N  E& i- T    │  │  │              │  │                  id-to-file.tab.len
* Z" v/ W! Y7 L$ l) U    │  │  │              │  │                  id-to-file.tab.values.at" p1 F+ t& r& i( \, U7 ~1 ~
    │  │  │              │  │                  id-to-file.tab_i7 S6 j' x/ B( j$ ^
    │  │  │              │  │                  id-to-file.tab_i.len- O" @. j7 d+ L! O5 Z1 t
    │  │  │              │  │                  lookups.tab) `" b/ b" U  @8 M+ z
    │  │  │              │  │                  lookups.tab.keystream
) F6 h* Z5 r+ ]; [    │  │  │              │  │                  lookups.tab.keystream.len
) a5 J5 n$ l4 I: i9 R  m    │  │  │              │  │                  lookups.tab.len) m" m. C2 J8 D* J- K
    │  │  │              │  │                  lookups.tab.values.at
' w2 B1 e6 ?$ z! w8 G7 q    │  │  │              │  │                  lookups.tab_i2 m0 \+ M+ _- D$ w; x4 s$ B. Q' o
    │  │  │              │  │                  lookups.tab_i.len
- v+ L' g( E) N( n7 |1 T* `    │  │  │              │  │                  * ?2 M- y4 R2 Q0 ?* }# D* J$ A0 S
    │  │  │              │  ├─libs
- b) v8 G* a" G  ?5 r    │  │  │              │  │      Core-1.0-SNAPSHOT.jar) f- @6 ]/ r7 f
    │  │  │              │  │      
2 i1 `* K, |6 A    │  │  │              │  └─tmp
* N: b+ R& M0 A. p4 Z    │  │  │              │      └─jar
6 W# \& E. ?: ~0 F8 Q    │  │  │              │              MANIFEST.MF
5 }+ z0 n! d& q% i    │  │  │              │              8 u0 \: i; j* L3 c- Z6 w
    │  │  │              ├─out1 l1 v- X& A) G
    │  │  │              │  ├─production
; _  L# }: i& F* ~    │  │  │              │  │  └─classes# v2 G8 O% m' c% u) V
    │  │  │              │  │          NetService.class
! Q& h0 E: }" L3 L1 T    │  │  │              │  │          - s' E$ d( B3 f( g0 r
    │  │  │              │  └─test; V( ^% w, p- A' a. U' m
    │  │  │              │      └─classes7 I+ s5 ^/ V, @  z+ F) `+ W. E+ q
    │  │  │              │              TestService.class
1 c' }7 v2 K, M0 R1 N    │  │  │              │              2 T) c# V5 `7 M' r0 M
    │  │  │              └─src
# ?' k. J: ^5 g7 Y7 {/ w    │  │  │                  ├─main
+ T9 A. `! v8 n4 z    │  │  │                  │  └─kotlin, \# [' K+ W! u" _/ O
    │  │  │                  │          NetService.kt
3 o  L( Y  r, ~1 G. z/ H( E    │  │  │                  │         
2 D  b/ a1 A" ^$ H    │  │  │                  └─test
; Y  H1 R4 U  T6 _2 |/ l, E6 U    │  │  │                      └─kotlin; N9 b: M, W+ ?
    │  │  │                              TestService.kt, {4 o7 ?4 ?6 K+ W# f
    │  │  │                              
, l2 F  E3 Y' Q" ?6 C; X/ l    │  │  ├─ppt
: T, o5 p+ r9 Y& Y0 s3 C8 Z    │  │  │      gradle.pdf
1 T0 [+ d* ?9 o4 N    │  │  │      6 y2 y' j+ T( J' Q0 b
    │  │  ├─video
2 O# B6 Q6 G+ }+ V    │  │  │      info.txt0 T2 j5 t4 W# o" y( y- n9 ^
    │  │  │      
8 A4 @: h4 g6 L- [) c$ E- \2 E4 l    │  │  └─资料
- d7 v7 g% R9 I; w) P; W; a9 c1 v( y    │  │          commons-httpclient-3.1.zip
) O  k5 f4 |# O    │  │         
0 G* f) ?0 A, G' v* Q% S/ K+ m( [) s    │  ├─day08
5 ]2 O1 y! M' b    │  │  │  readme.md
  `$ w& u+ r/ z4 z5 B    │  │  │  
! d9 o9 {: x, P    │  │  ├─note
2 w3 B8 f3 |, b    │  │  │  │  1.png! H' `& O% i, s8 c1 d
    │  │  │  │  2.png+ m- o# ]0 q- S. ?4 y
    │  │  │  │  git.md. z& M( c" E' F1 X7 F9 J
    │  │  │  │  
' G% Y1 K0 \7 C/ O6 K8 S' s    │  │  │  └─img
2 I! U, a4 b. ?6 p    │  │  │          1.png
- W; E/ u8 m3 N$ T, G3 b    │  │  │          10.png* Y0 k/ E6 _* X1 c
    │  │  │          11.png& P) {& {7 U1 ]6 O+ ?# D
    │  │  │          12.png0 t; p9 _8 f) R* s* \3 x, D  X
    │  │  │          13.png
/ v8 ]+ ?2 V* _% O5 W    │  │  │          14.png
# h. p: |- y  ~/ b$ O    │  │  │          15.png
9 r9 Q$ H9 |7 a6 B+ s/ d  ]2 i    │  │  │          16.png
. Q9 \0 ~# ]5 o6 k% Z1 R) j7 ]5 r    │  │  │          17.png
" x! U# C$ c7 @6 N3 ]' v7 Y7 |    │  │  │          18.png
& F; d0 Q; Q8 ]; v( _! Y) [& x7 H    │  │  │          19.png5 p& Q8 ^7 Y! H( e
    │  │  │          2.png* \$ ?% d/ M: q3 D7 D; Y- F
    │  │  │          20.png
: b, T/ C* {1 n0 F5 b    │  │  │          21.png5 r' I) ^* `3 o* @
    │  │  │          22.png
2 _2 I* E3 j. Z& D# n    │  │  │          23.png
0 C  M  `: _2 M    │  │  │          24.png
- R2 V5 V, |  S1 @' y    │  │  │          25.png! ^2 m4 O5 \6 S0 t
    │  │  │          26.png. m, n4 A1 Q" e8 L+ r0 T5 J1 u
    │  │  │          27.png
5 e+ ^* H0 A+ Y3 [  P6 E) m    │  │  │          28.png
) X. d- Z# z" _* r) V    │  │  │          29.png
1 y$ t0 r# A1 F1 p: i$ _$ `1 a    │  │  │          3.png1 u' f+ d7 M7 ~! D( w# ]( e
    │  │  │          30.png
) m6 n& }) Z' |1 w! P* h  ]/ c    │  │  │          31.png
$ Z, Z  |9 `( y" A  E# R    │  │  │          32.png
, P& ~6 H0 `) W! x3 ~2 A    │  │  │          33.png5 U" B; r& B3 }0 x: n
    │  │  │          4.png3 m3 S5 T& c3 t+ d) [/ B
    │  │  │          5.png
1 k5 N% f* K, `1 x: F    │  │  │          6.png9 k* r. |& X) N
    │  │  │          7.png: M. E! i' A% |5 @) J9 a
    │  │  │          8.png% R0 A4 y# @0 `7 ]$ o
    │  │  │          9.png
5 m, R. c! ^5 p. T' w) e    │  │  │          Linus Benedict Torvalds.png
" `' K/ A2 d- O* k: Q+ {    │  │  │         
3 C" M! y8 D: Z* X. Q9 \    │  │  └─video12 r9 t+ g3 u) V: y$ R
    │  │          info.txt! c6 _7 y2 ~9 h' Z
    │  │         
# n/ {6 Q; g% i2 Q5 N    │  └─day09
% K' T7 {, H: _: S& b+ o, R    │      │  readme.md: M" _, Z4 f% `# T6 Z) d' M( _
    │      │  
  e/ ?- ~! q0 p" m' ]" r  @4 p) y    │      ├─code
& r! H% T* A; T- G" s' g    │      │  └─Coroutines
" `" Q5 ]) |0 n, m    │      │      │  build.gradle.kts
. W3 r: e6 m/ {+ y! a! C. J    │      │      │  settings.gradle8 ~. J" M  w1 W. x* g7 \/ v
    │      │      │  
! b6 e- i0 Z0 Y5 O% R    │      │      ├─.gradle
. M. ~# g' e+ P1 R7 G3 d+ H& z( L7 y    │      │      │  ├─4.1) d+ y& }" O1 B, D# B
    │      │      │  │  ├─fileChanges7 J  I0 h+ {; m% T: V
    │      │      │  │  │      last-build.bin
8 c* R  ]. v" b# ?7 h- }9 e    │      │      │  │  │      ) c% Q8 ~4 i' X' ]: ]2 |; l) n
    │      │      │  │  └─fileHashes
8 A1 P- q0 z3 ^! _. V0 l6 T4 K    │      │      │  │          fileHashes.bin8 f4 D; ~7 O  i$ G# {) U
    │      │      │  │          fileHashes.lock" I' d- i) x- e) u# {. L
    │      │      │  │          8 }5 }9 a9 R& Y3 I! h1 q
    │      │      │  └─buildOutputCleanup0 S5 _! N! b" c
    │      │      │          built.bin( P. K$ x) s; L% K$ @" T' F' F
    │      │      │          cache.properties
' |( u$ M, }; q' N0 Q* d. P1 O7 I    │      │      │          cache.properties.lock
4 r; k/ f, o  T* _" ?3 ~: c9 `    │      │      │         
# }1 B% S9 V& ]. i  F: k    │      │      ├─.idea
/ O0 Y0 H+ n( ^8 c3 S    │      │      │  │  encodings.xml7 H0 X  I, V. V! p# Z
    │      │      │  │  gradle.xml) a. J$ q3 t2 ~
    │      │      │  │  misc.xml' I; {/ P% o5 k  d7 o$ P0 Y
    │      │      │  │  workspace.xml
& A" u. R: v3 N( o& j    │      │      │  │  
; ]6 K! {2 C! b# |    │      │      │  └─modules' P8 P# Q& a7 S
    │      │      │          Coroutines_main.iml1 K; Z, c; F- O. j* k% U" j4 Z
    │      │      │          Coroutines_test.iml
* Q. V! v+ a" \2 k+ r9 S5 s5 A( a    │      │      │         
$ o# D* a3 Y1 B. X2 e    │      │      ├─build
1 e- G6 w& ?! c) ~7 w    │      │      │  └─kotlin-build
' o8 q2 R9 n. U0 B    │      │      │      └─caches& K; j% f# z/ T9 G9 T3 V# n+ d. H
    │      │      │              version.txt1 C, J+ w% b5 t6 G) ^
    │      │      │              & M- f( r4 `; w$ ?3 C! j
    │      │      ├─out
+ [6 E- T0 \7 e    │      │      │  └─production
5 |9 J$ x7 [4 r5 l, e8 @+ O6 F    │      │      │      └─classes
! a% `5 y" U* Y6 ^& w% {    │      │      │          │  MyRunable.class
/ P% p( s% }, e4 p( N    │      │      │          │  MyThread.class
: D& P1 v0 E  g3 Y& n2 [6 s    │      │      │          │  _01_第一个协程Kt$main$1.class+ q$ v- ]7 Q, `/ M5 ]
    │      │      │          │  _01_第一个协程Kt.class4 R& y4 L# R- E
    │      │      │          │  _02_协程打印数据Kt$main$1.class
, f8 |3 \4 ~, Y. C    │      │      │          │  _02_协程打印数据Kt.class
! P: }5 u; q! z2 l    │      │      │          │  _03_launch的参数和返回值Kt$main$1.class, x( V+ F  a/ w0 _+ {# a
    │      │      │          │  _03_launch的参数和返回值Kt.class
' s$ e! L: X: h1 V& R    │      │      │          │  _04_ForkJoinPoolKt.class
" y, t. A- {* b# w    │      │      │          │  _05_协程启动之后的处理Kt$main$1$job$1.class
+ c8 b2 o0 J! y% J: v8 t    │      │      │          │  _05_协程启动之后的处理Kt$main$1.class
! |0 t& B5 ~( B  z; W    │      │      │          │  _05_协程启动之后的处理Kt.class
" G# s; @  X5 e/ @7 s5 \; d    │      │      │          │  _06_协程实现原理Kt$main$1$1.class
. }! j) I! ~* A8 ]- L    │      │      │          │  _06_协程实现原理Kt$main$1$2.class8 [2 ?* u5 u$ S6 c7 {% [
    │      │      │          │  _06_协程实现原理Kt$main$1$3.class$ r0 Z* R3 E2 \& J& F1 ^; U6 e# R1 C" W
    │      │      │          │  _06_协程实现原理Kt$main$1$4.class
5 \/ q3 d& L- _3 r  C' [    │      │      │          │  _06_协程实现原理Kt$main$1$5.class
' b: ^. Z% J, y; w* X7 A; c* v5 K( Q    │      │      │          │  _06_协程实现原理Kt$main$1$6.class
: p2 J" U1 ~8 R$ O% B" Q    │      │      │          │  _06_协程实现原理Kt$main$1$7.class
1 p; ?) ?8 z: B4 T/ |- \    │      │      │          │  _06_协程实现原理Kt$main$1$job$1.class  o1 R7 |! W2 i& ]2 H. T& M
    │      │      │          │  _06_协程实现原理Kt$main$1.class
: Q4 b4 R5 @# ]. o3 w    │      │      │          │  _06_协程实现原理Kt.class
5 Q& w& t" M, d8 C! |5 ?    │      │      │          │  _07_挂起函数Kt$main$1$job$1.class
/ ]' F; D  _1 h" e% Q# J& a: V    │      │      │          │  _07_挂起函数Kt$main$1.class
6 k+ s3 g7 B6 p7 l    │      │      │          │  _07_挂起函数Kt$myTask$1.class9 B: }- _; E1 e, B, B4 I
    │      │      │          │  _07_挂起函数Kt.class% c$ i. m% G  a3 v: H
    │      │      │          │  _08_线程和协程效率对比Kt$main$1$coroutinesList$1$1.class
4 A6 J2 |$ _6 D& q    │      │      │          │  _08_线程和协程效率对比Kt$main$1.class
1 Y& H6 X* r! I5 X7 ?$ i    │      │      │          │  _08_线程和协程效率对比Kt.class
/ o; W$ N! G3 `% ]8 Q    │      │      │          │  _09_协程的取消Kt$main$1$job$1.class
$ x! Z7 n) c* f% f+ T    │      │      │          │  _09_协程的取消Kt$main$1.class' C6 c/ e  I$ v2 ^
    │      │      │          │  _09_协程的取消Kt.class
; w' M* G# @, d    │      │      │          │  _10_协程定时取消Kt$main$1$job$1$1.class% N* }% \' h9 r4 d+ P- @. P
    │      │      │          │  _10_协程定时取消Kt$main$1$job$1.class
9 r8 J* W2 N( M: H. s    │      │      │          │  _10_协程定时取消Kt$main$1.class. S% \! f2 Q+ w/ _$ I6 w4 o
    │      │      │          │  _10_协程定时取消Kt.class
" V0 f' F+ s1 G7 p. f    │      │      │          │  _11_协程取消失效Kt$main$1$job$1.class/ R7 `  ]8 x3 w/ t, o
    │      │      │          │  _11_协程取消失效Kt$main$1.class# b4 G& z/ B: Z: M* w" s
    │      │      │          │  _11_协程取消失效Kt.class
# V. E7 R& o) \/ A    │      │      │          │  _12_协程取消失效解决方案Kt$main$1$job$1.class
; f# Q7 V; m- g" f) l7 w5 q" ^    │      │      │          │  _12_协程取消失效解决方案Kt$main$1.class& y1 d& G* U) e8 r. c% j+ Y
    │      │      │          │  _12_协程取消失效解决方案Kt.class
/ u- M" D8 W+ k3 {: @    │      │      │          │  _13_协程启动asyncKt$job1$1.class
2 ^6 y' Q3 g7 R7 Q/ _+ h    │      │      │          │  _13_协程启动asyncKt$job2$1.class
/ B0 ?) l6 B+ d; I9 v: d    │      │      │          │  _13_协程启动asyncKt$main$1$job1$1.class
$ c* C8 S5 a! z$ Y& \    │      │      │          │  _13_协程启动asyncKt$main$1$job2$1.class. _+ T9 w/ Z/ ^% t# n0 ]/ F
    │      │      │          │  _13_协程启动asyncKt$main$1.class) F4 l6 U! B7 ^
    │      │      │          │  _13_协程启动asyncKt.class4 J! t2 R0 `+ \, b% N7 K; o) C
    │      │      │          │  _14_协程上下文Kt$main$1$job1$1.class# {( |! N$ g4 L2 ?
    │      │      │          │  _14_协程上下文Kt$main$1$job2$1.class: }% H- A. _& {1 ~
    │      │      │          │  _14_协程上下文Kt$main$1$job3$1.class; @/ @6 ~. `4 E+ H  K; ~5 w
    │      │      │          │  _14_协程上下文Kt$main$1$job4$1.class" W6 G1 H3 `" Z4 v: ]
    │      │      │          │  _14_协程上下文Kt$main$1$job5$1.class
& L1 \( K9 W4 {% Q4 C" R; y+ O2 [    │      │      │          │  _14_协程上下文Kt$main$1.class9 }/ D  P$ V5 V$ {, R" g
    │      │      │          │  _14_协程上下文Kt.class- I1 ^: w! m6 x- @% h, J
    │      │      │          │  ) y, j4 x0 r2 z8 W0 i
    │      │      │          ├─META-INF. _$ |* O9 L9 P4 A! @8 l
    │      │      │          │      Coroutines_main.kotlin_module2 G. f1 M% i/ B# v" r
    │      │      │          │      $ ]) b, b7 k. M) F9 |
    │      │      │          ├─守护线程
- Q% n4 g, d5 F& h% c3 S3 B; H  N3 o/ u    │      │      │          │      Main.class
& `1 o, l9 R* P* x' Q    │      │      │          │      MyThread.class  k. O6 N5 |& [- f% G- e
    │      │      │          │      , ~3 z: P1 @3 a3 C6 i+ b
    │      │      │          ├─线程join/ L- z9 y; \, O  J8 c: p- m- B2 m
    │      │      │          │      Main.class
9 M+ f% M4 f% z; s    │      │      │          │      MyThread.class
, g8 V* F' ~6 Q. d# [' n. S$ o6 z! J    │      │      │          │      
* b0 g' B" R8 w2 ^' C% g) ], g% V    │      │      │          ├─线程池' n4 M8 y" b3 O5 {1 H& B5 J
    │      │      │          │      Main.class! k% b. X: ]8 Q% o0 l) h
    │      │      │          │      MyRunnable.class
+ G- |7 l; \# H    │      │      │          │      8 t1 i! C. d# K) Z
    │      │      │          └─线程的创建
, @: H* Y. i! q: I9 Y    │      │      │                  Main.class
- t/ B4 |2 U/ R8 z    │      │      │                  MyRunnable.class
$ c; u( p- U( ?$ C/ {* G; W    │      │      │                  MyThread.class
. U+ E; O  ?, r+ ^! l; F    │      │      │                  TicketRunnable.class
& ~; v$ U$ S5 U6 o$ b* R    │      │      │                  TicketThread.class
0 j0 |/ H4 P  N4 g0 k5 `, ~    │      │      │                  
- T+ e% g$ u  L) u, E1 ^% w& w    │      │      └─src
$ N. y. [, g/ U    │      │          └─main7 E- c7 c  S+ C) V0 P( a* A0 |
    │      │              ├─java
3 Y/ @7 z4 _# r( N    │      │              │  ├─守护线程
, P; f& c5 L+ t& J    │      │              │  │      Main.java2 u7 x  q* u! W9 ~$ Y
    │      │              │  │      MyThread.java
& O5 j; z/ n' L% T    │      │              │  │      
* I1 x- x6 F! ~& Y5 V7 O    │      │              │  ├─线程join
8 X" e! Y% |7 ~, u# M  d  o    │      │              │  │      Main.java5 \$ H7 m" J8 |" Q' W1 c
    │      │              │  │      MyThread.java) @* O. A( Q- s* _- s2 b
    │      │              │  │      . W5 [9 h2 ], u! V0 C/ F7 m/ }" X
    │      │              │  ├─线程池
" @; @; k* v  e' p    │      │              │  │      Main.java
) Q% O) }2 A4 J9 }& p" K    │      │              │  │      MyRunnable.java& I  E. `( Y  ~7 y# R* j  J* i
    │      │              │  │      
, @3 o/ L- }5 j" d/ n    │      │              │  └─线程的创建; e% z7 ]( A2 r2 v  e9 b
    │      │              │          Main.java; g8 A+ B+ R  p$ q; B% G
    │      │              │          MyRunnable.java3 p+ ~- c, w3 L- F" W% H' H
    │      │              │          MyThread.java
8 V* E1 [) t8 h7 Y    │      │              │          TicketRunnable.java
3 M& e) ~' N3 c! s    │      │              │          TicketThread.java
8 p! `8 m# O" i- i/ t1 ^    │      │              │          % u% \4 s0 {+ J& g% Q* ?% x
    │      │              └─kotlin4 }: k9 L% X% v# A
    │      │                      01.第一个协程.kt& w7 k6 ]( e5 A0 x9 T. l4 E
    │      │                      02.协程打印数据.kt  C/ H' K9 Q& a. B. c% x
    │      │                      03.launch的参数和返回值.kt% l2 E6 H- d1 `+ V, V
    │      │                      04.ForkJoinPool.kt
. A+ r7 O9 E+ f: m7 L1 y- z    │      │                      05.协程启动之后的处理.kt
# ?$ R% K; h- x$ n4 y    │      │                      06.协程实现原理.kt
0 Z  G, h9 l3 X2 s  k    │      │                      07.挂起函数.kt3 L( t5 L4 V1 @& e. o
    │      │                      08.线程和协程效率对比.kt
8 p" Z5 |# n2 L* \  l, n$ c    │      │                      09.协程的取消.kt% q" u0 k3 [4 _9 V  `) B+ Z) P5 D7 l
    │      │                      10.协程定时取消.kt
, d  u0 _2 ^0 ?/ |! q, X' ^/ `    │      │                      11.协程取消失效.kt
7 \, A' h  [; h7 a! j    │      │                      12.协程取消失效解决方案.kt
, w+ Y  z: B/ k1 [* Y. S    │      │                      13.协程启动async.kt
% R1 b- Q) L5 n9 R0 [$ A: H    │      │                      14.协程上下文.kt! n/ p% r& }# |6 A" y; F6 p
    │      │                      7 P. k4 ~* P: v! \3 K- v
    │      ├─ppt: L. `. f7 e7 q2 l; [
    │      │      协程.pdf  {# E% x" a7 D' n/ u8 R
    │      │      线程和线程池.pdf
  R8 E0 l/ o7 d9 u: ]3 z, N    │      │      # L- \) j) L! @. _9 `# t
    │      └─video5 @9 @- P# N; d# Q; m6 q5 u$ k
    │              info.txt
% I" x5 l4 J# H# }    │              / o& c( ^0 D" H( i* j+ f+ O' P
    ├─03_第二阶段-前端开发基础
! Z4 h8 G3 i+ F6 |    │  ├─day01_HTML% r' e9 v5 @" w
    │  │  │  视频下载地址.md6 e* ^+ b" j  S+ g  x& ~
    │  │  │  ; _: C% K! K3 R
    │  │  └─代码
8 O+ s+ [: n) q  J) }2 p/ z' p    │  │      └─BC01# J. I) h- L6 W6 g
    │  │          │  .project
. t2 a0 X' p+ {3 m3 T' ]    │  │          │  demo01标题标签.html
7 S6 S* E8 q7 X1 \/ U# w- i    │  │          │  demo02_字体标签.html+ Y3 ^* V$ D2 f2 G7 a1 c
    │  │          │  demo03_其他标签.html* z6 Q# v3 a: T9 r1 R( I, s
    │  │          │  demo04图片标签.html: [$ x# _3 ^. {$ F% B% ~
    │  │          │  demo05程序猿.html7 J. `! i! A' |8 X
    │  │          │  demo06列表标签.html
: b8 y! n* G1 h, e! b    │  │          │  demo07a标签.html+ n5 ~  t2 W4 O* O
    │  │          │  demo08友情链接.html9 o* i! _$ M) ^0 \9 a- p1 S% }
    │  │          │  demo09回到顶部.html* k5 D6 e4 G' J; L3 l( e
    │  │          │  demo10表格标签.html& |0 M: I, Z. b4 L$ n4 U! N8 g! G
    │  │          │  demo10表格标签2.html4 c& v+ y4 T1 m! |0 J
    │  │          │  demo10表格标签3.html
- J  B. y' R  q$ l- k: S9 {" u    │  │          │  demo11表格行列的合并.html* \0 t3 }/ Y' P0 @2 @8 Y6 W
    │  │          │  demo12_bottom.html4 D0 R4 N* w0 k
    │  │          │  demo12_left.html" E/ B  @. ]/ o, `) T1 ^
    │  │          │  demo12_top.html, |$ l0 B5 a' B
    │  │          │  demo12框架集.html& d6 Z; Y" M- w3 G1 r, Y
    │  │          │  demo13表单标签.html
. t( @' r0 u4 ], [- o5 R- c& P4 Q    │  │          │  index.html% a) c  W& q4 L% n2 B# {9 Z% y
    │  │          │  
) x) P" d5 K9 H* W& n    │  │          ├─img% a5 |) B9 K: a/ y" m
    │  │          │      1.jpg
4 m6 b; q2 X5 f. {; Q; p    │  │          │      2.jpg
$ D" s9 h/ V$ b    │  │          │      3.jpg
/ ^3 o  ]/ L& n; l1 b! I$ U    │  │          │      a001.jpg9 P* l9 B7 G3 g9 j) h
    │  │          │      ad.jpg
/ [9 W% r$ Z5 E- O% B    │  │          │      bartlesvillecf.jpg; a, U+ B( O9 L$ T( r6 W4 u) x
    │  │          │      big01.jpg# d5 ~8 `: i1 p* d, W
    │  │          │      click.png  i4 V5 O+ @- Z$ c: D3 P' H
    │  │          │      emancipation.jpg+ e: B8 p$ J, p- V# m, O
    │  │          │      footer.jpg' i( H/ R' t. j4 ?8 w' A, R: Y
    │  │          │      header.jpg" r8 t$ m0 Z  j: D/ W1 v, h
    │  │          │      header.png
  P/ B8 D7 F/ N4 }6 f3 [. J: I    │  │          │      logo.gif! @. G( D# t) ~
    │  │          │      logo2.png
7 P, s3 v+ C; r8 j) u2 H# \0 m9 D    │  │          │      logo6.png
* ?- F( G: [* z& ?8 Z    │  │          │      middle01.jpg
( P! T0 O. `  q% U+ K' k$ t    │  │          │      okwu-athletics.jpg
( ^  P8 X3 E  B' l    │  │          │      okwu.jpg0 G: L9 a, ~5 p# K: s# C3 K+ R, H6 Y
    │  │          │      regist_bg.jpg2 v2 {  J6 Q7 ^2 h7 ?8 c
    │  │          │      small03.jpg
8 ]3 u. t  W8 w& D2 |    │  │          │      small04.jpg
) D. U5 s9 I( e1 p% q, P    │  │          │      small05.jpg( g3 t- O2 h. ~
    │  │          │      small08.jpg0 s% T& \/ a! W5 u1 |5 l0 ]# f+ [
    │  │          │      title2.jpg
- e/ {: Z6 k% \8 a    │  │          │      
2 Y* m' _- ]. m  _% F. i. I    │  │          └─path1
# W2 }. M7 D4 z% a6 Y4 a! ^5 m    │  │              └─path2
4 u1 k2 z; b2 V% _& q/ G5 ^( d    │  │                      demo04图片标签.html/ e: s. r' v2 ?0 E. V( v( P1 X/ {
    │  │                      ' A" d) p1 V! i' t* H  V
    │  ├─Day02_CSS
3 ]/ ~' M# X: k    │  │      视频下载地址.md& l5 J, D- U9 b0 c; t
    │  │      $ {$ g1 R* y. s$ G* I  n5 |
    │  ├─day03_JavaScript8 C4 J* F; K- p/ }
    │  │  │  视频下载地址.md8 J! x$ b& V8 U4 Z7 c
    │  │  │  
0 y, E& F0 K. z- n  P    │  │  └─代码
5 u* |! j* l. L  t/ c( a+ z6 a) t    │  │      └─BC03# {1 D( D6 U; x$ Q" `
    │  │          │  .project
3 w) e" j$ l0 u- E8 n    │  │          │  demo01.html
& ?: f- p- U% w; d/ A* p! G: a    │  │          │  demo02语法.html) z$ o$ t8 @' m- r7 P; Q; T
    │  │          │  demo02语法2.html8 p5 n( P4 d8 g2 X; _1 T
    │  │          │  demo03声明变量.html
2 j" |+ Z: t0 R: R% M    │  │          │  demo04数据类型.html
4 I* b$ z" d: ?' ]: C, v; M2 s# _    │  │          │  demo05运算符.html$ D5 n+ ~* h4 [6 v& Z4 u
    │  │          │  demo06流程控制语句.html
( ~9 C- K/ w  x1 E( f- V' a7 @    │  │          │  demo07函数.html
+ ]$ L4 u: ^! o, Q5 {    │  │          │  demo08函数的绑定.html
5 {- ]6 C2 q2 s3 A3 L    │  │          │  demo08函数的绑定2.html
* n/ L! \! a7 i+ E    │  │          │  demo09数组.html0 j. `4 i4 \- d# i6 N3 J
    │  │          │  demo10正则表达式.html# x' C( O7 A9 l/ F% Y) s
    │  │          │  demo11日期.html
3 s6 \- j# U/ @$ b; T    │  │          │  demo12元素的查找.html
5 I1 l4 D1 f8 Y2 T* Y1 D1 ]    │  │          │  demo13CSS样式的设置.html
+ j: N+ {- q/ s6 X; N( T! D2 }/ {: P    │  │          │  demo14内容的获取和设置.html" _9 x; k4 S3 Q. e0 H
    │  │          │  demo15属性的设置和获取.html
9 K9 Q" v3 H1 z4 s6 i: e    │  │          │  demo16鼠标事件.html
* ?# g' d) A! ]. n7 y4 U, O" x    │  │          │  demo17输入框相关的事件.html6 m# p5 w5 A9 ~
    │  │          │  demo18表单提交事件.html
' Q1 x- u# w. Y# G    │  │          │  demo19onChange事件.html
4 J1 _* e, X2 y+ D& ~    │  │          │  demo20键盘事件.html
( J8 ?$ ?8 f( `) o    │  │          │  index.html( M* r4 d: Q, k, A) H% g6 k7 q
    │  │          │  
& \  k; c) Y, f5 g0 Z; F& i: a    │  │          └─js( u( Q. E) I" x$ w% A2 b
    │  │                  demo02.js
/ A2 k' G# O' w    │  │                  
- B1 p2 |* ~: m; p, f0 i0 s    │  ├─day04_JavaScript
3 J# n6 o+ O8 t/ p) J    │  │  │  视频下载地址.md
& i" m* S( \5 [( |; [    │  │  │  
2 [' j- c1 L+ F) \$ U8 r    │  │  └─代码% b2 f) E7 M; T7 }( a
    │  │      └─BC046 g! r- L+ _; p" T
    │  │          │  .project
* S( d, l1 x, O6 J& `    │  │          │  demo01Confirm.html, n- E% U9 b* I; ]$ v* l; L
    │  │          │  demo02prompt.html
8 H/ D9 |7 S4 ~  Q# Q! k7 ]    │  │          │  demo03打开关闭窗口.html
, E* r( {! y: p9 |2 E6 I4 Y) ?    │  │          │  demo04定时器.html
+ s0 O3 j% p; Q8 ?5 T    │  │          │  demo05history.html9 ]& a1 s( n) a- N& |  g
    │  │          │  demo06location.html
3 r  a! o) H, m& P5 `7 X8 [    │  │          │  demo07案例1待办事项.html
1 v6 k: n: J8 I+ W$ G8 X    │  │          │  demo08案例2记事本.html
% m$ O$ C& |  S2 h* V    │  │          │  
6 A- N2 ^; |! j  t$ q    │  │          ├─img
  k$ u" H& q# A( O/ l    │  │          │      1.jpg
+ s' W  m$ w  N  ?    │  │          │      2.jpg
) }) B/ U' i: P. [    │  │          │      3.jpg7 L( p( |- F7 ~% G6 p
    │  │          │      ad.jpg; C$ @9 y# }( H$ v$ S
    │  │          │      ad_.jpg
1 n: x3 P; P# U% v5 r( @$ R  Y    │  │          │      big01.jpg3 c* R: i+ E# _" \8 l5 j
    │  │          │      footer.jpg
+ ^( u$ D  f: B1 h    │  │          │      header.jpg
+ g+ d1 d# `( f% q. A! s+ S5 w+ }' B    │  │          │      logo2.png  q8 Y& d. g4 ^5 B; o2 X
    │  │          │      middle01.jpg
: U' ~$ g8 a; {4 J    │  │          │      regist_bg.jpg
2 N9 o" h  T, v, E    │  │          │      small08.jpg$ i* v" }2 X( z; Z. w
    │  │          │      title2.jpg- X. K! L6 n1 Z7 Y+ Z
    │  │          │      
5 |6 r6 g/ S, `# n0 `  }4 u    │  │          ├─案例1-注册页面校验4 G( R# F7 j) f! e
    │  │          │      案例1-注册页面校验.html
- j/ G. z) L  ~: p4 p3 n& W( k    │  │          │      
0 r/ g2 z. w6 O7 Y3 V- O* ?7 ~    │  │          ├─案例2-轮播图1 z0 I- l8 d: X- {* p6 _
    │  │          │      案例2-轮播图.html$ k0 Y- u1 \* K0 e8 P% F! D% t
    │  │          │      
! Q' P) p: X+ m& N. h/ G+ L    │  │          ├─案例3-弹出广告  x) z/ b$ N* y* D
    │  │          │      案例3-弹出广告.html
5 Y# J2 J) K, p1 M! K0 c/ _- h* G    │  │          │      
8 E# Z; g* [) D( P  M6 R" k    │  │          ├─案例4-隔行换色
8 {4 O% f6 i/ T0 Z+ a/ K# i- e7 q    │  │          │      案例1-隔行换色.html9 s. [# x$ B0 w- D2 H+ W4 V5 i
    │  │          │      
$ t; w; U2 k* l, C  N5 @$ @    │  │          ├─案例5-全选全不选9 D3 F3 ?) F- v8 Z
    │  │          │      案例2-全选和全不选.html& P- @2 N4 o3 P( C0 i, L3 d
    │  │          │      
# Z% |- f- B$ c% n5 C# d, a: l    │  │          └─案例6-省市联动- }* d; ?8 Z' t! j
    │  │                  案例3-省市联动.html
7 ?; f' n+ p* P6 m) E. g    │  │                    h+ Y, w' w( Q$ E2 [3 G
    │  ├─day05_jQuery) ^8 S  [2 @/ [7 q( J
    │  │  │  视频下载地址.md
! R; Y9 c; K$ Z" Q    │  │  │  ' c$ I) E/ [9 P
    │  │  └─代码" n. b& ?7 O: i( W* `0 g4 g: n5 X' H
    │  │      └─BC05% E- i. Z/ Y3 H
    │  │          │  .project3 F' s7 V& o4 f" o3 a
    │  │          │  demo01效果.html5 `$ |% o' g" m2 n6 |6 f  i- z
    │  │          │  demo01效果2.html8 t8 t+ z7 C" \, ^7 l, j' z
    │  │          │  demo01效果3.html
+ i5 k0 _) z& K, t    │  │          │  demo02基本选择器.html
7 ?2 R! T, K! [& X' E7 l/ S    │  │          │  demo03层级选择器.html0 l' z8 q. c6 c. \( H5 A
    │  │          │  demo04后代选择器.html
7 d0 ?+ l5 X- X5 k) |    │  │          │  demo05后面的第一个兄弟节点.html; W  F6 N7 w: W
    │  │          │  demo06后面的所有兄弟.html
: A8 N. j- n7 C: ~, t2 w4 k    │  │          │  demo07筛选器.html8 }" K9 G- W& X
    │  │          │  demo08内容过滤.html.html/ c: x$ J$ ~4 i# ]
    │  │          │  demo09可见性过滤器.html
9 o- N! q! o* f    │  │          │  demo10属性选择器.html% y' ?1 j8 h3 {' z  l) |
    │  │          │  demo11表单选择器.html% d4 j" ]: T. r0 `0 B6 D
    │  │          │  demo12CSS属性.html
, c, ~# Z7 ]+ U% f- v! Z    │  │          │  demo13属性的操作.html5 Z9 ^1 v" v( |% b4 b
    │  │          │  demo14遍历.html7 e4 G3 O0 V$ [+ ^; q% L
    │  │          │  demo15操作元素中的内容.html  M/ K% [% [3 s( |4 ^2 h- z
    │  │          │  demo16文档的处理.html
8 G$ K' l- `  e; X1 g    │  │          │  demo17表单对象的方法.html9 j5 y* v/ g( q3 _; N* N
    │  │          │  demo18hover.html
7 K& p+ E" `+ X9 X    │  │          │  3 e2 ~" d5 D  V. H1 y
    │  │          ├─img7 w- m3 a( x/ a# n+ B$ N
    │  │          │      AssassinsCreed013.png
! C: i9 m( X: Y/ v5 ^( _    │  │          │      
1 z' \+ S2 A- e: P    │  │          ├─js' U( x- V/ g* M0 b- A2 u. |
    │  │          │      jquery-1.12.4.min.js$ t. [/ o% X! C
    │  │          │      " L* b, A/ B8 w! m
    │  │          └─案例1-入门, U% }4 ^% C+ r
    │  │                  01-获得jQuery对象.html
. c0 U, U5 ^( N" _6 x" b. f' y9 W    │  │                  02-DOM和jQuery对象的转换.html
4 ?* Q& `6 d2 M$ A    │  │                  03-页面加载.html- O: ^5 K2 W) K
    │  │                  04-事件绑定.html
+ d6 H/ S) Z: Y$ k/ m" O    │  │                  05-常见事件.html2 y, R4 |) C  Y$ C! j- c+ w8 F. Q
    │  │                  ( F6 _$ e! o3 D# ^$ S
    │  └─day06_jQuery
! z/ X8 _/ c% _) \! U    │      │  视频下载地址.md- v/ x" l  l( `  n) v* v  d2 |1 S
    │      │  # T! w' R# g  s6 J+ `- a4 s
    │      └─代码
( w4 C; [  @" I    │          └─BC068 G# w1 \2 P! W; ~7 X" x
    │              │  .project
; i, m: i; X" w    │              │  index.html
' A7 N3 T  @/ u    │              │  注册.html3 U. Z3 W0 L1 W; G
    │              │  百度地图.html& F- V5 S4 t, Q  S* E7 G% ~
    │              │  省市联动.html
# e4 {8 }  m* M7 U! t5 @" B    │              │  输入提示.html
  C" m0 n0 d: p7 Q' Y- M  S2 X, J, a- O    │              │  
6 ^9 @5 A4 \! d7 v# y% G    │              ├─css. c' Y0 u6 H$ G( b- x; D
    │              │      city-picker.css
+ u9 B; V, ~: r0 r' @    │              │      # ?! t0 S0 v: G
    │              ├─img
0 a7 ]0 U& k6 V3 ?0 W9 F    │              │      1.jpg
" `* Q' J) g: T' _0 Z0 t    │              │      2.jpg0 }& T4 R) J+ L  K
    │              │      3.jpg6 g5 b; U2 y" p2 t; }- x8 v0 u# v
    │              │      a001.jpg
8 z* E( u3 v4 b    │              │      ad.jpg3 K7 L  P4 \2 H! v8 q  f
    │              │      ad_.jpg
/ N% |2 @) P( [: q; ]4 b    │              │      bartlesvillecf.jpg- F( v5 D) Y/ ?# v
    │              │      big01.jpg
2 z' z' O' n/ k/ q/ T7 E    │              │      captcha.jhtml.jpg! _8 d. J- M, `
    │              │      click.png
) x! h) q% H5 l; p: _4 @, ^    │              │      drop-arrow.png( E- L" Y' y$ {
    │              │      emancipation.jpg# ~7 v0 S1 u3 v/ c! G
    │              │      footer.jpg
) u' r4 H7 X( c1 [3 d" B8 Q    │              │      header.jpg1 H, p: D8 F8 A' v  }# j
    │              │      header.png  E) N, B% u, ]: |/ @1 g
    │              │      logo.gif
5 G1 V7 ~# g& Q. ]5 U    │              │      logo2.png. `/ `. V, O7 S
    │              │      logo6.png* m" b) x' ^' @7 M0 T
    │              │      middle01.jpg
7 j- o2 h8 k. H6 E, g- `    │              │      okwu-athletics.jpg
$ y. z+ Z6 ~4 X* @" K2 n& h    │              │      okwu.jpg
7 U. m+ \! Y5 }1 |' d' |$ x    │              │      regist_bg.jpg
/ M, v/ H# Q0 J% x! }    │              │      small03.jpg9 d" K  b; p: R8 [& r, [* _2 u
    │              │      small04.jpg# b( G: N/ d6 @) a( q2 N* Y: u5 j
    │              │      small05.jpg; G* ^- W# R: }7 h( ~& r
    │              │      small08.jpg7 t$ Y- n5 V# D+ X2 @# {
    │              │      title2.jpg1 X3 {7 E: y( c' I/ x0 {9 M( N# Y5 t
    │              │      
" }" ^' w+ o7 x& Y! l    │              ├─js# P6 E- s: P( N' `  O5 [$ Z
    │              │      city-picker.data.js
( f! A' i9 c" u+ V! |& o    │              │      city-picker.js
1 x! J" ]* M9 G- f    │              │      jquery-1.12.4.min.js7 d/ j: K% u' G! i, \
    │              │      jquery.validate.js
( ?; w2 A, o$ X, H9 i! C) ^( b/ s    │              │      messages_zh.js
" M7 a& J7 f2 Y7 l8 p    │              │      ( \, `1 _4 a  M% S" c7 G
    │              ├─案例1-注册页面校验/ ~$ i* M6 G$ o+ h
    │              │      案例1-注册页面校验.html1 {/ n& x" P/ _) y, [
    │              │      " a  b, o+ E* d& s" b
    │              ├─案例2-轮播图! t, J* {8 h. z: }
    │              │      案例2-轮播图.html
& |- F' u' t0 q1 W" m$ a    │              │      ) C* y& K" v  D$ G: V6 _
    │              ├─案例3-弹出广告
) X$ ^/ X, E% Z( b- ?& h    │              │      案例3-弹出广告.html
/ v7 P+ S, i# F% I; b( u! @    │              │      案例3-弹出广告2.html/ ?: a! u* i, d
    │              │      ! H. d$ H5 ^, S  A7 @! \
    │              ├─案例4-隔行换色
# h, Q/ n+ e* C/ N7 ]    │              │      案例1-隔行换色.html" ?/ w8 h1 U& Y0 A3 F9 G
    │              │      4 O: o1 b# h* P
    │              ├─案例5-全选全不选1 s. n6 A) S- E) H$ {: ?. V
    │              │      案例2-全选和全不选.html/ i- [. l) v/ J9 G7 Y2 q0 C
    │              │      
; V# @5 q5 ?( Q  L) o    │              ├─案例6-左右选中- Q( R7 d- T! d
    │              │      案例2-左右选中.html
  T2 A& e3 k) R+ g( s    │              │      
+ v* r7 D5 [/ j    │              ├─案例6-省市联动+ X# H/ o9 `1 L6 k; {3 w' P
    │              │      案例3-省市联动.html
9 n, u  Z* G, a0 E# g- p- \7 y    │              │      
. w) v+ X4 Z/ A$ U+ g    │              └─案例7-表单校验, a( [- o: `/ c
    │                      validate使用.html
- h/ O, }! q% v, I* T+ P    │                      案例3-表单校验.html) v  {3 g. q6 i- }, y- S
    │                      7 r) ]/ b9 g- k# M) o) x& f. P
    ├─04_第三阶段-Java分布式#springboot#springcloud#微服务#数据库技术
5 I6 S% K" d  M    │  ├─day01
) G) h, _. V& ~" z! Q    │  │      readme.md
9 L) Z$ s# A8 u, [1 M" F: R' _    │  │      : t# v4 g; w) a' _: T0 a0 X( M
    │  ├─day021 b- W; _" @) c' j  [& A
    │  │  │  视频.md! {4 e8 q: ~, t5 f
    │  │  │  0 m9 v: Y  X( {
    │  │  └─code&资料
% v* `  ~0 u  I( v; q0 M& [    │  │      └─code7 O/ J1 r* L5 K/ _  @
    │  │          └─day023 I# }0 }) D- q8 e9 I& Q  h( l! a, `
    │  │              │  build.gradle
+ [2 F0 |. @! i    │  │              │  gradlew
- s' c  H0 r# L2 o$ U    │  │              │  gradlew.bat3 U5 T: Y1 o3 X1 x) r) ?
    │  │              │  settings.gradle3 m. j8 j% A+ [2 d$ ~  ^
    │  │              │  # C0 s9 u& q- X( a
    │  │              ├─.gradle
6 ]% L9 c5 J, U" }& ~% @    │  │              │  ├─3.5-rc-2
# |* J6 q7 Q4 ^: T4 r1 r    │  │              │  │  ├─file-changes, H6 _' U( U; O0 d7 M7 h+ E
    │  │              │  │  │      last-build.bin- ]5 I& |8 R: q+ B
    │  │              │  │  │      * _+ `( y1 p) n" @0 P
    │  │              │  │  └─taskHistory" }2 i2 X+ R9 r0 k
    │  │              │  │          fileHashes.bin
( T# z9 C7 ~) ~    │  │              │  │          fileSnapshots.bin
3 I7 }& j1 j: G: w    │  │              │  │          taskHistory.bin" m( z; ?- t: B; e
    │  │              │  │          taskHistory.lock
+ y* n! G( m$ n7 O* ]3 u  ^    │  │              │  │         
7 ^; |* A* Z$ o* N( [    │  │              │  └─buildOutputCleanup: }: V3 v( z/ r: h4 v. u
    │  │              │          cache.properties5 g( z3 k; R  B. q2 Y' Q
    │  │              │          cache.properties.lock
  ~) I, c8 p. D( X5 ^    │  │              │         
+ u# ^2 c7 n% Q    │  │              ├─.idea- U4 @% {8 m: m) X' b4 C
    │  │              │  │  compiler.xml
! p5 h& E  O/ v  x% z    │  │              │  │  encodings.xml# S% B( t1 H- X# f; ?5 x6 l
    │  │              │  │  gradle.xml
9 d% \6 J; h- W( f! f    │  │              │  │  misc.xml/ |* N3 g9 `: y) z6 l9 ?
    │  │              │  │  modules.xml. H& W- @8 [: Y
    │  │              │  │  workspace.xml
( N# U" N. v% y$ \! f7 }    │  │              │  │  $ N' c8 y" b& C$ M' m* N
    │  │              │  ├─dictionaries
+ [4 t$ k/ R( W% H: n    │  │              │  │      Administrator.xml5 a! D, K3 \* C3 N, x
    │  │              │  │      
, u1 o. q/ ^4 j2 Y& A, o3 Z    │  │              │  ├─libraries
  A/ m3 P% u4 Q$ y9 e4 ^    │  │              │  │      Gradle__ch_qos_logback_logback_classic_1_1_11.xml3 b0 t" x" e9 n, Q$ f
    │  │              │  │      Gradle__ch_qos_logback_logback_core_1_1_11.xml
6 N. N; k$ q0 I! B' T    │  │              │  │      Gradle__commons_logging_commons_logging_1_2.xml
) X* `1 f1 Z- n5 o: n% c3 X    │  │              │  │      Gradle__com_fasterxml_classmate_1_3_1.xml
( |! t* L0 v3 e! Z    │  │              │  │      Gradle__com_fasterxml_jackson_core_jackson_annotations_2_8_0.xml1 Y# c1 r, @# m
    │  │              │  │      Gradle__com_fasterxml_jackson_core_jackson_core_2_8_10.xml+ [3 C+ _$ T9 n" w
    │  │              │  │      Gradle__com_fasterxml_jackson_core_jackson_databind_2_8_10.xml2 P: ?  H, C1 d+ l# ?5 ]! }
    │  │              │  │      Gradle__javax_validation_validation_api_1_1_0_Final.xml2 a" e% ?, d+ C4 Z7 w
    │  │              │  │      Gradle__junit_junit_4_12.xml
8 o, J5 S4 `$ Y7 D9 e    │  │              │  │      Gradle__ognl_ognl_3_0_8.xml
2 B- E2 D" Z- }- B    │  │              │  │      Gradle__org_apache_tomcat_embed_tomcat_embed_core_8_5_27.xml
( S, @' a/ o4 ~' x- a9 S    │  │              │  │      Gradle__org_apache_tomcat_embed_tomcat_embed_el_8_5_27.xml
  q7 ^. N; T9 I1 U6 |    │  │              │  │      Gradle__org_apache_tomcat_embed_tomcat_embed_websocket_8_5_27.xml8 B% h# y. ]! J
    │  │              │  │      Gradle__org_apache_tomcat_tomcat_annotations_api_8_5_27.xml+ `# G, o4 t  Q* E' I
    │  │              │  │      Gradle__org_hamcrest_hamcrest_core_1_3.xml
& h, V" A2 ~- C* o, e7 `9 V) q    │  │              │  │      Gradle__org_hibernate_hibernate_validator_5_3_6_Final.xml* _, `% B! z( y' B+ B3 v4 ^
    │  │              │  │      Gradle__org_javassist_javassist_3_16_1_GA.xml3 x% Z5 n7 N  R
    │  │              │  │      Gradle__org_jboss_logging_jboss_logging_3_3_0_Final.xml6 p" T- W, i5 g9 e3 ^6 }1 {
    │  │              │  │      Gradle__org_slf4j_jcl_over_slf4j_1_7_25.xml; k+ z* y4 r$ l: n! I$ B2 k" Y
    │  │              │  │      Gradle__org_slf4j_jul_to_slf4j_1_7_25.xml
' F3 T8 C9 I  F! k' @9 F    │  │              │  │      Gradle__org_slf4j_log4j_over_slf4j_1_7_25.xml  t9 L. j& d& ^- C# M# e" E! k
    │  │              │  │      Gradle__org_slf4j_slf4j_api_1_7_25.xml
9 ~% s- N0 b0 m4 O5 h    │  │              │  │      Gradle__org_springframework_boot_spring_boot_1_5_10_RELEASE.xml% u' @+ ?1 h$ D/ B
    │  │              │  │      Gradle__org_springframework_boot_spring_boot_autoconfigure_1_5_10_RELEASE.xml7 ^" S2 J* s' V. b
    │  │              │  │      Gradle__org_springframework_boot_spring_boot_starter_1_5_10_RELEASE.xml
0 Q$ g' W  }0 i% v  T% t    │  │              │  │      Gradle__org_springframework_boot_spring_boot_starter_logging_1_5_10_RELEASE.xml
& Z" h$ b# V; U( f$ B    │  │              │  │      Gradle__org_springframework_boot_spring_boot_starter_tomcat_1_5_10_RELEASE.xml
3 G. m$ P8 [1 V4 K% }9 n+ e& t# c    │  │              │  │      Gradle__org_springframework_boot_spring_boot_starter_web_1_5_10_RELEASE.xml
) C4 \9 f7 m5 l4 {3 q/ S    │  │              │  │      Gradle__org_springframework_spring_aop_4_3_14_RELEASE.xml: K" E" s3 D5 [; W( H
    │  │              │  │      Gradle__org_springframework_spring_beans_4_3_14_RELEASE.xml3 ~- G! \2 i2 C% B! H" n) {
    │  │              │  │      Gradle__org_springframework_spring_context_4_3_14_RELEASE.xml
7 m1 g& C( l- I9 W  h8 [. W, [    │  │              │  │      Gradle__org_springframework_spring_core_4_3_14_RELEASE.xml
  o+ t2 N* ?" ]/ M    │  │              │  │      Gradle__org_springframework_spring_expression_4_3_14_RELEASE.xml
; Z+ R. g) J1 l    │  │              │  │      Gradle__org_springframework_spring_webmvc_4_3_14_RELEASE.xml
7 a8 ~5 }' V( e, D8 }0 A# ^    │  │              │  │      Gradle__org_springframework_spring_web_4_3_14_RELEASE.xml
" V3 W5 P4 s, J' [3 {6 g6 J    │  │              │  │      Gradle__org_thymeleaf_thymeleaf_2_1_4_RELEASE.xml
% [6 F  ~2 q6 S* q# S( X    │  │              │  │      Gradle__org_thymeleaf_thymeleaf_spring4_2_1_4_RELEASE.xml
+ j, k' {' D0 S    │  │              │  │      Gradle__org_unbescape_unbescape_1_1_0_RELEASE.xml* r. {1 z% _0 k- G* o) X
    │  │              │  │      Gradle__org_yaml_snakeyaml_1_17.xml
9 d( b1 x: H$ F5 v0 E) ^    │  │              │  │      
! v8 W2 e3 V. i! W7 T    │  │              │  └─modules
3 X3 l/ ?% `5 l/ n% m* K    │  │              │      │  day02.iml+ d0 G1 A# N* Y" m! p
    │  │              │      │  day02_main.iml
- F+ z: `8 |* E2 j    │  │              │      │  day02_test.iml
1 d& z9 r" B5 c  c    │  │              │      │  PageDemo.iml' R5 Q5 C# c  g+ J# ^8 j8 j9 c
    │  │              │      │  RegisterDemo.iml
0 h3 h$ ]2 j; D' q0 [- L    │  │              │      │  RequestResponseDemo.iml
' q5 G$ s7 y0 x    │  │              │      │  ThymeleafDemo.iml
9 l. l: i& K, x7 {* M& m9 |3 b    │  │              │      │  - f' o/ B2 t7 n* c( h! \4 v
    │  │              │      ├─PageDemo
) P4 g% A$ a5 d& Z& Q, a3 e    │  │              │      │      PageDemo_main.iml
) _/ r# k1 c' m$ n" j    │  │              │      │      PageDemo_test.iml
; L/ A) P$ l" a% }0 @    │  │              │      │      $ J8 k1 C3 N  {, s- h
    │  │              │      ├─RegisterDemo- k2 o; s$ u$ `! c: t" ^4 S
    │  │              │      │      RegisterDemo_main.iml1 Y+ v3 n, g: ^- F6 ~
    │  │              │      │      RegisterDemo_test.iml
5 T8 U% k9 A# _% W! Q7 A    │  │              │      │      
& y$ v: G) ^  M$ M# ~' c2 m    │  │              │      ├─RequestResponseDemo2 C+ q5 U! \, g& ^/ @
    │  │              │      │      RequestResponseDemo_main.iml2 N, ~: Y6 f7 _
    │  │              │      │      RequestResponseDemo_test.iml
% C6 {) Q+ R2 c4 @    │  │              │      │      3 K) {; H' L* R& d* ~4 A9 X" |
    │  │              │      └─ThymeleafDemo
* ?% W# y6 v, J  e# E    │  │              │              ThymeleafDemo_main.iml
* Y/ H+ Q" X7 I* Y% _* Z/ b% e1 g2 B    │  │              │              ThymeleafDemo_test.iml% S9 A* I7 s8 ]# t. C3 T
    │  │              │              ; r6 M5 u# f) I  I* _
    │  │              ├─gradle
* t7 a5 R+ t9 t; ]    │  │              │  └─wrapper+ `. ]7 d% n) A' \) s) o. C
    │  │              │          gradle-wrapper.jar0 l( e/ C5 G) _  k+ j# X
    │  │              │          gradle-wrapper.properties! V; d* F, Z* @( r2 s/ D
    │  │              │         
* q  y# _! u7 `8 {# C    │  │              ├─out
! D% j  H* X. a3 x: b    │  │              │  └─production
- a9 R: k- G6 `1 B7 W. R" u$ s# J    │  │              │      ├─classes" _4 q! C8 @+ k
    │  │              │      │  └─com1 G1 G2 C$ K# @
    │  │              │      │      └─itheima
( Q7 r( m% I( j    │  │              │      │          │  MainApp.class( _6 d7 y0 f& K* s/ w+ g3 k
    │  │              │      │          │  8 }, l! z% K5 ?+ k2 x, S$ m" s, k4 \' \
    │  │              │      │          └─controller$ A" `# h. K- Z4 z6 N$ [" O
    │  │              │      │                  DemoController.class
: @- ^/ t# X9 X! X. z    │  │              │      │                  2 A, `: B5 y" ^) _! S
    │  │              │      └─resources
  P9 M4 k# U3 Y$ r) M$ T    │  │              │          └─static4 e8 j$ U0 [7 r
    │  │              │                  login.html' U( i, [% W7 C0 {! `, s( V/ _7 B
    │  │              │                  / y& K; a" W% }, o: d1 w; R, o
    │  │              ├─PageDemo4 K2 M4 f$ ]. ?, x  V
    │  │              │  │  build.gradle
7 n( y! l, u- @9 C    │  │              │  │  ) h0 D. E$ i% ~- H: I) e  J" |
    │  │              │  ├─out& D% {- @. v& K7 B
    │  │              │  │  └─production
2 j* B# H! W6 B$ V5 @    │  │              │  │      ├─classes6 G* D& b, o2 b0 `8 \; H' [
    │  │              │  │      │  └─com' d. {5 P' }  [
    │  │              │  │      │      └─itheima/ v: W2 i0 v4 d: U2 T- Y. W1 }  [
    │  │              │  │      │          │  MainApp.class* I3 l- V9 M0 ?5 i. h+ m, K! j4 N
    │  │              │  │      │          │  * d! M3 l; s! b3 e" s" O
    │  │              │  │      │          └─controller+ }+ B& w% G9 j6 H& c9 }
    │  │              │  │      │                  ForwardController.class9 ^& w- A* C/ M* [; A* H' B# L  E
    │  │              │  │      │                  RedirectController.class
. W7 x; K4 _" h6 p1 L( \    │  │              │  │      │                  TestController.class& g  x9 J9 V( T0 d
    │  │              │  │      │                  
  w6 m, f  S: C    │  │              │  │      └─resources
% l1 \9 N- B  N( O  k1 S& \. s# Q6 ?    │  │              │  │          │  application.properties" H9 l, e% Y# ]3 f3 b
    │  │              │  │          │  3 y/ Z8 |1 ?- N' c7 [% W! o
    │  │              │  │          ├─static
2 C- [7 M, J/ G2 x    │  │              │  │          │      result.html0 H. X5 z9 n6 V
    │  │              │  │          │      test.html
; v# }4 ]3 I7 G- y5 I& g    │  │              │  │          │      + v" S+ b" w5 E5 t# A
    │  │              │  │          └─templates
: l& o$ }" M- f+ i, L$ j/ M    │  │              │  │                  aa.html
* F5 {/ @# F7 f* @- S    │  │              │  │                  
3 o# D# a- H2 P5 A5 G    │  │              │  └─src
" f$ f; p- ~  p* d2 y( k: y    │  │              │      └─main. u6 q/ `/ O/ ~0 e8 B9 |3 D. E
    │  │              │          ├─java6 ^: D; t2 ]& w
    │  │              │          │  └─com7 o$ L4 J  n* y# R
    │  │              │          │      └─itheima
* {8 Z) r& |# D5 S    │  │              │          │          │  MainApp.java
: {2 P. W" M7 P) `/ T- r    │  │              │          │          │  ) C+ s& a" s* T6 N( }
    │  │              │          │          └─controller
1 N# r! @: B' r$ @. Z+ l    │  │              │          │                  ForwardController.java" I% _& r6 i6 C6 x7 c
    │  │              │          │                  RedirectController.java$ \1 `! B7 N9 Y' M: \
    │  │              │          │                  TestController.java* _' z) L$ W4 n7 n* N8 T
    │  │              │          │                  
3 P& X8 M2 C& F+ j% z    │  │              │          └─resources% k) @9 O8 W4 T
    │  │              │              └─static
- z+ X3 ]6 r- p$ |" J    │  │              │                      result.html2 Y7 E! c& V$ ?, {
    │  │              │                      test.html( Y' t  a0 a0 u* F# Z
    │  │              │                     
. ]7 z4 t8 p% `4 s) Y5 w& S: u    │  │              ├─RegisterDemo
( y! T- U# F6 p) C3 e$ R( S    │  │              │  │  build.gradle5 O0 s, a7 o' @- d
    │  │              │  │  ! r4 A1 h! y( i/ d  N0 ?
    │  │              │  ├─out
) d) K+ v9 K  J( A, b8 a5 z    │  │              │  │  └─production  ?: r7 n% D9 r! N+ h3 x! [
    │  │              │  │      ├─classes
( k5 w3 Q) I  Q* P  T    │  │              │  │      │  └─com  a3 [4 q) ^- n" ^+ p
    │  │              │  │      │      └─itheima0 `  X* u" X2 K6 v2 J' R/ R
    │  │              │  │      │          │  RegisterApp.class
- }# c; h0 h; O    │  │              │  │      │          │  
8 ^  b+ O: k4 @' E7 f2 E2 y    │  │              │  │      │          └─controller
6 o) g! j% T$ l/ V( s    │  │              │  │      │                  UserController.class1 r0 ^; w! x6 h9 `5 }3 E9 a2 g
    │  │              │  │      │                  
6 @) _0 j: g5 s8 r# G" {    │  │              │  │      └─resources
9 _: t' r# i# \% Q5 G7 @/ R    │  │              │  │          ├─static9 V1 {/ k# V% @5 F  G
    │  │              │  │          │      register2.html& r) B: r, O( S
    │  │              │  │          │      + i& }; @  [4 g# q0 }
    │  │              │  │          └─templates
" l8 F) R. v/ \4 ]; W& o    │  │              │  │                  register.html
/ `2 k& J& a  M% b2 L8 ]) W    │  │              │  │                  register_success.html4 X- F* S0 e9 n9 e- R" S- Z
    │  │              │  │                  ) |4 y. R- A" p' @: n
    │  │              │  └─src7 B6 }" C3 R& h8 Z; V0 P% o8 S
    │  │              │      └─main
8 c; y$ S8 g& C. ?( o2 H& ~  v    │  │              │          ├─java/ ^6 h0 {0 E9 F% x0 f
    │  │              │          │  └─com% s3 \1 o& t3 B+ P/ ?8 l% @
    │  │              │          │      └─itheima0 s' T+ {8 l( [$ D: `4 R
    │  │              │          │          │  RegisterApp.java
, W8 p/ a1 T8 c! b    │  │              │          │          │  
$ M# `) O5 i# V) @! u    │  │              │          │          └─controller
( a" _7 B: O3 X$ r: A5 m    │  │              │          │                  UserController.java: r) t/ j3 g& ]0 w2 e9 A
    │  │              │          │                  3 k, d6 Z0 R/ u5 ^; E
    │  │              │          └─resources
. _; f  n' i( V+ B- K    │  │              │              ├─static
" d, `8 m9 l6 ?* K    │  │              │              │      register2.html
! `: T7 S# t% W; u& u, w% U+ G    │  │              │              │      " [; s0 Y$ c6 f4 Y1 P# Y' Z  E
    │  │              │              └─templates
# L  J& O1 o% d1 N8 ~# n7 O    │  │              │                      register.html
! w# C6 o% ]# L) F5 {    │  │              │                      register_success.html
3 {/ ^% l4 w, y' y; ?* {    │  │              │                     
: J, c, {% h  t, ], b2 L9 s2 g    │  │              ├─RequestResponseDemo
0 D+ R7 s6 \7 @5 x9 m7 w. [  @# Z    │  │              │  │  build.gradle
$ t  C1 q( s. ?% E    │  │              │  │  & u% M; ~& w) H9 C+ r4 K
    │  │              │  ├─out
& R4 F; ]" u! \    │  │              │  │  └─production
( [2 m* H0 h0 ~    │  │              │  │      ├─classes
/ B" B7 L' z6 D! M- W$ L    │  │              │  │      │  └─com7 G3 K- i- D6 Q$ r
    │  │              │  │      │      └─itheima! I6 p$ @/ i$ V5 \
    │  │              │  │      │          │  MainApp.class% u" W$ V4 F% Z* O, ?
    │  │              │  │      │          │  ' ?% M# K0 E9 e/ p9 v7 H
    │  │              │  │      │          └─controller9 H7 O. x. s  c' R
    │  │              │  │      │                  DemoController.class) y3 ^: i) P+ L5 R$ c& `
    │  │              │  │      │                  
. a3 q) J2 T# J: v( A! ^1 p+ x; `    │  │              │  │      └─resources; i1 M2 K5 J5 u- `& T" [, X$ ~
    │  │              │  │          │  application.properties
  P8 ^# _- I2 W+ t- H    │  │              │  │          │  
3 Z+ D3 p/ {/ H7 \& x    │  │              │  │          ├─html3 H6 p# ?% N8 D' t$ u6 P8 H
    │  │              │  │          │  └─user1 G* h9 d3 U* E) P
    │  │              │  │          │          cc.html
4 J; v4 v+ a5 |: j' {. k% C/ f0 a( \    │  │              │  │          │          5 S+ x/ v9 T% R0 z6 q1 @+ P: q0 w
    │  │              │  │          ├─public
9 n5 V# ]/ k* F! e    │  │              │  │          │      bb.html
2 C! n4 G: a3 A& W    │  │              │  │          │      
3 e- x" L' {5 `* Z: k2 M7 x) k    │  │              │  │          └─static
4 _: W9 O& _8 ]- V- ^8 h  P    │  │              │  │                  aa.html
7 `0 Y$ Z  x3 [1 `2 M) _% Y    │  │              │  │                  
3 ^% V4 i" [, c5 T4 D: E% [    │  │              │  └─src
& Y2 K' D! v7 J1 B+ W* M    │  │              │      └─main
* ]" s% Y9 U1 k% W1 z    │  │              │          ├─java
0 T7 {$ W& W6 H- {8 R2 d    │  │              │          │  └─com
0 z  I: x0 Y& R) C    │  │              │          │      └─itheima! h7 j1 A% G/ L) J: D2 }: Y  F
    │  │              │          │          │  MainApp.java) M7 y8 L: l( }% B
    │  │              │          │          │  
4 z( A6 \. l" V4 @9 h+ k    │  │              │          │          └─controller
2 ^, X1 O- M' d: v, p, k7 n6 j    │  │              │          │                  DemoController.java" O, h, t" i, A2 I7 v  a, k' T7 S
    │  │              │          │                  5 J8 ^$ S% F+ N+ z. Y8 W, N
    │  │              │          └─resources
. ~0 v% p! k. _4 G    │  │              │              │  application.properties
% @' Q7 x1 V3 |    │  │              │              │  
( k3 f% P" \8 d+ ^7 Q    │  │              │              ├─html5 s6 [  l  P- T, W& t* l/ m
    │  │              │              │  └─user
- W; j  A7 V$ i8 H# D    │  │              │              │          cc.html
  F# X1 b. w1 z$ l- }" s/ X, @    │  │              │              │          * ?7 K! t. j+ D8 {5 W' S
    │  │              │              ├─public
! A4 o4 p" E1 V4 q" O, d& ^    │  │              │              │      bb.html
# v2 F! C6 d: l! ^, M, [) \* ^    │  │              │              │      : @! Z! ?8 J% a. [* {
    │  │              │              └─static
2 F3 e8 H  K) A3 }    │  │              │                      aa.html" C$ x6 a3 k( A8 m# U
    │  │              │                     
- n2 F8 q- a  N, V- |    │  │              ├─src
: e. _+ U  h" ^# x    │  │              │  └─main
5 F1 b2 E, Y5 {/ r" G    │  │              │      ├─java
( ?$ u% f& b9 D2 h    │  │              │      │  └─com; E$ @7 x4 K% a& A: L+ t6 f
    │  │              │      │      └─itheima4 {5 f  P3 A$ l
    │  │              │      │          │  MainApp.java3 b# g5 u* B8 c7 G8 q4 S
    │  │              │      │          │  $ \) l7 l8 W9 D3 u) g
    │  │              │      │          └─controller) `+ P2 L3 h* W# Y9 X/ Y# f4 d+ Y
    │  │              │      │                  DemoController.java2 E7 @1 s" ?5 J) `
    │  │              │      │                  
: m2 u( x2 v& {/ c3 W    │  │              │      └─resources
: r% a. o& ?6 D2 U    │  │              │          └─static
, Z' p) \: j1 v! U' Z    │  │              │                  login.html
: ?$ N9 Y% [5 W! p2 ]1 T    │  │              │                  2 P, S# j; |7 N; o
    │  │              └─ThymeleafDemo
. H. T6 a7 R; u: h    │  │                  │  build.gradle
8 h; M# b2 r, W    │  │                  │  3 ?% F: h& Z: Z
    │  │                  ├─out$ ^+ a' g7 X' x6 t
    │  │                  │  └─production; V. q8 Y' M9 G9 ~
    │  │                  │      ├─classes
( }' m% D: T/ W, ]; g# R4 y' X    │  │                  │      │  └─com
. N% P' `2 x5 @) ^    │  │                  │      │      └─itheima, `" R; o6 G7 w9 Y5 u) S
    │  │                  │      │          │  MainApp.class
0 t; _& f/ c+ b    │  │                  │      │          │  - A% e* H! ]' I/ t" q! ?
    │  │                  │      │          └─controller
1 p% V1 ]" [  E0 u4 O  Y! y    │  │                  │      │                  DemoController.class
& d% ~) T4 A$ n1 O2 M    │  │                  │      │                  UserController.class
4 Z* Q9 M/ B$ M' X! {/ L    │  │                  │      │                  
( A' _8 V6 X, ~3 b    │  │                  │      └─resources
3 k: z* s) {  E* h    │  │                  │          ├─static2 E1 _) W; g& L8 ~& |4 _% E( r* d
    │  │                  │          │      login.html
7 u4 `( @/ J1 w3 t    │  │                  │          │      
& D* B& s% u* z  N% o* C3 C% z    │  │                  │          └─templates4 @: W* l9 v' n) }
    │  │                  │                  index.html/ |" Y, D# p( a
    │  │                  │                  testpage.html; i9 u0 ?: b3 M/ J* z4 s# R6 l
    │  │                  │                  
+ Y' {+ A7 o5 I6 _: H( ~8 I/ Y0 Z    │  │                  └─src
' d( }  l9 V/ N8 q    │  │                      └─main/ k. |. z7 e( ~" D5 P7 S0 _
    │  │                          ├─java) e( v! Z8 V! v
    │  │                          │  └─com
+ z+ a& [2 i% ~    │  │                          │      └─itheima
: q. r2 N' y4 U7 A& k0 g. m    │  │                          │          │  MainApp.java- X; @! s& `2 o
    │  │                          │          │  ) I: Q9 C5 L5 M1 M6 B5 Z7 _8 y
    │  │                          │          └─controller
6 V5 w0 S2 w- Y/ z- C    │  │                          │                  DemoController.java* |7 a# g5 x' m  r2 z; p, i
    │  │                          │                  UserController.java
3 J/ Q- K3 [: A( n7 s- w+ z8 `    │  │                          │                  
" Y1 D/ F: U% @, {  A; j3 x, T    │  │                          └─resources) I/ W. Y) i) d/ O( x  y& }
    │  │                              ├─static
8 }. i5 i9 @, z1 }7 N" z. p: S    │  │                              │      login.html" h; o% r4 V- H' r6 V( e: ?4 r
    │  │                              │      # ~1 c! i2 ?' V/ Y  M0 X  {
    │  │                              └─templates, [: u9 U0 `4 s
    │  │                                      index.html  j7 D  ^, s: _3 ~4 @' m) X
    │  │                                      testpage.html/ b) }" w6 ], q0 l
    │  │                                      4 E  Q! }8 K1 c) m" t# R
    │  ├─day03
9 G# _$ P9 g( }+ P    │  │  │  day02回顾.txt
5 Z! k& `' ~, w0 i    │  │  │  视频.md/ ?( P1 A& ]- r6 C
    │  │  │  购物车.png
6 o. |) a  H& u6 r- z8 T# w/ n    │  │  │  
8 H% j/ `4 T, S    │  │  └─code&资料1 p/ |4 u/ F. P  v+ |" [+ c. D6 a
    │  │      └─code* s) |9 y5 L" p1 J' ?0 n& @$ P, V$ H# P
    │  │              day03.rar
5 c% ]: Y! \* Y$ `# h# k* L$ `    │  │              0 z, C1 c, h- L$ {, R. v
    │  ├─day04
, }" G- G7 j3 E# s% |; F; T2 P9 P    │  │  │  day03回顾.txt6 g" q  t: n4 P9 o8 r
    │  │  │  视频.md
, T: n: x8 _) a9 B; }6 Q1 v    │  │  │  , Q# _" X$ T: B
    │  │  ├─code&资料$ H. m7 }* Z* \' \8 Z
    │  │  │  └─code# [- |- a! h- S. [  C2 m" T
    │  │  │          day04.rar
; q, s7 I% E. e6 z" d0 O    │  │  │          / }5 l" O- a# ]& k; H. j+ d
    │  │  └─linux
' P5 I7 T4 X$ j5 J! |% e    │  │      │  笔记.md
# }; t, \1 _; y- z    │  │      │    b6 @% v) N. ?, v7 O
    │  │      ├─img" x) r9 q* }* E. p1 P1 j% s1 C% w
    │  │      │      01.png
- l( u8 |/ G- N2 `* h    │  │      │      02.png9 X4 ?; }  [8 M) G1 b6 ?
    │  │      │      03.png; {* x: `3 }, v; \6 R+ V
    │  │      │      img01.png$ L2 _3 V$ ~( D. y
    │  │      │        H# Z- j* X3 y" k  M; R- \
    │  │      └─资料- ]+ S' A+ W* d2 s# Y1 V9 y! |
    │  │          └─linux# j+ L4 a, ?! ^) v6 N" C, ]: U! j
    │  │                  centos安装.docx: F5 k" G) L# D4 z' u
    │  │                  
* E0 c, V, b7 u# o. T  L1 J    │  ├─day05
! O9 Z2 q7 W0 S0 n    │  │  │  day04回顾.txt. t3 c- E) {: m4 j5 u
    │  │  │  视频.md' D, `! L( x8 n1 m5 q
    │  │  │  
& J) Y& s' J" Q' g7 i: |) F; h    │  │  └─code&资料
% D" h0 C0 G9 E+ o2 O, v$ G; i    │  │      └─code3 V/ G: X( [5 [! l; _! P
    │  │              day05.rar' }  A* [! R0 f2 \: s# y
    │  │              ; g# P$ }7 P  x' O9 i
    │  ├─day06; b9 q" y3 v, {/ ~1 M! y
    │  │  │  day05回顾.txt+ h3 k' v" l# e% v8 ~, U! d
    │  │  │  视频.md8 S4 N2 {" m( \2 k/ L
    │  │  │  
  @) y2 [& y$ `9 V! U    │  │  ├─课上操作记录
" ]! ~& T% G  y' [4 v3 m    │  │  │      数据记录的操作.sql
) \4 X3 I" O) i" A2 G# g    │  │  │      约束操作.sql
% v( }; S  [* S  Q    │  │  │      表的操作.sql
7 i+ @# T) ]5 g& R: C7 r    │  │  │      表的操作(二).sql
9 j% t$ x) e- f9 d8 {- v    │  │  │      
. w4 \; [. u" [2 E    │  │  └─资料
9 A5 n4 ^  T! ~  q, j8 @    │  │      └─mysql练习
  j6 T# n! A& X; c: ?3 q    │  │          └─mysql练习0 [+ m- f- C+ g- P4 Z: _2 M  F
    │  │              ├─第一天单表9 A, ^+ k! k9 k5 D% }! P+ N2 k1 ~
    │  │              │      sql练习题目.txt& o! f- U, ~. H+ i" h& h
    │  │              │      sql练习(带答案).txt
0 X1 t/ l/ b$ f8 o6 M    │  │              │      数据库以及表的CRUD.txt
1 Q5 x5 h4 H+ ?! e7 x! e    │  │              │      数据库以及表的CRUD(不带答案).txt( R3 u) `6 ]& `$ U. p( z) u( o
    │  │              │      7 [+ j* k# V" A: j2 N
    │  │              └─第二天多表7 v! ~* w9 u. T& p$ t' ^
    │  │                      建表语句.txt
- F$ N. g' J6 p    │  │                      练习参考答案(加深).txt8 z; @) b$ C3 n- {# |% |$ r
    │  │                      练习题目.txt. c7 q, P  |, O% f* O2 P" }
    │  │                     
$ Z& B% g5 A( V( _) d- G6 C    │  ├─day07* ^( I, c  B+ T
    │  │  │  day06.txt8 u2 C* c$ I1 F& y7 Y: `, z$ Z) J$ X
    │  │  │  视频.md
7 M! ]# _, {6 z# D    │  │  │  
( V/ e1 s( _5 L$ L& o    │  │  └─code&资料: }9 u! V# G0 x  w1 M  k2 N
    │  │      └─讲义
6 i/ }/ s* P) J  P% U    │  │          │  笔记.md
4 H+ E5 Q" O# T8 u3 x# U4 H) u    │  │          │  
# U6 _6 U$ L, ]    │  │          └─img5 k: }/ p1 Y  J. e* _$ {: {
    │  │                  01.png  E3 \$ E- n4 P7 D- l- i2 K9 l
    │  │                  02.png  J* y( @5 }8 R4 v  C% ]( T
    │  │                  03.png1 U! u* W/ Z1 V0 Y) ~' O# r
    │  │                  04.png5 u2 T3 z: i' Y  ]
    │  │                  05.png
3 ~( N4 l4 {/ ]4 k0 h' \! \* b    │  │                  06.png# |( _' G3 M$ O
    │  │                  07.png
- F( N1 M' _7 H* s+ l5 r- r0 ?' d    │  │                  08.png
: l0 m5 U9 T  W    │  │                  09.png& m( `) p" J1 @5 ]
    │  │                  
2 f$ h0 D, p8 g/ B* ~8 E$ _4 Q6 j    │  ├─day08
3 t; L% N' P7 q    │  │  │  day07.txt
8 ~" P5 a" X" Q5 O( I1 i# {4 l    │  │  │  视频.md* v1 K, e$ d2 L0 ?( L
    │  │  │  
, G& I' [9 P( B3 i6 D' s    │  │  └─code&资料1 K5 l  p9 v6 k% R
    │  │      └─code
& H; U3 L% {" l0 ~! r! q* w1 Q4 z    │  │              day08.rar; J& S$ R1 t. j
    │  │              $ x8 ^3 R0 b3 }# W
    │  ├─day09
* a/ i" S/ p4 P9 u) f  z    │  │  │  day08回顾.txt0 v2 R; E  C* R  m0 `; h
    │  │  │  视频.md
/ ]5 U" ?9 L3 Q& K) d! U/ L. k& u    │  │  │  + U# X  m/ @1 V9 K, P0 L+ y5 @: I  n0 \
    │  │  └─code&资料
1 f) B1 M$ ?- P/ I2 `! O    │  │      └─code9 u' Q9 w5 t5 \  R
    │  │              day09.rar
* [% f. Z/ \% l& H' @1 e# u& c    │  │              
" w5 t6 h( N8 z9 P; F- i! V5 S    │  ├─day10& Y' Q2 a* ?% K' ?6 J, `! N
    │  │  │  day09回顾.txt
+ n! o& n- l' K- b1 J    │  │  │  视频.md9 u) v# O* u' ^/ B; g
    │  │  │  # u8 z& F! o. A1 K0 G' {/ |
    │  │  └─code&资料
' n% T% P" M6 @: |( z" I    │  │      └─code
% Q5 S) K5 ]2 e    │  │              day10.rar$ N' M$ b/ x+ r+ E& c* |
    │  │              ) q0 }5 A+ X/ c' K# W' y7 u
    │  └─day113 x4 i( J* j+ @8 R- b& {( E
    │          readme.md2 j+ Q0 m6 ^& B1 R4 c
    │          7 c1 ]" s9 Y# Z9 F2 [2 k- z9 y
    ├─05_第四阶段-springcloud和区块链彩票项目1 }& |6 G/ J0 H% G) G
    │  │  readme.md
1 M" x; U, F! Q/ H    │  │  下载地址.md" T0 |0 A5 ?1 r" b" N% i  j8 @
    │  │  : U5 V4 w: f5 F3 W4 S
    │  ├─ppt
! K& O1 t3 ?  b9 t! v5 A    │  │  │  index.html
0 Q& t7 H2 S! p7 a) v: ]. N    │  │  │  
# W3 Z! C& J9 F$ s3 d% E    │  │  ├─css
" K" x  q' ?! T" w+ q3 f2 p0 ]8 T    │  │  │  │  fira_code.css4 x7 b! j2 G1 z7 m4 p$ f! U$ c5 d
    │  │  │  │  reveal.css4 W. o$ V+ C$ k  {7 ?! H
    │  │  │  │  reveal.min.css7 q" W6 Q& }) T* H
    │  │  │  │  reveal.scss
2 `, w2 _' }( y  a! J+ s    │  │  │  │  style.css0 z+ r. [2 g% ^% R5 I* H
    │  │  │  │  
& K+ B0 Q" P4 d% ^+ D8 S    │  │  │  ├─firacode
: I7 T0 G2 C6 N  p: ?( u6 u; n: G( c: X    │  │  │  │  ├─eot
9 W5 q/ w: S, e1 Y0 Z; F; G    │  │  │  │  │      FiraCode-Bold.eot/ z3 G' r  m" k* H
    │  │  │  │  │      FiraCode-Light.eot/ Y9 Z9 |8 |- q1 j& \/ q& z: R4 ^
    │  │  │  │  │      FiraCode-Medium.eot
$ r! z. ?- e) o$ n3 H    │  │  │  │  │      FiraCode-Regular.eot2 ^, P7 \+ {7 S2 L* C' Z8 I/ N
    │  │  │  │  │      ' R& A0 ?/ d# h6 u
    │  │  │  │  ├─otf
( X2 e7 d6 N! Y: l6 }    │  │  │  │  │      FiraCode-Bold.otf
/ H- a5 L4 |1 _) Y    │  │  │  │  │      FiraCode-Light.otf
3 E2 d3 \- M6 y! X, u0 v    │  │  │  │  │      FiraCode-Medium.otf' e* \, h' Q, n. D
    │  │  │  │  │      FiraCode-Regular.otf1 [! g/ M& V  X0 h% x7 ~! E5 @
    │  │  │  │  │      FiraCode-Retina.otf! D) H% x/ ], v2 E3 x7 h8 Y- S0 n
    │  │  │  │  │      
/ W  ~0 Y2 E- X    │  │  │  │  ├─ttf
* Y5 S+ x" n0 e( d+ ]    │  │  │  │  │      FiraCode-Bold.ttf
! C/ k7 P/ J! m: ?5 }    │  │  │  │  │      FiraCode-Light.ttf
; ^8 w1 U- U& L: [0 k, C    │  │  │  │  │      FiraCode-Medium.ttf
- ^: o+ ~+ s0 u' y+ Z) |- k    │  │  │  │  │      FiraCode-Regular.ttf# R- H3 u8 N% Q8 P" z
    │  │  │  │  │      FiraCode-Retina.ttf
* B% a; ?* k1 A& Z9 O! D& I    │  │  │  │  │      " z7 |6 C/ r  @" ]
    │  │  │  │  ├─woff4 k" G# p3 N9 O
    │  │  │  │  │      FiraCode-Bold.woff
' j3 j( j% S$ H' G) j% u: t    │  │  │  │  │      FiraCode-Light.woff
) z4 `% F; o$ y$ T    │  │  │  │  │      FiraCode-Medium.woff: I4 d* z& }/ n- b0 j& A
    │  │  │  │  │      FiraCode-Regular.woff6 ^& Z$ Q% h* X' d# y
    │  │  │  │  │      
. a5 x4 Y* u4 m4 |, K- |, D% \; n    │  │  │  │  └─woff2
+ z; Q2 }; s6 p- u: w* j# W3 V    │  │  │  │          FiraCode-Bold.woff2' j+ D  K; K: _; `
    │  │  │  │          FiraCode-Light.woff2
+ T% r5 k$ v. L5 \    │  │  │  │          FiraCode-Medium.woff2
0 ?5 g: q$ N$ D0 l1 p    │  │  │  │          FiraCode-Regular.woff23 r( t# W6 T2 H  Z9 L6 B5 K  n  }
    │  │  │  │         
0 Q5 B; c- F* ]    │  │  │  ├─print6 l; B0 F; h# ?5 p& ]
    │  │  │  │      paper.css
( }9 r" k& K6 r  `, k    │  │  │  │      pdf.css
; c7 E! b0 Y8 r    │  │  │  │      - i5 ~" ~6 D' S# J% p& r* U
    │  │  │  └─theme
# D2 _& a* ?  g1 Q* b9 ?* Y+ ~5 [    │  │  │      │  beige.css
1 }5 z2 B3 b& `; M6 C    │  │  │      │  black.css
; k% L8 P! i9 v/ @6 ?' \- P/ S    │  │  │      │  blood.css
' P1 n1 J; \: |    │  │  │      │  league.css0 W# H  m; k; L
    │  │  │      │  moon.css
- ^) A( c2 n3 H& g9 `    │  │  │      │  night.css0 W- I5 i4 E0 L! `
    │  │  │      │  README.md5 |. N- p: y! C5 _3 l3 M
    │  │  │      │  serif.css
8 V  i+ h$ y+ h* \    │  │  │      │  simple.css
# @' p/ r! S( E( s9 s3 e    │  │  │      │  sky.css, W. c0 h& ]2 p  Y+ z7 }# }% P
    │  │  │      │  solarized.css$ h/ Z3 f, j/ @: H% T: G$ `3 B
    │  │  │      │  white.css& T" D- b$ E. v% x# C) R7 x
    │  │  │      │  
! A9 F  `( }$ |+ Q: x# ]    │  │  │      ├─source
" G8 r! }0 a6 D0 ?( `8 r2 \    │  │  │      │      beige.scss
+ h, {% r) L5 ^    │  │  │      │      black.scss" h: K# m: e6 ?* F# H. S
    │  │  │      │      blood.scss) R7 V0 r3 ^6 b- }- [" |# b
    │  │  │      │      league.scss
1 }8 C% l/ r6 I9 N, p' j    │  │  │      │      moon.scss
4 F+ w' C2 @- W, O" t' l: v  m- Q- y    │  │  │      │      night.scss! i- L2 w; v, u" e0 g
    │  │  │      │      serif.scss
4 ]' m) @6 A: l8 d5 [! K    │  │  │      │      simple.scss9 }# @2 L3 Z, F0 y! E
    │  │  │      │      sky.scss" i) r; r2 N7 z" n, Q3 R
    │  │  │      │      solarized.scss
( _; d3 E3 A( v" L    │  │  │      │      white.scss3 U. ]2 z# f0 a& m
    │  │  │      │      0 Q5 o, x/ Q" m2 A: B: f6 ~3 Y' S
    │  │  │      └─template
+ T, {; o' F8 B+ y    │  │  │              mixins.scss! R& ^' a* l' P2 h' o" I# v
    │  │  │              settings.scss- d7 D8 N7 e) d" T; P" g+ o
    │  │  │              theme.scss
+ \, c0 a1 I  p! d: ^9 ^  U    │  │  │              
9 \5 z( z1 F' q% Q8 n! P    │  │  ├─images
6 R1 @2 [- Q2 Y3 s4 Q    │  │  │      active01.png
% ]9 {- q* R' b! a7 `0 ?    │  │  │      c.jpg1 S, V3 ~5 \# ^) u: M  U
    │  │  │      eureka01.png
1 ^( L) g9 X- J, U: T0 D# c1 Y    │  │  │      eureka02.png
! u( Z' N5 t5 e4 `& e) y- ]    │  │  │      eureka03.png
3 Q$ U% B7 {, d; ]    │  │  │      feign01.png
' i3 a6 M9 K* X. ?8 m    │  │  │      feign02.png
& }. p% e0 H+ x; d% O: w( I3 W4 j    │  │  │      feign03.png
( t" ]! D8 J, u    │  │  │      feign04.png+ Q5 F5 g3 K4 J. A/ z( b. K2 \: W
    │  │  │      feign05.png/ B; T3 w  h, S$ ~
    │  │  │      funny01.png
; x+ H  Q2 ?; ?7 \/ w& K& f" N    │  │  │      gateway01.png
; ^; w5 t2 x/ @, y    │  │  │      gateway02.png4 T. |# N5 a$ F. G  h  {# n) z
    │  │  │      gateway03.png
+ A2 m8 N7 u$ S    │  │  │      gateway04.png
. |; V. O7 i, F0 a/ n' S' z6 K    │  │  │      gateway05.png
$ x( d$ I+ u2 Y    │  │  │      itheima.jpg- L4 g. C+ T/ e- r' L# b
    │  │  │      itheima.png
3 ^2 m! x4 B+ X- O5 [) [    │  │  │      jlewis.jpg
4 D4 j0 S) v9 k    │  │  │      loading.jpg4 @* ?3 p; R; F2 x- l5 b9 @
    │  │  │      lottery01.png
6 i' c* P7 [! K$ Z5 S    │  │  │      lottery02.png+ }  W3 D$ ]7 c. I8 u# _8 s
    │  │  │      lottery03.png
. U1 F( W' C* g6 }0 t; ]! ]5 T    │  │  │      m.jpg; H9 Z+ k( k8 h4 f( _& N' _
    │  │  │      mb.jpg5 M( O1 S2 W; V+ m2 W
    │  │  │      mf.jpg$ T6 L  }+ m3 R% c$ Q
    │  │  │      micro01.png2 @& \$ E, b. s- Y( G  ~6 p% h
    │  │  │      micro02.png
2 A1 j  K+ n8 V/ S3 a3 l+ N% l: P1 ~    │  │  │      micro03.png5 {8 Z3 X+ V9 O+ x1 k2 F
    │  │  │      micro04.png) D0 z+ R! ?" p$ m# H
    │  │  │      microservice01.png2 F8 H  s* E1 ?# k2 ?
    │  │  │      MicroServiceArt.png- t9 t( o* f3 d4 B8 D5 f: R4 T- L
    │  │  │      s01.png' c, u' B  I, i# J% ]# q
    │  │  │      single01.png4 m) @8 O5 k; f2 I5 j; U) T
    │  │  │      single02.png
  _& P7 L9 a* p0 W! R- n+ W    │  │  │      single03.png6 ?% D3 w( _' W3 l% Y
    │  │  │      SingleApplication.png
1 F9 R% T! n, S7 w( f    │  │  │      4 }( M  n0 G! d
    │  │  ├─js% I0 f  m2 ?3 \( v" L" b
    │  │  │      reveal.js
5 l! T( l# l- m( @! X7 j; s    │  │  │      reveal.min.js$ N  U. c9 u! w% f* K9 L7 B
    │  │  │      
( T1 T( Y& O! E    │  │  ├─lib
) d4 |7 P" B7 D# u- x    │  │  │  ├─css
$ d. M2 C( a4 A$ |$ B    │  │  │  │      zenburn.css3 I1 {4 U* T0 m
    │  │  │  │      
$ c$ Z2 Z8 N8 C    │  │  │  ├─font* x% W- t  |: q, S
    │  │  │  │  ├─league-gothic
: y9 N1 w+ m' i* f* N% H. j    │  │  │  │  │      league-gothic.css
' F0 Q* ^) Y0 q8 @    │  │  │  │  │      league-gothic.eot+ W) i: \5 X9 j$ Y, p
    │  │  │  │  │      league-gothic.ttf% s3 R- V; k7 Q! T" }  i
    │  │  │  │  │      league-gothic.woff/ f# q0 ]- T' g; u6 Q
    │  │  │  │  │      LICENSE8 y' f* B" I( s* s
    │  │  │  │  │      
$ P' u, R$ D, }- K( B; D9 {: a    │  │  │  │  └─source-sans-pro$ {% Y* F) `2 O8 g  A
    │  │  │  │          LICENSE
! X; @% Q$ M! b0 P    │  │  │  │          source-sans-pro-italic.eot/ }- |5 u8 r8 B$ ^5 M
    │  │  │  │          source-sans-pro-italic.ttf1 [6 [0 F8 V: Z
    │  │  │  │          source-sans-pro-italic.woff3 a9 L/ j/ S8 [4 r* Y; d& f% G
    │  │  │  │          source-sans-pro-regular.eot5 G8 h& b7 ^7 X0 X% r* b
    │  │  │  │          source-sans-pro-regular.ttf
3 L- A" {, s8 o    │  │  │  │          source-sans-pro-regular.woff% c7 }/ O0 f) v
    │  │  │  │          source-sans-pro-semibold.eot* X! C4 ?4 P6 ~8 _
    │  │  │  │          source-sans-pro-semibold.ttf" m+ v7 b) ~7 W2 B" J" M' r
    │  │  │  │          source-sans-pro-semibold.woff
* [- |; P, m' h# F' _    │  │  │  │          source-sans-pro-semibolditalic.eot# K( f+ _( t" N% ]5 y" w3 Y
    │  │  │  │          source-sans-pro-semibolditalic.ttf
/ Z1 ?( _- y$ p, J    │  │  │  │          source-sans-pro-semibolditalic.woff
  p$ K( `) r8 J5 Y! a    │  │  │  │          source-sans-pro.css
5 U; p. a3 W; Y    │  │  │  │         
* v7 ?# q0 D/ f    │  │  │  ├─js# f3 m% f( x% f/ e9 F( V1 G, Q6 e
    │  │  │  │      classList.js5 z' f) h4 `' @
    │  │  │  │      head.min.js- x' N) P# _* A9 V. R# E+ V
    │  │  │  │      html5shiv.js
  c! ~6 f* E; o0 |    │  │  │  │      
: _1 R5 e: X) t' \& n    │  │  │  └─plugin
& v# ?# u4 I+ P8 r( C  b0 q* M    │  │  │      ├─highlight
+ J: J/ e2 I' U% _9 w6 ]* m$ C    │  │  │      │      highlight.js4 D: |' s+ Y" M2 P
    │  │  │      │      ) A' }  w5 l, m4 W/ _' B6 \
    │  │  │      ├─markdown
6 S$ p; Q2 h2 k6 y, K3 e    │  │  │      │      markdown.js. u5 ^) G6 [( g% n1 b6 F$ E
    │  │  │      │      marked.js
4 j7 b& d* d% N2 F. I    │  │  │      │      3 k# G, M1 W( u4 P, @) M
    │  │  │      ├─math, x1 w) C! I# @
    │  │  │      │      math.js
" f4 \3 F6 r# W  E    │  │  │      │      3 a& t, Q# q8 P6 {0 |: u
    │  │  │      ├─multiplex% O3 D1 m) \$ i. e" F+ O& B
    │  │  │      │      client.js
& L* V; n$ |) e$ X2 O    │  │  │      │      index.js
+ Y# f4 w# f# b8 W' \( V! \6 a    │  │  │      │      master.js/ I1 @6 Z- D6 m/ L2 d0 R! S" ^: Z
    │  │  │      │      package.json
/ P# \( F! P/ C0 E( s* k3 C    │  │  │      │      7 v2 \: S, P( H2 B( u9 j& {
    │  │  │      ├─notes/ e. d) \; z8 T/ Z
    │  │  │      │      notes.html  v) l  T5 Y! E
    │  │  │      │      notes.js4 D/ V9 u3 f; G- C# {+ ?1 U$ r
    │  │  │      │      
( x5 ~6 |2 i+ A) v9 [/ [    │  │  │      ├─search
; a3 P2 B$ e4 \9 C    │  │  │      │      search.js1 u& B- D9 d' ]& r' ^, \5 I; s
    │  │  │      │      3 S0 }4 V3 ]' V+ q! y
    │  │  │      ├─tagcloud' ~/ R( K/ P9 j8 h* H
    │  │  │      │      tagcloud.css, e+ Z& y% ^3 f$ M
    │  │  │      │      tagcloud.js$ m6 g, F3 y5 z" }0 ?& [
    │  │  │      │      tagcloud.min.css
/ W$ W. j7 \: [% p    │  │  │      │      tagcloud.min.js9 A) T' W  i# }3 q6 p2 \$ A2 G
    │  │  │      │      5 ?' E# `2 o, _8 N) t9 O
    │  │  │      ├─yungen$ n) R3 M0 F- B
    │  │  │      │  ├─css
' y% T7 B- V& B. ]    │  │  │      │  │      yugen-logo-hideOnLoad.css
! G2 ?' s% b" k    │  │  │      │  │      yugen-logo.css
, D! O2 F+ E7 \3 U! p1 I  l( _/ [- S& i    │  │  │      │  │      + \; C. N" \, w9 z# `
    │  │  │      │  └─js/ Q7 {; e' N5 u* [0 B
    │  │  │      │      │  yugenlogo.js
5 W/ c  G. b' F9 ]    │  │  │      │      │  yugenlogo.util.js" ~$ S* K7 W4 v! `
    │  │  │      │      │  
) ~* @3 M  L' {& c    │  │  │      │      ├─input; x" q4 D' h  s. z( A3 M4 R9 V  I
    │  │  │      │      │      yugenlogo.input.move.js: g4 `9 ?7 e/ N0 e8 x! q  n) ^
    │  │  │      │      │      yugenlogo.input.orientation.js
: X5 S! q1 x0 E6 \# g    │  │  │      │      │      yugenlogo.input.press.js9 S' d  e/ Z; F0 ^' {4 ]# D8 _
    │  │  │      │      │      ' `8 _% T5 Z2 }8 c0 v
    │  │  │      │      └─libs8 R2 T) S: Y8 X
    │  │  │      │              jquery-1.4.4.js& Q4 q/ j. a3 i) N! Q
    │  │  │      │              jquery-1.4.4.min.js% y" K9 x7 K* }/ X
    │  │  │      │              , u: X) Y' G4 [* ]* D1 E$ q( f
    │  │  │      └─zoom-js: d" @. b  u( R
    │  │  │              zoom.js
+ {2 B' p: V  t. |    │  │  │              
! O5 S2 b0 e. g  E% o    │  │  └─plugin
6 Z2 O  R8 l2 g+ d    │  │      ├─highlight
+ O) h; y' l  [5 E    │  │      │      highlight.js8 J! y! d# T" ?1 |( J
    │  │      │      
" Z; Z. n, q/ _% D9 _    │  │      ├─markdown3 n' e: ], M! x* N1 `9 r) z2 a
    │  │      │      example.html
& ?/ k2 K3 U( v8 P; W! p/ z5 b    │  │      │      example.md
; X+ u$ B8 z, i8 r1 R/ B    │  │      │      markdown.js
9 L: t, d7 a& _' t6 G! }% Q" a0 F    │  │      │      marked.js: x4 [3 i& I. t
    │  │      │      
, h* ~  B5 f8 S' s4 D/ u    │  │      ├─math9 x4 p$ @1 v2 Y2 D
    │  │      │      math.js0 W3 ?1 o( U1 u( i  \* Z
    │  │      │      0 _2 T( r# C% x. a- t" `' u/ d
    │  │      ├─multiplex1 K' w0 M" y7 z# C2 Y7 ]
    │  │      │      client.js) y6 l, A+ o% E) S3 p% Q
    │  │      │      index.js
. Z7 t& R' R% n, q8 {) ^    │  │      │      master.js
+ W* A4 ^1 {* \8 e7 w    │  │      │      package.json+ b. H1 e6 K: u/ A9 ^
    │  │      │      
7 k4 n2 V* A* [    │  │      ├─notes4 k7 T4 V! [$ q$ u* r
    │  │      │      notes.html" }6 v! Z- A+ k+ r* W) g: A; S2 z
    │  │      │      notes.js
& g* Z  k9 s5 T    │  │      │      $ v8 f& a4 _2 X* A. M; d2 n
    │  │      ├─notes-server" {: f* Q7 Y3 g) E/ G2 G/ [- p+ M
    │  │      │      client.js% m; g8 b/ j6 Z8 K9 e2 ^) L" X/ l
    │  │      │      index.js
2 Y6 i  b) T) F2 Q, n0 m: [3 o    │  │      │      notes.html7 I! E# b( P' k4 g1 l
    │  │      │      1 d* f# N% y/ W, g; M
    │  │      ├─print-pdf
; W/ {% L& v8 X/ A' {! d+ e    │  │      │      print-pdf.js4 O+ Q, {! j! H, Q
    │  │      │      
) K* s9 h, D: v) N# F    │  │      ├─search5 R0 u: f! }7 G0 V
    │  │      │      search.js
% [; _8 ~0 J" o: ?9 a  @$ \    │  │      │      ' q1 Q# R/ R' f
    │  │      └─zoom-js: x& O4 Z& r* e& u
    │  │              zoom.js
4 Q* f4 t1 l5 i. g1 D% c! c% ]* B    │  │              
9 S2 ?, P* B- c* p6 G& b# W    │  ├─springboot版本彩票项目
7 {. V% t, g# Z" Z    │  │      readme.md
5 M9 ^% |) T0 v4 K! h2 X. P- m# @    │  │      4 q( P. g5 m3 I: h( q; t
    │  ├─sql1 |2 C( T# X% M: g8 {' c
    │  │      info.sql
* D! m9 P. v! p& a  {, }& ~    │  │      user.sql
0 ?2 P/ F$ ^# ?* f! `3 L' M. d    │  │      / U9 X+ C3 \- l6 i+ M- [( ^
    │  └─工具类, b- Q. X9 `% ]9 r  a9 h! F6 d
    │          JsonUtils.java5 l+ r5 Z8 P3 x
    │          ResponseVo.java
2 d" l: \( Y9 c    │          UUIDUtils.java
4 H5 R/ K2 h3 g    │          2 ?8 _& h+ U& K# G
    ├─05_赠送课程-手把手写比特币% {" z+ K% C8 M2 k5 b: n- ~
    │  │  readme.md) q8 @3 r: w; j, E. k
    │  │  - G# s8 ~0 |$ y" c' w
    │  └─code
  E$ y% f, r$ Y+ M% C, w    │      │  bootstrap.sh9 \; K4 ~2 R3 }
    │      │  
+ Y* c/ I7 `2 X6 t+ v4 l1 y    │      ├─Note_blockchain19 x/ {& S4 e9 B- @+ t
    │      │  │  build.gradle$ c: N8 s) e8 @% P, n
    │      │  │  gradlew$ B6 _0 p( d- v& @. a
    │      │  │  gradlew.bat
7 D  F0 I0 g; j4 O    │      │  │  note.txt
, U! o! p! V: l! @7 Z    │      │  │  settings.gradle/ u' q2 w* k- o3 X; n
    │      │  │  
& q4 k8 u! a7 G1 U! [    │      │  ├─.gradle; x: i& Y. B* Z  Y
    │      │  │  ├─4.0
2 J* \9 N6 B/ H9 \$ X6 F, q    │      │  │  │  ├─fileChanges
3 X: q8 ?" z0 u& o" a" q1 U  S    │      │  │  │  │      last-build.bin' P/ `0 ~! E( e) H2 G
    │      │  │  │  │      ; }8 `: |) c5 |1 t8 T$ p; m
    │      │  │  │  └─fileHashes" d2 \7 Z8 ?3 M6 T8 E
    │      │  │  │          fileHashes.bin0 Q8 ?* j" D8 ?- D  f
    │      │  │  │          fileHashes.lock. |( [0 {5 T4 J/ w; R
    │      │  │  │         
  }+ d# c# m" n' s8 p9 j* ^    │      │  │  ├─4.4
  M8 S( g2 W3 a7 S* |0 K+ ?    │      │  │  │  ├─fileChanges
. I$ V. [7 c0 \, K3 `% Z    │      │  │  │  │      last-build.bin, v5 N1 D8 [& M  E3 y
    │      │  │  │  │      7 N" S! T5 p3 ~& _0 y5 c4 i
    │      │  │  │  ├─fileHashes0 a+ V0 P; g4 v: z( K
    │      │  │  │  │      fileHashes.bin6 z# A# b$ U! }) z
    │      │  │  │  │      fileHashes.lock
2 g8 l; S3 P2 _5 _    │      │  │  │  │      
8 P- U* Z. H1 H: `    │      │  │  │  └─taskHistory
8 C$ e, ^0 J/ ~# H0 _7 F8 \7 h    │      │  │  │          taskHistory.bin
5 }! T* [: w0 `$ x9 {* O" p* U    │      │  │  │          taskHistory.lock
& Z! |" ]; v$ b) H% V! h    │      │  │  │         
  n& a3 Q' h+ t. t2 \    │      │  │  └─buildOutputCleanup
7 U) G2 L) W0 T8 m* _    │      │  │          built.bin& c0 |, v3 f! t' M# {/ ^
    │      │  │          cache.properties; R' b+ T! Z( ~+ @) A
    │      │  │          cache.properties.lock# L) D6 X( S4 M& f! C+ F& q, P
    │      │  │         
, M+ @- |4 _- i+ t9 T6 \5 n    │      │  ├─.idea
5 a/ i; Z5 h4 z. j+ M9 q. ?/ `    │      │  │  │  compiler.xml
) H: ?/ V. [6 t* p    │      │  │  │  encodings.xml( ^6 n7 U% z! c$ I3 f
    │      │  │  │  gradle.xml" I- [3 w$ x+ a9 b! K
    │      │  │  │  misc.xml
6 H* s3 Q' z+ I$ V1 P# M    │      │  │  │  workspace.xml1 J+ Q; ]! J* k# \+ ^& {7 ?4 e
    │      │  │  │  ! A8 x- m* ~! C$ d+ q" g; s
    │      │  │  └─modules3 M5 x$ G0 ]( I- i+ s! M" q
    │      │  │          a.txt
, m# z8 {% D# n# e+ G! X    │      │  │          note.txt( J  J' r2 y/ Z7 l% k
    │      │  │          Note_blockchain1_main.iml
3 H+ v6 l8 n* G* X+ K    │      │  │          Note_blockchain1_test.iml$ v# g9 V- k- C" g7 ?- M5 A
    │      │  │         
; S7 ?# ^1 |7 p' [( _! D+ X    │      │  ├─build, X* R# q' _* m6 D
    │      │  │  └─kotlin-build
( U0 H! ?3 ?1 b8 {/ ?  D! K/ F+ G    │      │  │          version.txt
# ]+ r3 K% D4 S* H$ l( J9 e& O4 U1 ~    │      │  │         
+ L( v# `/ _" C  o  e3 V    │      │  ├─gradle
2 I7 B9 q/ z. _1 e+ g  t( e7 v    │      │  │  └─wrapper
7 G9 ^) B  \( V( c. B  l( h5 K    │      │  │          gradle-wrapper.jar
% t- F! e# E7 |. G- I    │      │  │          gradle-wrapper.properties4 M2 Q  g  I+ Y0 d  S$ v- \
    │      │  │         
9 w5 P1 i% b# g* b$ W. C1 J    │      │  ├─out
3 Z) z/ T+ r% j3 A9 @( ~9 f    │      │  │  ├─production. l1 B" W2 h4 K+ g  j9 C, D' P# J
    │      │  │  │  └─classes+ |! I8 H9 v. {0 U/ g/ c
    │      │  │  │      │  addGenesis.html# P' G" d' a  Q7 [7 ~2 i1 c2 K
    │      │  │  │      │  addNote.html
9 I) k6 m! A" A4 e& W! X# Q+ x* D    │      │  │  │      │  addNote.html.baiduyun.uploading.cfg
4 p1 M  ?# A7 w  E    │      │  │  │      │  addTansaction.html
, \; }- X* k% B& J6 o* k    │      │  │  │      │  DecryptJsResultKt.class: e: B+ m/ k4 M% [) w5 b8 o& {
    │      │  │  │      │  HashUtil.class: |/ @* L# J  K8 X+ F. U; `7 w# [
    │      │  │  │      │  MyClient.class+ Q* [0 s& |# ^  ^% I
    │      │  │  │      │  MyServer.class  O( m3 @4 ?( F3 N+ d
    │      │  │  │      │  NoteServerKt$main$1.class
! r" @" `9 C$ R2 m! ]7 g  E4 J3 b    │      │  │  │      │  NoteServerKt$main$2$1$1.class/ o4 L* t, l9 _5 E1 P% _6 R
    │      │  │  │      │  NoteServerKt$main$2$1$1.class.baiduyun.uploading.cfg2 m7 B: M' u( i
    │      │  │  │      │  NoteServerKt$main$2$1$2.class
3 H# s3 ?! H# X- H    │      │  │  │      │  NoteServerKt$main$2$1$3.class
7 u& o5 n. {/ }+ _" o    │      │  │  │      │  NoteServerKt$main$2$1$4.class  \; }- W; o) w9 x: A6 t/ u" p
    │      │  │  │      │  NoteServerKt$main$2$1$5.class5 n/ W* J& p" w4 h! d+ p' [! N' [
    │      │  │  │      │  NoteServerKt$main$2$1$6.class* w  s* o! E$ |; H' r+ L
    │      │  │  │      │  NoteServerKt$main$2$1.class
5 }6 F+ x. q7 A& t6 [    │      │  │  │      │  NoteServerKt$main$2.class7 F- s4 w3 ]. \3 [
    │      │  │  │      │  NoteServerKt.class
4 V. _6 r2 h/ s: X! z6 `    │      │  │  │      │  RSAUtil.class' k+ G" {- n. t5 C  h
    │      │  │  │      │  TestKt.class, n" V9 w% V8 k. I7 `
    │      │  │  │      │  
' x2 V1 ?: M1 c4 y# v% u    │      │  │  │      ├─bean. p0 k. u7 o6 T0 {( N; Y
    │      │  │  │      │      Block.class
- C3 @1 ]! x1 V0 W1 K    │      │  │  │      │      BroadBean.class
2 i. B7 w+ ]! p' Z    │      │  │  │      │      NewTransaction.class
8 @5 x2 W4 t1 o0 C! {' X" N3 ]8 @    │      │  │  │      │      NoteBook$loadFromDisk$result$1.class% \# w- |  t& P  U: l, v
    │      │  │  │      │      NoteBook.class( w% E( S. X" O7 w$ t
    │      │  │  │      │      
1 g8 S4 L; ~2 L. m1 j5 G0 X    │      │  │  │      ├─encode1 i- ]- V3 B$ t
    │      │  │  │      │      TestKt.class, x3 N, f6 t6 c+ c5 R- V' q
    │      │  │  │      │      1 H0 k; p7 o  |) y
    │      │  │  │      ├─js7 x' G; h0 m7 \$ j2 v8 A/ s
    │      │  │  │      │      hashes.min.js
; g) ]9 ?3 g+ o& z/ k    │      │  │  │      │      jquery-3.3.1.min.js1 h0 G7 l6 S1 s" h, L* o- @
    │      │  │  │      │      jsencrypt.min.js% m4 H+ w8 m! U
    │      │  │  │      │      
  Z% D" G8 y$ ?2 G    │      │  │  │      ├─META-INF
: V, q% J. N. }7 Y2 ]' _    │      │  │  │      │      Note_blockchain1_main.kotlin_module) A/ x, R$ Y2 |" E6 r' ]
    │      │  │  │      │      ! c: k! L3 h: O$ f# x8 q
    │      │  │  │      └─translate
( m8 ^9 a, V  K: |7 }: \: [    │      │  │  │              Transaction.class8 t) X3 ?' C% Q5 Z, |
    │      │  │  │              TranslateTestKt.class# Y5 e# F- W6 K% C
    │      │  │  │              Wallet.class  n' o  b* l5 P2 D8 l  o
    │      │  │  │              3 [  p) G5 C* ~9 J3 ]
    │      │  │  └─test6 `/ d& F0 ?7 [# i) T" e
    │      │  │      └─classes! H1 f4 ^3 J* F# u- F
    │      │  │              TestHashUtil.class
1 \, S7 \& ~5 q4 Z    │      │  │              TestNote.class
# t  z+ ^5 U% j3 A6 a, I    │      │  │              
' j, `! \1 v6 M3 k3 e) x/ d$ Z+ g4 r4 T    │      │  └─src
2 f% _, w* t" q) J4 U    │      │      ├─main1 D( P4 x& w  }! |
    │      │      │  ├─kotlin
0 X* F: |: z2 A0 l, O, C    │      │      │  │  │  DecryptJsResult.kt+ y# R' e3 d: @: a
    │      │      │  │  │  HashUtil.kt
$ [" W/ T- c% N2 R    │      │      │  │  │  NoteServer.kt. ], q/ |& J7 P, V% y: X8 Y
    │      │      │  │  │  NoteServer.kt.baiduyun.uploading.cfg. Y  N9 S' D  m
    │      │      │  │  │  RSAUtil.kt
& ]: v9 v/ k  O, v( _9 x    │      │      │  │  │  Test.kt% r4 `7 A. K) s. _6 E
    │      │      │  │  │  $ R5 H/ U% |, y9 K, D" O! @
    │      │      │  │  ├─bean
3 P" `2 L  I3 {    │      │      │  │  │      BroadBean.kt
1 N; H  B$ b, Y8 @6 @    │      │      │  │  │      NewTransaction.kt- m, N0 R) T* n' n, c
    │      │      │  │  │      NoteBook.kt7 k6 [% v$ Z3 M7 v( F4 w; w
    │      │      │  │  │      : S8 Y1 l) e: g+ g5 C5 b
    │      │      │  │  ├─encode
1 d, _" z$ U2 Y$ U; l& k. d    │      │      │  │  │      Test.kt
' s, k6 r- j2 K! {, q    │      │      │  │  │      1 l- y7 d5 }" [3 h2 J1 {3 N1 R
    │      │      │  │  ├─translate
8 z' |5 W2 e4 D& [4 x& B; y    │      │      │  │  │      TranslateTest.kt
- j$ Z! F( s/ ?4 E$ A    │      │      │  │  │      
- a) W- I- D- A1 c, Q& v$ L    │      │      │  │  └─websocket$ j- u0 q  M9 F" g
    │      │      │  │          LaucnClient.kt
2 p3 H7 v/ R* ~# ~! C    │      │      │  │          MyClient.kt. K/ X6 R5 F& h7 c: l5 G
    │      │      │  │          MyServer.kt
% G4 b0 ?; t; X2 f    │      │      │  │          ) ?' Y; p3 [( ^' ?* p: {4 X; F7 w
    │      │      │  └─resources
2 M# f, I" j" c    │      │      │      │  addGenesis.html7 t; B- E/ j' E. I9 h
    │      │      │      │  addNote.html1 B. d7 @" @( M& `% T9 g: @
    │      │      │      │  addTansaction.html
# o, O( X9 C; |; t: b    │      │      │      │  addTansaction.html.baiduyun.uploading.cfg# `3 {8 {, h! J
    │      │      │      │  
# F! H2 W7 C9 P. W    │      │      │      └─js
0 m* M$ _9 ]4 t: G    │      │      │              hashes.min.js0 @1 r% x3 m- e& W3 D# q8 \, C
    │      │      │              jquery-3.3.1.min.js. h/ Q; w9 w. e8 L4 G0 ~5 R
    │      │      │              jsrsasign-all-min.js9 ^) s4 ^: G6 q; @5 C! j/ ^
    │      │      │              
& F& Y" P2 Q* z, y    │      │      └─test
' W) x! w5 z1 {. L    │      │          └─kotlin
( T0 u* I  K7 c+ j    │      │                  TestHashUtil.kt" u9 v) C' B9 U! q3 E6 e1 W5 h
    │      │                  TestNote.kt3 D3 \9 }6 b4 F* T) S5 g! [  u
    │      │                  
, Z: Q5 E: M, @- D5 B' u    │      ├─Note_blockchain2
4 j- X8 I) V" e. u0 r3 @    │      │  │  build.gradle6 _3 j$ c' G( B2 M
    │      │  │  gradlew
3 A8 a$ R! X& O8 Y! W    │      │  │  gradlew.bat% K% X& h" I0 Y, |( V
    │      │  │  gradlew.bat.baiduyun.uploading.cfg
; z) V- u6 y& l7 v3 o( A    │      │  │  note.txt5 ~* o1 ]  d$ l) F* a8 q
    │      │  │  settings.gradle
# u/ m  N/ o0 U- M. t    │      │  │  
3 [" {1 B' z, T5 V6 J    │      │  ├─.gradle
7 y+ J  \7 K/ r1 f& t; g    │      │  │  ├─4.0" V9 e6 C; X+ x. D. X( T# I  d
    │      │  │  │  ├─fileChanges
9 a- L3 c; ]9 D( z4 o    │      │  │  │  │      last-build.bin& R0 P3 a# R& k4 c4 H
    │      │  │  │  │      , q$ N: i( J; U: {' N5 Z; |
    │      │  │  │  └─fileHashes# n# U, f: l2 X1 p
    │      │  │  │          fileHashes.bin
' H+ n! I1 M7 A( T# J4 N# o+ g    │      │  │  │          fileHashes.lock) L' c* K5 f5 H8 [9 f9 |7 J
    │      │  │  │          fileHashes.lock.baiduyun.uploading.cfg' @0 x  R' _. m9 m
    │      │  │  │         
* b2 n: I; `& G+ Y. i% J    │      │  │  ├─4.4
4 X7 @" `  |6 ?& y; e2 g& ~% s    │      │  │  │  ├─fileChanges
0 m$ Y8 n1 P- x4 S1 v6 J* G0 {    │      │  │  │  │      last-build.bin/ `% @. G- I0 o  K
    │      │  │  │  │      . V$ ]) M; x  R9 N4 q' l
    │      │  │  │  ├─fileHashes
6 D5 e  x) i( c+ ~% k+ H# v0 }    │      │  │  │  │      fileHashes.bin
2 L0 i5 C6 L6 s# l& Q7 H1 S    │      │  │  │  │      fileHashes.lock0 x& {8 o1 p7 [, Q7 m
    │      │  │  │  │      
- E8 g7 q9 u' ~    │      │  │  │  └─taskHistory
% Q/ r/ n: d$ B    │      │  │  │          taskHistory.bin: _  c. S2 Z: `' }  A7 M
    │      │  │  │          taskHistory.lock: E8 E  v5 T* y2 Z, x% h. R/ O
    │      │  │  │            M6 j2 Y' Z* ^2 ?
    │      │  │  └─buildOutputCleanup
+ b* ]' ^6 I: k# U    │      │  │          built.bin
4 L" V7 k& n3 l, b    │      │  │          cache.properties9 }- l3 J! s! {, B' k7 x: q  I/ J# a; e
    │      │  │          cache.properties.lock
2 m2 A( h6 G2 O7 |    │      │  │         
- T4 {9 e" N! e& c% E    │      │  ├─.idea" X$ t6 y! C7 D
    │      │  │  │  compiler.xml
1 t/ `. U, n: a  O% F: A0 C6 Q4 D    │      │  │  │  compiler.xml.baiduyun.uploading.cfg2 }0 f6 Q3 }3 w% Z5 l4 |
    │      │  │  │  encodings.xml% R2 T  h5 g9 s' D0 d
    │      │  │  │  gradle.xml  n$ P' H0 ~8 x4 M5 t9 ^& G8 D5 p
    │      │  │  │  misc.xml
& T9 _7 E8 ~$ }7 ^$ k8 [  H# r    │      │  │  │  workspace.xml
2 c) `. ]6 K/ G$ R! E' C    │      │  │  │  * H: ]- O6 R8 p. ~
    │      │  │  └─modules
: [3 F$ W; m( J6 x+ g    │      │  │          a.txt
. R0 _& X* B3 L" T6 i4 K# d    │      │  │          note.txt
' i! m: z9 K, b- D6 v- F# Q; ?: a7 L    │      │  │          note.txt.baiduyun.uploading.cfg1 `4 m& c$ ]% m$ _
    │      │  │          Note_blockchain1_main.iml
9 z- C8 P! _- R- K    │      │  │          Note_blockchain1_test.iml
! W) S; ?: ?* N; G; H7 n2 Y    │      │  │          + i+ h, r" a  }" V& R
    │      │  ├─build
, h+ \4 h  V; e( V! j    │      │  │  └─kotlin-build& l9 o1 ~. d1 K/ z) i
    │      │  │          version.txt
/ n% D! t# b" l7 X5 D1 g    │      │  │         
" ^; b; n  a7 K2 }% d: k- g* T    │      │  ├─gradle
6 C; N, i4 k4 H5 |    │      │  │  └─wrapper* n* Z1 a9 ]7 C# S4 g
    │      │  │          gradle-wrapper.jar' u: |& N, G5 C( ]: X
    │      │  │          gradle-wrapper.properties
6 Q6 o4 \  j3 H# S    │      │  │          + Z9 j& A. K) a
    │      │  ├─out
+ Z9 I: `2 n1 {  |    │      │  │  ├─production  P" H& a7 d" b
    │      │  │  │  └─classes/ L8 z; i, ~! t1 ?! R1 n
    │      │  │  │      │  addGenesis.html
8 B" ^% E% d' K3 E2 Q- z; w    │      │  │  │      │  addNote.html. B& }9 d9 }: b+ _; Z" p9 o: _
    │      │  │  │      │  addTansaction.html
" p% m+ h. E# x3 K, z5 g% j    │      │  │  │      │  addTansaction.html.baiduyun.uploading.cfg
/ c- g" i) s8 h- ~' X    │      │  │  │      │  DecryptJsResultKt.class; N" r/ n  Y+ q) Q
    │      │  │  │      │  HashUtil.class
& o/ G. ~- {5 Q) X/ `# r+ y, w    │      │  │  │      │  MyClient.class
, W- T' W! F  q$ b% s7 k    │      │  │  │      │  MyServer.class  u2 E) c. I3 O* [9 A8 p6 W
    │      │  │  │      │  NoteServerKt$main$1.class
0 W* J& a3 R/ j3 v3 ?    │      │  │  │      │  NoteServerKt$main$2$1$1.class# S& ?" n9 ^+ `1 {$ r) S3 ]' ?
    │      │  │  │      │  NoteServerKt$main$2$1$2.class
1 x: l8 P3 U2 N1 k  N" ~  f    │      │  │  │      │  NoteServerKt$main$2$1$3.class$ m+ B: g8 W0 a6 G* |6 z
    │      │  │  │      │  NoteServerKt$main$2$1$4.class3 F. S0 C8 C- j9 _2 ^
    │      │  │  │      │  NoteServerKt$main$2$1$5.class% T8 f% E+ D. u. J
    │      │  │  │      │  NoteServerKt$main$2$1$5.class.baiduyun.uploading.cfg
& M8 @. v% n% S3 H) p! ]8 }; k( |- V    │      │  │  │      │  NoteServerKt$main$2$1$6.class
. F- }: z, v. i# E  `- @    │      │  │  │      │  NoteServerKt$main$2$1.class
5 ?) V2 C# B7 |/ p  D* ]4 I% Y4 I    │      │  │  │      │  NoteServerKt$main$2.class6 n- `' v# u  ~2 M% Q7 a- `
    │      │  │  │      │  NoteServerKt.class
# i* n! j  P# i/ A+ f    │      │  │  │      │  RSAUtil.class5 v2 z! s: T, @$ p# a  s
    │      │  │  │      │  TestKt.class+ u% l9 ?% O! u
    │      │  │  │      │  % b8 A* V3 t2 b, F) M% e. g$ j
    │      │  │  │      ├─bean
- X! @3 ]& v! y6 z% ^  k    │      │  │  │      │      Block.class
$ _7 J' E" N$ c5 w( f! Z9 h! Y* A; O    │      │  │  │      │      BroadBean.class& c; Q% `. B- h; d6 H
    │      │  │  │      │      NewTransaction.class
* j, E0 Q, [4 G" |4 n    │      │  │  │      │      NoteBook$loadFromDisk$result$1.class5 b7 \. f% P( M. m$ [
    │      │  │  │      │      NoteBook.class3 S4 c4 x+ c8 W: w7 R0 F7 W1 g
    │      │  │  │      │      
) ~  [: H2 q  s$ U- c* y    │      │  │  │      ├─encode8 [. a" {" Y$ ]- P
    │      │  │  │      │      TestKt.class
& |) Y# j: ?- l" p1 `# t* j% @9 }    │      │  │  │      │      
. J0 Z7 S; j. G7 v/ z: ~2 L    │      │  │  │      ├─js* @9 Y% S, J5 q0 \  B* s0 z9 B
    │      │  │  │      │      hashes.min.js
' I! b: h6 X3 O  V" R    │      │  │  │      │      hashes.min.js.baiduyun.uploading.cfg6 Y& x5 g+ A5 X: j9 d( f
    │      │  │  │      │      jquery-3.3.1.min.js
& e7 u7 F; T: `+ h& [& v0 f    │      │  │  │      │      jsrsasign-all-min.js2 \% ^: x6 Q* W0 m+ H1 l
    │      │  │  │      │      0 @& n+ C- x' }: f- }8 y; T
    │      │  │  │      ├─META-INF
4 l4 k7 \; k+ }7 t9 e    │      │  │  │      │      Note_blockchain1_main.kotlin_module# x! T7 T( Z$ S& Q) Q; M: V
    │      │  │  │      │      Note_blockchain2_main.kotlin_module" v% ~- E. h4 K  [5 ?5 V+ E
    │      │  │  │      │      
1 V5 k6 u- |  m6 k) a1 Q    │      │  │  │      └─translate- }8 i( H4 T7 n: t$ q+ s) c- G# M
    │      │  │  │              Transaction.class  p) f" v5 B3 X
    │      │  │  │              TranslateTestKt.class& c4 s8 [+ d, l5 d; q
    │      │  │  │              Wallet.class
3 C$ j0 V6 O; t; o: Y! P7 e    │      │  │  │              
/ c6 @! h: q& D: a: H* h; q/ A; I    │      │  │  └─test( o' w  T' u8 K$ Q' ^" z3 U7 o! ]
    │      │  │      └─classes8 C/ V. b; S2 ]1 e
    │      │  │              TestHashUtil.class% {4 n: ]0 {4 J4 @2 H" f% S1 o
    │      │  │              TestNote.class
8 ?$ e9 Y. v& O7 a  v9 ~    │      │  │              
& k! ~6 m' \1 _$ {: x  z    │      │  └─src
2 _, z" o% S$ s. F+ `# j    │      │      ├─main
' m2 J$ j' i7 o& I7 U9 Q2 e. }    │      │      │  ├─kotlin
  B" k4 y' z4 {$ y$ M! g    │      │      │  │  │  DecryptJsResult.kt
& ^+ [# W6 E5 ?- Q    │      │      │  │  │  HashUtil.kt
0 t3 G" k. r& T8 K1 p8 z# X; s, ~    │      │      │  │  │  NoteServer.kt
8 H# g+ Z( E7 ]' [6 A8 Q- \    │      │      │  │  │  RSAUtil.kt
* m. b- o3 h4 \, _$ H    │      │      │  │  │  Test.kt
2 h2 u+ t( M) R3 m; D    │      │      │  │  │  
9 r- G2 D6 e' n, o. A    │      │      │  │  ├─bean
9 l4 [" s; W1 I  y: ^( K    │      │      │  │  │      BroadBean.kt+ i. H$ K# Q% V' j8 i
    │      │      │  │  │      NewTransaction.kt
* g+ f, r9 a- g) l  I1 {5 F    │      │      │  │  │      NoteBook.kt
+ p/ q+ A) c5 v, l: j2 w    │      │      │  │  │      
7 v0 {% ]+ m  h! r    │      │      │  │  ├─encode
5 L6 q4 B5 x4 u' U* H4 n. b' W! U    │      │      │  │  │      Test.kt
! O& f5 {1 }* P2 ]% E    │      │      │  │  │      7 \" g% i- f( s1 J7 f) M2 q4 e# W
    │      │      │  │  ├─translate
6 X" D& m9 U! T# j3 Z$ g    │      │      │  │  │      TranslateTest.kt
, L: O  e5 e; T; n8 B9 ]    │      │      │  │  │      
4 R) I: |0 t! i+ h( f    │      │      │  │  └─websocket
  H, ?* F7 F! ?) r/ Q6 R* K    │      │      │  │          LaucnClient.kt. a# X; r  M% a$ `  t/ I2 G
    │      │      │  │          MyClient.kt
5 Z" E* S& D1 B/ ~    │      │      │  │          MyServer.kt& @! O0 R+ z" Y0 O
    │      │      │  │         
( I! t- Y0 ]' L, i    │      │      │  └─resources# u+ O1 r9 v5 k/ _% M$ t- I
    │      │      │      │  addGenesis.html7 T, x: u& j- r$ k1 @2 U/ b& M
    │      │      │      │  addNote.html
3 B1 x+ i, B# j- {& O    │      │      │      │  addTansaction.html3 e! i  T3 c  D; b
    │      │      │      │  
) t4 D8 k" j! p( y+ c    │      │      │      └─js
+ k; O* [  K2 O6 ^    │      │      │              hashes.min.js9 {: h$ _( b2 F- u
    │      │      │              jquery-3.3.1.min.js
# F* p2 M* W3 V, {    │      │      │              jsrsasign-all-min.js% j" N( \% W* }& @7 P, m' b* I! o
    │      │      │              " w* Z9 g/ S: |3 L# V5 n8 u) k) ?0 o
    │      │      └─test5 Q8 h$ j/ g) u) @7 v
    │      │          └─kotlin8 [; M$ X% A" ]* |& a
    │      │                  TestHashUtil.kt" v3 Z9 t9 M1 O! n5 W) S
    │      │                  TestNote.kt+ F  a7 o5 p3 T
    │      │                  
) ~* {& i9 M' {( l# f) D" p2 M    │      └─Note_blockchain3: S% M8 c) S' `# B, c( I* y
    │          │  build.gradle
3 E( J$ r+ X7 }: c3 s! V    │          │  gradlew7 J1 A1 }7 J. P6 l# l) u8 G* u) z
    │          │  gradlew.bat
, F8 }8 D2 x" S5 L    │          │  note.txt
1 A; n/ d0 C, o' \; S$ f* g' K3 b    │          │  settings.gradle
; w7 i# e. r2 _7 l7 C2 I- N6 S5 s    │          │    X0 |0 K3 u8 R- I) R4 o- S
    │          ├─.gradle5 N  B2 r) H$ M6 m0 D  R3 W! x
    │          │  ├─4.0
4 `! z0 C' G7 ?    │          │  │  ├─fileChanges
/ d: F. s. a1 R& C6 t/ k    │          │  │  │      last-build.bin
2 }& b/ I5 J0 W; d' X    │          │  │  │      
+ b4 W6 ]$ [# _5 I6 h' a    │          │  │  └─fileHashes. n4 {" j* a$ a# v3 ]( r
    │          │  │          fileHashes.bin3 U( \3 C2 G7 W5 Q/ w1 U3 e' v
    │          │  │          fileHashes.lock" k- m( F$ v" h& {9 q
    │          │  │         
* H  v. l6 }' g    │          │  ├─4.4& p0 @/ [( f; ?2 b) W. r1 X
    │          │  │  ├─fileChanges
9 Z& h+ U; [% W) A& Y& k: k! a    │          │  │  │      last-build.bin/ f8 \  N6 L+ l2 G
    │          │  │  │      
0 u# U+ |! @1 }% ^    │          │  │  ├─fileHashes, L$ Z  Y1 u2 R" s, f. F4 ]3 H
    │          │  │  │      fileHashes.bin
0 y5 R) J$ `1 {4 Y5 @- E# D    │          │  │  │      fileHashes.lock! d+ l) p( H  U0 J$ p: ~. r, D
    │          │  │  │      
& T+ `+ K1 T/ R# o, M! P; I    │          │  │  └─taskHistory
. {5 t5 z" d9 j+ m5 X6 z' x    │          │  │          taskHistory.bin
+ h) z" a5 d% J; l( K# x) f( I+ B    │          │  │          taskHistory.lock
/ N0 Z( T' n& A$ a: M. i    │          │  │          " F* ?# k9 _* `2 I. n8 Z$ C
    │          │  └─buildOutputCleanup
! u' N  G0 O, o    │          │          built.bin  L. i9 n$ o- Q7 i7 W7 j# K+ |
    │          │          cache.properties: j* O/ A3 ]% \6 J/ g' @" j) Z
    │          │          cache.properties.lock/ y$ C" ^" W+ p- z/ l, q7 @
    │          │          + ?) z; r- N+ v0 g  \2 V' W2 o# N
    │          ├─.idea
8 L3 b6 x( K# C7 T" e2 T. J    │          │  │  compiler.xml
9 n0 q1 O  \5 d* u, Z    │          │  │  encodings.xml7 s- _$ R& v' t, h: u8 L% i) w: [
    │          │  │  gradle.xml3 i- O3 d7 r' i( c
    │          │  │  misc.xml" v% y. @7 p% v0 t7 s% Q; t
    │          │  │  workspace.xml% z% n. D/ q3 b! Y) B  W9 u
    │          │  │  
3 j. h! \! n: A    │          │  └─modules: N" R; E8 a& d7 a! r& V' a
    │          │          a.txt
  J) f8 {2 M: K. z    │          │          note.txt* E. e0 C' C  v/ ?# R4 h# i
    │          │          Note_blockchain1_main.iml, q7 u, M2 g! D
    │          │          Note_blockchain1_test.iml
6 G0 _6 M  s1 K' [* K    │          │          ; s# Z" ]4 N8 N( K7 v* R& E  [  J
    │          ├─build5 u% f. b$ k! s) p# s# L
    │          │  └─kotlin-build
9 ?4 M- Z( o: h; c    │          │          version.txt
& T+ ?* q6 B" |) B9 {. }    │          │          $ G4 P4 U2 C; C* E9 w  g
    │          ├─gradle* n5 l& T! Q+ W8 ~0 a# ?
    │          │  └─wrapper
( c6 Z/ s# L* u, [0 }! _    │          │          gradle-wrapper.jar
) B6 o, M: d+ S6 h    │          │          gradle-wrapper.properties
& w! s/ T8 A" A) h    │          │          + e; a! a2 e5 C; D
    │          ├─out. Z+ I: O3 x6 I1 @  C
    │          │  ├─production6 }( A* [6 E, M+ _1 K
    │          │  │  └─classes& m  a7 V. a# N* a
    │          │  │      │  addGenesis.html
% x5 g6 N" B& Y* N. Z    │          │  │      │  addNote.html& s! G, z) k9 x  T
    │          │  │      │  addTansaction.html
) N" x  W7 T) x8 A% \' k    │          │  │      │  DecryptJsResultKt.class- i# H' l  E  T: Q: q6 y
    │          │  │      │  HashUtil.class
$ Z3 g/ o; x7 M    │          │  │      │  MyClient.class
& u% i- T* N- ^, t    │          │  │      │  MyServer.class
8 z8 J' E/ L. ^" [3 ^5 j* ~0 d    │          │  │      │  NoteServerKt$main$1.class
2 j6 i8 J- W$ A" q( S- e4 J3 l    │          │  │      │  NoteServerKt$main$2$1$1.class$ J$ H' C8 o! K' q( [* ]4 p9 ~
    │          │  │      │  NoteServerKt$main$2$1$2.class% s7 I" L' C+ J9 [& v
    │          │  │      │  NoteServerKt$main$2$1$3.class
6 ~6 |. n5 ]9 L" q' X2 j* i  g8 {5 o; F    │          │  │      │  NoteServerKt$main$2$1$4.class7 t; E; e0 F& L8 v: o" V! b1 t" I( ?
    │          │  │      │  NoteServerKt$main$2$1$5.class+ X3 ?0 u/ {, v' w( l6 U. V
    │          │  │      │  NoteServerKt$main$2$1$6.class
: U0 M0 s& K5 ^    │          │  │      │  NoteServerKt$main$2$1.class
# u' H( \" `5 r# J# Y    │          │  │      │  NoteServerKt$main$2.class
) x$ P( h, Q( q+ ~    │          │  │      │  NoteServerKt.class* R, O% `5 _$ ]& m! i
    │          │  │      │  RSAUtil.class) E) [2 M! ~5 K8 E6 G: _+ F+ O9 J" [
    │          │  │      │  TestKt.class1 F1 i$ @5 X* V5 k/ A4 g* \) e
    │          │  │      │  
0 i. j7 t, W2 ]- Q, k& N7 b9 g    │          │  │      ├─bean
1 d0 x% b' a5 K& W! a    │          │  │      │      Block.class2 _8 I) V2 D- @" Q" x- t! T
    │          │  │      │      BroadBean.class
: x. |; _% R+ J5 w" ~/ q    │          │  │      │      NewTransaction.class  f! m, P; f& o2 l, ~
    │          │  │      │      NoteBook$loadFromDisk$result$1.class! P, ^8 H2 [2 q4 _+ j* J8 {
    │          │  │      │      NoteBook.class  [7 l& x, f, o0 |3 k2 r. \
    │          │  │      │      
; I) O6 @1 x, h1 T- n5 t    │          │  │      ├─encode: A* U7 x# ]0 n- ~) l. _! R
    │          │  │      │      TestKt.class
# P7 m0 Z9 o+ K# G    │          │  │      │      ; L- y3 O% {, \8 A% y5 L7 f
    │          │  │      ├─js2 x( h/ {7 \9 N2 R7 U& H: A" Q
    │          │  │      │      hashes.min.js
  ^( {, A( R9 N+ @* Z+ r    │          │  │      │      jquery-3.3.1.min.js
5 u0 w$ C& h' `$ h    │          │  │      │      jsrsasign-all-min.js
/ J. B" d# Y4 c) ?" o) d: p    │          │  │      │      
9 V% {8 }/ j7 }$ }$ [2 m- R    │          │  │      ├─META-INF
- T& w3 u0 l: n: M    │          │  │      │      Note_blockchain1_main.kotlin_module3 [3 H- e. s" B
    │          │  │      │      Note_blockchain3_main.kotlin_module
% w5 V0 a( i7 q& h9 x    │          │  │      │      
$ N' e. ^/ e9 j# Y* Z* T2 C    │          │  │      └─translate
7 [4 ]( [& {- s$ A0 h! T    │          │  │              Transaction.class
1 A! z* g& G( @7 u* a  }    │          │  │              TranslateTestKt.class3 j4 T0 @1 H( h4 X; X* i* V% p
    │          │  │              Wallet.class& V0 Y5 ~9 ^: c! k0 \
    │          │  │              
9 e% b8 Q. H' G. Z0 G& D/ x& |8 m  Q' R    │          │  └─test
1 N. B! C- N8 l2 u' e" L. K$ x    │          │      └─classes
( I" _2 s* T( m3 f. H    │          │              TestHashUtil.class7 {6 j9 z3 @1 H$ F2 i' l4 f( ]
    │          │              TestNote.class
, O1 N, L, F; Z9 t8 T! o% I2 o- T8 O    │          │              
  ^/ Q) a; y. A0 P' \+ S( D    │          └─src& V$ g/ P+ H1 `# i/ q
    │              ├─main" k6 l! {( f+ h6 j. V
    │              │  ├─kotlin
& N2 |4 r) t3 d3 R    │              │  │  │  DecryptJsResult.kt
$ h+ j$ j# \- C    │              │  │  │  HashUtil.kt% k( j$ v$ J1 V) P) ]
    │              │  │  │  NoteServer.kt
4 `6 I0 N2 X/ H. f  B/ P    │              │  │  │  RSAUtil.kt0 Q/ G+ d" E; o5 t
    │              │  │  │  Test.kt. |' p7 ~# e9 ]9 E
    │              │  │  │  
4 b, d3 B3 f( _# G7 j0 e    │              │  │  ├─bean0 f/ O* |9 F. R7 g- Z1 `4 Z
    │              │  │  │      BroadBean.kt) B0 d) m; J: R5 C2 Q& `
    │              │  │  │      NewTransaction.kt0 K6 X  [/ i5 q$ [5 X+ B7 E
    │              │  │  │      NoteBook.kt/ S% q. w/ V% q! ^# y: M5 s
    │              │  │  │      $ Y' I! L% q! K1 L5 }
    │              │  │  ├─encode
; }" u! Y' o5 R. w    │              │  │  │      Test.kt4 }4 M, \1 H3 \! M1 F0 w- m, ~
    │              │  │  │      0 _% \3 l8 N0 x& z! t1 U: c8 u
    │              │  │  ├─translate! n6 X# k+ `# h; U0 f- y4 ]
    │              │  │  │      TranslateTest.kt5 A  f1 y3 t* }9 u- n: l
    │              │  │  │      3 F0 ]8 l* b- t) l* f" o) @, e( g
    │              │  │  └─websocket+ ?) z0 q- f3 F
    │              │  │          LaucnClient.kt
6 s) T0 R6 n9 E) O# L    │              │  │          MyClient.kt
1 H0 M, C; T) V* q/ _7 G" x" l    │              │  │          MyServer.kt5 N+ ?: |$ a$ W
    │              │  │         
( e. C6 @, m/ d% k# Y# ?: O& T( Q    │              │  └─resources
+ Q; u; B5 T- K+ }8 G: O( `    │              │      │  addGenesis.html
8 Q; q0 j# }* P4 ?9 L    │              │      │  addNote.html2 e' L: g8 h: {+ Z
    │              │      │  addTansaction.html
* Y; G: a. m, h    │              │      │  
( X) f& \1 e8 r6 K* p& i    │              │      └─js3 G4 r( U1 W  n8 Y; u4 u
    │              │              hashes.min.js
& N) R: l, a" z* I+ L! x; K    │              │              jquery-3.3.1.min.js
2 v8 n- @& b( H4 y) _1 }    │              │              jsrsasign-all-min.js
& \6 J5 k2 F2 M& g/ J    │              │              
8 v4 o0 L# Y% H    │              └─test
* p2 _6 {8 h8 q    │                  └─kotlin
. E  _6 T+ t+ m0 w$ U    │                          TestHashUtil.kt! D; f7 V6 R6 _! y+ c
    │                          TestNote.kt0 ?3 ~: k$ @) f3 U7 X/ z# v5 a
    │                          
: S$ @: f  t+ @, U% {    ├─06_nodejs课程" I) u% t, r' G% }1 W' P5 y0 b: y
    │      day01.md
, C1 E/ l- T6 }1 L2 g    │      day02.md8 Q" [3 |1 Y' K& m
    │      day03.md6 k% _1 T# T2 ~1 N
    │      day04.md( v. k) m2 `! p. U; P$ U; r& a! s
    │      day05.md. |9 a- d" M3 o6 U, L* E) X( f9 k
    │      day06.md
, D8 o; L8 }0 z: m    │      3 k: g4 O  z: Q5 t
    ├─07_以太坊和智能合约项目实战9 g% T5 E- {( ~2 v
    │  │  day01.md
" H" H  v: t; X    │  │  day02.md
# H1 e- Q" F: \9 m3 a    │  │  day03.md
/ x5 D. P: x0 F% I# o    │  │  day04.md
% a% ]: `) V) J- {4 e" r& h    │  │  day05.md2 a; \7 J' O% A% s# q" z
    │  │  
( A; I: E. G; n0 R) B    │  └─视频! N+ n: Y! x4 \, C4 P4 g. @' m, i* T: E
    │          视频下载.md  M3 ^; d1 v) G" P
    │          . H' o3 h8 A! w5 K7 \+ g, J
    ├─tools
6 m2 C( ?: a, k5 I# U    │      bootstrap.sh1 n, N2 n+ a% w0 F) _: [4 @. s
    │      ; d- B1 i* I7 r( ?. |, k4 r1 g. l
    └─课程表- \8 \* ^, ]7 x8 i9 Q
            readme.md/ H# _2 U/ S/ {* N7 f6 A8 w5 u: n
/ @# q( {5 l& h3 w, u: \5 ?
5 R. {2 k6 j( r8 y" T4 Z

- q( A, m! _7 q8 q
游客,如果您要查看本帖隐藏内容请回复
* k/ L5 l, u7 ]* I$ q* T  b
+ I0 o% `* W* d& M+ p. C* A% |- Q

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.