Linux学习笔记

HttpWatch是强大的网页数据分析工具.集成在Internet Explorer工具栏.包括网页摘要.Cookies管理.缓存管理.消息头发送/接受.字符查询.POST 数据和目录管理功能.报告输出.HttpWatch 是一款能够收集并显示页页深层信息的软件。它不用代理服务器或一些复杂的网络监控工具,就能够在显示网页同时显示网页请求和回应的日志信息。甚至可以显示浏览器缓存和IE之间的交换信息。集成在Internet Explorer工具栏。
  只需要选择相应的网站,软件就可以对网站与IE之间的需求回复的通讯情况进行分析并在同一界面显示其相应日志记录。每一个HTTP记录都可以详细的分析其 Cookies、消息头、字符查询等信息。支持HTTPS及分析报告输出为XML、CSV等格式。 使用方法:打开IE浏览器,选择菜单“查看-浏览器栏”,再选择“HttpWatch Professional”即可。
  日志中有少量内容还是英文,汉化后会出错,故保留。提示:授权文件已经在根目录下的“httpwatch.lic”
-------------------------------------
1.Linux家族:Caldera、Corel、Debian、Mandrake、Red Hat、SuSE、Slackware
2.Linux运行平台:Alpha、Amiga、Atari、Sun SPARC、 Macintosh
3.Linux内核最稳定的发行版本号2.6
4.passwd:修改密码
  whoami:用户id
  hostname:主机名
  uname:操作系统名
  cp   :允许复制文件
  exit :结束开启的shell
  echo $SHELL:显示正在运行的shell
  mv         :允许移动或重命名文件
  whatis     :浏览一个命令的描述
  who        :正使用系统的所有用户
  whereis    :显示全路径
  >          :输出重定向
  >>         :文件中追加信息
  <          :输入重定向
  |          :管道输出
  pwd        :当前工作目录
  ps         :列出当前进程
  Linux系统启动文件:/etc/profile
  隐藏当前文件/点文件:shell启动文件
  shell环境变量:CDPATH:cd 命令访问的目录的别名
                 EDITOR:默认编辑器
                 ENN:Linux查找配置文件的路径
                 HOME:第一次登录时主目录名
                 PATH:搜索命令或程序的所有目录
                 PSI,prompt:在命令行中出现的shell提示符
                 PWD,cwd:当前工作目录
                 TERE:控制台终端类型

5.显示文件:cat:同时显示一个/多个文件所有内容
            more:一次显示一个屏幕的文件内容,按空格显示下一页
6.lpr:打印文件
  lpr -p 打印机 -n 份数 文件名
  cal:日历 年0-9999 月:1-12
  write 用户名:单向实时消息
  biff:设置新邮件到达时是否通知
  mesg:允许/禁止发单向消息,以及write talk 发出的聊天请求
  alias:为各种shell命令创建别名
  unalias:删除别名  unalias -a删除所有的别名
  uptime:显示系统时间

7.shell元字符
  #:注释   ”:引用多个字符   $:一行结束或显示变量值  &:让命令再后台执行
  ‘:引用多个字符    ():子shell中执行     []:插入通配符
  ^:一行的开始   {}:当前shell中执行  |:创建管道     /:用作根目录或路径分隔符
  \:转义  !:启动历史记录列表  %:提示或者制定一个任务序号  ~:代表主目录

8.Linux是文本驱动型操作系统。用户在使用Linux系统时需要经常编辑文件。
  Linux文本编辑器:pico编辑器、vi编辑器、emacs编辑器(最复杂)

  vi编辑器:主要有命令模式(按键命令序列组成)和插入模式(允许输入文本)
  vi filename:编辑新的或已有的文本文件
     常用功能:+n :从第n行开始编辑
              +/exp:从文件中匹配exp字符串的第一行开始编辑

  第一次进入vi是命令模式,输入A可以进入变为插入模式;从插入模式到命令模式,按ESC键

  大小写敏感  A:当前行最后一个字符开始插入;a:当前光标所在处开始插入

  在shell中启动vi,只需输入vi,并按回车。
 
  5dw:从当前光标处删除5个字符  7dd:从当前行开始删除7行
  7o:从当前行后面打开7个空行  7O:从当前行前面打开7个空行
  c2b:修改光标前2字
  1G:将光标置于文件首行

插入模式下按键: 
  c:开始修改操作,允许修改当前行文本
  C:修改从当前光标处到行尾的内容
  i:在当前光标前插入  I:在当前行开头插入
  R:开始覆盖文本操作
  s:替换单个字符  S:替换正行
  o:在当前行下方打开一个空行并将光标置于该行行首
  O:在当前行上方打开一个空行并将光标置于该行行首

命令模式下按键:
  d :删除字、行
  u:撤销最近一次编辑操作
  :r filename:读取文件内容插入到当前光标位置
  :q!:放弃缓存内容并退出vi
  :wq:保存缓存内容并退出
  :w filename:当前缓存写入文件
  :w! filename:用当前文本替换文件内容

复制粘贴:yank put命令。替换查找:substitute
yank put命令规则:
y2w:从当前光标位置向右复制2字
4yb:从当前光标位置向左复制4字
yy或Y:复制当前行
p:从当前位置后开始插入复制的内容
P:从当前位置前开始插入复制的内容
5p:在当前光标位置后复制内容粘贴5次

