原创 MyBatis的常用API及方法

org.apache.ibatis.session.SqlSession MyBatis工作的主要頂層API,表示和數據庫交互的會話。完畢必要數據庫增刪改查功能。   org.apache.ibatis.executor.Executor

原创 spring--bean自動裝配

創建應用對象之間協作關係的行爲被稱爲裝配(wiring),而不是實例化對象的過程,xml文件中,通過<property name="xxx" ref="yyy" />的方式來裝配了依賴對象.   xml中通過autowire=""實現自動

原创 SpringMVC的工作原理圖

SpringMVC流程 1、  用戶發送請求至前端控制器DispatcherServlet。 2、  DispatcherServlet收到請求調用HandlerMapping處理器映射器。 3、  處理器映射器找到具體的處理器(可以根

原创 Hibernate和MyBatis的區別與利弊

1、hibernate真正掌握要比mybatis難,因爲hibernate的功能和特性非常多,還不適合多表關聯查詢。 2、hibernate查詢會將所有關聯表的字段全部查詢出來,會導致性能消耗,當然hibernate也可以自己寫sql指定

原创 mybatis實現多表一對一,一對多,多對多關聯查詢

1、一對一 關鍵字:association 作用:針對pojo對象屬性的映射       property:pojo的屬性名       javaType:pojo類名 (1) 嵌套結果: 使用嵌套結果映射來處理重複的聯合結果的子集 Pe

原创 mongodb -- 索引注意事項

1. 索引很有用,但是它也是有成本的——它佔內存,讓寫入變慢; 2. mongoDB通常在一次查詢裏使用一個索引,所以多個字段的查詢或者排序需要複合索引才能更加高效; 3. 複合索引的順序非常重要 4. 在生成環境構建索引往往開銷很大,時

原创 redis -- 哨兵機制

redis sentinel是一個分佈式架構,其中包含了若干個sentinal節點和Redis節點,每個sentinel節點會對數據節點和sentinel節點進行監控,當它發現節點不可達是,會對節點做下線標識。如果大部分sentinal節

原创 Spring設計模式

第一種:工廠模式 BeanFactory,從xml或者註解加載BeanDefinition,然後實例化對象,其中AbstractAutowiredCapableBeanFactory實現了主要的邏輯   第二種:單例模式 Spring下默

原创 常見排序及源碼

一、冒泡排序 public class BubbleSort { public static void BubbleSort(int[] arr) { int temp;//定義一個臨時變量 fo

原创 mongodb -- mongodb與mysql的區別?

 mongodb的本質還是一個數據庫產品,3.0以上版本其穩定性和健壯性有很大提升。它與mysql的區別在於它不會遵循一些約束,比如:sql標準、ACID屬性,表結構等。其主要特性如下: 面向集合文檔的存儲:適合存儲Bson(json的擴

原创 mysql -- 複製的原理

Mysql的複製原理大致如下: 主庫在數據提交時會把數據變更作爲事件記錄在二進制日誌文件Binlog中;可通過sync_binlog控制binlog日誌刷新到磁盤的頻率; 主庫推送二進制日誌文件binlog中的事件到從庫的中繼日誌Rela

原创 mysql -- 怎麼樣做執行計劃分析

通過explain命令獲取mysql如何執行select語句的信息,包括在select語句執行過程中表如何連接和連接的順序;explain分析後的結果解析: 1.select_type 查詢的類型,主要是用於區分普通查詢、聯合查詢、子查詢

原创 mysql--各個數據庫存儲引擎區別

mysql的存儲引擎是針對表進行設置的,一個庫的不同表可以設置不同的存儲引擎,mysql默認支持多種存儲引擎,以適用不同領域的數據庫應用需要,主要的幾個數據庫引擎如下: 1.MyISAM存儲引擎  5.5之前默認的存儲引擎,不支持事務、不

原创 mysql -- 提高mysql語句效率的技巧

一、大批量插入數據 1.大批量數據插入空表,可將表設置成爲MyISAM,並通過disable keys將唯一索引關閉 2.大批量數據插入非空Innodb表,可採取如下措施提高效率:      [1]導入數據時按照主鍵順序排列;      

原创 mongodb -- 查詢優化

第一步 找出慢速查詢 1. 開啓內置的查詢分析器,記錄讀寫操作效率:    db.setProfilingLevel(n,{m}),n的取值可選0,1,2;      1) 0是默認值表示不記錄;      2) 1表示記錄慢速操作,如果