中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java的技術知識點有哪些

發布時間:2021-12-02 09:58:40 來源:億速云 閱讀:127 作者:柒染 欄目:編程語言

本篇文章為大家展示了Java的技術知識點有哪些,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

數據庫篇

JDBC連接數據庫步驟(以MYSQL為例)

1、加載JDBC驅動程序:   

通過Class類的forName方法實現,并將驅動地址放進去

成功加載后,會將Driver類的實例注冊到DriverManager類中。   

2、提供JDBC連接的URL 、創建數據庫的連接   

?要連接數據庫,需要向java.sql.DriverManager請求并獲得Connection對象,   

該對象就代表一個數據庫的連接。

?使用DriverManager的getConnectin()方法傳入指定的欲連接的數據庫的路徑、數 據庫的用戶名和密碼。

     Connection con=DriverManager.getConnection(url , username , password);

&&&:"jdbc:mysql://localhost/test?user=root&password=123&useUnicode=true&characterEncoding=utf-8”;  

3、創建一個Statement   

      ?要執行SQL語句,必須獲得java.sql.Statement實例

?執行靜態SQL語句。通常通過Statement實例實現。   

?執行動態SQL語句。通常通過PreparedStatement實例實現。   

        String sql = “”;

        Statement st = con.createStatement() ;   

        PreparedStatement pst = con.prepareStatement(sql) ;

4、執行SQL語句   

Statement接口提供了executeQuery、executeUpdate、execute三種方法  

executeQuery:執行select語句,返回ResultSet結果集

ResultSet rst = pst.executeQuery();  

?  executeUpdate:執行insert、update、delete語句

   pst.executeUpdate();

5、關閉JDBC對象    

操作完成以后要把所有使用的JDBC對象全都關閉,以釋放JDBC資源。

數據庫連接池

數據庫連接池的優點運行原理:

在我們不使用數據庫連接池的時候,每次訪問數據庫都需要創建連接,使用完成之后需要釋放關閉連接,而這樣是很耗費資源的。當我們使用數據庫連接池的時候,在tomcat啟動的時候就創建了指定數量的連接,之后當我們程序使用的時候就直接從連接池里面取,而不需要創建,同理,當我們使用完的時候也不需要關閉連接,而是將連接返回到連接池中,供其他請求繼續使用。

DBCP:比較穩定。

C3P0:性能比較高。

mysql的數據庫導入導出

 配置:

首先找到mysql的安裝目錄,進入bin目錄下復制路徑、將mysql的bin目錄粘貼在計算機環境變量的path中、授權:、登錄mysq、將某張表的某個權限賦給某個用戶。

grant [select,insert,update,delete,create,drop] on [databaseName].[tableName]   to [userName]@[userIP] identified by [‘連接口令’]

grant select,insert,update,delete,create,drop on oa_ssh.user to root@[IP]  identified by 'root';

將所有庫的所有權限賦給某個用戶

grant all privileges on *.* to [userName]@[userIp] identified by [‘連接口令’]

grant all privileges on *.* to root@[IP] identified by ‘root';

將所有庫的所有權限賦給所有用戶

    grant all privileges on *.* to root@'%' identified by ‘root’;


    導出本地數據庫:

    mysqldump -u用戶名 -p 數據庫名 > 磁盤:導出的文件名(加后綴)

    遠程導出數據庫:

    mysqldump -h IP -u用戶名 -p 數據庫名稱 >導出的文件名(加后綴)

    遠程導出數據表:

    mysqldump -u root -p -d --add-drop-table數據庫名稱 > 導出文件名(加后綴)

    導入數據:

    mysql -u root -p登錄成功后 ==》 source 磁盤:導入的文件名(加后綴)

jdbc分段批量提交的時候出現異常怎么處理?

      通過Map來解決性能問題。首先在分段批量提交的時候,我們不采用事務,這樣就保證了合法的數據就自動提交,不合法的數據就自己自動進行回滾,為了避免不合法數據影響后續合法數據的提交,采用定義業務規則字典表,實現對數據的驗證,將不合法的數據記錄下來,供用戶進行后續處理,而合法的數據就全部提交。

