1. 程式人生 > >每日積累 8.4

每日積累 8.4

找到 其他 編寫 高並發 說明書 tree clas 內存 8.4

一、

1、mybatis或者ibatisoracle插入數據的時候,如果參數中有null值,需要指定jdbcType類型的參數(註意大小寫問題)

2、如果忽略contextConfigLocation此設定,則默認為“/WEB-INF/<servlet name>-servlet.xml”,其中<servlet name>Servlet 名替換

3、邏輯外鍵——在數據庫表中沒有明確的表示,但是在程序員看來就是外鍵。為了避免刪除一個數據的時候需要刪除與他相關聯的許多外鍵的麻煩,但是也會造成很多的垃圾數據

4、Dict_enable:設置數據是否有效,如果為0表示無效,1表示有效

二、

1、8005端口是與apach官網通訊用的

2、jar包沖突的時候,就近原則

3、Navigator:拷貝文件的時候的視圖,特別方便

4、構建項目的時候要有先後關系

5、瀏覽器允許跨域訪問但是獲取不到結果

6、Java中更改了配置或者文件需要重新進行install,方便其他工程的引入

7、Classpath的具體位置在target/classes

三、

1、路由的選擇:路徑的選擇

2、代理的作用:改變用戶的行為

3、lua是一種腳本語言,編寫nginx和Mysql proxy,也可以替代一部分的linux的腳本

4、Amoeba是國人開發,說明書為中文,基於mysql proxy,不用編程,配置兩個xml文件即可,對程序沒有侵入性

5、Mycat阿裏,基於mysqlProxy

6、schema在mybatis中代表驗證(數據庫)

7、Amoeba支持負載均衡,默認輪詢(和nginx一樣)

8、HA在計算機行業代表高可用

9、一定要備份,不要將原服務器的文件替換,原服務器的文件名後邊加上.bak

10、緩存只是一個復制數據

11、String通過json保存對象,存儲方便,但是修改比較難

12、list有序可重復,set無序不可重復,zset有序的set

13、redis只有重啟的時候才會從dump文件中加載,如果在啟動的情況下清空數據不會影響dump文件中的數據

14、分片不是redis提供的,而是jedis(api)提供的

15、數據傾斜

16、對配置文件要求:看懂,會改

17、緩存放常用的,不常修改的

18、Mapper.readTree(jsonData):將json對象轉換成jsonNode對象

19、如果自己try—catch,spring對service的事務作廢

20、修改之後不更新,首先將緩存刪除,重新編譯,如果不行,找到對應編譯的包,比較加載後的classes文件是否有了變更。還是不行就修改對應的文件名。

在進一步將整個項目清空緩存,重新編譯

21、被觀察者內部維護了一個觀察者的集合

22、事件機制——觀察者模式

23、Redis單機默認16個數據庫, 0~15 分布式不支持數據庫

五、

  在高並發海量數據時,就會發生問題,緩存雪崩(緩存穿透),有了緩存數據庫的壓力就非常小了,緩存服務宕機,海量的請求就湧向了數據庫,數據庫承受不了這麽大的請求,先開始不能響應,數據庫宕機,重啟緩存服務器,但是內存中沒有數據,但是用戶的請求又過來,緩存沒有數據,用戶的請求繼

續訪問數據庫。重啟數據庫,數據庫接著宕機。

拔網線,重啟數據庫服務器,重啟緩存服務器。服務都起來了,插網線,海量的請求湧入,緩存服務器沒數據,又湧向數據庫服務器,數據庫服務器接著宕機

Redis分布式存儲,當用戶第一次訪問數據庫時,返回前,把數據在redis中保存一份,redis會定時(1s)把內存中的數據保存到磁盤中。

每日積累 8.4