oracle随系统启动而启动

cs65-64桌面版
orcle-11.2.0.4

启动监听器,后台进程,OEM.

注意:

如果只做一和三,只能启动后台进程,监听器不启动,
如果只做二和三,只能启动监听器,不能启动后台进程。
三步都做,才能正常启动。

一、
vi /etc/oratab
将默认的N改为Y,这一步的Y/N控制数据库的启动,也就是那些后台进程的启动与否
fzf:/u01/app/oracle/product/11.2.0/dbhome_1:Y

二、
vi $ORACLE_HOME/bin/dbstart
编辑 dbstart和dbshut脚本,将ORACLE_HOME_LISTNER=$1修改成ORACLE_HOME_LISTNER=$ORACLE_HOME

三、
vi /etc/rc.d/rc.local
切换到root用户,添加下面两行,如果有命令后面有参数,须用双引号引起来。
su - oracle -lc /u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart

su - oracle -lc "/u01/app/oracle/product/11.2.0/dbhome_1/bin/emctl start dbconsole"

在不修改第二步的情况下。
在dbstart后面经测试不管是加 $ORACLE_HOME,还是/u01/app/oracle/product/11.2.0/dbhome_1/,都不能启动监听器
但是在oracle用户下执行$ORACLE_HOME/bin/dbstart $ORACLE_HOME却是成功的

同是会有三个相关日志文件生成
$ORACLE_HOME/listenr.log,shutdown.log,startup.log
OEM日志路径$ORACLE_HOME/oracle1.aa.com_orcl/sysman/log/

下面是另一种方法(未经本人测试)

1、添加启动项
[root@db01 ~]# cat >> /etc/rc.d/rc.local <<EOFsu - Oracle -c "lsnrctl start"
su - oracle -c "sqlplus sys/oracle as sysdba @/home/oracle/.script/.startup"
su - oracle -c "emctl start dbconsole"
EOF2、创建并编辑启动文件
[root@db01 ~]#su - oracle
[root@db01 ~]#mkdir -p /home/oracle/.script/[root@db01 ~]# cat > /home/oracle/.script/.startup <<EOF
startup;
alter system register;
exit 0
EOF

创建数据库两种方法

1.dbca如果是asm环境,须用asmca
2.手动创建

dbca

netca

emca

asmca

参数文件位置
[root@localhost ~]# cd /u01/app/oracle/product/11.2.0/dbhome_1/dbs/
[root@localhost dbs]# ls
hc_orcl.dat  init.ora  lkORCL  orapworcl  spfileorcl.ora
参数文件里包含数据库初始化参数,用于设置数据库实例和数据库的运行特征及使用限制。

oracle支持两种类型的参数文件,oracle按照参数文件的设定启动实例并打开数据库
initorcl.ora是实例的文本参数文件        文本型必须通过手工修改
spfileoracl.ora是实例的服务器参数文件    二进制型通过alter system命令修改

pfile    文本型,通常命名为initSID.ora,pfile并不一定存在,可以手动创建,过程如下
sqlplus / as sysdba
SQL> create pfile from spfile;
File created.
spfile     二进制,通常命名为spfileSID.ora。

参数大多使用了默认值,因此参数文件里的参数实际上是非默认的参数。11gr1,r2支持289-342个显式参数,还有相当多未文档化的隐式参数。

Oracle 9i以后启动的时候默认使用的初始化文件是spfile,但是如何判断数据库启动是使用spfile还是pfile初始化文件.可以以下方法,
1、show parameter spfile
2、show parameter pfile
3、看v$spparameter视图

[oracle@localhost dbs]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Fri Jul 10 15:17:59 2015

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> conn / as sysdba
Connected.

下面是修改为pfile启动过程
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> create pfile from spfile;

File created.
也可以用 create spfile from pfile,二者可以相互转化。
SQL> startup pfile=$ORACLE_HOME/dbs/initorcl.ora
ORACLE instance started.