9.Email的基本功能是:通过永久性存储介质与本机或网络上的其他用户进行通信。
邮件头中重要的信息:
To:收件人地址
From:发信人地址
Cc:包含其他收信人地址
Attach:附件
Subject:主题

附件类型:1.ASCII文件。Linux的uuencode可以将二进制转化为ASCII文件
          2.多媒体文件

Email是永久性存储记录。

Linux邮件系统:系统邮件文件 /var/spool/mail 收到的邮件均放于此

分两种:行显示的电子邮件系统 和全屏电子邮件系统(如elm ,pine ,图形化Kmail)

9.1查看系统邮件
 (1)mail 用户名 < first.txt
  (2)输入mail 回车
 (3)输入要查看的邮件号显示正文和主题
 (4)d 邮件号删除
      s filename:已文件名保存
 (5)q回车退出

9.2mail命令
  mail用于收发邮件
  发邮件:-s:通过命令行指定主题
          -c add:抄送
          -b add:暗送到地址
         
  读邮件:
         -h:首先显示第一屏邮件头
         -P:显示所有邮件头

  命令模式下有2中方式:
  发邮件:
  输入地址后回车输入内容,Ctrl+D 发送
 
  看邮件:

10.在Linux一个文件是一个字符序列,全部看做文件
  Linux中目录入口结构:Icode号码:文件名
  Icode号码有4个字节,号码唯一,是磁盘上数组的索引值,该数组叫索引节点项,记录文件属性。
  Linux内核为每个创建的文件分配一个icode。
 
  特殊文件用于访问硬件设备,分字符特殊文件和块特殊文件。一般放于/dev,
  该目录包含所有的设备文件,每个连接到计算机的设备至少有一个相应的设备文件。
  应用程序和命令读写外围设备文件的方式与普通文件相同,因此Linux的输入输出和设备无关
 
  各种特殊文件都是模拟物理设备,因此成为虚拟设备。可以通过虚拟设备与Linux系统进行交互
  不需要使用和系统连接的物理设备。

11.进程间通信机制(IPC)
   3种常见的原语是:管道、命名管道(FIFO)、sockets。
   管道是内核态内存(内核态缓存),允许2个进程进行通信。
   FIFO是一个文件,允许在同一台计算机上的两个进程进行通信
   Socket是内核态内存上的数据结构,允许在不同计算机的进程都可以使用它相互通信。

12.Linux上文件组织是层次结构,倒立的树。主目录成为根目录,其下可以有任意多的文件或目录。
  登陆LInux时,进入一个特殊的目录,称为主/登陆目录,即用户名的那个目录。

  路径有三表示:从根目录开始,从当前工作目录开始,从用户主目录开始。
  从根目录开始:绝对路径,可以呗所有用户在任意一个目录使用。其他2个是相对路径。
  根目录用/开始。
  bin目录:二进制目录,包含了系统管理员和用户常用的Linux命令二进制映像。可执行文件或可执行文件的符号链接
  /boot:存放了用于启动Linux系统的所有文件。包括Linux内核的二进制映像。内核文件名是vmlinux+版本号和发型信息
  /dev:设备目录。存放连接到计算机的设备的对应文件(特殊文件)。
  /etc:存放和特定主机相关的文件和目录,包括系统配置文件,不含二进制文件。主要是管理员使用,普通用户有读权限。
  /home:存放用户的主目录。不同主机配置不同。
  /lib:存放各种编程语言库
  /lost+found:存放所有和其他目录都没有关联的文件。可以用Linux的fsck(文件系统检查)查找到。
  /mnt:用于临时装载文件系统。用mount完成装载。包含了光驱、软驱、磁盘的装载点。
  /opt:用来安装附加软件包。用户调用的软件包程序放在目录/opt/package_name/lib下。
  /proc:存放进程和系统信息。
  /root:根用户的主目录。普通用户无权访问。
  sbin:存放系统管理工具、应用软件、通用的根用户权限命令。如getty/init/update/mkswap/halt/
       reboot/shutdown/ifconfig/route/mkfs.msdos
  /tmp:存放临时性文件。
  /usr:存放在不同主机共享的只读数据。包含的子目录:bin doc games include lib local man sbin share src tmp
  /var:存放易变数据
  /etc/passwd:包含了系统中用户的描述信息。7个字段冒号相隔。

13.echo $HOME :获得主目录的绝对路径 或pwd
   mkdir -p 主目录/子目录 同理rmdir -p删除空的父目录
   删除当前目录的A目录及其子目录B:rmdir A ~/B

   dirs:显示当前的目录堆栈,从左到右显示,第一个为当前目录
   目录堆栈项(路径名)都有一个索引号,栈顶为0.向下+1.
   dirs -v:显示堆栈的目录项和索引号。
   dirs -l:显示目录堆栈中目录的绝对路径

14.file命令确定文件类型
   对每个执行的命令,Linux会打开3个文件。标准输入文件、标准输出文件、标准报错输出文件。
   在Linux中每个打开的文件都有一个称为文件描述符的整数与之对应。0 1 2 分别是标准输入文件、
   标准输出文件、标准报错输出文件的文件描述符。
   内核根据文件描述符执行文件操作。
   每个LInux文件都有文件末尾eof标记。不是字符通常是负整数-1。若命令从键盘键入,文件末尾标记是Ctrl+D

