`
rockethj8
  • 浏览: 24080 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
USE SY
USE SY

BEGIN

DECLARE 
@ORDER_LOT VARCHAR(8),
@ROUTE_CODE VARCHAR(10);

SET @ORDER_LOT = '20120405';
SET @ROUTE_CODE='6070';

 DELETE T_SORT_TASK_DETAIL WHERE SORT_TASK_MASTER_ID IN (SELECT SORT_TASK_MASTER_ID FROM T_SORT_TASK_MASTER WHERE ORDER_LOT=@ORDER_LOT AND ROUTE_CODE=@ROUTE_CODE)

 DELETE T_SORT_TASK_MASTER WHERE ORDER_LOT=@ORDER_LOT AND ROUTE_CODE=@ROUTE_CODE;

 DELETE T_TASKNOS_BOX_CONT_EXE WHERE ORDER_LOT=@ORDER_LOT AND ROUTE_CODE=@ROUTE_CODE;

 DELETE T_BOX_DETAIL WHERE BOX_CODE IN(SELECT BOX_CODE FROM T_BOX WHERE ORDER_LOT=@ORDER_LOT AND DP_ID=@ROUTE_CODE)

 UPDATE T_BOX  SET  LAST_LOAD_TIME = NULL, DELIVER_TIME = NULL, USE_STATUS =1, MODIF_TIME = GETDATE(),   CONT_CODE = NULL, CONT_ID = NULL, SORT_LINE = NULL, DPID_INDEX = NULL,  UC_DESC=NULL,RTN_TIME = GETDATE(), VERSION = VERSION + 1, WF_STATUS = '0' 
  WHERE ORDER_LOT=@ORDER_LOT AND DP_ID=@ROUTE_CODE;

END
java集合类总结
java.util.Collection 接口                                  

   |——java.util.List 接口 

   |          |——java.util.Vector 

   |          |           |——java.util.Stack 

   |          |——java.util.ArrayList 

   |          |——java.util.LinkedList 

   |——java.util.Set接口 

              |——java.util.SortedSet接口 

              |          |——java.util.TreeSet 

              |——java.util.HashSet 

                         |——java.util.LinkedHashSet 

  

1.ArrayList 非线程安全,索引查询速度快删除时要维护索引位置,所以比较慢,ArrayList每次扩容,都扩大到原来大小的【(数组的大小 * 3)/2 + 1】倍。
Vector与ArrayList基本上实现是一样的,只是在数据操作部分加上了同步锁(synchronized)是线程安全的。
2.Stack是Vector的拓展实现,增加额外的方法实现了后进先出的集合机制。
3.LinkedList属于一个双向循环的链表,其内部是用一个Entry来维护的。LinkeList便于添加和删除。

List 接口总结:
ArrayList和Vector取决于是否存在多线程,如果是多线程的情况下选择Vector,否则选ArrayList。
ArrayList 和 LinkedList。如果要支持随机访问,而不必在除尾部的任何位置插入或除去元素,那么,ArrayList 提供了可选的集合。
但如果,您要频繁的从列表的中间位置添加和除去元素,而只要顺序的访问列表元素,那么,LinkedList 实现更好。



1.HashSet内部是使用HashMap来实现的,不可以插入重复数据,并且无序的将对象插入到集合中,非线程安全的Set集合。
2.TreeSet其内部结构是支持排序的,这也是它存在的原因,其底层实现也是使用了TreeMap,存入用TreeSet类实现的Set集合的对象必须实现Comparable接口
3.LinkedHashSet 通过继承hashSet,然后调用HashMap的构造函数,用LinkedHashMap来存储数据,与HashSet不一样的是,LinkedHashSet可以保持存入集合的顺序。

Set总结:
Set集合不可以插入重复数据,这一点可以用作排重功能。






java.util.Map 接口 

   |——Java.util.HashMap 

   |          |——Java.util.LinkedHashMap 

   |——Java.util.SortedMap 接口 

   |           |——Java.util.TreeMap 

   |——java.util.Hashtable 
   
   |——java.util.concurrent.ConcurrentHashMap
   
1.ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hashTable的不同部分进行的修改。
ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的hashTable,它们有自己的锁。
只要多个修改操作发生在不同的段上,它们就可以并发进行。
2.在不是多线程的环境下,HashMap是首选。非线程安全,值可为NULL.
3.HashTable是线程安全的在HashMap的基础上增加同步关键字(synchronized),值不能为NULL。
不过ConcurrentHashMap的同步机制效率更高。推荐使用ConcurrentHashMap。
4.Map放入集合时是无序的,所以当需要内部实现排序时,可以选择TreeMap,存入用TreeSet类实现的Set集合的对象必须实现Comparable接口
5.LinkedHashMap是HashMap的一个子类,它保留插入的顺序,如果需要输出的顺序和输入时的相同,那么就选用LinkedHashMap。



struts 核心解析
http://talentkep.iteye.com/blog/832551
Spring源代码解析
Spring源代码解析(一):IOC容器:http://www.iteye.com/topic/86339 
Spring源代码解析(二):IoC容器在Web容器中的启动:http://www.iteye.com/topic/86594 
Spring源代码解析(三):Spring JDBC:http://www.iteye.com/topic/87034 
Spring源代码解析(四):Spring MVC:http://www.iteye.com/topic/87692 
Spring源代码解析(五):Spring AOP获取Proxy:http://www.iteye.com/topic/88187 
Spring源代码解析(六):Spring声明式事务处理:http://www.iteye.com/topic/88189 
Spring源代码解析(七):Spring AOP中对拦截器调用的实现:http://www.iteye.com/topic/107785 
Spring源代码解析(八):Spring驱动Hibernate的实现:http://www.iteye.com/topic/110801 
Spring源代码解析(九):Spring Acegi框架鉴权的实现:http://www.iteye.com/topic/112979 
Spring源代码解析(十):Spring Acegi框架授权的实现:http://www.iteye.com/topic/11343
mv 时出现argument list too long解决方法
find . -type f -name '9018*' -exec mv {} ../load \;
修改bad文件
rename .pif.bad .pif *.bad
shell读取文件中是否存在该字符
if ! cat test.txt | grep '123' > /dev/null;then 
  printf "Can not find the 123" 
exit 1 
fi
逐行读取文件内容
cat $SERVICELIST | while read line 
do 
#echo $line 
NAME="`echo $line | awk -F\: '{print $1}'`" 
#echo "$updateVersion" 
#echo $version 
PARAM="`echo $line | awk -F\: '{print $2}'`" 
#echo "$sqls" 
if [ "$NAME" = "$MODULE" -o "$MODULE" = "ALL" ] ; then 
# Start service process 
if [ $CMD = 'start' ] ; then 

StartServiceCMD ${PARAM} 
   
fi 

# Stop service process 
if [ $CMD = 'stop' ] ; then 

StopServiceCMD ${PARAM} 

fi 

# Show service process status 
if [ $CMD = 'status' ] ; then 
StatusServiceCMD ${PARAM} 
retstatus=`expr $retstatus + $?` 
fi 
fi 

删除linux文件,32天前的文件,精确到分钟
find /netwatcher/backup/dbarchive -type f  -mtime +32 -exec rm -f {} \;
修改linux时间
# date -s "2004/11/27 22:20:00"
情人节专属 [情人节专属] 纯jJS脚本的3D玫瑰
<html>
<head></head>
<body>
<iframe width="1200px" scrolling="no" height="820px" frameborder="0" noresize="noresize" src="javascript:'
<!doctype html>\n
  <html>\n\t
  	<head>\n\t\t<title>JS1k, 1k demo submission [1022]</title>\n\t\t
	   <meta charset=&quot;utf-8&quot;/>\n\t
	  </head>\n\t
	  <body>\n\t\t
	  	<canvas id=&quot;c&quot;></canvas>\n\t\t
	  	<script>\n\t\t\t 
	  		var b = document.body;\n\t\t\t
	  		var c = document.getElementsByTagName(\'canvas\')[0];\n\t\t\t
	  		var a = c.getContext(\'2d\');\n\t\t\t
	  		document.body.clientWidth; // fix bug in webkit: http://qfox.nl/weblog/218\n\t\t
	  	</script>\n\t\t
	  	<script>\n// start of submission //\nwith(m=Math)
         C=cos,S=sin,P=pow,R=random;c.width=c.height=f=500;h=-250;
         function p(a,b,c){if(c>60)return[S(a*7)*(13+5/(.2+P(b*4,4)))-S(b)*50,b*f+50,625+C(a*7)*(13+5/(.2+P(b*4,4)))+b*400,a*1-b/2,a];A=a*2-1;B=b*2-1;if(A*A+B*B<1){if(c>37){n=(j=c&1)%3F6:4;o=.5/(a+.01)+C(b*125)*3-a*300;w=b*h;return[o*C(n)+w*S(n)+j*610-390,o*S(n)-w*C(n)+550-j*350,1180+C(B+A)*99-j*300,.4-a*.1+P(1-B*B,-h*6)*.15-a*b*.4+C(a+b)/5+P(C((o*(a+1)+(B>0%3Fw:-w))/25),30)*.1*(1-B*B),o/1e3+.7-o*w*3e-6]}if(c>32){c=c*1.16-.15;o=a*45-20;w=b*b*h;z=o*S(c)+w*C(c)+620;return[o*C(c)-w*S(c),28+C(B*.5)*99-b*b*b*60-z/2-h,z,(b*b*.3+P((1-(A*A)),7)*.15+.3)*b,b*.7]}o=A*(2-b)*(80-c*2);w=99-C(A)*120-C(b)*(-h-c*4.9)+C(P(1-b,7))*50+c*2;z=o*S(c)+w*C(c)+700;return[o*C(c)-w*S(c),B*99-C(P(b, 7))*50-c/3-z/1.35+450,z,(1-b/1.2)*.9+a*.1, P((1-b),20)/4+.05]}}setInterval(\'for(i=0;i<1e4;i++)if(s=p(R(),R(),i%2546/.74)){z=s[2];x=~~(s[0]*f/z-h);y=~~(s[1]*f/z-h);if(!m[q=y*f+x]|m[q]>z)m[q]=z,a.fillStyle=&quot;rgb(&quot;+~(s[3]*h)+&quot;,&quot;+~(s[4]*h)+&quot;,&quot;+~(s[3]*s[3]*-80)+&quot;)&quot;,a.fillRect(x,y,1,1)}\',0)\n// end of submission //\n\t\t
      </script>\n\t
    </body>\n
  </html>'">
</iframe>
</body>
</html> 
mkdirs mkdirs 是线程不安全的。。多线程创建目录失败
package test;

import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

public class test2
{
    public static void main(String[] args)
    {
        ThreadTest t = new ThreadTest();
        List<Thread> tList = new ArrayList<Thread>();
        
        for (int i = 0; i < 2000; i ++)
        {
            tList.add(new Thread(t));
        }
        
        for (Thread tt : tList)
        {
            tt.start();
        }
    }
}

class ThreadTest extends Thread
{
    private int sum = 0;

    public void run()
    {
        try
        {
            StringBuffer fileNameWithDir = new StringBuffer();
            fileNameWithDir.append("E:\\2012-01-07\\");
            fileNameWithDir.append(Thread.currentThread().getName());
            File file = new File(fileNameWithDir.toString());

            //synchronized (ThreadTest.class)
            //{
                boolean rs = file.mkdirs();
            //}
            
            File fileDeatail = new File(fileNameWithDir.toString() + "\\" + System.currentTimeMillis() + ".txt");
 
            FileOutputStream out = new FileOutputStream(fileDeatail);
            //System.out.println(fileDeatail);
            out.close();
        }
        catch (Exception e)
        {
            e.printStackTrace(System.out);
        }
    }
}
java 四则运算 栈的实现 java 四则运算 栈的实现 java 四则运算 栈的实现
import java.util.Stack;
/**  
 * 利用栈,进行四则运算的类  
 * 用两个栈来实现算符优先,一个栈用来保存需要计算的数据numStack,一个用来保存计算优先符priStack  
 *   
 * 基本算法实现思路为:用当前取得的运算符与priStack栈顶运算符比较优先级:若高于,则因为会先运算,放入栈顶;  
 * 若等于,因为出现在后面,所以会后计算,所以栈顶元素出栈,取出操作数运算;  
 *  若小于,则同理,取出栈顶元素运算,将结果入操作数栈。各个优先级'(' > '*' = '/' > '+' = '-' > ')'  
 *   
 */    
public class Operate {    
    private Stack<Character> priStack = new Stack<Character>();// 操作符栈    
    private Stack<Integer> numStack = new Stack<Integer>();;// 操作数栈    
    
    /**  
     * 传入需要解析的字符串,返回计算结果(此处因为时间问题,省略合法性验证)  
     * @param str 需要进行技术的表达式  
     * @return 计算结果  
     */    
    public int caculate(String str) {    
        // 1.判断string当中有没有非法字符    
        String temp;// 用来临时存放读取的字符    
        // 2.循环开始解析字符串,当字符串解析完,且符号栈为空时,则计算完成    
        StringBuffer tempNum = new StringBuffer();// 用来临时存放数字字符串(当为多位数时)    
        StringBuffer string = new StringBuffer().append(str);// 用来保存,提高效率    
    
        while (string.length() != 0) {    
            temp = string.substring(0, 1);    
            string.delete(0, 1);    
            // 判断temp,当temp为操作符时    
            if (!isNum(temp)) {    
                // 1.此时的tempNum内即为需要操作的数,取出数,压栈,并且清空tempNum    
                if (!"".equals(tempNum.toString())) {    
                    // 当表达式的第一个符号为括号    
                    int num = Integer.parseInt(tempNum.toString());    
                    numStack.push(num);
                    tempNum.delete(0, tempNum.length());    
                }    
                // 用当前取得的运算符与栈顶运算符比较优先级:若高于,则因为会先运算,放入栈顶;若等于,因为出现在后面,所以会后计算,所以栈顶元素出栈,取出操作数运算;    
                // 若小于,则同理,取出栈顶元素运算,将结果入操作数栈。    
    
                // 判断当前运算符与栈顶元素优先级,取出元素,进行计算(因为优先级可能小于栈顶元素,还小于第二个元素等等,需要用循环判断)    
                while (!compare(temp.charAt(0)) && (!priStack.empty())) { 
                    int a = (int) numStack.pop();// 第二个运算数    
                    int b = (int) numStack.pop();// 第一个运算数    
                    char ope = priStack.pop();    
                    int result = 0;// 运算结果    
                    switch (ope) {    
                    // 如果是加号或者减号,则    
                    case '+':    
                        result = b + a;    
                        // 将操作结果放入操作数栈    
                        numStack.push(result);    
                        break;    
                    case '-':    
                        result = b - a;    
                        // 将操作结果放入操作数栈    
                        numStack.push(result);    
                        break;    
                    case '*':    
                        result = b * a;    
                        // 将操作结果放入操作数栈    
                        numStack.push(result);    
                        break;    
                    case '/':    
                        result = b / a;// 将操作结果放入操作数栈    
                        numStack.push(result);    
                        break;    
                    }    
    
                }    
                // 判断当前运算符与栈顶元素优先级, 如果高,或者低于平,计算完后,将当前操作符号,放入操作符栈    
                if (temp.charAt(0) != '#') {    
                    priStack.push(new Character(temp.charAt(0)));    
                    if (temp.charAt(0) == ')') {// 当栈顶为'(',而当前元素为')'时,则是括号内以算完,去掉括号    
                        priStack.pop();    
                        priStack.pop();    
                    }    
                }    
            } else    
                // 当为非操作符时(数字)    
                tempNum = tempNum.append(temp);// 将读到的这一位数接到以读出的数后(当不是个位数的时候)    
        }    
        return numStack.pop();    
    }    
    
    /**  
     * 判断传入的字符是不是0-9的数字  
     *   
     * @param str  
     *            传入的字符串  
     * @return  
     */    
    private boolean isNum(String temp) {    
        return temp.matches("[0-9]");    
    }    
    
    /**  
     * 比较当前操作符与栈顶元素操作符优先级,如果比栈顶元素优先级高,则返回true,否则返回false  
     *   
     * @param str 需要进行比较的字符  
     * @return 比较结果 true代表比栈顶元素优先级高,false代表比栈顶元素优先级低  
     */    
    private boolean compare(char str) {    
        if (priStack.empty()) {    
            // 当为空时,显然 当前优先级最低,返回高    
            return true;    
        }    
        char last = (char) priStack.lastElement();    
        // 如果栈顶为'('显然,优先级最低,')'不可能为栈顶。    
        if (last == '(') {    
            return true;    
        }    
        switch (str) {    
        case '#':    
            return false;// 结束符    
        case '(':    
            // '('优先级最高,显然返回true    
            return true;    
        case ')':    
            // ')'优先级最低,    
            return false;    
        case '*': {    
            // '*/'优先级只比'+-'高    
            if (last == '+' || last == '-')    
                return true;    
            else    
                return false;    
        }    
        case '/': {    
            if (last == '+' || last == '-')    
                return true;    
            else    
                return false;    
        }    
            // '+-'为最低,一直返回false    
        case '+':    
            return false;    
        case '-':    
            return false;    
        }    
        return true;    
    }    
    
    public static void main(String args[]) {    
        Operate operate = new Operate();    
        int t = operate.caculate("(3+4*(4*10-10/2)#");      
        System.out.println(t);    
    }    
    
}    
Global site tag (gtag.js) - Google Analytics