jdbc批量處理數據

批量處理數據:(代碼優化:提高程序執行性能)降低了java程序代碼(客戶端)和數據庫之間的 網絡通信的次數。在jdbc中進行批量插入的核心API為 addBatch,executeBatch大數據量的插入問題:(jdbc,hibernate,ibatis)

1.每次只插入一條和數據庫交互多次(很耗時間)

2.批量插入和數據庫只交互一次(內存溢出)

3.分段批量插入(推薦)

    jdbc批量處理數據是通過PreparedStatement對象的 addbatch(), executebatch() clearbatch()進行和數據庫的交互。通常我們使用分段批量處理的方式 這樣可以提高程序的性能 ,防止內存溢出。

 1.每個sql語句都和數據庫交互一次(非批量操作)

 2.只和數據庫交互一次(批量操作)(內存溢出)

 當數據達到一定額度的時候就和數據庫進行交互,分多次進行(分段批量操作)

 (500或者1000)

pst.addBatch();

             if (i > 0 && i%1000 == 0) {

                                        pst.executeBatch();

                                        pst.clearBatch();

 }

Oracle分頁

select * from (select * from (select s.*,rownum rn from student s ) where rn<=5) where rn>0

如果你依然覺得有些茫然,不如加入我的Java架構師之路:766529531 跟有多年Java開發經驗的資深工程師聊一聊。也可獲取免費的視頻學習資料以及電子書學習資料喔!

Oracle的基本數據類型

  Oracle的基本數據類型(常用):

1、字符型

Char固定長度字符串  占2000個字節

Varchar2可變長度字符串 占4000個字節

Nvarchar2占2000個字符(最多能存2000個字母/中文)

2、大對象型(lob)

Blob:二進制數據 最大長度4G

Blob用于存一些圖片,視頻,文件。

比如:當我們在進行文件上傳時,我們一般把上傳的文件存在硬盤上,可以不占用 數據庫,下載時,如果項目遷移時,文件也要跟著遷移。因此我們可以把用blob把它存在數據庫中。但這樣也增加了數據庫的負擔。

Clob:字符數據 最大長度4G,可以存大字符串  varchar2和nvarchar2都具有一定的局限性,它們長度有限,但數據庫中無論用varchar2或nvarchar2類型,還是用clob,在java端都使用String接收。

3、數值型

Integer整數類型,小的整數。

Float浮點數類型。

Real實數類型。

Number(p,s)包含小數位的數值類型。P表示精度,s表示小數后的位數。

                Eg: number(10,2)表示小數點之前可有8位數字,小數點后有2位。

4、日期類型

Date日期(日-月-年) DD-MM-YY(HH-MI-SS)

Timestamp跟date比 它可以精確到微秒。精確范圍0~9 默認為6.

id、rowid、rownum的區別

rowid物理位置的唯一標識。

而id是邏輯上的唯一標識,所以rowid查找速度要快于id,是目前最快的         

定位一條記錄的方式

rowid和rownum都是"偽數列"

所謂“偽數列”也就是默認隱藏的一個數列。

rownum用于標記結果集中結果順序的一個字段,

它的特點是按順序標記,而且是連續的,

換句話說就是只有有rownum=1的記錄,才可能有rownum=2的記錄。

rownum關鍵字只能和<或者<=直接關聯

如果是>或者=則需要給他起個別名

主鍵和唯一索引的區別? 

在創建主鍵的同時會生成對應的唯一索引,主鍵在保證數據唯一性的同時不允許為空,而唯一可以有一個為空數據項,一個表中只能有一個主鍵,但是一個主鍵可以有多個字段,一個表中可以有多個唯一索引。

Preparedstatement和statement的區別

     用Prepared statement進行開發。Prepared statement是預編譯的,而statement不是,在每次執行sql語句的增刪改時,如果是一條數據兩者沒差距,但如果數據量大于1,那么每次執行sql語句statement都要重新編譯一次,而Prepared statement不用,Prepared statement的運行效率大于statement;從代碼的可維護性和可讀性來說,雖然用Prepared statement來代替statement會使代碼多出幾行,但這樣的代碼無論從可讀性還是可維護性來說,都比直接使用statement的代碼高很多檔次;最重要的一點,從安全角度來說,使用Prepared statement可以大大提高程序的安全性,因為Prepared statement是用‘?’傳參,可以防止sql注入,具有安全性,而statement用的是‘+’字符串拼接,安全性較低。