Total System Global Area 1653518336 bytes
Fixed Size                  2213896 bytes
Variable Size            1006635000 bytes
Database Buffers          637534208 bytes
Redo Buffers                7135232 bytes
Database mounted.
Database opened.
SQL> show parameter spfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string
SQL> show parameter pfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string
SQL> select decode(count(*),1,'spfile','pfile') from v$spparameter where rownum=1 and isspecified = 'TRUE';

DECODE
------
pfile

[oracle@localhost dbs]$ sqlplus /nologSQL*Plus: Release 11.2.0.1.0 Production on Fri Jul 10 15:29:14 2015Copyright (c) 1982, 2009, Oracle.  All rights reserved.SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.Total System Global Area 1653518336 bytes
Fixed Size                  2213896 bytes
Variable Size            1006635000 bytes
Database Buffers          637534208 bytes
Redo Buffers                7135232 bytes
Database mounted.
Database opened.
SQL> show parameter spfileNAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfileorcl.ora

通过spfile启动,用alter system修改参数

[oracle@localhost dbs]$ sqlplus /nologSQL*Plus: Release 11.2.0.1.0 Production on Fri Jul 10 15:32:51 2015Copyright (c) 1982, 2009, Oracle.  All rights reserved.SQL> conn / as sysdba
Connected.
SQL> alter system set sga_max_size=1524M scope=spfile;System altered.SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.Total System Global Area 1603411968 bytes
Fixed Size                  2213776 bytes
Variable Size             956303472 bytes
Database Buffers          637534208 bytes
Redo Buffers                7360512 bytes
Database mounted.
Database opened.
SQL> show parameter sga_max_sizeNAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_max_size                         big integer 1536M

动态参数是指在运行过程中可以动态修改的参数
静态参数是指必须通过重启来调整的参数,随着oracle的不断升级,参数逐渐动态化,在11g中,静态已没有几个了。
SQL> show parameter optimizer_index_cachingNAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
optimizer_index_caching              integer     0
SQL> alter system set optimizer_index_caching=50 scope=both;
both的含义是指在内存与文件中,并且立刻生效。重启oracle后还是生效。
如果改为memory,则只对当前实例有效,即内存中,重启后失效。
如果改为spfile,则对当前实例无效,重启后生效。
一些参数也可以在会话级使用alter session来调整,如
alter session set sql_trace=true;
SQL> alter system set parallel_max_servers=100 scope=memory;System altered.SQL> show parameter optimizer_index_cachingNAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
optimizer_index_caching              integer     50
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.Total System Global Area 1603411968 bytes
Fixed Size                  2213776 bytes
Variable Size             956303472 bytes
Database Buffers          637534208 bytes
Redo Buffers                7360512 bytes
Database mounted.
Database opened.
SQL> show parameter optimizer_index_cachingNAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
optimizer_index_caching              integer     50