15.文件安全。
   最基本的用户文件保护策略是给每个用户一个登录名和登陆密码;加密。
  
   Linux中每个用户都属于一个组。一个用户可以属于多个组。Linux中特殊用户为超级用户 root

   Linux中3中权限:读r 写w 执行x

   chmod:改变文件访问权限。
          u:当前用户的访问特权
          g:组当前的访问特权
          o:其他用户的当前访问特权
          l:锁定特权位
          s:设定用户或组的ID位
          t:粘滞位

  当创建一个文件或目录时,Linux根据umask命令的参数来设定新创建文件或目录的访问特权。
  设为1.默认访问权限:可执行文件是777,文本文件是666
  掩码则是umask中的参数 和777或666做差就为访问特权。

  3个最重要的位:
  set-user-ID位:  允许用户更改自己的有效用户标识使自己拥有运行该命令的用户所没有的一些特权。
                  每个linux文件都有一个附加保护位,SUID位。
  set-group-ID位:使进程拥有组的访问权限。
  sticky位:保证未被授权的用户不能删除或重命名某个目录下其他用户的文件。

16.文件访问特权和类型信息都存储在了一个16位的空间中,低9位用来存储文件访问特权;接下来的3位
   用来存储特别的权限位,高4位用来保存文件类型。

17.基本文件处理
  cat:在显示屏上显示一个或多个文件的完整内容。多余一个屏幕时,只看到末尾。
       -E:每行行尾显示$
       -n:显示每行的行号
       多个文件用空格相隔
       命令nl将行号和内容其一输出 同 cat -n 文件名
       工具pr:显示时间戳和页号
  tac:逆序显示一个文件。

  如果内容多余一个可以用more 或less来分页查看,每次显示一页
  +str:从包含str前两行开始显示
  -nN:每页显示N行
  +N:从第N行显示


  查看文件的头和尾:head(默认是前10行)-N: 显示开始的前N行
                    tail(默认是后10行)-N: 显示开始的后N行 +N:显示从N开始的所有行
                                        -f:显示完文件的最后一行后,如果文件正在被追加,会继续显示追加内容
                                        -r:逆序显示

 复制文件 cp file1 file2
          -i:如果目标文件存在,覆盖前会提示
          -p:保留文件的权限属性和修改时间
          -r:递归的复制文件和子目录

 文件转移:mv file1 file2 转移文件1到文件2 或重命名为文件2
              file-list 目录:将文件转移到目录中去。
           -f:强制转移
           -i:覆盖前提示
         
 文件删除:rm  -f:强制删除 -i:删除前给提示   -r:递归删除
          
 确定文件大小:ls -l 或wc  显示行数 单词数  字符数 
               wc -c:只显示字符数  -l:只显示行数  - w:只显示字数

 文件追加:cat file-list >> 目标文件 :将文件全部追加到目标文件的末尾
               没有file-list的话讲键盘输入追加《Ctrl+D终止》
 
 文件合并:cat file-list > 目标文件
 
 文件比较:diff file1 file2 一行行比较(也可以比较目录)
               -b:忽略行尾空白 把空白字符串当成相同字符串
               -e:生成并显示一个脚本,
               -h:快速比较
           若两个文件相同不会产生输出。若使用diff时不带任何选项,会产生一系列指令,
           如果两个文件不同就使用这些指令把文件1转换成指令2.
           a(增加)、c(替换)、d(删除)
 
 删除重复行:unip删除文件中所有连续的重复行,只留下一行。针对已经排好序的文件。
             unip [] input_file output_file
                  -c:在每行之前显示他们出现的次数
                  -d:只显示重复行
                  -u:只显示未重复行

 Linux系统为每个打印机维护一个打印请求队列。称为打印队列。每个请求称为任务。分配一个数字,
 称为任务标识。输入命令打印文件时,系统会做一个被打印文件的临时备份,为打印请求分派一个
 任务标识,并把任务放到打印命令指定的打印机的打印队列中。
 
 维护打印队列和管理打印任务的Linux进程称为打印机守护进程(lpd)。
 
 lpr:打印文件 lpr file-list
     -N:打印N份   -P ptr:提交的打印机ptr   -T title :标题页上打印标题
     -m:打印结束后发邮件  -p:格式化输出

 lpq:打印机打印任务的状态 -l:显示默认打印机的状态

 lprm:取消提交的打印命令 jobID -P:指定打印机

18.高级文件处理
   支持正则表达式的工具是awk  ed  egrep grep sed vi .
  
   操作符    用例   意义
