顯示具有 Article - Coding 標籤的文章。 顯示所有文章
顯示具有 Article - Coding 標籤的文章。 顯示所有文章

星期日, 12月 10, 2023

表格第一列及第一行固定不動

 【語法】

<!DOCTYPE html>

<html>

<head>

   <meta charset="UTF-8">

   <title>表格第一列及第一行固定不動</title>

</head>

<style>

  div{

    width:70%;

    height:286px;

    overflow:auto;/* div高度有效。無此值則表格無捲軸 */

  }

  table {

    border:0px solid red; /* 測試用 */

    table-layout: fixed;

    width: 200px; /* 固定寬度 */

    border-collapse: collapse;

  }

  td, th {

    border:1px solid gray;

    border-left:0px;

    border-top:0px;

    width:100px;

  }

  td{

    left:0;     /* 須為0,行首全部固定,左右捲軸不能動。此屬性放在 td:first-child 也可以 */

    height:30px;

  }

  th {

    position:sticky;

    top:0;        /* 須為0,列首全部固定,上下捲軸不能動(包括灰色的那一格) */

    height:36px;

    background-color:lightblue;

  }

  th:first-child{

    position:sticky;

    left:0;      /* 須為0,列首第一格固定,左右捲軸不能動(包括灰色的那一格) */

    z-index:1;   /* 值須大於等於 1,代表固定不動。若等於0,則直橫向捲動都會變動 */

    background-color:lightgrey;

  }

  td:first-child{

    position:sticky; /* 「必須」放在此處*/

    background-color:lightpink;

  }


</style>

<body>

<div>

   <table>

      <thead>

         <tr>

            <th>交叉</th>

            <th>行一</th>

            <th>行二</th>

            <th>行三</th>

            <th>行四</th>

         </tr>

      </thead>


      <tbody align="center">

         <tr>

            <td>列一</td>

            <td>行01列01</td>

            <td>行02列01</td>

            <td></td>

            <td></td>

         </tr>


         <tr>

            <td>列二</td>

            <td>行01列02</td>

            <td></td>

            <td></td>

            <td></td>

         </tr>


         <tr>

            <td>列三</td>

            <td></td>

            <td></td>

            <td></td>

            <td></td>

         </tr>


         <tr>

            <td>列四</td>

            <td></td>

            <td></td>

            <td></td>

            <td></td>

         </tr>


         <tr>

            <td></td>

            <td></td>

            <td></td>

            <td></td>

            <td></td>

         </tr>


         <tr>

            <td></td>

            <td></td>

            <td></td>

            <td></td>

            <td></td>

         </tr>


         <tr>

            <td></td>

            <td></td>

            <td></td>

            <td></td>

            <td></td>

         </tr>


         <tr>

            <td></td>

            <td></td>

            <td></td>

            <td></td>

            <td></td>

         </tr>


         <tr>

            <td></td>

            <td></td>

            <td></td>

            <td></td>

            <td></td>

         </tr>


         <tr>

            <td></td>

            <td></td>

            <td></td>

            <td></td>

            <td></td>

         </tr>


         <tr>

            <td></td>

            <td></td>

            <td></td>

            <td></td>

            <td></td>

         </tr>


         <tr>

            <td></td>

            <td></td>

            <td></td>

            <td></td>

            <td></td>

         </tr>


         <tr>

            <td></td>

            <td></td>

            <td></td>

            <td></td>

            <td></td>

         </tr>

      </tbody>

   </table>

</div>

</body>

</html>


【截圖】

以下 Chrome:


以下 Firefox:




以下 Edge:


星期六, 11月 27, 2021

Low-Code

◆ Low-Code 開發九大原則


星期六, 4月 02, 2011

MS Shell Commands

來源:http://topmanopensource.iteye.com/blog/506634

1 echo 和 @

@ #關閉單行回顯

echo off #從下一行開始關閉回顯

@echo off #從本行開始關閉回顯。一般批處理第一行都是這個

echo on #從下一行開始打開回顯

echo #顯示當前是 echo off 狀態還是 echo on 狀態

echo. #輸出一個」回車換行」,空白行

#(同echo, echo; echo+ echo[ echo] echo/ echo")

