`
收藏列表
标题 标签 来源
oracle Cursor oracle, cursor
--SET SERVEROUTPUT ON
DECLARE
  TYPE TRIGGERHELPERCURSOR IS REF CURSOR;
  DRIGGER_HELPER_CURSOR TRIGGERHELPERCURSOR;
  V_TRIGGER_NAME        VARCHAR2(500);
  V_SQL                 VARCHAR2(100);
BEGIN
  V_SQL := 'SELECT TRIGGER_NAME FROM ALL_TRIGGERS WHERE OWNER LIKE ''%OWNER''';
  OPEN DRIGGER_HELPER_CURSOR FOR V_SQL;
  LOOP
    FETCH DRIGGER_HELPER_CURSOR
      INTO V_TRIGGER_NAME;
    EXIT WHEN DRIGGER_HELPER_CURSOR%NOTFOUND;
    V_SQL := 'ALTER TRIGGER ' || V_TRIGGER_NAME || ' ENABLE';
    EXECUTE IMMEDIATE V_SQL;
  END LOOP;
  CLOSE DRIGGER_HELPER_CURSOR;
END;
c#计时, loging c#
System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\test.txt", true);
System.Diagnostics.Stopwatch st = new System.Diagnostics.Stopwatch();
st.Start();
// do something
st.Stop();
file.WriteLine("SPENT:" + st.ElapsedMilliseconds.ToString());
file.Close();
read data from excel (using Microsoft.Office.Interop.Excel) c#
 Microsoft.Office.Interop.Excel.Application drillDownSpecExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();
                Workbook drillDownSpecWorkbook = drillDownSpecExcel.Workbooks.Open(txtDrillDownSpecPath.Text, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                    Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
                Sheets allWorkSheets =  drillDownSpecWorkbook.Worksheets;
                Worksheet drillDownSpecWorkSheet = null;
                for (int i = 1; i <= allWorkSheets.Count; i++)// index starts from 1
                {
                    Worksheet workSheet = (Worksheet)allWorkSheets[i];
                    if (workSheet.Name == "Drill Down Spec")
                    {
                        drillDownSpecWorkSheet = workSheet;
                        break;
                    }
                }
                if (drillDownSpecWorkSheet == null)
                {
                    drillDownSpecExcel.Quit();
                    MessageBox.Show("Invalid Drill Down Spec. File");
                    return;
                }
                else {
                    if (((Microsoft.Office.Interop.Excel.Range)drillDownSpecWorkSheet.Cells[2, 3]).Text.ToString() != "Type" || ((Microsoft.Office.Interop.Excel.Range)drillDownSpecWorkSheet.Cells[2, 8]).Text.ToString() != "SQL Statement")
                    {
                        drillDownSpecExcel.Quit();
                        MessageBox.Show("Invalid Drill Down Spec. File");
                        return;
                    }
                }
                
                string domainName = findEntryRootDomainName();
                if (string.IsNullOrEmpty(domainName))
                {
                    drillDownSpecExcel.Quit();
                    MessageBox.Show("Drill Down Spec. Filename Is Invalid.");
                    return;
                }

                int rowCount = drillDownSpecWorkSheet.UsedRange.Rows.Count;
                string prevEntryRootName = null,currentEntryRootName = null;
                StringBuilder drillDownSqls = new StringBuilder(DRILL_DOWN_SCRIPT_START);
                bool hasDrillDownSql = false;
                for (int r = 3; r <= rowCount; r++)// starts from 3th row,index starts from 1
                {
                    currentEntryRootName = ((Microsoft.Office.Interop.Excel.Range)drillDownSpecWorkSheet.Cells[r, 1]).Text.ToString().Trim();
                    if (string.IsNullOrEmpty(prevEntryRootName))
                    {
                        prevEntryRootName = currentEntryRootName;
                    }
                    if (!string.IsNullOrEmpty(prevEntryRootName)
                        && !string.IsNullOrEmpty(currentEntryRootName)
                        && prevEntryRootName != currentEntryRootName)
                    {
                        if (hasDrillDownSql)
                        {
                            generateDrillDownScriptFile(domainName,prevEntryRootName, drillDownSqls.Append(DRILL_DOWN_SCRIPT_END).ToString());
                        }
                        drillDownSqls = new StringBuilder(DRILL_DOWN_SCRIPT_START); // reset drillDownSqls for another entry root
                        hasDrillDownSql = false;
                        prevEntryRootName = currentEntryRootName;
                    }

                    string sqlStatement = ((Microsoft.Office.Interop.Excel.Range)drillDownSpecWorkSheet.Cells[r, 8]).Text.ToString().Trim();
                    if (!string.IsNullOrEmpty(sqlStatement))
                    {
                        hasDrillDownSql = true;
                        drillDownSqls.Append(convertDrillDownSql(((Microsoft.Office.Interop.Excel.Range)drillDownSpecWorkSheet.Cells[r, 3]).Text.ToString().Trim(), sqlStatement));
                    }
                }
                drillDownSpecExcel.Quit();
                MessageBox.Show("Generation completed");
read data from Excel (OleDb) c#
 OleDbConnection OleConn = new OleDbConnection(" Provider=Microsoft.Ace.OleDb.12.0; Data Source = " + txtDrillDownSpecPath.Text + ";Extended Properties='Excel 12.0; HDR=NO;  IMEX=1'");
                OleConn.Open();
                OleDbDataAdapter OleDaExcel = new OleDbDataAdapter("SELECT * FROM  [Sheet1$]", OleConn);
                DataSet excelDataSet = new DataSet();
                OleDaExcel.Fill(excelDataSet, "Sheet1");
                OleConn.Close();

                try
                {
                    if (excelDataSet.Tables[0].Rows[1].ItemArray[2].ToString() != "Type" || excelDataSet.Tables[0].Rows[1].ItemArray[7].ToString() != "SQL Statement")
                    {
                        MessageBox.Show("Invalid Drill Down Spec. File");
                        return;
                    }
                }
                catch (IndexOutOfRangeException ex)
                {
                    MessageBox.Show("Invalid Drill Down Spec. File");
                    return;
                }


                string domainName = findEntryRootDomainName();
                if (string.IsNullOrEmpty(domainName))
                {
                    MessageBox.Show("Drill Down Spec. Filename Is Invalid.");
                    return;
                }
                
                int rowCount = excelDataSet.Tables[0].Rows.Count;
                string prevEntryRootName = null,currentEntryRootName = null;
                StringBuilder drillDownSqls = new StringBuilder(DRILL_DOWN_SCRIPT_START);
                bool hasDrillDownSql = false;
                for (int r = 2; r < rowCount; r++)// starts from 3th row
                {
                    currentEntryRootName = excelDataSet.Tables[0].Rows[r].ItemArray[0].ToString().Trim();
                    if (string.IsNullOrEmpty(prevEntryRootName))
                    {
                        prevEntryRootName = currentEntryRootName;
                    }
                    if (!string.IsNullOrEmpty(prevEntryRootName)
                        && !string.IsNullOrEmpty(currentEntryRootName)
                        && prevEntryRootName != currentEntryRootName)
                    {
                        if (hasDrillDownSql)
                        {
                            generateDrillDownScriptFile(domainName,prevEntryRootName, drillDownSqls.Append(DRILL_DOWN_SCRIPT_END).ToString());
                        }
                        drillDownSqls = new StringBuilder(DRILL_DOWN_SCRIPT_START); // reset drillDownSqls for another entry root
                        hasDrillDownSql = false;
                        prevEntryRootName = currentEntryRootName;
                    }

                    string sqlStatement = excelDataSet.Tables[0].Rows[r].ItemArray[7].ToString().Trim();
                    if (!string.IsNullOrEmpty(sqlStatement))
                    {
                        hasDrillDownSql = true;
                        drillDownSqls.Append(convertDrillDownSql(excelDataSet.Tables[0].Rows[r].ItemArray[2].ToString().Trim(), sqlStatement));
                    }
                }
create dll c#
C:\Windows\Microsoft.NET\Framework\v3.5>csc /target:library /out:ConsoleControl.dll C:\Users\Yangch\Desktop\ConsoleControl_Source_Code\ConsoleControl\ConsoleControl.cs C:\Users\Yangch\Desktop\ConsoleControl_Source_Code\ConsoleControl\ConsoleEventArgs.cs C:\Users\Yangch\Desktop\ConsoleControl_Source_Code\ConsoleControl\ResFinder.cs C:\Users\Yangch\Desktop\ConsoleControl_Source_Code\ConsoleControl\ConsoleControl.designer.cs
Search infomation in LDAP ldap
package com.test;

import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;

public class UserSearcher {

	private static final String EMAIL_ADDRESS_SEPRATOR = ",";

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		Hashtable<String, String> env = new Hashtable<String, String>();
		env.put(Context.INITIAL_CONTEXT_FACTORY,
				"com.sun.jndi.ldap.LdapCtxFactory");
		env.put(Context.PROVIDER_URL, "LDAP://xxxxxx.com/");

		env.put(Context.SECURITY_AUTHENTICATION, "simple");
		env.put(Context.SECURITY_PRINCIPAL, "username");
		env.put(Context.SECURITY_CREDENTIALS, "password");

		SearchControls sc = new SearchControls();
		sc.setReturningAttributes(new String[] { "displayName" });
		sc.setSearchScope(SearchControls.SUBTREE_SCOPE);

		String filter = "test@abc.com";

		DirContext dctx = new InitialDirContext(env);
		NamingEnumeration<SearchResult> results = dctx.search(
				"OU=GlobalUsers,DC=corp,DC=oocl,DC=com", filter, sc);
		while (results.hasMore()) {
			SearchResult sr = (SearchResult) results.next();
			Attributes attrs = sr.getAttributes();
			Attribute attr = attrs.get("displayName");
			System.out.println(attr.get());
		}
		dctx.close();
	}
}
给图片增加水印 水印
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;

import javax.imageio.ImageIO;

/**
 * @copyright (c) Toone Company.
 */

public class Mark {

	/**
	 * 给图片添加水印
	 * 
	 * @param filePath
	 *        需要添加水印的图片的路径
	 * @param markContent
	 *        水印的文字
	 * @param markContentColor
	 *        水印文字的颜色
	 * @param qualNum
	 *        图片质量
	 * @return
	 */
	public void mark(String srcImgPath, String outImgPath, String watermarkStr) {
		try {
			// 读取原图片信息
			File srcImgFile = new File(srcImgPath);
			Image srcImg = ImageIO.read(srcImgFile);
			int srcImgWidth = srcImg.getWidth(null);
			int srcImgHeight = srcImg.getHeight(null);
			// 加水印
			BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight,
					BufferedImage.TYPE_INT_RGB);
			Graphics2D g = bufImg.createGraphics();

			g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);

			Font font = new Font("宋体", Font.PLAIN, 50);
			g.setColor(Color.gray); // 根据图片的背景设置水印颜色

			g.setFont(font);
			int x = (srcImgWidth - getWatermarkLength(watermarkStr, g)) / 2;
			int y = srcImgHeight / 2;
			g.drawString(watermarkStr, x, y);

			g.dispose();
			// 输出图片
			FileOutputStream outImgStream = new FileOutputStream(outImgPath);
			ImageIO.write(bufImg, "jpg", outImgStream);
			outImgStream.flush();
			outImgStream.close();
		}
		catch (Exception e) {
			e.printStackTrace();
		}
	}

	// 获取水印文字总长度
	private int getWatermarkLength(String str, Graphics2D g) {
		return g.getFontMetrics(g.getFont()).charsWidth(str.toCharArray(), 0,
				str.length());
	}

	public static void main(String[] args) { // 原图位置, 输出图片位置, 水印文字
		new Mark().mark("c://t1.jpg", "c://t2.jpg", "水印");
	}

}
oracle存储过程例子之批量更改数据 存储过程
CREATE OR REPLACE PROCEDURE updateDistinctColum
Is
err_num number;
err_msg Varchar2(4000);
myID   VARCHAR2(1000);
C_SQL      Varchar2(4000);
myNumber    number ;
CURSOR C_CURSOR IS
  select ID
    from itrp_indicator a
   where exists (select 1
            from (select count(code) k, code
                    from itrp_indicator b
                   group by code) cc
           where cc.k > 1
             and cc.code = a.code)
     and a.isdimension = 0;
Begin
     myNumber := 0;
     Open C_CURSOR;
     Loop
         FETCH C_CURSOR INTO myID;
         EXIT WHEN C_CURSOR%NOTFOUND;
         myNumber := myNumber+1;
         C_SQL := 'update itrp_indicator set code = C' || myNumber || '_dist,physicalField = C' || myNumber || '_dist where id = ' || myID;
         EXECUTE IMMEDIATE C_SQL;
     End Loop;
     commit;
  Close C_CURSOR;
  exception
      when others then
      rollback;
     DBMS_OUTPUT.PUT_LINE(C_SQL);--打印出执行的sql
     err_num :=sqlcode;
     err_msg :=sqlerrm(err_num);
     DBMS_OUTPUT.PUT_LINE('err_num:' || err_num);
     DBMS_OUTPUT.PUT_LINE('err_msg' || err_msg);--打印出错信息
End;




sqlserver批量删除表外键 sql, foreignkey
declare @fkname varchar(200),@tbname varchar(200),@sql varchar(1000)
begin
  declare drop_fk cursor for select object_name(constid),object_name(fkeyid) from sysforeignkeys
  open drop_fk
  fetch next from drop_fk into @fkname,@tbname
  while @@fetch_status=0
    begin
      --select @sql='alter table '+@tbname+' drop constraint '+@fkname
      --exec (@sql)
	  if(@tbname<>0)
      print 'alter table '+@tbname+' drop constraint '+@fkname
      fetch next from drop_fk into @fkname,@tbname
    end
  close drop_fk
  deallocate drop_fk
end


--select object_name(constid),object_name(fkeyid) from sysforeignkeys
js 闭包 js, 闭包
var a = {};
for(var i=0;i<5;i++){
    a[i] = function(p){
	return function(){
	   alert(p);
	}
    }(i);
}

a[1]();// alert(1);
a[2]();// alert(2);
将jpg图片文件,进行等比或非等比的大小转换 java, 图片处理
package com.toone.util;

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

// 缩略图类,
// 本java类能将jpg图片文件,进行等比或非等比的大小转换。
// 具体使用方法
// s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度,是否等比缩放(默认为true))
public class DwindlePic {

	String InputDir; // 输入图路径

	String OutputDir; // 输出图路径

	String InputFileName; // 输入图文件名

	String OutputFileName; // 输出图文件名

	int OutputWidth = 80; // 默认输出图片宽

	int OutputHeight = 80; // 默认输出图片高

	int rate = 0;

	boolean proportion = true; // 是否等比缩放标记(默认为等比缩放)

	public DwindlePic() {
		// 初始化变量
		InputDir = "";
		OutputDir = "";
		InputFileName = "";
		OutputFileName = "";
		OutputWidth = 80;
		OutputHeight = 80;
		rate = 0;
	}

	public boolean s_pic() {
		// BufferedImage image;
		// String NewFileName;
		// 建立输出文件对象
		File file = new File(OutputDir + OutputFileName);
		FileOutputStream tempout = null;
		try {
			tempout = new FileOutputStream(file);
		}
		catch (Exception ex) {
			System.out.println(ex.toString());
		}
		Image img = null;
		Toolkit tk = Toolkit.getDefaultToolkit();
		Applet app = new Applet();
		MediaTracker mt = new MediaTracker(app);
		try {
			img = tk.getImage(InputDir + InputFileName);
			mt.addImage(img, 0);
			mt.waitForID(0);
		}
		catch (Exception e) {
			e.printStackTrace();
		}

		if (img.getWidth(null) == -1) {
			// System.out.println(" can't read,retry!" + "<BR>");
			return false;
		}
		else {
			int new_w;
			int new_h;
			if (this.proportion == true) { // 判断是否是等比缩放.
			// 为等比缩放计算输出的图片宽度及高度
				double rate1 = ((double) img.getWidth(null)) / (double) OutputWidth + 0.1;
				double rate2 = ((double) img.getHeight(null)) / (double) OutputHeight
						+ 0.1;
				double rate = rate1 > rate2 ? rate1 : rate2;
				new_w = (int) (((double) img.getWidth(null)) / rate);
				new_h = (int) (((double) img.getHeight(null)) / rate);
			}
			else {
				new_w = OutputWidth; // 输出的图片宽度
				new_h = OutputHeight; // 输出的图片高度
			}
			BufferedImage buffImg = new BufferedImage(new_w, new_h,
					BufferedImage.TYPE_INT_RGB);

			Graphics g = buffImg.createGraphics();

			g.setColor(Color.white);
			g.fillRect(0, 0, new_w, new_h);

			g.drawImage(img, 0, 0, new_w, new_h, null);
			g.dispose();

			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(tempout);
			try {
				encoder.encode(buffImg);
				tempout.close();
			}
			catch (IOException ex) {
				System.out.println(ex.toString());
			}
		}
		return true;
	}

	public boolean s_pic(String InputDir, String OutputDir, String InputFileName,
			String OutputFileName) {
		// 输入图路径
		this.InputDir = InputDir;
		// 输出图路径
		this.OutputDir = OutputDir;
		// 输入图文件名
		this.InputFileName = InputFileName;
		// 输出图文件名
		this.OutputFileName = OutputFileName;
		return s_pic();
	}

	public boolean s_pic(String InputDir, String OutputDir, String InputFileName,
			String OutputFileName, int width, int height, boolean gp) {
		// 输入图路径
		this.InputDir = InputDir;
		// 输出图路径
		this.OutputDir = OutputDir;
		// 输入图文件名
		this.InputFileName = InputFileName;
		// 输出图文件名
		this.OutputFileName = OutputFileName;
		// 设置图片长宽
		setW_H(width, height);
		// 是否是等比缩放 标记
		this.proportion = gp;
		return s_pic();
	}

	public void setInputDir(String InputDir) {
		this.InputDir = InputDir;
	}

	public void setOutputDir(String OutputDir) {
		this.OutputDir = OutputDir;
	}

	public void setInputFileName(String InputFileName) {
		this.InputFileName = InputFileName;
	}

	public void setOutputFileName(String OutputFileName) {
		this.OutputFileName = OutputFileName;
	}

	public void setOutputWidth(int OutputWidth) {
		this.OutputWidth = OutputWidth;
	}

	public void setOutputHeight(int OutputHeight) {
		this.OutputHeight = OutputHeight;
	}

	public void setW_H(int width, int height) {
		this.OutputWidth = width;
		this.OutputHeight = height;
	}

	public static void main(String[] a) {
		// s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度)
		DwindlePic mypic = new DwindlePic();
		System.out
				.println(mypic.s_pic("e:/", "e:/", "iOA(1280-1024).jpg", "tt.jpg", 1280, 150, true));
	}
}
不失真的图片缩放[不支持等比例缩放] java, 图片处理 不失真的图片缩放
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
import com.mortennobel.imagescaling.ResampleOp;
import org.apache.log4j.Logger;

/**
 * 图片缩放工具类
 * @author sunnymoon
 */
public class MyImage {
	private final Logger log = Logger.getLogger(this.getClass());
	/**
	 * 接收输入流输生成图片
	 * @param input
	 * @param writePath
	 * @param width
	 * @param height
	 * @param format
	 * @return
	 */
	public boolean resizeImage(InputStream input, String writePath,
			Integer width, Integer height, String format) {
		try {
			BufferedImage inputBufImage = ImageIO.read(input);
			log.info("转前图片高度和宽度:" + inputBufImage.getHeight() + ":"+ inputBufImage.getWidth());
			ResampleOp resampleOp = new ResampleOp(width, height);// 转换
			BufferedImage rescaledTomato = resampleOp.filter(inputBufImage,
					null);
			ImageIO.write(rescaledTomato, format, new File(writePath));
			log.info("转后图片高度和宽度:" + rescaledTomato.getHeight() + ":"+ rescaledTomato.getWidth());
			return true;
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		}

	}

	/**
	 * 接收File输出图片
	 * @param file
	 * @param writePath
	 * @param width
	 * @param height
	 * @param format
	 * @return
	 */
	public boolean resizeImage(File file, String writePath, Integer width,
			Integer height, String format) {
		try {
			BufferedImage inputBufImage = ImageIO.read(file);
			inputBufImage.getType();
			log.info("转前图片高度和宽度:" + inputBufImage.getHeight() + ":"+ inputBufImage.getWidth());
			ResampleOp resampleOp = new ResampleOp(width, height);// 转换
			BufferedImage rescaledTomato = resampleOp.filter(inputBufImage,
					null);
			ImageIO.write(rescaledTomato, format, new File(writePath));
			log.info("转后图片高度和宽度:" + rescaledTomato.getHeight() + ":"+ rescaledTomato.getWidth());
			return true;
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		}

	}

	/**
	 * 接收字节数组生成图片
	 * @param RGBS
	 * @param writePath
	 * @param width
	 * @param height
	 * @param format
	 * @return
	 */
	public boolean resizeImage(byte[] RGBS, String writePath, Integer width,
			Integer height, String format) {
		InputStream input = new ByteArrayInputStream(RGBS);
		return this.resizeImage(input, writePath, width, height, format);
	}

	public byte[] readBytesFromIS(InputStream is) throws IOException {
		int total = is.available();
		byte[] bs = new byte[total];
		is.read(bs);
		return bs;
	}
	
	//测试:只测试了字节流的方式,其它的相对简单,没有一一测试
	public static void main(String[] args) throws IOException {
		
		
		int width = 150;
		int height = 150;
		File inputFile = new File("F:\\from.jpg");
		File outFile = new File("F:\\to.jpg");
		String outPath = outFile.getAbsolutePath();
		MyImage myImage = new MyImage();
		InputStream input = new FileInputStream(inputFile);
		byte[] byteArrayImage=myImage.readBytesFromIS(input);
		input.read(byteArrayImage);
		myImage.resizeImage(byteArrayImage, outPath, width, height, "jpg");
	}
}
java缩放图片代码 java缩放图片

import java.awt.Image;

import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class ImgManager1 {

	public static void main(String args[]) {
		ImgManager1.reduceImgGif("c:/testgif.gif", "c:/xufnew/test02.gif", 150, 200);

	}

	/**
	 * 图像缩放 jpg格式
	 * 
	 * @param imgsrc
	 *            :原图片文件路径
	 * @param imgdist
	 *            :生成的缩略图片文件路径
	 * @param widthdist
	 *            :生成图片的宽度
	 * @param heightdist
	 *            :生成图片的高度
	 */
	public static void reduceImg(String imgsrc, String imgdist, int widthdist,
			int heightdist) {
		try {
			File srcfile = new File(imgsrc);
			if (!srcfile.exists()) {
				return;
			}
			Image src = ImageIO.read(srcfile);

			BufferedImage tag = new BufferedImage((int) widthdist,
					(int) heightdist, BufferedImage.TYPE_INT_RGB);
			/*
			 * Image.SCALE_SMOOTH 的缩略算法  生成缩略图片的平滑度的
			 * 优先级比速度高 生成的图片质量比较好 但速度慢
			 */
			tag.getGraphics().drawImage(
					src.getScaledInstance(widthdist, heightdist,
							Image.SCALE_SMOOTH), 0, 0, null);
			
			FileOutputStream out = new FileOutputStream(imgdist);
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
			encoder.encode(tag);
			out.close();

		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}
	
	public static void reduceImgGif(String imgsrc, String imgdist, int widthdist,
			int heightdist) {
		try {
			File srcfile = new File(imgsrc);
			if (!srcfile.exists()) {
				return;
			}
			Image src = ImageIO.read(srcfile);

			BufferedImage tag = new BufferedImage((int) widthdist,
					(int) heightdist, BufferedImage.TYPE_INT_RGB);
			/*
			 * Image.SCALE_SMOOTH 的缩略算法  生成缩略图片的平滑度的
			 * 优先级比速度高 生成的图片质量比较好 但速度慢
			 */
			tag.getGraphics().drawImage(
					src.getScaledInstance(widthdist, heightdist,
							Image.SCALE_SMOOTH), 0, 0, null);
			
//			FileOutputStream out = new FileOutputStream(imgdist);
//			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
//			encoder.encode(tag);
//			out.close();
			ImageIO.write(tag, "gif", new File(imgdist));

		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}
	
	/**
	 * 根据图片路径 读取图片文件
	 * @param fileName
	 * @return
	 */
	public static BufferedImage readImage(String fileName) {
		BufferedImage bi = null;
		try {
			bi = ImageIO.read(new File(fileName));
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
		return bi;
	}

	/**
	 * 生成新的图片文件
	 * @param im
	 * @param formatName
	 * @param fileName
	 * @return
	 */
	public static boolean writeImage(RenderedImage im, String formatName,
			String fileName) {
		boolean result = false;
		try {
			result = ImageIO.write(im, formatName, new File(fileName));
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
		return result;
	}

	/**
	 * 转换图片格式 到 jpg
	 * @param im
	 * @param fileName
	 * @return
	 */
	public static boolean writeJPEGImage(RenderedImage im, String fileName) {
		return writeImage(im, "JPEG", fileName);
	}

	/**
	 * 转换图片格式 到 gif  不知到好用不
	 * @param im
	 * @param fileName
	 * @return
	 */
	public static boolean writeGIFImage(RenderedImage im, String fileName) {
		return writeImage(im, "GIF", fileName);
	}

	public static boolean writePNGImage(RenderedImage im, String fileName) {
		return writeImage(im, "PNG", fileName);
	}

	public static boolean writeBMPImage(RenderedImage im, String fileName) {
		return writeImage(im, "BMP", fileName);
	}
}

jQuery cookie eg cookie
function saveCookie(username,password){
	var options = {
		expires : 30,// 保留30天
		path : "/",
		domain : ""
	}
	$.cookie("username","sa",options);
	$.cookie("password","sa",options);
}
oracle over oracle
SELECT ROW_NUMBER() OVER (ORDER BY a),a FROM ABC
Sqlserver全文检索查询 sqlserver, 全文检索
declare @searchDoc varchar(100) 
set @searchDoc='XXXXXXX' --需要检索的信息
set nocount on 
declare c cursor for 
select 'select * from '+b.name+' where '+a.name+'=;' sname,'select count(*) from '+b.name+' where '+a.name+' like ''%'+@searchDoc+'%''' --如果是根据Id查询相关联数据可以直接用=号
from sys.all_columns a inner join sys.all_objects b 
on a.object_id=b.object_id and a.system_type_id=167 and b.type='U' 
--where a.name like '%Id' --如果需要查询表数据中的关联情况,限定查以Id结尾的就好了,速度快点
order by b.name,a.name 
open c 
declare @sname varchar(2000),@sqlstr varchar(2000) 
fetch next from c into @sname,@sqlstr 
while @@fetch_status=0 
begin 
    exec('if ('+@sqlstr+')>0 print '''+@sname+''';') --打印出有相关联'XXXXXXX'该数据存在的表及表字段
    fetch next from c into @sname,@sqlstr 
end 
close c 
deallocate c  
set nocount off 
sqlserver存储过程例子 存储过程
--执行方法  printUpdateEnumDictItemNode 'W1'
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[printUpdateEnumDictItemNode]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[printUpdateEnumDictItemNode]
GO
CREATE PROCEDURE printUpdateEnumDictItemNode
@queryColumns varchar(100)
AS
declare 
@Ret int,
@TABLE_NAME   Varchar(1000),
@TABLE_ID   int,
@C_SQL      Varchar(4000),
@col_count int
BEGIN
declare C_TABLE cursor for 
	select name,id From sysobjects a  where a.name like 'RPD_%' and xtype='U';
open C_TABLE
			fetch next from C_TABLE into @TABLE_NAME,@TABLE_ID
		    while @@fetch_status = 0
		    begin
			Select @col_count=count(1) from syscolumns cl where cl.id = @TABLE_ID and cl.name = @queryColumns;
			if (@col_count >0)
			begin
		           select @C_SQL = 'update ' + @TABLE_NAME +' t set (t.'+@queryColumns+'LV ,t.'+@queryColumns+'LF,t.'+@queryColumns+'RG) = (select t2.nodelevel,t2.nodeleft,t2.noderight  from itrp_EnumDictItem t2 where t.'+@queryColumns+'id = t2.id);';
			   print  @C_SQL;
			end;
			else
			begin
				print '--' + @TABLE_NAME + '表无'+@queryColumns;
			end;
			select @Ret=@@Error;
			if(@Ret<>0)
				Goto ErrHandler;
			if @Ret=0
				fetch next from C_TABLE into @TABLE_NAME,@TABLE_ID
		    end;
			close C_TABLE;
			deallocate C_TABLE;
END
if @@trancount > 0
	commit;
ErrHandler:
if @@trancount > 0
begin
	Rollback Tran;
end
GO
oracle存储过程 存储过程
--执行方法  printUpdateEnumDictItemNode('W2')
CREATE OR REPLACE PROCEDURE printUpdateEnumDictItemNode(queryColumn varchar2)
Is
TABLE_1   VARCHAR2(1000);
C_SQL      Varchar2(4000);
--V_CURSORID    INTEGER;
col_count number(1);
err_num    number;
err_msg     varchar2(2000);
CURSOR C_TABLE IS
   Select a.table_name From user_tables a  where a.table_name like 'RPD_%';
Begin
     Open C_TABLE;
     Loop
         FETCH C_TABLE INTO TABLE_1;
         EXIT WHEN C_TABLE%NOTFOUND;
         Select count(1) into col_count from  user_col_comments cl where cl.table_name = TABLE_1 and cl.column_name = queryColumn;
         if col_count >0 then
           --V_CURSORID := DBMS_SQL.OPEN_CURSOR;
           C_SQL := 'update ' || TABLE_1||' t set (t.' || queryColumn || 'LV ,t.' || queryColumn || 'LF,t.' || queryColumn || 'RG) = (
                    select t2.nodelevel,t2.nodeleft,t2.noderight  from itrp_EnumDictItem t2 where t.' || queryColumn || 'id = t2.id);';

           DBMS_OUTPUT.PUT_LINE(C_SQL);

           --DBMS_SQL.close_cursor(V_CURSORID);
         Else
           DBMS_OUTPUT.PUT_LINE('--' || TABLE_1 || '表无'||queryColumn);
         End If;

     End Loop;

  Close C_TABLE;
  exception
      when others then
      rollback;
          DBMS_OUTPUT.PUT_LINE(C_SQL);
          --DBMS_SQL.close_cursor(V_CURSORID);
          err_num :=sqlcode;
          err_msg :=sqlerrm(err_num);
          DBMS_OUTPUT.PUT_LINE('err_num:' || err_num);
          DBMS_OUTPUT.PUT_LINE('err_msg' || err_msg);
End;
java虚拟机
JAVA虚拟机中内部有两种线程:守护线程和非守护线程。守护线程通常是由虚拟机自己使用的,比如执行垃圾收集任务的线程。但是,JAVA程序也可以所它创建的任何线程标识为守护线程。当所有的非守护线程终止运行时,虚拟机实例将自动退出。

Java虚拟机通过装载、连接、初始化一个JAVA类型,使该类型可以被正在运行的JAVA程序所使用。其中装载就是把二进制的JAVA类型读入JAVA虚拟机中。而连接就是把这种已经读入虚拟机中的二进制的类型数据合并到虚拟机的运行状态中。连接阶段分为三个步骤——验证、准备、解析。
验证:确保JAVA类型格式正确且适合于JAVA虚拟机使用;
准备:负责为该类型分配内存;
解析:把常量池中的符号引用转换为直接引用。虚拟机可以推迟解析这一步,它可以在运行中的程序真正使用某个符号引用时再去解析。

任何一个类的初始化都要求它的所有祖先类预先初始化。而一个接口的初始化,并不要求它的祖先接口先被初始化
js aop aop, js
var chinaExcelAOP = {
	// 例外方法,不进行拦截
	exceptions : {
		// 样式设置
		updateCellContent : true,
		setAXStatus : true,
		initAXStatus : true,
		updateFontName : true,
		updateFontSize : true,
		saveAsExcel : true,
		printFilePreview : true,
		printFile : true,
		operateTemplate : true,
		readTemplate : true,
		initTemplateInfo : true,
		refreshTips : true,
		updateTemplateStateImg : true,
		clearAllCaches : true
	},
	// 初始化aop
	init : function(obj, methods) {
		obj.before = this.before;
		if (methods) {
			// 指定了拦截的方法名
			for (var i = 0; i < methods.length; i++) {
				obj.before(methods[i], chinaExcelAOP.beforeAdvice);
			}
		} else {
			// 没有指定拦截的方法名,将拦截该对象除指定例外方法名外的所有方法
			for (var key in obj) {
				if (!this.exceptions[key] && typeof(obj[key]) == 'function') {
					obj.before(key, chinaExcelAOP.beforeAdvice);
				}
			}
		}
	},
	before : function(method, advice) {
		var original = eval("this." + method);
		this[method] = function() {
			var result = advice.apply(this, arguments);
			// 若advice返回false,不执行目标方法
			if (result) {
				return original.apply(this, arguments);
			}
		};
	},
	beforeAdvice : function(key) {
		var result = true;
		if (loadActiveX.FormProtect) {
			Ext.Msg.info({
						success : false,
						message : "当前模板已启用,不允许修改设置"
					});
			result = false;
		}
		return result;
	}
};
// 拦截样式设置的相关方法
chinaExcelAOP.init(chinaexcelCommands);
// 拦截指标映射的相关方法
chinaExcelAOP.init(mappingIndicators, ['indicatorMapping',
				'cutIndicatorMapping', 'pasteIndicatorMapping',
				'clearIndicatorMapping', 'setFloatRows', 'removeFloatRow']);
// 拦截公式设置相关的方法
chinaExcelAOP.init(calFormula, ['saveFormula', 'deleteFormula', 'copyFormulas',
				'pasteFormulas', 'clearSelected', 'setNumberCol',
				'sumVertical', 'sumHorizontal', 'subtotal', 'setLinkFiled',
				'setJoinType', 'setQueryCondition', 'orderSettings']);
// 拦截设置合并指标的方法
chinaExcelAOP.init(combineIndicator, ['setCombineIndicator']);
Global site tag (gtag.js) - Google Analytics