Professional Documents
Culture Documents
V1 1-JavaGuide面试突击版
V1 1-JavaGuide面试突击版
ui
G
va
Ja
1.1
1.1.1 ⼒ 常
1.1.2 在话
1.1.3
1.1.4
1.1.5
1.1.6
1.1.7
1.1.8 在话
1.1.9
1.1.10
1.1.11
1.2
1.2.1 常
1.2.2
1.2.3
STAR 找Situation Task Action Result此
FAB 找Feature Advantage Benefit此
1.2.4 常
1.2.5 常
1.2.6
1.2.7 tips
1.2.8 /
1.3
1.3.1 / / 近 ⼒ 常
1.3.2 Java 常 ⼒ 常
1.3.3 Java ?
1.3.4 吗 常
1.3.5 常 常
1.3.6 常
1.3.7 / /Github 常
?
?
?
de
ui
G 1.3.8 安 ⼒ 常
常 常
va
1.4
常
Ja
1.4.1
1.4.2 常
Java + + +JVM
2.1 Java
1.
2. Java ?
3. JVM JDK JRE 信
JVM
JDK JRE
4. Oracle JDK OpenJDK
5. Java C++ ?
6. Java ?
7. Java ?
8. 同 ?
9. 微 Constructor override?
10.
11. Java :
33 Java 近 常
de
ui
G 34
va
35 Java IO
Ja
Java IO ?
, ?
BIO,NIO,AIO ?
36. :static,final,this,super
37. Collections Arrays
38. 向 vs 么向
2.2 Java
2.2.1 List,Set,Map 常
2.2.2 Arraylist LinkedList ?
:RandomAccess
:
2.2.3 ArrayList Vector ? Arraylist Vector 常
2.2.4 ArrayList 见
2.2.5 HashMap Hashtable
2.2.6 HashMap HashSet
2.2.7 HashSet 也
2.2.8 HashMap
JDK1.8
JDK1.8
2.2.9 HashMap 2
2.2.10 HashMap
2.2.11 ConcurrentHashMap Hashtable
2.2.12 ConcurrentHashMap /
JDK1.7找 此
JDK1.8 找 此
2.2.13 comparable Comparator
Comparator
compareTo
2.2.14 微
Collection
Map
2.2.15 ?
2.3
2.3.1. ?
?
?
2.3.2. 候 , 常
来 ?
品 内 内 来 ?
2.3.3. ?
2.3.4. ?
2.3.5. ?
2.3.6. ?
2.3.7. ?
2.3.8. 经? 经?
de
ui
G 经
经?
va
Ja
synchronized ReentrantLock
2.3.11 volatile
1. Java
2. synchronized volatile
2.3.12 ThreadLocal
1. ThreadLocal 在
2. ThreadLocal 更
3. ThreadLocal
4. ThreadLocal 些
2.3.13 乐
1. 乐常
2. Runnable Callable
3. execute() submit() 常
4. 乐
5. ThreadPoolExecutor 样
ThreadPoolExecutor微 题 样
ThreadPoolExecutor
6. 乐Demo:Runnable+ThreadPoolExecutor
7. 乐 样
2.3.14 Atomic
1. 在话 Atomic
2. JUC 4 ?
3. AtomicInteger
4. 在话 AtomicInteger
2.3.6 AQS
1. AQS 在话
2. AQS 样
AQS
AQS
AQS
3. AQS
2.3.15 Reference
2.4 JVM
2.4.1 在话 Java 吧( )
Java 品 内
内
(PermGen) (MetaSpace) ?
de
ui
G 乐
va
Ja
2.4.2 Java
2.4.3 ?
2.4.4
2.4.5 Minor Gc Full GC 常
2.4.6 又?( )
样
2.4.7 在话 , , ,
(StrongReference)
(SoftReference)
(WeakReference)
2.4.8 ?
2.4.9 ?
2.4.10 所名 近 常
-
2.4.11 HotSpot 常
2.4.12 所名 ?
Serial
ParNew
Parallel Scavenge
Serial Old
Parallel Old
CMS
G1
2.4.13
在话 微 直
常
?
?
⽣ 常 在话 ?
⽣ 在话
⽣ 样
⽣ 常
⽣ 常
?
+ 微+
3.1
3.1.1 OSI TCP/IP 微 , 说 ?
3.1.2 TCP 回 ( )
TCP
de
ui
G SYN
va
SYN, ACK
回
Ja
3.1.2 TCP,UDP 说
3.1.3 TCP 说
3.1.4 ARQ说
ARQ说
ARQ说
3.1.5
3.1.6
3.1.7 url ->> ( )
3.1.8
3.1.9 说 HTTP说
3.1.10 HTTP ,
3.1.11 HTTP 说 , ?
3.1.12 Cookie ? Session 常
3.1.13 HTTP 1.0 HTTP 1.1 ?
3.1.12 URI URL ?
3.1.13 HTTP HTTPS 常
3.2 微
3.2.1 Queue
Java Queue
3.2.2 Set
Set
HashSet TreeSet 微
3.2.3 List
List
List
ArrayList LinkedList
之
3.2.4 Map
3.2.5
1. 问
2. 问
3. 问
4.
5. 问 找BST此
6. ⽚ 问 找Self-balancing binary search tree此
7.
8. B-近B+近B*
9. LSM
3.2.6
3.2.7 BFS DFS
3.3
3.3.1 同
de
ui
G KMP
va
越
Ja
3.3.2
3.3.3 同
同
同
同
喜 变
同
3.3.4
候
样
Solution
3.3.5
候
样
Solution
3.3.6 k
候
样
Solution
3.3.7 增 N
样
Solution
3.3.8 同
3.3.9 offer
双
3.3.10
候
样
更
3.3.11
候
样
更
3.3.12
候
样
更
3.3.13
候
样
更
3.3.14
候
样
更
3.3.15
候
de
ui
G 样
更
va
Ja
3.3.16 k
候
样
时
更
3.3.17
时
更
3.3.18
候
样
时
更
3.3.19 内
候
样
时
更
3.3.20 内 ,⼤
候
样
时
更
4.1 MySQL
4.1.1
4.1.2 MySQL?
4.1.3 址
MyISAM InnoDB
4.1.4
4.1.5
4.1.6 只让
4.1.7 ?
4.1.8 (ACID)
4.1.9 ?
4.1.10 下 ?MySQL 下 ?
4.1.11 经 InnoDB经
4.1.12
4.1.13 乐 乐? 乐?
4.1.14 ,id 常
de
ui
G 4.1.15 SQL MySQL
va
4.1.16 MySQL
常
Ja
4.1.17 SQL
4.2 Redis
4.2.1 redis 在
redis/ 让
redis map/guava 让 ?
4.2.2 redis
4.2.3 redis memcached
4.2.4 redis 微 样
String
Hash
List
Set
Sorted Set
4.2.5 redis
4.2.6 redis 外 (MySQL 2000w 近Redis 20w 近 Redis
?)
4.2.7 redis ( redis )
4.2.8 redis
4.2.9 让 让
5.1 Spring
5.1.1. Spring ?
5.1.2 Spring 常
5.1.3 @RestController vs @Controller
5.1.4 Spring IOC & AOP
Spring IoC AOP
IoC
AOP
Spring AOP AspectJ AOP 常
5.1.5 Spring bean
Spring bean 吧 ?
Spring 更 bean 常
@Component @Bean 常
Spring bean ?
Spring bean ?
5.1.6 Spring MVC
Spring MVC ?
SpringMVC ?
5.1.7 Spring 常
5.1.8 Spring
Spring 常
Spring 下 ?
Spring ?
@Transactional(rollbackFor = Exception.class) 常
5.1.9 JPA
de
ui
G JPA 常
va
Ja
5.2 MyBatis
5.2.1 #{} ${} 常
5.2.2 Xml ⾏ 近 select|insert|updae|delete 近 常
5.2.3 门 近 Xml ⾏ 近 Dao 近 近 Dao
常Dao 近 近 常
5.2.4 Mybatis 常 常
5.2.5 Mybatis 近
5.2.6 Mybatis 近 常
5.2.7Mybatis sql 常 sql常 sql 常
5.2.8 Mybatis sql 常 ⾏ 常
5.2.9 Mybatis 只 常 近
5.2.10 Mybatis 快 常 近 常
5.2.11 Mybatis Xml ⾏ 近 Xml ⾏ 近id 常
5.2.12 Mybatis 常
5.2.13 Mybatis Executor 常 常
5.2.14 Mybatis Executor 常
5.2.15 Mybatis ⾏ Enum ⼦ 常
5.2.16 Mybatis ⾏ 近 A include B 近 近B
A 近 A 常
5.2.17 Mybatis Xml ⾏ Mybatis 微 ⾏ 常
5.2.18 Mybatis ORM ⾏ 常 常
5.3 Kafka
5.3.1 Kafka 常 常
5.3.2 ,Kafka 常
5.3.3 常Kafka 常
-三之 :Kafka
5.3.4 Producer Consumer Broker Topic Partition常
5.3.5 Kafka 常 常
5.3.6 Zookeeper Kafka 常
5.3.7 Kafka 常
5.3.8 Kafka
Kafka
5.3.9 Kafka
Reference
6.1
6.1.1 (Authentication) (Authorization) 常
6.1.2 Cookie ? Cookie ? Cookie ?
Cookie ? Cookie ?
Cookie 常
6.1.3 Cookie Session 常 Session 常
6.1.4 Cookie Session 常
6.1.5 Cookie CSRF 近 token 常
6.1.6 Token? JWT? Token 常
6.1.7 OAuth 2.0常
6.1.8 SSO?
de
ui
G 6.1.9 SSO OAuth2.0
va
⼒
Ja
7.1 , offer
7.1.1
7.1.2 ( )
7.1.3 ( )
7.1.4 ( )
7.1.5 ( )
7.1.5 (HR )
7.2 ⼗度
7.2.1 (37 )
7.2.2 (33 )
7.2.3 (46 )
7.2.4 HR
7.3 bingo-interview
7.3.1
7.3.2
7.3.3 Bigo
7.3.4 ( )
7.3.5
7.3.6
7.4 2019 ⼗度
7.4.1
7.4.2 ⼗度
7.4.3
7.4.4
7.5 2020
7.5.1
7.5.2
7.5.3
7.5.4 hr
/
de
ui
G ⼒
法
va
9.1
Ja
近 近
近天 近 机 近 收
JavaGuide 近 JavaGuide
“ ” 直 近 机 加 风 近 全
近
太
之 : JavaGuide1996 koushuangbwcx@163.com
找ps: 全 近 近 此
de
ui 2.3 Java 2.3.1 候 近 候 张 张 直
G
va
Oracle 近 ~~~~
Ja
近 “Java + ”
JavaGuide 喜
1. Java 始
2.
图 JavaGuide 等 近 Java
体 JavaGuide 近 两 近
现 PDF 近 JavaGuide 之
PDF Java 近 3 近
三 JavaGuide pdf
近 近 近
⽅ 直会 ⼏
⼏ 找 PDF 此近 PDF
Typora
们
近 近
元近
近 ⼒ 直
Ja
va
G
ui
近
de
近
1
直会
de
ui
G
va
Ja
V1.0—2020-03-07
JavaGuide 直
V1.1—2020-03-13
√ 近
√ 近
√ 2.1 Java p36+p37
√ 3.3 ThreadLocal
√ 近 之
√ 更 V1.1-JavaGuide
/
de
ui 在话”
G √ “
va
Ja
√ Kafka
Guide
近
近 “ ”
近 直 近
1.1
1.1.1
/ ——
1. 始
2. 7 近 10 ⼒找 BAT此
近 3 近 4 近 5
找 此
3. 始
4. 近 近
1.
2.
3. /
4. /Github
5.
近 现 近 妈
近 offer近 近
de
ui 1.1.2
G
va
Ja
在话 近 近 近
在话 常
常
在话
1. 内 吧始
2. 始
3. bug 觉 始
更 直 更 近 在话 近
近 回 近
在话 hr 近 近 始
近
近 直 1 近 Spring MyBatis
Java JVM
⾛真 近
微 图 近
10 ⼼近 ⼼ RPC 近
Netty 近 近 Github 2k Star! ⼼
近 近
近 近
朋 近 直
1.1.3
直
de
ui
G
va
Ja
1.1.4
常NO直NO直NO直 住近
近
de
ui 1.1.5
G
va
Ja
1.1.6
找 此 近 code近
1.1.7
近
1.1.8
近 近 在话
想
1. 找 微 此
2.
3. 近 近
4. 候 近 近 说 说
redis 让 原道
1.1.9
晚
( 近 常 常
直)
1.1.10
⽉ ThoughtWorks ThoughtWorks
ThoughtWorks 近
微 近
近 20
1.1.11
近 发 始 近 知 近 近
近 近
近星 发 试 热热 近
近 直
de
ui 1.2
G
va
Ja
Markdown 近
Markdown 近 Markdown PDF
1.2.1
⼩ 与 近
?
⼩近 HR 近 HR 10 近 HR
Fail Pass
近 近 近
近 近 近
近 近
近 为 近
更 找Java 微
此近 redis, redis
redis redis redis memcached
redis 外
近 近 近
近 找
此
近 吧 近 吃
近 offer 近
1.2.2
1. HR 找 直此近 近
近 近 ⼒
2.
3.
4.
de
ui 1.2.3
G
va
Ja
Situation 始
Task: 始
Action 样近 始
Result 近
近STAR 近 近 近
近 近 候 近 样
Feature 始
Advantage 始
Benefit 啦光 近 安
1.2.4
近
想
1.
2.
3. 近 近
4. 候 近 近 说 说
: redis 让 原道
1.2.5
近 HR 近
⽩ 近
近 ( 但
近 )
微
Java
JVM 品 找Java 吧 品 所名 品所名 JVM 此
1.2.6
1. 近 都 始
2. MySQL mysql近Java java
今并 近 始
3. 始
1.2.7 tips
1. 近 啊 近 近 微
2. 内 近
3. Github 近
4. 近 近 ⾥
5. 近 近
6. 近 近
7. “ 之 近 ” 近
1.2.8 /
那 (MarkDown 近 PDF):http://cv.ftqq.com/
Typora+Java
1.3
只 :“ / / 近 ⼒
常” “ 常” “ Java常” “Java 常” “
Java 常”......
Java Java
1.3.1 / /
985 211 近 近
近 近 近 近
近 近 ⼒ 近
近 近 近 实
de
ui HR 近会 985近211 更 近HR
G
va
近 近
常 四四 还 还 ⼒ 近
Ja
⼒ 安 近 ⼰ 近
BAT 近 近 ⼒ 还 还
实 ACM
近
⼒ 近
1.3.2 Java
直 近
90% 近 近 近
近 笑推近 Question1
近 近 ⼒ 近 正
近 近 近
常 直 近
近 近 为
近 福 业 微
近 3 近 近
⼒ 近 近“ 微 直
微 直 微 直”近 3
1.3.3 Java ?
JavaGuide “1”
2. 找 Java Java 此
3. ⼒ 近 Java 近
近 Leetcode
4. (HTML CSS JavaScript), BootStrap VUE
5. MySQL SQL
6. J2ee Maven 找 Jar 近 Jar
近 Maven 此
7. Struts2( ) Spring SpringMVC Hibernate Mybatis ( )
Spring 找 ⼒ 此近 SpringBoot
SpringBoot近 Spring SpringMVC
8. Linux ( )
9. Dubbo Zookeeper 找 ActiveMq RabbitMQ此 .找
近 近 近 之 近 此
10. NIO Netty,
11. ( )近 ⼒近JVM 找Java
JVM 此 Java 品 JVM 门找 近
de
ui 近 近
G
va
喜 近 近 常
Ja
近 近 直直直
近 近 常 /Google近 址
1.3.4
近 近 ⼒ offer
近 每
近 近
近 近
1.3.5
Tips
1. 找 近
近 今 此始
2. 找
此
3. +
找 找 此近 近 code近
此 近 近 近
近
4. 晚
( 近 常
常 直)
5.
6. 近 近 在话
想 福 找
微 始 始业
近 近 始 候 近
近 说 说
: redis 让
原道
7. : 下 HashMap 样 SpringMVC
近 直 在话
8. : “
近 ?” “ 近 ?” “ "
?" , ” 近 近 近
9. 动 近
de
ui 近 发 始 近 知
G
va
1.3.6
Ja
们 找 近
近 近 近 近
此 近 难 8 近
不 近 近
近 近 没
1.3.7 / /Github
直
1. 近
近 么 近 近 近
近
2. Github 近 近
近 近
3. 近 近
Java
近 Segmentfault CSDN
近 近 找 Hexo+Githu Pages 此
常
1.3.8
Java
安 近 安 近 Java / / 近
1. jvm 始
2. 喜“ ”近 SOLID 近 之
近 SOLID 常 找 此
3. 近 直
de
ui 4. 让 近
G
va
Ja
5. sense :
Java 安怎
Ja
va
G
ui
de
de
ui ⼒ 安 Java /
G
va
实
Ja
1. 实 找 ACM 此始
2. 微 始
3. 找 此
4. Python Shell Perl 始
5. Java 始
6. SOA 最 始
7. Spring始
8. 始
9.
近 之 合 “ 近
” 直
近 近
找 此近
近
1.4 常 常
1.4.1
直 近 感
10 已 近 直
常 想
1.
2.
3.
de
ui 4.
G
va
近
Ja
/Google近 址
1.4.2
近 JavaGuide htt
ps://github.com/Snailclimb/JavaGuide
JavaGuide
近 找 + + 此直 在话
常
Java + + +JVM
Guide
2.1 Java
1.
更 近 近 ⼏ 近
近 Linux/Unix
近
近
近 近
issue : 常常
近 近 近Java
近 Java 场 近 CPU
场 近
Java
de
ui 2. Java ?
G
va
Ja
1. 始
2. 找 近 近 此始
3. 找 Java 品 此始
4. 始
5. 始
6. 找 C++ 近
近 Java 此始
7. 找 Java 放 近 Java
此始
8. 场 始
JVM
? ?
Java 3
.class-> JVM 近
近 近
( )近 JIT 场 近 JIT 场 JIT 场
场 近 近 近
Java Java 场
JDK JRE
5. Java C++ ?
C++近 Java C++ 直 直直直
C++近 直
近
Java 近
Java 近C++ 始 Java 近
Java 近
C ‘\0’ Java
近
https://blog.csdn.net/sszgg2006/article/details/49148189
Guide
6. Java ?
近 Java 近 main找此
Java 近 JApplet Applet
public 近 public Java
7. Java ?
( main() ) applet main() 近
( init() run() )近 flash
8. ?
1. : ; 同
2. : ( ASCII ), ; 同 (
同 )
3. ⼰ ⼰2 ; 同 ⼰ ( char Java )
de
ui java 2.2.2
G
va
Ja
9. Constructor override?
Constructor override找 此, overload找 此, 微
题
10.
近 近 近
Java 在话
de
ui
G
va
近
Ja
,
近 近活 近 近
private
11. Java :
来 近 近
近 近
近 近
近
1. 找 喜来 来 此近 来
近
2. 近 见
3. 找 在话此
近 近 更 近
近
Java 找 此 找
此
/**
* The count is the number of characters used.
*/
int count;
AbstractStringBuilder(int capacity) {
value = new char[capacity];
}
1. : String
2. 同让 : StringBuilder
3. 同让 : StringBuffer
13.
始
始
14. ?
近 近 近
15. Java
de
ui Java 微 近 super() 微 近
G
va
“ 微 ” 近 微 近 微
微 近 场 近
Ja
super() Java
微 微
近 java javax
17.
1. public近 (Java 8 此近
2. static final 近 近
3. 近 extends 见
1. JDK8 近 近
近 近 近 (
issue:https://github.com/Snailclimb/JavaGuide/issues/146
2. jdk9 来
jdk7~jdk9 Java 找 之 此
1. jdk 7 近
2. jdk8
3. Jdk 9 来 来
18.
1. : 近 始
public,private,static 近 static 始
近 final
2. : static 近
近 static 近 更 近
内
3. : 近 近
4. 游 : 游 找 更 : final
游 此近 游
de
ui 19. ? ?
G
va
Ja
new 近new 更找 更 此近 更找 内
此 0 1 找 近 此;
n 找 n 此
20. ? ?
直找
此 : 近 直
21. ?
? ?
微
微
22.
1.
2. 近 void 微 题
3. 近
23.
1. 近 " . " 近 " . " 更
近
2. 近 找 此近
更 更 始 更
24. , ?
近 近
25. , ?
26. == equals( )
== : 近 (
== 近 == )
equals() :
2 equals() 近 equals() 始
近 true ( 近 )
de
ui
G
va
Ja
hashCode
hashCode() 近 始 int
hashCode() JDK Object.java 近 Java
hashCode() 题
(key-value)近 “ ” 也 “ ”
直找 此
hashCode
hashCode()
hashCode equals
1. 近 hashcode
2. , equals true
3. hashcode 近
4. equals hashCode
5. hashCode() hashCode()近 class
找 此
28. Java
Java ⽔常
29. ?
近
近 近
近 近 近
近 近
近 近
近 又 近 近
近 近 ⼰ CPU 近 近 近
近 近
近 近
近 孩近
近 近
30. ?
Java 6 找 Java
4.1.4 此
de
ui ⽇ Java
G
va
找 Java 4.1.4 此
Ja
NEW 近 start() 近
READY cpu 找 timeslice 此
RUNNING
wait() 近 WAITING
近 TIME_WAITING( )
近 sleep(long millis) wait(long millis) Java
TIMED WAITING Java RUNNABLE
近 经 近 BLOCKED
Runnable run() TERMINATED
31 final
de
ui final
G
va
1. final 近 近 果 始
Ja
近
2. final 近 final 个
final
3. final 经 近 始
Java 近 final 图 近
找 Java final
此 private 个 final
32 Java
Java
Error : 近
近 JVM找Java 品 此 更 近Java 品
找 Virtual MachineError 此 近 JVM 近
OutOfMemoryError 近Java 品 找JVM此
因 品 品 近 Java 品
找Virtual MachineError此 找NoClassDefFoundError此 近
近
近 近 Java 近
Error 候
de
ui Exception : Exception RuntimeException
G
va
RuntimeException Java 品 活 NullPointerException找
近活 此 ArithmeticException找 近 近活 此
Ja
0
ArrayIndexOutOfBoundsException 找 此
Throwable
catch try 表
finally 表 近finally try catch
return 近finally
4 finally
1. finally 近finally
2. System.exit(int) exit 题 始 近
finally
3. 又
4. 得 CPU
issue:https://github.com/Snailclimb/JavaGuide/issues/190
33 Java
近 transient
de
ui transient 死 更 始 近
G
va
transient transient 近
Ja
34
1 Scanner
2 BufferedReader
35 Java IO
Java IO ?
近 始
近 始
Java Io 晚 40 近 近 近
近 Java I0 40 4 ⽣
InputStream/Reader: 近 近
OutputStream/Writer: 近 近
微
Ja
va
G
ui
de
微
de
ui
G
va
Ja
, ?
I/O
Java 品 近 ⼏ 近 近
近 I/O 近
开 近 晚
BIO,NIO,AIO ?
36. :static,final,this,super
: https://gitee.com/SnailClimb/JavaGuide/blob/master/docs/java/basic/final,
static,this,super.md
38. vs
1. ⽔近 ⽔ 向 近 么向
2. ⽔近 近 近 近
向
https://stackoverflow.com/questions/1906445/what-is-the-difference-between-jdk-and-jre
https://www.educba.com/oracle-vs-openjdk/
https://stackoverflow.com/questions/22358071/differences-between-oracle-jdk-and-openjdk?ans
wertab=active#tab-top
JavaGuide : JavaGuide
"Java " 直
2.2 Java
Guide
2.2.1 List,Set,Map
List( ) List 找 此近
Set( ):
Map( Key ): Map Key Key
近 Key 近 Key String 近
4. LinkedList 近 ArrayList
( get(int index) )
5. ArrayList list 近
LinkedList ⼏ ArrayList 找
de
ui 此
G
va
:RandomAccess
Ja
RandomAccess 近 RandomAccess
⽅ 常
list
近 prev 近 next
de
ui
G
va
Ja
Arraylist 近 Arraylist
2.2.4 ArrayList
: 样ArrayList 见
HashMap 2 tableSizeFor()
此 HashMap 2 , 在话 2
5. JDK1.8 HashMap 近 服
找 8此 近 近 Hashtable
HashMap
HashMap 2
/**
* Returns a power of two size for the given target capacity.
*/
static final int tableSizeFor(int cap) {
int n = cap - 1;
n |= n >>> 1;
n |= n >>> 2;
n |= n >>> 4;
n |= n >>> 8;
n |= n >>> 16;
return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n +
1;
}
HashMap HashSet
de
ui
G Map Set
va
Ja
2.2.7 HashSet
HashSet 近HashSet hashcode 近
hashcode 近 hashcode近HashSet
hashcode 近 equals() 也 hashcode
近HashSet 找但 Java 主 Head fist java
此
hashCode equals
1. 近 hashcode
2. , equals true
3. hashcode 近
4. 近equals 近 hashCode
5. hashCode() hashCode()近 class
找 此
== equals
1. == 更 equals 更
2. == equals() 同
3. == equals()
Guide
2.2.8 HashMap
JDK1.8
“ ” 近
近
de
ui JDK1.8
G
va
近 JDK1.8 近 服 找
Ja
8此
近 近
2.2.9 HashMap 2
HashMap 近 天起近
近Hash -2147483648 2147483647近 40 ⾏ 近 题 ⾏
近 天起 40 近
近 ⼼
“ (n - 1) & hash” 找n
此 HashMap 2
% ⼼ 近 “ (%) 2
(&) hash%length==hash&(length-1) length 2
n ” & % HashMap
2
2.2.10 HashMap
Rehash 近jdk 1.8
近 HashMap, HashMap
ConcurrentHashMap
de
ui https://coolshell.cn/articles/9606.html
G
va
ConcurrentHashMap Hashtable
http://www.cnblogs.com/chengxiao/p/6842045.html
HashTable:
JDK1.7 ConcurrentHashMap
de
ui
G
va
Ja
2.2.12 ConcurrentHashMap /
JDK1.7
近 经近 ⼰ 经
近
JDK1.8
synchronized 经 问 近 hash 近 近
N国
近 compareTo() compare() 近
近 song
近 compareTo() Comparator Comparator
近 Collections.sort().
Comparator
@Override
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1);
}
});
System.out.println("定制排序后:");
System.out.println(arrayList);
Output:
原始数组:
[-1, 3, 3, -5, 7, 4, -9, -7]
Collections.reverse(arrayList):
[-7, -9, 4, 7, -5, 3, 3, -1]
Collections.sort(arrayList):
[-9, -7, -5, -1, 3, 3, 4, 7]
定制排序后:
[7, 4, 3, 3, -1, -5, -7, -9]
compareTo
// person对象没有实现Comparable接⼝,所以必须实现,这样才不会出错,才可以使treemap中的
数据按顺序排列
// 前⾯⼀个例⼦的String类已经默认实现了Comparable接⼝,详细可以查看String类的API⽂档,
另外其他
// 像Integer类等都已经实现了Comparable接⼝,所以不需要另外实现了
this.age = age;
}
/**
* TODO重写compareTo⽅法实现按年龄来排序
*/
@Override
public int compareTo(Person o) {
// TODO Auto-generated method stub
if (this.age > o.getAge()) {
return 1;
} else if (this.age < o.getAge()) {
return -1;
}
return age;
}
}
}
}
Output
5-⼩红
10-王五
20-李四
30-张三
2.2.14
Collection
1. List
Arraylist Object
Vector Object
de
ui LinkedList (JDK1.6 近JDK1.7 )
G
va
2. Set
Ja
TreeSet ( ⽚ 问 )
Map
HashMap JDK1.8
HashMap + 近 HashMap 近
找“ ” 此 JDK1.8 近
服 找 8此 近 近
LinkedHashMap LinkedHashMap HashMap近 看 微
近LinkedHashMap 微 近
近 微 近
LinkedHashMap 样找JDK1.8此
Hashtable + 近 HashMap 近
TreeMap 找 ⽚ 问 此
2.2.15 ?
近 Map 近
TreeMap, HashMap, ConcurrentHashMap.
近 Collection 近 Set
TreeSet HashSet近 List ArrayList LinkedList近
JavaGuide : JavaGuide
"Java " 直
2.3
Guide
2.3.1. ?
近 近
近 又
近 windows 近 window
找.exe 此
de
ui
G
va
Ja
近
近
近 近 近
近 近
找 近 近 main
main 此
Java main
2.3.2. ,
JVM
近 (JDK1.8
) 近
近
近 近
始
见 直
来 常
常
1. 近 近
2. 近 近
de
ui 近 native 近 undefined 近
G
va
Java
Ja
近 来
Java 内 内 乐
近 内 Java 品 内 内 内
品 内 回 近 Java
Native HotSpot 品
Java 品 内
近 近 品 内 内 来
近 近 (
)近 场 场
2.3.3. ?
近 ( )始
近
2.3.4. ?
近 ,
近 CPU 近
还 近
近
CPU IO 更
CPU 近IO 始 IO 近CPU
50% 近 CPU
近 IO 近 100%
: CPU 更
近 近CPU CPU 近
CPU 近 CPU
2.3.5. ?
de
ui 近
G
va
近 近 些 经
Ja
2.3.6. ?
Java 6 找 Java
4.1.4 此
⽇ Java
找 Java 4.1.4 此
NEW 近 start() 近
READY CPU 找timeslice此
RUNNING
wait() 近 WAITING
近 TIME_WAITING( )
近 sleep(long millis) wait(long millis) Java
TIMED WAITING Java RUNNABLE
近 经 近 BLOCKED
Runnable run() TERMINATED
2.3.7. ?
CPU 近 CPU
近 近CPU
近
喜 CPU 近
近
近 近
近 他 近 ⼏ CPU 近
近 ⼏
Linux 找 喜 Unix 此 近 近
⼏
2.3.8. ? ?
死 近 死 近
近 A 2近 B 1近 ⼩ 近
经
de
ui
G
更 经, 品 经 ( )
va
Ja
Output
更 经
1. ⼰
2. 死 近
3. 买 : 买 近 会
4. :
近 经 找 此
⼰ ⼩ 近 ⼩ 近 ⼰
⼩ ⼩ 近
2 经
Output
de
ui
G Thread[线程 1,5,main]get resource1
va
Thread[线程 1,5,main]waiting get resource2
Ja
样 经 ?
1 resource1 后 经, 2 1 resource2
后 经近 1 resource1 resource2 后 经 ⼰ 近 2
近 经
synchronized
synchronized
synchronized 近synchronized
de
ui 近 Java 近synchronized 经近 近 后 经找monitor此
G
va
Mutex Lock 近Java ⾏
谁 近 近
Ja
近 近 近
synchronized Java 6 Java JVM synchronized
近 synchronized 经 JDK1.6 经 近
⽹经 ⽹经 经 经 经 经 经
synchronized
synchronized
: 更 经近 更 经
: 经近 更近
更 近 找 static 近 new 近 此
A 更 synchronized 近 B 更
synchronized 近 近 近 synchronized
synchronized
: 经 近 经近 经
更 synchronized
“ 更 常 直 也 经 更
直”
private Singleton() {
}
1. uniqueInstance
2. uniqueInstance
3. uniqueInstance
JVM 近 1->3->2
近 更 更 近 T1 1 3近
T2 getUniqueInstance() uniqueInstance 近 uniqueInstance近
uniqueInstance
volatile 给 JVM 近
synchronized
synchronized JVM
synchronized
synchronized
JDK1.6 synchronized
JDK1.6 经 近 经 经 ⽹经 ⽹经 经 经
经
经 近 经 经 经 经 近 实
经 近 经 经
https://gitee.com/SnailClimb/JavaGuide/blob
/master/docs/java/Multithread/synchronized.md
synchronized ReentrantLock
经 “ 经” 经
经近 经 近 经 近
经 近 经 经近经 1近 经
0 经
ReentrantLock synchronized
synchronized近ReentrantLock
ReentrantLock 近 lock.lockInterruptibly()
de
ui 近
G
va
ReentrantLock synchronized
近
Ja
ReentrantLock ReentrantLock
ReentrantLock(boolean fair)微
synchronized wait() notify()/notifyAll() / 近
ReentrantLock 近 Condition newCondition()
Condition JDK1.5 近 近
Lock Condition 更找 后 此近 Condition
notify()/notifyAll()
JVM ReentrantLock Condition “
”近 近 Condition synchronized
Lock Condition 更近 要 notifyAll()
近 Condition 更 signalAll()
谁 要 Condition 更
近 ReentrantLock
2.3.11 volatile
1. Java
JDK1.2 近Java 找 此 近
Java 近 找 此 近
近
向 近
近 volatile近 JVM近 我 近
近 volatile
de
ui
G
va
Ja
2. synchronized volatile
synchronized volatile
volatile synchronized
volatile synchronized
volatile synchronized
2.3.12 ThreadLocal
1. ThreadLocal
近
JDK ThreadLocal ThreadLocal
ThreadLocal
ThreadLocal
ThreadLocal get() set()
可 近 ⼈ 近
⼈ 近 ThreadLocal
实
2. ThreadLocal
近 ThreadLocal
de
ui
G import java.text.SimpleDateFormat;
va
import java.util.Random;
Ja
// SimpleDateFormat 不是线程安全的,所以每个线程都要有⾃⼰独⽴的副本
private static final ThreadLocal<SimpleDateFormat> formatter =
ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyyMMdd HHmm"));
@Override
public void run() {
System.out.println("Thread Name= "+Thread.currentThread().getName()+"
default Formatter = "+formatter.get().toPattern());
try {
Thread.sleep(new Random().nextInt(1000));
} catch (InterruptedException e) {
e.printStackTrace();
}
//formatter pattern is changed here by thread, but it won't reflect
to other threads
formatter.set(new SimpleDateFormat());
Output:
ThreadLocal Java8近
近 近IDEA Java8 (IDEA 直)
ThreadLocal Java 8 见 近 withInitial()近 Supplier
3. ThreadLocal
Thread
//与此线程有关的InheritableThreadLocal值。由InheritableThreadLocal类维护
ThreadLocal.ThreadLocalMap inheritableThreadLocals = null;
......
}
ThreadLocal set()
de
ui
G public void set(T value) {
va
Thread t = Thread.currentThread();
Ja
近 ThreadLocalMap
ThreadLocal ThreadLocal ThreadLocalMap
ThrealLocal Thread.currentThread() 近
getMap(Thread t) ThreadLocalMap
ThreadLocal 近 Thread
ThreadLocalMap 近 ThreadLocalMap key ThreadLocal 近 value
ThreadLocal set
de
ui
G
va
Ja
ThreadLocalMap ThreadLocal
4. ThreadLocal
de
ui ThreadLocalMap key ThreadLocal , value 近
G
va
ThreadLocal 近 所名 近key 近 value
近 ThreadLocalMap 世家 近value
Ja
Entry(ThreadLocal<?> k, Object v) {
super(k);
value = v;
}
}
近
现 所名 意候 吧 近
果 近 近 近 所名
近
找ReferenceQueue此 近 所名 近
Java 品
2.3.13
1.
Http
找 喜 此 近更
Java
⼏
近
近 近 ⼏ 近
我 近 乐 近 后
2. Runnable Callable
Runnable.java
@FunctionalInterface
public interface Runnable {
/**
* 被线程执⾏,没有返回值也⽆法抛出异常
*/
public abstract void run();
}
Callable.java
@FunctionalInterface
public interface Callable<V> {
/**
* 计算结果,或在⽆法这样做时抛出异常。
* @return 计算得出的结果
* @throws 如果⽆法计算结果,则抛出异常
*/
V call() throws Exception;
}
3. execute() submit()
1. execute()
2. submit() Future
Future 近 Future get()
近get() 死 近 get(long timeout,TimeUnit unit)
死 近
AbstractExecutorService submit 更
newTaskFor FutureTask
4.
Executors 乐
FixedThreadPool ⽇ 乐 乐
近 乐 近 近 现
近 近
SingleThreadExecutor 乐 ⼼
乐近 近 近
CachedThreadPool 乐 乐
近 近 近
近 会 近 乐
Executors
5. ThreadPoolExecutor
de
ui ThreadPoolExecutor 微 近 ⼼ 微
G
va
找 微 微 ⽽
此近 近
Ja
/**
* ⽤给定的初始参数创建⼀个新的ThreadPoolExecutor。
*/
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler) {
if (corePoolSize < 0 ||
maximumPoolSize <= 0 ||
maximumPoolSize < corePoolSize ||
keepAliveTime < 0)
throw new IllegalArgumentException();
if (workQueue == null || threadFactory == null || handler == null)
throw new NullPointerException();
this.corePoolSize = corePoolSize;
this.maximumPoolSize = maximumPoolSize;
this.workQueue = workQueue;
this.keepAliveTime = unit.toNanos(keepAliveTime);
this.threadFactory = threadFactory;
this.handler = handler;
}
ThreadPoolExecutor
ThreadPoolExecutor 3
corePoolSize :
maximumPoolSize : 近
workQueue: 近 近
ThreadPoolExecutor :
1. keepAliveTime: 乐 corePoolSize 近 近
近 近 keepAliveTime
始
2. unit : keepAliveTime
3. threadFactory :executor
4. handler : 在话
ThreadPoolExecutor
de
ui ThreadPoolExecutor :
G
va
Ja
近ThreadPoolTaskExecutor :
ThreadPoolExecutor.AbortPolicy 活 RejectedExecutionException ⽽
ThreadPoolExecutor.CallerRunsPolicy
近 近
快 近
ThreadPoolExecutor.DiscardPolicy 近
ThreadPoolExecutor.DiscardOldestPolicy
6. Demo:Runnable+ThreadPoolExecutor
近 乐 Demo
Runnable 找 Callable 近
此
MyRunnable.java
import java.util.Date;
/**
* 这是⼀个简单的Runnable类,需要⼤约5秒钟来执⾏其任务。
* @author shuang.kou
*/
public class MyRunnable implements Runnable {
public MyRunnable(String s) {
this.command = s;
}
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + " Start. Time =
" + new Date());
processCommand();
System.out.println(Thread.currentThread().getName() + " End. Time = "
+ new Date());
de
ui }
G
va
Ja
@Override
public String toString() {
return this.command;
}
}
近 ThreadPoolExecutor 微 题
乐
ThreadPoolExecutorDemo.java
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
//使⽤阿⾥巴巴推荐的创建线程池的⽅式
//通过ThreadPoolExecutor构造函数⾃定义参数创建
ThreadPoolExecutor executor = new ThreadPoolExecutor(
CORE_POOL_SIZE,
MAX_POOL_SIZE,
KEEP_ALIVE_TIME,
TimeUnit.SECONDS,
new ArrayBlockingQueue<>(QUEUE_CAPACITY),
new ThreadPoolExecutor.CallerRunsPolicy());
1. corePoolSize: 5
2. maximumPoolSize 10
3. keepAliveTime : 1L
4. unit: TimeUnit.SECONDS
5. workQueue ArrayBlockingQueue近 100;
6. handler: CallerRunsPolicy
Output
7.
4.6 近 5 5
5 近 样 刚 常找
此
近 样 样 乐
// 下⾯会涉及到 3 步 操作
// 1.⾸先判断当前线程池中之⾏的任务数量是否⼩于 corePoolSize
// 如果⼩于的话,通过addWorker(command, true)新建⼀个线程,并将任务
(command)添加到该线程中;然后,启动该线程从⽽执⾏任务。
if (workerCountOf(c) < corePoolSize) {
if (addWorker(command, true))
return;
c = ctl.get();
}
// 2.如果当前之⾏的任务数量⼤于等于 corePoolSize 的时候就会⾛到这⾥
// 通过 isRunning ⽅法判断线程池状态,线程池处于 RUNNING 状态才会被并且队列可
以加⼊任务,该任务才会被加⼊进去
if (isRunning(c) && workQueue.offer(command)) {
int recheck = ctl.get();
// 再次获取线程池状态,如果线程池状态不是 RUNNING 状态就需要从任务队列中移
除任务,并尝试判断线程是否全部执⾏完毕。同时执⾏拒绝策略。
if (!isRunning(recheck) && remove(command))
reject(command);
// 如果当前线程池为空就新创建⼀个线程并执⾏。
else if (workerCountOf(recheck) == 0)
addWorker(null, false);
}
//3. 通过addWorker(command, false)新建⼀个线程,并将任务(command)添加到该线
程中;然后,启动该线程从⽽执⾏任务。
//如果addWorker(command, false)执⾏失败,则通过reject()执⾏相应的拒绝策略的
内容。
else if (!addWorker(command, false))
reject(command);
}
3 近 近
de
ui
G
va
Ja
近 4.6 Demo近 常
近 近 样
品 10 近 5 100 近
5 近 5 5
近 5
2.3.14 Atomic
1. Atomic
Atomic 场 近 微 近
从 Atomic
近 果 近 过
近 /
java.util.concurrent java.util.concurrent.atomic ,
de
ui
G
va
Ja
2. JUC 4 ?
AtomicInteger
AtomicLong
AtomicBoolean
AtomicIntegerArray
AtomicLongArray
AtomicReferenceArray
AtomicReference
AtomicStampedReference
AtomicMarkableReference
AtomicIntegerFieldUpdater
AtomicLongFieldUpdater
AtomicStampedReference 近
近 CAS ABA
3. AtomicInteger
de
ui AtomicInteger
G
va
Ja
AtomicInteger
AtomicInteger 近 increment() 经
class AtomicIntegerTest {
private AtomicInteger count = new AtomicInteger();
//使⽤AtomicInteger之后,不需要对该⽅法加锁,也可以实现线程安全。
public void increment() {
count.incrementAndGet();
}
4. AtomicInteger
AtomicInteger 样
AtomicInteger
static {
try {
valueOffset = unsafe.objectFieldOffset
(AtomicInteger.class.getDeclaredField("value"));
} catch (Exception ex) { throw new Error(ex); }
}
CAS 近 UnSafe
objectFieldOffset() 近 “ ” 近
valueOffset value volatile 近 近 JVM
2.3.6 AQS
1. AQS
AQS 微
经 近 AQS 微 近
ReentrantLock 近 Semaphore 近 ⼆ ReentrantReadWriteLock 近
SynchronousQueue近FutureTask AQS 近 AQS
微
2. AQS
AQS 近 5.2
近 “ AQS ”
更 近 近 近
信
AQS 近 近
de
ui AQS
G
va
AQS
Ja
AQS CLH
CLH(Craig,Landin,and Hagersten) 品 找 品
更近 此 AQS CLH经
找Node此 经
AQS(AbstractQueuedSynchronizer)
protected getState近setState近compareAndSetState
//返回同步状态的当前值
protected final int getState() {
return state;
}
// 设置同步状态的值
protected final void setState(int newState) {
state = newState;
}
//原⼦地(CAS操作)将同步状态值设置为给定值update如果当前同步状态的值等于expect(期望值)
protected final boolean compareAndSetState(int expect, int update) {
return unsafe.compareAndSwapInt(this, stateOffset, expect, update);
}
AQS
de
ui AQS
G
va
Exclusive找 ⼰此 近 ReentrantLock 经 经
Ja
经 近 经
经 经 近 经近
Share 找 此 近 Semaphore/CountDownLatch Semaphore
CountDownLatch CyclicBarrier ReadWriteLock
ReentrantReadWriteLock 近 ReentrantReadWriteLock 经
state
近 找 /谁 此近AQS
AQS
近 找
此
1. AbstractQueuedSynchronizer 找 近
state 此
2. AQS 近 近
AQS AQS
isHeldExclusively()//该线程是否正在独占资源。只有⽤到condition才需要去实现它。
tryAcquire(int)//独占⽅式。尝试获取资源,成功则返回true,失败则返回false。
tryRelease(int)//独占⽅式。尝试释放资源,成功则返回true,失败则返回false。
tryAcquireShared(int)//共享⽅式。尝试获取资源。负数表示失败;0表示成功,但没有剩余可⽤
资源;正数表示成功,且有剩余资源。
tryReleaseShared(int)//共享⽅式。尝试释放资源,成功则返回true,失败则返回false。
近 活 UnsupportedOperationException
近 死 AQS final 近 近
CountDownLatch 更近 N 近state N找 N
此 N 近 countDown() 近state CAS(Compare and
Swap) 1 ( state=0)近 unpark() 近
await()题 近 ⼼
de
ui 近 ⼰ 近 近 tryAcquire-
G
va
tryRelease tryAcquireShared-tryReleaseShared AQS
⼰ 近
Ja
ReentrantReadWriteLock
AQS 样
http://www.cnblogs.com/waterystone/p/4920797.html
https://www.cnblogs.com/chengxiao/archive/2017/07/24/7141160.html
3. AQS
2.3.15 Reference
Java 品
Java
Java
http://www.cnblogs.com/waterystone/p/4920797.html
https://www.cnblogs.com/chengxiao/archive/2017/07/24/7141160.html
https://www.journaldev.com/1076/java-threadlocal-example
2.4 JVM
Guide
2.4.1 Java ( )
Java 品 Java 吧 JDK. 1.8
近 在话
JDK 1.8
Ja
va
G
ui
de
JDK 1.8
de
ui
G
va
Ja
品 内
内
( )
近
“ ”
de
ui 1. 近 近
G
va
近 近
Ja
2.
OutOfMemoryError
Java
Java Java
StackOverFlowError Java 品
内 见 近 内
Java 品 内 近 活 StackOverFlowError
OutOfMemoryError Java 品 内 见 近 内 近
见 近 活 OutOfMemoryError
Java 品 内 来 近 Java 品 内近 近
又 又
Java 内 微 内近Java 内 内 近 题 内
Java内近 题 近 内 ⼤
Java
1. return
2. 活
内 ⼤
品 内 回 近 Java
Native HotSpot 品 Java 品 内
近 内 内 近
内
会 内 内 近 StackOverFlowError
OutOfMemoryError
de
ui
G
va
品 近Java 吧近 品
Ja
Java
eden s0 s1 近tentired 近
Eden 吧 近 所名 近 近 s0 s1近
1(Eden ->Survivor 1)近 找 15 此近
服 近 -XX:MaxTenuringThreshold
Java 近 吧近 品
场 场 Java 品 候 近
Non-Heap 近 Java
近 之 太
Java 品 近
近 JVM Java
HotSpot
近 HotSpot 近 Java 品 近 近
近 近 品
JDK 1.8
-XX:PermSize=N //⽅法区(永久代)初始⼤⼩
-XX:MaxPermSize=N //⽅法区(永久代)最⼤⼤⼩,超过这个值将会抛出OutOfMemoryError异
常:java.lang.OutOfMemoryError: PermGen
近所名 吧 近 “ ” **
近 近 近 品 ⼏
(PermGen) (MetaSpace) ?
JVM ⽇ 近 近 近
近 java.lang.OutOfMemoryError -XX :
MaxMetaspaceSize 近 unlimited近
-XX:MetaspaceSize 近 Metaspace
近 近
乐 Class 候 近
乐 找 场 此
乐 近 近 乐 ⼩ 活
OutOfMemoryError
—— https://blog.csdn.net/wangbiao007/article/details/78545189
OutOfMemoryError
de
ui JDK1.4 NIO(New Input/Output) 近 Channel
G
va
Buffer I/O 近 Native 题 近 Java
近
Ja
DirectByteBuffer
Java Native
Java 近 近
2.4.2 Java
Java 近 近
品 new 近 也 乐
近 也 样 近
近 品
近 Java
“ ” “ ” 近 Java Java
近 Java Java 近 GC
" - "近 " - "找 " - "此近 近
近 近 近 种
近 品 近 近 近 品
CAS+ CAS 经 经 近 经
近 近 CAS
de
ui
G
va
TLAB Eden 近JVM 近
近 ⼼ 近
Ja
近 品 中 找 喜 此近
更 Java 游 近
中
中 近 近更
更 GC
近 品 近 经 近
init 近 品 近 近
Java 近 近<init> 近 中
近 new <init> 近 近
2.4.3 ?
近 Java 内 reference
品 近
1. 期 近 Java 期乐近reference
期 近 期 更 始
2. 近 Java 想
近 reference
de
ui
G
va
Ja
reference
reference
2.4.4
eden s0 s1 近tentired 近
Eden 吧 近 所名 近 近 s0 s1近
1(Eden ->Survivor 1)近 找 15 此近
服 近 -XX:MaxTenuringThreshold
GC Minor GC : 所名 近Minor GC 种近
2.4.6 ?( )
更近 所名 又找
不重 此
全 近 近 1始 近 1始
0
“GC Roots” 近 近
重 近 GC Roots 近
2.4.7 , , ,
近 样 近
“ ”
JDK1.2 近Java 见 近 找
此
de
ui (StrongReference)
G
va
近 近
Ja
近所名 近Java 品 活
OutOfMemoryError 近 近
(SoftReference)
近 近所名
近 近 所名 近
让
找ReferenceQueue此 近 所名 近
JAVA 品
(WeakReference)
近
现 所名 意候 吧 近 果
近 近 近 所名
近
找ReferenceQueue此 近 所名 近Java
品
4 PhantomReference
" " 近 近 近
近 近 所名
找ReferenceQueue此
所名 近 近 近
近
所名 近
近 近 近
JVM OutOfMemory
2.4.8 ?
乐 近 常
乐 同 "abc"近 String 同 近
"abc" 近 近"abc" 乐
2.4.9 ?
近 常
de
ui “ ” 近 “ ” 记
G
va
3 “ ”
Ja
更 近 Java 更
ClassLoader
java.lang.Class 近
品 3 近 “ ”近
2.4.10
“ ” “ ” 近
近 所名
1.
2.
Ja
va
G
ui
de
近“
”
近
近
近
de
ui -
G
va
近 看 近
Ja
“ - ”
近 近
品 所名 近 近
java 近
所名
“ - ” “ - ”
2.4.11 HotSpot
GC
2.4.12 ?
de
ui
G
va
Ja
近
所名 近 所名 近
近 HotSpot
品 所名
Serial
Serial找同 此 所名
“ ” 所名 所名
近 所名 现 找 "Stop The World"
此近
Serial 所名 常 近
Serial 近 Serial
Client 品
ParNew
de
ui ParNew Serial
G
va
Serial
Ja
Parallel 所名 近 看
Concurrent 所名 找 近 此近
近 所名 CPU
Parallel Scavenge
-XX:+UseParallelGC
使⽤Parallel收集器+ ⽼年代串⾏
-XX:+UseParallelOldGC
使⽤Parallel收集器+ ⽼年代并⾏
Serial Old
Serial 近 不 不 JDK1.5
Parallel Scavenge 近 不 CMS
Parallel Old
CMS
现 近 root 近 始
GC 近 得 微 近 得
微 吧近 GC
样
近 近
近 GC 吧 意
de
ui
G
va
Ja
所名 近
CPU
-“ - ”
G1
G1 (Garbage-First) , .
GC , .
JDK1.7 HotSpot 品
CMS “ -- ” 近G1 “ ” 始
“ ”
G1 CMS 近 G1 CMS 近
G1 近 近 M
G1
G1 Region(
Garbage-First ) Region 吧 近
GF 找 中此
de
ui 2.4.13
G
va
Ja
Java 品 近 ClassFile 微
ClassFile {
u4 magic; //Class ⽂件的标志
u2 minor_version;//Class 的⼩版本号
u2 major_version;//Class 的⼤版本号
u2 constant_pool_count;//常量池的数量
cp_info constant_pool[constant_pool_count-1];//常量池
u2 access_flags;//Class 的访问标记
u2 this_class;//当前类
u2 super_class;//⽗类
u2 interfaces_count;//接⼝
u2 interfaces[interfaces_count];//⼀个类可以实现多个接⼝
u2 fields_count;//Class ⽂件的字段属性
field_info fields[fields_count];//⼀个类会可以有个字段
u2 methods_count;//Class ⽂件的⽅法数量
method_info methods[methods_count];//⼀个类可以有个多个⽅法
u2 attributes_count;//此类的属性表中的属性数
attribute_info attributes[attributes_count];//属性表集合
}
Class 找 近 近 此
de
ui
G
va
Ja
微 在话 Class 微晚
1. : 品 Class
2. Class Class 近 场
3. 乐
4. 近 喜 Class 近
public abstract 近 final
5. , 近
近 Java 近 近 java.lang.Object 近
java 近 java.lang.Object 近 Java 0
6. 候 近 implents(
extends)
7. 候 喜 更 近 喜
de
ui
G
va
8.
近 近 前
Ja
9. Class
近 3
1.
2. 微 微
3. Class ,
品 3 近 "
" ZIP 找
JAR EAR WAR 此 找 JSP此
loadClass()
Java
⽣ 近 在话
问 近 近
1. BootstrapClassLoader( ) 近 C++ 近
%JAVA_HOME%/lib jar -Xbootclasspath 重
2. ExtensionClassLoader( ) %JRE_HOME%/lib/ext jar
近 java.ext.dirs 重 jar
3. AppClassLoader( ): 近 classpath
jar
?
de
ui
G
va
ClassLoder 说
Ja
近 近
loadClass()
BootstrapClassLoader
null 近 BootstrapClassLoader
Output
de
ui
G ClassLodarDemo's ClassLoader is sun.misc.Launcher$AppClassLoader@18b4aac2
va
The Parent of ClassLodarDemo's ClassLoader is
Ja
sun.misc.Launcher$ExtClassLoader@1b6d3586
The GrandParent of ClassLodarDemo's ClassLoader is null
场 近 近 “
” 近 Mather ClassLoader Father ClassLoader 近
“ ” 近 “ ” API 候
:
The Java platform uses a delegation model for loading classes. The basic idea is that every class
loader has a "parent" class loader. When loading a class, a class loader first "delegates" the search
for the class to its parent class loader before attempting to find the class itself.
⽣ 近 近 java.lang.ClassLoader
loadClass() 近
if (c == null) {
long t1 = System.nanoTime();
//⾃⼰尝试加载
c = findClass(name);
sun.misc.PerfCounter.getFindClasses().increment();
}
}
if (resolve) {
resolveClass(c);
}
return c;
}
}
⽣ Java 我 近 找JVM
近 此近 Java API
⽣ 近 近
java.lang.Object 近 近 Object
⽆ 近 近 loadClass()
+ 微+
3.1
Guide
近 近 在话
(application-layer 说
找 此
说 说 近 DNS近 HTTP 近
SMTP
HTTP
(transport layer)
“ ” 近
近
近 近
:
de
ui 1. TCP找Transmission Control Protocol此-- 近
G
va
2. UDP找User Datagram Protocol此-- 近 找
此
Ja
TCP UDP
近
TCP/IP 微 近
IP 近 IP 近
“ UDP ” “ IP ” 近
近 “ ”
近 “ ” 近 微
.
微找heterogeneous此 找router此
说 说 找Intert Protocol此 说 近
IP
近 近
近 近 也
近 近
找 近 也
近 此近 说 说
(physical layer)
想
在 “ ” 近
近
说 TCP/IP 说 TCP/IP
TCP IP 说 近 TCP/IP说
微 近 博 微
https://blog.csdn.net/yaopeng_2005/article/details/7064869
de
ui
G
va
Ja
3.1.2 TCP ( )
近TCP说
TCP
de
ui
G
近 3 (
va
HTTP )
Ja
– SYN – –
– SYN/ACK – –
– ACK – –
de
ui
G
va
Ja
Client 始Server 近
Client 近 始Server
近
Client 近 始Server
近
SYN
SYN 近
SYN, ACK
SYN近 近
ACK
TCP “ 回 ”
- FIN近 得
- FIN近 ACK近 1 SYN 近 FIN
⼰
- 得 近 FIN
de
ui - ACK 近 1
G
va
Ja
近 得
近 近 得 TCP
更 A B 近 近A “ ”近B “ ”近 B
近A B 您 近 B 近 B
“ ”近A “ ”近
喜 近
https://blog.csdn.net/qzcsu/article/details/72861891
3.1.2 TCP,UDP
UDP 近 UDP 近
UDP 近 UDP 找 此近
QQ QQ
TCP 近 TCP
TCP 近 找TCP TCP ⽔
近 近 ⽔ 近 近
近 此近 近 近 近
说 近 ⼰ TCP
3.1.3 TCP
1. 从 TCP
2. TCP 近 近
3. TCP 也 也 近 也
也 近TCP
4. TCP
5. TCP ⽇ 让 近TCP 让
他 近 近
TCP 说 说 找TCP 此
6. 近
7. ARQ 近 近
8. TCP 近 近
近
de
ui 3.1.4 ARQ
G
va
Ja
ARQ
说 近 近
找 ACK此 找 此近 ACK 近 近
近 始
说 近 近 近 始
1) :
, , .
2) :
说 看 近 找
此 近
ARQ 说
近 近 ARQ
近 近
近 近
3)
A M1 近B 近B A M1 近
A 近 近A M1 近B
世家 1. M1 近 2. A 找
近 A 近 B 此
A M1 近B
近A M1 近B看 找B 2 M1此 A B
近A B M1 找A
2 此 1. A 近 2. B M1 近
M1
ARQ
ARQ 说 近
近 近 近
近 近 近
de
ui ⾏ 5 近
G
va
找3 此近 近
Ja
Go-Back-N找 N此近 N
3.1.5
TCP
近
0近
3.1.6
近 近
近
近 长
近晚 近 近 近
近
近
近TCP (cwnd)
近
TCP 近
找 AQM此近
近 近
死 近 近 成 近
近 cwnd 1近
近cwnd 国
cwnd让 近 RTT
cwnd 1.
TCP/IP 近 找fast retransmit and recovery近FRR此
近 FRR近 近TCP
现 现 近 FRR近
近 近
近 FRR近
现 望 四 近 找FRR此
近
近 说
找 HTTP 此
de
ui
G
va
Ja
1. DNS 样
2. TCP
3. HTTP
4. HTTP
5. 样却⽤
6.
https://segmentfault.com/a/1190000006879700
3.1.8
de
ui 3.1.9 HTTP
G
va
Ja
HTTP
de
ui 3.1.10 HTTP ,
G
va
Ja
HTTP/1.0 近 HTTP 近 近
HTML Web Web
找 JavaScript CSS 此近 Web 近
HTTP
HTTP/1.1 近 近 HTTP说 近
Connection:keep-alive
近 近 HTTP TCP
得近 近 Keep-Alive
近 近 找 Apache此
HTTP TCP
—— HTTP 常
3.1.11 HTTP , ?
HTTP 近 找stateless此说 HTTP 说
常Session 近Session
近 全 近
近 HTTP 说 Session
找 近
Session近 近 Session此
Session 近 ( redis )
Session 近 Session 常 近
Cookie 博 Session ID
Cookie ?
Cookie 福 Cookie 近
Ja
始
近 Token Cookie
近 Token ( 想近 Token
)始业 Session
近 全 近 近
HTTP 说 Session
Cookie ( )近Session
HTTP1.0 1996 近 近
HTTP1.1 1999 近 HTTP1.1
HTTP说
1. : HTTP/1.0 近 HTTP
TCP/IP说 , 回 近
近 近 HTTP 1.1
, Connection keep-alive HTTP/1.1
HTTP
2. :
HTTP1.1 24 近 409找Conflict此
始410找Gone此 增
3. : HTTP1.0 header If-Modified-Since,Expires 让 近
HTTP1.1 让 更 Entity tag 近 If-Unmodified-Since, If-Match, If-None-
Match 让 让
4. :HTTP1.0 近 近更
近 近 近HTTP1.1
range 吧近 近 206找Partial Content此近
HTTP 近 近 近
超
近 找 欢 此近 近
为 近
https://blog.csdn.net/qq_16209077/article/details/52718250
https://blog.csdn.net/zixiaomuwu/article/details/60965466
https://blog.csdn.net/turn__back/article/details/73743641
https://mp.weixin.qq.com/s/GICbiyJpINrHZ41u_4zT-A?
3.2 微
Guide
近 近 微
近 微 近 近
体 :koushuangbwcx@163.com
3.2.1 Queue
微 近 FIFO近 全 增 找
此近
de
ui
G
va
找 全 近 全 近
Ja
, “ ”
全 此
找 “ ” 此
Java Queue
3.2.2 Set
Set
HashSet TreeSet
TreeSet 微近 近 始
Java --Set( )
3.2.3 List
List
List 近 近 找
此 近 Set 近List List
Set
List
de
ui ArrayList 近 近 近 增
G
va
Ja
LinkedList 内 LinkedList
近 增
ArrayList LinkedList
ArrayList
LinkedList
java 微 样
3.2.4 Map
HashMap(JDK1.8)
ConcurrentHashMap 样
3.2.5
1.
问 找 此
(1) 问 —— 问 h近 h 近 (1张h-1) 近
h 近 近 问
(2) 问 —— 问
(3) ⽚ 问 —— ⽚ 问 AVL 找 AVL 此近 理 问 近
理 1近 理 ⽚
问
2.
问 找 此
问 近
问
3.
问 找 近 此
问 近 近 问 问
近 问 K近 (2^k) -1 近 问
4.
de
ui 微
G
va
问 近 始
Ja
5. BST
么 微: 问
1. 近 始
2. 近 始
3. 问 始
4. 找no duplicate nodes此
⽚ 问 找 近 ⽚ 问 AVL Treap 再 此
7.
1. 始
2. 始
3. 找NIL 此始
4. 近 找 此始
5. 重近 找 此
问 近 问
微 常找 在话 问 近 此
常找 在话 问 近 此
要找 此
通样 Java 找 此
8. B- B+ B*
问 B B+ B*
B- 近B+ 近B*
B- 近B+ B*
B- 找 B 此 ⽚ 找 此 近
B ⽚(Balance)
de
ui 1. B+ 微 B- 意 近 也
G
va
2. B+ range-query找 只此 近 B B+
近B* 近 始
Ja
3. B* B+ B+
9. LSM
[HBase] LSM VS B+
B+ IO
3.2.6
3.3
Guide
3.3.1
直
wwwxmu
:https://www.weiweiblog.cn/13string/
想 近 近
近 2018 Java 求给定合法括号序列的深度
场 近 近 直
KMP
同 近 KMP 近 同 近 同
找S此 同找W此 KMP 变 O(m+n) ,
O(m) “ ” 同近 近 KMP
变 近 同 近 同 近 同
de
ui KMP : http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E
G
va
2%80%93Pratt_algorithm.html
Ja
KMP: https://blog.csdn.net/v_july_v/article/details/7041827
KMP ?: https://www.zhihu.com/question/21923021
KMP : https://blog.sengxian.com/algorithms/kmp
KMP : http://blog.jobbole.com/76611/
KMP : https://www.bilibili.com/video/av3246487/?fro
m=search&seid=17173603269940723925
KMP 1: https://www.bilibili.com/video/av11866460?from=search&seid=127306544
34238709250
BM
BM 同变 近 近
近 越 近 变
近 变 越 近 同 变
同变 KMP :http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Mor
ris%E2%80%93Pratt_algorithm.html
福 始 API
//https://www.weiweiblog.cn/replacespace/
public class Solution {
/**
* 第⼀种⽅法:常规⽅法。利⽤String.charAt(i)以及String.valueOf(char).equals(" "
* )遍历字符串并判断元素是否为空格。是则替换为"%20",否则不替换
*/
public static String replaceSpace(StringBuffer str) {
/**
* 第⼆种⽅法:利⽤API替换掉所⽤空格,⼀⾏代码解决问题
de
ui */
G
va
public static String replaceSpace2(StringBuffer str) {
Ja
3.3.2
Leetcode: 题 同 越 越近
同 ""
更 1:
输⼊: ["flower","flow","flight"]
输出: "fl"
更 2:
输⼊: ["dog","racecar","car"]
输出: ""
解释: 输⼊不存在公共前缀。
直 Arrays.sort(strs) 近
直
// 如果检查值不合法及就返回空串
if (!checkStrs(strs)) {
return "";
}
// 数组⻓度
int len = strs.length;
// ⽤于保存结果
StringBuilder res = new StringBuilder();
// 给字符串数组的元素按照升序排序(包含数字的话,数字会排在前⾯)
Arrays.sort(strs);
int m = strs[0].length();
int n = strs[len - 1].length();
int num = Math.min(m, n);
for (int i = 0; i < num; i++) {
if (strs[0].charAt(i) == strs[len - 1].charAt(i)) {
res.append(strs[0].charAt(i));
} else
break;
}
de
ui return res.toString();
G
va
Ja
// 测试
public static void main(String[] args) {
String[] strs = { "customer", "car", "cat" };
// String[] strs = { "customer", "car", null };//空串
// String[] strs = {};//空串
// String[] strs = null;//空串
System.out.println(Main.replaceSpace(strs));// c
}
}
3.3.3
LeetCode: 同近 微
同 微 近 "Aa" 同 : 同
1010
同 “ 同” 同近 “level” “noon” 同
—— https://baike.baidu.com/item/%E5%9B%9E%E6%96%87%E4%B8%B2/127
4921?fr=aladdin
更 1:
de
ui
G 输⼊:
va
"abccccdd"
Ja
输出:
7
解释:
我们可以构造的最⻓的回⽂串是"dccaccd", 它的⻓度是 7。
同常 想 微 同
近 微 近 “abcba”近
近 1 同 近
hashset 近 近 count++近 直
//https://leetcode-cn.com/problems/longest-palindrome/description/
class Solution {
public int longestPalindrome(String s) {
if (s.length() == 0)
return 0;
// ⽤于存放字符
HashSet<Character> hashset = new HashSet<Character>();
char[] chars = s.toCharArray();
int count = 0;
for (int i = 0; i < chars.length; i++) {
if (!hashset.contains(chars[i])) {// 如果hashset没有该字符就保存进去
hashset.add(chars[i]);
} else {// 如果有,就让count++(说明找到了⼀个成对的字符),然后把该字符移除
hashset.remove(chars[i]);
count++;
}
}
return hashset.isEmpty() ? count * 2 : count * 2 + 1;
}
}
LeetCode: 同近 同近 想 近
近 同 同
更 1:
//https://leetcode-cn.com/problems/valid-palindrome/description/
class Solution {
public boolean isPalindrome(String s) {
if (s.length() == 0)
return true;
int l = 0, r = s.length() - 1;
while (l < r) {
// 从头和尾开始向中间遍历
if (!Character.isLetterOrDigit(s.charAt(l))) {// 字符不是字⺟和数字的情况
l++;
} else if (!Character.isLetterOrDigit(s.charAt(r))) {// 字符不是字⺟和数字
的情况
r--;
} else {
// 判断⼆者是否相等
if (Character.toLowerCase(s.charAt(l)) !=
Character.toLowerCase(s.charAt(r)))
return false;
l++;
r--;
}
}
return true;
}
}
Leetcode: LeetCode: 同 同 s近 s 同 s
1000
更1
输⼊: "babad"
输出: "bab"
注意: "aba"也是⼀个有效答案。
更2
输⼊: "cbbd"
输出: "bb"
近
近 直
de
ui
G
va
Ja
//https://leetcode-cn.com/problems/longest-palindromic-substring/description/
class Solution {
private int index, len;
LeetCode: 同s近 s
1000
"bbbb" "bbbab"
同s近 s 1000
de
ui 更 1:
G
va
Ja
输⼊:
"bbbab"
输出:
4
"bbbb"
更 2:
输⼊:
"cbbd"
输出:
2
"bb"
class Solution {
public int longestPalindromeSubseq(String s) {
int len = s.length();
int [][] dp = new int[len][len];
for(int i = len - 1; i>=0; i--){
dp[i][i] = 1;
for(int j = i+1; j < len; j++){
if(s.charAt(i) == s.charAt(j))
dp[i][j] = dp[i+1][j-1] + 2;
else
dp[i][j] = Math.max(dp[i+1][j], dp[i][j-1]);
}
}
return dp[0][len-1];
}
}
2018 Java 喜 变 :
1. 同"" 喜 变
2. "X" "Y" 喜 变 ,"XY" 喜 变
3. "X" 喜 变 , "(X)" 喜 变
4. 喜
更 : "","()","()()","((()))" 喜 喜 :
1. 同"" 0
2. 同"X" x, 同"Y" y, 同"XY" max(x,y)
de
ui 3. "X" x, 同"(X)" x+1
G
va
更 : "()()()" 1,"((()))" 3 喜 ,
Ja
输⼊描述:
输⼊包括⼀个合法的括号序列s,s⻓度length(2 ≤ length ≤ 50),序列中只包含'('和')'。
输出描述:
输出⼀个正整数,即这个序列的深度。
输⼊:
(())
输出:
2
import java.util.Scanner;
/**
* https://www.nowcoder.com/test/8246651/summary
*
* @author Snailclimb
* @date 2018年9⽉6⽇
* @Description: TODO 求给定合法括号序列的深度
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
int cnt = 0, max = 0, i;
for (i = 0; i < s.length(); ++i) {
de
ui if (s.charAt(i) == '(')
G
va
cnt++;
Ja
else
cnt--;
max = Math.max(max, cnt);
}
sc.close();
System.out.println(max);
}
}
//https://www.weiweiblog.cn/strtoint/
public class Main {
1.
候
样
Solution
2.
候
样
Solution
3. k
候
样
Solution
4. 增 N
样
Solution
5.
候
样
Solution
3.3.4
Leetcode: 本 近
0 近 中
Leetcode
https://leetcode-cn.com/problems/add-two-numbers/solution/
de
ui 近 想 dummy近 dummy->next
G
va
Ja
近 品
Solution
l1 l2
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
//https://leetcode-cn.com/problems/add-two-numbers/description/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode dummyHead = new ListNode(0);
ListNode p = l1, q = l2, curr = dummyHead;
//carry 表示进位数
int carry = 0;
while (p != null || q != null) {
int x = (p != null) ? p.val : 0;
int y = (q != null) ? q.val : 0;
int sum = carry + x + y;
//进位数
carry = sum / 10;
//新节点的数值为sum % 10
curr.next = new ListNode(sum % 10);
curr = curr.next;
if (p != null) p = p.next;
if (q != null) q = q.next;
}
if (carry > 0) {
curr.next = new ListNode(carry);
}
return dummyHead.next;
}
de
ui }
G
va
Ja
3.3.5
offer: 近 近
近 直 next
近 近 “ ”
Solution
ListNode(int val) {
this.val = val;
}
}
/**
*
* @author Snailclimb
* @date 2018年9⽉19⽇
* @Description: TODO
*/
public class Solution {
head.next = pre;
// 上⼀个已经反转到头部的节点
pre = head;
// ⼀直向链表尾⾛
head = next;
}
return pre;
}
5
4
3
2
1
3.3.6 k
offer: 近 k
de
ui k (L-K+1)
G
va
Solution
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
// 时间复杂度O(n),⼀次遍历即可
// https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a?
tpId=13&tqId=11167&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-
interviews/question-ranking
public class Solution {
public ListNode FindKthToTail(ListNode head, int k) {
// 如果链表为空或者k⼩于等于0
if (head == null || k <= 0) {
return null;
}
// 声明两个指向头结点的节点
ListNode node1 = head, node2 = head;
// 记录节点的个数
int count = 0;
// 记录k值,后⾯要使⽤
int index = k;
// p指针先跑,并且记录节点数,当node1节点跑了k-1个节点后,node2节点开始跑,
// 当node1节点跑到最后时,node2节点所指的节点就是倒数第k个节点
while (node1 != null) {
node1 = node1.next;
count++;
if (k < 1) {
node2 = node2.next;
}
k--;
}
// 如果节点个数⼩于所求的倒数第k个节点,则返回空
if (count < index)
return null;
return node2;
}
}
de
ui 3.3.7 N
G
va
Ja
Leetcode: 近增 n 近
给定⼀个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第⼆个节点后,链表变为 1->2->3->5.
公意候 常
leetcode 近 Leetcode.
增 (L - n + 1) 近 L
L近
Solution
全 件 近 近更
近 增 近 L
近 近 (L - n) (L - n)
next (L - n + 2)
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
de
ui * ListNode(int x) { val = x; }
G
va
* }
Ja
*/
// https://leetcode-cn.com/problems/remove-nth-node-from-end-of-
list/description/
public class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
// 哑结点,哑结点⽤来简化某些极端情况,例如列表中只含有⼀个结点,或需要删除列表的头部
ListNode dummy = new ListNode(0);
// 哑结点指向头结点
dummy.next = head;
// 保存链表⻓度
int length = 0;
ListNode len = head;
while (len != null) {
length++;
len = len.next;
}
length = length - n;
ListNode target = dummy;
// 找到 L-n 位置的节点
while (length > 0) {
target = target.next;
length--;
}
// 把第 (L - n)个结点的 next 指针重新链接⾄第 (L - n + 2)个结点
target.next = target.next.next;
return dummy.next;
}
}
O(L) 近 LL (L - n)
(L−n) 2L-n2L−n 近 O(L)O(L)
O(1) 什
——
** N (L-N+1)
“ k ”
node1 node2;node1 近node1 n+1 ,node2 .
node1 近node2 找L-n 此 找L
近 n+1 此
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
de
ui * ListNode next;
G
va
* ListNode(int x) { val = x; }
Ja
* }
*/
public class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
node2.next = node2.next.next;
return dummy.next;
}
}
3.3.8
offer: ⽔ 近 近
样:
1. A,B始
2. A A1 B B1 近 A1 近 A1 始
3. A2 B1 近 B1 , 近A1 B1始
4. A2 B2 近
想 ⽔ 直
Solution
de
ui
G
va
Ja
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
//https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337?
tpId=13&tqId=11169&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-
interviews/question-ranking
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
if(list1 == null){
return list2;
}
if(list2 == null){
return list1;
}
if(list1.val <= list2.val){
list1.next = Merge(list1.next, list2);
return list1;
}else{
list2.next = Merge(list1, list2.next);
return list2;
}
}
}
3.3.9 offer
双 近 n近 双 n n<=39
⽔ 近 近 ⽔
近 fn1 fn2 近
更
de
ui
G int Fibonacci(int number) {
va
if (number <= 0) {
Ja
return 0;
}
if (number == 1 || number == 2) {
return 1;
}
int first = 1, second = 1, third = 0;
for (int i = 3; i <= number; i++) {
third = first + second;
first = second;
second = third;
}
return third;
}
if (n <= 0) {
return 0;
}
if (n == 1||n==2) {
return 1;
}
3.3.10
1 近 2 n
a. 近1 2 近 近 n-1 近
f(n-1); b. 2 近 n-2 近 f(n-2) c. a近b
: f(n) = f(n-1) + f(n-2) d. f(1) = 1 ,
f(2) = 2 f(1) = 1, f(2) = 2, f(3) = 3, f(4) = 5近 f(n) = f(n-1) + f(n-2)
常 6 近 5 6近
5 6近 4 6近 4 近
6近 3 6 近 f(6) = f(5) + f(4)始
de
ui
G
va
1 2 3 5 8..... 1 1 2 3 5 ....... ⽔ 近
⽔ 近
Ja
3.3.11
1 近 2 …… n n
java
1. “<<” : 近 如2 n
de
ui 2. “>>”: 近 2 n
G
va
3. “>>>” 近 0 1近 0
更 近
Ja
3.3.12
近 ⽔ 近 ⽔
题 近 近
近 想 近
少 近 近 ⽔ 近 ⽔ 近 近
近
3.3.13
近 同 近 append() 全
“%20”近
de
ui replaceAll(String regex,String replacement) 近
G
va
Ja
3.3.14
近
offer 近 1. 0 <0 近 0 近
近 始 2. 0近 base double 近 == 3.
题 找 此 n 近a^n =找a^n/2此*找a^n/2此始 n 近a^n = a^[(n-1)/2]
* a^[(n-1)/2] * a O(logn)
O(logn)
de
ui
G public class Solution {
va
boolean invalidInput=false;
Ja
如 O找n此近
de
ui
G // 使⽤累乘
va
public double powerAnother(double base, int exponent) {
Ja
3.3.15
近 题 近 近
近 近
近 在话 n,
近 0
近 全 始 n 全
O找n此近 O找n此
}
}
3.3.16 k
近 k
p1 近 p1 k-1 近 p2 近 p1
近p2 k
( ) n k 近
常 近 n 近 常 n-1 近
k 近 n-k+1
/*
//链表类
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
//时间复杂度O(n),⼀次遍历即可
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
ListNode pre=null,p=null;
//两个指针都指向头结点
p=head;
pre=head;
//记录k值
de
ui int a=k;
G
va
//记录节点的个数
Ja
int count=0;
//p指针先跑,并且记录节点数,当p指针跑了k-1个节点后,pre指针开始跑,
//当p指针跑到最后时,pre所指指针就是倒数第k个节点
while(p!=null){
p=p.next;
count++;
if(k<1){
pre=pre.next;
}
k--;
}
//如果节点个数⼩于所求的倒数第k个节点,则返回空
if(count<a) return null;
return pre;
}
}
3.3.17
近 近
近 近 近
近 近
1 2 近 3 2 近4 3 近
/*
public class ListNode {
de
ui int val;
G
va
ListNode next = null;
Ja
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
ListNode next = null;
ListNode pre = null;
while (head != null) {
//保存要反转到头来的那个节点
next = head.next;
//要反转的那个节点指向已经反转的上⼀个节点
head.next = pre;
//上⼀个已经反转到头部的节点
pre = head;
//⼀直向链表尾⾛
head = next;
}
return pre;
}
3.3.18
⽔ 近 近
样:
1. A,B始
2. A A1 B B1 近 A1 近 A1 始
3. A2 B1 近 B1 , 近A1 B1始
4. A2 B2 近
/*
public class ListNode {
de
ui int val;
G
va
ListNode next = null;
Ja
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
//list1为空,直接返回list2
if(list1 == null){
return list2;
}
//list2为空,直接返回list1
if(list2 == null){
return list1;
}
ListNode mergeHead = null;
ListNode current = null;
//当list1和list2不为空时
while(list1!=null && list2!=null){
//取较⼩值作头结点
if(list1.val <= list2.val){
if(mergeHead == null){
mergeHead = current = list1;
}else{
current.next = list1;
//current节点保存list1节点的值因为下⼀次还要⽤
current = list1;
}
//list1指向下⼀个节点
list1 = list1.next;
}else{
if(mergeHead == null){
mergeHead = current = list2;
}else{
current.next = list2;
//current节点保存list2节点的值因为下⼀次还要⽤
current = list2;
}
//list2指向下⼀个节点
list2 = list2.next;
}
}
if(list1 == null){
current.next = list2;
}else{
current.next = list1;
}
return mergeHead;
}
}
de
ui
G
va
Ja
3.3.19
内 找LIFO此 JDK
内 Stack
+内
de
ui
G //左程云的《程序员代码⾯试指南》的答案
va
import java.util.Stack;
Ja
//当执⾏push操作时,将元素添加到stack1
public void push(int node) {
stack1.push(node);
}
3.3.20 ,
近 内 近 内 ⼤
内 更 1,2,3,4,5 内 近 4近5,3,2,1 内
⼤ 近 4,3,5,1,2 内 ⼤ 找 此
近 Alias 近 Alias
https://www.nowcoder.com/questionTerminal/d77d11405cc7470d82554cb392585106
选 件 内近 内 近 内 近 1近 内
内 近 4近 1≠4近 内近 内近 内
近 内 近 近 内 近 件 内
近 ⼤ 内 ⼤
内1,2,3,4,5
内4,5,3,2,1
de
ui 1 件 内近 内 1≠4近 内2
G
va
内 2≠4近 内3
Ja
内 3≠4近 内4
内 3≠5近 内5
…. 近 件 内 ⼤ 内 ⼤
import java.util.ArrayList;
import java.util.Stack;
//这道题没想出来,参考了Alias同学的答案:
https://www.nowcoder.com/questionTerminal/d77d11405cc7470d82554cb392585106
public class Solution {
public boolean IsPopOrder(int [] pushA,int [] popA) {
if(pushA.length == 0 || popA.length == 0)
return false;
Stack<Integer> s = new Stack<Integer>();
//⽤于标识弹出序列的位置
int popIndex = 0;
for(int i = 0; i< pushA.length;i++){
s.push(pushA[i]);
//如果栈不为空,且栈顶元素等于弹出序列
while(!s.empty() &&s.peek() == popA[popIndex]){
//出栈
s.pop();
//弹出序列向后⼀位
popIndex++;
}
}
return s.empty();
}
}
de
ui
G
va
Ja
4.1 MySQL
Guide
4.1.1
SQL 找 2 此 找 此
MySQL : 3 ( )
MySQL 找 此
5 吧mysql
MySQL 中 著-分
4.1.2 MySQL?
MySQL 近 Java 近 MySQL 近
见 MySQL近 我 因 MySQL
近 GPL(General Public License)
MySQL 3306
4.1.3
de
ui MySQL
G
va
Ja
MySQL
MyISAM InnoDB
InnoDB 址近 MyISAM
找 在 MyISAM 把 此
5. ......
MySQL :
“MyISAM InnoDB ” 近
近InnoDB MyISAM 近最 物 近
InnoDB 近 见 近
近 把 近 MyISAM
近 想
4.1.4
⾏
MySQL
MySQL 近
近 找
近 此 PS Java 真
MySQL
Guide
4.1.5
MySQL 微 BTree 近 微
近 只 近 近 只 始 ⼼
近 BTree
PS
Java 真
de
ui MySQL
G
va
4.1.6
Ja
只 近 只让 近MySQL 8.0 近
my.cnf 近 MySQL 只让
query_cache_type=1
query_cache_size=600000
MySQL 只让
近 只
喜 只 只 说
只 让 近 只 题 题
MySQL 近 只 让
让 近MySQL 只让 只 晚 近 找 微此
近 让
近 让 只 听近最
近 让 近 MB 近
sql_cache sql_no_cache
4.1.7 ?
更 1000 近 晚
⼼什 1000 近 ⼼什 1000
把近 ⼼什 ⼼什 近
近
4.1.8 (ACID)
de
ui
G
va
Ja
1. Atomicity 近 从
近 始
2. Consistency 近 近
始
3. Isolation 近 过近
始
4. Durability 近
因
4.1.9 ?
近 近 找
此 近
Dirty read : 近
近 近
近 “对 ”近 “对 ”
Lost to modify : 近 近
近
近 更 1 A=20近 2 A=20近 1
A=A-1近 2 A=A-1近 A=19近 1
Unrepeatableread : 近
近 近
近
近
增
4.1.10 ?MySQL ?
SQL
READ-UNCOMMITTED( ) 下 近 近
de
ui READ-COMMITTED( ) 近
G
va
近
Ja
REPEATABLE-READ( )
近
SERIALIZABLE( ) 下 近 ACID 下
近 过近 近
READ-UNCOMMITTED √ √ √
READ-COMMITTED × √ √
REPEATABLE-READ × × √
SERIALIZABLE × × ×
InnoDB 址 SERIALIZABLE( )下
4.1.11 InnoDB
MyISAM InnoDB
MySQL 经 经近 经近 近 ⼏
近 经 近 经 经 近著 经 近 近MyISAM
InnoDB 址 经
de
ui MySQL 经 经近 经 经
G
va
经 近 近 经 近 经 近 经
Ja
MySQL 经
https://blog.csdn.net/qq_34337272/article/details/80611486
InnoDB
Record lock 经
Gap lock 经近经 近 喜
Next-key lock record+gap 经 近
4.1.12
MySQL 近 CRUD 近 世家
给 只 只三 近
始
近 近 始
更 近 近
近还
近 只 Block 近 I/O 近
微近
de
ui ⼜⼼近 ⼜⼼ 近 Join 近
G
va
Join 近 始
Ja
近 200 近 近
更 近
近
近 MySQL 近
近 近相 Join
近 Java 真
近
近 微近 I/O
jar JDBC
Sharding-JDBC TDDL
MySQL : https://segmentfault.com/a/1190000006158186
4.1.13 ?
?
乐 java 乐 jdbc 乐 redis 乐
近 ⼏近 近
近 到 近
学 近 到 近 近乐 喜
乐 乐 乐 近 ⾏ java 乐
de
ui 乐 乐 在话 近 近
G
va
socket 让
Ja
⼰ 乐 让 近
近最
近
乐
4.1.14 ,id
近 1 近 近 id
id
UUID 近 近 近 只
id : 近 ID
id 近 量 更近 近 ⼊
redis id : 近 近 近
近 近 近
Twitter snowflake Github https://github.com/twitter-archive/snowflake
Leaf ID Leaf ID 近 ⽔
⽔ 近 近
Zookeeper https://tech.meituan.com/2017/04/
21/mt-leaf.html
......
4.1.16 MySQL
MySQL
4.1.17 SQL
SQL 常--- 能
4.2 Redis
Guide
redis 近 redis 近
近 redis 让 近redis 经 redis
近redis LUA LRU
redis/
“ ” “ ”
近
让 近 让 让
近 近 让 直
让 近 想
让 近 让
de
ui
G
va
Ja
redis map/guava ?
segmentfault 近 https://segmentfault.com/q/10100000091
06416
redis memcached 让 近 更 近 更 让 近让
redis memcached 近 微
4.2.2 redis
:https://www.javazhiyin.com/22943.html
微 4
socket
IO
⽣
找 此
de
ui socket 近 近 IO 后
G
va
socket近 socket 近 ⽣ 近
Ja
近 直
4.2.4 redis
String
: set,get,decr,incr,mget
Hash
hget,hset,hgetall
de
ui hash string field value ⾏ 近hash 近 近
G
va
hash 微 近
Ja
hash
key=JavaUser293847
value={
“id”: 1,
“name”: “SnailClimb”,
“age”: 22,
“location”: “Wuhan, Hubei”
}
List
: lpush,rpush,lpop,rpop,lrange
Redis list 近 近 近 什
lrange 近 近 list 只近
近 redis 近 找
此近
Set
sadd,spop,smembers,sunion
近 近set 近 set
set 近 list set
近 近
Redis 近
Sorted Set
zadd,zrange,zrem,zcard
近 近 近⼤ 找
此 近 Redis Sorted Set 微
de
ui 4.2.5 redis
G
va
Ja
Redis 近 redis 让
近 token 近最
近 近 近
增 key近
近 增 近 常 key 近 redis ⼏
常 redis
redis 6
1. volatile-lru 找server.db[i].expires此 外
2. volatile-ttl 找server.db[i].expires此 外
3. volatile-random 找server.db[i].expires此 外
4. allkeys-lru 他 近 近 key找
此
5. allkeys-random 找server.db[i].dict此 外
6. no-eviction 给 近 他 近
直
4.0
7. volatile-lfu (server.db[i].expires) 外
8. allkeys-lfu 他 近 近 key
redis
de
ui 4.2.7 redis ( redis )
G
va
Ja
近
找 因 此近 因
snapshotting RDB
Redis Redis 近
近 找Redis
微近 Redis 此近
Redis 近 redis.conf
近AOF 近 Redis
AOF找append only file此 近 appendonly
appendonly yes
Redis AOF 近
Redis 4.0
de
ui Redis 4.0 RDB AOF 找 得近 aof-use-rdb-preamble
G
va
此
Ja
AOF
AOF 近 近 AOF
样
Redis
4.2.8 redis
Redis MULTI EXEC WATCH (transaction)
近 近 近
近 会近
近 ACID 也 Redis 近
找Atomicity此 找Consistency此 下 找Isolation此近 Redis
近 找Durability此
1. redis 近 看 近 找
issue: Redis 此
4.2.9
在 让 近 近 近
找 结 近 此
redis 近 章 外
de
ui ehcache让 + hystrix & 近 MySQL
G
va
redis 让
Ja
让 key 让 近 近
让 更 让 key 近
( 近 近 )
Ja
va
G
ui
de
de
ui MySQL 150 近 show variables like
G
va
'%max_connections%'; 近cpu近 近 近
近 直 近
Ja
3000
近 活 只
id 0
近 近 key 表名:列名:主键名:主键值
Java 近
2 像 微近
key 近 像
“ ” 像 近 近
像 近
近 ( 近
)
de
ui
G
va
Ja
像 像 常 直 近
近
zookeeper 经 经 近
zookeeper 近 是 经
近 经 近 是 增
近 章 经 近 经 近增
经
门 近 Zookeeper
de
ui
G
va
https://www.jianshu.com/p/8bddd381de06
Ja
4.2.11 ?
让 让 近让 近 近
让 近 让
让 近 晚 让 近 近
近 常
近 让 + 近让
近 近 同 近同 近
同 近 请 近 国
https://github.com/doocs/advanced-java/blob/master/docs/high-concurrency
/redis-consistence.md
Java 1 找 Java 此- 结 直
“1”
Redis
Redis http://redisdoc.com/string/set.html
5.1 Spring
Guide
近 Spring 近 晚 直
近 Spring 近 之
Spring / 近
copy近 近 近 ⼼
近
5.1.1. Spring ?
de
ui Spring 近海 Spring http
G
va
s://spring.io/
Ja
Spring Spring 6 :
5.1.2 Spring
Spring4.x 5.x Web Portlet 近
WebFlux
@Controller @ResponseBody 近
Spring MVC 近
@ResponseBody Controller
近 HTTP (Response) body 近 JSON XML 近
JSON
Reference:
https://dzone.com/articles/spring-framework-restcontroller-vs-controller找 此
https://javarevisited.blogspot.com/2017/08/difference-between-restcontroller-and-controller-ann
otations-spring-mvc-rest.html?m=1
IoC
IoC找Inverse of Control: 此 近
Spring IoC 近 Spring IoC Spring
IoC IoC Map key value ,Map
IoC 近 IoC
近 IoC
/
Service 还 近 更 Service近
Service 微 题 近 IoC 近
近 近
之 https://www.zhihu.com/question/23277575/answer/169698662
Spring IoC
de
ui
G
va
Ja
IoC 之
https://javadoop.com/post/spring-ioc
AOP
AOP(Aspect-Oriented Programming: ) 近
近 近
近
AOP 近 近
近 见
AOP
近 近 近 AspectJ 近
Spring AOP
de
ui Guide
G
va
Spring bean ?
Spring bean
近 更 bean
近 近
1. Bean 找 此
2. ThreadLocal 近 ThreadLocal 找
此
@Component @Bean
1. : @Component 近 @Bean
2. @Component 重意候 专 Spring 找
@ComponentScan 意候 重 Spring bean
此 @Bean bean,@Bean Spring
更近
3. @Bean Component 近 @Bean 要
bean Spring 近 @Bean
@Bean 更
@Configuration
public class AppConfig {
@Bean
public TransferService transferService() {
return new TransferServiceImpl();
}
xml
de
ui
G <beans>
va
<bean id="transferService" class="com.acme.TransferServiceImpl"/>
Ja
</beans>
更 @Component
@Bean
public OneService getService(status) {
case (status) {
when 1:
return new serviceImpl1();
when 2:
return new serviceImpl2();
when 3:
return new serviceImpl3();
}
}
Spring bean ?
Spring bean ?
近 https://yemengying.com/2016/07/14/spring-
bean-life-cycle/ 近 近 https://www.cnblogs.com/zrtqsk/p/3
735273.html
Spring MVC ?
Spring MVC
SpringMVC ?
de
ui
G
va
Ja
1. 找 此 近 DispatcherServlet
2. DispatcherServlet HandlerMapping近 样 Handler
3. 样 Handler 找 Controller 此 近 HandlerAdapter
4. HandlerAdapter Handler 近
5. 近 ModelAndView 近Model 近View
View
6. ViewResolver View View
7. DispaterServlet Model View找 却⽤此
8. View 找 此
5.1.7 Spring
在话近 :“ Spring
?”
: Spring 时
:Spring AOP (Advice) spring MVC
Controller
......
5.1.8 Spring
de
ui Spring
G
va
近
Ja
1. ( )
2. 近 找 此
1. XML
2.
Spring ?
TransactionDefinition
TransactionDefinition.ISOLATION_DEFAULT: 下 近Mysql
REPEATABLE_READ下 Oracle READ_COMMITTED下 .
TransactionDefinition.ISOLATION_READ_UNCOMMITTED: 下 近
近
TransactionDefinition.ISOLATION_READ_COMMITTED: 近
TransactionDefinition.ISOLATION_REPEATABLE_READ:
近 近
TransactionDefinition.ISOLATION_SERIALIZABLE: 下 近 ACID 下
近 过近 近
Spring ?
TransactionDefinition.PROPAGATION_REQUIRED 近 始
近
TransactionDefinition.PROPAGATION_SUPPORTS 近 始
近
TransactionDefinition.PROPAGATION_MANDATORY 近 始
近 活 找mandatory 此
TransactionDefinition.PROPAGATION_REQUIRES_NEW 近
近
TransactionDefinition.PROPAGATION_NOT_SUPPORTED 近
近
TransactionDefinition.PROPAGATION_NEVER 近 近 活
TransactionDefinition.PROPAGATION_NESTED 近
始 近
TransactionDefinition.PROPAGATION_REQUIRED
@Transactional(rollbackFor = Exception.class)
de
ui Exception RuntimeException
G
va
近 近
Ja
@Transactional 近 public 近 近
近
活 近 近
@Transactional 之
Spring @transactional
5.1.9 JPA
JPA
Entity(name="USER")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
private Long id;
@Column(name="USER_NAME")
private String userName;
@Column(name="PASSWORD")
private String password;
secrect 近 常
近
de
ui Spring
G
va
http://www.cnblogs.com/wmyskxz/p/8820371.html
Ja
https://www.journaldev.com/2696/spring-interview-questions-and-answers
https://www.edureka.co/blog/interview-questions/spring-interview-questions/
https://www.cnblogs.com/clwydjgs/p/9317849.html
https://howtodoinjava.com/interview-questions/top-spring-interview-questions-with-answers/
http://www.tomaszezula.com/2014/02/09/spring-series-part-5-component-vs-bean/
https://stackoverflow.com/questions/34172888/difference-between-bean-and-autowired
------
5.2 MyBatis
JavaGuide 近
Mybatis 近 近在话 近 近
近 在话 Mybatis 近 近 近
在话 Mybatis 微 近
近 近 近 近 被 近
近 近 近 了 近
近 近
de
ui 近 近 近 近 在
G
va
话 近 近 近
界 近 近 近 真
Ja
“ ”近
近
友 近 Mybatis 近 找 近 此
Dao 近 Mapper 近 近
namespace⾏ 近
近 ⾏ MappedStatement id 近 近 ⽔ sql
Mapper 近 近 + 同 key 近
MappedStatement 近
更 com.mybatis3.mappers.StudentDao.findStudentById 近 namespace
com.mybatis3.mappers.StudentDao id = findStudentById MappedStatement
Mybatis 近 <select> <insert> <update> <delete> 近 样
MappedStatement
Dao 近 近 +
Mybatis 近 近 电 电
sql近 sql近 dialect 近全
5.2.5 Mybatis
Mybatis
ParameterHandler ResultSetHandler StatementHandler Executor 4 近
Mybatis JDK 近 电 电 近
4 近 电 近 InvocationHandler invoke() 近
近 电 电
5.2.6 Mybatis
近JDBC 近Mybatis
T_NAME AS NaMe近Mybatis
⾏ 近Mybatis 近 游
近 ⾏ 近 游
5.2.9 Mybatis
近Mybatis 只近 近 只近
只近 只近 selectOne() selectList() 始 只近
只近 selectOne() selectList()
只近 近 sql 只 近游 近
只近 只 join 只近 A 近
B 近 sql 只近
近 近 近 近
5.2.10 Mybatis
近 CGLIB 近 近 电 近
a.getB().getName()近 电 invoke() a.getB() null 近
只 B sql近 B 只 近 a.setB(b)近 a b 近
a.getB().getName() 快
近 Mybatis近 喜 Hibernate近 快
de
ui 5.2.11 Mybatis Xml Xml id
G
va
Ja
5.2.12 Mybatis
BatchExecutor
Mybatis Executor
近SimpleExecutor ReuseExecutor BatchExecutor
Executor 近 SqlSession
Mybatis 近 ExecutorType 近
DefaultSqlSessionFactory SqlSession ⽔ ExecutorType
Mybatis ⾏ ⼦ 近 ⾏ ⼦ 近Mybatis ⾏ ⾏
TypeHandler 近 TypeHandler setParameter() getResult()
TypeHandler 近 javaType jdbcType 近 jdbcType
javaType 近 setParameter() getResult() 近 sql ⼰
de
ui 只
G
va
B A A
Mybatis 样 Xml ⾏ 样 近 近 B
近Mybatis
近Mybatis 样 A 近 A B 近 B 样 近 近
近Mybatis A 样 近 样⼼ 近 B 近 样
会近Mybatis 样 样 近 样A 近B 近A
样
近 近 近
近 晚 近 Mybatis
样 ------
5.3 Kafka
5.3.1 Kafka
Kafka 常
de
ui
G
va
1. 三之 近 近 Kafka
Ja
2. Kafka 近 ·
3. 近Kafka
Kafka
1. 近
2. 微
5.3.2 ,Kafka
Kafka 近
RocketMQ RabbitMQ Kafka
1. Scala Java 近 近
2. Kafka 近最
吧
Kafka 近 Kafka 吧
强 近 近
LinkedIn Kafka 近 近
近 起 吧⼰ 然
近 Kafka 近Kafka
5.3.3 Kafka
JMS AMQP 吧 近 JavaGuide
在话 近 近
近
Queue
100 近
找 此
de
ui
G
va
近
Ja
近 亲
近 别 近 近
- :Kafka
-三之
三之 找Pub-Sub此 Topic 近 始
近 ⽔ 三之 近
- -
Kafka -
近Kafka
1. Producer :
2. Consumer :
3. Broker : Kafka 更 Kafka Broker Kafka Cluster
Kafka Partition
5.3.5 Kafka
de
ui Kafka 找 Partition 此 找 Replica 此
G
va
找Partition此 leader 近 follower
近
Ja
leader leader 向 近
leader 因 follower leader,
follower leader leader 实
ZooKeeper Kafka
de
ui 近Zookeeper Kafka
G
va
5.3.7 Kafka
近 2
近 2 三
电
Kafka Partition( ) 近
Partition( ) Topic( ) 近 Topic Partition
全 Partition( ) 近 Kafka
Partition( ) 近 Topic( ) Partition( )
近 1 Topic Partition
近 Kafka
de
ui Kafka 1 近 topic, partition, key,data找 此4
G
va
Partition 近 Partition 近 key
Ja
partition近 / id key
近 Kafka 近
1. 1 Topic Partition
2. 找 此 key/Partition
近 近
5.3.8 Kafka
(Producer) send 近
近 send 近
Kafka (Producer) send
近 get() 近 近 更
直 全 题 近 更
近 也 直
Producer retries 3
3
de
ui Partition( ) 找offset此 找offset)
G
va
Consumer Partition( ) Kafka 找offset此
Ja
近 offset 近
近 近 近 近
offset
offset
offset 近 近
近 offset近 近
Kafka
acks = all
replication.factor >= 3
min.insync.replicas > 1
min.insync.replicas> 1 近 2
min.insync.replicas 1近 1
de
ui 近 Kafka 近 replication.factor > min.insync.replicas
G
va
常 近 近
直
Ja
replication.factor = min.insync.replicas + 1
unclean.leader.election.enable = false
5.3.9 Kafka
...
Reference
Kafka https://kafka.apache.org/documentation/
— Kafka 11 常
Guide
6.1
(Authentication)
de
ui
G
va
Ja
(Authorization)
找 此
Authentication 每 找更 / ID 此近 每 近
近 近Authentication /
Authorization Authentication 近 近
admin近
增 全
Cookie ? Cookie ?
Cookie Session 近
Cookie Cookies 总
找 此 Cookie
Cookie 更
1. Cookie 近
近Cookie 近
2. Cookie session token 近 Cookie近
session token 近 HTTP 说
3. Cookie 样 更 近 HTTP说
近 近
Cookie
Cookie
1) cookie
de
ui
G @GetMapping("/change-username")
va
public String setCookie(HttpServletResponse response) {
Ja
// 创建⼀个 cookie
Cookie cookie = new Cookie("username", "Jovan");
//设置 cookie过期时间
cookie.setMaxAge(7 * 24 * 60 * 60); // expires in 7 days
//添加到 response 中
response.addCookie(cookie);
@GetMapping("/")
public String readCookie(@CookieValue(value = "username", defaultValue =
"Atta") String username) {
return "Hey! My username is " + username;
}
3) Cookie
@GetMapping("/all-cookies")
public String readAllCookies(HttpServletRequest request) {
Session
1.
2. 近 Session近 Session
3. SessionID近 Cookie
4. 近Cookie
5. Cookie Session ID Session
近 近 博
Session
1. Session Cookie
2. Session
Session 晚
近Spring Session 相 更
年 近 近 “ 近
路 ”近 年 近 10000 常
近 年 ,
Cookie
<a src=http://www.mybank.com/Transfer?bankId=11&money=10000>科学理财,年盈利率过
万</>
近 token 近 token 近
local storage token,
CSRF 已 近 近 前
token 近
XSS 加
cookie
1. CSRF 常—
Session Cookie此
JWT JSON
JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred
between two parties. The claims in a JWT are encoded as a JSON object that is used as the
payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption
(JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message
Authentication Code (MAC) and/or encrypted. ——JSON Web Token (JWT)
JWT 3 微 :
1.
2. JWT近
de
ui 3. Header JWT
G
va
4. 也 JWT
Ja
近 token近
OAuth 2.0 近
OAuth 2.0 说
近 OAuth 2.0 找 此 找
此
OAuth 2.0
10 OAuth 2.0 说
OAuth 2.0
GitHub OAuth 更
6.1.8 SSO?
SSO(Single Sign On)
更 美 近
de
ui 6.1.9 SSO OAuth2.0
G
va
Ja
OAuth 说 近 SSO
出 美
https://medium.com/@sherryhsu/session-vs-token-based-authentication-11a6c5ac45e4
https://www.varonis.com/blog/what-is-oauth/
https://tools.ietf.org/html/rfc6749------
⼒
Guide
7.1 , offer
ppxyn 体近 体近
(50-200) pr
近 你 近
7.1.1
著 Java 著 近 C C++
Java 近 Java 近 Java ⽔
近 眼 近 近 近 ⽔ 近会
近 ⽔ 近
找ps 此 近
近 5
5 4 +1 HR 近
7.1.2 ( )
1. 在话找 近 近 近 此
de
ui 2. 找 近 此近 微 近
G
va
活 近 近 近
Ja
3. 近 下 经 经
ACID MVVC
4. URL ? TCP UDP ? TCP ?
5. ? 当 常 ⽔ 什 找 内此近 问
6. JVM 近 Java 所名 ⽣
7. 常
7.1.3 ( )
1. 在话找 近 近 近 此
2.
3.
4.
5. volatile 近sychronized lock
6. ReentrantLock
7. CountDownLatch 常 常
8. AQS
9. 经 近 常
10. 经 常
11. HashMap ConcurrentHashMap HashMap 常 Hashtable 常
ConcurrentHashMap 常
12. 常
13. 常
7.1.4 ( )
1. ACM 实 近 常找 ACM近
实 近 近 近
近 近 此
2. 近 近 常 常
3. 常 ⼿ 常
4. 常找 Java Netty 近 Java
近 近 Netty 近 将 直此
5. 在话 Netty 近 近Netty TCP /
, Netty Dubbo Netty 常
Netty 中向 常 近 近
6. 吧 太 常
7. 近
8. 近B
9. 微
10. 找 候 近 领近 此
11. 常
7.1.5 ( )
近 9 近 近
时 说
de
ui 1. 近 说
G
va
常
Ja
2. OOM
3. 常 Java ?
4.
5. NginX ⽚ ⽚
6. 常
7. 近 近
7.1.5 (HR )
1. 在话找 近 此
2. 常 常
3. 近
4. 常 常 想 近
近 常 常
5. 常 近 近 常找 近
此
6. 常
7. 常
1. 近 近 近
近 将近 样近
近 近
2. 才 近 近 近 近
在话 在话 近
3. 近 近 来
近
4. 近 近 近 直
近 Offer
7.2 ⼗度
Anonymous 体 近Guide
7.2.1 (37 )
近3.12 近 近
近 太
常 第 近
在话 直
de
ui ...
G
va
在话 HR / 近 在话 近
Ja
在话 在话 HR
近 近 始 近
近 近
常 近 在话
在话 近 近 在话
想
1. 找 微 此
2.
3. 近 近
4. 候 近 近 说 说
: redis 让 原道
想 找 个 近 三 近 此近
synchronized 经 近 近 经 近 ⼊近 让 近 让 近
让 近 让 近 三 经
近 近 经 近 sql 近
where ⼼ >0近 经近 近
找 只 常
近 近 近 此
: 让 常 常
让 近 只 让
让 近 让
让 近 增 让 常
想 让 对 找 A
近 让 近 B 近 B 让 近 B 近
A 让 此
30 近 ⽼
近 近 近 近
我 回
近 直
常
de
ui 近 近 近 只 近
G
va
近 近 微 常
Ja
近 B+ 近 B+
J.U.C 常找 JUC此
java
直 近 ConcurrentHashMap 近 ConcurrentLinkedQueue
CountDownLatch近CyclicBarrier近 乐近
: 近 近 近
想 微 常
近 ⼊近 微
近 在话
近 近 近
近
7.2.2 (33 )
近 常 boss
常常常 是 将 近 找 此
在话近 近 直
: 近
: 想
: 近 常 常
: 近
: 近 近 近 近
常
de
ui 想 近 LRU 让 找 近 让
G
va
常 息 近 直此近 让
近
Ja
ip ip 3
: ip 乐 常
⾃ 近 近
: 近
三 sql 近
: 近 三 近 常
: 近 常直常直 经
: 常
: (1)
找原道 此;(2)
https://snailclimb.gitee.io/javaguide/#/./system-design/data-communication/mess
age-queue
: 想 让 近
: 近 想 近 让 近 让 近
常
: 近 想 近
近 原道
: 找 此 近 近 近 NIO 常
: NIO
: NIO 近 常
NIO 刚 近 刚 近 NIO
直
: 常
: 近 近 近
: 乐常
打性 近 Java 近 近 与 近会
!
: 近 TCP UDP常
: TCP直
de
ui
G
va
Ja
: 近 常
: ?
近 常wtf近
常
7.2.3 (46 )
3.18 近 近 boss直
在话近 近 直
: 常
: 近 近 找 此
: Spring 近 Spring 常
近 近
近 近 近
: 常
: 清清 近 常常常
Fescar找 近 近 Java
此近 近Ant Financial Fescar近 近
Fescar Seata Github https://github.com/seata/seata
: 近 近 MapReduce 常MapReduce 常
: 清清 近 近
常常常
: BP 常
: 近 见
: ⽐ ⾯ 常
de
ui : 近 觉 近 近
G
va
近 近 ....
Ja
: 近 xisuo常
: A B 近 xisuo 常 常
: 近 近 https://blog.csdn.net/taylor
chan2016/article/details/51039362
: 常
朋 近
: 常
: 近
近 近 HR 近 HR 近3.28 HR
近 近
7.2.4 HR
: 近 在话
....HR 直
近 直 近 A 直
HR 近 近 HR
: 近 常
de
ui : 近 近 朋 近 近 样 找 与
G
va
近 明于近 5 2000
什近 这近 近 这
Ja
: 近 近 常
怎 直直直
近 近 近
近 近 近
近 想 才 近
: HR 近
近 近 近
近 近 近 转平 近
找 近 此
: HR 近 常
: 近 更 近 近
BAT offer 近 常
近BT 常
: 近 近 近 太直
HR 近 近 offer 近 近
7.3 bingo-interview
哈 体近 近 近
近 直 直 进 近 真 近 近
7.3.1
de
ui 近眼 近 近
G
va
Bigo(YY )近 3-5 Java 近
被 些 近
Ja
近 近
7.3.2
LZ
17 会 近 近 近 Java 近
西载近 近 近
IT 近 怎 3-5 近
近 LZ 近 近
近 近 其近
近 近 作眼直
7.3.3 Bigo
怎 Java
3-5
Bigo 近 近 看 近 近
候 近 做直
7.3.4 ( )
bigo 近 近 近
在话
Java 近 些 常找 近
些 此
JVM 常找 近 GC Root 近 近
此
常找 近 品 内 近 此
常找 近 近 始 近
近 此
常
Java 常找synchronized Lock此
常
ArrayList LinkedList 常找ArrayList 近 近 增 近LinkedList 近
增 近 此
⼰ 常找 近ArrayList 见 ⼰ 近
近 近LinkedList⼰ 近
此
HashMap 微找 + 近 此
HashMap 近1.7 HashMap 找见
近 get 此
ConcurrentHashMap 常 找 经此
de
ui 经 常找 size 此
G
va
RPC 近 RPC 常找 近 socket 近
近 此
Ja
近 常( + 近
)
dubbo ⽚ ?找 近 只近 近 hash此
常找 近 近
近 此
常(socket ⽔ ⽔ )
redis 经 近 常找 近 redission 经此
key 经 常找 key 此
近 近 常找什......
此
经 近 近 常找什......
现 近 redission 后
近 也 key 此
近 近 内 品 找
近 近 近 近
此
近 近 近
近Bigo hr
7.3.5
Bigo 近 hr 近 近 近
近 近 在话 近
更近 在话近
找 在话近 候 近
近 近 ..............此
近 微 近
找 近会 近 微 啊
近 近 近 nginx 近
近 此
Spring Cloud GateWay近 nginx 近 gateWay 常
找nginx ⽚近 近gateWay 近
接 Hystrix此
接 Hystrix 常找 近 此
redis近 redis 量 常找什 量 此
常找 近 Sentinel后 近
ping 近 master 此
常 量 常 get 近
更 量 近 近 redis-cluster 量 找什......redis
量 近 想 .......... 将 近 此
近 常找 .... 近
........ 此
近 常找 近 近
此
近 近 常找 ......
de
ui 近 近 此
G
va
近 近 10 近 晚 近 近
常找 时 近 近
Ja
近 20 近 近 此
近 近 近 近
近 " " 找 近
HashMap 近key 近value 近 1近 游
1近 map 近 value 近 近
近 O(n^2)近 近
近 近 num近
近 num 近 O(n^2) 此
近 近 怎 内 只 近
近 近 近
近 近 近 这 么近
近 近 近 近
7.3.6
近 近 什 近
地 近 在话近 近 近
近
常 下 找 Spring 近 Spring 下
位 此
近 近 A B近 三
近A 三 近 B 近 A 近 常
找B 活 近 A 活 此
常找什 近 近 此
近 User 近 User
近 近 近
常找 近 近
此
rabbitmq近 mq 常找 近
近 此
mq 近 mq 常找
此
常找 近 此
常 常找 将 近 mq
近 近每 mq 近 rabbitmq
ack 此
近 近 ack 找
电近mq 近 近
已 此
近 章 近 常找什.....
......... 间 ........ 近 此
de
ui 量 常 常找 近
G
va
取 近 近 此
Ja
近 近 map近 map 近 增
map 近 增 map 5 增 近 常
找 近 map key 东 近
东5 增 近 近
近ps 近 直此
...... 近 近
近 近 近
近 近 上 近 2
6 近 近 近hr 近
近
近 近 ⼒ 近 近
1 直 直 直 近 近
晚 近 近 外
2 近 近 近
Bigo 近 近 近 近
近 ⼒ 主 近 ⼒ 近
3 近 近
rabbitmq demo 近 “ ” 近 近
情
4 近
近
⽂近 rabbitmq 近
近 近 Bigo
5 近 增 近
近 近 近 微 近
近 想 近 微近 近
近 想 近 微 ⾛
真近 ⼒ 时
6 近 近 近去~~~~
近 Bigo 花 近 被近 能 近会
近 近 近
近 车 近 真 近会
de
ui 7.4 2019 ⼗度
G
va
Ja
近 近 直 BB
⼗度
近 9 近 近 ⼗度
近 找 没 我
因近 此近 近 才 近 近
近 ⼗度
近 近
近 近 让 近 近
我 近 近 近
近 欢 些 近 直
2018 flag近 还 条流 近
近 近
常 近
近 常 近 近 mysql近
门 近 常 近
近 好常 近 近
近 近
近 近
近 近 ⼗度
7.4.1
近 2016 ⼗度 近 近2.5 近
会 近 ⼗度 近 近
“ 近 ⼗度 近 ”近 多多 “ 近 ”近 “ 常”近
“受 ”近 “ 近 近 ”近
近 ⼗度 近 近 ⼗度
de
ui 近 找 性近
G
va
近 此近 ⼗度 近 近
近 近
Ja
5 offer
⼼ 什 近 近
门 近 N 近 近 近 微
MySQL JDK 近 找 此
“ ”
近 近 近 喜Java 近
Java 近 Java 近
⼯近 近
近 ⼗度近 近 ⼗度 了 近
⼗度 "
关关 GitHub v2
7.4.2
近 近 N 近 10
TopK 近
近 更近
近
de
ui
G
va
在话
Ja
在话
后 近 近 常 常找MySQL此
址近 InnnoDB常( 物 MVCC)
三 近 常( )
只 候
常( 近 range近
)
常( 近 近见 )
常( )
呢 常(UUID Snowflake )
Snowflake ID ⽔ 常( 近 近 ⽔ )
⽔ ID常( TDDL ID近 )
Mysql 微 ( B+ 近B+ 近
)
( 近
ID近 只 只) 只 常( 近 只
近 近 )
⼊ 常
常
de
ui 常
G
va
Ja
在话
本 常
常
常( 后 )
近 常( 近 近
后 )
Spring
GC young gc full gc 著
( )
CMS GC 常( 近很 所名近 现 )
很 所名常( VM 意候 young gc近
gc 品 近 品 young gc)
young gc 常(STW )
G1 常( )
常(young gc full gc近 Remember Set)
Remember Set 常
常
HRBP 近 近 ⼗度
近 match近
HR 近 于近 于HR 近 cut
⼗度 常
常
常找 常此
常 内常找 HR 有 近 此
SRE
HR 我 因 近
⼗度 近 Java ⼗度 们 近
我 因 近 近 1 近 近
P7 近 微 近
7.4.3
de
ui
G
va
Ja
⼗度 近 ⾼近 关关 HR近
近 HR 近
offer 近 nice
⼗度 常 常( 近 )
Java HashMap TreeMap 常(TreeMap 近 近HashMap 近 + )
TreeMap 只 常(O(logN))
HashMap 常( 近 经) 常( jdk1.8 synchronize + CAS近见
CAS也 近 ) 常(CAS找Compare And Swap此
近 死 近 ⽹ 近 看 ⼰ CPU 近
ABA ) 常( 近 ⽹ 近ABA AtomicStampedReference
近 ) 看 常(synchronize 经)
CAS synchronize 常 synchronize 常(CAS 经近 死 近
始synchronize 死 近JVM 近 CAS
CPU 近 请 近synchronize ⽹ 死 近 看
请 近 死 近 ⼰ CPU )
常(ConcurrentHashMap)
ConcurrentHashMap 常( 经)
get 经 近 常( 近volatile )
volatile 常( )
常( 近 事因近happen-before近
)
CPU 近 常( 近 成 )
近 常
近 常
近 近 近 MN少 近 1 本 MN 近
找 OS 天 近 此
( 近 近 近
)
常
de
ui 在话
G
va
offer 常( ⼗度 offer)
微 常( 近
Ja
)
近 近 常找 近 此
近
⽔ 常 (RpcContext attachment 近 Span 微 :parentSpanId +
curSpanId)
SpanId 常(UUID近 )
RpcContext ⽔ 常( )
Dubbo 常( url Invoker 要
filter Invoker ⽚ 找受 10 此近
)
Spring 更 常( 更 要 )
常( 近 后
)
常 常
本 常
常
HR 近 offer 近
近 offer ⼒
近会 少近
近 HR 近
7.4.4
de
ui 近 HR 近 OK
G
va
近 近
们近 好 近
Ja
找 此 被
在话
近本
近本
乐 常
IO 常
常
Redis 近 微?( zset) zset ?( )
只 近 只 ?( 近
近 近 O(logN))
近 ?( N问 ⽚ 近O(logN))
微 O(logN)近zset ( 近错好 近
⽹ ⽚近 )
近 Dubbo ?( 要 )错 好 常找
dubbo accesslog 此
CAS 常找 CAS 此 常找 synchronize 近
经近 经此
近 A近2*n 近n n 近 近
近
找 0 近 近 近
此
常 常找 近 此
常找看 近 近 变
近 此
近 O(N) 找 近 “ 近 0
1 近 近 ”此
近 常
近 在话
常
常找Guava ratelimiter近 ⾝ 此
常找 ⽇ 此
近 常找 近 死 此
常找 近 此
常找 RateLimiter 此
⽔ 常找ThreadLocal + spanId近 spanId
spanId此
Dubbo RpcContext ⽔ 常找ThreadLocal此 ThreadLocal ⽔ 乐常
找 ThreadLocal get 近 乐 ThreadLocal
ThreadLocal 乐 ThreadLocal finally
remove近 些 此
些 常找 ThreadLocal 微近 看
de
ui ThreadLocal ThreadLocal 看 近
G
va
ThreadLocal 近 ThreadLocal value
近 近 近
Ja
ThreadLocal gc
value 近 近看 些 此
乐 remove value常找 近 乐
近 近 threadLocals ThreadLocal 此
些 乐常找 此
近 常找 些 亲 此近
SpringMVC 常找 近
近 经 近 近 此
ThreadLocal 近 SpringMVC 经 常找 此
mysql 近 微找 B+ 此
B+ 常找 只 近O(logN)近 近 问 近 近
此
常找 此
Java ⽣ 常
常
近 乐
常找 近 找 此此
近 近 近 时
近 近
近
近 近 领近
近 ⼗度
offer近 次 近 领 近
HR
在话近 近
在话 近 近 近
近 近 近
近 近 近
#
近博
de
ui :https://pan.baidu.com/s/1o2l1tuRakBEP0InKEh4Hzw :300d
G
va
Ja
7.5 2020
Boyn 体直 offer!们直
7.5.1
211 , , , , 后
, . , ,HR
,
近 office
7.5.2
, ,
在话, ,
Web ( SpringBoot,Redis,Mysql ,
Java , Spring,Java , )
Kafka , ,Kafka 微 ( 每 ,
Kafka , 我 )
Mysql ,B+ ( )
, , , 在话 ,
微, 微 , hold
1. ⽚ 问 ( , 所名 , ,
, 样 ,
⽔ 题 , 题 , 内 ,
道 , )
2. , target , . ,
, , ,
, , 10 ,
7.5.3
在话, ,
Redis , zset ( , ), , ,
Redis 在话 ,
de
ui 微 , , java.util.HashMap
G
va
( , ) , 喜
成 带
Ja
,成 ,
, , ,
, , ,
玩 男 ,
完 ,
7.5.4 hr
, , ,
! Redis,Mysql,JVM ,( ,
, , , ). ,
Kafka , . , 美
同
将, 成 , , ,
, .
, , , , 才 ,
早 , ,
⽇, 完 , ,LeetCode+
Offer , , , ,
样 . Bug free , ,
.
Offer,爱 !
/
Guide
找 此
de
ui 1. 常
G
va
2. 常
Ja
3. 常
4. id 常
5. id 常
6. RPC 常
7. RPC 常
8. RPC 常
9. Dubbo 常
10. Dubbo ⽚ 常
11. 吧 直
近 元近
近 ⼒ 直 着
9.1 法
体 近 近
近
de
ui 1. 微 始
G
va
2. 原道 始
Ja
3. Redis 让 始
4.
1. URL ? 2.TCP UDP ? 3.TCP ?
Java 1. , ? 2. 向 么向 常
近 常 常 ⼉ 近
“ 近 近 近 直”
近 在话 近
os:" 近 在话 近 JavaGuide 近
hr
近 近会 直 在话近
直
近 直 Java
近 .近 近
近 近
著 ⼼近
近 乐 样
近 , Github 2k Star 常
常 微 常
os: " 直 近 微
直"
de
ui
G
va
Ja
微 找 微近
直此
在话 直
微 宝
近
近 近
量 见 近
常 Dubbo Dubbo Java
RPC Dubbo RPC
Dubbo 要 ZooKeeper近 Dubbo ZooKeeper Zookeeper
近 RPC
Dubbo 近
近 近
近 全
近 MySQL近 MyCat 近
redis 让
近 近 让 近
让 让 近
Elasticsearch Elasticsearch
全 近 Elasticsearch 近 见
de
ui 近 常
G
va
Ja
1. 原道
2. 找 / 见 此
直 近
os:" 2019 近 近
直"
近 近 让
近 让 近
让 近还 章 近 近
近 近 近
想 近
is too 已近 直 找ps:
近 直此
样 ——
更
没 近 荐没 三
de
ui
G
va
Ja
近
近 见
找 此 近 找 此 近
近 见
常 想 常
1. 近 常 MQ 近
想 MQ 近 近 MQ 想 直
2. MQ 近
⽔ 直
3. 近
近 常
!
de
ui 常 常 常
G
va
os: " 直 常 常
Ja
Redis 让 让 近
让 常 直 让
让 直
让 key 让 近 近
让 更 让 key 近
1. 让
2. 近 让
3.
直 “ 3000 4000 常”
直 直
与 直 与 直 直
近 活
只 id 0
让 近
近 近 key 表名:列名:主键名:主键值
2 像 微近
key 近 像
“ ”
直 像 直
os “ 近 “
找 近5 直此?” 直 像
”
de
ui 像
G
va
“ (bit) ”
Ja
1. 像 题 近 找 题
此
2. 近 1
1. 始
2. 1近 1近 像
近 1近 像
近 同 像 近 同 题
近 1找 近 0此
同 近 1近 找
此
同 像 近 同
近 1近 1近 像
近 1近 像
近
de
ui 像 直 让
G
va
Ja
像 Redis 像
像 近 近
像 近 近
( 近 )
像 像 常 直 近
近
现 直
os 近 直
直 直
URL ?
os “ 近 直 近 近
直 近 说 常”
de
ui 找 HTTP 此
G
va
Ja
1. DNS 样
2. TCP
3. HTTP
4. HTTP
5. 样却⽤
6.
https://segmentfault.com/a/1190000006879700
TCP UDP ?
de
ui UDP 近 UDP 近
G
va
UDP 近 UDP 找
此近
Ja
QQ QQ
TCP 近 TCP
TCP 近 找TCP TCP
⽔ 近 近 ⽔ 近
近 近 此近 近
近 近 说 近 ⼰
TCP
TCP ?
1. 从 TCP
2. TCP 近 近
3. TCP 也 也 近 也
也 近TCP
4. TCP
5. TCP ⽇ 让 近TCP
让 他 近 近
TCP 说 说 找TCP
此
6. 近
7. ARQ 近 近
8. TCP 近 近
近
Java 直
找 os:“ 直”此
, ?
os “
I/O ”
Java 品 近 ⼏ 近 近
近 I/O 近
开 近 晚
向 么向 常
1. ⽔近 ⽔ 向 近 么向
2. ⽔近 近 近 近
向
de
ui
G
va
Ja
直 直 直
直 直
常 近 近 直
2020-03-08