2 errorlevel

echo %errorlevel%

每個命令運行結束,可以用這個命令行格式查看返回碼

默認值為0,一般命令執行出錯會設 errorlevel 為1

3 dir

dir #顯示當前目錄中的文件和子目錄

dir /a #顯示當前目錄中的文件和子目錄,包括隱藏文件和系統文件

dir c: /a:d #顯示 C 盤當前目錄中的目錄

dir c: /a:-d #顯示 C 盤根目錄中的文件

dir c:" /b/p #/b只顯示文件名,/p分頁顯示

dir *.exe /s #顯示當前目錄和子目錄裡所有的.exe文件

4 cd

cd" #進入根目錄

cd #顯示當前目錄

cd /d d:"sdk #可以同時更改盤符和目錄

5 md

md d:"a"b"c #如果 d:"a 不存在,將會自動創建中級目錄

#如果命令擴展名被停用,則需要鍵入 mkdir "a"b"c。

6 rd

rd abc #刪除當前目錄裡的 abc 子目錄,要求為空目錄

rd /s/q d:"temp #刪除 d:"temp 文件夾及其子文件夾和文件,/q安靜模式

7 del

del d:"test.txt #刪除指定文件,不能是隱藏、系統、只讀文件

del /q/a/f d:"temp"*.*

刪除 d:"temp 文件夾裡面的所有文件,包括隱藏、只讀、系統文件,不包括子目錄

del /q/a/f/s d:"temp"*.*

刪除 d:"temp 及子文件夾裡面的所有文件,包括隱藏、只讀、系統文件,不包括子目錄

8 ren

ren d:"temp tmp #支持對文件夾的重命名

9 cls

清屏

10 type

顯示文件內容

type c:"boot.ini #顯示指定文件的內容,程序文件一般會顯示亂碼

type *.txt #顯示當前目錄裡所有.txt文件的內容

11 copy

拷貝文件

copy c:"test.txt d:"test.bak

複製 c:"test.txt 文件到 d:" ,並重命名為 test.bak

copy con test.txt

從屏幕上等待輸入,按 Ctrl+Z 結束輸入,輸入內容存為test.txt文件

con代表屏幕,prn代表打印機,nul代表空設備

copy 1.txt + 2.txt 3.txt

合併 1.txt 和 2.txt 的內容,保存為 3.txt 文件

如果不指定 3.txt ,則保存到 1.txt

copy test.txt +

複製文件到自己,實際上是修改了文件日期

12 title

設置cmd窗口的標題

title 新標題 #可以看到cmd窗口的標題欄變了

13 ver

顯示系統版本

14 label 和 vol

設置卷標

vol #顯示卷標

label #顯示卷標,同時提示輸入新卷標

label c:system #設置C盤的卷標為 system

15 pause

暫停命令

16 rem 和 ::

註釋命令

註釋行不執行操作

17 date 和 time

日期和時間

date #顯示當前日期,並提示輸入新日期,按""回車""略過輸入

date/t #只顯示當前日期,不提示輸入新日期

time #顯示當前時間,並提示輸入新時間,按""回車""略過輸入

time/t #只顯示當前時間,不提示輸入新時間

18 goto 和 :

跳轉命令

:label #行首為:表示該行是標籤行,標籤行不執行操作

goto label #跳轉到指定的標籤那一行

19 find (外部命令)

查找命令

find ""abc"" c:"test.txt

在 c:"test.txt 文件裡查找含 abc 字符串的行

如果找不到,將設 errorlevel 返回碼為1

find /i 「abc」 c:"test.txt

查找含 abc 的行,忽略大小寫

find /c ""abc"" c:"test.txt

顯示含 abc 的行的行數

20 more (外部命令)

逐屏顯示

more c:"test.txt #逐屏顯示 c:"test.txt 的文件內容

21 tree

顯示目錄結構

tree d:" #顯示D盤的文件目錄結構

22 &

順序執行多條命令,而不管命令是否執行成功

23 &&

順序執行多條命令,當碰到執行出錯的命令後將不執行後面的命令

find ""ok"" c:"test.txt && echo 成功

