Java互联网架构师系统进阶课程(三期VIP)9 Z% ]$ d& |8 r/ Z6 [+ a. M# x
├──01JVM性能调优 6 F# q- p& F% g, Q2 i
| ├──01 虚拟机的前世今生和Java内存区域(1) .mp4 758.12M
3 X ^0 ^* L* }3 E| ├──02 深入理解Java内存区域(1) .mp4 835.55M+ o. V4 w$ q$ ]' ~7 j. `
| ├──03 玩转JVM中的对象及引用(1) .mp4 848.04M$ V- j! X1 {# E* x M! A7 I
| ├──04 分代回收机制及垃圾回收算法(1) .mp4 762.68M( O! w/ a% P- B% i
| ├──05 JVM面试“核武器”JVM底层细节(1) .mp4 695.74M
! f% G1 G5 \- H* ]| ├──06 Class文件结构及深入字节码指令(1) .mp4 942.99M! o& [4 f/ C' V$ [& k( @
| ├──07 类加载机制与类加载器(1) .mp4 995.21M
' H+ p- E& T: d3 _% g5 Y1 \/ R" P| ├──08 方法调用的底层实现(1 .mp4 1.01G
* l( J; f# D4 l6 I c3 r| ├──09 Java语法糖及实现(1) .mp4 849.83M
# o8 B# c6 |" O4 I+ y| └──10 GC调优基础知识之工具篇(原生+Arthas)(1) .mp4 1.23G
# q# p v* E8 \& s4 }├──02 JVM性能调优
- @3 m8 b l' [0 s5 }: ]3 ]| ├──01 GC调优基础知识之工具篇(原生+Arthas)(2) .mp4 1.14G
6 C: [" D, T8 M| ├──02 JVM调优实战之CPU占用过高(1) .mp4 1.58G7 ]6 I$ s% p* t' b9 e W8 y
| ├──03 JVM性能调优之预估调优与问题排查(1) .mp4 1.02G
+ h+ O+ i9 T% j @% @| ├──04 玩转MAT,分析内存泄漏(1) .mp4 996.10M1 _2 q+ t" m9 Q) e) c8 e# a9 h( E
| ├──05 直接内存与JVM源码分析(1) .mp4 1.25G( a' j5 |$ E9 z4 k; r: ^% }
| └──06 JVM之大结局(1) .mp4 996.79M! @: [% {+ s" d
├──03 并发编程
8 A, J0 s O( a4 s| ├──01 java线程的本质、线程模型(1) .mp4 1.04G
5 ] @) c, q) w% w$ P# E- c+ d| ├──02 java线程run方法的本质(1) .mp4 1.19G
5 Y& R1 ], p$ d9 ?4 G- e- E. V) U| ├──03 synchronized关键字得原理分析一(1) .mp4 1.19G& s( }- y2 J3 c5 g8 s
| ├──04 synchronized关键字原理—锁的膨胀(1) .mp4 1.51G
- H9 D, k8 P4 o; D0 O q4 j| ├──05 synchronized关键字原理-锁的膨胀过程(1 .mp4 1.88G
9 i0 R3 [* I2 P" a| ├──06 synchronized关键字原理-锁的膨胀过程二(1) .mp4 1.22G
3 u# l3 I) ^' i* ?5 p! B( }| ├──07 synchronized关键字原理-锁的膨胀过程三(1) .mp4 1.29G" u0 [7 l1 O: @
| ├──08 synchronized关键字的使用和优化(1) .mp4 1.13G6 s5 Y8 z! i& s! O
| └──09 ReentranLock 的基本使用和设计模式(1) .mp4 1.05G" u2 U: s; C% d8 C
├──04 并发编程 2 A$ ~! Q; \! b" v3 O
| ├──01 aqs框架的源码分析(1) .mp4 1.28G
0 W9 h- b" A, ^0 [# \| ├──02 ReentrantLock解锁流程和读写锁源码(1) .mp4 1.06G
3 w9 a9 a0 w. g3 T- ?| ├──03 aqs之读写锁原理分析(1) .mp4 1.16G
" {- m* D5 ]8 U+ ~| ├──04 juc工具类的使用和原理(1) .mp4 1.23G
8 H" y2 w+ X. {' L| ├──05 模拟线程池的原理实现(1) .mp4 1.19G
+ K3 B0 y, g9 k& a& D6 v- F1 r8 _| ├──06 ThreadPoolExecutor线程池(1) .mp4 1.17G6 K( d' x0 R5 w3 I( T( X( J: v
| ├──07 线程池源码分析(1) .mp4 1.35G9 j: f2 ^! b' ]
| ├──08 如何解决JAVA的有序性和可见性(1) .mp4 946.77M/ c$ [2 ?" _0 I6 t* m& Z# q
| ├──09 如何理解JAVA的内存模型(1) .mp4 977.11M
: ?% t2 A6 X) w3 s2 c( q# f' t; t, z| └──10 currenthashmap源码分析(1) .mp4 1.35G
) ^" R. P6 [# n9 i% R├──05 并发编程网络协议与netty
2 ~& x; m- E$ R; ?% \6 @, S| ├──01 forkjoin线程池得原理和应用(1) .mp4 898.41M
5 y6 e0 X, d! R7 f| ├──02 网络协议和常用网络工具(1) .mp4 1.03G
' e O+ H0 G v| ├──03 Java原生网络编程(1) .mp4 1.30G" T) [. e/ a$ n' V1 M5 v6 e
| ├──04 Java原生网络编程2(1) .mp4 1.76G8 n# X, \' v( m& `* \# m* e/ Z3 X
| ├──05 Java原生网络编程3(1) .mp4 1.65G+ P% q5 h- ]) v) q4 w o w+ J
| └──06 Netty基础入门和应用(1) .mp4 1.78G
7 T! I- Y+ l; E3 I6 M├──06 网络协议 ; \2 \( d7 V. q
| ├──01 Netty基础入门和应用2(1) .mp4 1.77G
) C' b0 O% g. r2 R* I| ├──02 Netty基础入门和应用3(1) .mp4 1.57G# k2 ?1 M% I# [$ |& A5 S5 ^
| ├──03 Netty基础入门和应用4(1) .mp4 2.27G# X0 O- m- _/ N
| └──04 Netty进阶和实战(1) .mp4 1.29G6 ~: ]+ E1 m l; t2 C# X# p
├──07 网络协议与Netty E: i& v9 Y! I' D) }* t1 H/ L+ H
| ├──01 Netty进阶和实战2(1) .mp4 1.64G8 m& w* f' X- o
| ├──02 Netty进阶和实战3(1) .mp4 1.89G! m& p* [6 \; P) G1 j3 g
| ├──03 Linux和JDK对网络通信的实现(1) .mp4 1.13G- U: g& a# J1 m- f& c
| ├──04 Linux和JDK对网络通信的实现2(1) .mp4 1.67G i. h% U: ]! _1 A |
| ├──05 Linux和JDK对网络通信的实现3(1) .mp4 1.36G
0 g. _$ C! J4 Q6 k) L" i, F: ^| ├──06 Linux和JDK对网络通信的实现4(1) .mp4 1.91G+ _+ H/ o1 S7 U) k a
| └──07 Netty源码解析(1) .mp4 1.96G
1 c- I; ?# Z- w' D2 U$ K├──08 网络协议与NettySpring源码
1 q, y: [3 |6 l8 d' u6 B| ├──01 Netty源码解析2(1) .mp4 2.03G
7 l3 k9 ?: m: Y) Y J+ o3 S| ├──02 Netty源码解析3(1) .mp4 1.82G
" B! z" s) x; n| ├──03 Netty源码解析4(1) .mp4 1.73G
3 m7 m* _" g: `4 s5 u4 z0 H5 W3 ]+ F| ├──04 Netty源码解析5(1) .mp4 1.49G. D8 U( [& m, m s" k
| └──05 spring源码编译和xml解析(1) .mp4 2.00G
4 N6 f6 \! Y- w5 T├──09 Spring源码
) p& B1 G+ M/ C& g8 x6 K: G$ ?| ├──01 BeanDefinition和默认标签、自定义标签解析(1) .mp4 1.89G2 M. y( X6 x: l' e: `8 y
| ├──02 component-scan标签解析和bean实例化初探(1) .mp4 1.98G L9 e. P) h9 h: x* z' p
| ├──03 BeanPostProcessor和Bean实例化初探(1) .mp4 2.07G
2 R* G. i+ h. C' P& \( F# F6 F, I0 v| └──04 bean的实例化和注解的收集(1) .mp4 2.11G
) J) S: E0 C$ p2 A├──10 Spring源码 + B- m0 W0 G' v6 ?: Y
| ├──1 @Autowired@PostConstruct@PreDestroy注解(1) .mp4 1.95G
" h- ^! ^7 {0 n* {% K| ├──2 spring中循环依赖详解(1) .mp4 1.90G. S4 r. `3 r' M+ H* A' \
| └──3 spring中配置文件解析和Environment对象 .mp4 2.11G
. W E; \( e5 b. r0 y├──11 spring源码
- K! o1 U" C/ Y| └──自定义scope和factoryBean接口(1) .mp4 2.08G7 a' `) d8 } } @% M: N( P
├──12 Spring源码
! u- ]+ v. h9 A3 r# p3 H| ├──1 ConfigurationClassPostProcessor类源码(1) .mp4 2.07G
- Y0 x0 U( h5 Y| ├──2 ConfigurationClassPostProcessor类源码2(1) .mp4 2.05G
h: k8 U# E- f7 I| ├──3 spring的实战代码案例1及AOP基础 .mp4 2.17G
0 Q7 B4 A7 c6 _; R N| ├──4 动态代理和AOP的初见 .mp4 2.05G- R( a# C$ ?4 {- o% b1 c1 S
| └──5 代理的生成和链式调用流程 .mp4 2.34G; d, S" D$ @" t+ O+ i$ M! o3 u6 m! z' a
├──13 Spring源码
2 E8 l7 S% B3 l! N, m| ├──1 链式调用过程和AOP周边 .mp4 2.37G
6 o. l3 q y. y) k2 l9 a| ├──2 spring的实战代码案例2之巩固AOP .mp4 2.39G7 m: P q0 l7 m% r
| ├──3 spring的事务切面精讲1 .mp4 2.11G
% @/ N2 \- e' l& V| └──4 spring的事务传播属性精讲 .mp4 2.26G
2 w) G. F! j) N9 P1 h├──14 Spring源码
+ m! H2 @9 R7 P| ├──1 spring的事务传播属性精讲 .mp4 2.22G
' M) C: n* \& g0 [* j* n: P| ├──2 缓存切面和异步切面 .mp4 2.32G" J! W3 c/ o5 e+ E; d* @
| ├──3 缓存框架和springmvc零配置原理 .mp4 2.35G
0 j0 m# {/ Z% P: D/ P| ├──4-1springmvc中请求的调用流程 .mp4 735.32M- u+ c: L" N% T" _5 P
| ├──4-2 springmvc中请求的调用流程 .mp4 1.42G) ?/ l. b# X) i& W" }8 m
| └──5 JSON参数解析和视图响应 .mp4 2.08G3 ]' m3 @7 G( n$ J3 r& D6 a( E
├──15 Spring源码mybatis 8 M8 t( o0 W8 r( Z' P0 Y
| ├──2 异常处理、拦截器和跨域问题 .mp4 2.43G3 ?. [* A$ i( [* k& p- y& e
| ├──3 springmvc实战、spring总流程归档 .mp4 2.24G
6 I- u4 U: m# \8 r2 F: k| ├──4 spring总流程归档 .mp4 2.15G
3 Y# L& ~7 O: K: X7 k6 m| ├──5 MyBatis开发重点知识 .mp4 1.02G! X; L' Q7 Z: Q) ]
| ├──6 mybatis缓存使用和xml解析源码 .mp4 2.12G
4 w, N; O8 Y: f| └──7 MyBatis开发重点知识 .mp4 856.80M
( G# z1 P2 o) k" l" u" G; H6 c├──16 MyBatis
) u( H+ L" l3 ~! L0 N c" x S0 f| ├──1 全局xml解析和mapper中sql的解析 .mp4 2.15G
" W7 X# R* ~+ h/ c! N| ├──2 SQL的执行之Executor组件 .mp4 2.24G
. h2 e5 { A3 ]| ├──3 StatementHandler和ResultSetHandler组件 .mp4 2.30G
9 |, j: m! C* H* _" x| ├──4 mybatis中的缓存原理和懒加载原理 .mp4 2.24G
& w5 o2 f/ Q, y0 x o8 ^7 C| ├──5 mybatis的plugin和跟spring的整合 .mp4 2.00G8 q. G" r& @$ ~; z' {8 s, @: D
| └──6 mybatis跟spring整合自定义分页等插件原理 .mp4 2.17G
1 ?* R f u9 ^4 H├──17 MySQL
; X& v* r3 M+ |% h7 R| ├──1 自定义分页等插件及mybatis复习 .mp4 2.20G
$ x1 D2 ? N; u: X% Z! _* X$ K| ├──2 全盘了解MySQL .mp4 2.36G
8 J8 U4 \3 H6 g* ]$ O# O3 s| ├──3 MySQL中表设计和数据类型优化 .mp4 2.06G5 j+ I- N2 y7 h2 q$ S
| └──4 高性能索引(一) .mp4 1.77G# f+ K" E9 u/ g2 W0 J
├──17 分布式常见场景解决方案实战MongoDB进阶
7 G. c$ w. A. ~| ├──1 session共享与单点登陆实战 .mp4 2.20G: _& y' s. V, w4 i% A; |- |6 }
| ├──2 分布式任务调度实战 .mp4 2.36G
- `5 E2 ^( ]* |# u( p| ├──3 MongoDb综 .mp4 2.06G
# Z+ f1 q% t" w& u| └──4 MongoDb快速入门 .mp4 1.77G
g, n |- r4 X/ S' W) Y& e├──18 MongoDB进阶 0 g' H. I: p6 S3 o! ?
| ├──1 MongoDb查询进阶- .mp4 2.26G' R% L6 U( }# p: y$ J% |. t
| └──2 MongoDb操作进阶- .mp4 2.26G
1 s0 H2 q( Q P! g7 Q├──18 MySQL
, n! B4 T0 ]2 p e3 k| ├──1 高性能索引(二) .mp4 651.40M
7 ^0 V7 A6 v: S5 u' R+ u| └──2 高性能索引(三) .mp4 2.26G
/ X5 r+ X% y1 t) h├──19 MongoDB进阶spring源码分析
" l6 X* ^4 Q4 @8 u" F| └──1 MongoDb高级进阶 .mp4 1.97G
+ T8 _" k( ]0 V9 o; z2 Z# C& c├──19 MySQL 1 c* q: U' H5 i; N% T. I9 j4 {
| ├──1 MySQL性能优化(一) .mp4 1.97G9 I, y/ e8 B$ J* A
| ├──2 MySQL性能优化(二) .mp4 2.15G
Q, g4 B4 Q3 T| ├──3 MySQL的底层执行原理(一) .mp4 1.92G
: U4 n" `% `( w0 b6 E) ?| └──4 MySQL的底层执行原理(二) .mp4 1.81G: l# J0 G& h. K; N
├──20 MySQL
/ e0 H( e! w; j7 u4 r1 Y/ s| ├──1 MySQL的底层执行原理(三) .mp4 1.67G' o4 b& [' w& H0 R5 s$ V8 v2 D6 W
| └──2 InnoDB引擎底层解析 .mp4 1.69G
0 L# A1 k7 v+ Z* ?6 C├──21 MySQL
S/ I* }# B4 ]| ├──1 InnoDB引擎底层解析 .mp4 967.41M
9 L( k9 Y4 \0 r1 `* Z) `$ b9 x| ├──2 事务的原理和MVCC .mp4 806.35M
2 C8 S/ f; [4 d" J3 Z| ├──3 事务的原理和MVCC(二) .mp4 789.24M
! O0 S" U7 i( F( x+ e" {| └──4 MySQL中的锁、面试题和实战那些事 .mp4 795.23M% ` @7 R1 H; M
├──21 spring5源码分析
! Z6 H* e- ^' B/ z1 G# O| ├──1 循环依赖原理和Bean实例化大流程梳理- .mp4 1.75G
9 z# t8 `$ s# m: i8 x| └──2 @Bean@Import和bean的多例作用域- .mp4 1.55G
# u% w+ V; w- ~* v& w0 I( N: J├──22 MySQLRocketMQ 6 z" e& x: X7 l
| ├──1 MySQL中的锁、面试题和实战那些事(二)- .mp4 2.08G5 D' N1 _% n( a ?4 N0 M) r
| ├──2 RocketMQ基础篇(上)- .mp4 1.90G: [! @! v0 {1 p8 h
| ├──3 RocketMQ基础篇(下)- .mp4 2.39G- \ g4 G$ c$ G4 H, B
| └──4 RocketMQ内部机制-存储设计- .mp4 2.07G
+ i7 B4 G6 ] ?- ?7 W" Z├──23 RocketMQ , e9 ]8 P0 t0 \/ U
| ├──1 RocketMQ内部机制-高可用机制- .mp4 2.00G/ }! L# B1 A- V
| └──2 RocketMQ实战-异步结构与流量削峰- .mp4 2.15G
/ V( c1 k. _5 G$ B" l+ Y' M2 }├──24 RocketMQ # o0 I) P5 A. [6 p. w M. _
| ├──1 RocketMQ实战-限时订单与分布式事务- .mp4 2.24G3 _$ g m! s4 e& _& E1 ]
| ├──2 RocketMQ源码分析-整体架构与NameServer- .mp4 2.13G4 @& g2 B+ A6 D( D; @
| ├──3 RocketMQ源码分析-Producer与Store- .mp4 2.02G: f8 q/ o7 _, x1 d+ G m
| └──4 RocketMQ源码分析-Consumer- .mp4 2.05G
1 X4 R/ F! D. f4 w" T$ G3 A& o├──25 Dubbo / t/ t4 g6 {: m/ k8 c3 @) {6 ^
| ├──1 Dubbo源码探析--服务的暴露与消费过程- .mp4 2.02G
, [, D' g: }6 F- C| └──2 Dubbo源码探析--服务的发布订阅过程- .mp4 2.02G1 A- R7 _0 D8 y4 T7 a
├──回顾 8 [) R: r+ V3 {2 d: M! C
| ├──07 网络协议与Netty , F" l$ d( s+ B. p1 X9 u
| ├──08 Netty高级进阶
" v9 `1 k: C. b; || ├──09 Tomcat系统进阶
7 \6 D4 j3 H7 |2 G2 E0 r O+ q. B| ├──13 Spring源码 , W j' t$ O; b- s0 r
| ├──14 Spring源码 * ^6 W' M1 J6 R/ `$ C- o# r+ b. Z9 @
| ├──15 Spring源码
( g. M/ T0 f3 O/ J$ Y0 q( ]| └──16 Redis高性能缓存数据库分布式常见场景解决方案实战8 c% A: Q- |, e- P1 T6 k
├──回顾% d. r' V1 i( l- m* V2 \$ O
| ├──07 网络协议与Netty
0 w ^! \6 f; S2 ]- E2 q| | ├──02 深入学习Netty组件(1)- .mp4 623.23M
: M! I: I ? `: t. G| | ├──03 TCP粘包,半包问题和Netty编解码器框架(1)- .mp4 1.13G
# M9 ?- e- `$ T, U4 C9 o# s9 B' R% d| | ├──04 序列化问题、实现UDP通信(1)- .mp4 1.67G6 {* T5 f' g/ p+ L2 C
| | ├──05 服务器推送技术-轮询、SSE和WebSocket(1)- .mp4 1.36G
7 l* u2 N$ e& r9 o8 R| | ├──06 基于Netty的WebSocket通信(1)- .mp4 1.91G& B4 Z$ }5 J2 ?+ b; |# Z$ O
| | └──07 基于Netty实现自己的通信框架(1)- .mp4 1.96G
( M0 K% U9 {( Y7 e1 D+ w! U| ├──08 Netty高级进阶 5 [" D' S3 l" e$ p
| | ├──01 BIO和NIO的源码解析(1)- .mp4 2.03G
: x9 U6 W$ v9 ^& O: Y( q! @# Q| | ├──02 Netty源码解析(一)(1)- .mp4 1.82G
: [7 ?: L2 A4 ]' P| | ├──03 Netty源码解析(二)(1)- .mp4 1.73G% I% Y1 T( b4 @8 Z3 K
| | ├──04 操作系统网络底层原理和源码(一)(1)- .mp4 1.49G- n( x- ?* s a; n) b; C9 T
| | └──05 操作系统网络底层原理和源码(二)(1)- .mp4 2.00G+ ]5 l) h* S% E: B
| ├──09 Tomcat系统进阶
" E; U( ]$ c* r) ~6 d% p/ S: J| | ├──01 Tomcat源码解读(1) .mp4 1.98G. A3 U9 \& Y5 F# L9 c, f [
| | └──02 Tomcat架构解析(1) .mp4 1.89G
& s, l D. E. b- F# u8 A( Y' v) j+ h/ N, V| ├──13 Spring源码
+ |' q0 V2 l0 n6 e| | ├──1 数据库事务和spring如何管理事务(1)- .mp4 2.37G
6 \' g7 g. y$ S2 }# y! S1 n: G7 W| | ├──2 spring事务的传播属性和隔离级别源码讲解- .mp4 2.39G
; H' S a1 t# W) K% P! ?" Y| | ├──3 事务隔离级别 cacheable缓存切面和异步切面- .mp4 2.11G
3 l' t) {! I/ f( z; b4 d| | └──4 spring的实战代码案例2- .mp4 2.26G6 F4 {4 J. I. Z0 x
| ├──14 Spring源码 Y+ k7 | p2 A. S
| | ├──1 零xml配置整合springmvc和嵌入式tomcat- .mp4 2.22G
+ T" Q6 V4 u5 S0 P6 i% @3 X| | ├──2 springmvc请求响应核心调用流程和过滤器- .mp4 2.32G J5 [( [& d- Q* Z% u# I" Y' ~
| | ├──3 特殊参数解析返回值解析视图渲染- .mp4 2.35G* y. a! H$ d, \0 X0 L2 j! q
| | ├──4 spring&springmvc大总结- .mp4 735.32M
, V' \% f9 u- H| | └──5 spring&springmvc大总结- .mp4 1.42G" R3 I- t- Z/ b% j* e+ L" N8 r
| ├──15 Spring源码
% f: t( w/ b# N) |# T3 y k| | ├──1 静态视图、异常处理和拦截器- .mp4 2.23G# F* R; V$ S$ f/ K1 i: {
| | ├──2 搞定RocketMQ消息存储及事务- .mp4 2.43G
" G9 P6 c/ Q& v/ ]" k: z- ^| | ├──3 主从同步机制和与Spring整合- .mp4 2.24G
9 F; F( K" p8 y z2 [7 h| | ├──4 RocketMQ限时订单实战- .mp4 2.15G
8 g4 e2 `% F! N* q; ?5 R6 F| | ├──5 RocketMQ源码解析- .mp4 1.02G
4 r b U) p# m6 o| | ├──6 Redis从入门到狂澜- .mp4 2.12G
: ^0 q! M; o9 L0 z; C# O| | └──7 RocketMQ源码解析- .mp4 856.80M
`/ o2 |- T% n7 W) N| ├──16 Redis高性能缓存数据库分布式常见场景解决方案实战
1 m" T2 O& D9 V5 q| | └──1 BAT常见Redis场景设计实战- .mp4 2.15G
" [. W# ?4 j5 w* ?5 ~% W| ├──3 spring的实战代码案例1(1)- .mp4 2.17G
; z4 V/ j; C6 P: _# M* w| ├──4 aop入口及aop中的各种advice和advisor(1)- .mp4 2.05G
: U( R9 [6 O( ]0 t0 l$ v| └──5 AOP链式调用过程和cglib动态代理(1)- .mp4 2.33G
$ b. S1 k3 O0 h8 F' n├──资料
( a0 Q# f7 t1 i( K0 v3 g| ├──3.16 .zip 1.74G+ l& C7 M7 u# {! Y, D
| ├──5.11 .zip 173.87M
; x- j1 t# C- [( h| └──资料(Java-vip) .zip 585.04M
3 ^4 x. c2 N% {' u8 d├──Java高级进阶面试题目_享学课堂 .pdf 3.93M6 Z% s2 C# C t; d4 |. [3 P
├──第三期课程(Java-vip) .zip 1.46G4 c. }* C) c% f/ z7 x J7 ~
└──享学首创年薪80W+对标P7岗架构师成长路线V7.0 .png 1.81M
/ h/ m8 Z) m4 a- B8 I3 A; K7 Z# W1 b" e, b
4 A9 ~. f" _& ]! h$ l8 W: _# Y3 f; A' m. i' m
永久至尊VIP回复即可下载学习,非至尊VIP暂不支持下载此资源!* h8 i4 l# S" j; m
" ?3 z" p2 l% i/ I( }" y& k
% J% M: T5 @# f3 V& b |