- 浏览: 477436 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
excellent95:
谢楼主分享,确实是CSS图片问题
Struts2判断页面是POST方式提交还是GET方式提交 -
wangluo2:
javaBase那个包显示有问题啊pom文件那一行报错了
微信公众平台开发实战(08) 基于地理信息的服务(LBS) -
andilyliao:
jd技术这么渣也好意思出书,真是醉了
《京东技术解密》试读--十年磨一剑 -
bitray:
刘强东作序多什么,他也不会什么技术,腾讯出来帮他还不是因为腾讯 ...
《京东技术解密》试读--十年磨一剑 -
come_for_dream:
想试试搞这个
《大型分布式网站架构设计与实践》试读
需求:
在表A:S2s中有3个字段,cust_id,form_date和isTransmit,在表B:Flag中,有3个字段:cust_id、startDate和endDate,请找出S2s中的某些记录,约束条件如下:
1、该笔记录的cust_id存在于表Flag中,即S2s.cust_id=Flag.cust_id;
2、该笔记录的isTransmit值为N;
3、该笔记录的form_date在表Flag的startDate和endDate之间,即form_date>=startDate且form_date<=endDate;
4、form_date格式为YYYYMMDD,startDate和endDate格式为YYYY-MM-DD;
由于Production环境的资料需要保密,只能提供表A的3个自动和表B的3字段,现在客户已经导出到txt文档,每笔记录包含3个字段,以空格分开。
下面我们分步骤开实现如何测试客户提供的数据:
1、创建2个类,将文本文件中的数据实例化对象;
public class S2s { private String cust_id; private String form_date; private String isTransmit; /** * @return the cust_id */ public String getCust_id() { return cust_id; } /** * @param cust_id the cust_id to set */ public void setCust_id(String cust_id) { this.cust_id = cust_id; } /** * @return the form_date */ public String getForm_date() { return form_date; } /** * @param form_date the form_date to set */ public void setForm_date(String form_date) { this.form_date = form_date; } /** * @return the isTransmit */ public String getIsTransmit() { return isTransmit; } /** * @param isTransmit the isTransmit to set */ public void setIsTransmit(String isTransmit) { this.isTransmit = isTransmit; } }
public class Flag { private String customer_id; private String startDate; private String endDate; /** * @return the customer_id */ public String getCustomer_id() { return customer_id; } /** * @param customer_id the customer_id to set */ public void setCustomer_id(String customer_id) { this.customer_id = customer_id; } /** * @return the startDate */ public String getStartDate() { return startDate; } /** * @param startDate the startDate to set */ public void setStartDate(String startDate) { this.startDate = startDate; } /** * @return the endDate */ public String getEndDate() { return endDate; } /** * @param endDate the endDate to set */ public void setEndDate(String endDate) { this.endDate = endDate; } }
2、分行读取文本文件,并将每条记录序列化为对象,存储到List中:
我们先来看看txt文档中的片段:
S223821747 2008-09-05 2008-09-15 A227577478 2008-09-05 2008-09-15 L123462919 2008-09-05 2008-09-15 S124039554 2008-09-05 2008-09-15 F224800911 2008-09-05 2008-09-15 A225667273 2008-09-05 2008-09-15 F223968423 2008-09-05 2008-09-15 Z100098584 2008-09-05 2008-09-30 H122644620 2008-09-05 2008-09-30 U221392263 2008-09-05 2008-09-30 A227669499 2008-09-05 2008-09-30 N224708641 2008-09-05 2008-09-30 B290023255 2008-09-05 2008-09-30 C221114157 2008-09-05 2008-09-30 T220902657 2008-09-05 2008-09-30
从中我们可以看到,3个字段以空格分隔,其中第一个字段和第二个字段中间有多个空格;
FileReader reader = new FileReader(flagFileName); BufferedReader br = new BufferedReader(reader); String s1 = null; while ((s1 = br.readLine()) != null) { //TODO }
3、将得到的字符串分割为字符数组(String[]):
s2 = s1.split(" ");
4、通过打印字符数组可知s2[0]、s2[6]、s2[7]为3个字段的位置,将3个字段的值放入对象并存储到List中:
f = new Flag(); f.setCustomer_id(s2[0]); f.setStartDate(s2[7]); f.setEndDate(s2[8]); flagList.add(f);
该方法的完整代码如下:
/** * 从Flag 的txt文件中按行读取,将得到的3个字符串分别放入Flag对象中, * 然后将对于存储在返回List中 * @return */ public static List readFlag() { FileReader reader = null; List flagList = new ArrayList(); try { reader = new FileReader(flagFileName); BufferedReader br = new BufferedReader(reader); String s1 = null; String[] s2 = null; Flag f = null; int i = 0; int j = 0; while ((s1 = br.readLine()) != null) { s2 = s1.split(" "); // if (s2.length != 9) { f = new Flag(); f.setCustomer_id(s2[0]); f.setStartDate(s2[6]); f.setEndDate(s2[7]); i++; j++; flagList.add(f); continue; } f = new Flag(); f.setCustomer_id(s2[0]); f.setStartDate(s2[7]); f.setEndDate(s2[8]); i++; flagList.add(f); } br.close(); reader.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return flagList; }
5、判断时间区间,由于时间格式不同,先要去掉startDate和endDate的“-”,用String的replaceAll()即可,然后就可以直接比较了:
/** * 先将Flag对象中的startDate和endDate的格式由YYYY-MM-DD转换为YYYYMMDD * 然后看S2s对象中的formDate是否: * formDate.compareTo(startDate) >= 0) * && (formDate.compareTo(endDate) <= 0 * 比对结果为返回值 * @param s * @param f * @return */ public static boolean inDateField(S2s s, Flag f) { String formDate = s.getForm_date(); if (f == null) { return false; } String startDate = f.getStartDate(); String endDate = f.getEndDate(); if (formDate == null || "".equals(formDate) || startDate == null || "".equals(startDate) || endDate == null || "".equals(endDate)) { return false; } startDate = startDate.replaceAll("-", ""); endDate = endDate.replaceAll("-", ""); return (formDate.compareTo(startDate) >= 0) && (formDate.compareTo(endDate) <= 0); }
6、最后我们来看S2s中的cust_id是否存在于表Flag中,我们先读取Flag中的所有记录,然后将所有cust_id存于一个HashSet中,同时以cust_id为Key,以Flag对象为Value,存储到一个HashMap中;然后使用HashSet的contains()看cust_id是否存在于此HashSet中:
custIdSet.contains(s.getCust_id()
完整代码如下:
public static void compareId() { List s2sList = getListS2sN(readS2s()); List flagList = readFlag(); Flag f = null; // 存放“新開戶ID清單”中的ID Set custIdSet = new HashSet(); Map beansMap = new HashMap(); int refSize2 = 0; if (flagList != null && flagList.size() > 0) { refSize2 = flagList.size(); } for (int i = 0; i < refSize2; i++) { f = (Flag) flagList.get(i); custIdSet.add(f.getCustomer_id()); beansMap.put(f.getCustomer_id(), f); } System.out.println("custIdSet.size(): " + custIdSet.size()); System.out.println("beansMap.size(): " + beansMap.size()); int refSize = 0; if (s2sList != null && s2sList.size() > 0) { refSize = s2sList.size(); } System.out.println("s2sList.size(): " + refSize); S2s s = null; for (int i = 0; i < refSize; i++) { s = (S2s) s2sList.get(i); f = (Flag) beansMap.get(s.getCust_id()); System.out.println(custIdSet.contains(s.getCust_id()) + " : " + inDateField(s, f) + " : " + s.getCust_id() + ":"); if (custIdSet.contains(s.getCust_id()) && inDateField(s, f)) { System.out.println("####" + i + ":" + custIdSet.contains(s.getCust_id()) + " : " + inDateField(s, f) + " : " + s.getCust_id() + ":"); } } }
7、其他:
可以使用POI生成Excel档,代码如下:
/** * 将S2s的List生成Excel档 */ public static void createExcelS2s() { String xlsFile = "D:/0Excel/S2s.xls"; List s2sList = getListS2sN(readS2s()); try { // 产生工作簿对象 HSSFWorkbook workbook = new HSSFWorkbook(); // 产生工作表对象,设置工作表的名称为Sheet1 HSSFSheet sheet = workbook.createSheet("Sheet1"); sheet.setColumnWidth((short) 0, (short) 4000); sheet.setColumnWidth((short) 1, (short) 2000); sheet.setColumnWidth((short) 2, (short) 3000); // 产生一行 HSSFRow row = sheet.createRow((short) 0); // 产生第1个单元格 客戶ID或卡號 HSSFCell cell_01 = row.createCell((short) 0, HSSFCell.CELL_TYPE_STRING); cell_01.setCellValue(new HSSFRichTextString("cust_id")); // 产生第2个单元格 BLK HSSFCell cell_02 = row.createCell((short) 1, HSSFCell.CELL_TYPE_STRING); cell_02.setCellValue(new HSSFRichTextString("form_date")); // 产生第3个单元格 處理時間 HSSFCell cell_03 = row.createCell((short) 2, HSSFCell.CELL_TYPE_STRING); cell_03.setCellValue(new HSSFRichTextString("isTransmit")); HSSFCell newCell_01 = null; HSSFCell newCell_02 = null; HSSFCell newCell_03 = null; int s2sSize = 0; if (s2sList != null) { s2sSize = s2sList.size(); } S2s s = null; for (int i = 1; i < s2sSize; i++) { s = (S2s) s2sList.get(i); // 产生一行 HSSFRow rowNew = sheet.createRow((short) i); newCell_01 = rowNew.createCell((short) 0, HSSFCell.CELL_TYPE_STRING); newCell_01.setCellValue(new HSSFRichTextString(s.getCust_id())); // 产生第2个单元格 BLK newCell_02 = rowNew.createCell((short) 1, HSSFCell.CELL_TYPE_STRING); newCell_02 .setCellValue(new HSSFRichTextString(s.getForm_date())); // 产生第3个单元格 處理時間 newCell_03 = rowNew.createCell((short) 2, HSSFCell.CELL_TYPE_STRING); newCell_03.setCellValue(new HSSFRichTextString(s .getIsTransmit())); } FileOutputStream fOut = new FileOutputStream(xlsFile); workbook.write(fOut); fOut.flush(); fOut.close(); System.out.println("文件生成..."); // 以下语句读取生成的Excel文件内容 FileInputStream fIn = new FileInputStream(xlsFile); HSSFWorkbook readWorkBook = new HSSFWorkbook(fIn); HSSFSheet readSheet = readWorkBook.getSheet("Sheet1"); HSSFRow readRow = readSheet.getRow(0); HSSFCell readCell = readRow.getCell((short) 0); System.out.println("第一個單元是:" + readCell.getRichStringCellValue()); } catch (Exception e) { e.printStackTrace(); System.out.println(e); } }
整个测试类的完整代码如下:
package com.coderdream.s2s; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class Test { /** S2S_txt文件位置 */ private static String s2sFileName = "S2S_1.txt"; /** Flag_txt文件位置 */ private static String flagFileName = "Flag_1.txt"; /** * @param args */ public static void main(String[] args) { //readS2s(); //printListS2s(readS2s()); //printListS2s(getListS2sN(readS2s())); //printListFlag(readFlag()); //compareId(); //testSet(); //createExcel(); //createExcelFlag(); compareId(); //testReplaceAll(); } /** * 从S2s 的txt文件中按行读取,将得到的3个字符串分别放入S2s对象中, * 然后将对于存储在返回List中 * * @return */ public static List readS2s() { FileReader reader = null; List s2sList = new ArrayList(); try { reader = new FileReader(s2sFileName); BufferedReader br = new BufferedReader(reader); String s1 = null; String[] s2 = null; S2s s = null; while ((s1 = br.readLine()) != null) { // 根据导出的文本可知,字符串以空格分开 s2 = s1.split(" "); s = new S2s(); s.setCust_id(s2[0]); s.setForm_date(s2[7]); s.setIsTransmit(s2[9]); s2sList.add(s); } br.close(); reader.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return s2sList; } /** * 从Flag 的txt文件中按行读取,将得到的3个字符串分别放入Flag对象中, * 然后将对于存储在返回List中 * @return */ public static List readFlag() { FileReader reader = null; List flagList = new ArrayList(); try { reader = new FileReader(flagFileName); BufferedReader br = new BufferedReader(reader); String s1 = null; String[] s2 = null; Flag f = null; int i = 0; int j = 0; while ((s1 = br.readLine()) != null) { s2 = s1.split(" "); // if (s2.length != 9) { f = new Flag(); f.setCustomer_id(s2[0]); f.setStartDate(s2[6]); f.setEndDate(s2[7]); i++; j++; flagList.add(f); continue; } f = new Flag(); f.setCustomer_id(s2[0]); f.setStartDate(s2[7]); f.setEndDate(s2[8]); i++; flagList.add(f); } br.close(); reader.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return flagList; } /** * @param s2 */ public static void printArray(String[] s2) { for (int i = 0; i < s2.length; i++) { if (s2[i] != null && !"".equals(s2[i].trim())) { System.out.print(s2[i] + ":"); } } System.out.println(); } /** * @param s2sList */ public static void printListS2s(List s2sList) { S2s s = null; int size = 0; if (s2sList != null) { size = s2sList.size(); } int index = 0; for (int i = 0; i < size; i++) { s = (S2s) s2sList.get(i); index = i + 1; System.out.println(index + "\t:" + s.getCust_id() + ":" + s.getForm_date() + ":" + s.getIsTransmit()); } } /** * @param s2s */ public static void printS2s(S2s s2s) { if (s2s != null) { System.out.println(s2s.getCust_id() + ":" + s2s.getForm_date() + ":" + s2s.getIsTransmit()); } } /** * @param s2sList * @return */ public static List getListS2sN(List s2sList) { List list = new ArrayList(); S2s s = null; int size = 0; if (s2sList != null) { size = s2sList.size(); } for (int i = 0; i < size; i++) { s = (S2s) s2sList.get(i); if ("N".equals(s.getIsTransmit())) { list.add(s); } } return list; } /** * @param flagList */ public static void printListFlag(List flagList) { Flag f = null; int size = 0; if (flagList != null) { size = flagList.size(); } int index = 0; for (int i = 0; i < size; i++) { f = (Flag) flagList.get(i); index = i + 1; System.out.println(index + "\t:" + f.getCustomer_id() + ":" + f.getStartDate() + ":" + f.getEndDate()); } } /** * @param flag */ public static void printFlag(Flag flag) { if (flag != null) { System.out.println(flag.getCustomer_id() + ":" + flag.getStartDate() + ":" + flag.getEndDate()); } } /** * 先将Flag对象中的startDate和endDate的格式由YYYY-MM-DD转换为YYYYMMDD * 然后看S2s对象中的formDate是否: * formDate.compareTo(startDate) >= 0) * && (formDate.compareTo(endDate) <= 0 * 比对结果为返回值 * @param s * @param f * @return */ public static boolean inDateField(S2s s, Flag f) { String formDate = s.getForm_date(); if (f == null) { return false; } String startDate = f.getStartDate(); String endDate = f.getEndDate(); if (formDate == null || "".equals(formDate) || startDate == null || "".equals(startDate) || endDate == null || "".equals(endDate)) { return false; } startDate = startDate.replaceAll("-", ""); endDate = endDate.replaceAll("-", ""); return (formDate.compareTo(startDate) >= 0) && (formDate.compareTo(endDate) <= 0); } /** * */ public static void compareId() { List s2sList = getListS2sN(readS2s()); List flagList = readFlag(); Flag f = null; // 存放“新開戶ID清單”中的ID Set custIdSet = new HashSet(); Map beansMap = new HashMap(); int refSize2 = 0; if (flagList != null && flagList.size() > 0) { refSize2 = flagList.size(); } for (int i = 0; i < refSize2; i++) { f = (Flag) flagList.get(i); custIdSet.add(f.getCustomer_id()); beansMap.put(f.getCustomer_id(), f); } System.out.println("custIdSet.size(): " + custIdSet.size()); System.out.println("beansMap.size(): " + beansMap.size()); int refSize = 0; if (s2sList != null && s2sList.size() > 0) { refSize = s2sList.size(); } System.out.println("s2sList.size(): " + refSize); S2s s = null; for (int i = 0; i < refSize; i++) { s = (S2s) s2sList.get(i); f = (Flag) beansMap.get(s.getCust_id()); System.out.println(custIdSet.contains(s.getCust_id()) + " : " + inDateField(s, f) + " : " + s.getCust_id() + ":"); if (custIdSet.contains(s.getCust_id()) && inDateField(s, f)) { System.out.println("####" + i + ":" + custIdSet.contains(s.getCust_id()) + " : " + inDateField(s, f) + " : " + s.getCust_id() + ":"); } } } /** * 将S2s的List生成Excel档 */ public static void createExcelS2s() { String xlsFile = "D:/0Excel/S2s.xls"; List s2sList = getListS2sN(readS2s()); try { // 产生工作簿对象 HSSFWorkbook workbook = new HSSFWorkbook(); // 产生工作表对象,设置工作表的名称为Sheet1 HSSFSheet sheet = workbook.createSheet("Sheet1"); sheet.setColumnWidth((short) 0, (short) 4000); sheet.setColumnWidth((short) 1, (short) 2000); sheet.setColumnWidth((short) 2, (short) 3000); // 产生一行 HSSFRow row = sheet.createRow((short) 0); // 产生第1个单元格 客戶ID或卡號 HSSFCell cell_01 = row.createCell((short) 0, HSSFCell.CELL_TYPE_STRING); cell_01.setCellValue(new HSSFRichTextString("cust_id")); // 产生第2个单元格 BLK HSSFCell cell_02 = row.createCell((short) 1, HSSFCell.CELL_TYPE_STRING); cell_02.setCellValue(new HSSFRichTextString("form_date")); // 产生第3个单元格 處理時間 HSSFCell cell_03 = row.createCell((short) 2, HSSFCell.CELL_TYPE_STRING); cell_03.setCellValue(new HSSFRichTextString("isTransmit")); HSSFCell newCell_01 = null; HSSFCell newCell_02 = null; HSSFCell newCell_03 = null; int s2sSize = 0; if (s2sList != null) { s2sSize = s2sList.size(); } S2s s = null; for (int i = 1; i < s2sSize; i++) { s = (S2s) s2sList.get(i); // 产生一行 HSSFRow rowNew = sheet.createRow((short) i); newCell_01 = rowNew.createCell((short) 0, HSSFCell.CELL_TYPE_STRING); newCell_01.setCellValue(new HSSFRichTextString(s.getCust_id())); // 产生第2个单元格 BLK newCell_02 = rowNew.createCell((short) 1, HSSFCell.CELL_TYPE_STRING); newCell_02 .setCellValue(new HSSFRichTextString(s.getForm_date())); // 产生第3个单元格 處理時間 newCell_03 = rowNew.createCell((short) 2, HSSFCell.CELL_TYPE_STRING); newCell_03.setCellValue(new HSSFRichTextString(s .getIsTransmit())); } FileOutputStream fOut = new FileOutputStream(xlsFile); workbook.write(fOut); fOut.flush(); fOut.close(); System.out.println("文件生成..."); // 以下语句读取生成的Excel文件内容 FileInputStream fIn = new FileInputStream(xlsFile); HSSFWorkbook readWorkBook = new HSSFWorkbook(fIn); HSSFSheet readSheet = readWorkBook.getSheet("Sheet1"); HSSFRow readRow = readSheet.getRow(0); HSSFCell readCell = readRow.getCell((short) 0); System.out.println("第一個單元是:" + readCell.getRichStringCellValue()); } catch (Exception e) { e.printStackTrace(); System.out.println(e); } } public static void createExcelFlag() { String xlsFile = "D:/0Excel/Flag.xls"; List flagList = readFlag(); try { // 产生工作簿对象 HSSFWorkbook workbook = new HSSFWorkbook(); // 产生工作表对象,设置工作表的名称为Sheet1 HSSFSheet sheet = workbook.createSheet("Sheet1"); sheet.setColumnWidth((short) 0, (short) 4000); sheet.setColumnWidth((short) 1, (short) 6000); sheet.setColumnWidth((short) 2, (short) 6000); // 产生一行 HSSFRow row = sheet.createRow((short) 0); // 产生第1个单元格 cust_id HSSFCell cell_01 = row.createCell((short) 0, HSSFCell.CELL_TYPE_STRING); cell_01.setCellValue(new HSSFRichTextString("cust_id")); // 产生第2个单元格 startDate HSSFCell cell_02 = row.createCell((short) 1, HSSFCell.CELL_TYPE_STRING); cell_02.setCellValue(new HSSFRichTextString("startDate")); // 产生第3个单元格 endDate HSSFCell cell_03 = row.createCell((short) 2, HSSFCell.CELL_TYPE_STRING); cell_03.setCellValue(new HSSFRichTextString("endDate")); HSSFCell newCell_01 = null; HSSFCell newCell_02 = null; HSSFCell newCell_03 = null; int flagSize = 0; if (flagList != null) { flagSize = flagList.size(); } Flag f = null; for (int i = 1; i < flagSize; i++) { f = (Flag) flagList.get(i); // 产生一行 HSSFRow rowNew = sheet.createRow((short) i); // 产生第1个单元格 cust_id newCell_01 = rowNew.createCell((short) 0, HSSFCell.CELL_TYPE_STRING); newCell_01.setCellValue(new HSSFRichTextString(f .getCustomer_id())); // 产生第2个单元格 startDate newCell_02 = rowNew.createCell((short) 1, HSSFCell.CELL_TYPE_STRING); newCell_02 .setCellValue(new HSSFRichTextString(f.getStartDate())); // 产生第3个单元格 endDate newCell_03 = rowNew.createCell((short) 2, HSSFCell.CELL_TYPE_STRING); newCell_03.setCellValue(new HSSFRichTextString(f.getEndDate())); } FileOutputStream fOut = new FileOutputStream(xlsFile); workbook.write(fOut); fOut.flush(); fOut.close(); System.out.println("文件生成..."); // 以下语句读取生成的Excel文件内容 FileInputStream fIn = new FileInputStream(xlsFile); HSSFWorkbook readWorkBook = new HSSFWorkbook(fIn); HSSFSheet readSheet = readWorkBook.getSheet("Sheet1"); HSSFRow readRow = readSheet.getRow(0); HSSFCell readCell = readRow.getCell((short) 0); System.out.println("第一個單元是:" + readCell.getRichStringCellValue()); } catch (Exception e) { System.out.println(e); } } public static void testReplaceAll() { String startDate = "2008.09.01"; String endDate = "2008.09.30"; String sDate = startDate.replaceAll("[.]", ""); String eDate = endDate.replaceAll("[.]", ""); System.out.println(startDate + ":" + endDate + ":" + sDate + ":" + eDate); } }
运行结果:
custIdSet.size(): 20 beansMap.size(): 20 s2sList.size(): 10 true : false : S223821747: true : false : L123462919: false : false : F223700449: false : false : U120222840: true : false : F224800911: true : false : S223821747: true : true : Z100098584: ####6:true : true : Z100098584: false : false : L100867210: true : true : C221114157: ####8:true : true : C221114157: true : true : B122081672: ####9:true : true : B122081672:
- S2sDemo.rar (11.2 KB)
- 描述: 直接通过eclipse导入工具,然后添加POI包
- 下载次数: 2
发表评论
-
Spring Security 3.0 记住密码功能
2016-01-13 22:58 21151,在数据库中新增记录表 -- ---------- ... -
解决JavaMail发邮件抛出找不到SharedByteArrayInputStream类的异常
2011-07-22 11:21 7701在最近项目开发过程中 ... -
怎样让Word自动更新图片与表格编号
2010-12-31 17:03 11739怎样让Word 自动更新图片与表格编号 ... -
W3C_School在线教程chm版制作教程
2010-12-22 21:48 7675W3C_School 在线教程chm 版制作教程 ... -
String与StringBuffer区别详解
2010-12-17 17:19 3290String 与StringBuffe ... -
Spring 3.0 新特性
2010-12-10 10:58 3409Spring 3.0 新特性 ... -
iText生成PDF时表头设置错误导出数据不能完全导出
2010-07-20 12:16 2188在利用iText生成PDF文件时,通常由于数据量比较多时会产生 ... -
事务管理入门-JDBC/Hibernate事务管理器/Spring注解 3种方式
2009-07-28 15:09 4685在软件开发过程中,经 ... -
JavaMail
2009-07-16 16:56 0javamail 怎样设置发件人的名字 http://to ... -
IBM Ajax系列教程
2009-02-16 20:39 1738第 1 部分: Ajax 简介 Ajax ... -
项目经验之弹出页面再弹出页面
2009-02-13 18:58 1108在项目中有这样一个场景,某弹出页面要弹出另一个: 弹出页面: ... -
正则表达式使用之替换多个字符串
2009-02-13 15:44 2568想一次性去掉某个文本文件中的某些字符串: 实现方式: 直接用竖 ... -
OGNL的jar档、文档和源代码
2009-02-05 09:25 52221、官方网站: http://mirrors.ibiblio. ... -
Calendar与java.sql.Date
2008-12-08 15:29 1706在Oracle数据库中,我们会有Date类型的数据,存储格 ... -
利用JavaScript控制单选框
2008-12-04 19:14 2309<script> function f(index ... -
JSP中使用JavaScript重定向页面
2008-12-03 10:04 3361第一种,不重定向,推荐使用。 function init( ... -
如何去掉 Code Pro 的警告标志
2008-11-07 16:35 1340Code Pro 是一个很好的代码格式检查工具,不过有时我们只 ... -
使用Struts提交多行数据
2008-11-07 11:27 3922使用Struts提交多行数据 http://blog.fl ... -
Ant使用经验
2008-10-22 10:18 12931、【示例1】: <?xml version=" ... -
利用JXL(JExcelApi)操作Excel文档
2008-10-09 10:51 52471、工具类: package com.coderdream. ...
相关推荐
通过修改NIC的设备驱动程序,来读取每个数据包接收时以CSI的形式记录在硬件中的CSI值,并生成包含CSI信息的dat文件。这些dat文件是以二进制进行保存的,最后我们还要使用MATLAB或者Python程序来读取dat文件,从而...
这篇关于“处理csi数据_csi_csi预处理_CSI特征提取matlab_wificsi”的研究主要关注如何利用商用WiFi设备和MATLAB来处理和分析 CSI 数据,特别是在识别用户行为(如走、坐和蹲)方面的应用。 首先,我们来理解一下 ...
采集信道状态信息CSI的功能代码,csi包括幅度相位等更细粒度的信道信息,用于室内定位的最新选择
mipi_CSI-2_specification_v2-1-er01-2018.pdf mipi_CSI-3_specification_v1-0.pdf MIPI_Alliance_Specification_for_Camera_Serial_Interface_2__CSI_2_2009.pdf MIPI_D-PHY_Specification_v01-00-00.pdf ...
MIMO系统利用空间多样性和信道的状态信息(CSI)来实现性能优化。本文将详细探讨在已知和未知信道状态信息情况下的信道容量比较。 一、信道状态信息(CSI) 信道状态信息是描述信号从发射端到接收端传播过程中受到...
标题中的“linux-80211n-csitool-supplementary.zip”是一个压缩包文件,主要涉及的内容是“CSITool”,它是一个用于处理802.11n无线网络中“CSI(Channel State Information)”信道状态信息的工具。这个工具在...
"CSI Tool 监控模式下双向CSI采集(同时发送并接收数据)"是一个专注于无线通信中信道状态信息(Channel State Information, CSI)采集的项目。这个项目的目标是实现设备在监控模式下能够同时进行发送和接收数据,...
3. **监控CSI数据**:利用Atheros-CSI-Tool或其他工具来监控并记录收集到的CSI数据。 #### 五、总结 通过本文的详细介绍,我们可以了解到在OpenWrt上安装Atheros-CSI-Tool所需的一系列步骤和技术要点。从确认系统...
《基于深度学习的CSI反馈去噪网络在FDD大规模MIMO系统中的应用》 这篇论文是东南大学金老师近期的研究成果,聚焦于通信系统中一个关键的问题——信道状态信息(Channel State Information, 简称CSI)的反馈去噪。在...
这可能需要对接基站或终端设备的软件接口,如使用特定的API或者SDK,实时获取并记录信道测量报告。这个过程可能需要对通信协议有深入的理解,例如在LTE或5G系统中,如何解析和解码信道质量指示符(CQI)以及其他相关...
MIPI CSI-3,全称为Mobile Industry Processor Interface Camera Serial Interface 3,是MIPI Alliance推出的一种高速、低功耗的接口标准,用于连接图像传感器和应用处理器。在摄像头开发领域,MIPI CSI-3被广泛应用...
在MATLAB中,"CSI"通常指的是Channel State Information,即信道状态信息,这在无线通信领域是非常重要的概念。当你需要获取并绘制CSI时,这通常涉及到信号处理、频谱分析以及通信系统的建模。本篇文章将深入探讨...
在IT领域,尤其是在无线通信和网络优化中,Channel State Information (CSI) 是一个关键的参数,它描述了无线信道的特性。这篇文章将深入探讨如何在C++编程环境下,使用名为"CSITool"的工具在监控模式下实现双向CSI...
CSITool工具包是一款专为测量和分析信道状态信息(Channel State Information, 简称CSI)设计的专业工具。在无线通信领域,尤其是移动通信系统中, CSI 是至关重要的参数,它反映了无线信号在传播过程中受到的各种...
MIPI(Mobile Industry Processor Interface)CSI-2(Camera Serial Interface - 2)是一种高速、低功耗的接口标准,主要用于连接图像传感器与处理器之间。在移动设备和物联网领域,MIPI CSI-2已经成为图像和视频...
标题中的"Convolutional_LTSM_CSI_estimate_stateestimate_wireless_csi_LTSM_"提到了几个关键概念:卷积 LSTM(ConvLSTM)、状态估计(state estimate)、无线信道状态信息(wireless Channel State Information, ...
在提供的压缩包中,包含的是“MIPI Alliance Specification for Camera Serial Interface - 2 (CSI-2)”的PDF文档,这是一份详细阐述MIPI CSI-2协议标准的技术规范。 MIPI CSI-2协议是MIPI联盟为高清摄像头和图像...
### 平行至MIPI CSI-2 TX桥接器知识点详解 #### 一、MIPI CSI-2标准介绍 MIPI(Mobile Industry Processor Interface)是由移动行业处理器接口联盟提出的一系列标准规范,主要应用于智能手机、平板电脑等消费电子...
NR CSI-RS序列生成;NR CSI-RS-RE映射; NR CSI-RS周期与偏移; NR CSI-RS空间域;CSI参考信号分为non-zero-power CSI-RS 、Zero-power CSI-RS两类: non-zero-power CSI-RS 在其占用的RE 上发送真正的CSI-RS,即在...