sqlplus常用命令使用 --转

  show和set命令是两条用于维护SQL*Plus系统变量的命令

     SQL> show all --查看所有68个系统变量值

     SQL> show user --显示当前连接用户

     SQL> show error                --显示错误

     SQL> set heading off --禁止输出列标题,默认值为ON

     SQL> set feedback off --禁止显示最后一行的计数反馈信息,默认值为"对6个或更多的记录,回送ON"

     SQL> set timing on --默认为OFF,设置查询耗时,可用来估计SQL语句的执行时间,测试性能

     SQL> set sqlprompt "SQL> " --设置默认提示符,默认值就是"SQL> "

     SQL> set linesize 1000 --设置屏幕显示行宽,默认100

     SQL> set autocommit ON --设置是否自动提交,默认为OFF

     SQL> set pause on --默认为OFF,设置暂停,会使屏幕显示停止,等待按下ENTER键,再显示下一页

     SQL> set arraysize 1 --默认为15

     SQL> set long 1000 --默认为80

     说明:
     long值默认为80,设置1000是为了显示更多的内容,因为很多数据字典视图中用到了long数据类型,如:

SQL> desc user_views
列名                          可空值否   类型
------------------------------- -------- ----
VIEW_NAME                       NOT NULL VARCHAR2(30)
TEXT_LENGTH                              NUMBER
TEXT                                     LONG

 

命令列表:
假设当前执行命令为:select * from tab;

(a)ppend     添加文本到缓冲区当前行尾    a  order by tname 结果:select * from tab order by tname;
                                      (注:a后面跟2个空格)