如果找到了""ok""字樣,就顯示""成功"",找不到就不顯示

24 ||

順序執行多條命令,當碰到執行正確的命令後將不執行後面的命令

find ""ok"" c:"test.txt || echo 不成功

如果找不到""ok""字樣,就顯示""不成功"",找到了就不顯示

25 |

管道命令

dir *.* /s/a | find /c "".exe""

管道命令表示先執行 dir 命令,對其輸出的結果執行後面的 find 命令

該命令行結果:輸出當前文件夾及所有子文件夾裡的.exe文件的個數

type c:"test.txt|more

這個和 more c:"test.txt 的效果是一樣的

26 > 和 >>

輸出重定向命令

> 清除文件中原有的內容後再寫入

>> 追加內容到文件末尾,而不會清除原有的內容

主要將本來顯示在屏幕上的內容輸出到指定文件中

指定文件如果不存在,則自動生成該文件

type c:"test.txt >prn

屏幕上不顯示文件內容,轉向輸出到打印機

echo hello world>con

在屏幕上顯示hello world,實際上所有輸出都是默認 >con 的

copy c:"test.txt f: >nul

拷貝文件,並且不顯示""文件複製成功""的提示信息,但如果f盤不存在,還是會顯示出錯信息

copy c:"test.txt f: >nul 2>nul

不顯示」文件複製成功」的提示信息,並且f盤不存在的話,也不顯示錯誤提示信息

echo ^^W ^> ^W>c:"test.txt

生成的文件內容為 ^W > W

^ 和 > 是控制命令,要把它們輸出到文件,必須在前面加個 ^ 符號

27 <

從文件中獲得輸入信息,而不是從屏幕上

一般用於 date time label 等需要等待輸入的命令

@echo off

echo 2005-05-01>temp.txt

date

del temp.txt

這樣就可以不等待輸入直接修改當前日期

28 %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*

命令行傳遞給批處理的參數

%0 批處理文件本身

%1 第一個參數

%9 第九個參數

%* 從第一個參數開始的所有參數

批參數(%n)的替代已被增強。您可以使用以下語法:

%~1 - 刪除引號(""),擴充 %1

%~f1 - 將 %1 擴充到一個完全合格的路徑名

%~d1 - 僅將 %1 擴充到一個驅動器號

%~p1 - 僅將 %1 擴充到一個路徑

%~n1 - 僅將 %1 擴充到一個文件名

%~x1 - 僅將 %1 擴充到一個文件擴展名

%~s1 - 擴充的路徑指含有短名

%~a1 - 將 %1 擴充到文件屬性

%~t1 - 將 %1 擴充到文件的日期/時間

%~z1 - 將 %1 擴充到文件的大小

%~$PATH : 1 - 查找列在 PATH 環境變量的目錄,並將 %1

擴充到找到的第一個完全合格的名稱。如果環境

變量名未被定義,或者沒有找到文件,此組合鍵會

擴充到空字符串

可以組合修定符來取得多重結果:

%~dp1 - 只將 %1 擴展到驅動器號和路徑

%~nx1 - 只將 %1 擴展到文件名和擴展名

%~dp$PATH:1 - 在列在 PATH 環境變量中的目錄裡查找 %1,

並擴展到找到的第一個文件的驅動器號和路徑。

%~ftza1 - 將 %1 擴展到類似 DIR 的輸出行。

可以參照 call/? 或 for/? 看出每個參數的含意

echo load ""%%1"" ""%%2"">c:"test.txt

生成的文件內容為 load ""%1"" ""%2""

批處理文件裡,用這個格式把命令行參數輸出到文件

29 if

判斷命令

if ""%1""==""/a"" echo 第一個參數是/a

if /i ""%1"" equ ""/a"" echo 第一個參數是/a

/i 表示不區分大小寫,equ 和 == 是一樣的,其它運算符參見 if/?

if exist c:"test.bat echo 存在c:"test.bat文件

if not exist c:"windows (

echo 不存在c:"windows文件夾

)

if exist c:"test.bat (

echo 存在c:"test.bat

) else (

echo 不存在c:"test.bat

)

30 setlocal 和 endlocal

設置」命令擴展名」和」延緩環境變量擴充」