數據庫三范式

       第一范式:數據庫表中的所有字段值都是不可分解的原子值。

       第二范式:需要確保數據庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關(主要針對聯合主鍵而言)

       第三范式:需要確保數據表中的每一列數據都和主鍵直接相關,而不能間接相關

如果你依然覺得有些茫然,不如加入我的Java架構師之路:766529531 跟有多年Java開發經驗的資深工程師聊一聊。也可獲取免費的視頻學習資料以及電子書學習資料喔!

視圖概述

      視圖可以視為“虛擬表”或“存儲的查詢”

      創建視圖所依據的表稱為“基表”

      視圖的優點:

      提供了另外一種級別的表安全性:隱藏了一些關鍵的字段

      簡化的用戶的SQL命令

      隔離基表結構的改變

存儲過程概述

存儲過程(Stored Procedure)

  可以包含邏輯判斷的sql語句集合。

  是經過預編譯,存在于數據庫中。

  通過調用指定存儲過程的名字(可有參,可無參)來執行。

優點:

  簡化了復雜的業務邏輯,根據需要可重復使用

  屏蔽了底層細節,不暴露表信息即可完成操作

  降低網絡的通信量,多條語句可以封裝成一個存儲過程來執行

  設置訪問權限來提高安全性

  提高執行效率,因為它是預編譯以及存儲在數據庫中

缺點:

  可移植性差,相同的存儲過程并不能跨多個數據庫進行操作

  大量使用存儲過程后,首先會使服務器壓力增大,而且維護難度逐漸增加

存儲過程的語法:

--下面是在oracle數據庫下最基本的語法

--僅創建一個名為testProcedure 的無參的存儲過程

--IS也可以是AS

--如果已經存在名為 testProcedure 的存儲過程,下面的語法會出現 名稱已被使用的錯誤

--解決辦法:

--第一句可以寫成 create or replace procedure testProcedure

--這樣會替換原有的存儲過程

--NULL表示任何可以正確執行的sql 語句,但至少一句

create procedure testProcedure

IS

BEGIN

NULL

END;

存儲過程的參數的分類:

IN

OUT

INOUT

注意:

  存儲過程之間可相互調用

  存儲過程一般修改后,立即生效。

索引概述

1、索引的概念

索引就是為了提高數據的檢索速度。

數據庫的索引類似于書籍的索引。

在書籍中,索引允許用戶不必翻閱完整個書就能迅速地找到所需要的信息。

在數據庫中,索引也允許數據庫程序迅速地找到表中的數據,

而不必掃描整個數據庫.

2、索引的優點

  1.創建唯一性索引,保證數據庫表中每一行數據的唯一性

  2.大大加快數據的檢索速度,這也是創建索引的最主要的原因

  3.減少磁盤IO(向字典一樣可以直接定位)

3、索引的缺點

   1.創建索引和維護索引要耗費時間,這種時間隨著數據量的增加而增加

  2.索引需要占用額外的物理空間

   3.當對表中的數據進行增加、刪除和修改的時候,

索引也要動態的維護,降低了數據的維護速度

4、索引的分類

  1.普通索引和唯一性索引

  普通索引:CREATE  INDEX mycolumn_index ON mytable (myclumn)

  唯一性索引:保證在索引列中的全部數據是唯一的

  CREATE unique INDEX mycolumn_index ON mytable (myclumn)

2.單個索引和復合索引

  單個索引:對單個字段建立索引

  復合索引:又叫組合索引,在索引建立語句中同時包含多個字段名,

  最多16個字段

  CREATE INDEX name_index ON userInfo(firstname,lastname)

3.順序索引,散列索引,位圖索引