[oracle@oracle1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Thu Sep 15 13:05:23 2016

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup nomountORACLE instance started.

Total System Global Area 1.3362E+10 bytesFixed Size                  2265864 bytesVariable Size            6777998584 bytesDatabase Buffers         6576668672 bytesRedo Buffers                4911104 bytesSQL> select instance_name,status from v$instance;

INSTANCE_NAME    STATUS---------------- ------------fzf              STARTED

SQL> select value from v$spparameter where name='control_files';

VALUE--------------------------------------------------------------------------------/u01/app/oracle/oradata/fzf/control01.ctl/u01/app/oracle/fast_recovery_area/fzf/control02.ctl

SQL> alter database mount;

Database altered.

SQL> select instance_name,status from v$instance;

INSTANCE_NAME    STATUS---------------- ------------fzf              MOUNTED

将数据库带到mount状态select value from v$spparameter where name='control_files';Alter database mount;Mount数据库的过程是读参数文件中描述的控制文件,校验控制文件的正确性,将控制文件的内容读入到内存,mount是挂接的意思,是操作系统中的概念.一旦mount之后,就是将一个没有意义的实例和一个数据库发生了联系.因为实例是空壳.没有任何数据库和该实例发生关系,我们可以理解为实例是水泵,放到哪个水塘里就会抽取哪里的数据,实例是通用的.mount的意思是将一个通用的水泵放入到指定的水塘.mount是读控制文件,控制文件中有数据文件和日志文件的信息.select instance_name,status from v$instance;

打开数据库Alter database open;读控制文件中描述的数据文件验证数据文件的一致性,如果不一致,使用日志文件将数据库文件恢复到一致的状态.数据库open后,普通用户才可以访问数据库用户的表才为可见只读方式open数据库Alter database open read only;select OPEN_MODE from v$database;默认的open方式为read write想改read only为read write 必须重新启动数据库我们现在回想一下数据库启动的三个台阶,我们先读的是参数文件,参数文件可以有我们来编写.读完参数文件后又读了控制文件,控制文件描述了数据文件和日志文件的信息,如果控制文件丢失可以重新建立,最后是读数据文件.数据文件里才存放了我们的数据.数据库将启动分为三个台阶,目的是我们可以准确的知道哪里有问题,迅速的排除.有点象老鼠拖木钎,大头在后面.由最开始的一个1k的参数文件,最后到几个t的大型数据库.当我们只打startup而不加任何参数的时候.默认是到open,等于startup open;SQL> startupORACLE instance started.

以 oracle 用户如下命令:  $cd $ORACLE_HOME/dbs  -- 查看参数文件  $ls  $sqlplus "/ as sysdba"  SQL> startup nomount  说明:      启动到nomount 状态,这个阶段数据库读取参数文件(spfile/pfile)文件中的参数,启动数据库实例。      初始化参数文件默认位置在 $ORACLE_HOME/dbs 目录下,      Oracle9i 初始化参数文件的读取顺序是 spfile<sid>.ora --> spfile.ora --> init<sid>.ora        这一阶段主要是指定控制文件及数据库实例名, 分配系统全局区 ,启动后台进程 ,打开alertSID.log文件和跟踪文件。

  启动数据库到 nomount 状态以后, Oracle 就可以从参数文件中获得控制文件的位置信息。  找到控制文件, 并锁定控制文件。  以 oracle 用户执行如下命令:   SQL>alter database mount;  SQL>select * from v$control_files;  说明:      启动到mount状态,这个阶段数据库打开控制文件,验证控制文件。      在 mount 数据库阶段, 会读取口令文件, 该文件缺省位于:$ORACLE_HOME/dbs/orapw<sid> 或 orapwd      在数据库没有启动之前, 数据库内建用户是无法通过数据库本身来验证身份的,正是通过口令文件,      Oracle 实现对用户的身份认证, 在数据库未启动之前登陆,启动数据库。      如果丢失了口令文件, 在mount 阶段就会报错, 并无法启动数据库。      将数据库与一个已打开的实例相关联, 打开控制文件, 计算 mount id  并写入控制文件。      获取数据文件和重做日志文件的名称和状态。      此时数据库的基本结构信息都能够查询了,但是还不能查询用户表的内容。 

启动数据库到 mount 状态以后, Oracle 就可以从控制文件中获得数据文件、日志文件的位置信息、  检查点信息等重要信息, 并在 open 阶段, Oralce 可以根据控制文件中记录的这些信息找到文件,  然后进行检查点及完整性检查。如果不存在问题就可以启动数据库,  如果存在不一致或文件丢失则需要进行恢复。  以 oracle 用户如下命令:   SQL>alter database open;

  说明:启动到open状态,这个阶段数据库打开控制文件里描述的文件。        在完成数据库的验证和恢复过程后, 数据库处于一致的状态,        数据库还需要进行一系列的处理过程:将UNDO 段在线等操作,        然后数据库就可以提供访问, 同时SMON 可以开始进行事务回滚。

SQL> alter database mount;
Database altered.
SQL> alter database open read only;
Database altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
启动为限制模式,限制模式打开的数据库只有具备管理权限的数据库用户才能访问。
例如具有restricted session权限或dba角色的数据库用户。
管理员往往在执行数据库结构调整及数据库维护期间,为防止普通用户访问,则以限制模式启动数据库。
SQL> startup restrict
ORACLE instance started.
Total System Global Area 1603411968 bytes
Fixed Size                  2213776 bytes
Variable Size             956303472 bytes
Database Buffers          637534208 bytes
Redo Buffers                7360512 bytes
Database mounted.
Database opened.
将受限转为正常
SQL> alter system disable restricted session;
System altered.关闭的四种方式
shutdown normal|transactional|immediate|abort
shutdown 等同于shutdown normal检查数据库状态
SQL> select database_status from v$instance;
DATABASE_STATUS
-----------------
ACTIVE
挂起/暂停数据库
SQL> alter system suspend;
System altered.
SQL> select database_status from v$instance;
DATABASE_STATUS
-----------------
SUSPENDED
恢复数据库
SQL> alter system resume;
System altered.
SQL> select database_status from v$instance;
DATABASE_STATUS
-----------------
ACTIVE

http://blog.csdn.net/pan_tian/article/details/41160155  shutdown关闭图解挺直观的

1、shutdown normal    正常方式关闭数据库。 通常很慢

2、shutdown immediate    立即方式关闭数据库。    在SVRMGRL中执行shutdown immediate,数据库并不立即关闭,    而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源),    当使用shutdown不能关闭数据库时,shutdown immediate可以完成数据库关闭的操作。