SETLOCAL ENABLEEXTENSIONS #啟用""命令擴展名""

SETLOCAL DISABLEEXTENSIONS #停用""命令擴展名""

SETLOCAL ENABLEDELAYEDEXPANSION #啟用""延緩環境變量擴充""

SETLOCAL DISABLEDELAYEDEXPANSION #停用""延緩環境變量擴充""

ENDLOCAL #恢復到使用SETLOCAL語句以前的狀態

「命令擴展名」默認為啟用

「延緩環境變量擴充」默認為停用

批處理結束系統會自動恢復默認值

可以修改註冊表以禁用""命令擴展名"",詳見 cmd /? 。所以用到""命令擴展名""的程

序,建議在開頭和結尾加上 SETLOCAL ENABLEEXTENSIONS 和 ENDLOCAL 語句,以確

保程序能在其它系統上正確運行

""延緩環境變量擴充""主要用於 if 和 for 的符合語句,在 set 的說明裡有其實用例程

31 set

設置變量

引用變量可在變量名前後加 % ,即 %變量名%

set #顯示目前所有可用的變量,包括系統變量和自定義的變量

echo %SystemDrive% #顯示系統盤盤符。系統變量可以直接引用

set p #顯示所有以p開頭的變量,要是一個也沒有就設errorlevel=1

set p=aa1bb1aa2bb2 #設置變量p,並賦值為 = 後面的字符串,即aa1bb1aa2bb2

echo %p% #顯示變量p代表的字符串,即aa1bb1aa2bb2

echo %p:~6% #顯示變量p中第6個字符以後的所有字符,即aa2bb2

echo %p:~6,3% #顯示第6個字符以後的3個字符,即aa2

echo %p:~0,3% #顯示前3個字符,即aa1

echo %p:~-2% #顯示最後面的2個字符,即b2

echo %p:~0,-2% #顯示除了最後2個字符以外的其它字符,即aa1bb1aa2b

echo %p:aa=c% #用c替換變量p中所有的aa,即顯示c1bb1c2bb2

echo %p:aa=% #將變量p中的所有aa字符串置換為空,即顯示1bb12bb2

echo %p:*bb=c% #第一個bb及其之前的所有字符被替換為c,即顯示c1aa2bb2

set p=%p:*bb=c% #設置變量p,賦值為 %p:*bb=c% ,即c1aa2bb2

set /a p=39 #設置p為數值型變量,值為39

set /a p=39/10 #支持運算符,有小數時用去尾法,39/10=3.9,去尾得3,p=3

set /a p=p/10 #用 /a 參數時,在 = 後面的變量可以不加%直接引用

set /a p=」1&0〞 #」與」運算,要加引號。其它支持的運算符參見set/?

set p= #取消p變量

set /p p=請輸入

屏幕上顯示」請輸入」,並會將輸入的字符串賦值給變量p

注意這條可以用來取代 choice 命令

注意變量在 if 和 for 的復合語句裡是一次性全部替換的,如

@echo off

set p=aaa

if %p%==aaa (

echo %p%

set p=bbb

echo %p%

)

結果將顯示

aaa

aaa

因為在讀取 if 語句時已經將所有 %p% 替換為aaa

這裡的""替換"",在 /? 幫助裡就是指""擴充""、""環境變量擴充""

可以啟用」延緩環境變量擴充」,用 ! 來引用變量,即 !變量名!

@echo off

SETLOCAL ENABLEDELAYEDEXPANSION

set p=aaa

if %p%==aaa (

echo %p%

set p=bbb

echo !p!

)

ENDLOCAL

結果將顯示

aaa

bbb

還有幾個動態變量,運行 set 看不到

%CD% #代表當前目錄的字符串

%DATE% #當前日期

%TIME% #當前時間

%RANDOM% #隨機整數,介於0~32767

%ERRORLEVEL% #當前 ERRORLEVEL 值

%CMDEXTVERSION% #當前命令處理器擴展名版本號

%CMDCMDLINE% #調用命令處理器的原始命令行

可以用echo命令查看每個變量值,如 echo %time%

注意 %time% 精確到毫秒,在批處理需要延時處理時可以用到

