hibernate和mybatis的區別(不看後悔,看了必懂)
①hibernate是一個標準的orm(物件關係對映)框架,通過JavaBean和資料庫的對映結構來自動生成sql;mybatis是不完全的orm框架,專注於sql本身,需要程式設計師自己寫sql;
②hibernate對sql的優化和修改比較困難,適合於需求變化不多的中小型專案,如ERP(企業管理系統),OA(辦公自動化系統)
mybatis對sql的優化和修改則比較方便,適合於需求變化多的專案,比如網際網路專案
③hibernate的資料庫移植性優於mybatis
因為hibernate強大的對映結構,降低了物件和資料庫的耦合,而mybatis因為要手寫sql,所以移植性比較差,成本比較高
相關推薦
hibernate和mybatis的區別(不看後悔,看了必懂)
①hibernate是一個標準的orm(物件關係對映)框架,通過JavaBean和資料庫的對映結構來自動生成sql;mybatis是不完全的orm框架,專注於sql本身,需要程式設計師自己寫sql; ②hibernate對sql的優化和修改比較困難,適合於需求變化不多的中小型專案,如ERP(
synchronized和Lock有什麼區別(不看後悔,看了必懂)
java語言中提供了兩種鎖機制來實現對某個共享資源的同步:synchronized和Lock.其中synchronized使用Object物件本身的notify,wait和notifyAll來實現執行緒之間的排程.而Lock可以使用Condition程序執行緒之間的排程 ①用法不同 sy
sleep和wait方法的區別(不看後悔,看了必懂)
①原理不同 sleep()方法是Thread類的靜態方法,它會使執行緒的執行暫停一段時間,把執行機會讓給其他執行緒,等倒計時時間一到,此執行緒會自動甦醒 wait()是Object類的方法,用於執行緒間的通訊,使當前擁有鎖的程序等待,直到其他執行緒呼叫notify()方法才醒過來 ②
併發(Concurrent)和並行(Parallel)和區別(不看後悔,看了必懂)
併發 單個處理器(CPU),輪換執行多個任務,因為輪換的速度比較快,看起來好像多個任務在同時執行一樣 並行 多個處理器(CPU),同時執行多個任務,每個任務分配在一個處理器上執行 併發就像是一個
自旋鎖和自適應自旋鎖(不看後悔,看了必懂)
自旋鎖 所謂自旋,就是指當有另外一個執行緒來競爭鎖時,這個執行緒會在原地迴圈等待,而不是把該執行緒給阻塞,直到那個獲得鎖的執行緒釋放鎖之後,這個執行緒就可以馬上獲得鎖的。鎖在原地迴圈的時候,是會消耗cpu的,就相當於在執行一個啥也沒有的for迴圈。 本來一個執行緒把鎖釋放之後,當前執行緒
樂觀鎖和悲觀鎖(不看後悔,看了必懂)
鎖從巨集觀上分類,分為樂觀鎖和悲觀鎖 樂觀鎖是一種樂觀的思想,每次獲取資料的時候都不擔心資料會被修改,所以每次獲取資料的時候都不會加鎖,但是在更新的時候需要判斷該資料是否被人修改過.如果資料被其他執行緒修改,則不進行資料更新,否則,更新.由於資料沒有加鎖,期間該資料可以被其他執行緒進行讀寫操
MySQL 中的行級鎖、表級鎖和頁級鎖(不看後悔,看了必懂)
行級鎖 行級鎖是 MySQL 中鎖定粒度最細的一種鎖,表示只針對當前操作的行進行加鎖。行級鎖分為共享鎖和排他鎖。 特點:加鎖開銷大,會出現死鎖,鎖定粒度最小,發生鎖衝突的概率最低,併發度最高 頁級鎖 頁級鎖是 MySQL 中鎖定粒度介於行級鎖和表級鎖中間的一種鎖。
重量級鎖 synchronized(不看後悔,看了必懂)
synchronized關鍵字並非一開始就該物件加上重量級鎖,也是從偏向鎖,輕量級鎖,再到重量級鎖的過程。這個過程也告訴我們,假如我們一開始就知道某個同步程式碼塊的競爭很激烈、很慢的話,那麼我們一開始就應該使用重量級鎖了,從而省掉一些鎖轉換的開銷。 互斥鎖(重量級鎖)也稱為阻塞同步、悲觀鎖
輕量級鎖(不看後悔,看了必懂)
輕量級鎖是由偏向鎖升級來的,偏向鎖執行在一個執行緒進入同步塊的情況下,當第二個執行緒加入鎖爭用的時候,偏向鎖就會升級為輕量級鎖(又叫做鎖膨脹); 輕量級鎖也被稱為非阻塞同步、樂觀鎖,因為這個過程並沒有把執行緒阻塞掛起,而是讓執行緒空迴圈等待,序列執行。 輕量級鎖適用於那些同步
偏向鎖(不看後悔,看了必懂)
它會偏向第一個訪問鎖的執行緒,如果在執行過程中,同步鎖只有一個執行緒訪問,不存在多執行緒爭用的情況,則執行緒是不需要觸發同步的,這種情況下,就會給執行緒加一個偏向鎖。 如果在執行過程中,遇到了其他執行緒搶佔鎖,則持有偏向鎖的執行緒會被掛起,JVM會消除它身上的偏向鎖,將鎖恢復到標準的輕
談談你對AtomicInteger的理解(不看後悔,看了必懂)
AtomicInteger是一個提供原子操作的Integer類,通過執行緒安全的方式操作加減。十分適合高併發情況下的使用 對於全域性變數的數值型別操作 num++,若沒有加synchronized關鍵字則是執行緒不安全的,num++解析為num=num+1,明顯,這個操作不
如何執行緒安全地實現一個計數器(不看後悔,看了必懂)
i++是執行緒安全的嗎 i++和++i的執行緒安全分為兩種情況: 1、如果i是區域性變數(在方法裡定義的),那麼是執行緒安全的。因為區域性變數是執行緒私有的,別的執行緒訪問不到,其實也可以說沒有執行緒安不安全之說,因為別的執行緒對他造不成影響。 2、如果i是全域性變
ReentrantLock可重入鎖(不看後悔,看了必懂)
ReentraantLock是通過一個FIFO的等待佇列來管理獲取該鎖所有執行緒的。在“公平鎖”的機制下,執行緒依次排隊獲取鎖(先等待的執行緒先獲得鎖);而“非公平鎖”在鎖是可獲取狀態時,不管自己是不是在佇列的開頭都會獲取鎖。 ReentrantLock和synchroni
終止執行緒的方法(不看後悔,看了必懂)
在java語言中,可以使用stop()方法和suspend()方法來終止執行緒的執行. 當使用Thread.stop()來終止執行緒時,它會釋放已經鎖定的所有監視資源,具有不安全性 suspend()方法不會釋放鎖,容易發生死鎖(兩個或者兩個以上程序在執行過程中,因爭奪資源而造成程序間互
程序的狀態(不看後悔,看了必懂)
就緒態:程序已經準備好,只要分配到CPU就可以執行 執行態:程序處於就緒態被排程後,進出進入執行狀態 阻塞狀態:正在執行的程序由於某些事件(I/O請求,申請緩衝區失敗)而暫時無法執行,程序進入阻
Hibernate和Mybatis對比(優缺點)
專案也做過幾個, 使用Mybatis就做一個專案, 基本上都是使用Hibernate, 也只是知道幾點關於這兩個框架的區別, 今天閒著沒事幹, 從網上找了幾篇文章, 做了一個簡單的整理。網上關於這兩
JPA、Hibernate和Mybatis區別和總結
一、應用場合: 傳統公司、部分個人開發者喜歡用jpa;而網際網路公司更青睞於mybatis 原因: 1、mybatis更加靈活,開發迭代模式決定了他是網際網路公司的首先;每一次的修改不會帶來效能上的下降。 2、傳統公司需求迭代速度慢、專案改動小,hibernate可以
連結串列和順序表(參考stl原始碼,使用c語言實現)
順序表 優點:可以隨機訪問,cpu快取記憶體利用率高,不涉及(較少)進行插入和刪除操作,應該使用順序表。 順序表,不論是動態開闢,還是固定大小,一般放置在棧上,不用程式設計師手動開闢空間 連結串列:主要運用2種,A單向不帶頭結點的非迴圈連結串列 B雙向帶頭
idea——建立ssm框架專案(不使用maven,自己匯入jar包)
在idea建立ssm專案 1.建立ssm專案在idea中: 2.設定: 其餘的和普通的javaweb專案差不多,如果不懂,請看: https://blog.csdn.net/weixin_43075298/article/details/85678844 注意: 1.
jena 簡單查詢(不帶推理,直接讀取owl檔案)
//用的是protege 裡面的people demo import com.hp.hpl.jena.rdf.model.*; import com.hp.hpl.jena.ontology.*; import com.hp.hpl.jena.query.Que