原创 【轉載】58到家數據庫30條軍規解讀

一、基礎規範 (1)必須使用InnoDB存儲引擎 解讀:支持事務、行級鎖、併發性能更好、CPU及內存緩存頁優化使得資源利用率更高   (2)必須使用UTF8字符集 解讀:萬國碼,無需轉碼,無亂碼風險,節省空間   (3)數據表、數據字段

原创 MySQL的enclosed-by和escaped-by

        在mysql使用過程中,我往往使用“load data infile”和“select into outfile”這兩種功能來快速“搬運”數據。細心的童鞋會發現這兩種SQL語句都有: line terminated by

原创 JAVA中如何解決高併發?

一、問題背景: 什麼是高併發? 併發就是可以使用多個線程或進程,同時處理(就是併發)不同的操作。 對於一些大型網站,比如門戶網站,如何面對大量用戶訪問、高併發請求?   二、如何解決高併發問題? 解決的辦法有以下這些: 1. 緩存:合理

原创 獲取最近n個月的年月列表

public static final String ISO_DATE_FORMAT = "yyyyMMdd"; /** * 獲取系統操作時間 * @param * @return

原创 《阿里巴巴Java開發手冊-v1.1》解讀(一)sql規約

1.   【強制】不要使用count(列名)或count(常量)來替代count(*),count(*)是SQL92 定義的標準統計行數的語法,跟數據庫無關,跟NULL 和非NULL 無關。        說明:count(*)會統計值

原创 binlog

binlog基本定義:       二進制日誌,也成爲二進制日誌,記錄對數據發生或潛在發生更改的SQL語句,並以二進制的形式保存在磁盤中;   binlog作用:       MySQL的作用類似於Oracle的歸檔日誌,可以用來查看數

原创 Java內存模型

Java內存模型即Java Memory Model,簡稱JMM。   一、主內存與工作內存: 1.Java內存模型中規定了所有的變量都存儲在主內存中,每條線程還有自己的工作內存。 2. 線程的工作內存中保存了該線程使用到的變量到主內存

原创 JavaCore/HeapDump文件及其分析方法

產生時間 Java程序運行時,有時會產生JavaCore及HeapDump文件,它一般發生於Java程序遇到致命問題的情況下。           有時致命問題發生後,Java應用不會死掉,還能繼續運行;           但有時致命

原创 DB主從一致性架構優化4種方法

DB主從一致性架構優化4種方法:           轉自58同城沈劍: http://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651959442&idx=1&sn=feb8ff75

原创 《阿里巴巴Java開發手冊-v1.1》解讀(三)索引規約

1.   【強制】業務上具有唯一特性的字段,即使是組合字段,也必須建成唯一索引。        說明:不要以爲唯一索引影響了insert速度,這個速度損耗可以忽略,但提高查找速度是明       顯的;另外,即使在應用層做了非常完善的校

原创 如何測量服務器之間的時間差?

問題: 每臺服務器都有自己的本地時鐘,跨服務器的本地時鐘比較是沒有意義的。 例如:服務器A上的本地時間ta=1,服務器B上的本地時間tb=2,雖然ta<tb,但我們並不能說ta一定早發生,因爲兩臺服務器的本地時間會有差異。 既然兩臺服務

原创 maven常見打包報錯

1. Unknown lifecycle phase "mvn" 報錯現象: 在eclipse中,右鍵選中要打包的工程,輸入maven打包命令:mvn package,執行結果如下:  報錯原因: 因爲 eclispe 已經集成了mvn

原创 特殊字符無法入庫

 報錯現象: org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for S

原创 《阿里巴巴Java開發手冊-v1.1》解讀(二)安全規約

 1.   【強制】隸屬於用戶個人的頁面或者功能必須進行權限控制校驗。        說明:防止沒有做水平權限校驗就可隨意訪問、修改、刪除別人的數據,比如查看他人的私信       內容、修改他人的訂單。     2.   【強制】用戶

原创 獲取10以內3個不重複的隨機數

Random rand = new Random(); int randNum1 = 1; int randNum2 = 2; int randNum3 = 3; randNum1 = rand.nextInt(1