必背的sql語句

    1:oracle分頁

         select * from (select t.*, rownum rn from (select * from menu order by id desc) t where rownum < 10) where rn >=5

  2: mysql分頁

         select * from music where id limit 5,5

  3:oracle中如何快速將一張表的數據復制到另外一張表中(另外一張表不存在,另外一張       表存在,但數據為空)

[if !supportLists]1、[endif].不存在另一張表時:

create  table新表  as  select * from 將要復制的表

[if !supportLists]2、[endif]存在另一張表時:

insert  into新表名  select  字段  from  將要復制的表名

  4:音樂專輯

   查詢出special 表中的id  專輯名 并下面有多少首歌曲

      Select  s.id , min(s.sname),count(m.mid)  from  special s  inner

      join  ms  m  on  s.id=m.id  group  by  s.id

  5:快速刪除一張表(不可事物回滾,也就是沒有日志記錄)

TRUNCATE from表名

  6:inner join

select查找信息 from 表名 1 inner join 表名2 on 表名1.列名 = 表名2.列名

  7:left join

左外連接select查找信息 from 表名1 left join 表名2 on 表名1.列名 = 表名2.列名

  8:right join

右外連接select查找信息 from 表名1 right join 表名2 on 表名1.列名 = 表名2.列名

  9:oracle中查詢遍歷樹形結構(start  with)

            select * from extmenu

            start with pid=1

            connect by prior id = pid

            快速刪除父節點以及父節點下的所有節點:

            Delete from extmenu where id in (

            elect * from extmenu

            start with pid=1

            connect by prior id = pid

            )

  10:查詢出來60-70,80-90,95-100學生的信息

select * from stu where chengji between 60 and 70 or between 80 and 90 or between 95 and 100

select * from stu where chengji > 60 and chengji < 70 or chengji > 80 and chengji < 90 or chengji > 95 and chengji < 100

11:用exists替換in------進行聯表查詢

select * from dept where exists(select * from emp where emp.deptno=dept.deptno);或select  *  from  dept  d  inner  join  emp  e  on  d.deptno = e.deptno(只查詢出兩表共同擁有的字段數據)

如果你依然覺得有些茫然,不如加入我的Java架構師之路:766529531 跟有多年Java開發經驗的資深工程師聊一聊。也可獲取免費的視頻學習資料以及電子書學習資料喔!

12:刪除表中的重復數據:

delete from xin a where a.rowid != (

select max(b.rowid) from xin b

where a.name = b.name

);

13:row_number(),rank() over ,dense_rank() over 按工資排序

  select sal,

                 row_number() over(order by sal desc) rank1,

                 rank() over(order by sal desc) rank,

                 dense_rank() over(order by sal desc) drank

            from emp

14:select * from (select emp.* from(

dense_rank() over(partition by departNo order by sal desc)

rk from emp )

Where rk=4

ibatis批量

this.getSqlMapClientTemplate().execute(

new SqlMapClientCallback() {

        public Object doInSqlMapClient(

                SqlMapExecutor executor)

                throws SQLException {

        executor.startBatch();

        for (int i = 0, n = list.size(); i < n; i++) {

                executor.insert(

                "productAttach.insertProductAttach",

                list.get(i));

        }

        executor.executeBatch();

        return null;

    }

});


ibatis,jdbc,hibernate的分段的實現:

都應該在組裝list的時候進行拆分(如:action層加入)

if(list.size() % 1000 == 0)

{

            productAttachService.addBatch(list);

            list.clear();

}

if (list.size() > 0)

productAttachService.addBatch(list);

上述內容就是Java的技術知識點有哪些,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乃东县| 四平市| 临城县| 铜山县| 临安市| 甘南县| 儋州市| 大庆市| 泸水县| 巢湖市| 黄平县| 洪洞县| 通山县| 康马县| 娱乐| 金湖县| 县级市| 河北省| 阜阳市| 惠安县| 苏尼特右旗| 姜堰市| 宁化县| 乐亭县| 手游| 古蔺县| 金华市| 曲周县| 安多县| 太康县| 繁峙县| 鹤庆县| 治县。| 花莲县| 大邑县| 西城区| 安化县| 贵南县| 遂昌县| 临澧县| 台东县|