- 浏览: 44564 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
陈碧滔:
DGCX 写道这个,我想问一下。这个方法写在哪啊??直接写在j ...
Ext获取grid选中列的值 -
DGCX:
这个,我想问一下。这个方法写在哪啊??直接写在js中还是在那个 ...
Ext获取grid选中列的值 -
陈碧滔:
Jdk 发布时间表
版本号 名称 中文名 发布日期
JDK ...
Linux启用夏令时,跳变后导致容器日志时间和系统时间相差一小时
收藏列表
- 全部 [45]
- 默认 [5]
- javascript [4]
- linux [4]
- java [4]
- oracle [16]
- windows [1]
- jdk [2]
- shell [1]
- 运动 [2]
- 搞笑 [4]
- ext tip [1]
- 软件授权 [1]
标题 | 标签 | 来源 | |
delete删除数据库找回 | oracle | ||
create table tableName_bak as select * from tableName as of TIMESTAMP to_timestamp('20081126 103435','yyyymmdd hh24miss'); |
|||
sql 获取两个日期之前的所有所有日期 | oracle | ||
Select Rownum, 开始日期+Rownum-1 from dual connect by rownum< 结束日期-开始日期 +2; --查询两个日期之间的所有日期 Select Rownum, to_date(20120101,'yyyy-MM-dd')+Rownum-1 from dual connect by rownum< to_date(20130101,'yyyy-MM-dd')-to_date(20120101,'yyyy-MM-dd') +2; |
|||
处理键盘事件 禁止后退键(Backspace) | javascript | http://www.2016k.com/skillonpage/javascript/07-62.html | |
//处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外 function banBackSpace(e){ var ev = e || window.event;//获取event对象 var obj = ev.target || ev.srcElement;//获取事件源 var t = obj.type || obj.getAttribute('type');//获取事件源类型 //获取作为判断条件的事件类型 var vReadOnly = obj.readOnly; var vDisabled = obj.disabled; //处理undefined值情况 vReadOnly = (vReadOnly == undefined) ? false : vReadOnly; vDisabled = (vDisabled == undefined) ? true : vDisabled; //当敲Backspace键时,事件源类型为密码或单行、多行文本的, //并且readOnly属性为true或disabled属性为true的,则退格键失效 var flag1= ev.keyCode == 8 && (t=="password" || t=="text" || t=="textarea")&& (vReadOnly==true || vDisabled==true); //当敲Backspace键时,事件源类型非密码或单行、多行文本的,则退格键失效 var flag2= ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea" ; //判断 if(flag2 || flag1)return false; } //禁止退格键 作用于Firefox、Opera document.onkeypress=banBackSpace; //禁止退格键 作用于IE、Chrome document.onkeydown=banBackSpace; |
|||
Ajax查询数据时Session失效,跳转到登陆界面 | javascript | ||
$.ajaxSetup({error:ajaxError}); function ajaxError(){ $(window.parent.location).attr("href","web/login.jsp"); } |
|||
1,2 变成‘1’,‘2’ | oracle | ||
select ''''||replace(replace(replace(nvl('1,2,3,4,5,6,77,8,5.6','-'),',,',','),'''',''),',',''',''')||'''' as pvalue2 from dual --这个是昨天说的那个替换 1,2 变成‘1’,‘2’ |
|||
模糊查询的另外一种方法 | |||
查询DocumentSummary字段中包含"bicycle"的所有行。 一般大家都会写成这样: select * from Production.Document where DocumentSummary like'%bicycle%' 了解这个函数以后,大家可以这样写: select * from Production.Document where charindex('bicycle',DocumentSummary)>0 这种方法比like'%%'的形式速度上要快很多. 数据库优化的时候可以考虑使用sql 2005的函数. instr(varchar,'string') >-1 是大于-1 这样就可以既用了模糊查询又使用了索引 |
|||
hong7的神器 | java | ||
package com.huawei.util.common; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeMap; import javax.servlet.http.HttpServletRequest; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.XSSFSheet; import com.huawei.util.exception.ApplicationException; /** * Map 帮助类,提供Map 对象到表格的转换,<br/>Map 叠加,Map 对象生成Excel 中sheet对象的方法 * @author lwx81481 * */ public class MapUtil { public static final String PREFIX = "td_item"; // 参数的前缀 public static final String Total = "Total"; // 参数的前缀 public static final String SIGN_1 = "#"; // 分隔符1 public static final String SIGN_2 = ":"; // 分隔符2 public static final String SIGN_3 = "."; // 分隔符2 public static final String INPUT_TEXT = "TEXT"; // 文本框 public static final String INPUT_LABLE = "LABLE"; // 文本 public static final String INPUT_HIDDEN = "HIDDEN"; // 隐藏域 public static final String INPUT_TYPE_KEY = "22953796888151";// 用于标明INPUT 的KEY private boolean total = true; private String totalStyle = "\"background-color: #CCCCCC\" "; private String tdStyle = "width:40px"; private String tdClass = "bg_white"; private String tdInputClass = "bg_white"; private String tdTitleClass = "bg_white"; private String tdTotleClass = "input_data_table_td"; private String tbodyTrClass = "bg_white"; private String inputStyle = "width:40px;height:100%;border=0"; private Calendar beginTime; private Calendar endTime; private Calendar newCal; private String[] title; private String[] titleStyle; private String paramid = ""; private String paramname = ""; private String paramtotalId = ""; private String paramvalue = ""; //Text 文本框 内最大长度 private int maxlength = 5; private String theadHTML; private String tbodyHTML; private String tableHTML; private HttpServletRequest request; private XSSFSheet sheet; private Row dataRow = null; private Cell rowCell = null; private int rowNum; private boolean nowrap = false; private int cellNum; private Map oldMap; private Map totalMap = new HashMap();// 求和的map private List cellsList = new ArrayList(); //private boolean isRandom = false; // 表格中 每个单元格 显示的内容 private String input_type = INPUT_LABLE; // 名称前缀 private String name_prefix = PREFIX; public MapUtil(Map map) { oldMap = map; init(); } public MapUtil() { init(); } // 初始化加载的内容 public void init() { loadCellList(); } /** * 根据 map 获取 Table的HTML * * @param map * @return */ private String getHTMLByMap(Map map) { this.paramname = name_prefix; return getHTMLByMap(name_prefix, map, true); } private String getHTMLByMap(String name, Map map, boolean isTr) { StringBuffer HTMLStr = new StringBuffer(isTr ? "<tr>\n" : ""); Object okey = null; String key = ""; Object value = null; int cellsCount = 0; int size = map.size(); String oldId = this.paramid; String oldName = this.paramname; String oldInputType = this.input_type; if (map.containsKey(INPUT_TYPE_KEY)) { this.input_type = map.get(INPUT_TYPE_KEY).toString(); } boolean isMap = true; Set keys = map.keySet(); Iterator iterator = keys.iterator(); while (iterator.hasNext()) { okey = iterator.next(); key = okey.toString(); if (INPUT_TYPE_KEY.equals(key)) { size--; continue; } value = map.get(okey); // 如果key前面存在 编号,将编号 去掉(key编号 最长为10) int key_index = key.indexOf("."); if (key_index > 0 && key_index < 10) key = key.substring(key_index + 1); String[] keyss = key.split(SIGN_2); String key0 = keyss[0]; key0 = key0.replace("&", "&"); key0 = key0.replace("<","<"); key0 = key0.replace(">",">"); key0 = key0.replace(" ", " "); String key1 = keyss[keyss.length - 1]; this.paramid = oldId + SIGN_1 + key1; this.paramname = oldName + SIGN_1 + key; this.paramvalue = key0; isMap = map.getClass().isInstance(value); int rowspan = isMap ? getMapRowspan((Map) value) : 0; HTMLStr.append("\t<td ").append((rowspan > 1 ? "rowspan=" + rowspan : "")) .append(" class=\"" + tdTitleClass + "\"") .append(isNowrap()?"nowrap>":">") .append(getINPUTHTML(INPUT_LABLE,false)).append("</td>\n"); int cellsList_Size = cellsList.size(); if (cellsList != null && !isMap) { for (int i = 0; i < cellsList_Size; i++) { String cellsValue = cellsList.get(i).toString(); this.paramid = oldId + SIGN_1 + key1 + SIGN_1 + cellsValue; this.paramname = oldName + SIGN_1 + key + SIGN_1 + cellsValue; this.paramvalue = getRequestValue(); HTMLStr.append("\t<td class=\"" + tdClass + "\" style='width:40px' >") .append(getINPUTHTML(input_type,true)).append("</td>\n"); } cellsCount++; } // 添加 Total 行 if (total && cellsCount > 1 && cellsCount == size) { if (cellsList != null && cellsList_Size > 0 && !isMap) { this.paramid = oldId + SIGN_1 + Total; this.paramvalue = Total; HTMLStr.append("</tr>\n<tr style='" + totalStyle + "'>\n") .append("\t<td class=\"" + tdTotleClass + "\" >") .append(getINPUTHTML(INPUT_LABLE,false)) .append("</td>\n"); for (int i = 0; i < cellsList_Size; i++) { String cellsValue = cellsList.get(i).toString(); this.paramid = oldId + SIGN_1 + Total + SIGN_1 + cellsValue; this.paramname = oldName + SIGN_1 + Total + SIGN_1 + cellsValue; this.paramvalue = ""; HTMLStr.append( "\t<td class=\"" + tdTotleClass + "\" style='width:40px'>") .append(getINPUTHTML(INPUT_LABLE,true)).append( "</td>\n"); } cellsCount++; } } if (isMap) { HTMLStr.append(getHTMLByMap(name + SIGN_1 + key, (Map) value, false)); } else { HTMLStr.append("</tr>\n<tr class=\"" + tbodyTrClass + "\">\n"); } this.paramid = oldId; this.paramname = oldName; } // 还原到以前的样式 this.input_type = oldInputType; HTMLStr.append(isTr ? "</tr>\n" : ""); return HTMLStr.toString(); } public String getTheadTdHTML() { StringBuffer HTMLStrYear = new StringBuffer("<tr>"); StringBuffer HTMLStrMonth = new StringBuffer(); int colspan = 0; // 循环前面表头 if (title != null) { for (int i = 0; i < title.length; i++) { HTMLStrYear .append("<td class=\"input_data_table_td\"") .append( (titleStyle!=null&&titleStyle[i]!=null&&titleStyle[i].length()>0) ?" style=\"" + titleStyle[i]+"\" ":" ") .append(" rowspan = 2 align=center nowrap>") .append(title[i]).append(" </td>"); } } //循环生成 年月份 for (int i = 0; i < cellsList.size(); i++) { String time = cellsList.get(i).toString(); String year = time.split("-")[0]; String month = time.split("-")[1]; colspan++; if (i == cellsList.size()-1 || month.equals("12")) { HTMLStrYear .append("<td class=\"input_data_table_td\" colspan = "); HTMLStrYear.append(colspan).append(" align=center>").append(year).append("</td>\n"); colspan = 0; } HTMLStrMonth.append("<td class=\"input_data_table_td\" style=\""+tdStyle+"\" >") .append(getMonthString(Integer.parseInt(month))) .append("</td>\n"); } HTMLStrYear.append("\n</tr>\n<tr>\n").append(HTMLStrMonth).append( "</tr>"); return HTMLStrYear.toString(); } public String getTableHTMLByMap(Map map) { this.tbodyHTML = getHTMLByMap(map); this.theadHTML = getTheadTdHTML(); this.tableHTML = this.theadHTML + this.tbodyHTML; return this.tableHTML; } /** * 获取 一个 input 控件 * * @param type * @param name * @return */ private String getINPUTHTML(String type,boolean isValue) { StringBuilder inputStr = new StringBuilder(); if (INPUT_HIDDEN.equals(type)) { inputStr.append("<input type=\"hidden\" id=\"") .append(this.paramid).append("\" name=\"") .append(this.paramname).append("\" value=\"") .append(this.paramvalue).append("\"/>").toString(); } else if (INPUT_TEXT.equals(type)) { inputStr.append("<input type=\"text\" id=\"").append(this.paramid) .append("\" name=\"").append(this.paramname) .append("\" style=\"").append(inputStyle) .append("\" value=\"").append(this.paramvalue) .append("\" maxlength=").append(this.maxlength) .append(" onkeydown='return Map.checkonKeyDown(this)' ") .append(" onkeyup='return Map.checkonKeyUp(this)'") .append("onblur='Map.checkonBlur(this)'") .append(" onfocus='Map.checkonFocus(this)' />"); } else if (INPUT_LABLE.equals(type)) { inputStr.append("<label id=\"").append(this.paramid) .append("\" name=\"").append(this.paramname) .append("\" value=\"" + this.paramvalue) .append("\" " ) .append(( isValue ? "style='"+tdStyle+"' >" : " style='width:100%' >")) .append(this.paramvalue) .append("</label>"); } else { return ""; } return inputStr.toString(); } /** * 获取 map 的 转换成为表格时,所跨的行数 * * @param map * @return */ public int getMapRowspan(Map map) { Object key = null; Object value = null; int size = map.size(); int rowspan = 0; Set keys = map.keySet(); Iterator iterator = keys.iterator(); while (iterator.hasNext()) { key = iterator.next(); if (INPUT_TYPE_KEY.equals(key)) { size--; continue; } value = map.get(key); if (map.getClass().isInstance(value)) { rowspan += getMapRowspan((Map) value); } else { rowspan++; // 如果需要添加 total 行 if (total && rowspan > 1 && rowspan == size) { rowspan++; } } } return rowspan; } /** * 打点 算法 * * @param map * map格式为 * @return */ public static List mapDot(Map map) { String begin = "", end = ""; List list = new ArrayList(); boolean isContinue = true; while (isContinue) { begin = ""; end = ""; isContinue = false; for (int j = 1; j <= 12; j++) { String key = "2012-" + j; int value = map.containsKey(key) ? Integer.parseInt(map .get(key).toString()) : 0; if (value > 0) { value--; end = key; isContinue = true; if (begin.equals("")) begin = key; if (j == 12) list.add(new String[] { begin, end }); } else { if (!begin.equals("")) { list.add(new String[] { begin, end }); begin = ""; end = ""; } } map.put(key, new Integer(value)); } } return list; } /** * map 合并 如果存在多个 map 需要合并成一个map 调用该方法 如 map1{key1={key2=value1}}<br/> * map2{key1={key3=value2}}<br/> 则可以合成 一个 map * {key1={key2=value1,key3=value2}} 通过 getMap() 获取合并后的map 对象 * * @param map * 将 map 添加到里面 */ public void addMap(Map map) { if (oldMap == null) oldMap = map; else add(oldMap, map); } /** * Map 转换 <br/> 如果map 的key 存在这规律 如 key1#key2#key3 <br/> 则可以通过调用 该方法 将其转换成为一个 * {key1={key2={key3=value}}} 的map 对象<br/> 获取后 该方法需要 强制转换成 Map对象 * * @param key * @param value * @return */ public static Object loadMap(String key, Object value) { String[] keys = key.split(MapUtil.SIGN_1); Map newMap = new HashMap(); if (keys.length == 1) { return value; } newMap.put(keys[keys.length - 1], value); String newkey = key.substring(0, key.lastIndexOf(MapUtil.SIGN_1)); return loadMap(newkey, newMap); } public Map getMapByRequest(HttpServletRequest request) { this.request = request; return getMapByRequest(); } /** * 根据 request 获取一个 Map结果皆 * * @param request * @return */ public Map getMapByRequest() { Map map = request.getParameterMap(); Set keys = map.keySet(); Iterator iterator = keys.iterator(); while (iterator.hasNext()) { Object okey = iterator.next(); boolean isOK = okey != null && !StringUtil.isNullOrEmpty(request.getParameter(okey .toString())) && okey.toString().startsWith(MapUtil.PREFIX); if (isOK) { String key = okey.toString(); String value = request.getParameter(key); Map newmap = (Map) MapUtil.loadMap(key, value, false); addMap(newmap); } } return getMap(); } /** * 将map 转换成Json 格式 <br/> * JSON 对Map的格式标准为 {"id:text" : {"id:text": value}} * @param map * @return map 后的 标准JSON 格式 */ public String toJSON(Map map){ return getMapJSONString(map).toString(); } /** * 将map 转换成Json 格式 <br/> * JSON 对Map的格式标准为 {"id:text" : {"id:text": value}} * @return map 后的 标准JSON 格式 */ public String toJSON(){ if(oldMap!=null){ return getMapJSONString(oldMap).toString(); }else{ return "[]"; } } private StringBuilder getMapJSONString(Map map){ StringBuilder sb = new StringBuilder("["); // 先获取 map2 的key Object okey,ovalue = null; String key,value = ""; Set keys = map.keySet(); Iterator iterator = keys.iterator(); int i = 0,map_size=map.size(); while (iterator.hasNext()) { i ++ ; okey = iterator.next(); ovalue = map.get(okey); key = okey.toString().split(":")[0]; value = okey.toString().split(":")[1]; sb.append("{id: \"").append(key).append("\",\n"); sb.append("text: \"").append(value).append("\",\n"); sb.append("value: \"").append(okey).append("\",\n"); sb.append("showcheck:true,"); sb.append("isexpand:false,"); sb.append("complete:true,"); if (map.getClass().isInstance(ovalue)) { sb.append("hasChildren: true,"); sb.append("ChildNodes:"); sb.append(getMapJSONString((Map)ovalue)); } else { sb.append("hasChildren: false,"); sb.append("ChildNodes:"); sb.append("null"); } sb.append("}"); if(i < map_size){sb.append(",");} } sb.append("]"); return sb; } /** * Map 转换 <br/> 如果map 的key 存在这规律 如 key1#key2#key3 <br/> 则可以通过调用 该方法 将其转换成为一个 * {key1={key2={key3=value}}} 的map 对象<br/> 获取后 该方法需要 强制转换成 Map对象 * * @param key * map 的 key * @param value * 这里保存的是一个值 * @param isPrefix * 是否保留 前缀 如 id:123 前面存在前缀 id 去除前面后就直接用 123 作为key * @return */ public static Object loadMap(String key, Object value, boolean isPrefix) { String[] keys = key.split(MapUtil.SIGN_1); Map newMap = new HashMap(); if (keys.length == 1) { return value; } String newkey = keys[keys.length - 1]; if (!isPrefix) { newkey = newkey.substring(newkey.lastIndexOf(MapUtil.SIGN_2) + 1, newkey.length()); } newMap.put(newkey, value); newkey = key.substring(0, key.lastIndexOf(MapUtil.SIGN_1)); return loadMap(newkey, newMap, isPrefix); } /** * Map 叠加 算法 * * @param map1 * 两个map 存在着相同的key ,可以通过分解key 分解成多个嵌套的 map * @param map2 * @return */ private Map add(Map map1, Map map2) { // 先获取 map2 的key Object key = null; Object value = null; Set keys = map2.keySet(); boolean is_input_key = false; Object input_value = null; if(map2.containsKey(INPUT_TYPE_KEY)){ is_input_key = true; input_value = map2.get(INPUT_TYPE_KEY); map2.remove(INPUT_TYPE_KEY); } Iterator iterator = keys.iterator(); while (iterator.hasNext()) { key = iterator.next(); value = map2.get(key); if (map2.getClass().isInstance(value)) { if (map1.containsKey(key)) { map1.put(key, add((Map) map1.get(key), (Map) value)); } else { map1.put(key, value); } } else { map1.put(key, value); } } if(is_input_key){ map1.put(INPUT_TYPE_KEY, input_value); } return map1; } /** * 生成 Excel 的内容 * * @param map * @return */ public XSSFSheet getSheetContent(Map map, boolean isTr) { Object okey = null; String key = ""; Object value = null; int size = map.size(); int cellsCount = 0; String oldId = this.paramid; String oldName = this.paramname; int oldCellNum = this.cellNum; boolean isMap = true; Set keys = map.keySet(); Iterator iterator = keys.iterator(); while (iterator.hasNext()) { okey = iterator.next(); key = okey.toString(); if (INPUT_TYPE_KEY.equals(key)) { size--; continue; } value = map.get(okey); // 如果key前面存在 编号,将编号 去掉 int key_index = key.indexOf("."); if (key_index > 0 && key_index < 10) key = key.substring(key_index + 1); String[] keyss = key.split(SIGN_2); String key0 = keyss[0]; String key1 = keyss[keyss.length - 1]; this.paramid = oldId + SIGN_1 + key1; this.paramname = oldName + SIGN_1 + key; this.paramvalue = key0; isMap = map.getClass().isInstance(value); int rowspan = isMap ? getMapRowspan((Map) value) : 0; this.rowCell = this.dataRow.createCell(this.cellNum); this.rowCell.setCellValue(this.paramvalue); this.cellNum++; int cellsList_Size = cellsList.size(); if (cellsList != null && cellsList_Size > 0 && !isMap) { for (int i = 0; i < cellsList_Size; i++) { String cellsValue = cellsList.get(i).toString(); this.paramid = oldId + SIGN_1 + key1 + SIGN_1 + cellsValue; this.paramtotalId = oldId + SIGN_1 + Total + SIGN_1 + cellsValue; this.paramname = oldName + SIGN_1 + key + SIGN_1 + cellsValue; this.paramvalue = getRequestValue(); setTotalMap(this.paramvalue); this.rowCell = this.dataRow.createCell(this.cellNum); this.rowCell.setCellValue(this.paramvalue); this.cellNum++; } cellsCount++; // 设置新的行 this.rowNum++; this.dataRow = sheet.createRow(rowNum); } this.cellNum = oldCellNum; // 添加 Total 行 if (total && cellsCount > 1 && cellsCount == size) { if (cellsList != null && cellsList_Size > 0 && !isMap) { this.rowCell = this.dataRow.createCell(this.cellNum); // System.out.println("add Total // :rowNum"+this.rowNum+"----cellNum:"+this.cellNum); this.rowCell.setCellValue(Total); // 添加求和 函数 for (int i = 0; i < cellsList_Size; i++) { this.cellNum++; String cellsValue = cellsList.get(i).toString(); this.paramtotalId = oldId + SIGN_1 + Total + SIGN_1 + cellsValue; this.paramvalue = getTotalMapValue().toString(); this.rowCell = this.dataRow.createCell(this.cellNum); this.rowCell.setCellValue(this.paramvalue); } // 设置新的行 this.rowNum++; // System.out.println("new dataRow: rowNum:"+this.rowNum+" // -- cellNum:"+this.cellNum); this.dataRow = sheet.createRow(rowNum); cellsCount++; } } this.cellNum++; if (isMap) { getSheetContent((Map) value, false); } if (rowspan > 1) { // System.out.println("合并:"+(this.rowNum-rowspan)+"---"+(this.rowNum-1)+"---"+oldCellNum+"---"+oldCellNum); sheet.addMergedRegion(new CellRangeAddress( (this.rowNum - rowspan), (this.rowNum - 1), oldCellNum, oldCellNum)); } this.paramid = oldId; this.paramname = oldName; this.cellNum = oldCellNum; } return this.sheet; } /** * 生成 Excel 表头 */ public XSSFSheet getSheetTitle() { if (title != null) { for (int i = 0; i < title.length; i++) { this.rowCell = this.dataRow.createCell(this.cellNum); this.rowCell.setCellValue(title[i]); sheet.addMergedRegion(new CellRangeAddress(this.rowNum, this.rowNum + 1, i, i)); this.cellNum++; } } int oldcellNum = this.cellNum; String oldyear = ""; int colspan = 0; for (int i = 0; i < cellsList.size(); i++) { String time = cellsList.get(i).toString(); String year = time.split("-")[0]; String month = time.split("-")[1]; this.cellNum++; colspan++; if (i == cellsList.size() - 1 || month.equals("12")) { this.rowCell = this.dataRow.createCell(this.cellNum - colspan); this.rowCell.setCellValue(month.equals("12") ? year : oldyear); // System.out.println("合并:"+this.rowNum+"---"+this.rowNum+"---"+(this.cellNum-colspan)+"---"+(this.cellNum-1)); sheet.addMergedRegion(new CellRangeAddress(this.rowNum, this.rowNum, this.cellNum - colspan, this.cellNum - 1)); colspan = 0; } oldyear = year; } this.rowNum++; this.dataRow = this.sheet.createRow(this.rowNum); this.cellNum = oldcellNum; for (int i = 0; i < cellsList.size(); i++) { String time = cellsList.get(i).toString(); String month = time.split("-")[1]; this.rowCell = this.dataRow.createCell(this.cellNum); this.rowCell.setCellValue(MapUtil.getMonthString(Integer .parseInt(month))); this.cellNum++; } return this.sheet; } /** * 通过 map 生成一个 sheet 页 */ public XSSFSheet getSheetByMap(Map map, XSSFSheet sheet) { // 设置 初始数据 this.sheet = sheet; this.rowNum = 0; this.cellNum = 0; this.dataRow = sheet.createRow(rowNum); this.rowCell = dataRow.createCell(cellNum); getSheetTitle(); // 换行 ,设置 游标 this.rowNum++; this.cellNum = 0; // 换成新的一行编辑 this.dataRow = sheet.createRow(rowNum); this.rowCell = dataRow.createCell(cellNum); //System.out.println("rowNum:" + this.rowNum + "---cellNum:" // + this.cellNum); getSheetContent(map, true); return this.sheet; } /** * 获取月份的 英文字符 * * @param month * @return */ public static String getMonthString(int month) { String result = ""; switch (month) { case 1: result = "Jan"; break; case 2: result = "Feb"; break; case 3: result = "Mar"; break; case 4: result = "Apr"; break; case 5: result = "May"; break; case 6: result = "Jun"; break; case 7: result = "Jul"; break; case 8: result = "Aug"; break; case 9: result = "Sep"; break; case 10: result = "Oct"; break; case 11: result = "Nov"; break; case 12: result = "Dec"; break; default: break; } return result; } /** * 获取 map ,该方法主要是针对 获取 合并后的一个map对象 * * @return */ public Map getMap() { if (oldMap == null) oldMap = new HashMap(); return oldMap; } public Object getTotalMapValue() { if (totalMap.containsKey(this.paramtotalId)) { return totalMap.get(this.paramtotalId); } else { return ""; } } public void setTotalMap(String value) { if (!StringUtil.isNullOrEmpty(value)) { int _value = Integer.parseInt(value); if (this.totalMap.containsKey(this.paramtotalId)) _value += Integer.parseInt(this.totalMap.get(this.paramtotalId) .toString()); totalMap.put(this.paramtotalId, _value + ""); } } /** * 获取值 * * @return */ public String getRequestValue() { System.out.println("-----paramid:"+this.paramid); if(request==null){ System.out.println("mapUtil 未设置 request "); return null; } Object value3 = request.getAttribute(this.paramid); if (value3 != null) return value3.toString(); else// if(isRandom) //return ((int)(Math.random()*20)+1)+""; return ""; } public void setOldMap(Map oldMap) { this.oldMap = oldMap; } public Map getOldMap() { return oldMap; } public String getInput_type() { return input_type; } /** * * @param input_type */ public void setInput_type(String input_type) { this.input_type = input_type; } public String getName_prefix() { return name_prefix; } public void setName_prefix(String name_prefix) { this.name_prefix = name_prefix; } public List getCellsList() { return cellsList; } public void setCellsList(List cellsList) { this.cellsList = cellsList; } private void loadCellList() { // 实例化一个默认的时间 if (beginTime == null && endTime == null) { beginTime = Calendar.getInstance(); endTime = Calendar.getInstance(); endTime.add(Calendar.YEAR, 1); } else { beginTime.add(Calendar.MONTH, -1); } // 清空原先的时间 if (cellsList != null) cellsList.clear(); cellsList = new ArrayList(); newCal = Calendar.getInstance(); newCal.setTime(beginTime.getTime()); for (; getMistakeCalendar(newCal,endTime); newCal .add(Calendar.MONTH, 1)) { String str = newCal.get(Calendar.YEAR) + "-" + (newCal.get(Calendar.MONTH) + 1); cellsList.add(str); } newCal.clear(); } private boolean getMistakeCalendar(Calendar _beginTime,Calendar _endTime){ int _beginYear = _beginTime.get(Calendar.YEAR); int _beginMonth = _beginTime.get(Calendar.MONTH); int _endYear = _endTime.get(Calendar.YEAR); int _endMonth = _endTime.get(Calendar.MONTH); if(_beginYear<_endYear) return true; else if(_beginYear == _endYear && _beginMonth < _endMonth) return true; return false; } public boolean isTotal() { return total; } public void setTotal(boolean total) { this.total = total; } public String getTotalStyle() { return totalStyle; } public void setTotalStyle(String totalStyle) { this.totalStyle = totalStyle; } public String getTdClass() { return tdClass; } public void setTdClass(String tdClass) { this.tdClass = tdClass; } public String getTdStyle() { return tdStyle; } public void setTdStyle(String tdStyle) { this.tdStyle = tdStyle; } public String getTdInputClass() { return tdInputClass; } public void setTdInputClass(String tdInputClass) { this.tdInputClass = tdInputClass; } public String getTdTitleClass() { return tdTitleClass; } public void setTdTitleClass(String tdTitleClass) { this.tdTitleClass = tdTitleClass; } public String getTdTotleClass() { return tdTotleClass; } public void setTdTotleClass(String tdTotleClass) { this.tdTotleClass = tdTotleClass; } public String getInputStyle() { return inputStyle; } public void setInputStyle(String inputStyle) { this.inputStyle = inputStyle; } public Calendar getBeginTime() { return beginTime; } public void setBeginTime(Calendar beginTime) { this.beginTime = beginTime; } public Calendar getEndTime() { return endTime; } public void setEndTime(Calendar endTime) { this.endTime = endTime; loadCellList(); } public HttpServletRequest getRequest() { return request; } public void setRequest(HttpServletRequest request) { this.request = request; } public String[] getTitle() { return title; } public void setTitle(String[] title) { this.title = title; } public String getTbodyTrClass() { return tbodyTrClass; } public void setTbodyTrClass(String tbodyTrClass) { this.tbodyTrClass = tbodyTrClass; } public String getTbodyHTML() { return tbodyHTML; } public String getTheadHTML() { return theadHTML; } public String getTableHTML() { return tableHTML; } public int getMaxlength() { return maxlength; } public void setMaxlength(int maxlength) { this.maxlength = maxlength; } public String[] getTitleStyle() { return titleStyle; } public void setTitleStyle(String[] titleStyle) { this.titleStyle = titleStyle; } public boolean isNowrap() { return nowrap; } public void setNowrap(boolean nowrap) { this.nowrap = nowrap; } } |
|||
RemarkHelper | java | ||
package temp; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Properties; import java.util.Scanner; /** * 此类文件作用于为大量类文件 * 加上类注释,方法注释 * 加注释时不会覆盖已有注释 * @author lKF44520 * @date 2011-07-20 */ public class RemarkHelper { public static void main(String[] args) throws IOException { RemarkHelper ft = new RemarkHelper(); List<String> path = new ArrayList<String>(); boolean isInputPath = true; Scanner input = new Scanner(System.in); while (true) { if (isInputPath) { System.out .println("***********************************************************"); System.out.println("1.请输入需要新增注释的文件路径(多个路径以','分开)∶"); String str = input.next(); if (str.trim().equals("")) return; String[] temp = str.split(","); System.out .println("2.输入路径为:>>>------------------------------------------<<<<"); for (String s : temp) { if (!s.trim().equals("")) { path.add(s.trim()); System.out.println(" path-->" + s); } } isInputPath = false; } else { System.out.print("\n3.请确认输入路径(Y 确认 N 重输)∶"); String str = input.next(); if (str.trim().toLowerCase().equals("y")) { for (String filepath : path) { ft.addRemark(filepath); } System.out.print("\n4.是否继续?(Y 继续 )"); String str1 = input.next(); if (str1.trim().toLowerCase().equals("y")) { path.clear(); isInputPath = true; } else { break; } } else if (str.trim().toLowerCase().equals("n")) { path.clear(); isInputPath = true; } else { System.out.println("**************************输入有误!****************************"); } } } } /** * 新增注释的主方法 * @param filePath 文件路径 * @throws IOException * @author lKF44520 * @date 2011-07-19 */ private void addRemark(String filePath) throws IOException { StringBuffer sbf = new StringBuffer(); // 判断文件 File file = new File(filePath); if (!file.exists() || file.isDirectory()) { System.out.println("文件:--> " + filePath + "<--路径有误!"); return; } else if (!file.canWrite()) { System.out.println("文件:--> " + filePath + "<--属性只读!"); return; } // 读文件 String str = readTXTFile(file); // 处理文件 sbf.append(editString(str.trim())); // 写文件 writeFile(file, sbf.toString()); System.out.println("文件:---> " + filePath + " <---处理成功!"); } /** * 处理文字 * 传入类代码进行新增注释处理, * 返回处理后代码 * @param str 类代码 * @return 处理后代码 */ public String editString(String str) { StringBuffer sbf = new StringBuffer(); String[] temp = str.split("\r"); boolean isremark = false; boolean cont = false; String temp_line = ""; for (String t : temp) { t = t.replace("\n", ""); // 是否存在注释 if (t.trim().endsWith("*/")) { isremark = true; } // 说明不存在注释 if (!t.trim().equals("") && !t.trim().startsWith("public") && !t.trim().startsWith("private") && !t.trim().startsWith("protected") && !t.trim().endsWith("*/")) { isremark = false; } // 开始寻找注释段 if ((t.trim().startsWith("public") || t.trim().startsWith("private") || t.trim().startsWith( "protected")) && !isremark || cont) { // 类注释 if (t.replace(" ", "").startsWith("publicclass")) { String remark = ""; remark = "\r/**\r" + "* \r"; // 附加注释 Properties prop = new Properties(System.getProperties()); String userName = prop.getProperty("user.name"); remark += "* @author " + userName + "\r"; // 附加时间 String date = new SimpleDateFormat("yyyy-MM-dd") .format(new Date()); remark += "* @date " + date + "\r"; remark += "*/"; remark += "\r"; t = remark + t; } else { // 方法注释 if (t.indexOf("{") < 0) { // 没找到{ temp_line += t; } else { // 找到了{ t = temp_line + t + "\r"; t = getMethodRemark(t) + t; temp_line=""; } cont = t.indexOf("{") < 0; // 找不到{ true } } sbf.append((cont ? "" : t) + "\r"); } return sbf.toString(); } /** * 传入一个方法结构进行处理 * @param str 方法结构 * @return 处理后代码 */ private String getMethodRemark(String str) { String space = str.substring(0, str.indexOf("p")); StringBuffer result = new StringBuffer(space + "/**\r"); result.append(space + "* \r"); // 处理参数 int start = str.indexOf("("); int end = str.indexOf(")"); String param = ""; if (end - start - 1 > 0) param = str.substring(start + 1, end); char[] chars = param.toCharArray(); String endParam = ""; boolean isnull = false; for (char c : chars) { if (c == ' ' && !isnull || c == ',' && !isnull) { isnull = true; endParam += " "; } else if (c != ' ' && c != ',') { isnull = false; endParam += c; } } String[] endParams = endParam.split(" "); if (endParams.length >= 2) for (int i = 0; i < endParams.length; i += 2) { result.append(space + "* @param " + endParams[i + 1] + "\r"); } // 处理返回值 if (str.indexOf("void") == -1) { result.append(space + "* @return \r"); } // 处理异常 if (str.indexOf("throws") >= 0) { int t_start = str.indexOf("throws"); int t_end = str.indexOf("{"); String exception = str.substring(t_start + 6, t_end); exception = exception.replace(" ", ""); String[] exc_strs = exception.split(","); for (String s : exc_strs) { result.append(space + "* @throws " + s.trim() + "\r"); } } // 附加注释 Properties prop = new Properties(System.getProperties()); String userName = prop.getProperty("user.name"); result.append(space + "* @author " + userName + "\r"); // 附加时间 String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); result.append(space + "* @date " + date + "\r"); result.append(space + "*/\r"); return result.toString(); } /** * 将处理后的代码写入原文件中 * @param file 文件对象 * @param str 文件内容 */ public void writeFile(File file, String str) { try { FileOutputStream out = new FileOutputStream(file); PrintStream p = new PrintStream(out); p.print(str); } catch (FileNotFoundException e) { e.printStackTrace(); } } /** * 读取文件内容 * @param file 文件对象 * @return 文件内容 * @throws IOException */ public String readTXTFile(File file) throws IOException { FileInputStream input = new FileInputStream(file); byte[] by = new byte[1024]; StringBuffer sbf = new StringBuffer(); while (input.read(by) != -1) { sbf.append(new String(by)); by = new byte[1024]; } return sbf.toString(); } } |
|||
输出所有数字所有不同的排列顺序 | java | java程序员面试宝典7.4--输出几个数字所有不同的排列顺序 | |
/** * 无重复全排列问题 * 输出1,2,2,3,4这几个数字所有不同的排列顺序 * 一个递归问题,想法是如果当前数字确定下来,后面的几位还有几种组合方式,逐步的缩小后面几位的规模 * * 输出的完整性问题:定义一个result专门装前面排序好的元素,input里装的是后面顺序没有定下来的元素的集合, * layer是表示当前处理的是input中的第几位,每次input为空的时候,都把result里的元素都打印一下 * *无重复问题:如果在这个layer上,已经处理过一个跟当前元素值相同的元素,就把这个元素跳过去 * @author justrun * */ public class plus { public static void main(String args[]){ List<Integer> input = new LinkedList<Integer>(); input.add(1); input.add(2); input.add(2); input.add(3); input.add(4); int[] result = new int[input.size()]; print(input,0,result); } public static void print(List<Integer> input, int layer, int[] result){ if(input.isEmpty()){ //后面没排序的元素集合为空,输出一次result集合 for(int i=0 ; i<5; i++){ System.out.print(result[i]); } System.out.println(""); return; } int flag; for(int i = 0 ; i<input.size() ; i++){ int node = (Integer)input.get(i); flag = 0; //同一位置,重复的数字只调用一次 for(int n=0 ; n<i; n++){ if( node == (Integer)input.get(n)){ flag = 1; break; } } if(flag == 0){ result[layer]=node; List<Integer> newRefer = new LinkedList<Integer>(); for(int j=0 ; j<input.size() ; j++){ newRefer.add((Integer) input.get(j)); } newRefer.remove(i); //深拷贝一个新的input集合,把正在处理的元素,从当前的input集合中拿掉 print(newRefer,layer+1,result); } } } |
|||
周克华君 | 搞笑 | ||
周君克华者,巴州人氏。少沉稳,多智慧,喜刀棍,性刚烈,行仗义。 年稍长,随父掘沙度日。勤勉肯劳,朴实含辛,数年间,竟置宅楼。然沙场忽为人所居占,遂日渐贫苦。乃远辞父母,别妻小,苦练驾驶,漂泊江湖。 有日,克华载客于途,遇捕快。捕以客携毒由,或云超载,拘克华。克华力辩,然则狱吏怒斥不允,克华遂含冤入监。 越明年,克华自监出,性乃大变。 入滇售枪,以养贫妻寒子,不期辄复受捕。 恨意生,仇渐涨。乃劫钱庄取款富户,起巴山,入长沙,下金陵。 长江全域撼动,下至巡抚,上至朝廷,皆大惊。 屡屡十面围捕,俱成漏网,悬赏银两遂至五百四拾万之巨。 长沙有术命者笑言:此君命格凶险,犯案皆于极凶之时辰取之吉时,故每每得脱。然劫数将尽,不日必毙。听者嘻之,何其妄也。术者笑而不语。 三千兵勇铁桶布阵歌乐山,数万捕快密网合围巴州,又数日,仅寻其屎一砣。 然生死由命,富贵在天。克华清晨独行觅食之际,遇二三十巡捕对战,饮弹立毙。 太史曰:梁山泊所属,无不为世所逼,今强人者周克华者,亦此类也,虽为世间所罕,恐来日无此类乎? 或云克华固有冤苦,夺无辜者之命,逝者与其又有何仇? 妙哉,绝哉! |
|||
BeyondCompare-v2.5.0.250 注册码 | 软件授权 | ||
urKH3mXZVDiTNgCKQnFnfvaQB5tTtahvtUr5HqwT9YZu50+b3T9bkzYKwKsfjhhiDgzR9Dr5qbmJ2EmNzYfSAptuo90Ga7NTytXRVPnH-nTye3q+vgdqSmegWMmJmaU9VsqLQNrNfxx1QLBNDdNpUBxrcdm6TPbh8-NYzpYCJmQXJOkTOb7MgovRGiJLLuTN7mpUKRcaT8uxfx1ej+sSKj4JMFGCTSzS+B2L7lKPzT6LKV8oQgg3vGcrU+Y857A2 |
|||
shell脚本循环弹出cd | shell | ||
#!/bin/bash while [ 1 = 1] do #eject cd rom eject #pull cd rom tray back in eject - t done |
|||
ExtJS定时任务 | javascript | ||
var task = { run: function(){ Ext.fly('clock').update(new Date().format('g:i:s A')); }, interval: 1000 //1 second } var runner = new Ext.util.TaskRunner(); runner.start(task); |
|||
没图你说个jb4 | 运动 | ||
武汉:冒的图你说个蝻子阿 冒的图你说个雀雀 荆州:图都没得,你讲个JB 黄陂:莫得头你甩锅莫伊尼 山东:木图你说个吊啊 木图你叼吱吱末 日照:木图你叨叨个屌 胶东:么有图你锁个鸡儿 青岛:木有图你说个蛋子 贵州:没图叫个JB毛 都匀:没图你吼个JB 贵阳:图都米有 你吼个JB 兰州:木有图你佛个球 宁夏:木有土片你说求捏 云南:图都某得么你讲个毛线 谬得图,你说陀斑鸠说 昆明:某得图你发个球了么 海南:佛无鲁拱么蓝爬 安徽:阔图恩感个屌毛啊 蚌埠:没有图你叽歪鸡嘎子的该 马鞍山:每图你虚个资巴 怀宁:谬头恩港果JB 桐城:谬投恩港个吊 枞阳:缪头恩干么撇在 合肥:木有屠里讲个几把 铜陵:么滴图恩敢个吊啊 江西:冒有图,嫩哇咯屌哦 南昌:毛图嫩挖条卵呐 赣西:冒图恩挖挫卵 莲花:毛图!你哇古哪噶啦?哇个卵啊? 宜春:冒凸昵挖喳卵啊 鹰潭:米有图恩哇个JB 抚州:冒图捏挖个卵 溧阳:么肚尼钢撸哒 徐州:没图 你叽歪个吊 镇江:么的掉图,你讲个几把啊 扬州:不得图你锁个继八 福清:某毒女共个比扬 青海:图都没这还说个球了 |
|||
没图你说个jb3 | 搞笑 | ||
四川:莫的图你娃说个锤子哦 成都:图都莫球得,你说个鸡儿啊 图都木得,你说个锤锤呦 绵阳:没图你娃说个铲铲 陕西:抹油头你设个锤子尼 么得图 你社个鸡娃子! 么图腻舍个球 陕北:甚图也摸,你说球狼 广东:都冇图睇你系度讲棱嘢啊 广州:冇图你讲禄漆啊 揭阳:无图吕担个JB 潮汕:无图吕搭条狼 汕头:无图吕啖支浪啊? 河北:没图你说个渣渣 气死偶咧 保定:木图你说个几保 福州:末度女供些弄粑粑 闽南:毋图哩嗊啥蓝叫 沙县:莫督列挖价级吧 桂林:没图你讲我条卵阿 河南:木纽图说个JB啊 开封:没有图你搞蛋呗 周口:没图,你侃个屁啊 平顶山:都木牛图!你说类是个啥球啊 信阳:没爹头嗯shue个j8安? 湖南:图都冒得你讲个毛啊 长沙:冒的图你港杂叼哦 湘西:图都米的,你港个JB 常德:没得图你港个JB啊 衡阳:冒得图你广甲卵啊 浙江:那度侬国国JB啊 温州:闹图你过改堕落炮啊 温岭:图啊无,港个卵啊 临海:妞图恩港个JB啊 |
|||
没图你说个jb2 | 搞笑 | ||
西班牙:JB no te diste cuenta de un 希腊:JB δεν σα? ?ριο για το 韩:汪汪汪汪汪汪汪汪汪汪汪汪 阿拉伯语:?? ?? ?? ??? ?? ????? ? 越南语:JB ?? kh?ng tìm b?n cho m?t 泰语:JB ?????????????????? 爱沙尼亚:JB ei kajastu teid 菲律宾:JB ay hindi tayahin mopara sa isang 加利西亚:JB non figura por un 海地克里奥尔语:Jb pa t 'figi w pou yon 希伯来语:JB ?? ????? ???? 印度文:???? ?? ?? ?? ??? ???? ?? 匈牙利:JB nem alak, a 冰岛:JB ekki tala vie tig um 印尼:JB tidak angka anda untuk 爱尔兰:Ní raibh tú SCP figiúr le haghaidh 拉脱维亚:JB neparādījās jums 立陶宛:JB nebuvo figūra jums 马其顿:Б. нети е за 挪威:JB ikke finne deg for en 波斯:??. ?? ?? ?? ???? ??? ??? 波兰:JB nie posta? za 葡萄牙:JB n?o figura por um 罗马尼亚:JB nu ai figura pentru o 塞尔维亚:?Б ниси цифру за 斯洛伐克:JB nefiguroval vás 斯洛文尼亚:JB nisi ?tevilka za 斯瓦西里:JB hakuwa na takwimu kwa ajili ya 土耳其:JB bir i?in rakam vermedi 乌克兰:JB непоказникза 威尔士:Nid yw ffigur JB wnaethoch chi am 上海:么读弄刚则卵泡啊 天津:妹有图你说个嘛JB玩儿 北京:没个小画片儿你丫淡逼个jb 重庆:没图你说个J8(全是一声) 香港:屌你啊,无图你讲乜HIGHT啊 东北:没图跟这掰扯什么JB玩意儿 辽宁:没图得瑟个篮子球 本溪:图都没有害来这嘞嘞个大JB啊! |
|||
没图你说个jb1 | 搞笑 | ||
文言文:夫图之缺如,岂不若言之大屌 中: 没图你说个JB 英:You say a JB without pictures 日:JBはありがとうございました理解しなかった 法:JB ne vous ai pas la figure d'un 俄:JB не показатель за 德:Ohne Bilder sagst du JB 意:JB non ha figura di un 拉丁:JB non vobis ad figuram 瑞典:JB inte siffra dig f?r en 芬兰:JB ei hahmon varten 荷兰:JB geen cijfer u voor een |
|||
SUSE禁用端口 | linux | ||
使用命令lsof -i :631 |grep "\(LISTEN\)"查询使用端口的进程 使用命令kill -9 进程ID 杀死对应端口的进程 使用命令 sudo iptables -A INPUT -p tcp --dport 631 -j DROP sudo iptables -A OUTPUT -p tcp --dport 631 -j DROP禁用端口. 开启端口 sudo iptables -A INPUT -p tcp --dport 111 -j ACCEPT sudo iptables -A OUTPUT -p tcp --dport 111 -j ACCEPT |
|||
球衣 | 运动 | ||
姓名 码 号 陈佳 XXL 5 刘江云 XL 9 邱鹏 S 6 戚小超 XXL 11 张晓宇 XL 31 周书剑 XL 16 张鹏飞 L 24 陈碧滔 S 26 张小桂 S 0606 周殿雄 XXL 30 孙海博 7 邝迎波 21 刘学光 1 XL 3 5\9\31\16 S 3 6\26\0606 XXL 3 11\30 L 1 24 |
|||
复制一段文字到剪贴板 | javascript | ||
<head> <title>复制文字到剪贴板</title> <script> function CopyUrl() { var htm = document.getElementById("yourdiv").innerHTML; window.clipboardData.setData('text', htm); alert("文字已经复制到剪贴板,请在聊天窗口粘贴"); } </script> </head> <body> <div id="yourdiv" onclick="javascript:CopyUrl()">我是一段文字</div> </body> |
|||
Java调用cmd解压gz | java | ||
public void unRARFile(String rarFileName, String destDir) { String unrarCmd ="C:\\Program Files\\WinRAR\\winrar.exe x -inul "+ rarFileName + " " + destDir; System.out.println(unrarCmd); try { Runtime rt = Runtime.getRuntime(); Process p = rt.exec(unrarCmd); p.waitFor(); p.destroy(); } catch (Exception e) { System.out.println(e.getMessage()); } } |
|||
native2ascii.exe的-reverse方法怎么用 | windows | ||
比如想把\uFFFD\uFFFD\u04F2\u02F5\uFFFD反向转换成汉字该怎么办? 如你的原始文件是1.properties(这个文件是中文编码),你想转换成unicode的 则在cmd下进入到你这个文件所在的目录键入:native2ascii -encoding gb2312 1.properties 2.properties,执行命令后你会在当前目录下看到一个2.properties的文件,内容就是1.properties的unicode编码内容。如果你再想转换回来,同样在cmd下进入文件所在的目录键入:native2ascii -reverse -encoding 2.properties 3.properties,执行命令后在当前的目录会产生一个3.properties文件,内容就是2.properties内容的中文编码内容,这个时候如果你的1.properties文件还在,你可以比较1.properties和3.properties内容,发现两个文件内容应该是一样的,一样的前提是中间你没改变2.properties文件的内容 |
|||
所有最终视图 | oracle | ||
create or replace view v_roominfo as select v.id,v.name,v.grade,v.roomtype,v.roomremark,v.floor,v.starttime,v.guestnum,t.type,t.balance,t.antecedent_money as antecedentmoney,t.remark as rentremark from (select r.id ,r.name , r.grade,r.type as roomtype,r.remark as roomremark,r.floor,r.start_time as starttime,s.guestnum from t_roominfo r left join v_roomguestnum s on r.name=s.roomname and r.id = s.id) v left join t_rentinfo t on v.id=t.room_id; create or replace view v_roomguestnum as select t2.id, t2.roomname, count(t2.name) as guestnum from (select t1.id,t1.name as roomname,t1.grade,t1.type,t1.remark,t1.floor,t1.start_time,g.name,g.sex,g.id_card,g.remark from (select r.id,r.name,r.grade,r.type,r.remark,r.floor,r.start_time,t.guest_id,t.room_id from t_roominfo r left outer join t_guest_id_room t on r.id=t.room_id) t1 left outer join t_guestinfo g on t1.guest_id=g.id) t2 group by t2.roomname, t2.id; create or replace view v_guestinfo as select t1.id,t1.name as roomname,t1.grade,t1.type,t1.remark as roomremark,t1.floor,t1.start_time,g.name as guestname,g.sex,g.id_card,g.remark as guestramark from (select r.id,r.name,r.grade,r.type,r.remark,r.floor,r.start_time,t.guest_id,t.room_id from t_roominfo r inner join t_guest_id_room t on r.id=t.room_id) t1 left join t_guestinfo g on t1.guest_id=g.id; |
|||
修改hotel表 | oracle | ||
-- Add/modify columns alter table T_USERINFO add level number(2); create or replace view v_roominfo as select v.id,v.name,v.grade,v.roomtype,v.roomremark,v.floor,v.starttime,v.guestnum,t.type,t.balance,t.antecedent_money as antecedentmoney,t.remark as rentremark from (select r.id ,r.name , r.grade,r.type as roomtype,r.remark as roomremark,r.floor,r.start_time as starttime,s.guestnum from t_roominfo r left join v_roomguestnum s on r.name=s.roomname and r.id = s.id) v left join t_rentinfo t on v.id=t.room_id; |
|||
hotel视图 | oracle | ||
已住人 select t.id,t.name,t.type,t.remark,t.floor,t.start_time from t_roominfo t where t.id in (select t1.room_id from t_guest_id_room t1); 创建guestinfo视图 create or replace view v_guestinfo as select t1.id,t1.name as roomname,t1.grade,t1.type,t1.remark as roomremark,t1.floor,t1.start_time,g.name as guestname,g.sex,g.id_card,g.remark as guestramark from (select r.id,r.name,r.grade,r.type,r.remark,r.floor,r.start_time,t.guest_id,t.room_id from t_roominfo r inner join t_guest_id_room t on r.id=t.room_id) t1 left join t_guestinfo g on t1.guest_id=g.id; 房间入住人数视图 create or replace view v_roomguestnum as select t2.id, t2.roomname, count(t2.name) as guestnum from (select t1.id,t1.name as roomname,t1.grade,t1.type,t1.remark,t1.floor,t1.start_time,g.name,g.sex,g.id_card,g.remark from (select r.id,r.name,r.grade,r.type,r.remark,r.floor,r.start_time,t.guest_id,t.room_id from t_roominfo r left outer join t_guest_id_room t on r.id=t.room_id) t1 left outer join t_guestinfo g on t1.guest_id=g.id) t2 group by t2.roomname, t2.id; 房间信息视图 create or replace view v_roominfo as select r.id ,r.name , r.grade,r.type,r.guest_id_room,r.remark,r.floor,r.start_time,s.guestnum from t_roominfo r left join v_roomguestnum s on r.name=s.roomname and r.id = s.id; |
|||
hotel sql | oracle | ||
--安装前删除 drop table t_userinfo cascade constraints; drop tablespace hotel including contents and datafiles; drop tablespace hotel_index including contents and datafiles; --创建表空间 create tablespace hotel datafile 'E:\oradata\hotel\hotel.dbf' size 512m autoextend on next 100m MAXSIZE UNLIMITED extent management local; --创建索引表空间 create tablespace hotel_index datafile 'E:/oradata/hotel/hotel_index.dbf' size 512m autoextend on next 100m MAXSIZE UNLIMITED extent management local; --创建用户 create user cbtpro identified by "cbtpro" default tablespace hotel temporary tablespace TEMP profile DEFAULT password expire; grant connect to cbtpro with admin option; grant dba to cbtpro with admin option; grant resource to cbtpro with admin option; grant create any table to cbtpro with admin option; grant delete any table to cbtpro with admin option; grant unlimited tablespace to cbtpro with admin option; --创建表 create table t_userinfo ( ID NUMBER(16) not null primary key, NAME VARCHAR2(40), PWD VARCHAR2(40), DESCRIBE VARCHAR2(500), ENABLE NUMBER(2) ) create table t_guestinfo ( id NUMBER(16) not null primary key, name VARCHAR2(40), sex number, id_card VARCHAR2(18), remark varchar2(500) ) create table t_roominfo ( id number(16) not null primary key, name varchar2(40), grade varchar2(40), type varchar2(40), floor varchar2(40), guest_id_room number(16), remark varchar2(500) ) create table t_rentinfo ( id number(16) not null primary key, room_id number(16), type varchar(40), balance number(38), antecedent_money number(38), remark varchar2(500) ) create table t_guest_id_room ( id number(16) not null primary key, guest_id number(16), room_id number(16) ) --创建序列 create sequence seq_userid increment by 1 start with 2 nomaxvalue nocycle nocache; create sequence seq_guestid increment by 1 start with 1 nomaxvalue nocycle nocache; create sequence seq_roomid increment by 1 start with 1 nomaxvalue nocycle nocache; create sequence seq_rentid increment by 1 start with 1 nomaxvalue nocycle nocache; create sequence seq_guest_id_room increment by 1 start with 1 nomaxvalue nocycle nocache; --创建主键自增的trigger create or replace trigger tr_seq_userid before insert on t_userinfo for each row when (new.id is null) begin select seq_userid.nextval into :new.id from dual; end; create or replace trigger tr_seq_guestid before insert on t_guestinfo for each row when (new.id is null) begin select seq_guestid.nextval into :new.id from dual; end; create or replace trigger tr_seq_roomid before insert on t_roominfo for each row when (new.id is null) begin select seq_roomid.nextval into :new.id from dual; end; create or replace trigger tr_seq_guest_id_room before insert on t_guest_id_room for each row when (new.id is null) begin select seq_guest_id_room.nextval into :new.id from dual; end; create or replace trigger tr_seq_rentid before insert on t_rentinfo for each row when (new.id is null) begin select seq_rentid.nextval into :new.id from dual; end; --插入一条用户 insert into t_userinfo (id,name,pwd,describe,enable) values(seq_userid.nextval,'cbtpro','cbtpro','',1); select * from t_userinfo; |
|||
创建database links 并使用 | oracle | ||
SQL> CREATE DATABASE LINK mydblink CONNECT TO test IDENTIFIED BY test123 USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.210)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl) ) )'; Database link created. SQL> select count(1) from user_tables@mydblink; COUNT(1) ---------- 6 |
|||
查看表的大小,在指定表空间执行 | oracle | ||
SELECT T.SEGMENT_NAME, SUM(T.BYTES) / 1024 / 1024 table_size_MB --单位:MB FROM DBA_SEGMENTS T WHERE T.SEGMENT_NAME = 'INDICATOR_69058' --表名: GROUP BY T.SEGMENT_NAME ORDER BY SUM(T.BYTES) DESC; |
|||
查看当前PRC时区信息 | linux | ||
查看当前PRC时区信息 zdump -v PRC | grep 2012 |
|||
Linux修改时区后不用重启就可以生效 | linux | ||
复制修改后的时区信息,可使时间立即生效,而不用重启 cp /usr/share/zoneinfo/Asia/Tehran /etc/localtime 将UTC时间写入硬件 hwclock |