1  |析取    X|Y|Z   X或Y或X
2  .任意    /L..e/  Love Live……
3  ^字符串首字符  ^x 以x开始的字符串
4  $字符串尾字符  x$ 以x结尾的字符串
5  \转移     \*      *
6 ()组合    (xy)+   xy xyy……
7  ?可选    xy?     x  xy
8  *重复>=0  xy*    x xy xyy……
8  +重复>=1  xy+    xy xyy……
9  []集合

 压缩命令:compress  uncompress 
           及GUN的工具:gzexe gzip zcat zcmp zforce zmore zgrep

 gzip -N(1-9 9代表最慢压缩,压缩率高)
      -c:将结果写到标准输出 源文件保持不变
      -d:解压缩文件
      -f:强制压缩
      -l:压缩文件使用参数

 gunzip:解压缩    gzexe压缩可执行文件
 zcat :将压缩文件的源文件输出到标准输出
 zforce :将压缩文件扩展名不是.gz的文件重命名为.gz文件

 文件排序:
     sort [选项][文件列表]
         -b:忽略空格   -d:根据常用字母排序   -f:认为大小写相同
         -r:逆序输出  

 文件搜索:find whereis  which
         whereis  :查看系统是否装有特定的命令 存在的话给出路径
                   -b:只搜索可执行文件  -m:只搜索帮助文件
                   -s:只搜索源代码
         
         which:系统中有多个版本命令,which显示调用了哪个版本的命令

 搜索文件内容:grep [选项][模式][文件列表]
               egrep [选项][字符串][文件列表] 最慢
               fgrep [选项][表达式][文件列表] 最快
                     -c:仅输出匹配行的个数
                     -i:忽略大小写
                     -l:仅输出匹配行的文件名
                     -n:匹配时输出行号
                     -v:打印不匹配的行
                     -w:全字匹配

  表格形式文件处理:cut paste
                    cut -b list [-n][文件列表]  每个字节当成一列
                    cut -c list [文件列表]      每个字符当成一列
                    cut -f list [-d 分隔符][文件列表] 根据list内容截取
                    截取文件中表格的字段 并输出
    
 
  编码和解码:
  uuencode [源文件] decode_label:将源文件从二进制编码为ASCII
  uudecode [选项][暗码文件]


  终端输入的命令都保存在历史记录中,shell环境变量HISTSIZE表示历史列表中最多保存
  多少条命令,默认500.
  可以通过内建命令来history fc来维护历史记录。
  history 显示记录列表  fc修改和执行命令列表中的命令

19.一组用户共享文件或目录可以采用副本共享,组成员使用同一用户名登陆共享,通过对共享文件
   设置适当权限实现共享。
 
   同一用户登录就是系统管理员建立一个用户组,这个组包括所有项目成员,他们共用一个账号登陆系统
   组成员在这个账号下建立的文件和目录为整个项目组所有,每个成员都可以访问。

   链接是一种在共享文件和访问他的用户的若干目录项之间建立联系的一种方法。当一个文件有N个链接时,
   指的是这个文件有N个目录项。

   链接提供不同的访问路径来实现文件的共享,共享级别是通过设定文件的访问权限来决定。
   链接分硬链接和软链接。都可以用ln命令实现。
   硬链接:指向文件索引节点的指针。缺点:不可以在不同文件系统的文件间建立链接。只有超级用户才能
           为目录建立硬链接。

   软链接: ln -s 命令 建立符号链接。分符号链接 悬浮链接 冗长连接 凌乱链接 ……
            但文件移动后无法通过符号链接访问

   可以通过symlinks查找

   输入输出重定向可以一起使用

20。Linux允许一条命令的标准输出作为另一条命令的标准输入。用管道(|)字符来实现
   command1|command2|command3
   command1的标准输出作为command2的标准输入

   用管道连接的命令叫过滤器。一个过滤器就是一组命令。常用的过滤器是:cat compress crypt  grep
   gzip  lp  pr  sort  tr  unip  wc .
  
   管道在内存中实现。

   使用重定向或管道将命令的标准输出重定向到一个文件,并连接到另一个命令的输入:tee命令可实现
   tee [选项] file-list:从标准输入得到输入送到标准输出和列出来的文件中。
       -a:往列出来的文件中追加
       -i:忽略中断

   出错重定向:>&

21.进程
   Linux系统通过fork创建另一个线程。该操作建立原进程内存的完全备份。
   exec执行二进制命令。

   Linux进程的属性:所有者ID、进程名、进程ID、进程状态、父进程ID、进程已执行时间
   最有用的是进程ID

   ps报告进程状态
   -a :显示所有终端上执行的进程信息
   -A或-e:显示所有系统中运行的进程的信息
   -j:采用作业控制格式显示所有信息,
   -l:以长列表形式显示状态报告信息
   -p:根据进程ID来显示信息
   -f:显示进程树

   进程的状态和含义:
   D:不可终端休眠
   N:低优先级进程
   R:可运行的进程,等待被调用使用CPU
   T:被追踪或被停止
   Z:僵死了的进程
   W:完全交换到磁盘上的进程

   最常用的选项组:ps aux:显示所有进程的详细信息
   ps l:按长格式显示系统的进程

   UID:用户进程ID ,进程所有者的ID
   PID:进程ID
   PPID:父PID
   PRI:进程优先级
   TTY:终端
  
   监视CPU的动态信息,top命令
   find命令适合在后台运行  fg:将命令的执行转移到前台
   bg:将挂起的进程和前台进程转移到后台
   jobs命令显示所有挂起的和后台的进程的作业号

   尽管任何运行于后台的进程都可以称为守护进程,但在Linux中,守护进程是运行于
   后台的系统进程。守护进程在Linux中用于想用户提供各种类型的服务和执行系统管理
   任务。

   如打印服务由打印守护进程lpd提供。web浏览器服务由httpd提供。电子邮件服务由smtpd

   一个命令行输入多个命令用分号分隔

   可以在每个命令后加&使同一命令行的多个命令并行执行。以& 结尾的命令也会在后台执行
   Linux用括号将用分号相隔的命令分组,然后在当前shell中的子shell中执行,称为命令组
   命令组可以嵌套。
  
   Ctrl+C:可以终止一个前台进程

   终止后台进程:<1>kill命令<2>先用fg命令转移到前台,再用Ctrl+C终止

   kill l :返回所有信号的号码及名字列表
   kill [signal_number]:1——挂断  2——中断 3——退出
                         9——强制终止  15——软信号
 
   命令的有条件执行:与&& 或||
  
   登陆Linux会产生登陆进程。它创建登陆shell。swapper和init进程贯穿系统生命周期。
  