3、shutdown abort    直接关闭数据库,正在访问数据库的会话会被突然终止,    如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长时间--------------------------------------------------------shutdown abort 的时候,跟kill 进程是一样的效果数据库立即关闭,这个时候文件状态可能不一致因为正常关闭数据库会同步校验各文件,使得重新启动的时候文件时间点一致并且不用进行崩溃恢复

若检查点信息一致,则做崩溃恢复若检查点信息不一致(正好在更新文件头)则需要做介质恢复

这些问题都好处理,最怕的问题是这个时候系统有大量IO,结果这样造成写的突然中断,碰巧造成文件块的逻辑坏块,那麻烦比较大一些,尤其是系统表空间的block损坏

虽然shutdown abort 出错的几率很小,1000个人可能只有一个人碰到,但是我们还是要小心。正确的处理流程是,shutdown immediate ,若数据库迟迟不能down下来,在os上观察IO状况,几乎没有io的时候,另开一窗口shutdown  abort ,几乎不会出问题了--------------------------------------------------------http://www.itpub.net/showthread.php?threadid=180315&pagenumber= 先用IMMEDIATE来DOWN,实在不行了,看一下数据库文件上没IO了,再用ABORT ------------------------------------------------------------------------------你可以尝试先在系统级杀掉非后台Oracle进程,在连接shutdown immediate就安全多了

在Oracle8i里,当数据库失去响应以后,你在操作系统上杀掉用户进程后,一般数据库就可以恢复正常了-------------------------------------------------------------------------------先 shutdown immediate 应该是首选然后不行再重新shutdown abort其实起不来也是因为os的缘故,在文件正在写的时候出现问题导致文件不一致或者损坏……

用 ps -ef|grep smon
看你当前有多少个已经启动的实例,

没启动的,只能去$ORACLE_HOME/dbs下面去数你有多少init文件了。
如果你有多个ORACLE HOME,那就挨个数吧

在创建库的时候创建了一个实例库,这样的话Oracle中就会有两个实例库,一个是自带的ORCL,另外一个是自己创建的NewOrcl,怎么才能区分出来当前使用的是哪个实例库呢?根据SID,如想用哪个库修改成哪个库的实例名就行了。

http://blog.itpub.net/10896118/viewspace-1044094/

ORACLE_SID和ORACLE_HOME是最基本的必须设置的两个环境变量。

下面,摘录一段TOM大师光辉著作《Expert Oracle Database Architecture 》的原文:

If you’re unfamiliar with the term SID or ORACLE_SID, a full definition is called for. The SID is a site identifier. It and ORACLE_HOME (where the Oracle software is installed) are hashed together in UNIX to create a unique key name for attaching an SGA. If your ORACLE_SID or ORACLE_HOME is not set correctly, you’ll get the ORACLE NOT AVAILABLE error, since you can’t attach to a shared memory segment that is identified by this unique key. On Windows, shared memory isn’t used in the same fashion as UNIX, but the SID is stillimportant. You can have more than one database on the same ORACLE_HOME, so you need a way to uniquely identify each one, along with their configuration files.
根据Tom大师所说的,在Unix/Linux下,Oracle的实例是有一块共享内存(SGA)和一组后台进程组成的,

