2019年4月
做一個善良的人,爲羣衆謀幸福————高爾基
2019年4月1日
- 產生死鎖的四個必要條件:
互斥條件:一個資源每次只能被一個進程使用。
請求與保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。
不剝奪條件:進程已獲得的資源,在末使用完之前,不能強行剝奪。
循環等待條件:若干進程之間形成一種頭尾相接的循環等待資源關係。 - 數據庫連接池連接數 = ((核心數 * 2) + 有效磁盤數)
- 線程池
如果是IO密集型應用,則線程池大小設置爲2N+1;
如果是CPU密集型應用,則線程池大小設置爲N+1;
N代表CPU的核數。
tasks :每秒的任務數,假設爲500~1000
taskcost:每個任務花費時間,假設爲0.1s
responsetime:系統允許容忍的最大響應時間,假設爲1s
2019年4月8日
- 阿里約了下午4點面試
- 還是要咋是紮實基礎呀,有一個問題沒回答好。
- 申請參加4月27日ACM省賽
- Java開發數據庫大作業的內容
2019年4月9日
- 公平鎖/非公平鎖(多線程執行順序的維度)
公平鎖:加鎖前先查看是否有排隊等待的線程,有的話優先處理排在前面的線程,先來先得。
非公平所:線程加鎖時直接嘗試獲取鎖,獲取不到就自動到隊尾等待。
2019年4月13日
- 由於volatile保證了可見性,那麼在每個線程中對inc自增完之後,在其他線程中都能看到修改後的值,所以有10個線程分別進行了1000次操作,那麼最終inc的值應該是1000*10=10000。這裏面就有一個誤區了,volatile關鍵字能保證可見性沒有錯,但是上面的程序錯在沒能保證原子性。可見性只能保證每次讀取的是最新的值,但是volatile沒辦法保證對變量的操作的原子性。
2019年4月14日
- linux docker下載器
docker run --name ccaa -d -p 6800:6800 -p 6080:6080 moerats/ccaa:latest
大體信息如次
AriaNg界面:http://ip:6080
拜訪界面用戶名暗碼別離爲:admin、moerats
Aria2密匙:moerats
Filebrowser拜訪地點:http://ip:6080/admin
2019年4月16日
- 數據庫隔離級別問題
RAED UNCOMMITED:使用查詢語句不會加鎖,可能會讀到未提交的行(Dirty Read);
READ COMMITED:只對記錄加記錄鎖,而不會在記錄之間加間隙鎖,所以允許新的記錄插入到被鎖定記錄的附近,所以再多次使用查詢語句時,可能得到不同的結果(Non-Repeatable Read);
REPEATABLE READ:多次讀取同一範圍的數據會返回第一次查詢的快照,不會返回不同的數據行,但是可能發生幻讀(Phantom Read);
SERIALIZABLE:InnoDB 隱式地將全部的查詢語句加上共享鎖,解決了幻讀的問題;
2019年4月19日
- 正式收到阿里offer
2019年4月20日
- 已收到正式郵件offer。
我除了微軟Azure之外沒有別的面試了,也不再投遞新的,大概率是來阿里的。原因:
a. 是技術棧 阿里Java,騰訊C++爲主的全棧,微軟是C++和Python。
b. 地域原因,阿里在杭州,騰訊深圳,微軟上海,個人對杭州比較熟悉,也有家人在杭州。
c. 挑戰方面的話,WXG支付業務,阿里中臺,微軟的容器開發算不同方面,但是都算很感興趣的內容,值得學的內容非常多。 - 基本信息和相關疑問。
a. 入職時間: 大約6月25-28日,如果需要調整可以討論下。
b. 入職提前一段時間聯繫誰?
c. 實習期間主要任務,轉正之後主要工作內容。工作時間?
d. 問了HR,說5年以上,3-5年,3年以下接近1:1:1,會有導師帶嗎。
e. Linux使用率。 - 技術棧相關。
a. 目前技術棧比較平均,C++/Java/Python/Golang。
b. 看過的書,學校裏的課,機器學習基礎+花書+西瓜書,leetcode,JVM虛擬機,effective C++。
c. 目前在狂補的,Java設計模式,Spring那一套,併發編程和相關書。
d. 需要優先了解的知識,阿里開源的十幾個中間件。
d. 想問需要補那些知識點。相關文檔和書本推薦。
2019年4月21日
- Dao和Service層都是可以實現模板的。
2019年4月23日
- JSP分頁的實現
‘’’
int l = 1, r = totalPage;
if (totalPage > 5) {
if (pageCode <= 3) {
l = 1; r = 5;
} else if (pageCode >= r-2) {
l = totalPage - 4; r = totalPage;
} else {
l = pageCode - 2; r = pageCode + 2;
}
}
for (int i=l; i<=r; i++) {
out.print("<li " + ((pageCode == i) ? “class=“active”” : “”) + “>”);
out.print("<a href="" + nowPath + “?” + “pageCode=” + i + “”>" + i + “”);
out.print("");
}
‘’’
2019年4月27日
- ACM省賽,除0的時候一定要想清楚
- VPS服務器沒有開防火牆
2019年4月29日
- 高頻使用容器命令
apt-get update
wget -qO- https://get.docker.com/ | sh
wget -N --no-check-certificate “https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh” && chmod +x tcp.sh && ./tcp.sh
docker pull uifd/ui-for-docker
docker run -it -d --name docker-web -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock docker.io/uifd/ui-for-docker
mkdir -p ./mysql/data ./mysql/logs ./mysql/conf
cd mysql
docker pull mysql:5.6
docker run -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
docker exec -it mysql /bin/bash
docker run -e ‘ACCEPT_EULA=Y’ -e ‘SA_PASSWORD=LIzhimin123’ -p 1433:1433 --name sql1 -d mcr.microsoft.com/mssql/server:2017-latest
CREATE DATABASE zstu DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE userTest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
attrib -s -a -h D:\mysql
‘’’
http://bhs.proof.ovh.net/files/10Gb.dat
100g http://repos.mia.lax-noc.com/speedtests/100gb.bin
10t http://repos.mia.lax-noc.com/speedtests/10tb.bin
2019年4月30日
- 時間戳靈活多變,應該交由前端處理
2019年5月4日
- 使用Windows的童鞋要特別注意:
千萬不要使用Windows自帶的記事本編輯任何文本文件。原因是Microsoft開發記事本的團隊使用了一個非常弱智的行爲來保存UTF-8編碼的文件,他們自作聰明地在每個文件開頭添加了0xefbbbf(十六進制)的字符,你會遇到很多不可思議的問題,比如,網頁第一行可能會顯示一個“?”,明明正確的程序一編譯就報語法錯誤,等等,都是由記事本的弱智行爲帶來的。建議你下載Notepad++代替記事本,不但功能強大,而且免費!記得把Notepad++的默認編碼設置爲UTF-8 without BOM即可。 - C++寫一個模擬線程任務調度的工具
2019年5月6日
2019年5月7日
- maven版本不對會導致eclipse檢測不到setting.xml文件
2019年5月10日
java環境報錯
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.
- 打開系統變量Path,發現第一個路徑是:C:\ProgramData\Oracle\Java\javapath;
原來運行時,系統自動尋找這個路徑下面的javapath,當然是會出錯了; - 解決方法:將我們設置的JDK、JRE地址,放在第一個路徑的位置,就成功解決了。