2019 7 10秋招學習筆記

2021-09-25 04:03:27 字數 1508 閱讀 8022

解釋參考:

#include

#include

#include

#include

using namespace std;

enum tag

;typedef

struct node

}node;

typedef

struct tagnode tagnode;

//前序遍歷,根左右

vector<

int>

preorder

(node* root)

else

}return res;

}//中序遍歷,左根右

vector<

int>

inorder

(node* root)

else

}return res;

}//後序遍歷,左右根

vector<

int>

postorder

(node* root)

tagnode = s.

top();

s.pop();

if(tagnode.tag == tag:

:left)

else

}return res;

}//二叉樹層序遍歷

vector<

int>

level

(node* root)

return res;

}//輸出遍歷結果

void

visit

(vector<

int> vec)

printf

("\n");

}int

main()

什麼是事務:作為單個邏輯工作單元執行的一系列操作,要麼完全的執行,要麼完全的不執行。

事務是併發控制的基本單位。

事物的四個屬性(acid):

原子性:事務中的操作要麼不做,要麼全做

隔離性:乙個事物的執行不能被其他事物干擾

一致性:乙個事務執行之前和執行之後都必須處於一致性狀態

永續性:乙個事物一旦提交,對資料庫的改變是永久的

一般情況下,通過執行commit(提交)或rollback(回滾)語句來終止事務。

由於併發操作帶來的資料不一致性:

定義四個隔離級別以避免上面的併發問題:

可以優先考慮把資料庫系統的隔離級別設定為read committed,可以避免髒讀並且有較好的的併發效能。但是會導致不可重複讀,幻讀和第二類更新丟失的問題,這些個別場合可以由程式採用悲觀鎖或樂觀鎖來控制。

隔離級別

髒讀不可重複讀

幻讀讀未提交(read uncommitted)√√

√讀已提交(read committed)x√

√可重複讀(repeatable read)xx

√可序列化(serializable)xx

x

2019 7 2,3秋招學習筆記

當返回乙個物件不可被避免的時候,因返回的過程中產生的臨時物件,構造和析構仍被執行所以會影響到程式效率。但是可以通過特定的寫法,搭配支援 return value optimization 的c 編譯器,只需要付出乙個構造函式呼叫的代價即可完成返回值賦值。並且可以將函式宣告為inline,從而消除呼叫...

2019 7 1秋招面經學習筆記

樂觀鎖 是總是假定最好的情況,每次別人去拿資料都認為別人不會去修改,所以不用上鎖。但是會在更新的時候判斷一下在此期間別人有沒有去更新這個資料。實現方法有二,版本號機制和cas演算法。樂觀鎖是用於多讀的型別,這樣可以提高資料吞吐量。在多寫的情況下每次衝突發生,都會retry,反而降低效能。悲觀鎖總是假...

秋招和春招

和朋友最近聊起了秋招的心態,才發現以前想的事情有些過於簡單。找工作考慮的問題遠遠不是公司是否是大廠這麼簡單。一下的感想都有乙個大前提 我和我朋友都是普通人,不是聖人,沒有家財萬貫,未來都是需要自己一點一點積攢起來的。在這個大前提以外的人可以不用看了。首先是工作地點。1 你選擇的工作地點會決定你工作之...