摘要: 大数据量insert与update语句的效率问题
阅读全文
posted @
2007-03-18 21:37 陈琪 阅读(6078) |
评论 (1) |
编辑 收藏
据说被称为世上最经典的15句话
1,记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的
2,能冲刷一切的除了眼泪,就是时间,以时间来推移感情,时间越长,冲突越淡,仿佛不断稀释的茶
3,怨言是上天得至人类最大的供物,也是人类祷告中最真诚的部分
4,智慧的代价是矛盾。这是人生对人生观开的玩笑。
5,世上的姑娘总以为自己是骄傲的公主(除了少数极丑和少数极聪明的姑娘例外)
6,如果敌人让你生气,那说明你还没有胜他的把握
7,如果朋友让你生气,那说明你仍然在意他的友情
8,令狐冲说“有些事情本身我们无法控制,只好控制自己。”
9,我不知道我现在做的哪些是对的,那些是错的,而当我终于老死的时候我才知道这些。所以我现在所能做的就是尽力做好每一件事,然后等待着老死。
10,也许有些人很可恶,有些人很卑鄙。而当我设身为他想象的时候,我才知道:他比我还可怜。所以请原谅所有你见过的人,好人或者坏人
11,鱼对水说你看不到我的眼泪,因为我在水里.水说我能感觉到你的眼泪,因为你在我心里。
12,快乐要有悲伤作陪,雨过应该就有天晴。如果雨后还是雨,如果忧伤之后还是忧伤.请让我们从容面对这离别之后的离别。 微笑地去寻找一个不可能出现的你!
13,死亡教会人一切,如同考试之后公布的结果――虽然恍然大悟,但为时晚矣~!
14,你出生的时候,你哭着,周围的人笑着;你逝去的时候,你笑着,而周围的人在哭!一切都是轮回!!!! 我们都在轮回中!!!
15,男人在结婚前觉得适合自己的女人很少,结婚后觉得适合自己的女人很多 !
posted @
2007-03-07 12:44 陈琪 阅读(302) |
评论 (0) |
编辑 收藏
网上看面试题时看到,摘抄别人写的一个程序,并做了一些注解,翻译为java版,记录一下
package chenqi;
/** *//**
* 要求:试编写程序实现将八个皇后放置在国际象棋棋盘的无冲突的位置上的算法,并给出所有的解。
* 提示:在国际象棋上放置皇后时,任何一个皇后的水平、竖直和斜45º都不能有另一个皇后。
* 解决该问题采用逐次试探的方法,即采用递归调用putchess函数的方法。
* 首先将第一个皇后放于第一行第一列,然后开始向下一行递归。
* 每一步递归中,首先检测待放置位置是否与已放置的皇后冲突,如不冲突,则进行下一行的放置,
* 否则,选择该行的下一个位置进行检测。如整行的位置都冲突,则回到上一行,重新选择位置源码:
* @author Administrator
*
*/
public class EightQueen {
//8根线代表8列,数组中每个对象存的值表示皇后在该列的位置
int[] line = new int[8];
int answer=0;
/** *//**
* 判断是否有冲突---用试探法,判断是否与其他列有冲突
* @param t
* @return 返回0表示没有冲突,返回1表示有冲突
*/
private int Judge(int t) {
int i, n = 0;
for (i = 0; i < t; i++) {
//第一种冲突情况:2列处于同一行冲突
if (line[i] == line[t]) {
n = 1;
break;
}
//2列处于斜向上45度对角线冲突
if (line[i] + i == line[t] + t) {
n = 1;
break;
}
//2列处于斜向下45度对角线冲突
if (line[i] - i == line[t] - t) {
n = 1;
break;
}
}
return n;
}
/** *//**
* 主要控制函数
* @param n
*/
private void control(int n)
{
int t = 8;
for (line[n] = 0; line[n] < t; line[n]++) {
if (Judge(n) == 1)
continue;
else if (n != 7)
control(n + 1);
else
show();
}
}
/** *//**
* 显示摆放的结果
*
*/
private void show() {
int i, j;
for (i = 0; i < 8; i++) {
for (j = 0; j < 8; j++) {
if (line[i] == j)
System.out.print("Q");
else
System.out.print("*");
}
System.out.println();
}
answer++;
System.out.println();
System.out.println(answer);
}
public static void main(String[] args) {
EightQueen s = new EightQueen();
s.control(0);
System.out.println(s.answer);
}
}
这段代码感觉又简洁又易懂,再次感谢他的作者:
http://blog.chinaunix.net/u/26924/showart_228365.html
posted @
2007-02-28 23:38 陈琪 阅读(460) |
评论 (0) |
编辑 收藏
摘要: struts tiles
阅读全文
posted @
2007-02-23 17:32 陈琪 阅读(763) |
评论 (0) |
编辑 收藏
1。网上的一种说法,关闭range,关闭worksheet,关闭workbook,最后关闭excel
System.Runtime.InteropServices.Marshal.ReleaseComObject(Range);
2System.Runtime.InteropServices.Marshal.ReleaseComObject(myBook);
3System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel);
Range = null;
myBook = null;
myExcel = null;
我试过,没有成功
2。关闭进程
C#和Asp.net下excel进程一被打开,有时就无法关闭, 尤其是website.对关闭该进程有过GC、release等方法,但这些方法并不是在所有情况下均适用。 于是提出了kill process的方法, 目前我见过的方法多是用进程创建时间筛选excel.exe进程, 然后kill 。 这样的方法是不精确的, 也是不安全的, 通过对网上一些关于Api运用文章的阅读, 我找到了更为直接精确找到这个process并kill的方法,以下就是代码
using System.Runtime.InteropServices;
[DllImport("User32.dll", CharSet = CharSet.Auto)]
public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);
protected void Button1_Click(object sender, EventArgs e)
{
Excel.ApplicationClass excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
excel.Workbooks.Open("d:\aaa.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
IntPtr t = new IntPtr(excel.Hwnd);
int k = 0;
GetWindowThreadProcessId(t, out k);
System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k);
p.Kill();
}
以上代码百分百成功的关闭excel.exe进程
我的做法是结合两者,先释放资源,然后关闭进程。
同时网上说避免使用GC.Collect 方法 (),因为会导致整个clr进行gc,影响你的性能.所以我也没有调用GC.Collect
posted @
2006-11-04 11:28 陈琪 阅读(10135) |
评论 (16) |
编辑 收藏
思路是先将oracle中时间字段转化成字段串,然后与字符串模糊查询
如下:
select * from atm1_operatelog t where to_char(t.operatetime,'yyyy-MM-dd') like '2006-10-16'
同时反过来也是一样可行的
select * from atm1_operatelog t where t.operatetime like to_date('2006-10-16','yyyy-MM-dd')
将字段串转化为时间然后使用like关键字
posted @
2006-10-17 15:45 陈琪 阅读(4880) |
评论 (8) |
编辑 收藏
public static void main(String[] args) {
ListPortAction.test();
}
public static void test(){
try{
String targetfile = "c:/1.xls";
OutputStream os = new FileOutputStream(targetfile);
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(os);
jxl.write.WritableSheet ws = wwb.createSheet("Test Sheet 1", 0);
for(int i=0;i<50;i++){
if(i!=0){
InputStream in = new FileInputStream(targetfile);
Workbook wb = Workbook.getWorkbook(in);
os = new FileOutputStream(targetfile);
wwb = Workbook.createWorkbook(os,wb);
ws = wwb.getSheet(0);
wb.close();
in.close();
}
for(int j=0;j<1000;j++){
Label l = new Label(0,j+i*1000,"测试");
ws.addCell(l);
}
try{
wwb.write();
wwb.close();
os.flush();
os.close();
}catch(Exception e){
System.out.println("错误2:");
e.printStackTrace();
}
}
}catch(Exception e){
System.out.println("错误:");
e.printStackTrace();
}
}
以上是我写的一个测试类,写5W条记录现在是没有问题,先存硬盘,然后从硬盘获取流,最后可以写到response的outputStream中,不过感觉自己的代码质量不是很好,欢迎高手多多指教。可以互相交流思想。
posted @
2006-09-01 09:51 陈琪 阅读(2070) |
评论 (1) |
编辑 收藏