當(dāng)柳上原的風(fēng)吹向天際的時候...

          真正的快樂來源于創(chuàng)造

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks

          #

          package com.heyang;

          /**
           * 雙色球搖獎
           * 
          @author: 何楊(heyang78@gmail.com)
           * @date: 2009-2-20-下午10:52:55
           
          */

          public class DoubleColorBall{
              
          public static void main(String[] args){
                  
          int[] ballNumbers=getSevenNumbers();
                  
                  
          for(int i:ballNumbers){
                      System.out.print(i
          +",");
                  }

              }

              
              
          /**
               * 得到七個隨機(jī)數(shù)數(shù)組
               * 
          @return
               
          */

              
          public static int[] getSevenNumbers(){
                  
          final int arrLength=7;
                  
          int[] arr=new int[arrLength];
                  
                  
          // 前六個從1-33中選取,如有重復(fù)再取一次
                  do{
                      
          for(int i=0;i<=arrLength-2;i++){
                          arr[i]
          =getIntgerBetween(33,1);
                      }

                  }
          while(hasDuplicatedItem(arr));
                  
                  
          // 最后一個從1-15中選取
                  arr[6]=getIntgerBetween(15,1);
                  
                  
          return arr;
              }

              
              
          /**
               * 位圖法判斷整形數(shù)組是否存在重復(fù)
               * 
          @param arr
               * 
          @return
               
          */

              
          public static boolean hasDuplicatedItem(int[] arr){
                  
          // 找出數(shù)組中最大值
                  int max=arr[0];
                  
          int min=max;
                  
          for(int i:arr){
                      
          if(max<i){
                          max
          =i;
                      }

                      
          if(min>i){
                          min
          =i;
                      }

                  }

                  
                  
          int[] newArr=new int[max-min+1];
                  
          for(int i:arr){
                      
          int index=i-min;
                      
                      
          if(newArr[index]==0){
                          
          // 以前未在此位置存值
                          newArr[index]=1;
                      }

                      
          else{
                          
          // 以前已經(jīng)在此位置存值
                          return true;
                      }

                  }
              
                  
                  
          return false;
              }


              
              
          /**
               * 取得max與min之間的一個隨機(jī)整數(shù),包括min和max兩值
               * 
          @param max
               * 
          @param min
               * 
          @return
               
          */

              
          public static int getIntgerBetween(int max,int min){
                  
          int interval=max-min;        
                  
                  
          return (int)Math.round((Math.random()*interval))+min;
              }

          }
          posted @ 2009-02-21 07:23 何楊 閱讀(300) | 評論 (0)編輯 收藏

           

          package com.heyang;

          /**
           * 概率法求PI
           * 
          @author: 何楊(heyang78@gmail.com)
           * @date: 2009-2-19-下午07:08:57
           
          */

          public class FindPie{
              
          public static void main(String[] args){
                  
          int count=100;
                  
          double simuPie;
                  
                  
          do{
                      simuPie
          =getPie(count);
                      count
          +=10;
                  }
          while(isEquslPie(simuPie)==false);
                    
                  System.out.println(
          "當(dāng)數(shù)量為"+count+"時按概率法得到的Pi="+simuPie+"接近圓周率"+Math.PI);
              }
              
              
              
          public static double getPie(int count){
                  
          int countIntheCorcle=0;
                  
                  
          for(int i=0;i<count;i++){
                      
          double x=Math.random()-0.5;
                      
          double y=Math.random()-0.5;
                      
                      
          if(Math.sqrt(x*x+y*y)<0.5){
                          countIntheCorcle
          ++;
                      }

                  }

                         
                  
          return (double)(4.0d*countIntheCorcle/count);
              }

              
              
          public static boolean isEquslPie(double simuPie){
                  
          return isEqual(simuPie,Math.PI);
              }

              
              
          private static boolean isEqual(double a,double b){
                  
          final double epsilon=0.000001;
                  
                  
          return Math.abs(a-b)<epsilon;
              }

          }

          結(jié)果:
          當(dāng)數(shù)量為98150時按概率法得到的Pi=3.141593641736295接近圓周率3.141592653589793
          posted @ 2009-02-19 17:32 何楊 閱讀(279) | 評論 (0)編輯 收藏

          HttpUnit網(wǎng)址:http://httpunit.sourceforge.net

          要在工程中使用HttpUnit,需要下載httpunit1.7.0.zip包,并把其中l(wèi)ib及jars目錄中的包加載到工程中。

          連接網(wǎng)頁并取得網(wǎng)頁文本示例:
          // 打開一個Web會話,WebConversation的實例模擬一個Web瀏覽器,用來請求一個Web資源
                  WebConversation wc=new WebConversation();
                  
                  
          // 向網(wǎng)址http://www.baidu.com發(fā)出請求
                  WebRequest req=new GetMethodWebRequest("http://www.baidu.com");
                  
                  
          try {
                      
          // 獲得http://www.baidu.com的響應(yīng)
                      WebResponse resp=wc.getResponse(req);
                      
                      
          // 打印表示整個Web頁面的字符串
                      System.out.println(resp.getText());
                      
                      
          // resp.getDOM()方法返回一個表示整個Web頁面的XML文檔
                      
          // resp.getForms()方法返回Web頁面的中的表單數(shù)組
                      
          // resp.getTables()方法返回Web頁面的中的表格數(shù)組
                      
          // resp.getLinks()方法返回Web頁面的中的鏈接數(shù)組
                      
          // resp.getImages()方法返回Web頁面的中的圖片數(shù)組
                  }
           catch (IOException e) {
                      e.printStackTrace();
                  }
           catch (SAXException e) {
                      e.printStackTrace();
                  }

          模擬在百度輸入“金融危機(jī)”并取得查詢結(jié)果的例子:
          WebConversation wc=new WebConversation();
                  
                  WebRequest request
          =new GetMethodWebRequest("http://www.baidu.com");
                  
          try {
                      WebResponse response
          =wc.getResponse(request);
                      
                      
          // 取得Web頁面中第一個Form
                      WebForm form=response.getForms()[0];
                      request
          =form.getRequest();
                      
                      
          // 設(shè)置查詢主題為"金融危機(jī)“,wd是查詢文本框的name
                      request.setParameter("wd""金融危機(jī)");
                      
                      
          // 取得并在控制臺打印響應(yīng)
                      response=wc.getResponse(request);
                      System.out.println(response.getText());
                  }
           catch (IOException e) {
                      e.printStackTrace();
                  }
           catch (SAXException e) {
                      e.printStackTrace();
                  }


          posted @ 2009-02-17 15:08 何楊 閱讀(406) | 評論 (0)編輯 收藏

          在數(shù)據(jù)庫操作中,一項事務(wù)是由一條或者多條表達(dá)式所組成的一個不可分割的工作單元。
          事務(wù)必須遵循ACID原則,即:
          原子性(Atomicity):事務(wù)必須完全執(zhí)行或者完全不執(zhí)行,任何任務(wù)失敗都將導(dǎo)致整個事務(wù)回滾。
          一致性(Consistency):指原始數(shù)據(jù)庫的完整性,事務(wù)系統(tǒng)通過確保事務(wù)是原子性,隔離性和持續(xù)性來實現(xiàn)一致性。
          隔離性(Isolation):事物的執(zhí)行必須不受其它進(jìn)程或者事務(wù)的干擾。
          持續(xù)性(Durabilty):意味著所有事務(wù)過程中的數(shù)據(jù)更改在事務(wù)成功之前必須寫入某些物理介質(zhì),確保系統(tǒng)崩潰時數(shù)據(jù)更改不會丟失。

          JDBC事務(wù)管理

          JDBC中引入一批語句對事務(wù)進(jìn)行支持,它們是:
          Connection.setAutoCommit(True or fasle);設(shè)置事務(wù)是否自動提交,它的參數(shù)缺省是true.要進(jìn)行事務(wù)處理的話,參數(shù)應(yīng)該設(shè)置為false.
          Connection.commit():從setAutoCommit語句開始,到commit語句之間算作一個數(shù)據(jù)庫事務(wù),其中的數(shù)據(jù)庫操作要么全成功要么全失敗.所有在調(diào)用commit方法之前的SQL語句都可以被回滾,然而,一旦commit()方法被調(diào)用,執(zhí)行過的SQL語句就不能再回滾.
          Rollback():事務(wù)回滾,如果事務(wù)中有一個步驟出現(xiàn)錯誤,那么調(diào)用這個方法將使數(shù)據(jù)庫恢復(fù)到執(zhí)行事務(wù)之前的狀態(tài),這樣,事務(wù)的原子性就得到了保證.

          下面是使用事務(wù)處理的例程:

          Connection conn=null;
          Statement statement
          =null;

          try{
            Class.forName(
          "org.gjt.mm.mysql.Driver");
            conn
          =DriverManager.getConnection("jdbc:mysql://127.0.0.1/test""root""hy");
            statement
          =conn.createStatement();
            
            conn.setAutoCommit(
          false);            
            
          int changeCount1=statement.executeUpdate(" update employee set salary=salary-10000 where NAME='郭德綱' ");
            
          int changeCount2=statement.executeUpdate(" update employee set salary=salary+10000 where NAME='于謙'  ");
                  
            
          if(changeCount1==1 && changeCount2==1){
              conn.commit();
            }

            
          else{
              conn.rollback();
            }

          }

          catch(SQLException se){
            
          try{
              conn.rollback();
            }

            
          catch(Exception ex){
              ex.printStackTrace();
            }

          }


          JDBC事務(wù)管理的問題

          以上事務(wù)處理代碼是以數(shù)據(jù)庫的記錄為核心來考慮的,即使用Java代碼通過JDBC和SQL語句直接操作數(shù)據(jù)庫中的記錄,這種傳統(tǒng)方式在現(xiàn)代程序中已經(jīng)不多見,現(xiàn)代程序多把記錄歸納成領(lǐng)域?qū)ο螅缓笫褂妙I(lǐng)域?qū)ο髮?yīng)的DAO來完成領(lǐng)域?qū)ο笈c數(shù)據(jù)庫之間的交互。除了DAO層外,其它層次不與數(shù)據(jù)庫發(fā)生聯(lián)系。因此,上面的直接使用JDBC進(jìn)行事務(wù)處理就不適用了,試想AccountService中有一個方法執(zhí)行兩個帳戶之間的轉(zhuǎn)賬,這個方法要具備事務(wù)功能必須繞過DAO層書寫底層的JDBC代碼,這是層次明晰紀(jì)律嚴(yán)明的系統(tǒng)所不能接受的,好在我們有Spring的事務(wù)處理可以幫我們擺脫兩難境地。

          使用Spring進(jìn)行事務(wù)處理

          Spring對程序控制事務(wù)管理的支持和EJB有很大不同,EJB的事務(wù)管理和JTA密不可分,而Spring使用了一種回調(diào)機(jī)制,把真實的食物實現(xiàn)從事務(wù)代碼中抽象出來。實際上Spring的事務(wù)管理甚至不需要JTA,它也可以使用持久化機(jī)制本身多提供的事務(wù)管理支持。下面就是使用JDBC作為應(yīng)用的持久化機(jī)制的事務(wù)管理示例代碼:

          首先,在上下文定義文件中寫入JDBC事務(wù)管理器的bean定義。

          <bean id="transactionManager"
           class
          ="org.springframework.jdbc.datasource.DataSourceTransactionManager">
           
          <property name="dataSource">
            
          <ref bean="dataSource" />
           
          </property>
          </bean>


          它需要一個數(shù)據(jù)源的支持,數(shù)據(jù)源定義示例如下:

          <bean id="dataSource"
           class
          ="org.springframework.jdbc.datasource.DriverManagerDataSource">
           
          <property name="driverClassName"
            value
          ="org.gjt.mm.mysql.Driver">
           
          </property>
           
          <property name="url" value="jdbc:mysql://127.0.0.1/test">
           
          </property>
           
          <property name="username" value="root"></property>
           
          <property name="password" value="hy"></property>
          </bean>

           

          JDBC事務(wù)管理器會作為事務(wù)管理模板的一個屬性注入進(jìn)入。

          <bean id="transactionTemplate"
           class
          ="org.springframework.transaction.support.TransactionTemplate">
           
          <property name="transactionManager">
            
          <ref bean="transactionManager" />
           
          </property>
          </bean>

           

          而事務(wù)管理模板又作為一個屬性注入到AccountService中。

          <bean id="accountService"
           class
          ="com.heyang.service.AccountService">
           
          <property name="dao" ref="accountDao"/> 
           
          <property name="table" value="SpringTransaction_Account"/>
           
          <property name="transactionTemplate">
            
          <ref bean="transactionTemplate" />
           
          </property>
          </bean>

           

          到這里,在transactionTemplate的幫助下,AccountService就具備了事務(wù)處理功能,下面轉(zhuǎn)賬函數(shù)的具體代碼:

          public void transfer(final Account from,final Account to,final int count){
           transactionTemplate.execute(
            
          new TransactionCallback(){
             
          public Object doInTransaction(TransactionStatus ts){
              
          try{
               
          if(count>from.getCount()){
                
          throw new Exception("轉(zhuǎn)出的帳戶"+from+"余額不足");
               }

               
               
          if(count>5000){
                
          throw new Exception("轉(zhuǎn)出的金額超過了中紀(jì)委限定的額度5000");
               }

               
               
          // 轉(zhuǎn)出帳戶減去轉(zhuǎn)賬金額
               from.setCount(from.getCount()-count);
               update(from);
               
               
          // 轉(zhuǎn)入帳戶加上轉(zhuǎn)賬金額
               to.setCount(to.getCount()+count);
               update(to);
              }

              
          catch(Exception ex){
               ex.printStackTrace();
               
          // 出現(xiàn)任何異常即回滾
               ts.setRollbackOnly();
              }

              
              
          // 如果成功,事務(wù)被提交
              return null;
             }

            }

           );
          }


          以上代碼中,執(zhí)行轉(zhuǎn)賬的業(yè)務(wù)代碼放在try塊中,如果全部代碼執(zhí)行成功,事務(wù)將會被提交;如果如下任何異常,事務(wù)會被回滾,出現(xiàn)異常前的任何修改點將被恢復(fù)到初始狀態(tài)。

          下面是模擬轉(zhuǎn)賬的具體代碼:

          ApplicationContext context=new ClassPathXmlApplicationContext("appCtx.xml");

          AccountService service
          =(AccountService)context.getBean("accountService"); 

          // 準(zhǔn)備測試數(shù)據(jù)
          /* 建表語句如下
           * create table SpringTransaction_Account(
               id INTEGER(10) primary key not null , 
               name VARCHAR(255), 
               count INTEGER(255) 
            ) 
          */

          //Account andy=new Account("andy",3000);
          //service.create(andy);  
          //Account bill=new Account("bill",5000);
          //service.create(bill); 

          // 從數(shù)據(jù)庫取得帳戶Andy,11是其ID
          Account andy=service.getAccount("11");
          Account bill
          =service.getAccount("12");

          // 從Andy帳戶轉(zhuǎn)出4000給Bill,如果Andy帳戶余額低于4000將不會通過事務(wù)處理
          service.transfer(andy, bill, 4000);

          // 從Andy帳戶轉(zhuǎn)出1000給Bill,如果Andy帳戶余額低于1000將不會通過事務(wù)處理
          service.transfer(andy, bill, 1000);

          // 從Bill帳戶轉(zhuǎn)出5500給Andy,因為轉(zhuǎn)賬額度大于中紀(jì)委規(guī)定的5000因此不會通過事務(wù)處理
          service.transfer(bill, andy, 5500);


          以上就是使用Spring進(jìn)行事務(wù)管理的主要流程,根據(jù)應(yīng)用的持久化機(jī)制的不同,Spring還提供了HibernateTransactionManger,JdoTransactionManger,OjbTransactionManger,JtaTransactionManger等事務(wù)管理器供用戶選擇,修改一下上面的transactionManager配置部分即可。

          本例中使用到的代碼下載:
          http://www.aygfsteel.com/Files/heyang/SpringTransaction.rar

          如果使用Hibernate作為程序持久介質(zhì)請下載:
          http://www.aygfsteel.com/Files/heyang/SpringHibernateTransaction.rar

          posted @ 2009-02-13 10:54 何楊 閱讀(1105) | 評論 (0)編輯 收藏

               摘要: 我們知道,在Struts1.x中,大致的內(nèi)部處理流程是這樣的:ActionServlet作為中央處理器,它配置在Web.xml中,接受所有*.do的請求,然后解析URI,得到*.do中的*部分,即path,然后根據(jù)path在struts-config.xml中找到具體處理業(yè)務(wù)的Action以及與之配套的ActionForm和ActionForward,再根據(jù)Action的type用Java反射機(jī)制生成Action的實例進(jìn)行具體業(yè)務(wù)處理,如果Action有ActionForm也會用反射機(jī)制生成form傳遞到函數(shù)execute中,該函數(shù)返回一個ActionForward對象給ActionServlet,如果它不是空,ActionServlet會從中取出URl進(jìn)行頁面跳轉(zhuǎn),否則不采取行動。

          實際上,要拋開Struts框架,自己實現(xiàn)這樣一套流程并不很困難,利用Servlet,正則表達(dá)式,XML解析,反射和BeanUtils的相關(guān)知識就能實現(xiàn)一個。這樣不但能鞏固相關(guān)知識點的掌握,也能對Struts框架有進(jìn)一步的理解。下面就是我按自己的理解完成的Struts內(nèi)部流程的具體實現(xiàn),事  閱讀全文
          posted @ 2009-02-12 15:12 何楊 閱讀(3980) | 評論 (1)編輯 收藏

               摘要: 如果數(shù)組中重復(fù)元素少,比較符合正態(tài)分布,那么這種方法還是比較高效的。  閱讀全文
          posted @ 2009-02-11 08:56 何楊 閱讀(1566) | 評論 (0)編輯 收藏

          package com.heyang;

          /**
           * 諸葛亮要派出五虎上將中的三員執(zhí)行任務(wù),請列出所有可能的組合
           * 
          @author 何楊(heyang78@gmail.com)
           *
           * 
          @since 2009-2-11 上午08:29:25
           * 
          @version 1.00
           
          */

          public class Combiner {
              
          static char[] arr={'關(guān)','','','',''};

              
          public static void main(String[] args) {
                  
          int[] arr = new int[3];
                  combine(
          53, arr);
              }


              
          public static void combine(int total, int chooseCount, int selectedArr[]) {
                  
          for (int i = total; i >= chooseCount; i--){
                      selectedArr[chooseCount 
          - 1= i - 1;
                      
                      
          if (chooseCount > 1){
                          combine(i 
          - 1, chooseCount - 1, selectedArr);
                      }

                      
          else 
                      
          {
                          
          for (int j = selectedArr.length - 1; j >= 0; j--{
                              System.out.print(arr[selectedArr[j]] 
          + ",");
                          }

                          System.out.println();
                      }

                  }

              }

          }


          結(jié)果:
           1黃,馬,趙,
           2黃,馬,張,
           3黃,馬,關(guān),
           4黃,趙,張,
           5黃,趙,關(guān),
           6黃,張,關(guān),
           7馬,趙,張,
           8馬,趙,關(guān),
           9馬,張,關(guān),
          10趙,張,關(guān),

          排列代碼:
          package com.heyang;

          /**
           * 全排列代碼
           * 趙錢孫李四人排隊,求所有排隊方案
           * 
           * 
          @author 何楊(heyang78@gmail.com)
           *
           * 
          @since 2009-2-11 下午01:26:45
           * 
          @version 1.00
           
          */

          public class Permutation{
              
          public static void main(String[] args){
                  Character[] arr
          ={'','','',''};
                  permutation(arr,
          0,arr.length);
              }

              
              
          public static void permutation(Object[] arr,int start,int end){
                  
          if(start<end+1){
                      permutation(arr,start
          +1,end);
                      
                      
          for(int i=start+1;i<end;i++){
                          Object temp;
                          
                          temp
          =arr[start];
                          arr[start]
          =arr[i];
                          arr[i]
          =temp;
                          
                          permutation(arr,start
          +1,end);
                          
                          temp
          =arr[i];
                          arr[i]
          =arr[start];
                          arr[start]
          =temp;
                      }

                  }

                  
          else{
                      
          for(int i=0;i<end;i++){
                          System.out.print(arr[i]);
                      }

                      System.out.print(
          "\n");
                  }

              }

          }


          排列結(jié)果:
           1趙錢孫李
           2趙錢李孫
           3趙孫錢李
           4趙孫李錢
           5趙李孫錢
           6趙李錢孫
           7錢趙孫李
           8錢趙李孫
           9錢孫趙李
          10錢孫李趙
          11錢李孫趙
          12錢李趙孫
          13孫錢趙李
          14孫錢李趙
          15孫趙錢李
          16孫趙李錢
          17孫李趙錢
          18孫李錢趙
          19李錢孫趙
          20李錢趙孫
          21李孫錢趙
          22李孫趙錢
          23李趙孫錢
          24李趙錢孫
          posted @ 2009-02-11 08:32 何楊 閱讀(274) | 評論 (0)編輯 收藏

          “文無第一,武無第二”,技術(shù)人員如果相遇和后者相似,不是你壓過他,就是他壓過你,哪怕是一星半點。即使是客套也會招來對方的輕蔑,就像在擂臺上,沒說的,直接開打吧。
           

          你在為誰而“玩”?

          一)成長的寓言:做一棵永遠(yuǎn)成長的蘋果樹

            一棵蘋果樹,終于結(jié)果了。

            第一年,它結(jié)了10個蘋果,9個被拿走,自己得到1個。對此,蘋果樹憤憤不平,于是自斷經(jīng)脈,拒絕成長。第二年,它結(jié)了5個蘋果,4個被拿走,自己得到1個。“哈哈,去年我得到了10%,今年得到20%!翻了一番。”這棵蘋果樹心理平衡了。

            但是,它還可以這樣:繼續(xù)成長。譬如,第二年,它結(jié)了100個果子,被拿走90個,自己得到10個。

            很可能,它被拿走99個,自己得到1個。但沒關(guān)系,它還可以繼續(xù)成長,第三年結(jié)1000個果子……

            其實,得到多少果子不是最重要的。最重要的是,蘋果樹在成長!等蘋果樹長成參天大樹的時候,那些曾阻礙它成長的力量都會微弱到可以忽略。真的,不要太在乎果子,成長是最重要的。

            【心理點評】你是不是一個已自斷經(jīng)脈的打工族?

            剛開始工作的時候,你才華橫溢,意氣風(fēng)發(fā),相信“天生我才必有用”。但現(xiàn)實很快敲了你幾個悶棍,或許,你為單位做了大貢獻(xiàn)沒人重視;或許,只得到口頭重視但卻得不到實惠;或許……總之,你覺得就像那棵蘋果樹,結(jié)出的果子自己只享受到了很小一部分,與你的期望相差甚遠(yuǎn)。

            于是,你憤怒、你懊惱、你牢騷滿腹……最終,你決定不再那么努力,讓自己的所做去匹配自己的所得。幾年過去后,你一反省,發(fā)現(xiàn)現(xiàn)在的你,已經(jīng)沒有剛工作時的激情和才華了。

            “老了,成熟了。”我們習(xí)慣這樣自嘲。但實質(zhì)是,你已停止成長了。

            這樣的故事,在我們身邊比比皆是。

            之所以犯這種錯誤,是因為我們忘記生命是一個歷程,是一個整體,我們覺得自己已經(jīng)成長過了,現(xiàn)在是到該結(jié)果子的時候了。我們太過于在乎一時的得失,而忘記了成長才是最重要的。

            好在,這不是金庸小說里的自斷經(jīng)脈。我們隨時可以放棄這樣做,繼續(xù)走向成長之路。

            切記:如果你是一個打工族,遇到了不懂管理、野蠻管理或錯誤管理的上司或企業(yè)文化,那么,提醒自己一下,千萬不要因為激憤和滿腹牢騷而自斷經(jīng)脈。不論遇到什么事情,都要做一棵永遠(yuǎn)成長的蘋果樹,因為你的成長永遠(yuǎn)比每個月拿多少錢重要

            (二)動機(jī)的寓言:孩子在為誰而玩

            一群孩子在一位老人家門前嬉鬧,叫聲連天。幾天過去,老人難以忍受。

            于是,他出來給了每個孩子25美分,對他們說:“你們讓這兒變得很熱鬧,我覺得自己年輕了不少,這點錢表示謝意。”

            孩子們很高興,第二天仍然來了,一如既往地嬉鬧。老人再出來,給了每個孩子15美分。他解釋說,自己沒有收入,只能少給一些。15美分也還可以吧,孩子仍然興高采烈地走了。

            第三天,老人只給了每個孩子5美分。

            孩子們勃然大怒,“一天才5美分,知不知道我們多辛苦!”他們向老人發(fā)誓,他們再也不會為他玩了!

            【心理點評】你在為誰而“玩”

            這個寓言是蘋果樹寓言的更深一層的答案:蘋果樹為什么會自斷經(jīng)脈,因為它不是為自己而“玩”。

            人的動機(jī)分兩種:內(nèi)部動機(jī)和外部動機(jī)。如果按照內(nèi)部動機(jī)去行動,我們就是自己的主人。如果驅(qū)使我們的是外部動機(jī),我們就會被外部因素所左右,成為它的奴隸。  

                  在這個寓言中,老人的算計很簡單,他將孩子們的內(nèi)部動機(jī)“為自己快樂而玩”變成了外部動機(jī)“為得到美分而玩”,而他操縱著美分這個外部因素,所以也操縱了孩子們的行為。寓言中的老人,像不像是你的老板、上司?而美分,像不像是你的工資、獎金等各種各樣的外部獎勵?

            如將外部評價當(dāng)作參考坐標(biāo),我們的情緒就很容易出現(xiàn)波動。因為,外部因素我們控制不了,它很容易偏離我們的內(nèi)部期望,讓我們不滿,讓我們牢騷滿腹。不滿和牢騷等負(fù)性情緒讓我們痛苦,為了減少痛苦,我們就只好降低內(nèi)部期望,最常見的方法就是減少工作的努力程度。

            一個人之所以會形成外部評價體系,最主要的原因是父母喜歡控制他。父母太喜歡使用口頭獎懲、物質(zhì)獎懲等控制孩子,而不去理會孩子自己的動機(jī)。久而久之,孩子就忘記了自己的原初動機(jī),做什么都很在乎外部的評價。上學(xué)時,他忘記了學(xué)習(xí)的原初動機(jī)---好奇心和學(xué)習(xí)的快樂;工作后,他又忘記了工作的原初動機(jī)---成長的快樂,上司的評價和收入的起伏成了他工作的最大快樂和痛苦的源頭。

            切記:外部評價系統(tǒng)經(jīng)常是一種家族遺傳,但你完全可以打破它,從現(xiàn)在開始培育自己的內(nèi)部評價體系,讓學(xué)習(xí)和工作變成“為自己而玩”。

            (三)規(guī)劃的寓言:把一張紙折疊51次

            想象一下,你手里有一張足夠大的白紙。現(xiàn)在,你的任務(wù)是,把它折疊51次。那么,它有多高?

            一個冰箱?一層樓?或者一棟摩天大廈那么高?不是,差太多了,這個厚度超過了地球和太陽之間的距離。

            【心理點評】

            到現(xiàn)在,我拿這個寓言問過十幾個人了,只有兩個人說,這可能是一個想象不到的高度,而其他人想到的最高的高度也就是一棟摩天大廈那么高。

            折疊51次的高度如此恐怖,但如果僅僅是將51張白紙疊在一起呢?

            這個對比讓不少人感到震撼。因為沒有方向、缺乏規(guī)劃的人生,就像是將51張白紙簡單疊在一起。今天做做這個,明天做做那個,每次努力之間并沒有一個聯(lián)系。這樣一來,哪怕每個工作都做得非常出色,它們對你的整個人生來說也不過是簡單的疊加而已。

            當(dāng)然,人生比這個寓言更復(fù)雜一些。有些人,一生認(rèn)定一個簡單的方向而堅定地做下去,他們的人生最后達(dá)到了別人不可企及的高度。譬如,我一個朋友的人生方向是英語,他花了十?dāng)?shù)年努力,僅單詞的記憶量就達(dá)到了十幾萬之多,在這一點上達(dá)到了一般人無法企及的高度。

            也有些人,他們的人生方向也很明確,譬如開公司做老板,這樣,他們就需要很多技能???專業(yè)技能、管理技能、溝通技能、決策技能等等。他們可能會在一開始嘗試做做這個,又嘗試做做那個,沒有一樣是特別精通的,但最后,開公司做老板的這個方向?qū)⒁郧暗倪@些看似零散的努力統(tǒng)合到一起,這也是一種復(fù)雜的人生折疊,而不是簡單的疊加。

            切記:看得見的力量比看不見的力量更有用

            現(xiàn)在,流行從看不見的地方尋找答案,譬如潛能開發(fā),譬如成功學(xué),以為我們的人生要靠一些奇跡才能得救。但是,在我看來,東莞恒緣心理咨詢中心的咨詢師毛正強(qiáng)說得更正確,“通過規(guī)劃利用好現(xiàn)有的能力遠(yuǎn)比挖掘所謂的潛能更重要。”

            (四)逃避的寓言:小貓?zhí)娱_影子的招數(shù)

            “影子真討厭!”小貓湯姆和托比都這樣想,“我們一定要擺脫它。”

            然而,無論走到哪里,湯姆和托比發(fā)現(xiàn),只要一出現(xiàn)陽光,它們就會看到令它們抓狂的自己的影子。

            不過,湯姆和托比最后終于都找到了各自的解決辦法。湯姆的方法是,永遠(yuǎn)閉著眼睛。托比的辦法則是,永遠(yuǎn)待在其他東西的陰影里。

            【心理點評】

            這個寓言說明,一個小的心理問題是如何變成更大的心理問題的。

            可以說,一切心理問題都源自對事實的扭曲。什么事實呢?主要就是那些令我們痛苦的負(fù)性事件。

            因為痛苦的體驗,我們不愿意去面對這個負(fù)性事件。但是,一旦發(fā)生過,這樣的負(fù)性事件就注定要伴隨我們一生,我們能做的,最多不過是將它們壓抑到潛意識中去,這就是所謂的忘記。

            但是,它們在潛意識中仍然會一如既往地發(fā)揮作用。并且,哪怕我們對事實遺忘得再厲害,這些事實所伴隨的痛苦仍然會襲擊我們,讓我們莫名其妙地傷心難過,而且無法抑制。這種疼痛讓我們進(jìn)一步努力去逃避。

            發(fā)展到最后,通常的解決辦法就是這兩個:要么,我們像小貓湯姆一樣,徹底扭曲自己的體驗,對生命中所有重要的負(fù)性事實都視而不見;要么,我們像小貓托比一樣,干脆投靠痛苦,把自己的所有事情都搞得非常糟糕,既然一切都那么糟糕,那個讓自己最傷心的原初事件就不是那么疼了。

            白云心理醫(yī)院的咨詢師李凌說,99%的吸毒者有過痛苦的遭遇。他們之所以吸毒,是為了讓自己逃避這些痛苦。這就像是躲進(jìn)陰影里,痛苦的事實是一個魔鬼,為了躲避這個魔鬼,干脆把自己賣給更大的魔鬼。

            還有很多酗酒的成人,他們有過一個酗酒而暴虐的老爸,挨過老爸的不少折磨。為了忘記這個痛苦,他們學(xué)會了同樣的方法。

            除了這些看得見的錯誤方法外,我們?nèi)祟愡€發(fā)明了無數(shù)種形形色色的方法去逃避痛苦,弗洛伊德將這些方式稱為心理防御機(jī)制。太痛苦的時候,這些防御機(jī)制是必要的,但糟糕的是,如果心理防御機(jī)制對事實扭曲得太厲害,它會帶出更多的心理問題,譬如強(qiáng)迫癥、社交焦慮癥、多重人格,甚至精神分裂癥等。

            真正抵達(dá)健康的方法只有一個--直面痛苦。直面痛苦的人會從痛苦中得到許多意想不到的收獲,它們最終會變成當(dāng)事人的生命財富。

            切記:陰影和光明一樣,都是人生的財富。

            一個最重要的心理規(guī)律是,無論多么痛苦的事情,你都是逃不掉的。你只能去勇敢地面對它,化解它,超越它,最后和它達(dá)成和解。如果你自己暫時缺乏力量,你可以尋找?guī)椭瑢ふ矣H友的幫助,或?qū)ふ覍I(yè)的幫助,讓你信任的人陪著你一起去面對這些痛苦的事情。

            美國心理學(xué)家羅杰斯曾是最孤獨的人,但當(dāng)他面對這個事實并化解后,他成了真正的人際關(guān)系大師;美國心理學(xué)家弗蘭克有一個暴虐而酗酒的繼父和一個糟糕的母親,但當(dāng)他挑戰(zhàn)這個事實并最終從心中原諒了父母后,他成了治療這方面問題的專家;日本心理學(xué)家森田正馬曾是嚴(yán)重的神經(jīng)癥患者,但他通過挑戰(zhàn)這個事實并最終發(fā)明出了森田療法……他們生命中最痛苦的事實最后都變成了他們最重要的財富。你,一樣也可以做到。

            (五)行動的寓言--螃蟹、貓頭鷹和蝙蝠

            螃蟹、貓頭鷹和蝙蝠去上惡習(xí)補(bǔ)習(xí)班。數(shù)年過后,它們都順利畢業(yè)并獲得博士學(xué)位。不過,螃蟹仍橫行,貓頭鷹仍白天睡覺晚上活動,蝙蝠仍倒懸。

            【心理點評】

            這是黃永玉大師的一個寓言故事,它的寓意很簡單:行動比知識重要

            用到心理健康中,這個寓言也發(fā)人深省。

            心理學(xué)的知識堪稱博大精深。但是,再多再好的心理學(xué)知識也不能自動幫助一個人變得更健康。其實,我知道的一些學(xué)過多年心理學(xué)的人士,他們學(xué)心理學(xué)的目的之一就是要治自己,但學(xué)了這么多年以后,他們的問題依舊。

            之所以出現(xiàn)這種情況,一個很重要的原因是,他們沒有身體力行,那樣知識就只是遙遠(yuǎn)的知識,知識并沒有化成他們自己的生命體驗。

            我的一個喜歡心理學(xué)的朋友,曾被多名心理學(xué)人士認(rèn)為不敏感,不適合學(xué)心理學(xué)。但事實證明,這種揣測并不正確。他是不夠敏感,但他有一個非常大的優(yōu)點:知道一個好知識,就立即在自己的生命中去執(zhí)行。這樣一來,那些遙遠(yuǎn)的知識就變成了真切的生命體驗,他不必“懂”太多,就可以幫助自己,并幫助很多人。

            如果說,高敏感度是一種天才素質(zhì),那么高行動力是更重要的天才素質(zhì)。

            這個寓言還可以引申出另一種含義:不要太指望神秘的心理治療的魔力。最重要的力量永遠(yuǎn)在你自己的身上,奧秘的知識、玄妙的潛能開發(fā)、炫目的成功學(xué)等等,都遠(yuǎn)不如你自己身上已有的力量重要。我們習(xí)慣去外面尋找答案,去別人那里尋找力量,結(jié)果忘記了力量就在自己身上。

            切記:別人的知識不能自動地拯救你

            如果一些連珠的妙語打動了你,如果一些文字或新信條啟發(fā)了你。那么,這些別人的文字和經(jīng)驗都只是一個開始,更重要的是,你把你以為好的知識真正運用到你自己的生命中去。

            猶太哲學(xué)家馬丁?布伯的這句話,我一直認(rèn)為是最重要的:

            你必須自己開始。假如你自己不以積極的愛去深入生存,假如你不以自己的方式去為自己揭示生存的意義,那么對你來說,生存就將依然是沒有意義的。  

                (六)放棄的寓言:蜜蜂與鮮花

            玫瑰花枯萎了,蜜蜂仍拼命吮吸,因為它以前從這朵花上吮吸過甜蜜。但是,現(xiàn)在在這朵花上,蜜蜂吮吸的是毒汁。

            蜜蜂知道這一點,因為毒汁苦澀,與以前的味道是天壤之別。于是,蜜蜂憤不過,它吸一口就抬起頭來向整個世界抱怨,為什么味道變了?!

            終于有一天,不知道是什么原因,蜜蜂振動翅膀,飛高了一點。這時,它發(fā)現(xiàn),枯萎的玫瑰花周圍,處處是鮮花。

            【心理點評】

            這是關(guān)于愛情的寓言,是一位年輕的語文老師的真實感悟。

            有一段時間,她失戀了,很痛苦,一直想約我聊聊,希望我的心理學(xué)知識能給她一些幫助。我們一直約時間,但快兩個月過去了,兩人的時間總不能碰巧湊在一起。

            最后一次約她,她說:“謝謝!不用了,我想明白了。”

            原來,她剛從九寨溝回來。失戀的痛苦仍在糾纏她,讓她神情恍惚,不能享受九寨溝的美麗。不經(jīng)意的時候,她留意到一只小蜜蜂正在一朵鮮花上采蜜。那一剎那間,她腦子里電閃雷鳴般地出現(xiàn)了一句話:“枯萎的鮮花上,蜜蜂只能吮吸到毒汁。”

            當(dāng)然,大自然中的小蜜蜂不會這么做,只有人類才這么傻,她這句話里的蜜蜂當(dāng)然指她自己。這一剎那,她頓悟出了放棄的道理。以前,她想讓我?guī)退叱鰜恚岚蚱鋵嵕烷L在她自己身上,她想飛就能飛。

            放棄并不容易,愛情中的放棄尤其令人痛苦。因為,愛情是對我們幼小時候的親子關(guān)系的復(fù)制。幼小的孩子,無論從哪個方面看,都離不開爸爸媽媽。如果爸爸媽媽完全否定他,那對他來說就意味著死亡,這是終極的傷害和恐懼。我們多多少少都曾體驗過被爸爸媽媽否定的痛苦和恐懼,所以,當(dāng)愛情???這個親子關(guān)系的復(fù)制品再一次讓我們體驗這種痛苦和恐懼時,我們的情緒很容易變得非常糟糕。

            不過,愛情和親子關(guān)系相比,有一個巨大的差別:小時候,我們無能為力,一切都是父母說了算;但現(xiàn)在,我們長大了,我們有力量自己去選擇自己的命運。可以說,童年時,我們是沒有翅膀的小蜜蜂,但現(xiàn)在,我們有了一雙強(qiáng)有力的翅膀了。

            但是,當(dāng)深深地陷入愛情時,我們會回歸童年,我們會忘記自己有一雙可以飛翔的翅膀。等我們自己悟出這一點后,愛情就不再會是對親子關(guān)系的自動復(fù)制,我們的愛情就獲得了自由,就有了放棄的力量。

            切記:愛情是兩個人的事情,兩個完全平等的、有獨立人格的人的事情。你可以努力,但不是說,你努力了就一定會有效果,因為另一個人,你并不能左右。

            所以,無論你多么在乎一次愛情,如果另一個人堅決要離開你,請尊重他的選擇。

            并且,還要記得,你不再是童年,只能聽?wèi){痛苦的折磨。你已成人,你有一雙強(qiáng)有力的翅膀,你完全可以飛出一個已經(jīng)變成毒藥的關(guān)系。

            (七)親密的寓言:獨一無二的玫瑰

            小王子有一個小小的星球,星球上忽然綻放了一朵嬌艷的玫瑰花。以前,這個星球上只有一些無名的小花,小王子從來沒有見過這么美麗的花,他愛上這朵玫瑰,細(xì)心地呵護(hù)她。

            那一段日子,他以為,這是一朵人世間唯一的花,只有他的星球上才有,其他的地方都不存在。

            然而,等他來到地球上,發(fā)現(xiàn)僅僅一個花園里就有5000朵完全一樣的這種花朵。這時,他才知道,他有的只是一朵普通的花。

            一開始,這個發(fā)現(xiàn),讓小王子非常傷心。但最后,小王子明白,盡管世界上有無數(shù)朵玫瑰花,但他的星球上那朵,仍然是獨一無二的,因為那朵玫瑰花,他澆灌過,給她罩過花罩,用屏風(fēng)保護(hù)過,除過她身上的毛蟲,還傾聽過她的怨艾和自詡,聆聽過她的沉默……一句話,他馴服了她,她也馴服了他,她是他獨一無二的玫瑰。

            “正因為你為你的玫瑰花費了時間,這才使你的玫瑰變得如此重要。”一只被小王子馴服的狐貍對他說。

            【心理點評】

            這是法國名著《小王子》中一個有名的寓言故事,我曾讀過十?dāng)?shù)遍,但仍然是直到2005年才明白這一點。

            面對著5000朵玫瑰花,小王子說:“你們很美,但你們是空虛的,沒有人能為你們?nèi)ニ馈?#8221;

            只有傾注了愛,親密關(guān)系才有意義。但是,現(xiàn)在我們越來越流行空虛的“親密關(guān)系”,最典型的就是因網(wǎng)絡(luò)而泛濫的一夜情。

            我們急著去擁有。仿佛是,每多擁有過一朵玫瑰,自己的生命價值就多了一分。網(wǎng)絡(luò)時代,擁有過數(shù)十名情人,已不再是太罕見的事情。但我所了解的這些濫情者,沒有一個是不空虛的。他們并不享受關(guān)系,他們只享受征服。

            “征服欲望越強(qiáng)的人,對于關(guān)系的親密度越?jīng)]有興趣。”廣州白云心理醫(yī)院的咨詢師榮瑋齡說,“沒有擁有前,他們會想盡一切辦法拉近關(guān)系的距離。但一旦擁有后,他們會迅速喪失對這個親密關(guān)系的興趣。征服欲望越強(qiáng),喪失的速度越快。”

            對于這樣的人,一個玫瑰園比起一朵獨一無二的玫瑰花來,更有吸引力。

            然而,關(guān)系的美,正在乎兩人的投入程度和被馴服程度。當(dāng)兩個人都自然而然地去投入,自然而然地被馴服后,關(guān)系就會變成人生養(yǎng)料,讓一個人的生命變得更充盈、更美好。

            但是,無論多么親密。小王子仍是小王子,玫瑰仍是玫瑰,他們?nèi)匀皇莾蓚€個體。如果玫瑰不讓小王子旅行,或者小王子旅行時非將玫瑰花帶在身上,兩者一定要黏在一起,關(guān)系就不再是享受,而會變成一個累贅。

            切記:一個既親密而又相互獨立的關(guān)系,勝于一千個一般的關(guān)系。這樣的關(guān)系,會把我們從不可救藥的孤獨感中拯救出來,是我們生命中最重要的一種救贖。

            如果不曾體驗過,你就無法知道這種關(guān)系的美.

          posted @ 2009-02-09 22:51 何楊| 編輯 收藏

               摘要: 這應(yīng)該是最后一次用字符串去分析解讀SQL了,效果比上次要好些,但在函數(shù)和別名方面有點差強(qiáng)人意,再想前進(jìn)一定要用到詞法分析,語法樹和表達(dá)式解析等,字符串解讀差不多已經(jīng)到極限了。 package com.sitinspring.common.sqlformatter2; /** *//**  * SQL整形器類  * @aut...  閱讀全文
          posted @ 2009-02-05 22:57 何楊 閱讀(416) | 評論 (0)編輯 收藏

               摘要: 在函數(shù)和別名處理上還有些問題,但比上一版已經(jīng)好一些了。現(xiàn)在單句多句都能整形了。   1原始的Sql為:   2select ( * )  from dual   3解析后的的Sql為:   4select   5 &...  閱讀全文
          posted @ 2009-02-05 16:19 何楊 閱讀(568) | 評論 (0)編輯 收藏

          僅列出標(biāo)題
          共28頁: First 上一頁 20 21 22 23 24 25 26 27 28 下一頁 
          主站蜘蛛池模板: 新昌县| 敖汉旗| 巴东县| 蓬莱市| 白河县| 南华县| 孝感市| 荆州市| 长治市| 昌黎县| 唐海县| 五指山市| 湖北省| 永胜县| 建始县| 昌邑市| 广元市| 和顺县| 余姚市| 义乌市| 卢龙县| 扎囊县| 喀什市| 共和县| 会宁县| 本溪| 河间市| 自贡市| 湛江市| 郑州市| 丰镇市| 海安县| 泾川县| 石嘴山市| 周至县| 灌阳县| 迁西县| 东台市| 正宁县| 新宾| 汽车|