Oracle使用ORACLE_HOME和ORACLE_SID进行hash,得到一个key,
Oracle根据这个key来寻找SGA,如果不设置这两个环境变量,oracle就无法找到分配的SGA,
也就无法连接到实例。这也是这两个环境变量为什么必须设置的原因。

[@more@]我们可以利用oracle自带的sysresv工具查看到

[oracle@db ~]$ sysresv

IPC Resources for ORACLE_SID "orcl" :
Shared Memory:
ID        KEY
7045138     0x00000000
7077908     0x00000000
7110677     0x42e38fd0
Semaphores:
ID        KEY
589826      0x89a83438
Oracle Instance alive for sid "orcl"

另外,使用ipcs也可以看到共享内存与信号量的情况
[oracle@db ~]$ ipcs -m |grep 138
0x00000000 7045138    oracle     640        33554432   40                      
[oracle@db ~]$ ipcs -m |grep 908
0x00000000 7077908    oracle     640        3087007744 40                      
[oracle@db ~]$ ipcs -m |grep 677
0x42e38fd0 7110677    oracle     640        2097152    40                      
[oracle@db ~]$ ipcs -s |grep 826
0x89a83438 589826     oracle     640        154  
可以看到,两者是对应的。

由上面的结论可知,在相同的ORACLE_HOME下,必须使用不同ORACLE_SID来区分不同的实例,
在不同的ORACLE_HOME下,可以有相同的ORACLE_SID,Oracle照样可以区分不同的实例,
这点在盖国强先生的《深入解析Oracle》中也得到了验证。

1:ORACLE使用环境变量里(ORACLE_SID+ORACLE_HOME)的值进行hash运算,来确定SGA区的内存地址。
2:如果当你使用sqlplus / as sysdba 连接到一个idle的instance时,表示你使用的(ORACLE_SID+ORACLE_HOME) hash后的值在内存中没有找到相应的sga区,一个可能是数据库没有启动,另一个可能是和当前正在运行的数据库的(ORACLE_SID+ORACLE_HOME)内容不相同,导致你没有正确的连接到当前的数据库的SGA。

在提交startup命令之后,在上述目录下Oracle会自动按照如下的顺序查找参数文件完成数据库的启动。
   1)spfile$ORACLE_SID.ora
   2)spfile.ora
   3)init$ORACLE_SID.ora

注意事项
这里强调指出的一个问题是:不可像显式使用特定pfile的方法去使用spfile!
虽然可以显式指定具体pfile作为启动数据库的参数文件,但这里需要注意的是,不可以显式指定某个spfile作为启动的参数文件。
下面的用法是不正确的。
SQL> startup spfile=$ORACLE_HOME/dbs/spfilefgy.ora
SP2-0714: invalid combination of STARTUP options
错误提示:startup命令后面跟随的选项不正确。原因很简单,spfile作为系统参数文件是在启动过程中自动识别到的,其命名规则也是固定的。因此请不要尝试显式的去使用spfile启动数据库。
此时,如果我们显式的使用pfile是可以完成数据库的启动。
sys@ora10g> startup pfile='?/dbs/initora10g.ora';

http://blog.chinaunix.net/uid-26190190-id-2420722.html

http://www.cnblogs.com/smartvessel/archive/2009/07/06/1517690.html

