張慧的博客

          張慧的博客

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            45 Posts :: 0 Stories :: 24 Comments :: 0 Trackbacks

          2012年8月8日 #

          CSS(Cascading Style Sheet) 層疊樣式表,一種和Html聯系非常大的標記語言,主要用戶控制網頁的樣式,并能把樣式和網頁內容分離,因此能大大提高網頁開發的效率。

                 初識CSS,感覺這個名字有點難以理解,“樣式表”理解起來比較容易,就是定義網頁的樣式,也可以叫風格,那層疊怎么理解呢?

                 這要從CSS的繼承說起,學過面向對象的話,對繼承一定不陌生,CSS的繼承更簡單一些:

             

          在Html中各個標簽可以看作是一個個容器,例如:

          1. <span style="font-size:18px;"><p>詳解CSS的<em>名稱</em>含義</p></span>  

                 這一句話中,<p>標簽是一個大容器,里面有<em>標簽 ,我們把<p>標簽定義成父標簽,那么<em>標簽就成了子標簽。當我對<p>標簽(父標簽)用CSS樣式時,字標簽會完全繼承父標簽的風格,當然這種關系可能會有更多層(上面的例子為兩層):

          這張圖上,每個子標簽都會繼承父標簽的樣式,這種層層嵌套的關系,也就是CSS名稱的含義。

          posted @ 2012-08-16 22:29 張慧 閱讀(1664) | 評論 (0)編輯 收藏

          經常用到多個透明圖片層疊,但又需要獲取不同圖片的點擊事件,本文實現圖片透明區域穿透點擊事件。

          效果圖:

           歡迎轉載請說明轉自:http://blog.csdn.net/aminfo/article/details/7872748

          一、先上圖片,這2張圖片尺寸是一樣的,放到drawable目錄下:

          圖1:transparent.png

           

          圖2:transparent2.png

           

          二、上布局文件,test.xml

          <?xml version="1.0" encoding="utf-8"?>
          <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_width
          ="fill_parent"
             android:layout_height
          ="fill_parent"
             android:orientation
          ="vertical"
             android:gravity
          ="center"
             android:id
          ="@+id/mainLayout">
             
              <ImageView android:id="@+id/ImageView01"
                  android:layout_width
          ="wrap_content"
                  android:layout_height
          ="wrap_content"
                  android:src
          ="@drawable/transparent"/>
              
              <ImageView android:id="@+id/ImageView02"
                  android:layout_width
          ="wrap_content"
                  android:layout_height
          ="wrap_content"
                  android:src
          ="@drawable/transparent2"/>    
                    
          </FrameLayout>

          package org.shuxiang.test;

          import android.app.Activity;
          import android.graphics.Bitmap;
          import android.graphics.drawable.BitmapDrawable;
          import android.os.Bundle;
          import android.util.Log;
          import android.view.MotionEvent;
          import android.view.View;
          import android.view.Window;
          import android.view.View.OnClickListener;
          import android.view.View.OnTouchListener;
          import android.widget.ImageView;

          public class MainActivity extends Activity
          {
              private ImageView iv1;
              private ImageView iv2;
              private Bitmap bitmap1, bitmap2;
              private boolean iv1Transparent = false;
              private boolean iv2Transparent = false;

              @Override
              public void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  requestWindowFeature(Window.FEATURE_NO_TITLE);
                  setContentView(R.layout.test);

                  iv1 = (ImageView) findViewById(R.id.ImageView01);
                  iv2 = (ImageView) findViewById(R.id.ImageView02);
                  bitmap1 = ((BitmapDrawable) (iv1.getDrawable())).getBitmap();
                  bitmap2 = ((BitmapDrawable) (iv2.getDrawable())).getBitmap();
                  
                  iv1.setOnClickListener(new OnClickListener(){
                      @Override
                      public void onClick(View v) {
                          // TODO Auto-generated method stub
                          if(iv1Transparent)
                          {
                              Log.i("test", "圖1透明區域");
                          }
                          else
                          {
                              Log.i("test", "圖1點擊");                    
                          }
                      }
                      
                  });
                  
                  iv1.setOnTouchListener(new OnTouchListener()
                  {
                      @Override
                      public boolean onTouch(View arg0, MotionEvent arg1) 
                      {
                          // TODO Auto-generated method stub
                          if(bitmap1.getPixel((int)(arg1.getX()),((int)arg1.getY()))==0)
                          {
                              Log.i("test", "圖1透明區域");
                              iv1Transparent = true;    //透明區域設置true                    
                          }
                          else
                          {
                              Log.i("test", "圖1實體區域");
                              iv1Transparent = false;
                          }
                          return false;
                      }            
                  });
                  
                  iv2.setOnClickListener(new OnClickListener()
                  {
                      @Override
                      public void onClick(View v) {
                          // TODO Auto-generated method stub
                          if(iv2Transparent)
                          {
                              Log.i("test", "圖2透明區域");
                          }
                          else
                          {
                              Log.i("test", "圖2點擊");                    
                          }
                      }
                      
                  });
                  
                  iv2.setOnTouchListener(new OnTouchListener()
                  {
                      @Override
                      public boolean onTouch(View v, MotionEvent event) {
                          // TODO Auto-generated method stub
                          if(bitmap2.getPixel((int)(event.getX()),((int)event.getY()))==0)
                          {
                              Log.i("test", "圖2透明區域");
                              iv2Transparent = true;    //透明區域設置true
                              iv1.dispatchTouchEvent(event);
                          }
                          else
                          {
                              Log.i("test", "圖2實體區域");
                              iv2Transparent = false;
                          }
                          return false;
                      }
                  });
              }
          }


          posted @ 2012-08-16 22:28 張慧 閱讀(3382) | 評論 (0)編輯 收藏


          需求大致分為三種:
          1.震動
          2.系統音效(無需提供音頻文件)
          3.自定義音效(需提供音頻文件)
          我的工具類的封裝:

          1. //  
          2. //  WQPlaySound.h  
          3. //  WQSound  
          4. //  
          5. //  Created by 念茜 on 12-7-20.  
          6. //  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.  
          7. //  
          8.   
          9. #import <UIKit/UIKit.h>  
          10. #import <AudioToolbox/AudioToolbox.h>  
          11.   
          12. @interface WQPlaySound : NSObject  
          13. {  
          14.     SystemSoundID soundID;  
          15. }  
          16.   
          17. /** 
          18.  *  @brief  為播放震動效果初始化 
          19.  * 
          20.  *  @return self 
          21.  */  
          22. -(id)initForPlayingVibrate;  
          23.   
          24. /** 
          25.  *  @brief  為播放系統音效初始化(無需提供音頻文件) 
          26.  * 
          27.  *  @param resourceName 系統音效名稱 
          28.  *  @param type 系統音效類型 
          29.  * 
          30.  *  @return self 
          31.  */  
          32. -(id)initForPlayingSystemSoundEffectWith:(NSString *)resourceName ofType:(NSString *)type;  
          33.   
          34. /** 
          35.  *  @brief  為播放特定的音頻文件初始化(需提供音頻文件) 
          36.  * 
          37.  *  @param filename 音頻文件名(加在工程中) 
          38.  * 
          39.  *  @return self 
          40.  */  
          41. -(id)initForPlayingSoundEffectWith:(NSString *)filename;  
          42.   
          43. /** 
          44.  *  @brief  播放音效 
          45.  */  
          46. -(void)play;  
          47.   
          48. @end  


          1. //  
          2. //  WQPlaySound.m  
          3. //  WQSound  
          4. //  
          5. //  Created by 念茜 on 12-7-20.  
          6. //  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.  
          7. //  
          8.   
          9. #import "WQPlaySound.h"  
          10.   
          11. @implementation WQPlaySound  
          12.   
          13. -(id)initForPlayingVibrate  
          14. {  
          15.     self = [super init];  
          16.     if (self) {  
          17.         soundID = kSystemSoundID_Vibrate;  
          18.     }  
          19.     return self;      
          20. }  
          21.   
          22. -(id)initForPlayingSystemSoundEffectWith:(NSString *)resourceName ofType:(NSString *)type  
          23. {  
          24.     self = [super init];  
          25.     if (self) {  
          26.         NSString *path = [[NSBundle bundleWithIdentifier:@"com.apple.UIKit"] pathForResource:resourceName ofType:type];  
          27.         if (path) {  
          28.             SystemSoundID theSoundID;  
          29.             OSStatus error =  AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &theSoundID);  
          30.             if (error == kAudioServicesNoError) {  
          31.                 soundID = theSoundID;  
          32.             }else {  
          33.                 NSLog(@"Failed to create sound ");  
          34.             }  
          35.         }  
          36.           
          37.     }  
          38.     return self;  
          39. }  
          40.   
          41. -(id)initForPlayingSoundEffectWith:(NSString *)filename  
          42. {  
          43.     self = [super init];  
          44.     if (self) {  
          45.         NSURL *fileURL = [[NSBundle mainBundle] URLForResource:filename withExtension:nil];  
          46.         if (fileURL != nil)  
          47.         {  
          48.             SystemSoundID theSoundID;  
          49.             OSStatus error = AudioServicesCreateSystemSoundID((__bridge CFURLRef)fileURL, &theSoundID);  
          50.             if (error == kAudioServicesNoError){  
          51.                 soundID = theSoundID;  
          52.             }else {  
          53.                 NSLog(@"Failed to create sound ");  
          54.             }  
          55.         }  
          56.     }  
          57.     return self;  
          58. }  
          59.   
          60. -(void)play  
          61. {  
          62.     AudioServicesPlaySystemSound(soundID);  
          63. }  
          64.   
          65. -(void)dealloc  
          66. {   
          67.     AudioServicesDisposeSystemSoundID(soundID);  
          68. }  
          69. @end  


          調用方法步驟:
          1.加入AudioToolbox.framework到工程中
          2.調用WQPlaySound工具類

          2.1震動

          1. WQPlaySound *sound = [[WQPlaySound alloc]initForPlayingVibrate];  
          2. [sound play];  

          2.2系統音效,以Tock為例

          1. WQPlaySound *sound = [[WQPlaySound alloc]initForPlayingSystemSoundEffectWith:@"Tock" ofType:@"aiff"];  
          2. [sound play];  

          2.3自定義音效,將tap.aif音頻文件加入到工程

          1. WQPlaySound *sound = [[WQPlaySound alloc]initForPlayingSoundEffectWith:@"tap.aif"];  
          2. [sound play];  

          tap.aif音頻文件樣例下載點擊

          posted @ 2012-08-16 22:26 張慧 閱讀(7774) | 評論 (0)編輯 收藏

           狀態圖主要描述一個對象在其生命周期內的狀態變化,對象由事件驅動并滿足一定的條件從一個狀態轉換到另一個狀態。狀態圖顯示了一個狀態機。


          下面是一個表示借書的狀態圖(描述書的狀態轉換)



          狀態圖都由哪些元素組成呢?

          一、初始狀態


                初始狀態是狀態機的起始位置,它不需要事件的觸發。一個狀態圖只能有一個初始狀態。狀態圖總是以初始狀態開始,以終止狀態結束

          二、狀態


          狀態是對象執行某項活動或等待某個事件時的條件。狀態可以由以下幾部分組成:

          1、Name:狀態名稱
          2、Entry/Exit Action:進入和退出動作
          3、Internal Transition:內部轉移(對事件作出響應,執行一定的動作,但不會發生狀態的轉換)
          4、Do:狀態保持不變時執行的動作
          5、SubStage:子狀態(當狀態是復合狀態時)
          6、Deferred Event:延遲事件(未在本狀態中處理,但不被丟棄,而是延遲到其它狀態中處理的事件)


          下面是一個燈的點燃狀態的例子


                 如果一個狀態比較復雜,那么它還可以擁有子狀態,拿上面借書的例子,書的被借狀態又可包含兩個子狀態:被正常借、被續借


          三、轉移

                上面已經講過了一種特殊的轉移:內部轉移,但是這種轉移只是響應一定的事件,執行一定的動作,并不會放生狀態的轉移
          下面介紹一下一般轉移的格式:


          狀態的轉移一般由三部分組成

          1、event(事件):觸發狀態轉移的原因
          2、Guard Condition(保衛條件):是一個布爾表達式,當事件被觸發時要判斷保衛條件的值,值為True才會發生狀態的轉換
          3、Action(活動):狀態轉換時執行的活動

          下面是一個電水壺燒水的狀態轉換


                 當事件turn on放生時,只有水壺內有水(have water)才能由off狀態轉換到on狀態,并發生燒水的動作(Boiling Water)。其實動作也可以放在on狀態中。

          四、結束狀態



          結束狀態表示狀態機執行結束或對象生命的終結,一個狀態圖可以有多個結束狀態


                在實際的應用中,不必為每個對象都創建狀態圖,而是只為那些比較復雜的,狀態比較多的對象創建狀態圖。狀態圖是一種很有用的圖,它可以幫助我們分析復雜對象的狀態轉換和對象在什么時候執行什么樣的動作。網上購物過程中,我們會經常查看訂單的狀態,描述訂單的狀態機就是一個比較經典的狀態圖,網上有很多關于訂單狀態圖的例子,大家可以查一下,我在這里就不再贅述了。
          posted @ 2012-08-08 23:38 張慧 閱讀(6926) | 評論 (0)編輯 收藏

          1. 為什么要時間管理    曾經有過這樣一個報道:有一名記者隨機采訪了幾個人,問了這樣一個問題:
              你認為你的時間是由自己來掌控的嗎?得到的回答卻是這樣的:
              如今各種競爭如此激烈,能拉到一個客戶不容易,只要客戶一個電話,我就馬上要出現,我的時間完全由客戶掌控。
              我只不過是一名普通的小職員,主管給我安排什么我就做什么。自己掌控時間?!等我當了經理再說吧。
              我總是有忙不完的工作,哪還來得及自己安排時間?別開玩笑了。
              在這樣一個信息爆炸的社會里,我不抓緊時間充電就會落后了,現在是時間在控制我啊!
              相信你對這個問題會有自己的見解,但是仔細想想你的答案是否跟他們的很類似呢?像他們一樣,也有這樣的困惑或是感受呢?之所以有這樣的困惑,有一個最主要的因素在影響著我們,這個因素是什么呢?
              職位?競爭?時間?
              每個人的時間總是不夠用,人們渴望找到一種靈丹妙藥,徹底改變自己時間不夠用的局面。你是否也是這里的一員呢?

          2. 概述    時間是一種資源,我們無法對它進行買賣,不可能與別人分享或是從別人那里獲得,也不可能得到更多或是擁有更少。
              每天,我們每一個人都擁有相同數量的時間——24小時,差別在于我們用它來做什么。之所以每個人會有種種的困惑,究其原因,是因為大多數人在時間的管理上存在著很多誤區,只有消除這些誤區,才有可能讓我們把時間管理得更好、更有效。
              我們現在就一起去看看這些誤區都是什么樣的吧!

          3. 誤區展示    當你的工作中出現問題時,你認為是什么原因造成的?
              無論,你的實際情況是怎么樣的,往往我們都忽略了一個最關鍵的問題,那就是“時間”。
              因為時間的不充足而沒來得及做這個或是做那個,導致最后的結果總是不盡如人意。所以,每個人在時間管理上都或多或少存在一定的問題,這也是接下來我們要解決的問題。請點擊下一頁吧。

          4. 反思    這個世界上根本不存在“沒時間”這回事。
              如果你跟很多人一樣,也是因為“太忙”而沒時間完成自己的工作的話,那請你一定記住,在這個世界上還有很多人,他們比你更忙,結果卻完成了更多的工作。這些人并沒有比你擁有更多的時間,他們只是學會了如何更好地利用自己的時間而已!有效的利用時間是一種人人都可以掌握的技巧——就像開車一樣。
              因此,希望大家能通過這門課程的學習,在今后的生活中有效的珍惜時間,而一旦把握好時間,你就掌握了自己的生命,并能夠將其價值發揮到極限。

          5. 時間管理課程概述    在本課程中,將通過四個方面的內容幫助你更好的掌握自己的時間,而不是成為時間的奴隸,從而讓你實現自己的人生目標。
              首先,我們要談談人生目標,也就是我們花了時間都做了些什么,比如你想成為什么樣的人,你將來要達到一種什么樣的成就等。
              第二、當你有了明確的人生目標,那該用什么方法來實現呢,也就是接下來要講的時間管理的核心思想“時間管理矩陣”等。
              第三、了解了如何管理時間,那么接下來要介紹的是怎么來自我管理。如何利用好每一天的時間來幫助我們實現人生的大目標。
              最后,就是學會利用工具來管理時間。
              總而言之,對于你來說,這個世界上沒有任何東西比時間更加重要了。每個人的時間都是相同的,我們每個人每個星期都只有168個小時,不可能有更多的時間。
              這門課程可以幫助你更有效的利用這些時間。
              讓我們開始吧!

          6. 概述    時間我們無法隨意的讓它變大或是縮小,我們也不能像存錢一樣把時間儲備起來,以備不時之需;更不能用其它的東西來代替,甚至我們更不能把已經失去的時間像倒帶子一樣,有選擇性的倒回來或是快放。
              因此,當人們無所事事,或者忙得暈頭轉向卻不見成效時,應該暫時停下來審視一下自己的時間利用效率,審視一下自己在時間中所處的角色,尋找一條更為合適的途徑,實現自己的目標,追求自己的人生價值。
              在經理人的所有管理技能中,時間管理最容易被忽略。初級經理人從員工的崗位過渡到管理者的崗位,比較容易忽略管理的角色和時間管理的技能,而中、高級管理者的工作時間更忙碌,工作任務更多,時間效率的管理也就顯得更加重要。

          7. 案例    假設一個人的生命中有三枚硬幣,第一枚代表財富,第二枚代表健康,第三枚代表時間,請問哪一個更重要?
              無論你選擇了什么,我們來逐一分析一下吧。

          8. 分析一    這三枚硬幣哪個更重要呢?
              第一種情況:
              通常人們都趨向于追求財富,如果在這三枚硬幣中,把代表財富的硬幣拿掉,則表示這個人有足夠多的健康,也有足夠多的時間,他有可能重新去創業,贏得財富,把代表財富的硬幣重新放進自己的生命中。
              你贊成這個說法嗎?
              贊成    不贊成
              無論你選擇了什么,我們來看一個實例:
              房地產大亨李嘉誠,相信你一定聽說過吧!
              17歲獨自外出闖蕩,經商60多年,建立起亞洲最大的商業王國。 
              李嘉誠現在年過八旬仍然精神矍鑠,思維敏捷。他說:“健康就好似堤壩一樣,如果快要崩堤了再做補救,花費多少人力物力可能救不回來。”
              問到成功秘訣時,李嘉誠認為惜時如金,是他的一個成功秘訣,李嘉誠每天清晨不到6點就起床了,中午不睡午覺,晚上睡覺前還要看書。
              李嘉誠認為:在商業競爭中,你輸了,那么你輸在時間;反之,你贏了,也贏在時間。

          9. 分析二    第二種情況:
              如果在這三枚硬幣中,把代表健康的硬幣拿掉,這表示這個人有足夠多的財富,也有足夠多的時間,則他可以花費無以計數的金錢來治療自己的疾病,至少可以拖延一定的時間,或借助高科技手段來延長生命,他可能把代表健康的硬幣重新放進自己的生命中。
              你贊成這個說法嗎?
              贊成    不贊成
              我想梅艷芳大家都聽說過吧?
              梅艷芳患癌后,每周必須接受5天的治療,光是每個月的醫藥費就高達港幣80萬,一年下來要花近千萬港幣。她可以用財富延長自己的生命,并用這些有限的生命完成自己最后的心愿,但是健康依然離她很遙遠。

          10. 分析三    第三種情況:
              如果把代表時間的硬幣拿走,讓一個人沒有自己的時間了,這時候,即使他有無數的財富,有很強壯的身體,可是生命留給他的只有一剎那,他無法用1億美元去換10分鐘,這就好比無數的0前面沒有了1,是沒有任何意義的,他不僅不能將代表時間的硬幣重新放進自己的人生,而且財富和健康對他也變得毫無意義了。
              你贊成這個說法嗎?
              贊成    不贊成
              無論你選擇的是什么,時間對我們確實很重要。
              大家都知道,秦始皇是第一位統一六國并實現了文化及貨幣統一的皇帝。
              他為了讓自己永遠穩坐江山,就派人去尋找長生不老藥。他非常清楚時間就是生命,如果自己能永生就等于掌握了時間并永遠穩坐江山。
              最終,還是以失敗告終。即便他有再多的財富與健康的體魄,他依然無法實現永生的愿望。因為時間不會根據任何人的愿望而改變。

          11. 總結    總之,對于所有的人,尤其是經理人、企業家,他們有大量的金錢,可是他們感到最缺的還是時間,所以對時間的要求就更高,這就需要良好的時間管理。時間管理就是有效地應用時間這種資源以便我們有效地取得個人的重要目標。
              接下來,就讓我們一起來學習有關個人目標的內容吧。

          12. 自我時間狀態判斷    學習了時間管理的重要性和概念,現在我們一起應用這些知識來分析一下你自己吧!

          13. 拖延商數測試    在回答這些問題時,一方面是為了讓你重新認識一下自己,另一方面這些可能也是你浪費時間的原因。
              現在請做一個測試,看看你做事的拖延情況究竟如何吧。
              你的拖延情況嚴重嗎?
              做事拖延,會嚴重浪費你的時間,一起來看看浪費時間的因素具體是哪些吧。時間盜賊:(找東西、懶惰,時斷時續,一個人包打天下,偶發延誤,惋惜不已/做白日夢,拖拖拉拉,對問題缺乏理解就匆忙行動,消極情緒,分不清輕重緩急)

          14. 小結    至此,我們已經了解了時間管理的誤區有哪些,以及時間管理的定義、必要性,同時通過測試對自己有了新的認識。
              如果你確認對上述內容已經完全掌握,就請開始下一章的學習吧!

          15. 概述  你有人生目標嗎?請你試著回答下面的問題:
            你現在是把時間真正用在你想做的事情上了嗎?
            你是在“原地踏步”嗎?
            你正在左右為難——是前進還是放慢腳步,或者正在猶豫不決?
            如果你不能把時間用來去實現你認為最重要的目標的話,那么你就要對其進行調整。現在請點擊下一頁讓我來幫助你一起回答以上這些問題吧。

          16. 為什么需要目標    為什么要設定人生目標呢?
              許多人拼命埋頭苦干,卻不知所為何來,到頭來卻發現追求的梯子搭錯了墻,懊悔不已,只可惜為時已晚,之所以有的人總是很忙碌,而做的事情卻沒有太大意義,就是因為他們沒有一個明確的目標。
              你現在處于最理想的狀態嗎?
              最理想的狀態是指,你所做的每件事對你都是有價值的——其價值在于它積極推動你實現職業上的或是個人生活上的目標——這些事情都是你希望可以完成的。沒有其他人可以替你做決定,你必須得明確什么事情對于你來說才是最重要的。
              需要注意的是,實現目標,需要一個過程。而在過程中的每一個階段,都會有一個階段性目標,越往后發展,階段性目標就越接近最終目標。正是通過每一個階段性目標的成功實現,才能實現最終目標。因此,目標永遠指明了前進的方向。
              現在你明白為什么需要目標了嗎?
              請繼續學習后面的內容吧。

          17. 人生目標序言    大人們總喜歡問自己的孩子:你長大了想做什么啊?
              小孩子會毫不猶豫的說:
              “我要像爸爸一樣,當一名建筑工程師……”
              “我要當一名科學家或是一名作家……”
              “我要像媽媽一樣,當一名醫生……”
              “我要當一名警察或者天文學家……”
              “我要當一名宇航員,飛上太空……”
               …… …… ……
              各種各樣的回答,都代表了孩子的一個人生目標。
              你認為這些目標可以更改嗎?
              無論你的目標是否發生變化,時間都會一分一秒的過去,這是一個不變的規律。

          18. 要明確人生目標    為了加深你對目標的理解,一起來看看這樣一組調查數據。
              表中列出了某一年哈佛大學400名學生及他們畢業后25年的調查數據。那些沒有目標的人,結果是生活在社會的底層,而那些目標明確的人,都生活在社會的中上層。令人深思的是,這些人的起點幾乎是一樣的,然而,正是因為目標這一因素導致了巨大的結果差異。可見,目標對人生的影響是多么的巨大。
              到這里,我想問你一個問題,你有長期或者短期的目標嗎?
              有沒有不重要,希望從這一刻開始,你要為自己設定明確且合理的長期與短期目標。
              現在,請寫出你的人生目標:
              請拿出幾張紙,一支鉛筆或鋼筆,一只帶有秒針的手表或時鐘,為自己設定15分鐘時間。在紙的最上端寫下問題。

          19. 你的人生目標到底是什么?    第一個問題:
              你的人生目標到底是什么?
              用第一人稱、現在時、肯定語氣來寫,這樣,這些目標就能立即進入你的潛意識中。
              不要害怕寫出那些看起來距離自己很遙遠的目標。這些目標可以是有形的或是無形的。
              比如說登上珠穆朗瑪峰、去參加馬拉松長跑、休假一年、退休后在意大利建一座房子、買艘游艇、購買一輛寶馬轎車;擁有一個美滿幸福的三口之家,自己能擁有一個健康的身體……這些都可以列出來,同時請列出優先順序。

          20. 如何度過今后三年    第二個問題:
              如何度過今后三年?
              三年的時間,看似很長,那么在這么長的時間里你能做些什么呢?
              你可以寫下一些比較空泛的目標,比如說“獲得幸福”、“取得成功”、“贏得愛情”、“為社會做貢獻”、“讀完30本書”、“游遍30個國家”等等。

          21. 只能活六個月你該怎樣渡過    第三個問題:
              只能活六個月怎樣度過?
              如果你知道自己會在六個月后因為病魔的侵入而失去生命,你會怎樣度過這六個月的時間?你可以從不同的角度去想。
              請注意:這意味著你的人生只剩下六個月的時間,你必須充分利用這段時間做一些你覺得最重要或者自己一直都想做而沒做的事情。

          22. 三個問題之間的思考    你可以花上至少兩分鐘的時間,仔細斟酌并修改你對以上三個問題的回答。如果愿意,你也可以花上更多的時間。
              同時,請你認真思考一下這三個問題之間的關系是怎樣的?
              現在我們來分析一下這三個問題:第一個可以看作是長期目標、第二個是短期目標、第三個是被分解后的目標。
              你可能會發現第二個問題的答案其實是第一個問題答案的延伸,還有一些人發現自己在第三個問題上的答案跟前兩個問題的答案截然不同——那是因為他們突然意識到自己的時間不多了,必須在有限的時間內完成最重要、最緊急的事情。

          23. 如何設定人生目標    了解為什么設定人生目標后,現在我們就來學習一下如何設定人生目標吧。
              事實上,設定一個適當的目標就等于達到了目標的一部分。
              人生的大目標也是人生大志,可能需要十年、二十年甚至終生為之奮斗。一個人不可能一口吃成一個胖子,所以我們在追求人生目標的過程中,要時刻清楚自己現在做的每一件事都要有助于實現自己最終的目標。
              接下來,我們就詳細講解一下如何有效地設定人生目標。

          posted @ 2012-08-08 23:38 張慧 閱讀(1665) | 評論 (1)編輯 收藏

          本文主要簡述的內容有單例設計模式、dom4j解析xml文件(這里解析的數據庫的配置文件)、通過解析出來的配置信息完成數據庫的連接。


          1、首先要看的是單例設計模式

                 單例設計模式的實現有兩種:餓漢式(預先加載)、懶漢式(延遲加載),下面分別來看這兩種實現方式。

          (1)、餓漢式(預先加載)

          public class Singleton{
              private static Singleton instance = new Singleton();
              
              private Singleton(){}

              public static synchronized Singleton getInstance(){
                  return instance;
              } 
          }
          (2)懶漢式(延遲加載) 

          public class Singleton{
              private static Singleton instance = null;
              
              private Singleton(){}

              public static synchronized Singleton getInstance(){
                  if(instance==null){
                       instance = new Singleton();
                  }
                  return instance;
              } 
          }

          觀察上面的這兩種模式,看起來區別并不大,前一種方式是類一旦加載就得將對象實例化了,而后一種則是在使用的時候才進行判斷是否要實例化對象,并且在后一種的getInstance方法中加入了同步,這樣顯得更加的合理,個人更加偏好于使用第二種方式。


          2、使用dom4j來完成數據庫配置文件的解析

          給出下面這個數據庫的配置文件sys-config.xml


          <?xml version="1.0" encoding="UTF-8"?>
          <config>
              <db-info>
                  <driver>oracle.jdbc.driver.OracleDriver</driver>
                  <url>jdbc:oracle:thin:@127.0.0.1:1521:ORCL</url>
                  <user>username</user>
                  <password>password</password>
              </db-info>
          </config>

          完成解析的java類:

          (1)、保存數據庫jdbc配置信息的模型類JdbcConfig.java


          package org.ml.drp.util;

          /**
           * 用于保存數據庫連接時的jdbc參數
           * 
           * 
          @author MuLing
           * 
           
          */
          public class JdbcConfig {
              private String DbDriver;
              private String DbUrl;
              private String DbUser;
              private String DbPass;

              public String getDbDriver() {
                  return DbDriver;
              }

              public void setDbDriver(String dbDriver) {
                  DbDriver = dbDriver;
              }

              public String getDbUrl() {
                  return DbUrl;
              }

              public void setDbUrl(String dbUrl) {
                  DbUrl = dbUrl;
              }

              public String getDbUser() {
                  return DbUser;
              }

              public void setDbUser(String dbUser) {
                  DbUser = dbUser;
              }

              public String getDbPass() {
                  return DbPass;
              }

              public void setDbPass(String dbPass) {
                  DbPass = dbPass;
              }

              @Override
              public String toString() {
                  return "JdbcConfig [DbDriver=" + DbDriver + ", DbUrl=" + DbUrl
                          + ", DbUser=" + DbUser + ", DbPass=" + DbPass + "]";
              }
          }

          (2)、解析數據庫配置文件的工具類XmlConfigReader.java,這里使用單例模式完成,采用的是懶漢式。 

          package org.ml.drp.util;

          import java.io.InputStream;

          import org.dom4j.Document;
          import org.dom4j.DocumentException;
          import org.dom4j.Element;
          import org.dom4j.io.SAXReader;
          /**
           * 用于解析xml文件 
           * 
          @author MuLing
           *
           
          */
          public class XmlConfigReader {  
              
              private JdbcConfig jdbcConfig = null;
              private static XmlConfigReader instance = null
              
              private XmlConfigReader(){
                  SAXReader reader = new SAXReader();//取得SAXReader的對象
                  InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml");//得到輸入流對象
                  jdbcConfig = new JdbcConfig();
                  Document doc = null;
                  try {
                      doc = reader.read(input); //進行讀取
                  } catch (DocumentException e) { 
                      e.printStackTrace(); 
                  }
                          //取得對應的節點對象
                         &nbsp;Element driverEle = (Element)doc.selectObject("/config/db-info/driver");
                  Element urlEle = (Element)doc.selectObject("/config/db-info/url");
                  Element userEle = (Element)doc.selectObject("/config/db-info/user");
                  Element passwordEle = (Element)doc.selectObject("/config/db-info/password"); 

                  jdbcConfig.setDbDriver(driverEle.getStringValue());
                  jdbcConfig.setDbUrl(urlEle.getStringValue());
                  jdbcConfig.setDbUser(userEle.getStringValue());
                  jdbcConfig.setDbPass(passwordEle.getStringValue()); 
              }
              
              public static synchronized XmlConfigReader getInstance(){
                  if(instance==null){
                      instance = new XmlConfigReader();
                  }
                  return instance;
              }
              
              public JdbcConfig getJdbcConfig(){
                  return this.jdbcConfig;
              }
          }

          3、根據解析出了的配置信息完成數據庫的連接

          下面是一個完成數據庫連接操作的測試工具類DbUtil.java


          package org.ml.drp.util;

          import java.sql.Connection;
          import java.sql.DriverManager;
          import java.sql.SQLException;

          /**
           * 封裝數據庫常用操作類
           * 
          @author MuLing
           *
           
          */
          public class DbUtil {
            
              /**
               * 取得數據庫的連接
               * 
          @return
               
          */
              public static Connection getConnection(){
                  Connection conn = null;        
                  //取得數據庫連接字符串
                  JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();
                  String DBDRIVER = jdbcConfig.getDbDriver();
                  String DBURL = jdbcConfig.getDbUrl();
                  String DBUSER = jdbcConfig.getDbUser();
                  String DBPASS = jdbcConfig.getDbPass();
                  //1:注冊驅動
                  try {
                      Class.forName(DBDRIVER);
                  } catch (ClassNotFoundException e) { 
                      e.printStackTrace();
                  }
                  //2:獲取連接
                  try {
                      conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
                  } catch (SQLException e) { 
                      e.printStackTrace();
                  }
                  //3:返回數據庫連接
                  return conn;
              }
              
              //測試數據庫的連接是否成功
              public static void main(String args[]){ 
                  System.out.println(DbUtil.getConnection());
              }
          }

          上完成了單例模式下使用dom4j來讀取數據庫配置文件,并實現數據庫的連接操作。 




          posted @ 2012-08-08 23:37 張慧 閱讀(1343) | 評論 (0)編輯 收藏

          常有同學想在自己課外學習的安排中,“系統地”學習點什么。這樣的事情常發生在喜歡做A專業的事,卻上了B專業,且A不等于B,甚至相似度(A, B)趨于無窮。對有些同學,一不留神發現自己的學習落后了不少,比如學計算機的,到大三了,卻發現連簡單程序也編不出來,再如學完高數了,才知道高數原來如此重要,于是想要系統地重學一遍。
            何為系統學習?系統學習就是要按照已有的一套規定,先學什么,再學什么,按步就班地走完一個流程。為什么要系統學習?將做事能專業些。規定從何而來?業界專家。系統學習有什么好處?基礎扎實。系統學習的路線?先理論,再理論指導實踐。
            這就怪了。當今大學飽受批評之一在于重理論,輕實踐。而到了課外自己的安排,還也要走入這條巷子。深層的原因在于,我們要想學點東西,無意識地延續了一種并不是很合理的思維,學習的模式被單一化了。一邊在批評著本專業系統化教學中的弊端,一方面在本來不受約束的自由安排中又要去追求這種系統化,謬矣。
            系統地學,意味著將開始一個比較龐大和長期的計劃。雄心勃勃地起步,灰溜溜的,或者不知不覺地停止。這種情況我經歷了不止一次。還有一種情況是,祥林嫂式地叨叨一生:“一直想系統學習一下……,卻沒有機會。”
            要想滿足自己的興趣,其實很簡單,用合適的方式行動起來即可。喜歡電子的,先買個套件,備把烙鐵,焊個收音機出來;喜歡計算機的,就先自學編個程序出來;喜歡經濟的,讀些經濟學著作……。系統學習的條件往往有些苛刻,所以不要寄望于系統學習。
            實際上,系統學習這個東東,確實用不著為之如此著迷。系統學習本身并沒有什么太多的道理,那是對某方面知識的套裝,是為了適應大規模人才培養而用的。一旦形成系統,也就意味著僵化,意味著單一標準,在這一套東西廣為傳播的同時,也為相應的學科進一步發展套上了枷鎖,這是一個躲不開的悖論。單按這個系統培養出來的人才,沒有特色,缺乏創新,這是現在教育的一個非常大的弊端。
            我們不能直接全盤否認系統學習,這種方法是有效的,也將繼續持續。需要我們每個人做的,是不單一地依賴系統化,要突破這個所謂的系統,找出適合自己的辦法,進而為這個系統做出貢獻。這就是創新。要創新,就一定要有人突破系統的制約。
            一個最簡單的問題,各行業都有個祖師爺,哪個祖師爺是科班出身,系統學習過的?在現實中,我們發現很多有所成就的人物往往是多面手,不能說他的每一面都是系統學來的。在職場中,復合型人才受歡迎,復合型人才不可以單一理解為上過幾個專業,拿過幾個學位。野路子出身,被智叟們看不上的,常常能做出大的成績。
            在我理想的大學中,同學們的學習將是這樣的:他們接受著一項專業教育,一方面由教授系統地傳授著專業知識,接受著一種“正規”的訓練,另一方面,學生能夠根據自己的興趣、感覺自由地拓展,拓展的內容有的是和系統相關的,有的完全是“節外生枝”。這是課內與課外有效的結合。
            破除“系統學習”的情結,根據自己當前的環境、條件,首先行動起來。在起步時,著重直接的體驗,而專門的理論。在整個過程中,看重自己的感受,而不是專家的觀點。堅持下來,你將有能力自由出入這個系統,面對的是更為廣闊的空間。沒有經過系統學習,實在不能不說是一件值得慶幸的事。
            有條件系統學習,或許可以樂一樂;而沒有條件系統學習的,一定不要糾結。

            有條件進入了系統學習軌道的,也要常想著“搗亂”,往系統外沖一沖。沒有條件以系統學習開始的,不妨在野路子起步,甚至成為高手后,往系統這邊看一看,這會讓你上到一個新的境界。


          總結一下:能進入系統學習軌道的人是幸運的,但也要提防著“系統”給你造成的限制;既然沒有條件系統學習的,就不要去干等,先動起來再說。

          posted @ 2012-08-08 23:33 張慧 閱讀(1497) | 評論 (5)編輯 收藏

          主站蜘蛛池模板: 大新县| 杭州市| 西宁市| 凤城市| 武安市| 龙州县| 尼勒克县| 巢湖市| 灵璧县| 襄樊市| 黎川县| 虎林市| 阜阳市| 鄂托克前旗| 天祝| 垫江县| 望城县| 桐庐县| 尚义县| 威信县| 吉安市| 肃宁县| 卫辉市| 墨竹工卡县| 尼勒克县| 高安市| 盐源县| 临海市| 噶尔县| 邢台市| 六安市| 正阳县| 庆城县| 阳高县| 盘锦市| 津南区| 嘉义市| 鲜城| 池州市| 伊春市| 绍兴市|