22.网络
   ifconfig命令查看主机IP地址和一些关于网络接口的信息  ifconfig -a

   nslookup显示某个指定主机的IP地址,主机域名作为参数

   rwho:显示在所在网络中所有登陆用户的信息

   rusers:显示在局域网中登陆的用户信息 -a:显示所有 -s:以长格式显示

   ruptime:显示当前连入局域网中所有主机的状态
            格式:主机名、状态、保持时间、登陆用户数、主机负载数。
            -u:按登陆用户数降序排列
            -l:按负载量降序排序
            -t:按正常运行时间降序排序

   ping:测试一个主机或网路的状态,如果不能正常工作,可以通过whereis来确定命令路径
   -c count:发送并接受count个数据包
   -f:每秒发送100个数据包
   -s packagesize:发送数据包大小为 packagesize,默认56字节

   finger命令显示本地用户和远程用户信息
   finger [选项][用户列表]-s:以简洁格式显示
                          -m:从用户列表中匹配用户登录名
 
   远程登录命令有2种:
   <1>基于Internet的telnet命令
   <2>基于Linux系统的rlogin命令
 
   telnet命令通过网络连接到一个远程计算机。不仅支持登陆linux系统,还支持登陆到任何一台
   支持telnet协议并且运行telnet服务的远程计算机。

   telnet的端口23
   telnet[选项][host[port]]:
         -a:尝试自动登陆
         -l:指定的登陆用户
        
   rlogin命令:允许登陆到本网络的一台主机。任何普通用户可以执行的文件,包括隐藏文件都可以被远程用户
               执行。登陆后,可以直接进入主目录。
  rlogin [选项] [host]
         -ec:将escape character设置为c,默认~
         -l user:使用user作为远程登陆的登录名

  远程命令执行:rsh [选项] [命令] -l user:以user作为登陆名登陆远程计算机

  文件传输命令 ftp [选项] [host] 在同一局域网或不同局域网见传送文件
                   -d:打开调试开关   -i:在多文件传输期间,关闭提示
                   -v:显示所有远程响应

  远程复制:rcp命令不需要登陆就能与同一局域网的远程主机之间进行文件复制。
  rcp [选项] [host] sfile [host] dfile/dir
      将sfile 复制为dfile。
      -p:保存文件修改和访问时间    -r:将文件sfile 递归复制到dir

  交互式聊天talk命令  talk user

23.Bash编程
   运行Bash脚本的3种方式:
  <1>为脚本加上可执行权限 chmod u+x filename 
  <2>运行/bin/bash命令且将脚本文件作为它的参数 /bin/bash filename
  <3>强制当前的shell使用bash执行这个脚本,即在脚本文件开始处加入
     #!   /bin/bash
     遇到#!后将其后面的路径当做绝对路径。

   可以用env / printenv来显示环境变量和透明度值。

   用declare /typeset来声明变量 没有要求必须初始化
   declare [选项][name=[value]]
   typeset [选项][name=[value]]
           -a:每个name是一个数组
           -f:每个name是一个函数
           -i:每个name是一个整数
           -r:给每个name标记为只读属性
           -x:表示每个name都可以被子进程访问
  
    把变量传给子进程:export  ;declare -x;typeset  -x

    exit可以把控制权交给调用进程

    显示将一个变量设置为null,unset [name-list]
   
    创建只读的用户定义的变量:declare -r; typeset -r;readonly [name-list]
 
    从标准输入设备读入read命令  read [选项][变量列表]
                 -a name:把词读到name数组中去;
                 -e:把一整行读入到第一个变量,其他为null
                 -p prompt:如果是从终端输入数据则显示prompt字符串

    #注释

    程序流程控制命令:二路跳转(if)、多路跳转(if case )、重复执行(for while until)
   
    1.二路跳转(if):
    if expression
       then
        [elif expression]
          then
            then-command
          else
            else-command
    fi

    expression可以用test命令,返回true或false
  
    2.for语句:
    for variable [in argument-list]
        do
          command-list
        done
  
    3.while语句
    while expression
      do
         command-list
      done

    4.until语句
     until expression
        do
         command-list
      done

     break continue打断循环语句

    5.case语句
    case test-string in
    pattern1) command-list1;;
    pattern2) command-list2;;
    esac