(c)hange/old/new 在当前行用新的文本替换旧的文本 c/*/tname     结果:select tname from tab;
(c)hange/text  从当前行删除文本        c/tab       结果:select tname from ;
del       删除当前行
del n      删除第n行
(i)nput 文本   在当前行之后添加一行
(l)ist      显示缓冲区中所有行
(l)ist n     显示缓冲区中第 n 行
(l)ist m n    显示缓冲区中 m 到 n 行
run       执行当前缓冲区的命令
/        执行当前缓冲区的命令
r        执行当前缓冲区的命令
@文件名     运行调入内存的sql文件,如:

SQL> edit s<回车>
如果当前目录下不存在s.sql文件,则系统自动生成s.sql文件,
在其中输入“select * from tab;”,存盘退出。

SQL> @s<回车>
系统会自动查询当前用户下的所有表、视图、同义词。

@@文件名     在.sql文件中调用令一个.sql文件时使用

save 文件名   将缓冲区的命令以文件方式存盘,缺省文件扩展名为.sql
get 文件名    调入存盘的sql文件
start 文件名   运行调入内存的sql文件

spool 文件名   把这之后的各种操作及执行结果“假脱机”即存盘到磁盘文件上,默认文件扩展名为.lst
spool      显示当前的“假脱机”状态
spool off    停止输出

例:
SQL> spool a
SQL> spool
正假脱机到 A.LST
SQL> spool off
SQL> spool
当前无假脱机


exit       退出SQL*PLUS
desc 表名    显示表的结构
show user    显示当前连接用户
show error    显示错误
show all     显示所有68个系统变量值
edit       打开默认编辑器,Windows系统中默认是notepad.exe,把缓冲区中最后一条SQL语句调入afiedt.buf文件中进行编辑
edit 文件名   把当前目录中指定的.sql文件调入编辑器进行编辑

clear screen   清空当前屏幕显示

 -22-----------------------------------------------------------------------------------------------

第三章附:上机练习

内容:1.创建一数据库,启动实例并装配它。
   2.通过访问数据字典了解数据库的结构及实例结构。

步骤:
  一.创建数据库
用Netterm或Ptelnet,以Oracle8帐号登录uibm主机(IP:210.34.0.23)。

进入 /oracle/目录,ls查看其结构。
           -------- clt1  ---- oradata  -- ora
           |              |--- testdata -- test
           |
      |------- ctl2  ----- oradata  -- ora
      |              |---  testdata -- test
      |
      |------- ctl3    …  … 
以上目录为各数据库中数据文件存放目录。
效仿以上的目录结构,在ctl1、ctl2、clt3目录下再建一个tstdata目录,并在各tstdata
目录下建立一个tst目录

cd /oracle/app/oracle/admin
此目录为Oracle各数据库的管理目录。
cd test
进入test目录了解Oracle目录组织结构(OFA结构),结合ls命令。
       ora  ------- bdump  后台存储文件目录(BACKGROUP_DUMP_DEST的值)
       |------ udump  用户转储文件目录(USER_DUMP_DEST的值)
       |------ cdump  核心文件
       |------ pfile  init.ora和任何其它数据库初始化参数
       |------ create 用于创建初始化数据和数据库对象的脚本
       |------ SQL    数据库管理SQL文件
      
进入create目录阅读crdbtest.sql及crdb2test.sql这两个数据库ORA的创建脚本,进而知
道创建数据库的过程命令。

 效防test下的目录结构,创建一名为tst的目录,拷贝test/pfile及test/create下的所有
文件到对应目录。
          Cd /oracle/app/oracle/admin
          Mkdir tst
          Cd tst
          Mkdir bdump
          Mkdir udump
          Mkdir cdump
          Mkdir pfile
          Mkdir create
          Mkdir sql
          Cp ../test/pfile/* pfile
          Cp ../test/create/* create
          进入tst/pfile目录,启动vi编辑器编辑configora.ora文件:
       将所有与原来test目录有关的目录全以tst替换test.
         如:原来的control_files参数中
                把/oracle/ctl1/oradata/test/control01.ctl,改为
                  /oracle/ctl1/oradata/tst/control01.ctl,
            需要改的地方还有:core_dump_dest
                              user_dump_dest 
                              db_name 参数行
                  
        把文件configtest.ora改名为configtst.ora
              inittest.ora   改名为inittst.ora
              inittest_0.ora 改名为inittst_0.ora
        编辑inittst.ora及inittst_0.ora文件,把它们中的前面的ifile指
      定文件原来为:
         ifile = /oracle/app/oracle/admin/test/pfile/configtest.ora   
       改为:
         ifile  = /oracle/app/oracle/admin/tst/pfile/configtst.ora   


进入tst/create目录
把crdbtest.sql及crdb2test.sql改名为crdbtst.sql及crdb2tst.sql

编辑crdbtst.sql文件,修改以下行(将test改为tst):
  spool /oracle/app/oracle/admin/test/create/crdbtest.lst
         startup nomount pfile= …
         create database "test" 改为create database “tst”
       将create database语句的用的character set改为ZHS16CGB231280,
       原先为US7ASCII。ZHS16CGB231280为Oracle中支持中文国标的字符集名。
      
        编辑crdb2tst.sql文件,将其做类似以上的修改(将创建命令中所用到的有关原来
test目录改为tst目录,并可以适当调节你所要建立数据库的相关数据文件大小。

修改ORACLE_SID环境变量值为新的SID名,此SID告诉oracle欲启动的实例名。
     ORACLE_SID=tst;exprot ORACLE_SID

  进入tst/create目录,启动服务器管理器(svrmgrl)执行crdbtst.sql脚本:
cd /oracle/app/oracle/admin/tst/create
     svrmgrl  @crdbtst.sql
    执行后在svrmgrl状态下再执行crdb2tst.sql脚本。
    Svrmgrl> start crdb2tst.sql
    创建过程需要数分钟,请耐心等待 … 

        等上以脚本执行完毕,新的数据库已建立。此时,可以退出svrmgrl。

        拷贝tst/pfile/inittst.ora文件至$ORACLE_HOME/dbs目录,省得每次启动svrmg
rl还要指定init.ora文件位置。在启动svrmgrl时,若没有特别指定init.ora的文件,ORA
CLE将在$ORACLE_HOME/dbs找init.ora作为其启动的初始化参数文件,SID为ORACLE_S
ID环境变量值。

再次启动svrmgrl(注意:ORACLE_SID值必须已改为新的SID值。)
  svrmgrl
svrmgrl>connect internal;
svrmgrl>startup            (启动数据库)
svrmgrl>start $ORACLE_HOME\dbs\catproc.sql 
  
catproc.sql脚本安装Procedural Option所必需的脚本或PL/SQL对象及其支持的数据库结
构。

至此,我们已成功创建了一个新的数据库tst,并且我们也用实例tst来装配启动它。
为了能够让用户从远程访问此数据库,我们还必须配置Oracle的TNS(Transparent Netwo
rk Service),配置这一服务只要改变一下其配置文件listener.ora即可,最简单的办法
是拷贝一个副本备份,然后直接编辑它,把原来的实例名更换为新的实例名即可。更名后
,重新启动tnslistener进程即生效。
$lsnrctl stop     (在操作系统状态下执行)
$lsnrctl start


更改SYS及SYSTEM用户的默让密码。
  grant connect to sys(或system) identified by
 或 alter user sys identified by  
    以上命令可以在服务器管理器状态下执行,也可以在Sqlplus下执行。
 


二、考察数据库及实例结构
 启动sqlplus用SYS或SYSTEM用户连接。
或启动svrmgrl,connect internal

1. 查询实例启动时间。
     select to_char(a.value,’J’)+b.value/86400,
            ’HH24:MI:SS DD-MON-RR’) start_time 
            from v$instance a,v$instance b
            where a.key=’STARTUP TIME –JULIAN’ AND
                   b.key=’STARTUP TIME –SECONDS’;
         
观看实例存储器分配信息
SELECT name,bytes from v$sgastat
      Where name in (‘free memory’,’fixed_sga’,’db_block_buffers’,
                     ‘log_buffer’,’dictionary cache’,’library cache’,
                     ‘sql area’);

查看进程实例进程
select spid,name from v$process, v$bgprocess where addr =paddr; 

查看数据库用户
select username from dba_users;

查看活动的控制文件
select * from v$controlfile

查看回滚段信息
select a.segment_name,b.bytes,b.extents,a.tablespace_name, 
       c.shrinks,c.extends,c.hwmsize
  from dba_rollback_segs a,dba_segments b,v$rollstat c
  where a.segment_id=c.usn and a.segment_name=b.segment_name;
       
查看重做日志信息
select   member,bytes,members,a.status 
   from  v$log, V$logfile b
   where a.group# = b.group#
   order by member;

查看数据库链接
select spid,mame from v$sysstatprocess,v$sysstatbgprocess
     where paddr(+)=addr;

查看多线程服务器进程
   select * from v$dispatcher;
   select * from v$shared_server;

 

 

第四章:SQL
                  (本次课在机房,结合上机讲授)
本章介绍SQL的基础知识。理解了SQL就理解了关系数据库。Oracle与数据库的所有交互都
使用SQL(Structured Query Language)。SQL*Plus是基于SQL但又具有Oracle特定功能的一
种工具,它可用来生成报表、控制屏幕显示和打印输出格式。

术语
下面介绍本章使用的一引技术术语:
■ DDL(Data Definition Language)   数据定义语言是SQL中定义数据库中数据的结构的
语言。定义数据时,将在Oracle的数据字典中生成数据项。常见的DDL关键字是create、r
evoke、grant和alter
DML(Data Manipulation Language) 数据操纵语言为SQL结构,用来操纵数据库中数据(而
非定义数据,定义数据由DDL完成)。常见的DML关键字为select、insert、update和dele
te。
在Oracle中,我们使用commit(提交)语句表示已经将修改后的数据保存到数据库。每次用
户保存结果时,Oracle将引用用户的提交操作。
约束(constraint) 是一种保证一个Oracle表的数据间关系或两不同表中数据间的一致性的
机制。
Oracle8数据库中一个对象(object)是一个有意义的事物,可在其内部存放信息。我们常谈
的对象类型——表和视图是两种最常见的。
利用如SQL*Plus这样的程序将信息从Oracle数据库中提取出来的操作称为查询(query)。

■ 回滚(Rollback)为当某个对话更改了数据库中的数据后,由于某种原因不想提交些更
改时Oracle所采取的操作。这是一个把信息恢复到用户update前状态的操作。

   SQL语句有两大类:DDL和DML。下面我们进一步来看看二者的差异:

  二.DDL
DDL数据定义语言是一组SQL命令,用于创建和定义数据库对象,并且将其保存在数据字典
中。

数据定义语言使用户能完成下列任务:
创建(create)数据库对象
删除(drop)数据库对象
更改(alter)数据库对象
为数据库对象授权(grant)
回收已授给数据库对象的权限(revoke)

当发布一条DDL SQL语句时,在每一条DDL语句执行前后,Oracle都将提交当前的事务,理
解这一上点很重要。因此如果用户插入(insert)记录到数据库中并且发布了一条DDL语句
,如create table,此时来自insert命令的数据将提交到数据库。
 
属于DDL的语句是自动提交的,这意味着当Oracle8通知用户比如“Revoke succeeded”,
此时命令已完成不能回滚了。

  DDL语句部分列表:
  alter procedure           重编译存贮过程
  alter table               增加表列、修改表列、更改存贮分配
  analyze                 收集数据库对象的性能统计值并送入代价的优化器
  alter table add constraint   在已有的表上增加约束
  create table              创建表
  create index              创建索引
  drop index               删除索引
  drop table               删除表
  grant                   将权限或角色授予用户或其它角色
  truncate                 删除表中所有行
  revoke                  从用户或数据库角色回收权限
  三.DML
DML(数据操纵语言)允许用户对数据库中的数据进行insert、update、delete和select等操
作。正如名字所示,DML处理数据库中的数据内容。最常见的DML语句是insert、update、
delete和select。

Insert
Delete
Update
Select
Commit work          把当前事务所作的更改永久化(写入磁盘)
Rollback              作废上次提交以来的所有更改
    
     在学习了两种主要类型的SQL语句后,下面作进一步的介绍。首先登录进SQL*Plus,
然后试一些最常见的DDL和DML语句。
    
 
  四.SQL*Plus入门
学习SQL最简单的办法就是使用SQL*Plus。因此先登录到SQL*Plus。Oracle安装后有一用户
名scott,口令为tiger。我们可以用这个帐号登录试用。
有两种方式进入SQL*Plus:
1.使用客户端的的SQL* Plus 8.0。
  此程序项在启动菜单栏的Oracle For Windows95组中。启动它,在connect对话框中按提
示输入用户名、口令及主机字符串。如果单机已装了Personal Oracle的,主机字符串可以
不填,否则填上SQL * Net已配置的service name,所连接的数据库实例在service里已定
义,这些定义可以使用Oracle Net8 Easy Config进行配置。
其结果保存在\ORAWIN95\NET80\ADMIN\TNSNAMES.ORA文件中。
   
使用Unix上的SQL*Plus
登录到UNIX主机上,
打入命令 sqlplus scott/tiger   或sqlplus然后再按提示输入用户名及口令

SQL*Plus: Release 8.0.4.0.0 - Production on Sat Jul 3 0:31:55 1999

(c) Copyright 1997 Oracle Corporation.  All rights reserved.

Connected to:
Oracle8 Enterprise Edition Release 8.0.4.0.0 - Production
    PL/SQL Release 8.0.4.0.0 - Production
     SQL>
  
  在进入SQL*Plus后,会看到SQL*Plus提示符SQL>
这时您就可以键入想试验的SQL语句。

  下面我们讲一下与SQL缓冲器一起使用的SQL*Plus命令,这些可以帮助我们高效地输入命
令。
命令   缩写 动作
APPEND text A text 在行尾增加text
CHANGE  old/new C old/new 在一行中将old文本改为new文本
CLEAR BUFFER CL BUFF  删除所有行
DEL 删除缓冲器中所有行
INPUT I  将一行或多行增加到缓冲器
INPUT text I text 增加一由text组成的行
LIST L 列出SQL*Plus缓冲器内容
LIST n Ln或n 列出行n
LIST * L * 列出当前行
LIST m n  L m n 列出行m至行n
LIST LAST  L LAST 列出缓冲器中的最后一行
RUN 运行缓冲器中的命令
 SQL*Plus中的命令行以分号(;)结束。

 下面我们给出一些SQL语句,大家可以在自己的机器上试验一下:
select table_name from user_tables
  此命令用数据字典user_tables中列出用登录用户所拥有的表。
若用scott登录,列出的结果如下:
TABLE_NAME
------------------------------
BONUS
DEPT
DUMMY
EMP
HELP
   SALGRADE

   这些表是在数据库安装时建立的让用户试验学习的表,查看这些表的结构可以用descr
ibe命令,例如:
   SQL>describe emp             
   查看emp表的结构,结果如下:
 Name                            Null?    Type
 ------------------------------- -------- ----
 EMPNO                           NOT NULL NUMBER(4)
 ENAME                                    VARCHAR2(10)
 JOB                                      VARCHAR2(9)
 MGR                                      NUMBER(4)
 HIREDATE                                 DATE
 SAL                                      NUMBER(7,2)
 COMM                                     NUMBER(7,2)
    DEPTNO                                   NUMBER(2)
   SQL>select empno,ename from emp
   查看表内容。

  2.create语句
   在任何数据库总是以DDL语句开始,因为创建数据库对象的工作是由DDL语句来完成的。
首先,我们将创建四个表:Customer、State、X和Y:
SQL>create table customer (
last_name  varchar2 (30) not null,
state_cd   varchar(2),
sales      number)
tablespace  users
storage (initial 25k next 25k minextents 1);
Table created.
SQL>create table state (
   2  state_cd     varchar(2) not null,
   3  state_name   varchar2(30);
Table created.
SQL>create table x(
   2  col      varchar2(30);
Table created.
SQL>create table y(
col varchar2(30));
Table created.

▲Null与Not Null
    在创建customer表时,last_name表列后跟一个限定符“not null”,这表示数据库不
接受没有表列数据行到customer表中。换句话说,not null表列是强制性字段,在表cust
omer和state中,这意味着要在表中插入一行,last_name和state_cd字段必须含有值。


什么是空值(null value)
空(null)是不包括数据的表列。可以将null理解为长度为0的字符串。很多时候若不知道某
表列的类型可以给它赋一空值。但人们最容易犯的一个错误就是将空值加载到一个数值型
表列中,而问题在于“1+null=null”!因此,如果用户偶然将空值加载至数值域中,那么
产生的统计报表肯定不正确。

3.Insert
   现在我们已经建立了一些表,让我们用不用DML语句,在我们建立的表上插入一些数据
,这些数据也将作为我们试验命令的数据。
SQL>insert into customer values (‘Teplow’,’MA’,23445.67);
SQL>insert into customer values (‘Abbev’,’CA’,6969.96);

每次成功地完成一条insert语句后,均返回建立信息,
1 row created.
该信息通知用户建立的行数。

SQL>insert into customer values (‘Porter’,’CA’,6989.99);
SQL>insert into customer values (‘Martin’,’CA’,2345.45);
SQL>insert into customer values (‘Laursen’,’CA’,34.34);
SQL>insert into customer values (‘Bambi’,’CA’,1234.55);
SQL>insert into customer values (‘McGraw’,’NJ’,123.45);

现在我们用稍加变化的insert命令的数据插入state表。我们将指定数据要插入的表列名。
这在处理大表时很有用,因为用户可能没有表中每一列的数据。例如:在一个预算系统中
,只有在月末才有实际的花销数。

SQL>insert into state (state_name,state_cd)
values (‘Massachusetts’,’MA’);
SQL>insert into state (state_name,state_cd)
values (‘California’,’CA’);
  
  最后我们再插入一些数据到表X和表Y中。
SQL>insert into x values (‘1’);
SQL>insert into x values (‘2’);
SQL>insert into x values (‘3’);
SQL>insert into y values (‘3’);
SQL>insert into y values (‘4’);
SQL>insert into y values (‘5’);

4.Select 
select命令用于从Oracle数据库中检索数据,select是用户最常用的SQL语句,select
命令由四个基本部分构成:
1).select后跟用户要检索的信息(表或视图中的列名),这是select命令不可少的部分,
可用*号代表全部列。
2).from后跟检索对象(如存放数据的一个或多个表或视图的名称),from部分也是必不可少
的。
3).where后跟检索条件,可选的。
4).order by后跟分类准则,可选的。

现在我们来查看我们刚才插入的数据:
SQL>select * from customer;
SQL>select state_name from state;
SQL>select * from x;
SQL>select * from y;

   下面我们来看一下条件及范围检索:
select last_name,state_cd,sales from customer where state_cd=’MA’;
查看state_cd值为MA的所有客户。

select * from customer where state_cd=’CA’ and sales>6000
  select * from customer where state_cd=’CA’ or sales>6000
  select * from customer where state_cd!=’MA’;

带检索表
select * from customer where state_cd in (‘NJ’,’CA’);

带匹配条件
Select * from customer where last_name like ‘M%’;
Select * from customer where last_name like ‘%tin%;

  总结:
     =
 !=   不等于
 ^=   不等于
^=   不等于
<>   不等于
     <
     >
     <=
     >=
in  (    )                等于括号内任一成员
not in  (   )             不等于括号内任一成员
between A and B           大于等于A与小于等于B
not between A and B       不大于等于A与小于等于B
like ‘%tin%’               包括给定子串(即‘tin’)


Order by:
   Select * from customer order by last_name desc;
   Select * from customer order by last_name;
   在order by子句中未指定升序或降序时,Oracle按升序排序。

5.Update、Delete和Alter

Update修改表中的数据
  SQL>Update customer set sales=23890.66 where state_cd=’MA’;

  若没有用where指定修改的条件行,将修改表中全部行。

Delete删除行数据
  Delete from customer,将删除customer表的所有记录;delete from customer where
 state_cd=’CA’,将删除state_cd为CA的客户记录。

Alter table修改表结构
  此语句有如Foxpro中的Modify stru语句。在创建表后,用户可能想要增加表列。这时就
要用到alter table命令了。

  Alter table customer add (sale_date date);
  将成功地把表列sale_date加到表customer中。

  Alter table x modify(col date),改变一个已存在表列的数据类型。

6.连接两个表
现实中,用户需要的大量数据往往存放在多个表中。很多情况下需要处理多个表。例如,
customer表中只存放州代码(state_code),然而用户还想知道州名,这时需要将表custom
er与表state连接。这就要用到表的连接。通过定义,Oracle一类的关系数据库允许用户基
于公共域连接两个或更多表。这些公共域通常称为键域(key field)。
有两种类型的键:主键(primary)和外部键(foreign)。主键使表中的数据行保持唯一。
在表state中,state_cd就是主键。表customer中也包含有state_cd,此时的state_cd就是
外部键。一个表的外部键用于从其他(foreign)表中获取信息。
SQL>select * right.col,left.col from x right,y left 
where right.col=left.col;


五.内部函数
数值型函数
 函  数    返回值    样  例 显示
Abs(n) N的绝对值 Select abs(-321) from dual; 321
Ceil(n) 大于等于数值n的最大整数 Select ceil(10.6) from dual; 11
Floor(n) 小于等于数值n的最大整数 Select floor(10.6) from dual; 10
Mod(m,n) M除以n的余数,若n=0返回n Select mod(7,5) from dual; 2
Power(m,n) M的n次方 Select power(3,2) from dual; 9
Round(n,m) 将n四舍五入,保留小数点后m位 Select round(1234.5678,2) from dual 12
34.57
Sign(n) N=0,返回0;n>0,返回1;n<0,返回-1 Select sign(12) from dual; 1
Sqrt(n) N的平方根 Select sqrt(25) from dual; 5
  Dual表拥有者为SYS,在句法正确,而数据库中没有其他表可用于该语句时,可使用dua
l表。
   2.字符串函数
 函   数   返回值 样例 显示
initcap(char)   把每个字符串的第一个字符换成大写 Select initcap(‘mr.telpow’)
 from dual; Mr.Telplow
Lower(char) 整个字符串换成小写 Select lower(‘Mr.Frank Townson’) from dual; m
r.frank townson
Replace(char,str1,str2) 字符串中所有str1换成str2 Select replace(‘Scott’,  ’
S’,’Boy’) from dual; Boycott
Soundex(char) 字符串的语音表示,查找发音相似拼写不同的字符串 Select last_name
from employee where soundex (last_name) = soundex(‘SMYTHE’); SMITH
Substr(char,m,n) 取出从m字符开始的n个字符的子串 Select substr(‘ABCDEF’,2,1)
from dual; B
Length(char) 求字符串的长度 Select length(‘Anderson’) From dual; 8
 
  ||  并置运算符。
  Select ‘Dear’||’John’||’:’ from customer 
  将返回 ‘DearJohn:’

   3.日期型函数
  函数 返回值 样例 显示
Sysdate 当前日期和时间 Select sysdate from dual;
Last_day 本月最后一天 Select last_day(sysdate) From dual
Add_month(d,n) 当前日期d后推n个月 Select add_months(sysdate,2) from dual;
Months_between (f,s) 日期f和s间相差月数 Select months_between(sysdate,’12-MAR
-99’) from dual;
Next_day(d,day) D后第一周指定day的日期 Select next_day(sysdate,’Monday’) fro
m dual;
Oracle缺省的日期格式为DD-MON-YY。为保证进入21世纪不出问题,请尽可能用四位数字的
年份。Oracle提供了一种特殊的世纪日期格式标记为DD-MON-RR。

常用日期格式
格式 返回值 样例
Y、YY或YYY 年的最后一位,两位或三位 Select to_char(sysdate,’YYY’) from dual;

SYEAR或YEAR 年,SYEAR公元前的年前加一负号 Select to_char(sysdate,’SYEAR’) fr
om dual;
Q 季度,1到3月为第一季度 Select to_char(sysdate,’Q’) from dual;
MM 月份数
Month 用9个字符长度表示月分(英文)
WW 当年第几周
W 本月第几周
D 周内第几天
DD 当月第几天
DY 周内第几天缩写(如:SUN)
HH 12进制小时数
HH24 24进制小时数
MI 分钟数
SS 秒数

类型转换
   to_char  将任意类型的数据转换成字符串
   to_number
   to_date


六.格式化输出
在SQL*Plus中,有许多参数可以控制SQL*Plus的输出显示格式,利用SQL*Plus命令show a
ll用户能知道显示格式的当前设置。
SQL>show all;
appinfo is ON and set to "SQL*Plus"
arraysize 15
autocommit OFF
autoprint OFF
autotrace OFF
shiftinout INVISIBLE
blockterminator "." (hex 2e)
btitle OFF and is the 1st few characters of the next SELECT statement
cmdsep OFF
colsep " "
compatibility version NATIVE
concat "." (hex 2e)
copycommit 0
COPYTYPECHECK is ON
define "&" (hex 26)
echo OFF
editfile "afiedt.buf"
   embedded OFF
    …  ...

1).行和页的大小
   set linesize
   set pagesize
 例:
  SQL>set linesize 80;
  SQL>set pagesize 25;

2) 页头标、页脚标
   ttitle  <br>   btitle  <Foot title string> </p> <p> 例:  (connect as scott) <br>  SQL>ttitle ‘Database Technoloies| Customer Report’; <br>  SQL>select empno,ename from emp; <br>  SQL>btitle ‘-----------Sample.sql------------‘; <br>  SQL>select empno,ename from emp; <br>  <br>   |   表示换行。 </p> <p><br>3).SQL*Plus结果到文件 <br>  spool  <目标文件> <br>  如:spool  c:\temp\out.list <br>  这个输出将放在spool命令指定的文件中。为停止假脱机(spooling),可用命令spool o<br>ff或spool out。后者关闭输出文件并打印输出。 </p> <p>4).格式化输出列表 <br>column </p> <p>大多数情况下,用户需要格式化实例的表列数据。Column命令可完成这项工作。下面我们<br>先执行两条格式化命令,然后再查询customer表。 <br>   SQL>column last_name format a8 wrap heading ‘Last |Name’; <br>   SQL>column state_cd format a8 heading ‘State | Code’ ; <br>   <br>                   8  表示显示宽度, <br>                a  表示每个位置只能是字符 <br>                wrap 说明若last_name长度大于8个字符,多余的字符显示下一行的对应<br>位置。 <br>                Heading 部分告诉SQL*plus,last_name的列标。 <br>   现在我们查询一下customer表来看不下输出效果: <br>SQL>select * from customer ; <br>Sun Jul 04                                                      page    1 <br>                             Database Technologies <br>                                 Customer Report </p> <p>Last     State <br>Name     Code      SALES <br>-------- -- ---------- <br>Teplow   MA   23445.67 <br>Abbev    CA    6969.96 <br>Porter   CA    6989.99 <br>Martin   CA    2345.45 <br>Laursen  CA      34.34 <br>Bambi    CA    1234.55 <br>McGraw   NJ     123.45 </p> <p>               -------------------sample.sql--------------------- </p> <p> </p> <p>本章小结: <br>本章简要地介绍了SQL及其一些常用的命令,及SQL*Plus的应用。有关SQL的更详细的使用<br>说明可以参阅本第4章至第8章,课本在从建表到查询等操作都有较为详细的介绍,虽然书<br>中的章节较长,但其内容简单易懂,由于课时所限无法在此逐一介绍。建议大家可以在自<br>己的PC上安装个Personal Oracle 8,按课本的例子,进行学习试验。 </p> <p><br>第五章.PL/SQL <br>     前面我们所使用的SQL语言,它不具备过程能力,但Oracle通过PL/SQL语言对SQL进行<br>了过程语言功能的扩展。PL/SQL是一种比较复杂的的程序设计语言,用于从不同环境中访<br>问Oracle数据库,。 <br>PL/SQL是Procedural Language/SQL(过程性语言的缩写)。正如其名所表达的,PL/SQL通<br>过增加了用在其他过程性语言中的结构(construct)来对SQL进行了扩展,例如: <br>变量和类型(包括预定义的和用户定义的) <br>控制结构,例如IF-THEN-ELSE语句和循环。 <br>过程和函数 <br>对象类型和方法 <br>    过程性结构与Oracle SQL无缝地集成在一起,这样便产生了一种结构化的强有力的语<br>言。在使用Oracle的存储过程、数据库触发器、包和函数都要用PL/SQL编写代码。因此,<br>如果不了解PL/SQL就不能深入掌握Oracle。 <br>    PL/SQL具有高度的可移植性,在所有Oracle平台上都是标准化的。因为其数据类型基<br>于数据库服务器,所以语言完全与机器无关。你无需针对UNIX、Windows、Netware等等去<br>学习各种PL/SQL。PL/SQL程序可以在任何Oracle Server上编译和运行而无需进行任何修改<br>。 </p> <p><br>一.PL/SQL基础     <br> 下面我们通过实例程序来学习PL/SQL: <br>首先我们可以运行一下hello.sql这一简单的程序,此程序输出”Hello,world!”。 <br>Hello.sql <br>SET SERVEROUTPUT ON <br>BEGIN <br>  DBMS_OUTPUT.enable; <br>  DBMS_OUTPUT.put_line(‘Hello, world!’); <br>END; <br>/ <br>   启动SQL*plus并以system帐号连接Oracle. <br> SQL>start c:\plssql\hello.sql  <br>   用以上命令运行些程序。 <br>   第1行让SQL*Plus写出服务器返回给它的内容。 <br>   第2行和第5 行提供当前块的作用范围。 <br>   第3行打开输出机制。 <br>   第4行打印簇“Hello, world!”。 <br>   第6行执行这个无名PL/SQL块。 <br>服务器响应如下: <br>Hello, World! <br>PL/SQL过程已成功完成. <br>SQL> <br>    在PL/SQL中字符串用单引号围起来,PL/SQL对文字大小写唯一敏感的地方是在字符串<br>是,对一些变量、命令等大小写不敏感。 <br>数据文字可以任何整数或浮点数值,例如: <br>整数文字 <br>-12345.0             浮点数文字 <br>1234.567890          浮点文字可以是任意精度 <br>这也是浮点文字,精度为零 <br>1.2345E2             可以使用科学计数 <br>1.2345E-3 <br>     0.123 或 .123         开头的0是可选择的 </p> <p>下面我们再来看另一个程序: <br>Circle.sql <br>DECLARE <br>  PI CONSTANT REAL:=3.14159265359;   -- PI常量值 <br>  Circumference REAL;           --周长 <br>  Area REAL;                   --面积 <br>  Radius REAL:=&Radius;        --半径 <br>BEGIN <br>  Circumference:=PI*radius*2.0; <br>  Area:=PI*radius**2; <br>  DBMS_OUTPUT.put_line(‘Radius=’||To_CHAR(radius)|| <br>                        ’,Circumference=’||To_CHAR(circumference)|| <br>                        ‘,Area=’||To_CHAR(area)); <br>END; <br>/ <br>SQL> start c:\plsql\circle.sql <br>在运行这个程序时,SQL*Plus首先提示你给&号指定的联编变量指定一个值(第5行)屏幕<br>显示信息为: <br>输入radius的值: 5 <br>原值   5:  Radius REAL:=&Radius; <br>新值   5:  Radius REAL:=5; <br>Radius=5,Circumference=31.4159265359,Area=78.53981633975 </p> <p>PL/SQL 过程已成功完成。 </p> <p>   SQL> </p> <p>程序注释 <br>单行注释 <br>  单行注释由两个连字符开始,后面一直到行尾都是注释(回车符标识着注释的结束)。</p> <p>如上边程序中的: <br>          PI CONSTANT REAL:=3.14159265359;   -- PI常量值 <br>     如果行注释超过一行,必须在每一行的开头上使用双连字符(--)。 </p> <p>多行注释 <br>多行注释由/*开始,由*/结束。这是C语言中使用的注释风格。如circle.sql中的开头部分<br>所示。 <br>多行注释可以扩展到任意多的行上,但它们不能嵌套。 </p> <p>PL/SQL块结构 <br>PL/SQL块是基本的编程结构,用块结构进行编程适用于自上而下的结构化积木式编程和直<br>观逻辑组织。 <br>一个无名PL/SQL块有三部分:说明部分、正文(体)部分和异常部分。其中异常部分为可<br>选项。 <br>    DECLARE <br>---- declarations (说明) <br> BEGIN <br>      ----executable code(执行代码) <br>EXCEPTION <br>    ----  exception handlers(异常处理代码) <br>END; <br>实际上说明部分也是可选项,但不声明变量是不能执行实质性的工作。用户定义的全部变<br>量、常数、数据类型、指示器、函数和过程均在这一部分中说明。若没有定义其中任何一<br>个,你可以略去这一部分。 </p> <p>变量声明 <br>   PL/SQL提供了SQL没有的附加数据类型。除一般的Oracle SQL数据类型外,PL/SQL还可<br>以让您用用这些数据类型对变量进行说明: </p> <p>   BOOLEAN   布尔类型       可用预定义常量TRUE、FALSE或NULL对一个布尔变量赋值。</p> <p>   BINARY-INTEGER           该类型适用于在-2,147,483,647到2,147,483,643 <br>   (二进制整数)                 范围内的带符号整数 <br>   NATURAL(自然数)           是BINARY-INTEGER的一个子集,这种数据类型是整数集的<br>一部分,从0到2,147,483,647。 <br>   POSITIVE(正整数)         是BINARY-INTEGER的另一个子集, 这种数据类型是整数<br>集的一部分,从0到2,147,483,647。 <br>   %TYPE                     这种设计可使您说明一个变量的数据类型与某一指定列的<br>数据类型相同,其结果产生更易于维护的PL/SQL代码。 <br>   %ROWTYPE                用这种数据类型您可以说明一个复合变量,与一特定表中的<br>一行相同,这种复合变量是由引用表中的列名和数据类型组成的。 <br>   除此之外,PL/SQL还提供两种复合数据类型:TABLE类型和RECORD型。我们将在以后介<br>绍。 <br>变量作用域 <br>   变量在仅它所在的块内块内是可见的。 <br><<l_outer>> <br>DECLARE <br>  V_AvailableFlag BOOLEAN; <br>  V_SSN        NUMBER(9); <br>BEGIN <br>fds <br>DECLARE <br>  V_SSN     CHAR(11); <br>BEGIN <br>       --v_SSN(char 11)是可见的,要引用v_SSN(number 9)可用 <br>         -- l_outerV_SSN <br>END; </p> <p>END; </p> <p>变量名风格 <br>变量名的关键是它们是描述性的。声明 <br> x number; <br>不会告诉您有关x的用途的任何事情。但是 <br> v_StudenID  NUMBER(5); <br>将告诉我们该变量可能要用来存储学生ID号,尽管在声明旁边没有解释的注释。请记住,<br>PL/SQL标识符的最大长度是30个字符,所有的字符都可以用来传递一些含义的。30个字符<br>通常足以用来存储一个描述性的名称了。 <br>变量名也可以告诉我们该变量的用途。有的人使用下划线将一个字母代码和变量的其他部<br>分分隔来以指明这一点。例如: <br>v_VariableName         程序变量 <br>e_ExceptionName       用户定义异常 <br>t_TypeName            用户定义类型 <br>p_ParameterName       过程或函数参数 <br>c_ConstantValue         常量 </p> <p> </p> <p><br>  下面我们再来看一个程序, loop.sql  (参见课本P198) <br>CREATE TABLE test_table (record_number number(3),current_date date); </p> <p>DECLARE <br>  max_records CONSTANT int:=100; <br>  I   int:=1; <br>BEGIN <br>  FOR I in 1..max_records LOOP <br>    If  (mod(i,10)=0)   then <br>       INSERT INTO test_table <br>          (record_number,current_date) <br>       VALUES <br>          (I, SYSDATE); <br>    ELSE <br>       NULL; <br>    END IF; <br>  END LOOP; <br>  COMMIT; <br>END; <br>/ </p> <p>COLUMN current_date FORMAT a20 <br>SELECT  record_number,to_char(sysdate,'HH24:MI SS')  FROM test_table; <br>    DROP TABLE test_table; </p> <p>循环语句 (P.195) <br> FOR-LOOP 与 WHILE-LOOP   <br>  语法: <br> FOR loop variable IN [REVERSE] lower-bound..upper-bound LOOP <br>   Statement; … statemnet; <br> END LOOP; </p> <p>     WHILE condition LOOP <br>       Statement; … statement; <br>     END LOOP; </p> <p>     Condition是一个有效的PL/SQL条件; <br>     Statement是一个有效的PL/SQL语句。 <br>  <br>简单的LOOP语句 <br>  语法: <br>LOOP  <br>   Statement; … statement; <br>END LOOP; <br>无条件循环,为了跳出循环,可在当一个条件被满足时执行EXIT语句。 </p> <p>  EXIT语句: <br>EXIT  [lable-name]  WHEN condition; <br>  <br> IF语句 <br>   IF  condition THEN <br>Statement;  … statement; <br>[ELSIF  condition  THEN  <br>  Statement;  … statement; <br>  … <br>[ELSIF  condition THEN <br>  statement; … statement; <br>[ELSE  <br>  statement;  … statement;] <br>END IF; <br>  注意拼写:是ELSIF而不是ELSEIF;END IF而不是ENDIF。 </p> <p><br>使用过程 <br>   过程是执行少量重复工作、严格地通过参数列表传入和传出值的子例行程序。 <br>   Table.sql  <br>SET SERVEROUTPUT ON <br>DECLARE  <br>  --  常量 <br>  TB CONSTANT VARCHAR2(1):=CHR(9);   -- TAB <br>  --  变量 <br>  status NUMERIC; <br>  table_rec  all_tables%ROWTYPE; <br>  --  例程  <br>  PROCEDURE get_table(Powner     IN       all_tables.owner%TYPE, <br>                     Ptable    IN       all_tables.table_name%TYPE, <br>                      Prec      OUT      all_tables%ROWTYPE, <br>                      Pstatus    IN   OUT NUMBER) IS <br>     -- Local cursors <br>     CURSOR table_cur (Cowner all_tables.owner%TYPE, <br>                       Ctable all_tables.table_name%TYPE) IS <br>       SELECT  *  <br>          FROM all_tables <br>          WHERE owner=Cowner AND table_name = Ctable; <br>     -- 局部变量 <br>     Lowner  all_tables.owner%TYPE; <br>     Ltable  all_tables.table_name%TYPE; <br>  BEGIN <br>    Pstatus:=0;    -- OK <br>    Lowner:=UPPER(Powner); <br>    Ltable:=UPPER(Ptable); <br>    OPEN table_cur(Lowner, Ltable); <br>    FETCH table_cur INTO Prec; <br>    IF (table_cur%NOTFOUND) THEN <br>      RAISE NO_DATA_FOUND; <br>    END IF; <br>      CLOSE table_cur; <br>    EXCEPTION <br>      WHEN OTHERS THEN <br>       BEGIN <br>        Pstatus:=SQLCODE;   -- 捕获错误代码 <br>        IF (table_cur%ISOPEN) THEN <br>          CLOSE table_cur; <br>        END IF; <br>        Prec:=NULL; <br>        DBMS_OUTPUT.put_line('get_table:'||SQLERRM(Pstatus)); <br>        DBMS_OUTPUT.put_line('OWNER='||'<'||Lowner||'>'); <br>        DBMS_OUTPUT.put_line('TABLE ='||'<'||Ltable||'>'); <br>       EXCEPTION <br>        WHEN OTHERS THEN <br>          NULL;  --don't care(avoid infinite loop) <br>       END; <br>  END get_table; <br>BEGIN <br>  DBMS_OUTPUT.enable; <br>  DBMS_OUTPUT.put_line('TABLE'||TB||'TABLESPACE'||TB|| <br>                       'INITIAL'||TB||'NEXT'||TB||'MAX'); <br>  DBMS_OUTPUT.put_line(RPAD('-',43,'-'));   -- Just an under line <br>  Get_table('scott','dept',table_rec,status); <br>  IF (status=0) THEN <br>    DBMS_OUTPUT.put_line( <br>         Table_rec.table_name       ||TB|| <br>         Table_rec.tablespace_name  ||TB|| <br>         Table_rec.initial_extent   ||TB|| <br>         Table_rec.next_extent      ||TB|| <br>         Table_rec.max_extents); <br>  END IF; <br>  Get_table('scott','garbage',table_rec,status); <br>  IF (status =0 ) THEN <br>    DBMS_OUTPUT.put_line( <br>         Table_rec.table_name       ||TB|| <br>         Table_rec.tablespace_name  ||TB|| <br>         Table_rec.initial_extent   ||TB|| <br>         Table_rec.next_extent      ||TB|| <br>         Table_rec.max_extents); <br>  END IF; <br>END; <br>/ </p> <p>游标的使用: <br>    参阅课本P.251 <br>     说明游标 (declare) <br>     打开(open)游标 <br>     用游标提取数据行(fetch) <br>     关闭(close)游标 </p> <p>定义过程: <br> PROCEDURE  procedure-name [(argument1[,argumentN])]  IS <br>[局部变量声明] <br>BEGIN <br>  Executable-section <br>  [exception-section] <br>END [procedure-name]; </p> <p>参数说明 <br>      IN       参数的值传递给过程或函数,但是没有返回给调用它的PL/SQL子程序。在<br>一个过程或函数内部,您不能给说明为IN的参数赋值,只能引用这种类型参数的值。 </p> <p>      OUT     过程或函数不能使用参数传递的值,但给调用它的PL/SQL子程序一个返回<br>值。在一个过程或函数内部,您不能用引用说明为OUT的参数值,只能给这种类型参数赋值<br>。 </p> <p>      IN OUT  参数的值传递给过程或函数,并且给调用它的PL/SQL子程序一个返回值。<br>如果说明一个参数为IN OUT类型,则在过程或函数内部,既可引用这种类型参数的值又可<br>给其赋值。 </p> <p><br>函数说明: <br>    一个PL/SQL函数说明与过程说明很相——只是函数返回一个预定义的数据类型的值。</p> <p>说明一个函数的语法如下: <br>FUNCTION function-name  [(argument1 [,argumentN]) <br>  RETURN  function-datatype IS <br>    [local-variable-decarations] <br>  BEGIN <br>    Executable-section <br>    [exception-section] <br>  END [function-name]; </p> <p><br>二.使用存储过程或函数 <br>存储过程或函数是存储在Oracle数据库中的PL/SQL程序,可由用户直接或间接调用。使用<br>存储过程和函数的主要优越性有以下几点: <br>.提高了效率 : 在客户机应用向数据库服务器提出对SQL的需求。随着户数的的增加,SQ<br>L请求也就不断地增加,使网络很快就成为运行的瓶颈。使用存储过程可使运行性能得到显<br>著的改进,因为对存储过程的一次调用,即用了在服务器中执行的多个SQL语句,从而减少<br>了网络的拥护。 <br>.可重用性:  一个PL/SQL程序只需编写一次,即可用在各种地方——SQL脚本、数据库触发<br>器和客户机应用程序。 <br>.可移植性:您可在任何Oracle数据库中使用存储过程,而不用考虑平台问题,所以您不需<br>要处理象操作系统或编译版本中出现的兼容性问题。只要平台支持Oracle,不需要做任何<br>改变就可调用存储过程。当然如果存储过程包含对文件和路径名的引用,您就需要另做一<br>些改变。 <br>.可维护性:一个存储过程用于完成一个特写的任务,如数据库触发器、SQL*Plus脚本、应<br>用程序或其他存储过程可能需要调用该过程。从所有这些地方均可调用一个存储过程,这<br>样可降低软件维护的成本。 </p> <p>建立存储过程或函数 <br>CREATE [OR REPLACE]  PROCEDURE  procedure_name <br>  [(argument1 [,argumentN])] IS <br>  [local-variable-declarations] <br> BEGIN <br> Executable-section <br> [exception-section] <br>   END  procedure-name; </p> <p>   CREATE [OR REPLACE] FUNCTION function-name <br>  [(argument1 [,argumentN])] IS <br>  [local-variable-declarations] <br> BEGIN <br> Executable-section <br> [exception-section] <br>   END  function-name; </p> <p><br>检索存储过程 <br>建立存储过程后,您也许想看一看PL/SQL程序的源代码,不过,用于建立存储过程的SQL脚<br>本是不可见的,尽管如此,您还是可以使用查询Oracle数据字典视图的方法检索存储过程<br>的源代码。 <br>其中一个视图名为:USER_SOURCE <br>               (另一个DBA_SOURCE) <br>它提供以下四个列: <br>  NAME    包括过程、函数、包或包体的名字。 <br>  TYPE     指出源代码是否属于过程、函数包还是包体。 <br>  TEXT     包含源代码的一行。 <br>  LINE      包含在TEXT中源代码包含的行数。 <br>假设我们已建立了名为DROP_CLASS的存储过程,如果您想看DROP_CLASS的源代码,查询US<br>ER_SOURCE数据字典视图,那么用下面的SQL命令: <br>   select line,text from user_source <br>        where name=’DROP_CLASS’ order by line; </p> <p><br>获得过程、函数、包或包体的目录列表 <br>  我们可以查询USER_OBJECTS获得属于当前所连接的Oracle帐号的存储过程、函数、包或<br>包体的目录列表。如果您想看不管属于谁的所有对象,可以查询DBA_OBJECTS。 <br>  Select distinct object_type  from user_objects; </p> <p>三.使用提供的ORACLE数据库程序包 <br>Oracle数据库提供两组程序包:一组是标准程序包,它向Oracle Server提供基本功能,如<br>你的基本子类型说明和数据类型转换例行程序;另一组程序包供DBA和开发人员使用。这些<br>程序包由它们的名字区分,名字以DBMS_或UTL_打头,意思是它们与数据库打交道或提供通<br>用的实用程序。 </p> <p>表4.1 提供的程序包汇总 <br>程序包名 程序包头文件 描述 <br>DBMS_ALERT Dbmsalrt.sql 数据库事件的异常处理 <br>DBMS_APPLICATION_INFO Dbmsutil.sql 记录当前运行的应用程序名(用于性能监控) </p> <p>DBMS_DDL Dbmsutil.sql 重新编译存储的子程序和程序包,分析数据库对象 <br>DBMS_DESCRIBE Dbmsdesc.sql 描述存储子程序的参数 <br>DBMS_JOB Dbmsjob.sql 在指定时间或时间间隔内运行用户定义的工作 <br>DBMS_LOCK Dbmslock.sql 管理数据库锁定 <br>DBMS_OUTPUT Dbmsotpt.sql 将文本行写入缓冲器供以后检索和显示 <br>DBMS_PIPE Dbmspipe.sql 在会话之间通个存储“管道”存储和发送信息 <br>DBMS_REFRESH Dbmssnap.sql 管理可以一起刷新的快照组 <br>DBMS_SESSION Dbmsutil.sql 有计划地执行alter session语句 <br>DBMS_SHARED_POOL Dbmspool.sql 观察和管理内容 <br>DBMS_SNAPSHOT Dbmssnap.sql 刷新、管理快照和清除快照 <br>DBMS_SPACE Dbmsutil.sql 获取段空间信息 <br>DBMS_SQL Dbmssql.sql 执行动态SQL和PL/SQL <br>DBMS_SYSTEM Dbmsutil.sql 关闭/打开给定会话的SQL跟踪 <br>DBMS_TRANCACTION Dbmsutil.sql 管理SQL事务 <br>DBMS_UTILITY Dbmsutil.sql 各种实用程序 <br>UTL_RAW Utlraw.sql 用于RAW数据类型的簇函数 <br>UTL_FILE Utlfile.sql 读/写基于ASCII的操作系统文件 <br>UTL_HTTP Utlhttp.sql 从给定的URL获取HTML格式的页面 <br>DBMS_LOB Dbmslob.sql 管理大对象 <br>   </p> <p>在您可以使用Oracle提供的程序包内的例行程序时,您应该首先检查它们是否存已经安装<br>和是否有效。DBA可以运行下列查询: <br>SELECT object_name,object_type,status <br>  FROM dba_objects <br>  WHERE owner=’SYS’ AND object_type LIKE ‘PACKAGE%’ <br>  ORDER BY object_name,object_type; </p> <p>    Oracle提供的程序包存放在¥$ORACLE_HOME\rdbms\admin目录下,你可以对这些程序<br>包中的每一个检查其程序包头文件看一看有什么例行程序和全局变量可以使用。 <br>    在以上所述目录下,我们还可以看到以prvt*.sql 和prvt*.plb形式存在的文件。前者<br>是提供的程序包包体,为ASCII格式。后者是程序包包体的二进制编译版的程序包包体。这<br>些代表程序包包体的发布形式。 </p> <p>第六章:DBA <br> 本章将介绍怎样成为数据库管理员(DBA)。DBA工作的贡献在于使所有运行在Oracle数据<br>库上的系统能够有效地工作。DBA为每一个用户提供技术支持,并且应当熟悉Oracle软件方<br>面的所有技术出版物。DBA具有以下职责: <br>Oracle数据库的日常操作 <br>Oracle软件的安装与升级 <br>性能协调 <br>备份与恢复管理策略 <br>个人数据库管理咨询 <br>开发者咨询 </p> <p>  一.启动与关闭数据库 <br>在大多数情况下,当启动数据库时,用户只需要简单地启动Server Manager,连接到数据<br>库,然后输入“Startup”使系统运转。现在我们介绍辅助启动命令选项。当需要时可在S<br>erver Manager中使用这些选项。 </p> <p>   1.启动命令选项 <br>1).正常启动(Startup Normal) <br>  这是默认的启动方式(可省略Normal一词)。在前面的学习中,我们已多次使用这种方<br>式启动了数据库。 </p> <p>SVRMGR> connect internal <br>Connected. <br>SVRMGR> startup <br>ORACLE instance started. <br>Total System Global Area                         16113888 bytes <br>Fixed Size                                          45280 bytes <br>Variable Size                                     7802880 bytes <br>Database Buffers                                  8192000 bytes <br>Redo Buffers                                        73728 bytes <br>Database mounted. <br>    Database opened. </p> <p>2).安装启动(Startup Mount) <br>   这种方式用于改变数据库的归档或执行恢复状态。此时数据未打开,所以不允许用户访<br>问数据。启动服务器管理器后,按下述步骤操作: <br>   SVRMGR>connect internal; <br>   SVRMGR>Startup Mount; </p> <p> </p> <p>3).非安装启动(Startup Nomount) <br>   这种方式用于重建控制文件或重建数据库。由于数据库没有打开,因此不允许用户访问<br>。启动服务器管理器后,按下述步骤操作: <br>   SVRMGR>connect internal; <br>   SVRMGR>Startup Nomount; <br>   ORACLE instance started. <br>   Total System Global Area                         16113888 bytes <br>   Fixed Size                                          45280 bytes <br>   Variable Size                                     7802880 bytes <br>   Database Buffers                                  8192000 bytes <br>   Redo Buffers                                        73728 bytes <br>       Database mounted. </p> <p>4).约束启动(Startup Restrict) <br>使用这种方式能够启动数据库,但只允许具有一定特权的用户访问。该命令的输出信息与<br>不受限方式的启动命令的信息相同。数据库已打开,如果非特权用户试图登录,则将出现<br>下列错误信息: <br>        使用alter system disable restricted session可以使数据库处于非约束访问方<br>式,用户可以再次登录。 </p> <p><br>5).强制启动(Startup Force) <br>当不能关闭数据库时,采用强制启动先项可处理这种罕见状态。首先关闭数据库,然后执<br>行无选项的数据库启动操作。启动操作与执行“Startup”命令相同。启动服务器管理后,<br>按下述步骤操作: <br>   SVRMGR>connect internal; <br>   SVRMGR>Startup force </p> <p>    完成上述操作后,数据库被打开,用户可访问信息。 </p> <p><br>6).带初始化参数启动(Startup Pfile) <br>启动命令使用该选项不影响数据库的运行方式,而只是定义了初始化参数文件(pfile)的<br>名称及位置。正如前面所讨论,初始化参数文件由Oracle打开数据库时读取。Oracle期望<br>已定位的缺省的初始化参数文件名。 <br>   SVRMGR>connect internal; <br>   SVRMGR>Startup pfile= parameter_file_name </p> <p>关闭选项 <br>当Oracle数据库不运行时,称其为停止(down)。关闭数据库有多种理由,有些软件做备<br>份时关闭数据库;当升级或安装一些新的Oracle软件时,在升级或安装对话期间,Oracle<br>数据库必须关闭。 </p> <p>Showdown immediate 立即关闭,绝大多数情况下使用这种关闭方式。在用户别无选择时使<br>用shutdown abort选项关闭数据库,这是作为最后一种手段,非不得已的情况下才用。如<br>果使用中止(abort)选项关闭数据库,应立即启动数据库再做一次正常关闭,经验表明这<br>是处理中止关闭的最好办法。 </p> <p>        <br>  二.用户及用户权限管理 <br>建立用户 </p> <p>建立一个用户,实际上是建立一个安全、有用的帐号,它具有适当的权限和正确的缺省设<br>置。使用create user命令要建立一个新的数据库帐户,当该帐户建立后,在授权前它没有<br>任何效力,甚至不能注册。 <br>所有用户帐号所需的设置都可由一个create user命令来指定。这些设置可以包括下表所有<br>的参数值。 <br>   参    数                    使    用 <br>Username 模式名 <br>Password 帐号口令,也可以是直接与操作系统主机帐号相连 <br>Default Tablespace 缺省表空间用来存储在该模式下建立的对象。这个并不是真正给用户<br>建立的对象,而仅是设置一个缺省值 <br>Temporary Tablespace 这个表空间只用来存储排序处理的临时段 <br>Quota  [on tablespace] 充许用户在限额指定尺寸的表空间存储对象 <br>Profile 给用户指定一个环境文件。如未指定,则使用缺省环境文件。环境文件是用来限<br>制对系统资源的使用的执行口令管理规则   <br>   下面列出一个简单的create user命令。在这个例子中,建立一个叫Rudolf和反用户,<br>口令为lamb,缺省表空间为USERS,临时表空间为TEMP,没有限额,使用缺省环境文件。 </p> <p>   Create user rudolf <br>      Identified by lamb <br>      Default tablespace USERS <br>      Temporary tablespace TEMP; </p> <p>由于没有指定环境文件,数据库使用缺省环境文件。环境文件名为DEFAULT;其初始值是由<br>UNLIMITED设置的所有资源消耗的限值。 <br>由于没有指定限额,用户就不能在数据库建立对象。 <br>当授权资源限额时,使用create user或alter user的quota参数,如下面所列出的。这个<br>例子中,授予rudolf的限额为USERS表空间的10MB。 <br>Alter user rudolf  <br>   Quota 10M on users </p> <p>这时用户Rudolf可以在USERS表空间中建立最多为10M的数据段。用户不需要临时表空间中<br>空间限额来建立他们查询时的临时段。 <br>除用户名外,create user命令的参数都可以由alter user命令来替换。 </p> <p> </p> <p>2.删除用户 </p> <p>  可以用drop user命令来把一个用户从数据库中完全删除。这个命令只有一个参数——c<br>ascade,它能删除用户模式中的所有对象。如果是用户固有对象,为删除用户,你必须先<br>指定cascade。下面举例说明drop user命令: <br>drop user rudolf cascade </p> <p>   任何视图、同义词、过程、函数或数据包等被引用的对象在删除用户都会标上INVALID<br>。如果不久后另一个用户建立一个同样的名字,那么他在他的前任用户继承不到任何东西<br>。  </p> <p>    <br>3.系统级权限 <br>   <br>   可以使用系统级角色分配有效的系统级命令,以管理数据库。也可以建立用户系统级角<br>色或使用自身所带的有效权限,可以通过系统级角色授予,见下表: </p> <p>   权限 授权能力 <br>对象管理 <br>CREATE [ANY] CLUSTER <br>CREATE [ANY] DIRECTORY <br>CREATE [ANY] INDEX <br>CREATE [ANY] LIBRARY <br>CREATE [ANY] PROCEDURE <br>CREATE [ANY] SEQUENCE <br>CREATE [ANY] SNAPSHOT <br>CREATE  ANY SYNONYM <br>CREATE [PUBLIC] SYNONYM <br>CREATE [ANY] TABLE <br>CREATE [ANY] TRIGGER <br>CREATE [ANY] TYPE <br>CREATE [ANY] VIEW <br>ALTER [ANY] CLUSTER <br>ALTER [ANY] INDEX <br>ALTER [ANY] PROCEDURE <br>… <br>DROP ANY CLUSTER <br>DROP ANY DIRECTORY <br>DROP ANY <br>… <br>BACKUP ANY TABLE <br>COMMENT ANY TABLE <br>LOCK ANY TABLE <br>SELECT ANY TABLE <br>INSERT ANY TABLE <br>UPDATE ANY TABLE <br>DELETE ANY TABLE <br>EXECUTE ANY TYPE <br>EXECUTE ANY PROCEDURE <br>数据库管理 <br>CREATE [PUBLIC] DATABASE LINK <br>CREATE PROFILE <br>CREATE ROLE <br>CREATE ROLLBACK SEGMENT <br>CREATE TABLESPACE <br>CREATE USER <br>ALTER PROFILE <br>ALTER  RESOURCE COST <br>ALTER ANY ROLE <br>ALTER ROLLBACK SEGMENT <br>ALTER TABLESPACE  <br>ALTER USER <br>DROP PROFILE <br>DROP PUBLIC DATABASE LINK <br>DROP ANY ROLE <br>DROP ROLLBACK SEGMENT <br>DROP TABLESPACE <br>ALTER DATABASE <br>ALTER SYSTEM <br>ANALYZE ANY <br>ANUDITANY AUDIT SYSTEM <br>BECOME USER <br>FORCE [ANY] TRANSACTION <br>GRANT ANY PRIVILEGE <br>GRANT ANY ROLE <br>MANAGER TABLESPACE <br>RESTRICTED SYSTEM <br>SYSDBA   可以建立数据库一样执行系统管理功能(recover、startup、shutdown) <br>SYSOPER   可以执行与数据库备份、启动/关闭有关的系统管理功能(装载、恢复、打开和<br>关闭数据库) </p> <p>   使用grant命令给用户授权,grant命令的子句with grant option,是用于给被授予都<br>传递授予用户权限的能力。 <br>   Oracle提供了8个系统级角色。它们分别是CONNECT,RESOURCE,DBA,IMP_FULL_DATAB<br>ASE,EXP_FULL_DATABASE,SELECT_CATALOG_ROLE,EXECUTE_CATALOG_ROLE和DELETE_CATALOG<br>_ROLE。使用这些角色可以用来限制数据库管理角色的系统级权限。 <br>  CONNECT角色是授予最终用户的典型。尽管它具有一些建立对象的能力(如CREATE TABL<br>E权限),但它不能给用户任何表空间的额度。由于用户没有表空间,所以也就不能建表。<br>  <br>  RESOURCE角色是授予开发人员的,是开发人员最有效的角色。 <br>  DBA</p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1290375553664229376"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(数据库知识,SQL,Oracle,SQL,Server,数据结构,配置管理)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1835511912843014144.htm" title="理解Gunicorn:Python WSGI服务器的基石" target="_blank">理解Gunicorn:Python WSGI服务器的基石</a> <span class="text-muted">范范0825</span> <a class="tag" taget="_blank" href="/search/ipython/1.htm">ipython</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>理解Gunicorn:PythonWSGI服务器的基石介绍Gunicorn,全称GreenUnicorn,是一个为PythonWSGI(WebServerGatewayInterface)应用设计的高效、轻量级HTTP服务器。作为PythonWeb应用部署的常用工具,Gunicorn以其高性能和易用性著称。本文将介绍Gunicorn的基本概念、安装和配置,帮助初学者快速上手。1.什么是Gunico</div> </li> <li><a href="/article/1835509770749046784.htm" title="mysql禁用远程登录" target="_blank">mysql禁用远程登录</a> <span class="text-muted">igotyback</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>去mysql库中的user表里,将host都改成localhost之后刷新权限FLUSHPRIVILEGES;</div> </li> <li><a href="/article/1835499681732456448.htm" title="SQL Server_查询某一数据库中的所有表的内容" target="_blank">SQL Server_查询某一数据库中的所有表的内容</a> <span class="text-muted">qq_42772833</span> <a class="tag" taget="_blank" href="/search/SQL/1.htm">SQL</a><a class="tag" taget="_blank" href="/search/Server/1.htm">Server</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/sqlserver/1.htm">sqlserver</a> <div>1.查看所有表的表名要列出CrabFarmDB数据库中的所有表(名),可以使用以下SQL语句:USECrabFarmDB;--切换到目标数据库GOSELECTTABLE_NAMEFROMINFORMATION_SCHEMA.TABLESWHERETABLE_TYPE='BASETABLE';对这段SQL脚本的解释:SELECTTABLE_NAME:这个语句的作用是从查询结果中选择TABLE_NAM</div> </li> <li><a href="/article/1835497074049773568.htm" title="数组去重" target="_blank">数组去重</a> <span class="text-muted">好奇的猫猫猫</span> <div>整理自js中基础数据结构数组去重问题思考?如何去除数组中重复的项例如数组:[1,3,4,3,5]我们在做去重的时候,一开始想到的肯定是,逐个比较,外面一层循环,内层后一个与前一个一比较,如果是久不将当前这一项放进新的数组,挨个比较完之后返回一个新的去过重复的数组不好的实践方式上述方法效率极低,代码量还多,思考?有没有更好的方法这时候不禁一想当然有了!!!hashtable啊,通过对象的hash办法</div> </li> <li><a href="/article/1835494257746604032.htm" title="MYSQL面试系列-04" target="_blank">MYSQL面试系列-04</a> <span class="text-muted">king01299</span> <a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>MYSQL面试系列-0417.关于redolog和binlog的刷盘机制、redolog、undolog作用、GTID是做什么的?innodb_flush_log_at_trx_commit及sync_binlog参数意义双117.1innodb_flush_log_at_trx_commit该变量定义了InnoDB在每次事务提交时,如何处理未刷入(flush)的重做日志信息(redolog)。它</div> </li> <li><a href="/article/1835492109709307904.htm" title="回溯算法-重新安排行程" target="_blank">回溯算法-重新安排行程</a> <span class="text-muted">chirou_</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E8%AE%BA/1.htm">图论</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E6%90%9C%E7%B4%A2/1.htm">图搜索</a> <div>leetcode332.重新安排行程这题我还没自己ac过,只能现在凭着刚学完的热乎劲把我对题解的理解记下来。本题我认为对数据结构的考察比较多,用什么数据结构去存数据,去读取数据,都是很重要的。classSolution{private:unordered_map>targets;boolbacktracking(intticketNum,vector&result){//1.确定参数和返回值//2</div> </li> <li><a href="/article/1835490092068728832.htm" title="Redis系列:Geo 类型赋能亿级地图位置计算" target="_blank">Redis系列:Geo 类型赋能亿级地图位置计算</a> <span class="text-muted">Ly768768</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/bootstrap/1.htm">bootstrap</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>1前言我们在篇深刻理解高性能Redis的本质的时候就介绍过Redis的几种基本数据结构,它是基于不同业务场景而设计的:动态字符串(REDIS_STRING):整数(REDIS_ENCODING_INT)、字符串(REDIS_ENCODING_RAW)双端列表(REDIS_ENCODING_LINKEDLIST)压缩列表(REDIS_ENCODING_ZIPLIST)跳跃表(REDIS_ENCODI</div> </li> <li><a href="/article/1835488702881689600.htm" title="Faiss:高效相似性搜索与聚类的利器" target="_blank">Faiss:高效相似性搜索与聚类的利器</a> <span class="text-muted">网络·魚</span> <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/faiss/1.htm">faiss</a> <div>Faiss是一个针对大规模向量集合的相似性搜索库,由FacebookAIResearch开发。它提供了一系列高效的算法和数据结构,用于加速向量之间的相似性搜索,特别是在大规模数据集上。本文将介绍Faiss的原理、核心功能以及如何在实际项目中使用它。Faiss原理:近似最近邻搜索:Faiss的核心功能之一是近似最近邻搜索,它能够高效地在大规模数据集中找到与给定查询向量最相似的向量。这种搜索是近似的,</div> </li> <li><a href="/article/1835483159630802944.htm" title="nosql数据库技术与应用知识点" target="_blank">nosql数据库技术与应用知识点</a> <span class="text-muted">皆过客,揽星河</span> <a class="tag" taget="_blank" href="/search/NoSQL/1.htm">NoSQL</a><a class="tag" taget="_blank" href="/search/nosql/1.htm">nosql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E9%9D%9E%E5%85%B3%E7%B3%BB%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">非关系型数据库</a> <div>Nosql知识回顾大数据处理流程数据采集(flume、爬虫、传感器)数据存储(本门课程NoSQL所处的阶段)Hdfs、MongoDB、HBase等数据清洗(入仓)Hive等数据处理、分析(Spark、Flink等)数据可视化数据挖掘、机器学习应用(Python、SparkMLlib等)大数据时代存储的挑战(三高)高并发(同一时间很多人访问)高扩展(要求随时根据需求扩展存储)高效率(要求读写速度快)</div> </li> <li><a href="/article/1835479758033481728.htm" title="SpringBlade dict-biz/list 接口 SQL 注入漏洞" target="_blank">SpringBlade dict-biz/list 接口 SQL 注入漏洞</a> <span class="text-muted">文章永久免费只为良心</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>SpringBladedict-biz/list接口SQL注入漏洞POC:构造请求包查看返回包你的网址/api/blade-system/dict-biz/list?updatexml(1,concat(0x7e,md5(1),0x7e),1)=1漏洞概述在SpringBlade框架中,如果dict-biz/list接口的后台处理逻辑没有正确地对用户输入进行过滤或参数化查询(PreparedSta</div> </li> <li><a href="/article/1835479002458976256.htm" title="数据结构之哈希表" target="_blank">数据结构之哈希表</a> <span class="text-muted">X同学的开始</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E6%95%A3%E5%88%97%E8%A1%A8/1.htm">散列表</a> <div>哈希表(散列表)出现的原因在顺序表中查找时,需要从表头开始,依次遍历比较a[i]与key的值是否相等,直到相等才返回索引i;在有序表中查找时,我们经常使用的是二分查找,通过比较key与a[i]的大小来折半查找,直到相等时才返回索引i。最终通过索引找到我们要找的元素。但是,这两种方法的效率都依赖于查找中比较的次数。我们有一种想法,能不能不经过比较,而是直接通过关键字key一次得到所要的结果呢?这时,</div> </li> <li><a href="/article/1835479000600899584.htm" title="Linux MariaDB使用OpenSSL安装SSL证书" target="_blank">Linux MariaDB使用OpenSSL安装SSL证书</a> <span class="text-muted">Meta39</span> <a class="tag" taget="_blank" href="/search/MySQL/1.htm">MySQL</a><a class="tag" taget="_blank" href="/search/Oracle/1.htm">Oracle</a><a class="tag" taget="_blank" href="/search/MariaDB/1.htm">MariaDB</a><a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/Windows/1.htm">Windows</a><a class="tag" taget="_blank" href="/search/ssl/1.htm">ssl</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/mariadb/1.htm">mariadb</a> <div>进入到证书存放目录,批量删除.pem证书警告:确保已经进入到证书存放目录find.-typef-iname\*.pem-delete查看是否安装OpenSSLopensslversion没有则安装yuminstallopensslopenssl-devel开启SSL编辑/etc/my.cnf文件(没有的话就创建,但是要注意,在/etc/my.cnf.d/server.cnf配置了datadir的,</div> </li> <li><a href="/article/1835476983614631936.htm" title="Python开发常用的三方模块如下:" target="_blank">Python开发常用的三方模块如下:</a> <span class="text-muted">换个网名有点难</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>Python是一门功能强大的编程语言,拥有丰富的第三方库,这些库为开发者提供了极大的便利。以下是100个常用的Python库,涵盖了多个领域:1、NumPy,用于科学计算的基础库。2、Pandas,提供数据结构和数据分析工具。3、Matplotlib,一个绘图库。4、Scikit-learn,机器学习库。5、SciPy,用于数学、科学和工程的库。6、TensorFlow,由Google开发的开源机</div> </li> <li><a href="/article/1835473957185220608.htm" title="网络编程基础" target="_blank">网络编程基础</a> <span class="text-muted">记得开心一点啊</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>目录♫什么是网络编程♫Socket套接字♪什么是Socket套接字♪数据报套接字♪流套接字♫数据报套接字通信模型♪数据报套接字通讯模型♪DatagramSocket♪DatagramPacket♪实现UDP的服务端代码♪实现UDP的客户端代码♫流套接字通信模型♪流套接字通讯模型♪ServerSocket♪Socket♪实现TCP的服务端代码♪实现TCP的客户端代码♫什么是网络编程网络编程,指网络上</div> </li> <li><a href="/article/1835471689929027584.htm" title="关于Mysql 中 Row size too large (> 8126) 错误的解决和理解" target="_blank">关于Mysql 中 Row size too large (> 8126) 错误的解决和理解</a> <span class="text-muted">秋刀prince</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>提示:啰嗦一嘴,数据库的任何操作和验证前,一定要记得先备份!!!不会有错;文章目录问题发现一、问题导致的可能原因1、页大小2、行格式2.1compact格式2.2Redundant格式2.3Dynamic格式2.4Compressed格式3、BLOB和TEXT列二、解决办法1、修改页大小(不推荐)2、修改行格式3、修改数据类型为BLOB和TEXT列4、其他优化方式(可以参考使用)4.1合理设置数据</div> </li> <li><a href="/article/1835463621124124672.htm" title="数据结构 | 栈和队列" target="_blank">数据结构 | 栈和队列</a> <span class="text-muted">TT-Kun</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/1.htm">数据结构与算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E6%A0%88/1.htm">栈</a><a class="tag" taget="_blank" href="/search/%E9%98%9F%E5%88%97/1.htm">队列</a><a class="tag" taget="_blank" href="/search/C%E8%AF%AD%E8%A8%80/1.htm">C语言</a> <div>文章目录栈和队列1.栈:后进先出(LIFO)的数据结构1.1概念与结构1.2栈的实现2.队列:先进先出(FIFO)的数据结构2.1概念与结构2.2队列的实现3.栈和队列算法题3.1有效的括号3.2用队列实现栈3.3用栈实现队列3.4设计循环队列结论栈和队列在计算机科学中,栈和队列是两种基本且重要的数据结构,它们在处理数据存储和访问顺序方面有着独特的规则和应用。本文将详细介绍栈和队列的概念、结构、实</div> </li> <li><a href="/article/1835457443690278912.htm" title="[Python] 数据结构 详解及代码" target="_blank">[Python] 数据结构 详解及代码</a> <span class="text-muted">AIAdvocate</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E9%93%BE%E8%A1%A8/1.htm">链表</a> <div>今日内容大纲介绍数据结构介绍列表链表1.数据结构和算法简介程序大白话翻译,程序=数据结构+算法数据结构指的是存储,组织数据的方式.算法指的是为了解决实际业务问题而思考思路和方法,就叫:算法.2.算法的5大特性介绍算法具有独立性算法是解决问题的思路和方式,最重要的是思维,而不是语言,其(算法)可以通过多种语言进行演绎.5大特性有输入,需要传入1或者多个参数有输出,需要返回1个或者多个结果有穷性,执行</div> </li> <li><a href="/article/1835455552654766080.htm" title="4.C_数据结构_队列" target="_blank">4.C_数据结构_队列</a> <span class="text-muted">荣世蓥</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>概述什么是队列:队列是限定在两端进行插入操作和删除操作的线性表。具有先入先出(FIFO)的特点相关名词:队尾:写入数据的一段队头:读取数据的一段空队:队列中没有数据,队头指针=队尾指针满队:队列中存满了数据,队尾指针+1=队头指针循环队列1、基本内容循环队列是以数组形式构成的队列数据结构。循环队列的结构体如下:typedefintdata_t;//队列数据类型#defineN64//队列容量typ</div> </li> <li><a href="/article/1835451016456269824.htm" title="MongoDB知识概括" target="_blank">MongoDB知识概括</a> <span class="text-muted">GeorgeLin98</span> <a class="tag" taget="_blank" href="/search/%E6%8C%81%E4%B9%85%E5%B1%82/1.htm">持久层</a><a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a> <div>MongoDB知识概括MongoDB相关概念单机部署基本常用命令索引-IndexSpirngDataMongoDB集成副本集分片集群安全认证MongoDB相关概念业务应用场景:传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心。解释:“三高”需求:①Highperformance-对数据库高并发读写的需求。②HugeStorage-对海量数</div> </li> <li><a href="/article/1835444076007223296.htm" title="JAVA·一个简单的登录窗口" target="_blank">JAVA·一个简单的登录窗口</a> <span class="text-muted">MortalTom</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>文章目录概要整体架构流程技术名词解释技术细节资源概要JavaSwing是Java基础类库的一部分,主要用于开发图形用户界面(GUI)程序整体架构流程新建项目,导入sql.jar包(链接放在了文末),编译项目并运行技术名词解释一、特点丰富的组件提供了多种可视化组件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)、下拉列表(JComboBox)等,可以满足不同的界面设计</div> </li> <li><a href="/article/1835443013749403648.htm" title="入门MySQL——查询语法练习" target="_blank">入门MySQL——查询语法练习</a> <span class="text-muted">K_un</span> <div>前言:前面几篇文章为大家介绍了DML以及DDL语句的使用方法,本篇文章将主要讲述常用的查询语法。其实MySQL官网给出了多个示例数据库供大家实用查询,下面我们以最常用的员工示例数据库为准,详细介绍各自常用的查询语法。1.员工示例数据库导入官方文档员工示例数据库介绍及下载链接:https://dev.mysql.com/doc/employee/en/employees-installation.h</div> </li> <li><a href="/article/1835440294980579328.htm" title="C++八股" target="_blank">C++八股</a> <span class="text-muted">Petrichorzncu</span> <a class="tag" taget="_blank" href="/search/%E5%85%AB%E8%82%A1%E6%80%BB%E7%BB%93/1.htm">八股总结</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>这里写目录标题C++内存管理C++的构造函数,复制构造函数,和析构函数深复制与浅复制:构造函数和析构函数哪个能写成虚函数,为什么?C++数据结构内存排列结构体和类占用的内存:==虚函数和虚表的原理==虚函数虚表(Vtable)虚函数和虚表的实现细节==内存泄漏==指针的工作原理函数的传值和传址new和delete与malloc和freeC++内存区域划分C++11新特性C++常见新特性==智能指针</div> </li> <li><a href="/article/1835437775344726016.htm" title="博客网站制作教程" target="_blank">博客网站制作教程</a> <span class="text-muted">2401_85194651</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a> <div>首先就是技术框架:后端:Java+SpringBoot数据库:MySQL前端:Vue.js数据库连接:JPA(JavaPersistenceAPI)1.项目结构blog-app/├──backend/│├──src/main/java/com/example/blogapp/││├──BlogApplication.java││├──config/│││└──DatabaseConfig.java</div> </li> <li><a href="/article/1835434126874865664.htm" title="ubuntu安装wordpress" target="_blank">ubuntu安装wordpress</a> <span class="text-muted">lissettecarlr</span> <div>1安装nginx网上安装方式很多,这就就直接用apt-get了apt-getinstallnginx不用启动啥,然后直接在浏览器里面输入IP:80就能看到nginx的主页了。如果修改了一些配置可以使用下列命令重启一下systemctlrestartnginx.service2安装mysql输入安装前也可以更新一下软件源,在安装过程中将会让你输入数据库的密码。sudoapt-getinstallmy</div> </li> <li><a href="/article/1835431853746647040.htm" title="【树一线性代数】005入门" target="_blank">【树一线性代数】005入门</a> <span class="text-muted">Owlet_woodBird</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>Index本文稍后补全,推荐阅读:https://blog.csdn.net/weixin_60702024/article/details/141874376分析实现总结本文稍后补全,推荐阅读:https://blog.csdn.net/weixin_60702024/article/details/141874376已知非空二叉树T的结点值均为正整数,采用顺序存储方式保存,数据结构定义如下:t</div> </li> <li><a href="/article/1835430088057909248.htm" title="python获取子进程返回值_Python对进程Multiprocessing子进程返回值" target="_blank">python获取子进程返回值_Python对进程Multiprocessing子进程返回值</a> <span class="text-muted">weixin_39752157</span> <a class="tag" taget="_blank" href="/search/python%E8%8E%B7%E5%8F%96%E5%AD%90%E8%BF%9B%E7%A8%8B%E8%BF%94%E5%9B%9E%E5%80%BC/1.htm">python获取子进程返回值</a> <div>在实际使用多进程的时候,可能需要获取到子进程运行的返回值。如果只是用来存储,则可以将返回值保存到一个数据结构中;如果需要判断此返回值,从而决定是否继续执行所有子进程,则会相对比较复杂。另外在Multiprocessing中,可以利用Process与Pool创建子进程,这两种用法在获取子进程返回值上的写法上也不相同。这篇中,我们直接上代码,分析多进程中获取子进程返回值的不同用法,以及优缺点。初级用法</div> </li> <li><a href="/article/1835429074617593856.htm" title="【数据结构-一维差分】力扣2848. 与车相交的点" target="_blank">【数据结构-一维差分】力扣2848. 与车相交的点</a> <span class="text-muted">hlc@</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>给你一个下标从0开始的二维整数数组nums表示汽车停放在数轴上的坐标。对于任意下标i,nums[i]=[starti,endi],其中starti是第i辆车的起点,endi是第i辆车的终点。返回数轴上被车任意部分覆盖的整数点的数目。示例1:输入:nums=[[3,6],[1,5],[4,7]]输出:7解释:从1到7的所有点都至少与一辆车相交,因此答案为7。示例2:输入:nums=[[1,3],[5</div> </li> <li><a href="/article/1835428948339683328.htm" title="JavaScript `Map` 和 `WeakMap`详细解释" target="_blank">JavaScript `Map` 和 `WeakMap`详细解释</a> <span class="text-muted">跳房子的前端</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/%E5%8E%9F%E7%94%9F%E6%96%B9%E6%B3%95/1.htm">原生方法</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>在JavaScript中,Map和WeakMap都是用于存储键值对的数据结构,但它们有一些关键的不同之处。MapMap是一种可以存储任意类型的键值对的集合。它保持了键值对的插入顺序,并且可以通过键快速查找对应的值。Map提供了一些非常有用的方法和属性来操作这些数据对:set(key,value):将一个键值对添加到Map中。如果键已经存在,则更新其对应的值。get(key):获取指定键的值。如果键</div> </li> <li><a href="/article/1835428821877223424.htm" title="计算机毕业设计PHP仓储综合管理系统(源码+程序+VUE+lw+部署)" target="_blank">计算机毕业设计PHP仓储综合管理系统(源码+程序+VUE+lw+部署)</a> <span class="text-muted">java毕设程序源码王哥</span> <a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1/1.htm">课程设计</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a> <div>该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流项目运行环境配置:phpStudy+Vscode+Mysql5.7+HBuilderX+Navicat11+Vue+Express。项目技术:原生PHP++Vue等等组成,B/S模式+Vscode管理+前后端分离等等。环境需要1.运行环境:最好是小皮phpstudy最新版,我们在这个版本上开发的。其他版本理论上也可以。2.开发</div> </li> <li><a href="/article/1835421888088731648.htm" title="MyBatis 详解" target="_blank">MyBatis 详解</a> <span class="text-muted">阿贾克斯的黎明</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a> <div>目录目录一、MyBatis是什么二、为什么使用MyBatis(一)灵活性高(二)性能优化(三)易于维护三、怎么用MyBatis(一)添加依赖(二)配置MyBatis(三)创建实体类和接口(四)使用MyBatis一、MyBatis是什么MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。它可以通过简</div> </li> <li><a href="/article/122.htm" title="java数字签名三种方式" target="_blank">java数字签名三种方式</a> <span class="text-muted">知了ing</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a> <div>以下3钟数字签名都是基于jdk7的 1,RSA String password="test"; // 1.初始化密钥 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); keyPairGenerator.initialize(51</div> </li> <li><a href="/article/249.htm" title="Hibernate学习笔记" target="_blank">Hibernate学习笔记</a> <span class="text-muted">caoyong</span> <a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a> <div>1>、Hibernate是数据访问层框架,是一个ORM(Object Relation Mapping)框架,作者为:Gavin King 2>、搭建Hibernate的开发环境      a>、添加jar包:      aa>、hibernatte开发包中/lib/required/所</div> </li> <li><a href="/article/376.htm" title="设计模式之装饰器模式Decorator(结构型)" target="_blank">设计模式之装饰器模式Decorator(结构型)</a> <span class="text-muted">漂泊一剑客</span> <a class="tag" taget="_blank" href="/search/Decorator/1.htm">Decorator</a> <div>1. 概述        若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性。如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继承这个类来产生一个新类—这建立在额外的代码上。       </div> </li> <li><a href="/article/503.htm" title="读取磁盘文件txt,并输入String" target="_blank">读取磁盘文件txt,并输入String</a> <span class="text-muted">一炮送你回车库</span> <a class="tag" taget="_blank" href="/search/String/1.htm">String</a> <div>public static void main(String[] args) throws IOException {    String fileContent = readFileContent("d:/aaa.txt");    System.out.println(fileContent);    </div> </li> <li><a href="/article/630.htm" title="js三级联动下拉框" target="_blank">js三级联动下拉框</a> <span class="text-muted">3213213333332132</span> <a class="tag" taget="_blank" href="/search/%E4%B8%89%E7%BA%A7%E8%81%94%E5%8A%A8/1.htm">三级联动</a> <div> //三级联动 省/直辖市<select id="province"></select> 市/省直辖<select id="city"></select> 县/区 <select id="area"></select> </div> </li> <li><a href="/article/757.htm" title="erlang之parse_transform编译选项的应用" target="_blank">erlang之parse_transform编译选项的应用</a> <span class="text-muted">616050468</span> <a class="tag" taget="_blank" href="/search/parse_transform/1.htm">parse_transform</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">游戏服务器</a><a class="tag" taget="_blank" href="/search/%E5%B1%9E%E6%80%A7%E5%90%8C%E6%AD%A5/1.htm">属性同步</a><a class="tag" taget="_blank" href="/search/abstract_code/1.htm">abstract_code</a> <div>         最近使用erlang重构了游戏服务器的所有代码,之前看过C++/lua写的服务器引擎代码,引擎实现了玩家属性自动同步给前端和增量更新玩家数据到数据库的功能,这也是现在很多游戏服务器的优化方向,在引擎层面去解决数据同步和数据持久化,数据发生变化了业务层不需要关心怎么去同步给前端。由于游戏过程中玩家每个业务中玩家数据更改的量其实是很少</div> </li> <li><a href="/article/884.htm" title="JAVA JSON的解析" target="_blank">JAVA JSON的解析</a> <span class="text-muted">darkranger</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> // { // “Total”:“条数”, // Code: 1, // // “PaymentItems”:[ // { // “PaymentItemID”:”支款单ID”, // “PaymentCode”:”支款单编号”, // “PaymentTime”:”支款日期”, // ”ContractNo”:”合同号”, // </div> </li> <li><a href="/article/1011.htm" title="POJ-1273-Drainage Ditches" target="_blank">POJ-1273-Drainage Ditches</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/ACM_POJ/1.htm">ACM_POJ</a> <div>POJ-1273-Drainage Ditches http://poj.org/problem?id=1273 基本的最大流,按LRJ的白书写的 #include<iostream> #include<cstring> #include<queue> using namespace std; #define INF 0x7fffffff int ma</div> </li> <li><a href="/article/1138.htm" title="工作流Activiti5表的命名及含义" target="_blank">工作流Activiti5表的命名及含义</a> <span class="text-muted">atongyeye</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C%E6%B5%81/1.htm">工作流</a><a class="tag" taget="_blank" href="/search/Activiti/1.htm">Activiti</a> <div>activiti5 - http://activiti.org/designer/update在线插件安装 activiti5一共23张表 Activiti的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。 ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。 A</div> </li> <li><a href="/article/1265.htm" title="android的广播机制和广播的简单使用" target="_blank">android的广播机制和广播的简单使用</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E5%B9%BF%E6%92%AD%E6%9C%BA%E5%88%B6/1.htm">广播机制</a><a class="tag" taget="_blank" href="/search/%E5%B9%BF%E6%92%AD%E7%9A%84%E6%B3%A8%E5%86%8C/1.htm">广播的注册</a> <div>      Android广播机制简介 在Android中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理。这个广播跟我们传统意义中的电台广播有些相似之处。之所以叫做广播,就是因为它只负责“说”而不管你“听不听”,也就是不管你接收方如何处理。另外,广播可以被不只一个应用程序所接收,当然也可能不被任何应</div> </li> <li><a href="/article/1392.htm" title="Spring事务传播行为详解" target="_blank">Spring事务传播行为详解</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E4%BA%8B%E5%8A%A1%E4%BC%A0%E6%92%AD%E8%A1%8C%E4%B8%BA/1.htm">事务传播行为</a> <div>        在service类前加上@Transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。         Spring默认情况下会对运行期例外(RunTimeException)进行事务回滚。这</div> </li> <li><a href="/article/1519.htm" title="eidtplus operate" target="_blank">eidtplus operate</a> <span class="text-muted">征客丶</span> <a class="tag" taget="_blank" href="/search/eidtplus/1.htm">eidtplus</a> <div>开启列模式: Alt+C 鼠标选择   OR   Alt+鼠标左键拖动 列模式替换或复制内容(多行): 右键-->格式-->填充所选内容-->选择相应操作 OR Ctrl+Shift+V(复制多行数据,必须行数一致) -------------------------------------------------------</div> </li> <li><a href="/article/1646.htm" title="【Kafka一】Kafka入门" target="_blank">【Kafka一】Kafka入门</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a> <div>这篇文章来自Spark集成Kafka(http://bit1129.iteye.com/blog/2174765),这里把它单独取出来,作为Kafka的入门吧   下载Kafka http://mirror.bit.edu.cn/apache/kafka/0.8.1.1/kafka_2.10-0.8.1.1.tgz 2.10表示Scala的版本,而0.8.1.1表示Kafka</div> </li> <li><a href="/article/1773.htm" title="Spring 事务实现机制" target="_blank">Spring 事务实现机制</a> <span class="text-muted">BlueSkator</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%90%86/1.htm">代理</a><a class="tag" taget="_blank" href="/search/%E4%BA%8B%E5%8A%A1/1.htm">事务</a> <div>Spring是以代理的方式实现对事务的管理。我们在Action中所使用的Service对象,其实是代理对象的实例,并不是我们所写的Service对象实例。既然是两个不同的对象,那为什么我们在Action中可以象使用Service对象一样的使用代理对象呢?为了说明问题,假设有个Service类叫AService,它的Spring事务代理类为AProxyService,AService实现了一个接口 </div> </li> <li><a href="/article/1900.htm" title="bootstrap源码学习与示例:bootstrap-dropdown(转帖)" target="_blank">bootstrap源码学习与示例:bootstrap-dropdown(转帖)</a> <span class="text-muted">BreakingBad</span> <a class="tag" taget="_blank" href="/search/bootstrap/1.htm">bootstrap</a><a class="tag" taget="_blank" href="/search/dropdown/1.htm">dropdown</a> <div>bootstrap-dropdown组件是个烂东西,我读后的整体感觉。 一个下拉开菜单的设计: <ul class="nav pull-right"> <li id="fat-menu" class="dropdown"> </div> </li> <li><a href="/article/2027.htm" title="读《研磨设计模式》-代码笔记-中介者模式-Mediator" target="_blank">读《研磨设计模式》-代码笔记-中介者模式-Mediator</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ /* * 中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。 * 中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 * * 在我看来,Mediator模式是把多个对象(</div> </li> <li><a href="/article/2154.htm" title="常用代码记录" target="_blank">常用代码记录</a> <span class="text-muted">chenjunt3</span> <a class="tag" taget="_blank" href="/search/UI/1.htm">UI</a><a class="tag" taget="_blank" href="/search/Excel/1.htm">Excel</a><a class="tag" taget="_blank" href="/search/J%23/1.htm">J#</a> <div>  1、单据设置某行或某字段不能修改 //i是行号,"cash"是字段名称 getBillCardPanelWrapper().getBillCardPanel().getBillModel().setCellEditable(i, "cash", false); //取得单据表体所有项用以上语句做循环就能设置整行了 getBillC</div> </li> <li><a href="/article/2281.htm" title="搜索引擎与工作流引擎" target="_blank">搜索引擎与工作流引擎</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/1.htm">搜索引擎</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%BA%94%E7%94%A8/1.htm">网络应用</a> <div>      最近在公司做和搜索有关的工作,(只是简单的应用开源工具集成到自己的产品中)工作流系统的进一步设计暂时放在一边了,偶然看到谷歌的研究员吴军写的数学之美系列中的搜索引擎与图论这篇文章中的介绍,我发现这样一个关系(仅仅是猜想)   -----搜索引擎和流程引擎的基础--都是图论,至少像在我在JWFD中引擎算法中用到的是自定义的广度优先</div> </li> <li><a href="/article/2408.htm" title="oracle Health Monitor" target="_blank">oracle Health Monitor</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/Health+Monitor/1.htm">Health Monitor</a> <div>About Health Monitor Beginning with Release 11g, Oracle Database includes a framework called Health Monitor for running diagnostic checks on the database. About Health Monitor Checks Health M</div> </li> <li><a href="/article/2535.htm" title="JSON字符串转换为对象" target="_blank">JSON字符串转换为对象</a> <span class="text-muted">dieslrae</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a> <div>    作为前言,首先是要吐槽一下公司的脑残编译部署方式,web和core分开部署本来没什么问题,但是这丫居然不把json的包作为基础包而作为web的包,导致了core端不能使用,而且我们的core是可以当web来用的(不要在意这些细节),所以在core中处理json串就是个问题.没办法,跟编译那帮人也扯不清楚,只有自己写json的解析了.   </div> </li> <li><a href="/article/2662.htm" title="C语言学习八结构体,综合应用,学生管理系统" target="_blank">C语言学习八结构体,综合应用,学生管理系统</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/C%E8%AF%AD%E8%A8%80/1.htm">C语言</a> <div>实现功能的代码: # include <stdio.h> # include <malloc.h> struct Student { int age; float score; char name[100]; }; int main(void) { int len; struct Student * pArr; int i,</div> </li> <li><a href="/article/2789.htm" title="vagrant学习笔记" target="_blank">vagrant学习笔记</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/vagrant/1.htm">vagrant</a> <div>想了解多主机是如何定义和使用的, 所以又学习了一遍vagrant   1. vagrant virtualbox 下载安装 https://www.vagrantup.com/downloads.html https://www.virtualbox.org/wiki/Downloads   查看安装在命令行输入vagrant     2.</div> </li> <li><a href="/article/2916.htm" title="14.性能优化-优化-软件配置优化" target="_blank">14.性能优化-优化-软件配置优化</a> <span class="text-muted">frank1234</span> <a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E9%85%8D%E7%BD%AE/1.htm">软件配置</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a> <div>1.Tomcat线程池 修改tomcat的server.xml文件: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxThreads="1200" m</div> </li> <li><a href="/article/3043.htm" title="一个不错的shell 脚本教程 入门级" target="_blank">一个不错的shell 脚本教程 入门级</a> <span class="text-muted">HarborChung</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a> <div>一个不错的shell 脚本教程 入门级 建立一个脚本   Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在 bash的大姐,bourne shell中运行)。   如同其他语言一样</div> </li> <li><a href="/article/3170.htm" title="Spring4新特性——核心容器的其他改进" target="_blank">Spring4新特性——核心容器的其他改进</a> <span class="text-muted">jinnianshilongnian</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E4%BB%A3%E7%90%86/1.htm">动态代理</a><a class="tag" taget="_blank" href="/search/spring4/1.htm">spring4</a><a class="tag" taget="_blank" href="/search/%E4%BE%9D%E8%B5%96%E6%B3%A8%E5%85%A5/1.htm">依赖注入</a> <div>Spring4新特性——泛型限定式依赖注入 Spring4新特性——核心容器的其他改进 Spring4新特性——Web开发的增强 Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC  Spring4新特性——Groovy Bean定义DSL Spring4新特性——更好的Java泛型操作API  Spring4新</div> </li> <li><a href="/article/3297.htm" title="Linux设置tomcat开机启动" target="_blank">Linux设置tomcat开机启动</a> <span class="text-muted">liuxingguome</span> <a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%9C%BA%E8%87%AA%E5%90%AF%E5%8A%A8/1.htm">开机自启动</a> <div>执行命令sudo gedit /etc/init.d/tomcat6 然后把以下英文部分复制过去。(注意第一句#!/bin/sh如果不写,就不是一个shell文件。然后将对应的jdk和tomcat换成你自己的目录就行了。 #!/bin/bash # # /etc/rc.d/init.d/tomcat # init script for tomcat precesses</div> </li> <li><a href="/article/3424.htm" title="第13章 Ajax进阶(下)" target="_blank">第13章 Ajax进阶(下)</a> <span class="text-muted">onestopweb</span> <a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a> <div>index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/</div> </li> <li><a href="/article/3551.htm" title="Troubleshooting Crystal Reports off BW" target="_blank">Troubleshooting Crystal Reports off BW</a> <span class="text-muted">blueoxygen</span> <a class="tag" taget="_blank" href="/search/BO/1.htm">BO</a> <div>http://wiki.sdn.sap.com/wiki/display/BOBJ/Troubleshooting+Crystal+Reports+off+BW#TroubleshootingCrystalReportsoffBW-TracingBOE   Quite useful, especially this part: SAP BW connectivity For t</div> </li> <li><a href="/article/3678.htm" title="Java开发熟手该当心的11个错误" target="_blank">Java开发熟手该当心的11个错误</a> <span class="text-muted">tomcat_oracle</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a> <div>#1、不在属性文件或XML文件中外化配置属性。比如,没有把批处理使用的线程数设置成可在属性文件中配置。你的批处理程序无论在DEV环境中,还是UAT(用户验收 测试)环境中,都可以顺畅无阻地运行,但是一旦部署在PROD 上,把它作为多线程程序处理更大的数据集时,就会抛出IOException,原因可能是JDBC驱动版本不同,也可能是#2中讨论的问题。如果线程数目 可以在属性文件中配置,那么使它成为</div> </li> <li><a href="/article/3805.htm" title="正则表达式大全" target="_blank">正则表达式大全</a> <span class="text-muted">yang852220741</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a> <div>今天向大家分享正则表达式大全,它可以大提高你的工作效率 正则表达式也可以被当作是一门语言,当你学习一门新的编程语言的时候,他们是一个小的子语言。初看时觉得它没有任何的意义,但是很多时候,你不得不阅读一些教程,或文章来理解这些简单的描述模式。 一、校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>