oracle参数文件与启动过程相关推荐

  1. oracle:instance与database,启动过程

    oracle server主要由两个部分组成:instance和database. instance是指一组后台进程(在windows上是一组线程)和一块共享内存区域.database是指存储在磁盘上 ...

  2. oracle参数文件initorcl位置,ORACLE参数文件

    ORACLE参数文件 简介 参数文件记录了数据库的配置.在数据库启动时,Oracle要根据参数文件中的参数配置数据库.如果为各个内存池分配多少内存,允许打开的进程数和会话数等.要让数据库启动,必须先读 ...

  3. oracle参数文件initorcl位置,oracle 参数文件详解

    参数文件 两类参数文件: pfile:文本文件的参数文件,可以使用vi,vim等编辑器修改,文件名通常为init.ora spfile:二进制的参数文件,不能直接修改,只能存放在Oracle服务器端, ...

  4. Oracle 参数文件(spfile和pfile)

    Oracle 参数文件(spfile和pfile) --======================== -->Oracle 参数文件 --======================== /* ...

  5. oracle sql文本 参数,ORACLE 参数文件

    参数文件:spfile / pfile 查看目前系统使用的参数文件信息: show parameter spfile; 动态参数文件spfile文件:二进制文件 位置:$ORACLE_HOME/dbs ...

  6. oracle product文件,快速修复Oracle参数文件的另类方法

    DBA的最大悲哀莫过于没有备份好文件. eygle称之为DBA的恶梦.此言甚是! 尽管很多人认为对参数文件的备份并不重要,但你往往就因此吃亏! 参数文件,10.2.0 windows版本Oracle的 ...

  7. oracle参数文件和口令文件

    外部 审核 口令:记录超级用户的用户名和口令,做sys用户的安全审核 oracle9以后全部使用sys登录,但需要使用as sysdba  ,之前版本需要使用internal o7字典打开 只要用户和 ...

  8. oracle参数文件的本质

    环境: SQL> select * from v$version where rownum=1; BANNER ----------------------------------------- ...

  9. Linux内核开发——内核镜像文件及启动过程

    1. 内核镜像文件 1.1. vmlinux vmlinux是elf(Excutable And Linkable),即可执行文件.里面含有调试信息,可用于调试,所以占有空间较大.gcc编译连接之后直 ...

  10. oracle参数文件、控制文件、数据文件、日志文件的位置及查询方法

    参数文件:所有参数文件一般在  $ORACLE_HOME/dbs 下 sqlplus查询语句:show parameter spfile; 网络连接文件: $ORACLE_HOME/dbs/netwo ...

最新文章

  1. 我们是在搞学术,还是被学术搞?
  2. Cisco IOS版本命名规范
  3. [Codeforces50C]Happy Farm 5 凸包
  4. linux盘符改名字,Linux 下powerpath共享磁盘名称不一致处理方法
  5. ue如何使用php文件,UltraEdit使用设置
  6. 光纤收发器在使用过程中有哪些需要注意的事项?
  7. 解决 wamp网站访问慢的问题
  8. 数据库并发抢红包_秒杀场景实践之抢红包
  9. DeepMind新智能体架构Unicorn:持续学习能力胜过多个基准智能体
  10. 数据结构和算法面试题系列—二叉树面试题汇总
  11. k8s+docker集群整合搭建(完整版)
  12. html模板怎样做seo,SEO如何做分享模板做外链
  13. 一位十万粉博主的运营之路
  14. 网页制作存在的一些难点
  15. Pr:抠像与视频合成
  16. 用go写一个docker(9)-初步构造容器
  17. pygame功能--pygame.cursors鼠标模块
  18. Access to XMLHttpRequest at ‘XXX‘ from origin ‘XX‘ has been blocked by CORS policy: No ‘Access-Contr
  19. 汽车中的软件测试(一)
  20. Java数字签名——DSA算法

热门文章

  1. c语言注释部分两侧的分界符号分别是,C语言习题及解答.doc
  2. 最小生成树模板 加 例题分析 (最小生成树类型汇总)
  3. Winform解决界面重绘闪烁的问题
  4. 数学篇--初中数学知识
  5. rtmp,rtsp,hLS区别
  6. 内存非延续分派治理方法
  7. Android开发笔记(成长轨迹)
  8. VC++使用CImage在内存中Bmp转换Jpeg图片
  9. fio性能测试工具新添图形前端gfio
  10. 大型企业网络配置系列课程详解(七) --NAT的配置与相关概念的理解