24.高级Bash编程
   所有Bash变量的值都以字符串形式保存。
   Bash提供了3种方式对数值数据进行算术运算:使用let命令,使用shell拓展$,使用expr命令。

   表达式求值以长整数进行,不做溢出检查。当在表达式中使用shell变量时,变量在求值前先被
   拓展和强制转换。

   let express-liat求算术表达式的值
   如let "a=8" "b=13"
     let c=a+b
  
   $((exprseesion)):计算expression的值并返回它的值。

   expr args:计算表达式参数args的值,并返回它的值到标准输出。

   数组声明:
   array_name[subscript]=value
   declare -a array_name
   declare -a array_name [subscript]
   local -a array_name
   readonly -a array_name

   数组可以在声明的时候初始化:name=(value1 value2 )

   可以用${name[subscript]}引用数组中的元素
 
   here文件:将脚本中命令的标准输入重定向到脚本中的数据。

   只允许忽略键盘中断,trap命令截取其他中断信号

   exec命令是命令级的Linux载入器。用于执行新的命令以代替当前的shell进程,而不是生成一个新的进程。
   独特用途:
  <1>执行一个命令或程序来代替当前的进程
  <2>打开和关闭文件描述符

  exec command

  节省输入时间的方法:脚本文件或函数。
  函数定义格式:
  function_name()
  {
   函数体
  }
  
  使用函数名直接调用函数。

  采用bash命令的-x选项来调试Bash脚本。

25.TC shell文件
   运行TC shell文件的3种方法:
  <1>将脚本文件变为可执行,chmod u+x file_name
  <2>将/bin/tcsh命令后跟脚本文件名作为参数
  <3>将脚本强制在TC shell中运行:#! /bin/tcsh

  shell变量有2种类型:shell环境变量和 用户自定义变量

  可以使用3种方式为变量赋值:@(将数值赋值给局部变量) set(声明并局部变量) setenv(声明并初始化全局变量)
  set[var1=[str1] var2=[str2] ]
  @[var1=[str1] var2=[str2] ]
  setenv[var[str]]
  若命令行仅有一行$variable,将导致shell把变量的值作为一条shell命令来执行。
 
  命令替换:
  当一个命令被包含在''中时,shell将执行这个命令并用命令执行的结果替换这个命令。——命令替换
 
  可以使用unset unsetenv将变量从环境中删除。
  unset 变量列表
  unsetenv 变量列表
 
  创建用户自定义只读变量:set -r [anme[=value]]

  交互式脚本中从标准输入中读取值:
  set variable 'echo $<'  输入的第一个词赋值给变量
  set variable = "$< "    输入的第一行赋值给变量
  set variable ='head-1'  将输入的多个单词以数组形式存储起来。用变量名依次访问

  流程控制语句:
  <1>if then else endif
  <2>foreach语句  foreach variable(argument-list)
                     command
                  end
  <3>while  while (expression)
                     command
            end
  <4>break continue goto语句
  <5>switch语句:
     switch(test-String)
       case pattern:
            command
            breaksw
       ……
       default :
            command
       breaksw
     endsw

26.TC高级编程
   TC shell编程的四大特性:处理数据型数据、数组操作、here文件特性、中断处理
 
   Tc Shell内置了处理数值型数据的能力。无需显示将字符型数据转换为数值型数据。
   可以使用@命令对数值型数据声明,声明变量搜存储的是整型数据。@命令只能用于本地
   变量的声明。如果后边不加任何参数,则会列出shell中所有的变量名称和值。
 
   @[变量 操作符 表达式]

   数组首元素标记为1编号
   通过array[k]访问第k个元素的过程称为数组索引
  
   可以用set或@命令来声明字符串数组或整型数组
    set 数组名=(数组元素)
    @ 数组名=(数组元素)

    Tc Shell允许用户编写不能被终端中断的终止程序,中途终止或忽略Ctrl+C的命令onintr

    可以使用tcsh -x调试脚本。

27.文件系统备份
   Linux中用于存档文件用的应用程序(低级备份程序)为tar  cpio afio dump
   也允许在不同的存储媒体上执行完全备份和增量备份。称为高级备份程序的shell脚本。
   分别是amanda backup KBackup tbackup lbu tob

   tar命令配以c或r选项对一系列文件和目录进程存档(也称为打包)。
   c用于建立一个新档案文件 r用于在当前档案文件的尾部添加文件。
   x选项恢复或解压一个档案文件。
   tar命令可以将一个目录复制到另一个目录,cp -r但不会保存文件存取权限和修改时间
  
   公司常用tar命令发布软件。用户可以通过ftp命令下载。
  
28.Linux开发工具
   支持编译型语言和解释性语言。拥有许多用于程序生成以及分析的软件工程工具。
   翻译过程分为:编译 汇编 连接
 
   生成C语言源代码:
   任何编辑器都可以。vi pico emacs xemacs
   Linux提供了indent命令自动调整C代码的缩进风格。
   indent[选项][原文件列表]
   indent[选项][源文件][-o 输出文件]
 
         -bad:声明之后断行
         -bap:函数体后边断行
         -bl:按Pascal格式缩进代码
         -bls:把结构体声明后的大括号单独一行
         -st:把输出结果显示在标准输出

   用more second.c查看默认缩进效果

   Linux下最常用的C程序编辑器是gcc。符合最新的C语言标准。
   gcc [选项] 文件列表 调用C语言编译系统。运行它将完成处理、编译、汇编和连接4步
   并最终生成可执行代码。默认保存为a.out文件。

   模块的程序由make工具来实现编译成可执行代码,它依赖于makefile文件。该文件描述了
   个模块之间的依赖关系。
   make[选项][目标][宏定义]
       -d:显示回调信息
       -n:测试模式,并不是真的执行
       -s:安静模式 不输出任何提示信息

   make文件中一条依赖关系包括:目标文件、目标文件所依赖的文件、构建目标文件所要执行的命令

   Linux系统允许将多个目标文件归档(捆绑)为一个库文件。用ar命令实现
   ar 关键字 文件名 [文件列表]     

      d:从归档文件中删除一个目标文件
      q:向已有的归档文件添加目标文件
      r:创建归档文件或覆盖已有的归档文件。
      t:显示一个归档文件的内容
      s:强制建立归档符号表
      v:产生详细提示信息
      x:从归档文件释放指定目标文件并保存到当前目录
 
   归档文件名需以.a结尾。
   ranlib可以给归档文件添加索引。

   nm工具用于查看库文件或目标文件的符号表

   维护软件产品的费用约占2/3.

   想要知道每个程序花费多少时间运行:gprof工具(静态分析)
   gprof [选项][目标文件]
  
   动态分析工具:跟踪调试程序gdb,计算程序运行时间time

   ------------------------------------------------------
