/**

成都創(chuàng)新互聯(lián)公司企業(yè)建站,十多年網(wǎng)站建設經(jīng)驗,專注于網(wǎng)站建設技術,精于網(wǎng)頁設計,有多年建站和網(wǎng)站代運營經(jīng)驗,設計師為客戶打造網(wǎng)絡企業(yè)風格,提供周到的建站售前咨詢和貼心的售后服務。對于成都網(wǎng)站設計、成都做網(wǎng)站中不同領域進行深入了解和探索,創(chuàng)新互聯(lián)在網(wǎng)站建設中充分了解客戶行業(yè)的需求,以靈動的思維在網(wǎng)頁中充分展現(xiàn),通過對客戶行業(yè)精準市場調研,為客戶提供的解決方案。
* excel鏈接
*/
sheet.addCell(new Label(0, 8, "excel鏈接測試", wcf)); // 鏈接標題
sheet.mergeCells(0, 8, 2, 8);
WritableHyperlink link = new WritableHyperlink(0, 9, new URL(""));
link.setDescription("鏈接使用 鏈接到NilPower");
sheet.mergeCells(0, 9, 1, 9);
sheet.addHyperlink(link);
from
package com.cn.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
//import java.awt.List;
public class Query {
public ListUserVo showUser(){
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
ListUserVo list=new ArrayListUserVo();
try{
conn=JDBC_Connection.getConnection();
stmt=conn.createStatement();
rs=stmt.executeQuery("select * from users");
while(rs.next()){
UserVo userVo=new UserVo();
userVo.setId(rs.getInt("id"));
userVo.setName(rs.getString("name"));
userVo.setAge(rs.getInt("age"));
userVo.setTel(rs.getString("tel"));
userVo.setAddress(rs.getString("address"));
list.add(userVo);
}
}catch(SQLException e){
e.printStackTrace();
}finally{
JDBC_Connection.free(rs, conn, stmt);
}
return list;
}
public static void main(String[] args) {
Query query=new Query();
ListUserVo list=query.showUser();
if(list!=null){
System.out.print("id\t");
System.out.print("name\t");
System.out.print("age\t");
System.out.print("tel\t");
System.out.print("address\t");
System.out.println();
for(int i=0;ilist.size();i++){
System.out.print(list.get(i).getId()+"\t");
System.out.print(list.get(i).getName()+"\t");
System.out.print(list.get(i).getAge()+"\t");
System.out.print(list.get(i).getTel()+"\t ");
System.out.print(list.get(i).getAddress()+"\t");
System.out.println();
}
}
}
}
要自己加驅動,,,,這個你應該可以看懂吧,,
使用jdbc技術連接數(shù)據(jù)庫
使用語句對象statement的execute方法可以執(zhí)行對索引的操作
例如代碼如下
public class IndexFiles {
//使用方法:: IndexFiles [索引輸出目錄] [索引的文件列表] ...
public static void main(String[] args) throws Exception {
String indexPath = args[0];
IndexWriter writer;
//用指定的語言分析器構造一個新的寫索引器(第3個參數(shù)表示是否為追加索引)
writer = new IndexWriter(indexPath, new SimpleAnalyzer(), false);
for (int i=1; iargs.length; i++) {
System.out.println("Indexing file " + args[i]);
InputStream is = new FileInputStream(args[i]);
//構造包含2個字段Field的Document對象
//一個是路徑path字段,不索引,只存儲
//一個是內容body字段,進行全文索引,并存儲
Document doc = new Document();
doc.add(Field.UnIndexed("path", args[i]));
doc.add(Field.Text("body", (Reader) new InputStreamReader(is)));
//將文檔寫入索引
writer.addDocument(doc);
is.close();
};
//關閉寫索引器
writer.close();
}
}
public class Search {
public static void main(String[] args) throws Exception {
String indexPath = args[0], queryString = args[1];
//指向索引目錄的搜索器
Searcher searcher = new IndexSearcher(indexPath);
//查詢解析器:使用和索引同樣的語言分析器
Query query = QueryParser.parse(queryString, "body",
new SimpleAnalyzer());
//搜索結果使用Hits存儲
Hits hits = searcher.search(query);
//通過hits可以訪問到相應字段的數(shù)據(jù)和查詢的匹配度
for (int i=0; ihits.length(); i++) {
System.out.println(hits.doc(i).get("path") + "; Score: " +
hits.score(i));
};
}
}在整個檢索過程中,語言分析器,查詢分析器,甚至搜索器(Searcher)都是提供了抽象的接口,可以根據(jù)需要進行定制。
分 析:
索引過程中可以看到:
語言分析器提供了抽象的接口,因此語言分析(Analyser)是可以定制的,雖然lucene缺省提供了2個比較通用的分析器SimpleAnalyser和StandardAnalyser,這2個分析器缺省都不支持中文,所以要加入對中文語言的切分規(guī)則,需要修改這2個分析器。
Lucene并沒有規(guī)定數(shù)據(jù)源的格式,而只提供了一個通用的結構(Document對象)來接受索引的輸入,因此輸入的數(shù)據(jù)源可以是:數(shù)據(jù)庫,WORD文檔,PDF文檔,HTML文檔……只要能夠設計相應的解析轉換器將數(shù)據(jù)源構造成成Docuement對象即可進行索引。
對于大批量的數(shù)據(jù)索引,還可以通過調整IndexerWrite的文件合并頻率屬性(mergeFactor)來提高批量索引的效率。
總 結:
搜索結果返回的是Hits對象,可以通過它再訪問Document==Field中的內容。假設根據(jù)body字段進行全文檢索,可以將查詢結果的path字段和相應查詢的匹配度(score)打印出來,
java變成對數(shù)組進行排序可以使用ArraySort方法,保存源數(shù)組下標值可以存入map中,如下代碼:
import?java.util.ArrayList;import?java.util.Arrays;import?java.util.HashMap;import?java.util.List;?public?class?ceshi?{????public?static?void?main(String[]?args)?{????????int?n?=?5;????????int[]?a?=?{?8,?5,?4,?6,?2,?1,?7,?9,?3?};????????HashMap?map?=?new?HashMap();????????for?(int?i?=?0;?i??a.length;?i++)?{????????????map.put(a[i],?i);?//?將值和下標存入Map????????}?????????//?排列????????List?list?=?new?ArrayList();????????Arrays.sort(a);?//?升序排列????????for?(int?i?=?0;?i??a.length;?i++)?{????????????list.add(a[i]);????????}????????for?(Object?object?:?list)?{????????????System.out.print(object?+?",");????????}????????System.out.println();?????????//?查找原始下標????????for?(int?i?=?0;?i??n;?i++)?{????????????System.out.print(map.get(a[i])?+?",");????????}?????}?}
運行結果如下:
import ja.io.*;
//獲取文件夾內容
public class getthing
{
public static void main(String[] args) throws Exception
{
System.out.println(welstr);
listFile(new File("e:\\aa")); //想要搜索的路徑
}
public static void listFile(File file) throws Exception
{
if(file.isFile())
{
//輸出的是完整的文件夾內文件的路徑
System.out.println("File :"+file.getAbsolutePath());
//01.jpg就是你要找的圖片
if (file.getAbsolutePath().endsWith("01.jpg"))
System.out.println("有搜索的圖片");
}
else
{
System.out.println("Dir :"+file.getAbsolutePath());
File[] files =file.listFiles();
for(int i=0;ifiles.length;i++)
{
listFile(files[i]);
System.out.println("回車");
}
}
}
}
1 首先確定你要搜索的目錄
2 要搜索的關鍵字 如“花”
3 只搜索圖片類型 .jpg .gif .png .bmp之類的
4 在文本框里獲得搜索的關鍵字
5 取得要搜索目錄下的所有圖片類型的名字
6 用關鍵字和取得的文件名一一進行對比
7 若有關鍵字 記錄該圖片的名字
8 若都沒關鍵字 表示無該名字的圖片
9 空白區(qū)域你可以用一個窗體來表示
10 把搜索到的圖片都顯示在這個窗體。
bmp圖像文件數(shù)據(jù)分為三個部分:
1、前14個字節(jié)為文件信息頭,在這部分信息中包含了位圖信息標志、該bmp圖像的大小和圖像實際數(shù)據(jù)的相對偏移量這三部分有用的信息。
位圖標志一定為“0x4D42”,否則,該文件不是bmp圖像。
在VC++中,這14個字節(jié)對應一個數(shù)據(jù)類型,類型名為“BITMAPFILEHEADER”,它的定義為:
typedef struct tagBITMAPFILEHEADER {
WORD bfType; //位圖信息標志
DWORD bfSize; //圖像的大小
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits; //圖像實際數(shù)據(jù)的相對偏移量
} BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;
可以設一個該類型的變量:BITMAPFILEHEADER bmfh,將bmp圖像文件的前14字節(jié)數(shù)據(jù)讀入這個變量中,然后通過判斷bmfh.bfType == 0x4D42,確定是不是為bmp圖像。
2、接下來40個字節(jié)為位圖信息頭,其中存儲了該bmp圖像的有關信息。這些信息包括:圖像寬度(像素)、圖像高度(像素)、圖像長度(字節(jié),僅僅是圖像實際數(shù)據(jù)的長度,不包括各個信息頭)、水平分辨率、垂直分辨率、每個像素的存儲位數(shù)等信息。
其中,通過“每個像素的存儲位數(shù)”這個信息可以知道圖像的顏色:
如果“每個像素的存儲位數(shù)”的值只有四種:為1,說明圖像只有兩種顏色(黑、白);為4,說明圖像有16種顏色;為8,說明圖像有256種顏色;為24,說明該圖像為真彩色圖像,顏色數(shù)為2^24。這四種取值對應四種bmp圖像,也就是說,bmp圖像只有這四種。
在這四種bmp圖像種,前三種都需要在圖像文件中包含調色板數(shù)據(jù),分別存儲三種圖像的2、16、256種顏色。而最后一種bmp格式的圖像不需要調色板,因為這種圖像的“每個像素的存儲位數(shù)”值為24,也就是說,存儲一個像素值需要24位,正好可以存儲一個像素的顏色(紅、綠、藍各8位)。
在VC++中,這40個字節(jié)的位圖信息頭也有一個數(shù)據(jù)類型,類型名為“BITMAPINFOHEADER”,它的定義為:
typedef struct tagBITMAPINFOHEADER{
DWORD biSize;
LONG biWidth; //圖像寬度(像素)
LONG biHeight; //圖像高度(像素)
WORD biPlanes;
WORD biBitCount; //每個像素的存儲位數(shù)
DWORD biCompression;
DWORD biSizeImage; //圖像長度(字節(jié),僅僅是圖像實際數(shù)據(jù)的長度,不包括各個信息頭)
LONG biXPelsPerMeter; //水平分辨率
LONG biYPelsPerMeter; //垂直分辨率
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;
3、接下來若干個字節(jié)為調色板,只有前三種bmp圖像有,第四種真彩色bmp圖像沒有這部分數(shù)據(jù)。
調色板是一個數(shù)組,每個數(shù)組元素有四字節(jié),只有三個字節(jié)有用,另外一個沒有。有用的三個字節(jié)存儲一種顏色(紅綠藍各占一字節(jié)),這四個字節(jié)在VC++中定義為:
typedef struct tagRGBQUAD {
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
} RGBQUAD;
定義一個這種類型的數(shù)組即為調色板。數(shù)組的長度可由BITMAPINFOHEADER中的biBitCount推算出來。
4、上述三部分信息之后,即是實際的像素數(shù)據(jù)。一個像素的存儲位數(shù)為1、4、8或16,正如前面所述。
如果是1位,對應的bmp圖像應該有一個長度為2的調色板。這一位的值只能是0或1,用來指明該像素的顏色在調色板中的地址。
如果是4位,對應的bmp圖像應該有一個長度為16的調色板。這4位的值有16種,同樣指示該像素的顏色在調色板中的地址。
如果是8位,對應的bmp圖像應該有一個長度為256的調色板。這8位的值有256種,同樣指示該像素的顏色在調色板中的地址。
如果是24位,對應的bmp圖像沒有調色板,該像素的顏色由這24位數(shù)據(jù)直接表示。
bmp圖像的數(shù)據(jù)就這幾個部分。
任何一個bmp圖像的像素都是由紅綠藍三種顏色組成(帶調色板也好,不帶調色板也好)。如果一個像素的紅綠藍三種色的值相等,那么該像素就是灰色的。灰度圖是這樣一種有嚴格規(guī)定的bmp圖像:它是上述四種bmp圖像的第三種,并且它的調色板的每個數(shù)組元素的紅綠藍三值都相同,所以灰度圖的灰度種數(shù)是256。
若要保存圖像,需要按順序保存文件信息頭、位圖信息頭、調色板(如果有)和圖像的實際數(shù)據(jù)。程序可以這樣寫:
bool Write(CString FileName)
{
CFile file;
BITMAPFILEHEADER bmfh;
if(! (bmi pBits))
{
AfxMessageBox("Data is not valid!");
return FALSE;
}
//創(chuàng)建文件
if(!file.Open(FileName,CFile::modeCreate | CFile::modeWrite))
{
AfxMessageBox("File creating fails!");
return FALSE;
}
//填寫文件信息頭
bmfh.bfType = 0x4d42;
bmfh.bfReserved1 = bmfh.bfReserved2 = 0;
int nInfoSize = sizeof(BITMAPINFOHEADER) + GetPaletteSize() * sizeof(RGBQUAD);
bmfh.bfOffBits = sizeof(bmfh) + nInfoSize;
bmfh.bfSize = bmfh.bfOffBits + bmi-bmiHeader.biSizeImage;
//寫文件
file.Write( (LPVOID)bmfh, sizeof(bmfh));
file.Write( (LPVOID)bmi, nInfoSize);
file.Write( (LPVOID)pBits, bmi-bmiHeader.biSizeImage);
return TRUE;
}
網(wǎng)站題目:java實現(xiàn)位圖索引代碼,Java 位圖
文章URL:http://chinadenli.net/article31/dsgpipd.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站內鏈、企業(yè)網(wǎng)站制作、用戶體驗、服務器托管、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)