人確實是自私的動物,但為了極少數的人,人是能犧牲自己的。這種莫名其妙的感情就是愛,是人存在的證據。在linux下sqlite3使用orm運算元據經常會出現執行緒鎖死無法寫入,即使給了sqlite3許可權還是會這樣,如果想在linux下使用sqlite,需要加入執行緒鎖,所以決定改用mysql。
初始化鏈結的時候會報錯
specified key was too long; max key length is 767 bytes
django 2.1.1 不相容 mysql5.5,使用mysql5.7或者mysql8.0即可,phpstudy自帶mysql8.0
高併發情況下,可以適當加大mysql的連線數
修改my.ini
[mysql]
default-character-set=utf8
[mysqld]
port=3306
character-set-server=utf8
default-storage-engine=innodb
max_connections=512
max_connect_errors=10
max_allowed_packet = 500m
orm大量的鏈結運算元據庫,會無法鏈結到資料庫,每次在使用orm運算元據的時候,可以先執行關閉不可用的mysql鏈結
def close_old_connections():
for conn in connections.all():
conn.close_if_unusable_or_obsolete()
或則維持傳送心跳包
def heartbeat():
while 1:
try:
heartcheck = list(url.objects.all())
# 這裡如果獲取資料失敗觸發心跳檢測
if heartcheck == :
time.sleep(60)
else:
time.sleep(2)
# 維持 2 s 傳送一次心跳包檢測連線,如果失敗則清洗連線
except:
print('[+ heartbeat] 維持心跳包失敗,清洗失敗鏈結')
close_old_connections()
給這個函式開乙個執行緒讓他掛著跑。 多執行緒與高併發
blocked 鎖池 timed waiting 定時等待 waiting 等待 terminated 禁止指令重排序 記憶體屏障 在單例雙重檢查中,不加會出現使用半初始化的值,也就是還未附初始值,指令重排導致的 類載入與指令重排的知識 public class spinlock while fla...
多執行緒與高併發 一
建立乙個執行緒的兩種方式 繼承threadclass mythread extends thread newmythread start 實現runnable介面class mythread implements runnable newthread new myrun start 面試時候有時候會...
多執行緒與高併發(一)
官方概念 幾乎所有的作業系統都支援同時執行多個任務,乙個任務通常是乙個程式,每個執行中的程式就是乙個程序。當乙個程式執行時,內部可能包含了多個順序執行流,每個順序執行流就是乙個執行緒。而執行緒呢,乙個程序裡最小的執行單元就叫乙個執行緒。簡單理解就是乙個程式不同的執行路徑。示例 public clas...