32 start

批處理中調用外部程序的命令,否則等外部程序完成後才繼續執行剩下的指令

33 call

批處理中調用另外一個批處理的命令,否則剩下的批處理指令將不會被執行

有時有的應用程序用start調用出錯的,也可以call調用

34 choice (外部命令)

選擇命令

讓用戶輸入一個字符,從而選擇運行不同的命令,返回碼errorlevel為1234……

win98裡是choice.com

win2000pro裡沒有,可以從win98裡拷過來

win2003裡是choice.exe

choice /N /C y /T 5 /D y>nul

延時5秒

35 assoc 和 ftype

文件關聯

assoc 設置'文件擴展名'關聯,關聯到'文件類型'

ftype 設置'文件類型'關聯,關聯到'執行程序和參數'

當你雙擊一個.txt文件時,windows並不是根據.txt直接判斷用 notepad.exe 打開

而是先判斷.txt屬於 txtfile '文件類型'

再調用 txtfile 關聯的命令行 txtfile=%SystemRoot%"system32"NOTEPAD.EXE %1

可以在""文件夾選項""→""文件類型""裡修改這2種關聯

assoc #顯示所有'文件擴展名'關聯

assoc .txt #顯示.txt代表的'文件類型',結果顯示 .txt=txtfile

assoc .doc #顯示.doc代表的'文件類型',結果顯示 .doc=Word.Document.8

assoc .exe #顯示.exe代表的'文件類型',結果顯示 .exe=exefile

ftype #顯示所有'文件類型'關聯

ftype exefile #顯示exefile類型關聯的命令行,結果顯示 exefile=""%1"" %*

assoc .txt=Word.Document.8

設置.txt為word類型的文檔,可以看到.txt文件的圖標都變了

assoc .txt=txtfile

恢復.txt的正確關聯

ftype exefile=""%1"" %*

恢復 exefile 的正確關聯

如果該關聯已經被破壞,可以運行 command.com ,再輸入這條命令

36 pushd 和 popd

切換當前目錄

@echo off

c: & cd" & md mp3 #在 C:" 建立 mp3 文件夾

md d:"mp4 #在 D:" 建立 mp4 文件夾

cd /d d:"mp4 #更改當前目錄為 d:"mp4

pushd c:"mp3 #保存當前目錄,並切換當前目錄為 c:"mp3

popd #恢復當前目錄為剛才保存的 d:"mp4

37 for

循環命令

這個比較複雜,請對照 for/? 來看

for %%i in (c: d: e: f:) do echo %%i

依次調用小括號裡的每個字符串,執行 do 後面的命令

注意%%i,在批處理中 for 語句調用參數用2個%

默認的字符串分隔符是""空格鍵"",""Tab鍵"",""回車鍵""

for %%i in (*.txt) do find ""abc"" %%i

對當前目錄裡所有的txt文件執行 find 命令

for /r . %%i in (*.txt) do find ""abc"" %%i

在當前目錄和子目錄裡所有的.txt文件中搜索包含 abc 字符串的行

for /r . %%i in (.) do echo %%~pni

顯示當前目錄名和所有子目錄名,包括路徑,不包括盤符

for /r d:"mp3 %%i in (*.mp3) do echo %%i>>d:"mp3.txt

把 d:"mp3 及其子目錄裡的mp3文件的文件名都存到 d:"mp3.txt 裡去

for /l %%i in (2,1,8) do echo %%i

生成2345678的一串數字,2是數字序列的開頭,8是結尾,1表示每次加1

for /f %%i in ('set') do echo %%i

對 set 命令的輸出結果循環調用,每行一個

for /f ""eol=P"" %%i in ('set') do echo %%i

取 set 命令的輸出結果,忽略以 P 開頭的那幾行

