随笔-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 阅读(388) | 评论 (0)编辑 收藏
     摘要: 我这天,开发网络连接程序,遇到n多问题,都得以解决。总结一下。首先是环境。我用的开发SDK和模拟器都是Sun的,J2ME Wireless Toolkit 2.2现在UltraEdit下面写一个网络程序。注意一定要在网络连接动作时,另外启动一下线程,否则模拟器运行会有错误。很不好的代码:不要使用!!!!!!!!!! import java.io.InputStream;import&n...  阅读全文
posted @ 2006-02-05 13:28 北国狼人的BloG 阅读(4960) | 评论 (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 阅读(514) | 评论 (0)编辑 收藏
     摘要: 某些接口的实现类,我们要做一个代理,来代理对这些实现类对象的方法调用。 public class SomeClassImpl {  private String userName;    public SomeClassImpl(final String u...  阅读全文
posted @ 2006-01-30 18:27 北国狼人的BloG 阅读(2012) | 评论 (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 阅读(278) | 评论 (0)编辑 收藏

人的颈椎上连头颅,下接躯体,支配着颈部、躯干及四肢的许多活动,同时也潜在着容易受伤和受损的危险性。特别对于长期伏案和低头工作的人来说,颈椎病的发病率较高。颈椎病的发生和发展,还会导致其他系统一些疾病,如动脉硬化、高血压、冠心病、头痛头晕等,严重影响着人们的正常工作与身心健康。

颈椎运动既能预防颈椎病也能治疗颈椎病,且锻炼的方法简单,或坐或站都能进行。活动的准备姿势:双脚分离与肩同宽,两手臂放在身体两侧,指尖垂直向下(坐时两手掌放在两大腿上,掌心向下),眼平视前方,全身放松。活动方法如下:

1.抬头缓慢向上看天,要尽可能把头颈伸长到最大限度,并将胸腹一起向上伸(不能单纯做成抬头运动)。

2.将伸长的颈慢慢向前向下运动,好似公鸡啼叫时的姿势。

3.再缓慢向后向上缩颈。

4.恢复到准备姿势。

注意:第一,每做一次(1~4)连续运动约需1分钟;第二,向上伸颈和向后缩颈都要挺胸收腹;第三,结合每人不同情况每天可做数遍,每遍可做数次。

这种伸颈运动可以改善颈部肌肉韧带的供血,使血液循环加快,使肌肉韧带更加强壮,使骨密度增加,预防骨质疏松,从而减少颈椎病的发生。这种运动不止使颈椎得到锻炼,还能使胸部、腹部及内脏得到锻炼。这种锻炼方法不需要运动场地,随时随地都可进行,也是一种积极的休息方法。

posted @ 2006-01-15 17:04 北国狼人的BloG 阅读(392) | 评论 (0)编辑 收藏

吴闻文主任医师强调,颈椎病是一种后天性的疾病,应该以预防为主,从青少年时期就引起足够的重视。他提出了预防颈椎病的“七办法”:

  第一、有研究表明,长期压抑感情,遇事不外露,多愁善感的人易患神经衰弱,神经衰弱会影响骨关节及肌肉休息,长此以往,颈肩部容易疼痛。所以,要经常保持乐观向上的好心情。

  第二、日常生活中应注意保持头颈正确的姿势,不要偏头耸肩,看书、操作电脑时要正面注视,保持脊柱的正直。睡觉时要选择合适的枕头,不宜过高或过低,一般枕头以10厘米的高度为宜。不要躺着看书、看电视。

  第三、尽可能少坐多动,能走路的不要骑车,能骑车的不要坐车。特别是有车族和长期坐办公室的人员,每天要抽出一定的时间进行锻炼,尤其注意加强颈肩部肌肉的锻炼,可做一做头及双上肢的前屈、后伸及旋转运动,既可缓解疲劳,又能使肌肉发达,韧度增强,有利于颈段脊柱的稳定性,增强颈肩顺应颈部突然变化的能力。爬山、游泳,对预防颈椎病效果较好。

  第四、长期低头伏案工作者,要注意动静结合,每工作一小时左右就要站起来做做工间操,活动活动四肢、颈椎,消除颈部肌肉、韧带的疲劳,防止劳损。

  第五、平时要注意保暖,不要用电风扇和空调直接吹,乘车或运动时注意颈部保护,避免急拐弯、急刹车或突然转颈。

  第六、要防止酗酒。酒精会影响钙质在骨上沉积,使人们易患骨质疏松症、骨质软化症,加速颈椎退行性变。

  第七、中医认为胡桃、山萸肉、生地、黑芝麻等具有补肾髓功能,可在医生指导下合理地少量服用,以起到强壮筋骨,推迟肾与关节退变的作用。

posted @ 2006-01-15 15:48 北国狼人的BloG 阅读(383) | 评论 (0)编辑 收藏
颈椎病是颈椎的一种劳损退变疾患,与长期的屈颈动作有关。严重的可以压迫通向上肢的神经根或通向脑子的椎动脉而引起臂至指的酸麻痹痛或眩晕,甚至压迫神经的低级中枢──脊髓,而产生半身无力。病变是难以逆转的,但是可以作些预防措施以避免它继续恶化,下面几点是我的体会,特编成歌诀以便于记忆:

晚上不宜高枕卧,俯首工作有限时;看书毋妨添支架,沈思亦可托腮颐;头晕忌望天花板,手软宜常牵脖子;早起嗽口练抬头,闲时多躺靠背椅;俯卧垂头能复位,自行"吊颈"少求医。

  低头屈颈长时间工作,颈后椎旁肌肉因持续紧张而容易疲劳,颈椎关节亦会劳损。因此伏案不宜过久,最好一两小时便休息一下,或变换一下体位或动作。晚上睡高枕亦使颈椎屈曲,长年如此,会增加颈椎劳损。看书时自然要低头对着书本,如果把书用支架斜放,头可以略为抬起,不必长时间屈颈。用脑子时以手支撑下颏,对颈椎病患者来说无疑是个好习惯,可以减轻颈肌的负担,避免颈肌过劳。颈椎病如果椎动脉受压会引起脑缺血而产生晕眩,头后仰动作时会增加压迫,故每抬头望天花板时便晕眩,应注意避免这个动作。颈椎压迫到神经根则会引起从上肢至指端的麻木痹痛无力,做颈部牵引可以扩大椎间孔,减轻神经根的压迫,症状自然会缓解,颈椎病患者应多做颈部功能锻炼,尤其是伸颈动作,一方面可使颈椎关节保持一定的活动范围,避免关节囊、韧带等软组织退化僵硬;另一方面可使颈部肌肉发达,增加支撑力,避免劳损萎缩。早上嗽口时顺便活动一下脖子,是一举两得的事。为着避免颈肌长时间因支撑头颅而产生疲劳,休息时多躺靠背椅,使颈肌放松,亦是避免劳损的一法。由于椎间盘变性变窄,颈椎小关节松弛,有时会在某个位置卡住了,即发生了移位,此时会有颈痛、活动不灵、容易疲劳,甚至引起晕眩、头痛等症状。用推拿、牵引等方法可以迅速复位,症状便缓解。没有就医时,亦可以俯卧靠近床边,使头自然下垂到床沿外,利用头颅本身的重量自行牵引,有时也能复位。不过年纪大,有高血压者忌用;没有人在旁也不可擅用此法。牵引是治疗颈椎病的一种有效方法,长期有症状的患者可以在家里自行安装一套简易的牵引用具,只需仿效医院缝制一条用以固定头颅、悬吊脖子的颌枕带,加上一个滑车、一条绳子,以及代替砝码的重物便可。但是牵引的角度、重量和时间亦要讲究,最好征询一下理疗科大夫的意见。

posted @ 2006-01-15 15:44 北国狼人的BloG 阅读(320) | 评论 (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 阅读(260) | 评论 (0)编辑 收藏

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

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

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

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

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

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

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

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

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

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

posted @ 2006-01-11 22:37 北国狼人的BloG 阅读(617) | 评论 (1)编辑 收藏
仅列出标题
共17页: First 上一页 8 9 10 11 12 13 14 15 16 下一页 Last