8、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。
EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现。SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的 Stateful Session Bean 的实体。Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method。换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。

17、abstract class和interface有什么区别?
1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。
2.在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。
3.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。
4.实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
6.抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。
7.接口中的方法默认都是 public,abstract 类型的。
 
19、forward 和redirect的区别
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。
 
20、EJB与JAVA BEAN的区别?Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。
Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。

31、EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
SessionBean:Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例。EntityBean:Entity Beans能存活相对较长的时间,并且状态是持续的。只要数据库中的数据存在,Entity beans就一直存活。而不是按照应用程序或者服务进程来说的。即使EJB容器崩溃了,Entity beans也是存活的。Entity Beans生命周期能够被容器或者 Beans自己管理。EJB通过以下技术管理实务:对象管理组织(OMG)的对象实务服务(OTS),Sun Microsystems的Transaction Service(JTS)、Java Transaction API(JTA),开发组(X/Open)的XA接口
 
32、应用服务器有那些?
BEA WebLogic Server,IBM WebSphere Application Server,Oracle9i Application Server,jBoss,Tomcat

36、说出数据连接池的工作机制是什么?
J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。

49、Java的接口和C++的虚类的相同和不同处。
由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是public static,所有方法默认情况下是public.一个类可以实现多个接口。

61、servlet的生命周期
web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现,根据请求的不同调用不同的do***()方法。结束服务,web容器调用servlet的destroy()方法。

62、如何现实servlet的单线程模式
<%@ page isThreadSafe="false"%>

63、页面间对象传递的方法
request,session,application,cookie等

65、四种会话跟踪技术
会话作用域ServletsJSP 页面描述
page否是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面
request是是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)
session是是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求
application是是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域

67、J2EE是技术还是平台还是框架?
J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。
J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术

68、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
tempStr = new String(str.getBytes("targetString"), "GBK");

69、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。
区别主要答两点:a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型
b.逻辑操作不会产生短路

70、XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
a: 两种形式 dtd schema,b: 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的),c:有DOM,SAX,STAX等 DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问 STAX:Streaming API for XML (StAX)

71、简述synchronized和java.util.concurrent.locks.Lock的异同 ?
主要相同点:Lock能完成synchronized所实现的所有功能
主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。

72、EJB的角色和三个对象
一个完整的基于EJB的分布式计算结构由六个角色组成,这六个角色可以由不同的开发商提供,每个角色所作的工作必须遵循Sun公司提供的EJB规范,以保证彼此之间的兼容性。这六个角色分别是EJB组件开发者(Enterprise Bean Provider) 、应用组合者(Application Assembler)、部署者(Deployer)、EJB 服务器提供者(EJB Server Provider)、EJB 容器提供者(EJB Container Provider)、系统管理员(System Administrator)
三个对象是Remote(Local)接口、Home(LocalHome)接口,Bean

73、EJB容器提供的服务
主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等服务。

74、EJB规范规定EJB中禁止的操作有哪些?
1.不能操作线程和线程API(线程API指非线程对象的方法如notify,wait等),2.不能操作awt,3.不能实现服务器功能,4.不能对静态属生存取,5.不能使用IO操作直接存取文件系统,6.不能加载本地库.,7.不能将this作为变量和返回,8.不能循环调用。

75、remote接口和home接口主要作用
remote接口定义了业务方法,用于EJB客户端调用业务方法。
home接口是EJB工厂用于创建和移除查找EJB实例

76、bean 实例的生命周期
对于Stateless Session Bean、Entity Bean、Message Driven Bean一般存在缓冲池管理,而对于Entity Bean和Statefull Session Bean存在Cache管理,通常包含创建实例,设置上下文、创建EJB Object(create)、业务方法调用、remove等过程,对于存在缓冲池管理的Bean,在create之后实例并不从内存清除,而是采用缓冲池调度机制不断重用实例,而对于存在Cache管理的Bean则通过激活和去激活机制保持Bean的状态并限制内存中实例数量。

77、EJB的激活机制
以Stateful Session Bean 为例:其Cache大小决定了内存中可以同时存在的Bean实例的数量,根据MRU或NRU算法,实例在激活和去激活状态之间迁移,激活机制是当客户端调用某个EJB实例业务方法时,如果对应EJB Object发现自己没有绑定对应的Bean实例则从其去激活Bean存储中(通过序列化机制存储实例)回复(激活)此实例。状态变迁前会调用对应的ejbActive和ejbPassivate方法。