for /f %%i in (d:"mp3.txt) do echo %%i

顯示 d:"mp3.txt 裡的每個文件名,每行一個,不支持帶空格的名稱

for /f ""delims="" %%i in (d:"mp3.txt) do echo %%i

顯示 d:"mp3.txt 裡的每個文件名,每行一個,支持帶空格的名稱

for /f ""skip=5 tokens=4"" %%a in ('dir') do echo %%a

對 dir 命令的結果,跳過前面5行,餘下的每行取第4列

每列之間的分隔符為默認的""空格""

可以注意到 dir 命令輸出的前5行是沒有文件名的

for /f ""tokens=1,2,3 delims=- "" %%a in ('date /t') do (

echo %%a

echo %%b

echo %%c

)

對 date /t 的輸出結果,每行取1、2、3列

第一列對應指定的 %%a ,後面的 %%b 和 %%c 是派生出來的,對應其它列

分隔符指定為 - 和""空格"",注意 delims=- 後面有個""空格""

其中 tokens=1,2,3 若用 tokens=1-3 替換,效果是一樣的

for /f ""tokens=2* delims=- "" %%a in ('date /t') do echo %%b

取第2列給 %%a ,其後的列都給 %%b

32 subst (外部命令)

映射磁盤。

subst z: "server"d #這樣輸入z:就可以訪問"server"d了

subst z: /d #取消該映射

subst #顯示目前所有的映時

38 xcopy (外部命令)

文件拷貝

xcopy d:"mp3 e:"mp3 /s/e/i/y

複製 d:"mp3 文件夾、所有子文件夾和文件到 e:" ,覆蓋已有文件

加 /i 表示如果 e:" 沒有 mp3 文件夾就自動新建一個,否則會有詢問

星期一, 7月 26, 2010

部份Java技術的素描

http://ender110.blogbus.com/logs/4112843.html

    學了Java這麼久了,感覺起來就是累,不是因為學習上的勞累,而是一種匆忙追趕的勞累。 Java世界的變化真是太快了,誇張一點說,前一天你覺得什麼都會了,當你第二天一覺醒來就會發現說不上從哪又飛出了一個新名詞。 用老崔的一句話來表達此時的心裡是最恰當的了:“不是我不明白,這世界變化得太快。


    也許你已經學了很常時間的Java了,也許你現在正想學習Java,無論怎樣,還是讓我們先停下來整理一下Java雜亂的名詞吧,這些名詞術語就像一張無 邊 無際的網,我們輕易地就會被困在網中央,為了使我們不至於越陷越深越迷惘,路越走越遠越漫長,我們只有逐個擊破,一一搞懂,這樣才會前途一片光亮嘛。


    第一個出場的是誰? 當然是Applet啦。 它是什麼東東? 可能許多人都聽說過了,Applet就是嵌入到Web網頁中的一段Java代碼。 這是最初的動態網頁技術,是用來活躍氣氛的,許多人都用它來畫一副漂亮的圖來活躍一下自己的網頁,高手們用它來進行一些遠程事務等等。 不過現在它有點受冷落了,原因是Flash、DHTML、ASP、JSP們強佔了它的一大部分地盤,它勢單力薄,唉,只有聽從命運的安排了。


    第二個出場的當然是Applet的姊妹了,她就是Servlet。 Servlet就是為了增強Web Server的能力在Web Server 上運行的一個java小程序,Servlet用一個java的特定方案代替了其它一些服務器方編程技術,如:CGI、ISAPI、NSAPI等等。 由於客戶端仍使用瀏覽器,所以Servlet不需重新定義通訊協議,她直接使用HTTP協議。 由於她的身段不肥也不瘦並且編譯後的代碼速度也不錯,現在她正受歡迎著呢。


    (正說著,JSP急不可待得衝了出來……),哦,因為她覺得自己比Servlet強。 JSP就是Java Server Page,他是將Java代碼嵌入到HTML文檔之中形成的一種頁面,這個頁面由Java服務器執行生成最終的客戶端的純的HTML頁面。 其實,大家可能早已經熟悉了幾年前流行的微軟的ASP技術,他倆原理上是一樣的,只不過是ASP中使用VBScript,並且由服務器解釋執行,而JSP使用的是Java,優點自然是繼承了許多Java的優點了,如:垃圾回收、其它的企業技術等等。 另外,JSP在第一次執行時被編譯,以後再執行時執行的就是編譯後的代碼了,所以他的另一個優點就是速度上要快一些了。


    下一個閃亮登場的是EJB(掌聲四起),哇,他確實是個大明星,很紅的。 他是何許人? 聽我慢慢道來,EJB就是Enterprise Java Beans,他是服務器組件的標準,他的出現的目的就是為了對創建分佈式、物件導向應用程序組件定義一個統一、標準的方法,使創建網絡能動性程序變得簡單一點。 大家千萬不要把他與Java Beans 搞混了,他們是兩回事,Java Beans是為了一般應用程序組件定義了標準的接口。 但是,有時一個程序可能使用EJB和Java Beans兩種技術,因為它可以是一個程序的服務器同時又是另一個程序的客戶。


    該JDBC出場了,他的牌子比較老,認識他的人也比較多。 JDBC就是Java Database Connectivity,他是一組應用程序接口,定義了一個訪問數據庫(主要指關係型數據庫)的標準的Java庫。 因為許多企業開發者都有應用程序訪問數據庫的需求,所以Sun公司的JavaSoft小組開發了JDBC。 這樣,數據庫系統開發商提供數據源驅動程序就有了一個標準的結構,並且這些驅動程序允許Java程序直接訪問其相應的數據庫產品。


    下一個出場的是JNDI。 Internet 和Intranet在很大的程度上依賴命名和目錄服務來訪問網絡資源,這種服務使得一些關於用戶、機器、其它網絡服務以及遠程應用程序的信息得到了網絡級的共享。 JNDI即Java Naming and Directory services Interface,他是一組API,其定義了訪問諸如DNS、LDAP、RMI等命名和目錄服務的一種標準的Java方法。 他的功能非常強大,因為他通過單獨的一套API可以訪問各種各樣的服務,其作用在應用中不容忽視。

星期二, 7月 20, 2010

不得不知的11個Java第三方類別庫

http://www.5umagazine.com/program/1830.html
星期日, 11月1, 2009

Java第三方library ecosystem是一個很廣闊的範疇。 不久前有人撰文:每個項目中,你必須知道的11個Java第三方類庫。

單元測試

1.DBUnit

DBunit是一個基於junit擴展的數據庫測試框架。 它提供了大量的類對與數據庫相關的操作進行了抽象和封裝。

2.MOckito

Mockito是一個針對Java的mocking框架。 你可以使用簡潔的API編寫出漂亮的測試。

3.Hamcrest Matchers

Hamcrest 是一個測試輔助工具,提供了一套通用的匹配符Matcher,靈活使用這些匹配符定義的規則,程序員可以更加精確的表達自己的測試思想,指定所想設定的測試條件。

Junit4結合Hamcrest提供了新的斷言語句-assertThat,只需一個assertThat語句,結合Hamcrest提供的匹配符,就可以表達全部的測試思想。

Apache Commons

4.Configuration

這個工具是用來幫助處理配置文件的,支持很多種存儲方式

5.DbUtils

DbUtils可以將數據庫操作單獨做成一個包,簡化數據庫操作。

6.IO

可以看成是java.io的擴展。 它提供了文件閱讀功能,以及一些使用的方法,類似於DbUtils。

7.Lang

如果你要問我還有哪個庫一會在此名單之上,我會告訴你是Lang或者google Collections。 lang可以看成是對java.lang的擴展,提供了諸如StringUtils, StringEscapeUtils, RandomStringUtils, Tokenizer, WordUtils等工具類。

後起之秀

8.SLF4J

SLF4J是為各種loging APIs提供一個簡單統一的接口,從而使得最終用戶能夠在部署的時候配置自己希望的loging APIs實現。 Slf4j類似於Apache Common-Logging和Log4J,但Slf4j比它們都要優秀。

9.Google Collections

Java的集合框架是Java類庫當中使用頻率最高的部分之一,而Google Collections庫是由Google基於Java5.0 Collections Framework開發的一套新的Java集合框架,提供一些高級集合操作的API。

10.c3p0

C3P0是一個隨Hibernate一同分發的開源的JDBC連接池, 它位於lib目錄下。 包括了實現jdbc3和jdbc2擴展規範說明的Connection 和Statement 池的DataSources 對象。

11.Joda Time

Joda Time是一個強大易用的日期和時間庫,可以完全取代JDKDate和Calendar類。