隨筆-159  評論-114  文章-7  trackbacks-0
           

          環境變量,在程序中獲取。

          shell命令,env 命令 (whereis ps which ps)

          env|grep JAVA

          程序中獲取環境變量

          #include <iostream>
          using namespace std;

          int main(int argc,char** argv, char** env)
          {
                  
          while(env&&*env){
                          cout 
          << *env << endl;
                          
          ++env;
                  }

                  
          return 0;
          }


          c++,一個字符串數組,以char**的指針代表的。

          Untitled-1.gif
          所以遍歷時,既要判斷env指向的指針數組是否為空,也要判斷*env是不是到末端。

          =======================================

          Unix 系統調用函數,getenv。

          man getenv (或者man -k getenv    man -a getenv)

          SYNOPSIS
               #include <stdlib.h>

               char *getenv(const char *name);

          得到函數原型和需要包含的頭文件。

          RETURN VALUES
               If successful, getenv() returns a pointer to  the  value  in
               the  current  environment;  otherwise,  it  returns  a  null
               pointer.

          #include <stdlib.h>
          #include 
          <iostream>

          using namespace std;

          int main()
          {
                  
          char javahome[200];
                  strcpy(javahome,getenv(
          "JAVA_HOME"));
                  cout 
          << javahome << endl;
                  
          return 0;
          }

          int putenv(const char* str); 成功返回0;

          在程序中添加和修改的環境變量只對本進程起作用。

          Untitled2.gif
          代碼棧,存儲著函數調用的入口地址,通過pstack命令可以查看相應函數調用關系,也就是代碼棧。

          openlab.tarena.ca% pstack 3212
          3212:   ljlserver
           ff198958 accept   (0, ffbefad8, ffbefad4, 1)
           00010e74 main     (1, ffbefb84, ffbefb8c, 216c4, 0, 0) + 348
           000109f4 _start   (0, 0, 0, 0, 0, 0) + 5c

          Unix每個進程的啟動都回調用_start,然后向main傳入參數,在main調用前,env環境變量就已經拷貝到進程空間中了。_start負責提供前提條件。

          posted @ 2006-02-05 21:41 北國狼人的BloG 閱讀(410) | 評論 (0)編輯 收藏
               摘要: 我這天,開發網絡連接程序,遇到n多問題,都得以解決。總結一下。首先是環境。我用的開發SDK和模擬器都是Sun的,J2ME Wireless Toolkit 2.2現在UltraEdit下面寫一個網絡程序。注意一定要在網絡連接動作時,另外啟動一下線程,否則模擬器運行會有錯誤。很不好的代碼:不要使用!!!!!!!!!! import java.io.InputStream;import&n...  閱讀全文
          posted @ 2006-02-05 13:28 北國狼人的BloG 閱讀(4989) | 評論 (0)編輯 收藏

          局部變量,塊內的變量(函數為最大的塊)

          全局變量在所有函數之外(函數都可用)

          內存:

             代碼區      數據區

             棧為局部變量
             堆區為動態分配
             全局數據區,靜態數據區
             常量區,主要是字面量,內存為只讀的。

          函數的形參,可以給默認值

          可以為形參指定默認值(從右向左),調用時可以不用傳遞參數。

          fact(int n,int m = 1);

          但是不能跳躍傳遞參數,二義性!

          enum Sex{
            MALE,FEMALE
          }

          void disp(char* name, Sex gender = MALE);

          函數聲明中指定了默認值,不能在定義時,再指定默認值,但可以追加默認值。

          fact(int , int  =1);  這樣聲明沒問題。

          內聯函數,提高程序運行效率,調用函數時,不是調用,而是搬一份到調用處,不用進行真正函數調用,所以無開辟棧的開銷。

          會增加代碼的長度

          如果函數很復雜,不能成為內聯函數。不支持控制結果。

          規定1,必須先定義,不支持函數原形。
          因為搬函數代碼時,是在編譯過程中進行的。

          比較  調用開銷 VS 執行開銷,來判斷是否使用內聯函數,對于很簡單的函數值得內聯。

          2.是否能成為內聯函數完全有編譯程序決定

          3.不支持控制結構。

          #include <iostream>
          using namespace std;
          inline 
          int isnumber(char ch)
          {
                 
          return ((ch >= '0' && ch <='9')? 1:0);       
          }
           

          int main()
          {
              
          char in
              
          while(true)
                  cout 
          << "please input a char:(input q to exit) >";
                  
          in = cin.get();
                  
          if(isnumber(in))
                  
          {
                        cout 
          << "you input is num " << in - '0' << endl;                 
                  }

                  
          else
                  
          {
                        
          if(in == 'q')
                              
          break
                        cout 
          << "you input is not num " << endl;     
                  }
           
                  cin.ignore(
          100,'\n'); 
              }
           
              cout 
          << "please input any key to exit" << endl; 
              cin.
          get(); 
              cin.
          get(); 
              
          return 0;    
          }

           

          遞歸函數

          一個函數自己調用自己,不管問題多復雜,只要把問題簡化為最簡單的形式。

          遞歸函數不可能是內聯函數

          效率,遞歸 < 循環 < 公式

          任何遞歸都可以改為非遞歸,需要用到棧,代碼就很看懂了。改后,不一定提高效率。因為遞歸本身就是去開辟棧完成的。為何不保留代碼可讀性呢。

          唯一條件,遞歸必須存在一個必須滿足的條件,以結束推出。

          菲波那契數列,求對應位置的值

          頭文件

          #ifndef FIB_H
          #define FIB_H 
          double fib( int );
          double fi( int );
          #endif

          函數定義文件,遞歸

          double fib( int n )
          {
              
          if( n<1 )
                  
          return 0;
              
          if( n<3 )
                  
          return 1;
              
          return fib( n-1 ) + fib( n-2 );
          }


          double fi( int n )
          {
              
          if( n<1 )
                  
          return 0;
              
          if( n<3 )
                  
          return 1;
              
          double d,d1,d2;
              d1
          =1;
              d2
          =1;
              
          forint i=3;i<=n;i++ ){
                  d
          =d1+d2;
                  d1
          =d2;
                  d2
          =d;
              }

              
          return d;
          }


          主函數文件

          #include <iostream>
          using namespace std;
          #include 
          "fib.h"

          int main()
          {
              cout
          <<"please input item no.:";
              
          int n;
              cin
          >>n;
              cout
          <<"item "<<n<<" is "<<fi(n)<<endl;
              
          return 0;
          }



          posted @ 2006-02-04 23:35 北國狼人的BloG 閱讀(530) | 評論 (0)編輯 收藏
               摘要: 某些接口的實現類,我們要做一個代理,來代理對這些實現類對象的方法調用。 public class SomeClassImpl {  private String userName;    public SomeClassImpl(final String u...  閱讀全文
          posted @ 2006-01-30 18:27 北國狼人的BloG 閱讀(2025) | 評論 (0)編輯 收藏
          char -128~127     無符號:0~255
          int
          short -32768~32767        無符號:0~65535
          long -2G~2G            無符號:0~4G-1

          有其他修飾符時,int可以省略,short = short int  long = long int,signed = signed int,unsigned = unsigned int。

          float     +/- 3.4*10E38
          double     +/- 1.7*10E308
          long double    +/-1.1*10E4932

          常量定義,必須初始化。

          整數型,數據超出后,會發生回繞,char     127+1 => -128了。

          ==============================

          正數與負數轉換,別忘了是取反加1,

          有符號正數:00000111
          負數,全部取反+1
          <1>11111000
          <2>11111001

          正數0:00000000(正0)
          <1>取反:11111111
          <2>加一,進位,還要保留符號位,所以是10000000,即為-128

          ==============================

          #include <iostream>
          using namespace std;
          int main()
          {
              cout
          <<"please input a number:";
              
          int i,num;
              cin
          >>num;
              
          int mask=0x80000000;
              cout
          <<"binary is ";
              
          for( i=0; i<32; i++ ){
                  
          if( (i&3)==0 )
                      cout
          <<' ';
                  cout
          <<(mask&num?'1':'0');
                  num
          <<=1;
              }

              cout
          <<endl;
              
          return 0;
          }



          整型包括:char,unsigned/signed [int/short int/long int],enum,枚舉項。

          C++運算符,優先級順序

          () []
          . -> .* ->* ::
          ! ~ ++ -- + -
          & sizeof
          * / %
          + -
          << >>
          < > <= >=
          == !=
          &
          ^
          |
          &&
          ||
          ?:
          =    +=    -=    *=   /=   %=       << =    >>=     &=    |=    ^=
          ,

          由上到下,級別越低。

          單目,賦值,條件  ,從右向左結合,其他從左向右

          ==============================================

          函數與多文件結構

          函數是把若干語句組合在一起完成某一個功能。

          組成:參數(條件) (結果)返回值

          形參和實參

          void disp(char str[])形參
          {
                cout << str << endl;
          }
          disp(name);實參


          函數聲明可以和函數定義分開,函數聲明在使用的地方,可以有多處,定義只有一處。

          float average(int ,int)

          編譯只做語法檢查,鏈接才真正去找函數的定義,主要從標準庫、當前文件中。

          當一個項目包含多個文件時,需要一起編譯。

          頭文件包含一些簡短聲明,不要有代碼,以避免重復。

          #ifndef __STU_H_
          #define __STU_H_
          函數聲明
          類定義
          結構定義
          宏定義
          #endif

          函數的工作原理與棧。

          1,參數從后向前將實參壓入棧
          2,依次傳遞給形參

          返回不確定,可以通過寄存器,也可以通過棧。

          函數的局部變量一定在棧中分配空間。并且一定要初始化再使用。因為C++是不會清理空間的值的(Java的方法中的變量一定是先賦值,再使用,同理)

          posted @ 2006-01-15 17:13 北國狼人的BloG 閱讀(293) | 評論 (0)編輯 收藏

          人的頸椎上連頭顱,下接軀體,支配著頸部、軀干及四肢的許多活動,同時也潛在著容易受傷和受損的危險性。特別對于長期伏案和低頭工作的人來說,頸椎病的發病率較高。頸椎病的發生和發展,還會導致其他系統一些疾病,如動脈硬化、高血壓、冠心病、頭痛頭暈等,嚴重影響著人們的正常工作與身心健康。

          頸椎運動既能預防頸椎病也能治療頸椎病,且鍛煉的方法簡單,或坐或站都能進行。活動的準備姿勢:雙腳分離與肩同寬,兩手臂放在身體兩側,指尖垂直向下(坐時兩手掌放在兩大腿上,掌心向下),眼平視前方,全身放松。活動方法如下:

          1.抬頭緩慢向上看天,要盡可能把頭頸伸長到最大限度,并將胸腹一起向上伸(不能單純做成抬頭運動)。

          2.將伸長的頸慢慢向前向下運動,好似公雞啼叫時的姿勢。

          3.再緩慢向后向上縮頸。

          4.恢復到準備姿勢。

          注意:第一,每做一次(1~4)連續運動約需1分鐘;第二,向上伸頸和向后縮頸都要挺胸收腹;第三,結合每人不同情況每天可做數遍,每遍可做數次。

          這種伸頸運動可以改善頸部肌肉韌帶的供血,使血液循環加快,使肌肉韌帶更加強壯,使骨密度增加,預防骨質疏松,從而減少頸椎病的發生。這種運動不止使頸椎得到鍛煉,還能使胸部、腹部及內臟得到鍛煉。這種鍛煉方法不需要運動場地,隨時隨地都可進行,也是一種積極的休息方法。

          posted @ 2006-01-15 17:04 北國狼人的BloG 閱讀(414) | 評論 (0)編輯 收藏

          吳聞文主任醫師強調,頸椎病是一種后天性的疾病,應該以預防為主,從青少年時期就引起足夠的重視。他提出了預防頸椎病的“七辦法”:

            第一、有研究表明,長期壓抑感情,遇事不外露,多愁善感的人易患神經衰弱,神經衰弱會影響骨關節及肌肉休息,長此以往,頸肩部容易疼痛。所以,要經常保持樂觀向上的好心情。

            第二、日常生活中應注意保持頭頸正確的姿勢,不要偏頭聳肩,看書、操作電腦時要正面注視,保持脊柱的正直。睡覺時要選擇合適的枕頭,不宜過高或過低,一般枕頭以10厘米的高度為宜。不要躺著看書、看電視。

            第三、盡可能少坐多動,能走路的不要騎車,能騎車的不要坐車。特別是有車族和長期坐辦公室的人員,每天要抽出一定的時間進行鍛煉,尤其注意加強頸肩部肌肉的鍛煉,可做一做頭及雙上肢的前屈、后伸及旋轉運動,既可緩解疲勞,又能使肌肉發達,韌度增強,有利于頸段脊柱的穩定性,增強頸肩順應頸部突然變化的能力。爬山、游泳,對預防頸椎病效果較好。

            第四、長期低頭伏案工作者,要注意動靜結合,每工作一小時左右就要站起來做做工間操,活動活動四肢、頸椎,消除頸部肌肉、韌帶的疲勞,防止勞損。

            第五、平時要注意保暖,不要用電風扇和空調直接吹,乘車或運動時注意頸部保護,避免急拐彎、急剎車或突然轉頸。

            第六、要防止酗酒。酒精會影響鈣質在骨上沉積,使人們易患骨質疏松癥、骨質軟化癥,加速頸椎退行性變。

            第七、中醫認為胡桃、山萸肉、生地、黑芝麻等具有補腎髓功能,可在醫生指導下合理地少量服用,以起到強壯筋骨,推遲腎與關節退變的作用。

          posted @ 2006-01-15 15:48 北國狼人的BloG 閱讀(405) | 評論 (0)編輯 收藏
          頸椎病是頸椎的一種勞損退變疾患,與長期的屈頸動作有關。嚴重的可以壓迫通向上肢的神經根或通向腦子的椎動脈而引起臂至指的酸麻痹痛或眩暈,甚至壓迫神經的低級中樞──脊髓,而產生半身無力。病變是難以逆轉的,但是可以作些預防措施以避免它繼續惡化,下面幾點是我的體會,特編成歌訣以便于記憶:

          晚上不宜高枕臥,俯首工作有限時;看書毋妨添支架,沈思亦可托腮頤;頭暈忌望天花板,手軟宜常牽脖子;早起嗽口練抬頭,閑時多躺靠背椅;俯臥垂頭能復位,自行"吊頸"少求醫。

            低頭屈頸長時間工作,頸后椎旁肌肉因持續緊張而容易疲勞,頸椎關節亦會勞損。因此伏案不宜過久,最好一兩小時便休息一下,或變換一下體位或動作。晚上睡高枕亦使頸椎屈曲,長年如此,會增加頸椎勞損。看書時自然要低頭對著書本,如果把書用支架斜放,頭可以略為抬起,不必長時間屈頸。用腦子時以手支撐下頦,對頸椎病患者來說無疑是個好習慣,可以減輕頸肌的負擔,避免頸肌過勞。頸椎病如果椎動脈受壓會引起腦缺血而產生暈眩,頭后仰動作時會增加壓迫,故每抬頭望天花板時便暈眩,應注意避免這個動作。頸椎壓迫到神經根則會引起從上肢至指端的麻木痹痛無力,做頸部牽引可以擴大椎間孔,減輕神經根的壓迫,癥狀自然會緩解,頸椎病患者應多做頸部功能鍛煉,尤其是伸頸動作,一方面可使頸椎關節保持一定的活動范圍,避免關節囊、韌帶等軟組織退化僵硬;另一方面可使頸部肌肉發達,增加支撐力,避免勞損萎縮。早上嗽口時順便活動一下脖子,是一舉兩得的事。為著避免頸肌長時間因支撐頭顱而產生疲勞,休息時多躺靠背椅,使頸肌放松,亦是避免勞損的一法。由于椎間盤變性變窄,頸椎小關節松弛,有時會在某個位置卡住了,即發生了移位,此時會有頸痛、活動不靈、容易疲勞,甚至引起暈眩、頭痛等癥狀。用推拿、牽引等方法可以迅速復位,癥狀便緩解。沒有就醫時,亦可以俯臥靠近床邊,使頭自然下垂到床沿外,利用頭顱本身的重量自行牽引,有時也能復位。不過年紀大,有高血壓者忌用;沒有人在旁也不可擅用此法。牽引是治療頸椎病的一種有效方法,長期有癥狀的患者可以在家里自行安裝一套簡易的牽引用具,只需仿效醫院縫制一條用以固定頭顱、懸吊脖子的頜枕帶,加上一個滑車、一條繩子,以及代替砝碼的重物便可。但是牽引的角度、重量和時間亦要講究,最好征詢一下理療科大夫的意見。

          posted @ 2006-01-15 15:44 北國狼人的BloG 閱讀(349) | 評論 (0)編輯 收藏
          如何實現程序查看系統環境變量

          [ljl@dhcp-8116-1 uc]$ env

          C++程序:

          #include <iostream>
          using namespace std;

          int main(int args,char** argv,char** env)
          {
                  
          while(env&&*env)
                  {
                          cout 
          << *env <<endl;
                          
          ++env;
                  }
                  
          return 0;
          }


          使用main函數的重載.

          char** env 是一個二維數組指針,可以遍利二維數組得到環境變量.

          =================================================
          #include <iostream>
          using namespace std;
          const unsigned size = 5;
          void printInfo(char** env)
          {
                  
          while(env && *env)
                  {
                          cout 
          << *env << endl;
                          env
          ++;
                  }
          }

          void init(int** data)
          {
                  
          while(data && *data)
                  {
                          
          for(int i = 0; i < 5; i++)
                                  (
          *data)[i] = i;
                          data
          ++;
                  }
          }

          void printInfo(int** point)
          {
                  
          while(point && *point)
                  {
                          
          for(int i = 0; i < 5; i++)
                          {
                                  cout 
          << (*point)[i] << "\t";
                          }
                          cout 
          << endl;
                          point
          ++;
                  }
          }

          int main()
          {
                  
          char p[4][15= {{"hello"},{"world"},{"my"},{"girl"}};
                  
          char* point[5];
                  
          for(int i = 0; i < sizeof(p)/sizeof(p[0]); i++)
                  {
                          point[i] 
          = p[i];
                  }
                  point[
          4= NULL;
                  printInfo(point);



                  
          int* piArr[size];
                  
          for(int i = 0; i < size-1; i++)
                  {
                          
          int* pi = new int[5];
                          piArr[i] 
          = pi;
                  }
                  piArr[size
          -1= NULL;
                  init(piArr);
                  printInfo(piArr);
                  
          return 0;
          }


          =================================================


          posted @ 2006-01-15 15:12 北國狼人的BloG 閱讀(276) | 評論 (0)編輯 收藏

          咖啡含咖啡因,咖啡因是天然西藥,故咖啡是典型的"含藥食物"。上午喝一杯咖啡,對大多數人而言提神的藥理作用頗為顯著,能使人更為機警,頭腦反應更快,學習能力更強,手腳也顯得更為靈活,讓人整個上午過得神采飛揚。等上午過去了,咖啡因的藥效也消退了,下午再來一杯,可維持整個下午的生活效率。其他的休閒時間就不要再喝咖啡了,每天喝三杯以上的咖啡時, 骨鈣會從尿裡流失,若不懂得刻意補充鈣質,就注定要得骨質疏鬆癥了;最容易疏鬆的骨骼是腰部脊椎,此處骨頭斷裂後,日子絕不會好過的。咖啡適量有益,過量有毒,其毒性還不只骨質疏鬆一項而已。

          綠茶含茶多酚,即鞣酸(單寧酸),能抑制正常細胞癌變,經西醫研究後,被視為有預防癌癥療效,再經電視和文字媒體傳播後,綠茶防癌似乎已是家喻戶曉的普通常識了。但問題並非這般單純,有一派學者指出,單寧酸消費量大的地區居民得食道癌的機率較高,從而認為長期攝食茶裡的單寧酸有可能增加得食道癌的機會。

          也有學者指出綠茶製造過程中沒有發酵,大量鞣酸未被破壞,故有防癌藥效,而紅茶 的製造過程中有發酵,發酵期間原有的鞣酸被氧化殆盡,故無防癌療效。綠茶是否真能防癌,有益而無害,恐怕要由時間來解決了。茶多酚是強力抗氧化劑,長期過量攝食究竟有何毒性,現代醫學還不是很了解,為安全計,喝些無妨,喝多就沒有人敢保證安全了。

          不知從何時起,"英國醫學會"警告英國人:喝茶(紅茶)時要加牛奶解毒。因此英國人有喝奶茶的傳統。雖然茶葉含抗癌成分"茶多酚"(鞣酸),現在大家相信可防肺癌,但已有的數據也顯示,鞣酸喝多喝久了,得食道癌和口腔癌的機率升高很多。

          加了牛奶後,其蛋白質和鞣酸結合,使鞣酸較容易被胃腸吸收。英國是西醫藥理學發展最早的國家,而且又是喝茶的國家,因此最早注意喝茶的問題。

          鞣酸是許多植物的天然成分,分為兩大類:可水解的鞣酸和縮合鞣酸,前者有預防正常細胞癌變的藥理作用,但學者也認為,縮合鞣酸喝久了有可能增加食道癌的發生率。在人類吃進口裡的天然物中,以檳榔的縮合鞣酸含量最高,占總成分的百分之一五;從檳榔草取出來的縮合鞣酸經皮下注射入大老鼠後可使全數老鼠得癌;印度和南非消費大量檳榔地區的居民,得口腔和食道癌的病人很多,學者認為縮合鞣酸引起這些癌癥。

          茶和中外民間常用的一些草藥也含縮石鞣酸,從茶葉提取出來的縮合鞣酸也可使八成的實驗動物得癌,有吃茶粥習摜的日本人得食道癌的機率也高;使用縮合鞣酸含量高的草藥的民族,其食道癌得病率也高。十八世紀的荷蘭人喝茶不加牛奶,結果有很多人得了吞嚥因難的病,改成喝咖啡後就很少人得此病綜合言之,學者認為長期攝食富含縮合鞣酸的食物或草藥 後,會增加得食道癌的機會。

          咖啡有別的問題,西醫證據顯示,每天喝二杯而且喝一輩子(四十五年以上)咖啡的女性可遭遇脊椎骨和髖骨的骨質疏鬆癥,咖啡因慢慢使骨鈣流失, 而使骨質失去原有的硬度,但每天另外喝至少一杯牛奶補充鈣質的女性,其骨質則無骨質疏鬆癥,可見喝牛奶能解咖啡因的慢性毒。喝少量咖啡的女性,其骨質則無明顯改變。

          一九八0年,"美國食品藥物管理局"警告美國人:孕婦應盡量避免攝食富含咖啡因的食物,主要依據是咖啡因會使母老鼠生下畸形的小老鼠。動物的實驗結果大都會表現在人類身上,日前已有許多動物和人類的證據顯示,大量攝取咖啡因會毒害胎兒。一杯二00毫升的煮咖約含一00毫克咖啡因,一杯即溶咖啡含六十五毫克咖啡因,一杯泡茶含五十毫克咖啡因,而一罐可樂也含五十毫克咖啡因。一九九三年十二月,"美國醫學會雜誌"的論文指出,每日攝取三百二十一毫克(相當於三杯煮咖啡或六杯泡茶)以上的咖啡因的孕婦, 流產機率是其他人的三倍;而懷孕前攝取一個月三百二十一毫克以上的咖啡因,也會使流產率加倍;懷孕頭三個月是胎兒全身器官形成期,最怕食毒和藥毒只只要每日攝取一百六十三毫克的咖啡因,就能使流產機率加倍。咖啡因能從母親迅速穿過胎盤進入胎體,因為胎體的肝解毒系統尚未形成,故懷孕後咖啡因的毒性較大。

          由於大多數女性都在懷孕一個半月後才發現己經懷孕,大量咖啡因會增加流產和不孕機會,故考慮懷孕的女生應少喝咖啡、茶和可樂(更應戒菸酒), 才能使胎兒的健康獲得更多的保障。

          posted @ 2006-01-11 22:37 北國狼人的BloG 閱讀(644) | 評論 (1)編輯 收藏
          僅列出標題
          共17頁: First 上一頁 8 9 10 11 12 13 14 15 16 下一頁 Last 
          主站蜘蛛池模板: 犍为县| 辽源市| 灵丘县| 广河县| 齐齐哈尔市| 吉首市| 凤台县| 阿克苏市| 灵丘县| 宁波市| 从化市| 丰顺县| 皮山县| 彭阳县| 玉龙| 米泉市| 准格尔旗| 卢龙县| 米脂县| 阿克苏市| 阿坝县| 惠州市| 调兵山市| 新晃| 遂平县| 海伦市| 子洲县| 萝北县| 靖远县| 澄迈县| 瓦房店市| 莆田市| 杂多县| 宿松县| 蓬溪县| 中山市| 荔波县| 东乌珠穆沁旗| 同德县| 大连市| 遵化市|