Skip to content

Commit b92d450

Browse files
committed
change image
1 parent f3daa4c commit b92d450

File tree

5 files changed

+26
-22
lines changed

5 files changed

+26
-22
lines changed

docs/CodingInterviews.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
227227
int leftLength = i - inStart;//左子树长度
228228
treeNode.left = reConstructBinaryTree(pre, preStart + 1, preStart+leftLength, in, inStart, i-1);
229229
treeNode.right = reConstructBinaryTree(pre, preStart +leftLength+1, preEnd, in, i+1, inEnd);
230+
break;
230231
}
231232
}
232233
return treeNode;
@@ -242,11 +243,9 @@ public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
242243
```java
243244
Stack<Integer> stack1 = new Stack<Integer>();
244245
Stack<Integer> stack2 = new Stack<Integer>();
245-
246246
public void push(Integer number) {
247247
stack1.push(number);
248248
}
249-
250249
public Integer pop() {
251250
if (stack2.size()>0) {
252251
return stack2.pop();
@@ -289,9 +288,9 @@ int minNumberInRotateArray(int[] array) {
289288
}
290289
return min;
291290
}
292-
if ( array[mid]>=array[start]){
291+
if ( array[mid]>=array[start]){//左半部分是递增的,那么就去掉左半部分
293292
start = mid;
294-
} else if(array[mid]<=array[end]) {
293+
} else if(array[mid]<=array[end]) {//右半部分是递增的,那么就去掉右半部分
295294
end = mid;
296295
}
297296
}

docs/MySQLNote.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ innodb 引擎首先开启事务,获得一个事务ID(是一直递增的),根
8787

8888
通知MySQL server已经更新操作写入到redo log 了,随时可以提交,将执行的SQL写入到bin log日志,将redo log改成commit状态,事务提交成功。
8989

90-
#### undo log
90+
##### undo log
9191

9292
主要是保证事务的原子性,事务执行失败就回滚,用于在事务执行失败后,对数据回滚。
9393

@@ -113,7 +113,7 @@ innodb 引擎首先开启事务,获得一个事务ID(是一直递增的),根
113113

114114
缺点是会造成内存脏页,后台线程会自动对脏页刷盘,或者是淘汰数据页时刷盘,此时会暂时查询操作,影响查询。
115115

116-
#### 二段提交制
116+
##### 二段提交制是什么?
117117

118118
更新时,先改内存中的数据页,将更新操作写入redo log日志,此时redo log进入prepare状态,然后通知MySQL Server执行完了,随时可以提交,MySQL Server将更新的SQL写入bin log,然后调用innodb接口将redo log设置为提交状态,更新完成。
119119

@@ -236,13 +236,13 @@ https://blog.csdn.net/qq_41652863/article/details/98800650
236236

237237
mvcc主要适用于可重复读,可以解决幻读的问题。
238238

239-
innodb在解决幻读的问题主要是通MVVC 多版本并发版本控制来实现的
239+
innodb在解决幻读的问题主要是通MVVC 多版本并发版本控制来实现的
240240

241241
就是每一行数据中额外保存两个隐藏的列:
242242

243243
**插入或上次更新该行的事务ID**(删除也被认为是一次更新,只不过在代表删除的更新操作中,行中的特殊位被设置为将其标记为已删除。这个事务ID可以认为是数据行的修改版本号。)
244244

245-
**滚动指针**(指向undo log中用于事务回滚的日志记录)。
245+
**回滚指针**(指向undo log中用于事务回滚的日志记录)。
246246

247247
具体流程:
248248

docs/SystemDesign.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,11 @@ zookeeper里面会存上次生成id的时间戳,如果上次存储的时间戳
169169
**执行失败,回滚**
170170
如果超过时间还没有收到所有业务系统返回的结果,或者是有业务系统返回了执行失败的结果,那么协调者就认为执行失败了,通知各个业务系统进行回滚,如果此时网络出现阻塞,业务系统收不到通知,那么协调者就会一直重试发送回滚的指令。
171171

172-
缺点就是如果第二阶段网络发生了阻塞,协调者与业务系统断开了连接,协调者就只能一直去进行重试,发生回滚指令给业务系统,而业务系统会一直阻塞等待第二阶段的通知。
172+
**缺点**
173+
174+
1.就是如果第二阶段网络发生了阻塞,协调者与业务系统断开了连接,协调者就只能一直去进行重试,发生回滚指令给业务系统,而业务系统会一直阻塞等待第二阶段的通知。
175+
176+
2.假设协调者认定执行成功,在第二阶段给所有子系统发送Commit指令,收到指令的系统对事务进行提交,假设有一个系统与协调者之间的网络断开了,就会保持未提交状态,一直阻塞等待,协调者也只能对它进行一直发送commit指令。
173177

174178
其次是2PC 适用于**数据库层面的分布式事务场景**,如果事务中有上传一张图片或者发送一条短信,这些是没有相应的回滚操作的。
175179

docs/algorithm.md

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,13 @@ int[] sorted2(int[] array) {
6767
for(int i=1;i<array.length;i++) {
6868
//此时的0到都是排好序的序列了,把array[i]在0到i-1中找到一个合适的位置
6969
for(int j = i;j>0;j--) {
70-
if(array[j]<array[j-1]) {//小于就交换
71-
int temp = array[j];
72-
array[j] = array[j-1];
73-
array[j-1] = temp;
74-
} else {//如果是大于说明是已经处于排序好的序列中合适的位置了
75-
break;
76-
}
70+
if(array[j]<array[j-1]) {//小于就交换
71+
int temp = array[j];
72+
array[j] = array[j-1];
73+
array[j-1] = temp;
74+
} else {//如果是大于说明是已经处于排序好的序列中合适的位置了
75+
break;
76+
}
7777
}
7878
}
7979
return array;
@@ -88,16 +88,16 @@ int[] sorted2(int[] array) {
8888
int[] sorted3(int[] array) {
8989
if(array == null || array.length==0 || array.length==1) {return array;}
9090
for(int i= 0;i<array.length-1;i++) {
91-
int min = i;
91+
int minIndex = i;
9292
//每次遍历选出最小值,并且放在数组下标为i的位置
9393
for(int j = i+1;j<array.length;j++) {
94-
if(array[j]<array[min]){
95-
min = j;
94+
if(array[j]<array[minIndex]){
95+
minIndex = j;
9696
}
9797
}
9898
int temp = array[i];
99-
array[i] = array[min];
100-
array[min] = temp;
99+
array[i] = array[minIndex];
100+
array[minIndex] = temp;
101101
}
102102
return array;
103103
}
@@ -463,7 +463,8 @@ public static Integer findKByPickSort(int[] input, int k) {
463463
要么选择物品i,那么背包的容量就变为capcity-weight[i],然后继续对剩下的i-1的这些物品进行选择。
464464
总价值f(i,capacity) = value[i] +f(i-1,capcity-weight[i])
465465
要么不选择物品i,容量还是capcity,继续对剩下的i-1的物品进行选择
466-
总价值f(i,capacity) = f(i-1,capcity-weight[i])
466+
总价值f(i,capacity) = f(i-1,capcity)
467+
467468
```java
468469
int testKnapsack1(int[] value,int[] weight, int i, int capacity) {
469470
int result = 0;

static/qe222wewewqere.jpeg

86 Bytes
Loading

0 commit comments

Comments
 (0)