https://avatars.githubusercontent.com/u/6058558

程式狂想筆記

SQL子查詢筆記(相關子查詢/非相關子查詢)

之前用子查詢第二層,竟然抓不到外層的欄位
已經找到 終於知道為什麼子查詢沒辦法抓取外面的表 | 程式狂想筆記
有時候跟本不知道為什麼?後來問公司的前軰,他說第二層就抓不到最外一層
但這種強制記這種觀念感覺不是很好,今天 Google 查一下原因
在這邊整理一下 XD

不同電腦時間同步方法之一(NTP 同步)

最近做生理監測設定,組長發現廠商時間上傳時間跟HIS不太合理
就是測量時間會大於上傳時間
這怎麼那麼奇怪!!!但用想也知道是設備跟Server不同步
這時候NTP就派上用場了
終於用在實務上

不用寫程式也能做Window Service(NSSM)

最近常常執行chat server,需要常常自己開
後來有時忘記開,怕之後有忘記開還有下面執行列多一個很討厭
所以我上網找了一下Window Service有什麼方法可以做
竟然看到不用寫程式,但前提是需要裝這個工具
不多說,先來筆記

取得重覆資料最新SQL

Backend 台灣 (Backend Tw)看到
如下

1
2
3
4
SELECT m1.*
FROM messages m1 LEFT JOIN messages m2
 ON (m1.name = m2.name AND m1.id < m2.id)
WHERE m2.id IS NULL;

這寫法很有趣XD

Triton Ho:
Group by是 O(n log n)
Left join 是O(n^2)

George Li Chino Lin :
實際上我如果把資料降到10比左右, 這兩種query 的效能就沒有明顯差異~
http://sqlfiddle.com/#!9/296a6a/1
http://sqlfiddle.com/#!9/296a6a/2
但是筆數拉到300左右就有明顯差異了~
所以合理判斷資料量上升~ 效能差距會越明顯~
資料更大的話基本上沒辦法用這平台了XD

Chino Lin:
我自己用一個表約100萬筆來測試
使用left join方式 跑到超過6分鐘沒等下去 ,
但是用子查詢groupby 大約1秒就跑完
後來改成4萬筆left join跑了2分15才跑完
子查詢+groupby也是大約1秒就跑完
我的是mysql5.6
那我看還是用子查詢+groupby就好…….
可能是5.0太舊不值得參考了

Exit Codes 程式回傳錯誤碼

看到上一篇Crontab 執行特定目錄 « 進擊的程式新手
我就想想我寫的程式如何寫出err訊息
然後在Bitbucket測試程式可以跑

後來Google到Exit Codes - Shell Scripting Tutorial
原來每一個程式語言有類似System.exit(int i)這個東西
0表示程式正常,其他值表式程式有錯誤

這時候zsh前面會有x表示

理解 Exit Code 並學會如何在 Bash 腳本中使用 - 壹讀
Exit Codes - Shell Scripting Tutorial

Crontab 執行特定目錄

1
50 * * * * cd /home/me/.flexget && sh /home/me/.flexget/gitpull.sh >/dev/null 2>&1

假如前面沒有做cd動作,執行目錄不會是在相同目錄
在此筆記,以後就不用查了
直接看筆記XD