`
陈碧滔
  • 浏览: 44564 次
  • 性别: Icon_minigender_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("&nbsp;", " ");
			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
Global site tag (gtag.js) - Google Analytics