79、客服端调用EJB对象的几个基本步骤
设置JNDI服务工厂以及JNDI服务地址系统属性,查找Home接口,从Home接口调用Create方法创建Remote接口,通过Remote接口调用其业务方法。

80、如何给weblogic指定大小的内存?
在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为32M,最大200M

81、如何设定的weblogic的热启动模式(开发模式)与产品发布模式?
可以在管理控制台中修改对应服务器的启动模式为开发或产品模式之一。或者修改服务的启动文件或者commenv文件,增加set PRODUCTION_MODE=true。

82、如何启动时不需输入用户名与密码?
修改服务启动文件,增加 WLS_USER和WLS_PW项。也可以在boot.properties文件中增加加密过的用户名和密码.

83、在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中?
保存在此Domain的config.xml文件中,它是服务器的核心配置文件。

84、说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的helloWorld.jsp放入何目录下,然的在浏览器上就可打入http://主机:端口号//helloword.jsp就可以看到运行结果了? 又比如这其中用到了一个自己写的javaBean该如何办?
Domain目录/服务器目录/applications,将应用目录放在此目录下将可以作为应用访问,如果是Web应用,应用目录需要满足Web应用目录要求,jsp文件可以直接放在应用目录中,Javabean需要放在应用目录的WEB-INF目录的classes目录中,设置服务器的缺省应用将可以实现在浏览器上无需输入应用名。

85、在weblogic中发布ejb需涉及到哪些配置文件
不同类型的EJB涉及的配置文件不同,都涉及到的配置文件包括ejb-jar.xml,weblogic-ejb-jar.xmlCMP实体Bean一般还需要weblogic-cmp-rdbms-jar.xml

86、如何在weblogic中进行ssl配置与客户端的认证配置或说说j2ee(标准)进行ssl的配置
缺省安装中使用DemoIdentity.jks和DemoTrust.jks KeyStore实现SSL,需要配置服务器使用Enable SSL,配置其端口,在产品模式下需要从CA获取私有密钥和数字证书,创建identity和trust keystore,装载获得的密钥和数字证书。可以配置此SSL连接是单向还是双向的。

87、如何查看在weblogic中已经发布的EJB?
可以使用管理控制台,在它的Deployment中可以查看所有已发布的EJB

90、说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
persistent方式的MDB可以保证消息传递的可靠性,也就是如果EJB容器出现问题而JMS服务器依然会将消息在此MDB可用的时候发送过来,而non-persistent方式的消息将被丢弃。

106、是否可以从一个static方法内部发出对非static方法的调用?
不可以,如果其中包含对象的method();不能保证对象初始化.

107、写clone()方法时,通常都有一行代码,是什么?lone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。

110、J2EE是什么?
J2EE是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。

113、开发中都用到了那些设计模式?用在什么场合?
每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。主要用到了MVC的设计模式。用来开发JSP/Servlet或者J2EE的相关应用。简单工厂模式等。

114、jsp有哪些动作?作用分别是什么?
JSP共有以下6种基本动作 jsp:include:在页面被请求的时候引入一个文件。 jsp:useBean:寻找或者实例化一个JavaBean。 jsp:setProperty:设置JavaBean的属性。 jsp:getProperty:输出某个JavaBean的属性。 jsp:forward:把请求转到一个新的页面。 jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记。

115、Anonymous Inner Class (匿名内部类) 可以继承其他类或完成其他接口,在swing编程中常用此方式。

116、应用服务器与WEB SERVER的区别?
应用服务器:Weblogic、Tomcat、Jboss;WEB SERVER:IIS、 Apache

117、BS与CS的联系与区别。

C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或 SQL Server。客户端需要安装专用的客户端软件。B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、Informix或 SQL Server等数据库。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。浏览器通过Web Server 同数据库进行数据交互。
C/S 与 B/S 区别:
1.硬件环境不同:
  C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.
  B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行
2.对安全要求不同
  C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息.
  B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户。
3.对程序架构不同
  C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑.
  B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/S结构的程序架构是发展的趋势, 从MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟.
4.软件重用不同
  C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好.
  B/S的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子
5.系统维护不同
  C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统
  B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级.
6.处理问题不同
  C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统
  B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小.
7.用户接口不同
  C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高
  B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本.
8.信息流不同
  C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低
  B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更像交易中心。

118、LINUX下线程,GDI类的解释。
LINUX实现的就是基于核心轻量级进程的"一对一"线程模型,一个线程实体对应一个核心轻量级进程,而线程之间的管理在核外函数库中实现。
GDI类为图像设备编程接口类库。

STRUTS的应用(如STRUTS架构)
Struts是采用Java Servlet/JavaServer Pages技术,开发Web应用程序的开放源码的framework。 采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。 Struts有如下的主要功能: 一.包含一个controller servlet,能将用户的请求发送到相应的Action对象。 二.JSP自由tag库,并且在controller servlet中提供关联支持,帮助开发员创建交互式表单应用。 三.提供了一系列实用对象:XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。

Jdo是什么?
JDO是Java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。
                

你可能感兴趣的:(linux,学习笔记)