1 Star 0 Fork 66

joee / ycyg

forked from linkin999 / ycyg 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
1.html 53.79 KB
一键复制 编辑 原始数据 按行查看 历史
linkin999 提交于 2018-03-29 15:06 . Upload 1.html
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014
<html>
<head>
<meta charset="UTF-8">
<meta name = "viewport" content = "width = device-width, initial-scale = 1, maximum-scale = 1">
<style id="style">
@font-face {
font-family: 'Lato';
src: url('file://C:\Users\Administrator\AppData\Local\boost\app-0.11.3\resources\app/resources/fonts/Lato-Regular.woff2') format('woff2'), /* Modern Browsers */
url('file://C:\Users\Administrator\AppData\Local\boost\app-0.11.3\resources\app/resources/fonts/Lato-Regular.woff') format('woff'), /* Modern Browsers */
url('file://C:\Users\Administrator\AppData\Local\boost\app-0.11.3\resources\app/resources/fonts/Lato-Regular.ttf') format('truetype');
font-style: normal;
font-weight: normal;
text-rendering: optimizeLegibility;
}
@font-face {
font-family: 'Lato';
src: url('file://C:\Users\Administrator\AppData\Local\boost\app-0.11.3\resources\app/resources/fonts/Lato-Black.woff2') format('woff2'), /* Modern Browsers */
url('file://C:\Users\Administrator\AppData\Local\boost\app-0.11.3\resources\app/resources/fonts/Lato-Black.woff') format('woff'), /* Modern Browsers */
url('file://C:\Users\Administrator\AppData\Local\boost\app-0.11.3\resources\app/resources/fonts/Lato-Black.ttf') format('truetype');
font-style: normal;
font-weight: 700;
text-rendering: optimizeLegibility;
}
html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-weight: inherit;
font-style: inherit;
font-family: inherit;
font-size: 100%;
vertical-align: baseline;
}
body {
line-height: 1;
color: #000;
background: #fff;
}
ol,
ul {
list-style: none;
}
table {
border-collapse: separate;
border-spacing: 0;
vertical-align: middle;
}
caption,
th,
td {
text-align: left;
font-weight: normal;
vertical-align: middle;
}
a img {
border: none;
}
body {
font-size: 16px;
padding: 15px;
font-family: helvetica, arial, sans-serif;
line-height: 1.6;
overflow-x: hidden;
background-color: #fff;
}
body .katex {
font: 400 1.2em 'KaTeX_Main';
line-height: 1.2em;
white-space: initial;
text-indent: 0;
}
body .katex .mfrac>.vlist>span:nth-child(2) {
top: 0 !important;
}
body .katex-error {
background-color: #f2dede;
color: #a64444;
padding: 5px;
margin: -5px;
border-radius: 5px;
}
body .flowchart-error,
body .sequence-error {
background-color: #f2dede;
color: #a64444;
padding: 5px;
border-radius: 5px;
-webkit-box-pack: left;
-moz-box-pack: left;
-o-box-pack: left;
-ms-flex-pack: left;
-webkit-justify-content: left;
justify-content: left;
}
li label.taskListItem {
margin-left: -1.8em;
}
li label.taskListItem.checked {
text-decoration: line-through;
opacity: 0.5;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
filter: alpha(opacity=50);
}
div.math-rendered {
text-align: center;
}
.math-failed {
background-color: rgba(255,0,0,0.1);
color: #d90000;
padding: 5px;
margin: 5px 0;
border-radius: 5px;
}
sup {
position: relative;
top: -0.4em;
font-size: 0.8em;
vertical-align: top;
}
sub {
position: relative;
bottom: -0.4em;
font-size: 0.8em;
vertical-align: top;
}
a {
color: #2bac8f;
text-decoration: none;
padding: 5px;
border-radius: 5px;
margin: -5px;
-webkit-transition: 0.1s;
-moz-transition: 0.1s;
-o-transition: 0.1s;
-ms-transition: 0.1s;
transition: 0.1s;
}
a img {
vertical-align: sub;
}
a:hover {
color: #2eb899;
text-decoration: underline;
background-color: rgba(255,201,92,0.3);
}
a:visited {
color: #2bac8f;
}
hr {
border-top: none;
border-bottom: solid 1px #d0d0d0;
margin: 15px 0;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-weight: bold;
word-wrap: break-word;
}
h1 {
font-size: 2.55em;
padding-bottom: 0.3em;
line-height: 1.2em;
border-bottom: solid 1px #d0d0d0;
margin: 1em 0 0.44em;
}
h1:first-child {
margin-top: 0;
}
h2 {
font-size: 1.75em;
padding-bottom: 0.3em;
line-height: 1.225em;
border-bottom: solid 1px #d0d0d0;
margin: 1em 0 0.57em;
}
h2:first-child {
margin-top: 0;
}
h3 {
font-size: 1.5em;
line-height: 1.43em;
margin: 1em 0 0.66em;
}
h4 {
font-size: 1.25em;
line-height: 1.4em;
margin: 1em 0 0.8em;
}
h5 {
font-size: 1em;
line-height: 1.4em;
margin: 1em 0 1em;
}
h6 {
font-size: 1em;
line-height: 1.4em;
margin: 1em 0 1em;
color: #777;
}
p {
line-height: 1.6em;
margin: 0 0 1em;
white-space: pre-line;
word-wrap: break-word;
}
img {
max-width: 100%;
}
strong,
b {
font-weight: bold;
}
em,
i {
font-style: italic;
}
s,
del,
strike {
text-decoration: line-through;
}
u {
text-decoration: underline;
}
blockquote {
border-left: solid 4px #3fb399;
margin: 0 0 1em;
padding: 0 25px;
}
ul {
list-style-type: disc;
padding-left: 2em;
margin-bottom: 1em;
}
ul li {
display: list-item;
}
ul li.taskListItem {
list-style: none;
}
ul li p {
margin: 0;
}
ul>li>ul,
ul>li>ol {
margin: 0;
}
ul>li>ul {
list-style-type: circle;
}
ul>li>ul>li>ul {
list-style-type: square;
}
ol {
list-style-type: decimal;
padding-left: 2em;
margin-bottom: 1em;
}
ol li {
display: list-item;
}
ol li p {
margin: 0;
}
ol>li>ul,
ol>li>ol {
margin: 0;
}
code {
color: #cc305f;
padding: 0.2em 0.4em;
background-color: #f7f7f7;
border-radius: 3px;
font-size: 1em;
text-decoration: none;
margin-right: 2px;
}
pre {
padding: 0.5em !important;
border: solid 1px #d1d1d1;
border-radius: 5px;
overflow-x: auto;
margin: 0 0 1em;
display: -webkit-box;
display: -moz-box;
display: -webkit-flex;
display: -ms-flexbox;
display: box;
display: flex;
line-height: 1.4em;
}
pre.flowchart,
pre.sequence {
display: -webkit-box;
display: -moz-box;
display: -webkit-flex;
display: -ms-flexbox;
display: box;
display: flex;
-webkit-box-pack: center;
-moz-box-pack: center;
-o-box-pack: center;
-ms-flex-pack: center;
-webkit-justify-content: center;
justify-content: center;
background-color: #fff;
}
pre.CodeMirror {
height: initial;
-webkit-box-lines: multiple;
-moz-box-lines: multiple;
-o-box-lines: multiple;
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
}
pre.CodeMirror>code {
-webkit-box-flex: 1;
-moz-box-flex: 1;
-o-box-flex: 1;
box-flex: 1;
-webkit-flex: 1;
-ms-flex: 1;
flex: 1;
overflow-x: auto;
}
pre code {
background-color: inherit;
margin: 0;
padding: 0;
border: none;
border-radius: 0;
}
pre>span.filename {
width: 100%;
border-radius: 5px 0px 0px 0px;
margin: -8px 100% 8px -8px;
padding: 0px 6px;
background-color: #777;
color: #fff;
}
pre>span.lineNumber {
display: none;
font-size: 1em;
padding: 0.5em 0;
margin: -0.5em 0.5em -0.5em -0.5em;
border-right: 1px solid;
text-align: right;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
}
pre>span.lineNumber.CodeMirror-gutters {
position: initial;
top: initial;
left: initial;
min-height: 0 !important;
}
pre>span.lineNumber>span {
display: block;
padding: 0 0.5em 0;
}
table {
display: block;
width: 100%;
margin: 0 0 1em;
}
table thead tr {
background-color: #fff;
}
table thead th {
border-style: solid;
padding: 6px 13px;
line-height: 1.6;
border-width: 1px 0 2px 1px;
border-color: #d0d0d0;
font-weight: bold;
}
table thead th:last-child {
border-right: solid 1px #d0d0d0;
}
table tbody tr:nth-child(2n + 1) {
background-color: #f9f9f9;
}
table tbody tr:nth-child(2n) {
background-color: #fff;
}
table tbody td {
border-style: solid;
padding: 6px 13px;
line-height: 1.6;
border-width: 0 0 1px 1px;
border-color: #d0d0d0;
}
table tbody td:last-child {
border-right: solid 1px #d0d0d0;
}
kbd {
background-color: #fafbfc;
border: solid 1px #d0d0d0;
border-bottom-color: #888;
border-radius: 3px;
-webkit-box-shadow: inset 0 -1px 0 #959da5;
box-shadow: inset 0 -1px 0 #959da5;
display: inline-block;
font-size: 0.8em;
line-height: 1;
padding: 3px 5px;
}
body[data-theme="dark"] {
color: #f9f9f9;
border-color: #444b59;
background-color: #2c3033;
}
body[data-theme="dark"] a:hover {
background-color: rgba(90,214,186,0.2) !important;
}
body[data-theme="dark"] code {
color: #ea6730;
border-color: #3d4450;
background-color: #363a3e;
}
body[data-theme="dark"] pre {
border-color: #474f5c;
}
body[data-theme="dark"] pre code {
background-color: transparent;
}
body[data-theme="dark"] label.taskListItem {
background-color: #2c3033;
}
body[data-theme="dark"] table thead tr {
background-color: #282b2e;
}
body[data-theme="dark"] table thead th {
border-color: #444b59;
}
body[data-theme="dark"] table thead th:last-child {
border-right: solid 1px #444b59;
}
body[data-theme="dark"] table tbody tr:nth-child(2n + 1) {
background-color: #2c3033;
}
body[data-theme="dark"] table tbody tr:nth-child(2n) {
background-color: #282b2e;
}
body[data-theme="dark"] table tbody td {
border-color: #444b59;
}
body[data-theme="dark"] table tbody td:last-child {
border-right: solid 1px #444b59;
}
body[data-theme="dark"] kbd {
background-color: #444b59;
color: #f9f9f9;
}
body[data-theme="solarized-dark"] {
color: #93a1a1;
border-color: #444b59;
background-color: #073642;
}
body[data-theme="solarized-dark"] table thead tr {
background-color: #06313b;
}
body[data-theme="solarized-dark"] table thead th {
border-color: #444b59;
}
body[data-theme="solarized-dark"] table thead th:last-child {
border-right: solid 1px #444b59;
}
body[data-theme="solarized-dark"] table tbody tr:nth-child(2n + 1) {
background-color: #073642;
}
body[data-theme="solarized-dark"] table tbody tr:nth-child(2n) {
background-color: #06313b;
}
body[data-theme="solarized-dark"] table tbody td {
border-color: #444b59;
}
body[data-theme="solarized-dark"] table tbody td:last-child {
border-right: solid 1px #444b59;
}
/*# sourceMappingURL=browser/components/markdown.css.map */
body {
font-family: 'Segoe UI','meiryo','Microsoft YaHei','helvetica','arial','sans-serif';
font-size: 14px;
padding-bottom: 90vh;
}
code {
font-family: 'Segoe UI','Monaco','Menlo','Ubuntu Mono','Consolas','source-code-pro','monospace';
background-color: rgba(0,0,0,0.04);
}
.lineNumber {
display: block !important;
font-family: 'Segoe UI','Monaco','Menlo','Ubuntu Mono','Consolas','source-code-pro','monospace';
}
.clipboardButton {
color: rgba(147,147,149,0.8);;
fill: rgba(147,147,149,1);;
border-radius: 50%;
margin: 0px 10px;
border: none;
background-color: transparent;
outline: none;
height: 15px;
width: 15px;
cursor: pointer;
}
.clipboardButton:hover {
transition: 0.2s;
color: #939395;
fill: #939395;
background-color: rgba(0,0,0,0.1);
}
h1, h2 {
border: none;
}
h1 {
padding-bottom: 4px;
margin: 1em 0 8px;
}
h2 {
padding-bottom: 0.2em;
margin: 1em 0 0.37em;
}
body p {
white-space: normal;
}
</style>
<link rel="stylesheet" href="css/dracula.css"><link rel="stylesheet" href="css/katex.min.css"><link rel="stylesheet" href="css/codemirror.css">
</head>
<body><h1 data-line="0" id="java">java</h1>
<h2 data-line="1" id="1%E3%80%81hashcode%E7%9B%B8%E7%AD%89%E4%B8%A4%E4%B8%AA%E7%B1%BB%E4%B8%80%E5%AE%9A%E7%9B%B8%E7%AD%89%E5%90%97equals%E5%91%A2%E7%9B%B8%E5%8F%8D%E5%91%A2">1、hashcode相等两个类一定相等吗?equals呢?相反呢?</h2>
<ul>
<li>
<p data-line="2">1.两个对象值相同(x.equals(y) == true),则一定有相同的hashcode</p>
</li>
<li>
<p data-line="3">2.java语言的定义: Hash,一般翻译做“散列”,也有直接音译为&quot;哈希&quot;的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值,所以:<br />
1)对象相等,则hashCode一定相等;<br />
2)hashCode相等,对象未必相等。<br />
3.“==” 是比较地址是否相等,JAVA中声明变量都是引用嘛,不同的引用,可能指向同一个地址;<br />
4.equals 是比较值是否相等。</p>
<p data-line="9">引申:hashcode、equals和“==”三者的关系?<br />
1.如果是基本变量,没有hashcode和equals方法,基本变量的比较方式就只有==;<br />
2.如果是变量,由于在java中所有变量定义都是一个指向实际存储的一个句柄(你可以理解为c++中的指针),在这里==是比较句柄的地址(你可以理解为指针的存储地址),而不是句柄指向的实际内存中的内容,如果要比较实际内存中的内容,那就要用equals方法,但是,如果是你自己定义的一个类,比较自定义类用equals和==是一样的,都是比较句柄地址,因为自定义的类是继承于object,而object中的equals就是用==来实现的,见源码:<br />
public boolean equals(Object obj) {<br />
return (this == obj);<br />
}</p>
</li>
<li>
<p data-line="16">3.那为什么我们用的String等类型equals是比较实际内容呢,是因为String等常用类已经重写了object中的equals方法,让equals来比较实际内容,查看源码如下:<br />
public boolean equals(Object anObject) {<br />
if (this == anObject) {<br />
return true;<br />
}<br />
if (anObject instanceof String) {<br />
String anotherString = (String)anObject;<br />
int n = value.length;<br />
if (n == anotherString.value.length) {<br />
char v1[] = value;<br />
char v2[] = anotherString.value;<br />
int i = 0;<br />
while (n-- != 0) {<br />
if (v1[i] != v2[i])<br />
return false;<br />
i++;<br />
}<br />
return true;<br />
}<br />
}<br />
return false;<br />
}</p>
</li>
<li>
<p data-line="38">4.hashcode,在一般的应用中你不需要了解hashcode的用法,但当你用到hashmap,hashset等集合类时要注意下hashcode。你想通过一个object的key来拿hashmap的value,hashmap的工作方法是,通过你传入的object的hashcode在内存中找地址,当找到这个地址后再通过equals方法来比较这个地址中的内容是否和你原来放进去的一样,一样就取出value。</p>
</li>
</ul>
<h2 data-line="41" id="2%E3%80%81%E4%BB%8B%E7%BB%8D%E4%B8%80%E4%B8%8B%E9%9B%86%E5%90%88%E6%A1%86%E6%9E%B6">2、介绍一下集合框架?</h2>
<ul>
<li>
<p data-line="43">1.为什么Map接口不继承Collection 接口?<br />
Set是无序集合,并且不允许重复的元素<br />
List是有序的集合,并且允许重复的元素<br />
而Map是键值对<br />
它被视为是键的set和值的set的组合<br />
Map被设计为键值对的集合,所以不需要继承Collection 接口</p>
</li>
<li>
<p data-line="50">2.HashMap和Hashtable之间的区别?<br />
同步或线程安全<br />
Null键和Null值<br />
迭代值<br />
默认容量大小</p>
</li>
<li>
<p data-line="56">3.comparable 和 comparator的不同之处?<br />
comparable接口实际上是出自java.lang包<br />
它有一个 compareTo(Object obj)方法来将objects排序<br />
comparator接口实际上是出自 java.util 包<br />
它有一个compare(Object obj1, Object obj2)方法来将objects排序</p>
</li>
<li>
<p data-line="62">4.如何对Object的list排序?<br />
对objects数组进行排序,我们可以用Arrays.sort()方法<br />
如果要对objects的集合进行排序,需要使用Collections.sort()方法</p>
</li>
<li>
<p data-line="66">5.fail-fast 与 fail-safe 之间的区别?<br />
Fail fast快速地报告任何的failure。无论何时任何一个问题都会引发 fail fast系统fails<br />
在Java Fail fast 迭代器中,迭代objects集合有时会出现并发修改异常,出现这种情况有2个原因<br />
如果一个线程正在迭代一个集合,而另一个线程同时试图修改这个集合<br />
在调用remove()方法后,如何我们还试图去修改集合object</p>
</li>
</ul>
<ul>
<li>
<p data-line="73">6.Iterator、ListIterator 和 Enumeration的区别?<br />
Enumeration接口在Java1.2版本开始有,所以Enumeration是合法规范的接口<br />
Enumeration使用elements()方法<br />
Iterator对所有Java集合类都有实现<br />
Iterator使用iterator方法<br />
Iterator只能往一个方向前进<br />
ListIterator仅仅对List类型的类实现了<br />
ListIterator使用listIterator()方法</p>
</li>
<li>
<p data-line="82">7.Java 中 Set 与 List 有什么不同?<br />
Set是一个不允许重复元素存在的集合<br />
Set没有索引<br />
Set仅仅允许一个null值<br />
Set有类:HashSet、LinkedHashMap、TreeSet<br />
List有索引<br />
List允许N个null值<br />
List可以按插入顺序显示<br />
List有类:Vector、ArrayList、LinkedList</p>
</li>
<li>
<p data-line="92">8.arraylist 与 vector 的区别?<br />
Vector 在Java的第一个版本就引入了,也就是说vector是一个合法规范的类<br />
ArrayList在Java1.2版本引入的,是Java 集合框架的组成部分<br />
Vector是同步的<br />
ArrayList是不同步的</p>
</li>
<li>
<p data-line="98">9.什么类实现了List接口?<br />
ArrayList<br />
LinkedList<br />
Vector</p>
</li>
<li>
<p data-line="103">10.什么类实现了Set接口?<br />
HashSet<br />
LinkedHashSet<br />
TreeSet</p>
</li>
<li>
<p data-line="108">11.如何保证一个集合线程安全?<br />
Vector, Hashtable, Properties 和 Stack 都是同步的类,所以它们都线程安全的,可以被使用在多线程环境中<br />
使用Collections.synchronizedList(list)) 方法,可以保证list类是线程安全的<br />
使用java.util.Collections.synchronizedSet()方法可以保证set类是线程安全的</p>
</li>
<li>
<p data-line="113">12.是否可以往 TreeSet 或者 HashSet 中添加 null 元素?<br />
可以往 hashset 中添加一个 null<br />
TreeSet 也允许一个 null值</p>
</li>
<li>
<p data-line="117">13.解释下Collection的接口继承关系?</p>
</li>
</ul>
<ul>
<li>
<p data-line="120">14.Iterator符合哪个设计模式?<br />
Iterator 设计模式</p>
</li>
<li>
<p data-line="123">15.HashSet 实现了哪个数据结构?<br />
HashSet 内部实现了hashmap</p>
</li>
<li>
<p data-line="126">16.为什么 Collection 不能继承 Cloneable 和 Serializable?<br />
List和Set唯一继承 Collection 接口<br />
SortedMap 继承了 Map 接口</p>
</li>
<li>
<p data-line="130">17.hashCode() 和 equals() 方法的重要性?如何在Java中使用它们?<br />
hashCode() 和 equals() 方法定义在”object”类中<br />
如果equals() 方法在比较2个对象时返回true,那么hashCode()的返回值必须得一样</p>
</li>
<li>
<p data-line="134">18.array 和 arraylist 的区别?<br />
Array类似object集合类型,大小固定<br />
Arraylist是同质和异质元素的集合</p>
</li>
<li>
<p data-line="138">19.什么是 Properties 类?<br />
Properties 是Hashtable的子类。它被用于维护值的list,其中它们的键、值都是String类型</p>
</li>
<li>
<p data-line="141">20.如何将一个字符串转换为arraylist?<br />
使用 arrayList.toArray() 方法</p>
</li>
</ul>
<h2 data-line="146" id="3%E3%80%81hashmap-hastable-%E5%BA%95%E5%B1%82%E5%AE%9E%E7%8E%B0%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%ABhashtable%E5%92%8Cconcurrenthashtable%E5%91%A2">3、hashmap hastable 底层实现什么区别?hashtable和concurrenthashtable呢?</h2>
<p data-line="148"><a href="http://mp.weixin.qq.com/s/yl2h2l3jsbCKWX3exTuXqw">HashMap与HashTable深度对比</a></p>
<p data-line="150">本文基于jdk1.8</p>
<ul>
<li>1线程安全性 HashMap是线程不安全的,不适合在多线程内使用 HashTable线程安全,每个方法都加了锁</li>
<li>2Key,Value值限制 HashMap,key可以为null,只能有一个,value可以为null HashTable,key,value都不能为null 可以从HashTable的put方法看出来,value为null会直接抛出异常,而key为null,在调用key.hashCode()的时候也会抛出空指针异常,不知道为什么不提前手动去判断key为null,个人感觉HashTable唯一存在于jdk的理由是兼容历史代码,毕竟现在都不维护了,而且性能也没有ConcurrentHashMap好</li>
<li>3.实现的抽象类不同HashMap继承AbstractMap,AbstractMap里面封装了一些常用的map操作,并且开放抽象方法给子类实现 HashTable继承Dictionary,Dictionary里面只是约束了子类需要实现的方法,并且这些方法和Map接口重复,并且从类注释中看到,Dictionary是1.1出现的,而Map接口是1.2出现的,所以推断,Dictionary的残留,也是为了兼容老代码</li>
<li>4.哈希桶初始化时机不同 HashTable中哈希桶初始化放在构造函数里面 HashMap中哈希桶初始化在第一次put的时候触发,并且逻辑封装在resize()方法里面</li>
<li>5.哈希表的长度不同 HashMap的长度都是2的幂次方,最小为16 HashTable的默认长度为11,没有限定为2的幂次方</li>
<li>6.扩容方式不同 HashTable的扩容方式很简单,建一个双倍长度的哈希表,然后循环老的哈希表中的元素,依次计算其新哈希表中的位子,放入新的哈希表 而HashMap基于2的幂次方长度对扩容算法进行了优化,下面截取resize方法中扩容的算法<br />
算法逻辑如下: 循环哈希表,如果哈希桶只有一个元素,直接计算他在新哈希表的位子并且放入,如果哈西桶是一个红黑树节点,调用红黑树的算法复制到新的哈希表,如果是链表,将链表拆分为2个链表,一个链表不需要换哈西桶的位子,另外一个链表需要换位子,分别将这2个链表放到新的哈希表中 最后这个拆分链表的算法很巧妙<br />
因为是哈希表长度是2的幂次方,所以做扩容后,计算哈西桶位子时,由原来的hash值&amp;2的n次方-1,改为hash值&amp;2的n+1次方-1,那么我们判断链表中这个元素是否会调换位子的时候,只需要判断&amp;n+1位是否为1,也就是用hash值&amp;2的n次方来判断。 计算新位子的时候也方便了,新的位子就是老的位子加上2的n次方,也就是老哈希表的长度。<br />
这个算法我也理解了很久,不太懂的朋友,可以自己计算推敲下,十分有趣</li>
<li>7.哈希桶内元素类型不同 HashTable桶内元素直接为Entry HashMap针对这个又加了优化,如果链表长度超过8个时,会转换为红黑树节点,如果红黑树内节点少于6个时,再转换为链表</li>
</ul>
<p data-line="162"><a href="http://mp.weixin.qq.com/s/VIib_YdLudtdryBae5kEkQ">ConurrentHashMap 和 HashTable 的区别</a><br />
Hashtable和ConcurrentHashMap有什么分别呢?它们都可以用于多线程的环境,但是当Hashtable的大小增加到一定的时候,性能会急剧下降,因为迭代时需要被锁定很长的时间。因为ConcurrentHashMap引入了分割(segmentation),不论它变得多么大,仅仅需要锁定map的某个部分,而其它的线程不需要等到迭代完成才能访问map。简而言之,在迭代的过程中,ConcurrentHashMap仅仅锁定map的某个部分,而Hashtable则会锁定整个map</p>
<h2 data-line="165" id="4%E3%80%81hashmap%E5%92%8Ctreemap%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%E4%BD%8E%E5%B1%82%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E6%98%AF%E4%BB%80%E4%B9%88">4、hashmap和treemap什么区别?低层数据结构是什么?</h2>
<p data-line="167"><a href="http://mp.weixin.qq.com/s/2b_QFIAiF9Q3V9QY_HyJxw">(43) 剖析TreeMap / 计算机程序的思维逻辑</a></p>
<p data-line="169">答:TreeMap 实现了 SortMap 接口,其能够根据键排序,默认是按键的升序排序,也可以指定排序的比较器,当用 Iterator 遍历 TreeMap 时得到的记录是排过序的,所以在插入和删除操作上会有些性能损耗,TreeMap 的键和值都不能为空,其为非并发安全 Map,此外 TreeMap 基于红黑树实现。</p>
<p data-line="171">HashMap 是最常用的 Map,其基于哈希散列表实现,主要根据键的 hashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,当用 Iterator 遍历 HashMap 时得到的记录顺序是随机的,HashMap 只允键值均为空,其为非并发安全 Map。</p>
<p data-line="173">所以一般情况下我们选用 HashMap,因为 HashMap 的键值对在取出时是随机的,其依据键的 hashCode 值和键的 equals 方法存取数据,具有很快的访问速度,所以在 Map 中插入、删除及索引元素时其是效率最高的实现。而 TreeMap 取出来的是排序后的键值对,所以效率会低点。</p>
<h2 data-line="175" id="5%E3%80%81%E7%BA%BF%E7%A8%8B%E6%B1%A0%E7%94%A8%E8%BF%87%E5%90%97%E9%83%BD%E6%9C%89%E4%BB%80%E4%B9%88%E5%8F%82%E6%95%B0%E5%BA%95%E5%B1%82%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%9A%84">5、线程池用过吗都有什么参数?底层如何实现的?</h2>
<p data-line="177"><a href="https://mp.weixin.qq.com/s/JhbFuhGgW-_tbVSqDFqo0g">深入浅出 Java 线程池</a><br />
<a href="http://mp.weixin.qq.com/s/4CuF4dmcg2ff1r90cSGOyQ">Java 线程池实现的原理</a></p>
<h2 data-line="180" id="6%E3%80%81sychnized%E5%92%8CLock%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%ABsychnize-%E4%BB%80%E4%B9%88%E6%83%85%E5%86%B5%E6%83%85%E5%86%B5%E6%98%AF%E5%AF%B9%E8%B1%A1%E9%94%81-%E4%BB%80%E4%B9%88%E6%97%B6%E5%80%99%E6%98%AF%E5%85%A8%E5%B1%80%E9%94%81%E4%B8%BA%E4%BB%80%E4%B9%88">6、sychnized和Lock什么区别?sychnize 什么情况情况是对象锁? 什么时候是全局锁为什么?</h2>
<p data-line="182"><a href="http://mp.weixin.qq.com/s/lr0Mg7TSKsIE3AdMBxv1AQ">想进大厂?50个多线程面试题,你会多少?(一)</a><br />
<a href="http://mp.weixin.qq.com/s/RtfEPR2oclUAu0tXnYAn4Q">Java面试题-基础知识</a><br />
<a href="http://mp.weixin.qq.com/s/0A1aydVEOGlH4rSihaOJ-Q">Java面试宝典</a></p>
<h2 data-line="187" id="7%E3%80%81ThreadLocal-%E6%98%AF%E4%BB%80%E4%B9%88%E5%BA%95%E5%B1%82%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E5%86%99%E4%B8%80%E4%B8%AA%E4%BE%8B%E5%AD%90%E5%91%97">7、ThreadLocal 是什么底层如何实现?写一个例子呗?</h2>
<p data-line="189"><a href="http://mp.weixin.qq.com/s/KSCOpxX7hcXeJ7VqcRJDSA">ThreadLocal实现原理详解</a><br />
<a href="http://mp.weixin.qq.com/s/fy0wBWpJKRjltJPykzQ12Q">ThreadLocal使用案例</a><br />
<a href="https://www.zhihu.com/question/23089780?utm_source=wechat_search&amp;utm_medium=organic">ThreadLocal和synchronized的区别? - 知乎</a><br />
<a href="http://mp.weixin.qq.com/s/9Er8yYiCkPv0crpxnLC6cA">深入理解ThreadLocal</a></p>
<h2 data-line="194" id="8%E3%80%81volitile%E7%9A%84%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86">8、volitile的工作原理?</h2>
<p data-line="196"><a href="http://mp.weixin.qq.com/s/4l4bXbNP2utFg0OvPoi_jg">深入了解volatile原理</a></p>
<h2 data-line="198" id="9%E3%80%81cas%E7%9F%A5%E9%81%93%E5%90%97%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%9A%84">9、cas知道吗如何实现的?</h2>
<p data-line="200"><a href="http://mp.weixin.qq.com/s/T_qB3xSk9Ov33kXe_2d2zA">CAS实现单点登录(SSO)过程浅析</a></p>
<h2 data-line="202" id="10%E3%80%81%E8%AF%B7%E7%94%A8%E8%87%B3%E5%B0%91%E5%9B%9B%E7%A7%8D%E5%86%99%E6%B3%95%E5%86%99%E4%B8%80%E4%B8%AA%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F">10、请用至少四种写法写一个单例模式?</h2>
<p data-line="204"><a href="http://mp.weixin.qq.com/s/LpM6FZHO5pPCKCkbdWPxCA">聊一聊Java中的四种单例模式</a></p>
<h1 data-line="212" id="JVM">JVM</h1>
<h2 data-line="213" id="1%E3%80%81%E8%AF%B7%E4%BB%8B%E7%BB%8D%E4%B8%80%E4%B8%8BJVM%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8B%E7%94%A8%E8%BF%87%E4%BB%80%E4%B9%88%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6%E5%99%A8%E9%83%BD%E8%AF%B4%E8%AF%B4%E5%91%97">1、请介绍一下JVM内存模型??用过什么垃圾回收器都说说呗</h2>
<p data-line="215"><a href="http://mp.weixin.qq.com/s/pzuO8b_CZ7sNuRLTy2lJ3Q">JVM内存模型和垃圾回收GC策略</a></p>
<h2 data-line="217" id="2%E3%80%81%E7%BA%BF%E4%B8%8A%E5%8F%91%E9%80%81%E9%A2%91%E7%B9%81full-gc%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86-CPU-%E4%BD%BF%E7%94%A8%E7%8E%87%E8%BF%87%E9%AB%98%E6%80%8E%E4%B9%88%E5%8A%9E">2、线上发送频繁full gc如何处理? CPU 使用率过高怎么办?</h2>
<p data-line="218">如何定位问题?如何解决说一下解决思路和处理方法</p>
<p data-line="220"><a href="http://mp.weixin.qq.com/s/r68K0T6ekH0tJgXW3ZSa1A">JAVA调优经验漫谈</a><br />
<a href="http://mp.weixin.qq.com/s/HSn1pNyA-jyujymmT1Ycrw">JVM 初探——使用堆外内存减少 Full GC(上)</a><br />
<a href="http://mp.weixin.qq.com/s/1uYN6tf95D15jTVHtb6u4Q">听阿里巴巴JVM工程师为你分析常见Java故障案例</a><br />
<a href="http://mp.weixin.qq.com/s/CiXC4cRGVZgk7T-BgxQXCQ">java面试题大合集(开发者必看一)</a></p>
<h2 data-line="226" id="3%E3%80%81%E7%9F%A5%E9%81%93%E5%AD%97%E8%8A%82%E7%A0%81%E5%90%97%E5%AD%97%E8%8A%82%E7%A0%81%E9%83%BD%E6%9C%89%E5%93%AA%E4%BA%9BInteger-x-5int-y-5%EF%BC%8C%E6%AF%94%E8%BE%83x-y-%E9%83%BD%E7%BB%8F%E8%BF%87%E5%93%AA%E4%BA%9B%E6%AD%A5%E9%AA%A4">3、知道字节码吗?字节码都有哪些?Integer x =5,int y =5,比较x =y 都经过哪些步骤?</h2>
<p data-line="227"><a href="http://mp.weixin.qq.com/s/jv7avKM3Z3zK8sJNdtii_g">Java 函数调用是传值还是传引用? 从字节码角度来看看!</a><br />
<a href="http://mp.weixin.qq.com/s/j0cQryyw_DPNlgveSLpQVA">【了解】 Java 字节码</a><br />
<a href="http://mp.weixin.qq.com/s/U3XQ7zhxoTBJt4SVNKYepQ">Java知识:面试题2:int 和 Integer 有什么区别?</a></p>
<h2 data-line="232" id="4%E3%80%81%E8%AE%B2%E8%AE%B2%E7%B1%BB%E5%8A%A0%E8%BD%BD%E6%9C%BA%E5%88%B6%E5%91%97%E9%83%BD%E6%9C%89%E5%93%AA%E4%BA%9B%E7%B1%BB%E5%8A%A0%E8%BD%BD%E5%99%A8%EF%BC%8C%E8%BF%99%E4%BA%9B%E7%B1%BB%E5%8A%A0%E8%BD%BD%E5%99%A8%E9%83%BD%E5%8A%A0%E8%BD%BD%E5%93%AA%E4%BA%9B%E6%96%87%E4%BB%B6">4、讲讲类加载机制呗都有哪些类加载器,这些类加载器都加载哪些文件?</h2>
<p data-line="233">手写一下类加载Demo</p>
<p data-line="235"><a href="https://mp.weixin.qq.com/s/Zuce2Ip41KgiB_iRL5__Wg">深入理解Java类加载机制</a><br />
<a href="http://mp.weixin.qq.com/s/ODvfApBM6WZkTR7TDFZuNQ">Java类加载器详解(上)</a></p>
<h2 data-line="238" id="5%E3%80%81%E7%9F%A5%E9%81%93osgi%E5%90%97-%E4%BB%96%E6%98%AF%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%9A%84">5、知道osgi吗? 他是如何实现的???</h2>
<p data-line="240"><a href="http://mp.weixin.qq.com/s/INFDz9sOcYKvqMAVc6iwKA">【0040】你了解OSGI类加载器架构吗?</a><br />
<a href="http://mp.weixin.qq.com/s/JKIGVce4heuM2FF4xrlI1A">揭秘阿里巴巴开源框架JarsLink</a></p>
<h2 data-line="243" id="6%E3%80%81%E8%AF%B7%E9%97%AE%E4%BD%A0%E5%81%9A%E8%BF%87%E5%93%AA%E4%BA%9BJVM%E4%BC%98%E5%8C%96%E4%BD%BF%E7%94%A8%E4%BB%80%E4%B9%88%E6%96%B9%E6%B3%95%E8%BE%BE%E5%88%B0%E4%BB%80%E4%B9%88%E6%95%88%E6%9E%9C">6、请问你做过哪些JVM优化?使用什么方法达到什么效果???</h2>
<p data-line="245"><a href="http://mp.weixin.qq.com/s/flUPPpjncUa6gJf1XXvaOg">jvm优化——性能调优</a><br />
<a href="https://mp.weixin.qq.com/s/t1Cx1n6irN1RWG8HQyHU2w">从实际案例聊聊Java应用的GC优化</a></p>
<h2 data-line="248" id="7%E3%80%81classforName%E2%80%9CjavalangString%E2%80%9D%E5%92%8CString-classgetClassLoader-LoadClass%E2%80%9CjavalangString%E2%80%9D-%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%E5%95%8A">7、classforName(“java.lang.String”)和String classgetClassLoader() LoadClass(“java.lang.String”) 什么区别啊??</h2>
<p data-line="250"><a href="https://blog.csdn.net/caomiao2006/article/details/47735657">Java中Class.forName和ClassLoader.loadClass的区别 - CSDN博客</a></p>
<h1 data-line="253" id="Spring">Spring</h1>
<h2 data-line="254" id="1%E3%80%81spring%E9%83%BD%E6%9C%89%E5%93%AA%E4%BA%9B%E6%9C%BA%E5%88%B6%E5%95%8A-AOP%E5%BA%95%E5%B1%82%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%9A%84%E5%95%8A-IOC%E5%91%A2">1、spring都有哪些机制啊 AOP底层如何实现的啊 IOC呢??</h2>
<p data-line="256"><a href="http://mp.weixin.qq.com/s/0NTsllMFxcZPBMBXsqoGpg">spring和springMVC的面试问题总结</a><br />
<a href="http://mp.weixin.qq.com/s/BrUX-j-0xJdUPHa7vCF5xQ">Spring AOP 的实现机制</a><br />
<a href="http://mp.weixin.qq.com/s/0NTsllMFxcZPBMBXsqoGpg">spring和springMVC的面试问题总结</a><br />
<a href="http://mp.weixin.qq.com/s/LPGPOMt12TvMAMFOaFLU3g">Spring【AOP模块】就这么简单</a></p>
<h2 data-line="261" id="2%E3%80%81cgLib%E7%9F%A5%E9%81%93%E5%90%97%E4%BB%96%E5%92%8Cjdk%E5%8A%A8%E6%80%81%E4%BB%A3%E7%90%86%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%E6%89%8B%E5%86%99%E4%B8%80%E4%B8%AAjdk%E5%8A%A8%E6%80%81%E4%BB%A3%E7%90%86%E5%91%97">2、cgLib知道吗?他和jdk动态代理什么区别?手写一个jdk动态代理呗?</h2>
<p data-line="262"><a href="http://mp.weixin.qq.com/s/NPgPrOCvC9vU5TINUFoQIA">Java动态代理与CGLIB</a><br />
<a href="http://mp.weixin.qq.com/s/caEpFhjE6FnnvoGMCQpU0g">http://mp.weixin.qq.com/s/caEpFhjE6FnnvoGMCQpU0g</a></p>
<h1 data-line="265" id="%E6%95%B0%E6%8D%AE%E5%BA%93">数据库</h1>
<h2 data-line="266" id="1%E3%80%81%E4%BD%BF%E7%94%A8mysq1%E7%B4%A2%E5%BC%95%E9%83%BD%E6%9C%89%E5%93%AA%E4%BA%9B%E5%8E%9F%E5%88%99-%E7%B4%A2%E5%BC%95%E4%BB%80%E4%B9%88%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84-3tree-%E5%92%8CB-tree-%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB">1、使用mysq1索引都有哪些原则? ?索引什么数据结构? 3+tree 和B tree 什么区别?</h2>
<p data-line="267"><a href="http://mp.weixin.qq.com/s/OBIOAjHo5k8ioNz-F2LoQA">一张思维导图学会如何构建高性能MySQL系统!</a><br />
<a href="https://mp.weixin.qq.com/s/3uhQhvh5EClHjK-WxyG1Jg">Mysql索引以及数据结构</a></p>
<h2 data-line="269" id="2%E3%80%81mysq1%E6%9C%89%E5%93%AA%E4%BA%9B%E5%AD%98%E5%82%A8%E5%BC%95%E6%93%8E%E5%95%8A%E9%83%BD%E6%9C%89%E5%95%A5%E5%8C%BA%E5%88%AB-%E8%A6%81%E8%AF%A6%E7%BB%86">2、mysq1有哪些存储引擎啊?都有啥区别? 要详细!</h2>
<p data-line="270"><a href="http://mp.weixin.qq.com/s/kGPrBsJwsWt92R0fSySiVw">MySQL存储引擎MyISAM与InnoDB区别</a><br />
<a href="http://mp.weixin.qq.com/s/8Xe9GaY6e8wCP4pJtGqoYA">MySQL数据表存储引擎类型及特性</a></p>
<h2 data-line="272" id="3%E3%80%81%E8%AE%BE%E8%AE%A1%E9%AB%98%E5%B9%B6%E5%8F%91%E7%B3%BB%E7%BB%9F%E6%95%B0%E6%8D%AE%E5%BA%93%E5%B1%82%E9%9D%A2%E8%AF%A5%E6%80%8E%E4%B9%88%E8%AE%BE%E8%AE%A1%E6%95%B0%E6%8D%AE%E5%BA%93%E9%94%81%E6%9C%89%E5%93%AA%E4%BA%9B%E7%B1%BB%E5%9E%8B%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E5%91%80">3、设计高并发系统数据库层面该怎么设计??数据库锁有哪些类型?如何实现呀?</h2>
<p data-line="273"><a href="http://mp.weixin.qq.com/s/fvovCMNjgbMdX2rcrge3JA">大规模分布式应用之海量数据和高并发解决方案总结一二</a><br />
<a href="http://mp.weixin.qq.com/s/6fX06LhKTqG7CMaAa88bOA">MySQL数据库的锁机制</a></p>
<h2 data-line="276" id="4%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BA%8B%E5%8A%A1%E6%9C%89%E5%93%AA%E4%BA%9B">4、数据库事务有哪些?</h2>
<p data-line="277"><a href="http://mp.weixin.qq.com/s/DQAs8u0LSeRIsx0uyGjZTg">彻底理解数据库事务</a></p>
<h1 data-line="280" id="%E5%88%86%E5%BA%93%E5%88%86%E8%A1%A8">分库分表</h1>
<h2 data-line="281" id="1%E3%80%81%E5%A6%82%E4%BD%95%E8%AE%BE%E8%AE%A1%E5%8F%AF%E4%BB%A5%E5%8A%A8%E6%80%81%E6%89%A9%E5%AE%B9%E7%BC%A9%E5%AE%B9%E7%9A%84%E5%88%86%E5%BA%93%E5%88%86%E8%A1%A8%E6%96%B9%E6%A1%88">1、如何设计可以动态扩容缩容的分库分表方案?</h2>
<p data-line="282"><a href="http://mp.weixin.qq.com/s/uJce1HuBpD-OcjS7C66SOA">技术架构系列 | 几种架构设计模式导论(下)</a></p>
<h2 data-line="283" id="2%E3%80%81%E7%94%A8%E8%BF%87%E5%93%AA%E4%BA%9B%E5%88%86%E5%BA%93%E5%88%86%E8%A1%A8%E4%B8%AD%E9%97%B4%E4%BB%B6%EF%BC%8C%E6%9C%89%E5%95%A5%E4%BC%98%E7%82%B9%E5%92%8C%E7%BC%BA%E7%82%B9%E8%AE%B2%E4%B8%80%E4%B8%8B%E4%BD%A0%E4%BA%86%E8%A7%A3%E7%9A%84%E5%88%86%E5%BA%93%E5%88%86%E8%A1%A8%E4%B8%AD%E9%97%B4%E4%BB%B6%E7%9A%84%E5%BA%95%E5%B1%82%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86">2、用过哪些分库分表中间件,有啥优点和缺点?讲一下你了解的分库分表中间件的底层实现原理?</h2>
<p data-line="284"><a href="http://mp.weixin.qq.com/s/A-X59OEBJOrPA-kpPf6Vfw">解读分库分表中间件Sharding-JDBC</a></p>
<h2 data-line="285" id="3%E3%80%81%E6%88%91%E7%8E%B0%E5%9C%A8%E6%9C%89%E4%B8%80%E4%B8%AA%E6%9C%AA%E5%88%86%E5%BA%93%E5%88%86%E8%A1%A8%E7%9A%84%E7%B3%BB%E7%BB%9F%EF%BC%8C%E4%BB%A5%E5%90%8E%E7%B3%BB%E7%BB%9F%E9%9C%80%E5%88%86%E5%BA%93%E5%88%86%E8%A1%A8%EF%BC%8C%E5%A6%82%E4%BD%95%E8%AE%BE%E8%AE%A1%EF%BC%8C%E8%AE%A9%E6%9C%AA%E5%88%86%E5%BA%93%E5%88%86%E8%A1%A8%E7%9A%84%E7%B3%BB%E7%BB%9F%E5%8A%A8%E6%80%81%E5%88%87%E6%8D%A2%E5%88%B0%E5%88%86%E5%BA%93%E5%88%86%E8%A1%A8%E7%9A%84%E7%B3%BB%E7%BB%9F%E4%B8%8ATCC-%E9%82%A3%E8%8B%A5%E5%87%BA%E7%8E%B0%E7%BD%91%E7%BB%9C%E5%8E%9F%E5%9B%A0%EF%BC%8C%E7%BD%91%E7%BB%9C%E8%BF%9E%E4%B8%8D%E9%80%9A%E6%80%8E%E4%B9%88%E5%8A%9E%E5%95%8A">3、我现在有一个未分库分表的系统,以后系统需分库分表,如何设计,让未分库分表的系统动态切换到分库分表的系统上???TCC? 那若出现网络原因,网络连不通怎么办啊???</h2>
<p data-line="286"><a href="http://mp.weixin.qq.com/s/eyiN_AwwkwM7F3ZS-xeepw">解读分库分表中间件Sharding-JDBC</a><br />
<a href="https://www.zhihu.com/question/21612832?utm_source=wechat_search&amp;utm_medium=organic">怎样实现一个支持TCC事务的业务服务? - 知乎</a></p>
<h2 data-line="289" id="4%E3%80%81%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1%E7%9F%A5%E9%81%93%E5%90%97-%E4%BD%A0%E4%BB%AC%E6%80%8E%E4%B9%88%E8%A7%A3%E5%86%B3%E7%9A%84">4、分布式事务知道吗? 你们怎么解决的?</h2>
<p data-line="290"><a href="https://mp.weixin.qq.com/s/yBquVKyKnhpy2yPxY-0eqA">【系统架构】大白话聊聊分布式事务</a></p>
<h2 data-line="291" id="5%E3%80%81%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E5%88%86%E5%BA%93%E5%88%86%E8%A1%A8%E5%95%8A">5、为什么要分库分表啊???</h2>
<p data-line="292"><a href="https://mp.weixin.qq.com/s/_5HALZWHfFfjd84WotDSiA">浅谈数据分库分表之道</a></p>
<h2 data-line="293" id="6%E3%80%81%E5%88%86%E5%B8%83%E5%BC%8F%E5%AF%BB%E5%9D%80%E6%96%B9%E5%BC%8F%E9%83%BD%E6%9C%89%E5%93%AA%E4%BA%9B%E7%AE%97%E6%B3%95%E7%9F%A5%E9%81%93%E4%B8%80%E8%87%B4%E6%80%A7hash%E5%90%97%E6%89%8B%E5%86%99%E4%B8%80%E4%B8%8Bjava%E5%AE%9E%E7%8E%B0%E4%BB%A3%E7%A0%81%E4%BD%A0%E8%8B%A5userId%E5%8F%96%E6%91%B8%E5%88%86%E7%89%87%EF%BC%8C%E9%82%A3%E6%88%91%E8%A6%81%E6%9F%A5%E4%B8%80%E6%AE%B5%E8%BF%9E%E7%BB%AD%E6%97%B6%E9%97%B4%E9%87%8C%E7%9A%84%E6%95%B0%E6%8D%AE%E6%80%8E%E4%B9%88%E5%8A%9E">6、分布式寻址方式都有哪些算法知道一致性hash吗?手写一下java实现代码??你若userId取摸分片,那我要查一段连续时间里的数据怎么办???</h2>
<p data-line="294"><a href="http://mp.weixin.qq.com/s/v7aB9Y56lgwWaI-56GuRnQ">一致性Hash算法基本原理与实现</a><br />
<a href="http://mp.weixin.qq.com/s/7p7CKh7aJBcxyA6GkKo_8Q">一致性hash原理与实现</a><br />
<a href="https://www.cnblogs.com/li3807/p/8461849.html">Mycat 分片规则详解–范围取模分片 - 汇元李雪 - 博客园</a></p>
<h2 data-line="298" id="7%E3%80%81%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%E5%88%86%E5%BA%93%E5%88%86%E8%A1%A8%E4%B8%BB%E9%94%AE%E9%97%AE%E9%A2%98%E6%9C%89%E4%BB%80%E4%B9%88%E5%AE%9E%E7%8E%B0%E6%96%B9%E6%A1%88">7、如何解决分库分表主键问题有什么实现方案??</h2>
<p data-line="300"><a href="https://mp.weixin.qq.com/s/sJxjnFNM0bvAtYvBozg--w">水平分库分表的关键步骤以及可能遇到的问题</a></p>
<h1 data-line="303" id="%E5%88%86%E5%B8%83%E5%BC%8F%E7%BC%93%E5%AD%98">分布式缓存</h1>
<h2 data-line="304" id="1%E3%80%81redis%E5%92%8Cmemcheched-%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%E4%B8%BA%E4%BB%80%E4%B9%88%E5%8D%95%E7%BA%BF%E7%A8%8B%E7%9A%84redis%E6%AF%94%E5%A4%9A%E7%BA%BF%E7%A8%8B%E7%9A%84memched%E6%95%88%E7%8E%87%E8%A6%81%E9%AB%98%E5%95%8A">1、redis和memcheched 什么区别为什么单线程的redis比多线程的memched效率要高啊?</h2>
<p data-line="306"><a href="http://mp.weixin.qq.com/s/F_umE6NsnAZFYRw61pjlIg">(实用篇)Redis和Memcached有什么区别?</a><br />
<a href="https://mp.weixin.qq.com/s/QcP77_VD9XZ2EUhhBSQw8A">Redis 和 Memcached 的区别</a></p>
<h2 data-line="309" id="2%E3%80%81redis%E6%9C%89%E4%BB%80%E4%B9%88%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E9%83%BD%E5%9C%A8%E5%93%AA%E4%BA%9B%E5%9C%BA%E6%99%AF%E4%B8%8B%E4%BD%BF%E7%94%A8%E5%95%8A">2、redis有什么数据类型都在哪些场景下使用啊?</h2>
<p data-line="311"><a href="http://mp.weixin.qq.com/s/V81hP9QI_boMjnpryxRDhA">Redis常见的5种不同的数据类型详解</a></p>
<h2 data-line="313" id="3%E3%80%81reids%E7%9A%84%E4%B8%BB%E4%BB%8E%E5%A4%8D%E5%88%B6%E6%98%AF%E6%80%8E%E4%B9%88%E5%AE%9E%E7%8E%B0%E7%9A%84redis%E7%9A%84%E9%9B%86%E7%BE%A4%E6%A8%A1%E5%BC%8F%E6%98%AF%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%9A%84%E5%91%A2redis%E7%9A%84key%E6%98%AF%E5%A6%82%E4%BD%95%E5%AF%BB%E5%9D%80%E7%9A%84%E5%95%8A">3、reids的主从复制是怎么实现的redis的集群模式是如何实现的呢redis的key是如何寻址的啊?</h2>
<p data-line="315"><a href="http://mp.weixin.qq.com/s/YQ-bFILykeGeZP1OBjISyQ">《Redis设计与实现》读书笔记(二十四) ——Redis主从复制原理</a><br />
<a href="http://mp.weixin.qq.com/s/SPrvOVx6ZkPJh8WRO3uARg">4.0即将出世,历数那些年redis集群方案</a><br />
<a href="http://mp.weixin.qq.com/s/_3B1cKDatTZ2uA__Lny5Fw">Redis 存储机制详解</a></p>
<h2 data-line="319" id="4%E3%80%81%E4%BD%BF%E7%94%A8redis%E5%A6%82%E4%BD%95%E8%AE%BE%E8%AE%A1%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81%E4%BD%BF%E7%94%A8zk%E5%8F%AF%E4%BB%A5%E5%90%97%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E5%95%8A%E8%BF%99%E4%B8%A4%E7%A7%8D%E5%93%AA%E4%B8%AA%E6%95%88%E7%8E%87%E6%9B%B4%E9%AB%98%E5%95%8A">4、使用redis如何设计分布式锁?使用zk可以吗?如何实现啊这两种哪个效率更高啊??</h2>
<p data-line="321"><a href="http://mp.weixin.qq.com/s/vAb9TVAyiCYsmLNPQLDxpw">解析分布式锁之redis实现</a><br />
<a href="http://mp.weixin.qq.com/s/7vUAFzrShRQ43pCapTqTog">基于Zk实现分布式锁</a><br />
<a href="http://mp.weixin.qq.com/s/dWgpIHamjZpu6aFj7OPD9w">分布式锁的多种实现方式~</a><br />
<a href="https://mp.weixin.qq.com/s/2BwsDoK2fyXOGCRt3SSYSg">基于Zookeeper的分布式锁的简单介绍及实现</a></p>
<h2 data-line="326" id="5%E3%80%81%E7%9F%A5%E9%81%93redis%E7%9A%84%E6%8C%81%E4%B9%85%E5%8C%96%E5%90%97%E9%83%BD%E6%9C%89%E4%BB%80%E4%B9%88%E7%BC%BA%E7%82%B9%E4%BC%98%E7%82%B9%E5%95%8A-%E5%85%B7%E4%BD%93%E5%BA%95%E5%B1%82%E5%AE%9E%E7%8E%B0%E5%91%A2">5、知道redis的持久化吗都有什么缺点优点啊? ?具体底层实现呢?</h2>
<p data-line="328"><a href="http://mp.weixin.qq.com/s/8AzzGUGw1AkjY-cHggSi1Q">redis的优缺点及使用场景</a><br />
<a href="http://mp.weixin.qq.com/s/XT0W567ZVwtKHg67QIV_jQ">Redis底层数据结构及对象类型实现</a></p>
<h2 data-line="331" id="6%E3%80%81redis%E8%BF%87%E6%9C%9F%E7%AD%96%E7%95%A5%E9%83%BD%E6%9C%89%E5%93%AA%E4%BA%9BLRU-%E5%86%99%E4%B8%80%E4%B8%8Bjava%E7%89%88%E6%9C%AC%E7%9A%84%E4%BB%A3%E7%A0%81%E5%90%A7">6、redis过期策略都有哪些LRU 写一下java版本的代码吧??</h2>
<p data-line="334"><a href="https://mp.weixin.qq.com/s/dxDadazH4b86Ku7r4fN6bA">Redis 数据库、键过期的实现</a><br />
<a href="http://mp.weixin.qq.com/s/fpupqLp-wjR8fQvYSQhVLg">Redis 内存为什么不宜过大</a></p>
<h1 data-line="340" id="%E5%88%86%E5%B8%83%E5%BC%8F%E6%9C%8D%E5%8A%A1%E6%A1%86%E6%9E%B6">分布式服务框架</h1>
<h2 data-line="341" id="1%E3%80%81%E8%AF%B4%E4%B8%80%E4%B8%8Bdubbo%E7%9A%84%E5%AE%9E%E7%8E%B0%E8%BF%87%E7%A8%8B%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83%E6%8C%82%E4%BA%86%E5%8F%AF%E4%BB%A5%E7%BB%A7%E7%BB%AD%E9%80%9A%E4%BF%A1%E5%90%97">1、说一下dubbo的实现过程注册中心挂了可以继续通信吗??</h2>
<p data-line="343"><a href="http://mp.weixin.qq.com/s/ScwcDE-YZ8qNWNOd3ZhW8w">Dubbo之注册与发现</a></p>
<h2 data-line="345" id="2%E3%80%81zk%E5%8E%9F%E7%90%86%E7%9F%A5%E9%81%93%E5%90%97zk%E9%83%BD%E5%8F%AF%E4%BB%A5%E5%B9%B2%E4%BB%80%E4%B9%88Paxos%E7%AE%97%E6%B3%95%E7%9F%A5%E9%81%93%E5%90%97%E8%AF%B4%E4%B8%80%E4%B8%8B%E5%8E%9F%E7%90%86%E5%92%8C%E5%AE%9E%E7%8E%B0">2、zk原理知道吗zk都可以干什么Paxos算法知道吗?说一下原理和实现??</h2>
<p data-line="347"><a href="http://mp.weixin.qq.com/s/lUheJrPbTLVqW5c0qOu_Sw">Zookeeper工作原理</a></p>
<h2 data-line="349" id="3%E3%80%81dubbo%E6%94%AF%E6%8C%81%E5%93%AA%E4%BA%9B%E5%BA%8F%E5%88%97%E5%8C%96%E5%8D%8F%E8%AE%AEhessian-%E8%AF%B4%E4%B8%80%E4%B8%8Bhessian%E7%9A%84%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84PB%E7%9F%A5%E9%81%93%E5%90%97%E4%B8%BA%E5%95%A5PB%E6%95%88%E7%8E%87%E6%98%AF%E6%9C%80%E9%AB%98%E7%9A%84%E5%95%8A">3、dubbo支持哪些序列化协议?hessian 说一下hessian的数据结构PB知道吗为啥PB效率是最高的啊??</h2>
<p data-line="351"><a href="http://mp.weixin.qq.com/s/2wjyTC-XWgC_AcHWse9hfw">Dubbo中使用高效的Java序列化(Kryo和FST)</a><br />
<a href="https://www.zhihu.com/question/24623031?utm_source=wechat_search&amp;utm_medium=organic">Hessian 矩阵的特征值有什么含义? - 知乎</a></p>
<h2 data-line="354" id="4%E3%80%81%E7%9F%A5%E9%81%93netty%E5%90%97%E2%80%99netty%E5%8F%AF%E4%BB%A5%E5%B9%B2%E5%98%9B%E5%91%80NIOBIOAIO-%E9%83%BD%E6%98%AF%E4%BB%80%E4%B9%88%E5%95%8A%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%E5%95%8A">4、知道netty吗’netty可以干嘛呀NIO,BIO,AIO 都是什么啊有什么区别啊?</h2>
<p data-line="356"><a href="http://mp.weixin.qq.com/s/3LmsDHJkjs3R60kDehbqPA">BIO,NIO,AIO编程比较</a></p>
<h2 data-line="358" id="5%E3%80%81dubbo%E5%A4%8D%E5%88%B6%E5%9D%87%E8%A1%A1%E7%AD%96%E7%95%A5%E5%92%8C%E9%AB%98%E5%8F%AF%E7%94%A8%E7%AD%96%E7%95%A5%E9%83%BD%E6%9C%89%E5%93%AA%E4%BA%9B%E5%95%8A%E5%8A%A8%E6%80%81%E4%BB%A3%E7%90%86%E7%AD%96%E7%95%A5%E5%91%A2">5、dubbo复制均衡策略和高可用策略都有哪些啊动态代理策略呢?</h2>
<p data-line="360"><a href="http://mp.weixin.qq.com/s/Rl4I6rBsNcid8fdFr81iEw">Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)</a></p>
<h2 data-line="362" id="6%E3%80%81%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E8%BF%9B%E8%A1%8C%E7%B3%BB%E7%BB%9F%E6%8B%86%E5%88%86%E5%95%8A%E6%8B%86%E5%88%86%E4%B8%8D%E7%94%A8dubbo%E5%8F%AF%E4%BB%A5%E5%90%97%E2%80%99dubbo%E5%92%8Cthrift%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%E5%95%8A">6、为什么要进行系统拆分啊拆分不用dubbo可以吗’dubbo和thrift什么区别啊?</h2>
<p data-line="364"><a href="http://mp.weixin.qq.com/s/I8ZGA8a3mQxWJgyJq2JHyg">浅谈Thrift内部实现原理</a><br />
<a href="http://mp.weixin.qq.com/s/ZQGrs4LfyrK2YZeT1geU8Q">Thrift连接池那点事</a></p>
<h1 data-line="372" id="%E5%88%86%E5%B8%83%E5%BC%8F%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97">分布式消息队列</h1>
<h2 data-line="373" id="1%E3%80%81%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BD%BF%E7%94%A8%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97%E5%95%8A%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97%E6%9C%89%E4%BB%80%E4%B9%88%E4%BC%98%E7%82%B9%E5%92%8C%E7%BC%BA%E7%82%B9%E5%95%8A">1、为什么使用消息队列啊消息队列有什么优点和缺点啊?</h2>
<ul>
<li><a href="http://mp.weixin.qq.com/s/cNKFuXnBxtBdJx77BuXdWQ">消息队列在分布式系统中的应用</a></li>
<li><a href="http://mp.weixin.qq.com/s/l5tPD10y9lMOGlaOglgATg">系统引入消息队列的思考</a></li>
</ul>
<h2 data-line="377" id="2%E3%80%81%E5%A6%82%E4%BD%95%E4%BF%9D%E8%AF%81%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97%E7%9A%84%E9%AB%98%E5%8F%AF%E7%94%A8%E5%95%8A%E5%A6%82%E4%BD%95%E4%BF%9D%E8%AF%81%E6%B6%88%E6%81%AF%E4%B8%8D%E8%A2%AB%E9%87%8D%E5%A4%8D%E6%B6%88%E8%B4%B9%E5%95%8A">2、如何保证消息队列的高可用啊如何保证消息不被重复消费啊</h2>
<ul>
<li><a href="http://mp.weixin.qq.com/s/6lXQC0r6RzLcE45k5fo-Xg">再谈消息队列技术</a></li>
<li><a href="http://mp.weixin.qq.com/s/GfbSJRzAXgNsOEHzSYYnmA">消息队列设计精要</a></li>
</ul>
<h2 data-line="380" id="3%E3%80%81kafka-%EF%BC%8Cactivemqrabbitmq-%EF%BC%8Crocketmq%E9%83%BD%E6%9C%89%E4%BB%80%E4%B9%88%E4%BC%98%E7%82%B9%EF%BC%8C%E7%BC%BA%E7%82%B9%E5%95%8A">3、kafka ,activemq,rabbitmq ,rocketmq都有什么优点,缺点啊???</h2>
<ul>
<li>
<p data-line="381"><a href="http://mp.weixin.qq.com/s/p2nWHEo88oCiXMF6NwBfWA">【中间件】消息队列(一):RabbitMQ、ActiveMQ、Kafka和Redis</a></p>
</li>
<li>
<p data-line="383"><a href="http://mp.weixin.qq.com/s/6PmcXJZVyWYZPssveeNkIw">阿里分布式消息中间件RocketMQ的设计思路与技术细节</a></p>
</li>
</ul>
<h2 data-line="384" id="4%E3%80%81%E5%A6%82%E6%9E%9C%E8%AE%A9%E4%BD%A0%E5%86%99%E4%B8%80%E4%B8%AA%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97%EF%BC%8C%E8%AF%A5%E5%A6%82%E4%BD%95%E8%BF%9B%E8%A1%8C%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1%E5%95%8A%E8%AF%B4%E4%B8%80%E4%B8%8B%E4%BD%A0%E7%9A%84%E6%80%9D%E8%B7%AF">4、如果让你写一个消息队列,该如何进行架构设计啊?说一下你的思路</h2>
<ul>
<li><a href="http://mp.weixin.qq.com/s/ZjYXQpBE9uL4q99xA76iBw">互联网业务场景下消息队列架构</a></li>
<li><a href="http://mp.weixin.qq.com/s/qZJYCsy6UK1ePHFQr22E5Q">大型网站架构系列:消息队列</a></li>
</ul>
<h1 data-line="391" id="%E5%88%86%E5%B8%83%E5%BC%8F%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E">分布式搜索引擎</h1>
<h2 data-line="392" id="1%E3%80%81es%E7%9A%84%E5%B7%A5%E4%BD%9C%E8%BF%87%E7%A8%8B%E5%AE%9E%E7%8E%B0%E6%98%AF%E5%A6%82%E4%BD%95%E7%9A%84%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E5%88%86%E5%B8%83%E5%BC%8F%E7%9A%84%E5%95%8A">1、es的工作过程实现是如何的?如何实现分布式的啊</h2>
<ul>
<li>
<p data-line="394"><a href="http://mp.weixin.qq.com/s/k_FjSOqZmTaCknBRwaiw7Q">Elasticsearch 架构以及源码概览</a></p>
</li>
<li>
<p data-line="396"><a href="http://mp.weixin.qq.com/s/gqxeNWjiVs2p0H9TCKWnEg">从Elasticsearch来看分布式系统架构设计</a></p>
</li>
<li>
<p data-line="398"><a href="http://mp.weixin.qq.com/s/XPZtSiSwrsiaIuwFWYzStw">Elasticsearch基础概念理解</a></p>
</li>
</ul>
<h2 data-line="400" id="2%E3%80%81es%E5%9C%A8%E6%95%B0%E6%8D%AE%E9%87%8F%E5%BE%88%E5%A4%A7%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B-%E6%95%B0%E5%8D%81%E4%BA%BF%E7%BA%A7%E5%88%AB%E5%A6%82%E4%BD%95%E6%8F%90%E9%AB%98%E6%9F%A5%E8%AF%A2%E6%95%88%E7%8E%87%E5%95%8A">2、es在数据量很大的情况下( 数十亿级别)如何提高查询效率啊?</h2>
<ul>
<li>
<p data-line="402"><a href="http://mp.weixin.qq.com/s/PxfEYYGnjC0nx_q2GpNISQ">基于Elasticsearch构建千亿流量日志搜索平台实战</a></p>
</li>
<li>
<p data-line="404"><a href="http://mp.weixin.qq.com/s/z6C8adcSJ-uKOgUG9z8iZQ">大数据主题分享第三期 | 基于ELK的亿级实时日志分析平台实践</a></p>
</li>
</ul>
<h2 data-line="406" id="3%E3%80%81es%E7%9A%84%E6%9F%A5%E8%AF%A2%E6%98%AF%E4%B8%80%E4%B8%AA%E6%80%8E%E4%B9%88%E7%9A%84%E5%B7%A5%E4%BD%9C%E8%BF%87%E7%A8%8B%E5%BA%95%E5%B1%82%E7%9A%84lucence%E4%BB%8B%E7%BB%8D%E4%B8%80%E4%B8%8B%E5%91%97%E5%80%92%E6%8E%92%E7%B4%A2%E5%BC%95%E7%9F%A5%E9%81%93%E5%90%97es%E5%92%8Cmongdb%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%E5%95%8A%E9%83%BD%E5%9C%A8%E4%BB%80%E4%B9%88%E5%9C%BA%E6%99%AF%E4%B8%8B%E4%BD%BF%E7%94%A8%E5%95%8A">3、es的查询是一个怎么的工作过程?底层的lucence介绍一下呗倒排索引知道吗?es和mongdb什么区别啊都在什么场景下使用啊?</h2>
<ul>
<li>
<p data-line="408"><a href="http://mp.weixin.qq.com/s/osOggCYvzun6X6yquD7cYg">浅析ElasticSearch原理</a></p>
</li>
<li>
<p data-line="410"><a href="http://mp.weixin.qq.com/s/dhawxmamddBSTFRkXovEyw">索引技术简介</a></p>
</li>
<li>
<p data-line="412"><a href="https://mp.weixin.qq.com/s/I5xlel4OKXJM41Dd56KUqw">给 Java 开发者的 10 个大数据工具和框架</a></p>
</li>
</ul>
<h1 data-line="416" id="%E9%AB%98%E5%B9%B6%E5%8F%91%E9%AB%98%E5%8F%AF%E7%94%A8%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1">高并发高可用架构设计</h1>
<h2 data-line="417" id="1%E3%80%81%E5%A6%82%E4%BD%95%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E9%AB%98%E5%B9%B6%E5%8F%91%E9%AB%98%E5%8F%AF%E7%94%A8%E7%B3%BB%E7%BB%9F">1、如何设计一个高并发高可用系统</h2>
<ul>
<li>
<p data-line="419"><a href="http://mp.weixin.qq.com/s/7nfSvxZ4vJAxpIN5rCdaCw">究竟啥才是互联网架构“高可用”</a></p>
</li>
<li>
<p data-line="421"><a href="http://mp.weixin.qq.com/s/VOMynCK1XpEwK_NPg6LmWQ">架构学习之路——高可用高并发系统设计原则</a></p>
</li>
</ul>
<h2 data-line="424" id="2%E3%80%81%E5%A6%82%E4%BD%95%E9%99%90%E6%B5%81%E5%B7%A5%E7%A8%8B%E4%B8%AD%E6%80%8E%E4%B9%88%E5%81%9A%E7%9A%84%EF%BC%8C%E8%AF%B4%E4%B8%80%E4%B8%8B%E5%85%B7%E4%BD%93%E5%AE%9E%E7%8E%B0">2、如何限流?工程中怎么做的,说一下具体实现</h2>
<ul>
<li>
<p data-line="426"><a href="http://mp.weixin.qq.com/s/xB-AsxCC2KYoW1nO88-Iqg">【高并发系列】分布式高并发限流系统应用设计</a></p>
</li>
<li>
<p data-line="428"><a href="http://mp.weixin.qq.com/s/8JMA-a2d2vuMow8APyPS0A">高并发系统限流中的漏桶算法和令牌桶算法,通过流量整形和速率限制提升稳定性</a></p>
</li>
</ul>
<ul>
<li><a href="http://mp.weixin.qq.com/s/7S4vxHgI4kRRER3ATGTnkg">高手进阶之亿级流量电商系统的大型高并发与高可用缓存</a></li>
</ul>
<h2 data-line="435" id="3%E3%80%81%E7%BC%93%E5%AD%98%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E7%9A%84%E7%BC%93%E5%AD%98%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%BD%93%E4%BC%9A%E9%80%A0%E6%88%90%E4%BB%80%E4%B9%88%E5%90%8E%E6%9E%9C">3、缓存如何使用的缓存使用不当会造成什么后果?</h2>
<ul>
<li>
<p data-line="437"><a href="http://mp.weixin.qq.com/s/jy1q3OnbANEmQR750f0S6Q">高并发架构技术|缓存失效、缓存穿透问题 PHP 代码解决</a></p>
</li>
<li>
<p data-line="439"><a href="http://mp.weixin.qq.com/s/s8jf0UeQfKJ_WqGDBTzE4A">缓存穿透,缓存雪崩,缓存并发处理策略</a></p>
</li>
</ul>
<h2 data-line="441" id="4%E3%80%81%E5%A6%82%E4%BD%95%E7%86%94%E6%96%AD%E5%95%8A%E7%86%94%E6%96%AD%E6%A1%86%E6%9E%B6%E9%83%BD%E6%9C%89%E5%93%AA%E4%BA%9B%E5%85%B7%E4%BD%93%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86">4、如何熔断啊?熔断框架都有哪些?具体实现原理</h2>
<ul>
<li>
<p data-line="442"><a href="https://mp.weixin.qq.com/s/sr_tiNnHsAaDmeyKOPiP5g">熔断器设计模式</a></p>
</li>
<li>
<p data-line="444"><a href="http://mp.weixin.qq.com/s/uF09oVzf_1Tz_ZnHXQjyzA">降级特技之使用Hystrix实现降级和熔断—《亿级流量网站架构核心技术》</a></p>
</li>
<li>
<p data-line="446"><a href="http://mp.weixin.qq.com/s/TyxsF0OeXbDyEaefeYF4FQ">熔断器 Hystrix 源码解析 —— 命令合并执行</a></p>
</li>
</ul>
</body>
</html>
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/ajoe/ycyg.git
git@gitee.com:ajoe/ycyg.git
ajoe
ycyg
ycyg
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891