1. 前提条件

1.1 认证操作系统

Certification Information for Oracle Database on Linux x86-64 (Doc ID 1304727.2)

1)HP-UX 11i V3 patch Bundle Sep/ 2008 (B.11.31.0809.326a) or higher (Part Number E10851-01)

1.2 系统硬件和软件环境检查

1) 系统运行级别

# who -r

--Check the daemon (pwgrd) is running

# ps -aef |grep pwgrd

2) 操作系统版本要求(参考文档ID169706.1)

# uname -a

# /bin/getconf KERNEL_BITS

HP-UX 11i V3 patch Bundle Sep/ 2008 (B.11.31.0809.326a) or higher (Part Number E10851-01)

3) 物理内存至少4G

# /usr/contrib/bin/machinfo|grep -i Memory

4)swap大小(大于16G则设置16G,不满足需要扩容内存。物理内存1G-2G,建议设置为物理内存1.5倍,内存2G-16G,建议设置为物理内存一样大小。)

# /usr/sbin/swapinfo -a

5) tmp至少1G,不满足需扩容

# bdf /tmp

6)软件目录大小建议80g

7)系统软件包

For HP-UX 11i V3 (11.31):

PHCO_40381 11.31 Disk Owner Patch

PHCO_41479 11.31 (fixes an 11.2.0.2 ASM disk discovery issue)

PHKL_38038 VM patch - hot patching/Core file creation directory

PHKL_38938 11.31 SCSI cumulative I/O patch

PHKL_39351 Scheduler patch : post wait hang

PHSS_36354 11.31 assembler patch

PHSS_37042 11.31 hppac (packed decimal)

PHSS_37959 Libcl patch for alternate stack issue fix (QXCR1000818011)

PHSS_39094 11.31 linker + fdp cumulative patch

PHSS_39100 11.31 Math Library Cumulative Patch

PHSS_39102 11.31 Integrity Unwind Library

PHSS_38141 11.31 aC++ Runtime

Pro*C/C++, Oracle Call Interface, Oracle C++

Pro*C/C++, Oracle Call Interface, Oracle C++ Call Interface, Oracle XML Developer's Kit (XDK):-

Patch for HP-UX 11i V3 (11.31) on HP-UX Itanium:-

PHSS_39824 - 11.31 HP C/aC++ Compiler (A.06.23) patch

PHKL_40941 - Scheduler patch : post wait hang

-- 查看系统包是否安装

/usr/sbin/swlist -l bundle

/usr/sbin/swlist -l patch|grep PHCO_40381

/usr/sbin/swlist -l patch|grep PHCO_41479

/usr/sbin/swlist -l patch|grep PHKL_38038

/usr/sbin/swlist -l patch|grep PHKL_38938

/usr/sbin/swlist -l patch|grep PHKL_39351

/usr/sbin/swlist -l patch|grep PHSS_36354

/usr/sbin/swlist -l patch|grep PHSS_37042

/usr/sbin/swlist -l patch|grep PHSS_37959

/usr/sbin/swlist -l patch|grep PHSS_39094

/usr/sbin/swlist -l patch|grep PHSS_39100

/usr/sbin/swlist -l patch|grep PHSS_39102

/usr/sbin/swlist -l patch|grep PHSS_38141

/usr/sbin/swlist -l patch|grep PHSS_39824

/usr/sbin/swlist -l patch|grep PHKL_40941

-- 查看特定补丁包的替代包

/usr/sbin/swlist -l patch -a supersedes | grep -in PHCO_40381

/usr/sbin/swlist -l patch -a supersedes | grep -in PHCO_41479

/usr/sbin/swlist -l patch -a supersedes | grep -in PHKL_38038

/usr/sbin/swlist -l patch -a supersedes | grep -in PHKL_38938

/usr/sbin/swlist -l patch -a supersedes | grep -in PHKL_39351

/usr/sbin/swlist -l patch -a supersedes | grep -in PHSS_36354

/usr/sbin/swlist -l patch -a supersedes | grep -in PHSS_37042

/usr/sbin/swlist -l patch -a supersedes | grep -in PHSS_37959

/usr/sbin/swlist -l patch -a supersedes | grep -in PHSS_39094

/usr/sbin/swlist -l patch -a supersedes | grep -in PHSS_39100

/usr/sbin/swlist -l patch -a supersedes | grep -in PHSS_39102

/usr/sbin/swlist -l patch -a supersedes | grep -in PHSS_38141

/usr/sbin/swlist -l patch -a supersedes | grep -in PHSS_39824

/usr/sbin/swlist -l patch -a supersedes | grep -in PHKL_40941

1.2 Lun分配建议

1) ocr voting:3个1G的lun,ASM对应划分1个normal的dg

2) 控制文件:3个1G的lun,ASM对应划分3个dg

3)redo:2个48G的lun(建议raid 1+0,尽量不用raid5),ASM对应划分2个dg

4) 数据文件:最多500G 1个lun,ASM对应划分1个dg,注意单个dg不超过10t

1.3  网络配置

--查看网卡信息

# lanscan

--网卡速率 lanadmin -s <网卡号>

# lanadmin -s 0

--通过“lanadmin -x <网卡号>”命令确定网卡实际生效的速率和通讯方式

# lanadmin –x 0

参数说明如下:

1)  Current Speed:实际生效速率,单位是Mbit/s。

2)  Full-Duplex:全双工通讯方式。

3)  Half-Duplex:半双工通讯方式。

4)  Autonegotiation:自适应工作方式。

1.4  IP需求

每个节点一个public IP,一个virtual IP,一个private IP;

整个集群需要至少一个SCAN IP;

# cat /etc/rc.config.d/netconf |grep -v ^#|perl -pe 's/^\s+$//g'

1.5 配置/etc/hosts文件

--查看IP地址设置

# lanscan

--显示各个接口的ip和状态 (需要保证每台节点上使用的接口具有相同的名字)

# netstat -in

--显示指定接口的当前配置

# ifconfig lanX

--查看路由

# netstat -rn

注1:hostname不允许使用下划线_,建议统一使用小写字母和数字组合,否则安装过程可能会报错。

cp /etc/hosts{,_$(date +%Y%m%d)}

cat >> /etc/hosts <EOF

127.0.0.1 loopback localhost

::1 loopback localhost

# Public Network - (bond0)

192.168.8.145 orcl1

192.168.8.146 orcl2

# Private Interconnect - (bond1)

192.168.168.145 orcl1-priv

192.168.168.146 orcl2-priv

# Public Virtual IP (VIP) addresses - (bond0:X)

192.168.8.147 orcl1-vip

192.168.8.148 orcl2-vip

# SCAN IP - (bond0:X)

192.168.8.149 orcl-scan

EOF

1.7  lib配置

--所有节点设置:

# cd /usr/lib

# ln -s libX11.3 libX11.sl

# ln -s libXIE.2 libXIE.sl

# ln -s libXext.3 libXext.sl

# ln -s libXhp11.3 libXhp11.sl

# ln -s libXi.3 libXi.sl

# ln -s libXm.4 libXm.sl

# ln -s libXp.2 libXp.sl

# ln -s libXt.3 libXt.sl

# ln -s libXtst.2 libXtst.sl

1.8 内核参数配置要求

NPROC 4096

KSI_ALLOC_MAX (NPROC*8)

EXECUTABLE_STACK=0

MAX_THREAD_PROC 1024

MAXDSIZ 1073741824

MAXDSIZ_64BIT 2147483648

MAXTSIZE_64BIT 1073741824

MAXSSIZ 134217728 bytes

MAXSSIZ_64BIT 1073741824

MAXUPRC ((NPROC*9)/10)+1

MSGMAP (MSGTQL+2) *

MSGMNI (NPROC)

MSGSEG 32767 *

MSGTQL (NPROC)

NCSIZE (NINODE+1024)

NFILE (15*NPROC+2048) *

NFLOCKS (NPROC)

NINODE (8*NPROC+2048)

NKTHREAD (((NPROC*7)/4)+16)

SEMMNI (NPROC)

SEMMNS (SEMMNI*2)

SEMMNU (NPROC - 4)

SEMVMX 32767

SHMMAX AvailMem

SHMMNI 4096

SHMSEG 512

VPS_CEILING 64

-- 检查内核配置参数

# /usr/sbin/kctune –d

/usr/sbin/kctune ksi_alloc_max

/usr/sbin/kctune executable_stack

/usr/sbin/kctune max_thread_proc

/usr/sbin/kctune maxdsiz

/usr/sbin/kctune maxdsiz_64bit

/usr/sbin/kctune maxfiles

/usr/sbin/kctune maxfiles_lim

/usr/sbin/kctune maxssiz

/usr/sbin/kctune maxssiz_64bit

/usr/sbin/kctune maxuprc

/usr/sbin/kctune msgmni

/usr/sbin/kctune msgtql

/usr/sbin/kctune ncsize

/usr/sbin/kctune ninode

/usr/sbin/kctune nflocks

/usr/sbin/kctune nkthread

/usr/sbin/kctune nproc

/usr/sbin/kctune semmni

/usr/sbin/kctune semmns

/usr/sbin/kctune semmnu

/usr/sbin/kctune semvmx

/usr/sbin/kctune shmmax

/usr/sbin/kctune shmmni

/usr/sbin/kctune shmseg

/usr/sbin/kctune vps_ceiling

/usr/bin/ndd /dev/tcp tcp_largest_anon_port

/usr/bin/ndd /dev/udp udp_largest_anon_port

--内核参数设置命令:(kctune  PARAMETRE=value)

/usr/sbin/kctune -h maxfiles_lim=32767

/usr/sbin/kctune -h maxssiz_64bit=1073741824

/usr/sbin/kctune -h msgmni=4200

/usr/sbin/kctune -h ncsize=36672

/usr/sbin/kctune -h ninode=35648

/usr/sbin/kctune -h nflocks=4200

/usr/sbin/kctune -h nkthread=7366

-- 应用参数设置

/usr/sbin/kcweb -F

-- 列出改变的参数

kmtune

1.9  UDP/TCP参数

--使用ndd命令检查确认UDP/TCP 端口范围是否为9000-65500

/usr/bin/ndd /dev/tcp tcp_smallest_anon_port tcp_largest_anon_port

/usr/bin/ndd /dev/udp udp_smallest_anon_port udp_largest_anon_port

--编辑/etc/rc.config.d/nddconf文件更新配置,如下:

TRANSPORT_NAME[0]=tcp

NDD_NAME[0]=tcp_smallest_anon_port

NDD_VALUE[0]=9000

TRANSPORT_NAME[1]=tcp

NDD_NAME[1]=tcp_largest_anon_port

NDD_VALUE[1]=65500

TRANSPORT_NAME[2]=udp

NDD_NAME[2]=udp_smallest_anon_port

NDD_VALUE[2]=9000

TRANSPORT_NAME[3]=udp

NDD_NAME[3]=udp_largest_anon_port

NDD_VALUE[3]=65500

1.10 开启异步IO

# ls -l /dev/async  (默认是开启的)

crw-rw-rw-   1 bin        bin        101 0x000000 Apr 29  2013 /dev/async

--若没有开启异步I/O,则可以通过一下方法开启

-- 创建/dev/async character device

/sbin/mknod /dev/async c 101 0x0

chown oracle:dba /dev/async

chmod 660 /dev/async

1.11 创建用户和组并赋予权限

-- 创建用户组:

# /usr/sbin/groupadd -g 1000 oinstall

# /usr/sbin/groupadd -g 1020 asmadmin

# /usr/sbin/groupadd -g 1021 asmdba

# /usr/sbin/groupadd -g 1022 asmoper

# /usr/sbin/groupadd -g 1031 dba

# /usr/sbin/groupadd -g 1032 oper

-- 创建用户:

/usr/sbin/useradd –u 1101 -g oinstall -G dba,asmdba,oper -m oracle

/usr/sbin/useradd –u 1100 -g oinstall -G asmadmin,asmdba,asmoper,oper,dba –m grid

-- 修改用户密码

passwd oracle

passwd grid

-- su测试一下密码是否修改成功

-- 检查确认

id oracle

uid=1101(oracle) gid=1000(oinstall) groups=1000(oinstall),1031(dba),1021(asmdba),1032(oper)

id grid

uid=1100(grid) gid=1000(oinstall) groups=1000(oinstall),1031(dba),1020(asmadmin),1022(asmoper),1021(asmdba)

-- 检查/etc/privgroup 是否存在,

-- 否则,创建并编辑文件

vi /etc/privgroup

oinstall RTPRIO MLOCK RTSCHED

-- 若存在,则授权

# /usr/sbin/setprivgrp oinstall RTPRIO MLOCK RTSCHED

if [ -f "/etc/privgroup" ]; then

/usr/sbin/setprivgrp oinstall RTPRIO MLOCK RTSCHED

else

cat > /etc/privgroup <<EOF

oinstall RTPRIO MLOCK RTSCHED

EOF

fi

--检查确认oinstall Oracle Inventory group授权

# /usr/bin/getprivgrp oinstall

oinstall: RTPRIO MLOCK RTSCHED

1.12 创建目录

-- 创建目录

mkdir -p /oracle/app/grid

mkdir -p /oracle/app/11.2.0/grid

chown -R grid:oinstall /oracle

mkdir -p /oracle/app/oracle

mkdir -p /oracle/app/oracle/product/11.2.0/db_1

chown oracle:oinstall /oracle/app/oracle

chown oracle:oinstall /oracle/app/oracle/product/11.2.0/db_1

chmod -R 775 /oracle

-- 检查目录属性,确认修改是否正确

ls -ltrd /oracle/app/grid /oracle/app/11.2.0/grid /oracle/app/oracle /oracle /oracle/app/oracle/product/11.2.0/db_1

1.13 配置grid、oracle用户环境变量

su - grid

vi $HOME/.profile

export ORACLE_SID=+ASM1

export ORACLE_BASE=/oracle/app/grid

export ORACLE_HOME=/oracle/app/11.2.0/grid/product/db_1

export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH

su - oracle

$HOME/.bash_profile

export ORACLE_SID=orcl1

export ORACLE_BASE=/oracle/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

export ORA_CRS_HOME=/oracle/app/11.2.0/grid/product/db_1

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:${ORA_CRS_HOME}/bin:$PATH:$HOME/dba

umask 022

export TNS_ADMIN=${ORA_CRS_HOME}/network/admin

其它节点参照配置

1.14 共享磁盘配置

从存储划分共享存储至两台主机,通过多路径软件识别。

# 注意:在使用这些lun之前,先进行格式化,如下操作

dd  if=/dev/zero  of=/dev/rdisk/disk3 bs=8192  count=1280

1)磁盘聚合路径信息

# ioscan –fnNkCdisk

2)查看磁盘大小

# diskinfo /dev/rdisk/disk3

3)找出对应盘符的唯一ID,并找出其WWN(盘符应该是字符设备文件)

# scsimgr lun_map -D /dev/rdisk/disk3 |grep WWID

4)检查确认磁盘未被VG使用

# vgdisplay –v

5)根据一一对应的WWN值,将相应WWN对应所有节点的盘符设置成一致:

for i in `ls -l /dev/rdisk/disk* |awk '{print $NF}'|grep -v _p`

do

echo $i

scsimgr lun_map -D $i |grep WWID

diskinfo $i |grep size

done

-- 举例:

ls -l /dev/rdisk/disk*

crw-r-----   1 bin        sys         13 0x000006 Aug  1 22:16 /dev/rdisk/disk4

crw-r-----   1 bin        sys         13 0x000007 Aug  1 22:16 /dev/rdisk/disk5

crw-r-----   1 bin        sys         13 0x000008 Aug  1 22:16 /dev/rdisk/disk6

crw-r-----   1 bin        sys         13 0x000008 Aug  1 22:16 /dev/rdisk/disk7

-- node1

/dev/rdisk/disk4

World Wide Identifier(WWID)    = 0x60060e8006d69c000000d69c000000a8

size: 209715840 Kbytes

/dev/rdisk/disk5

World Wide Identifier(WWID)    = 0x60060e8006d69c000000d69c00000f25

size: 1049280 Kbytes

/dev/rdisk/disk6

World Wide Identifier(WWID)    = 0x60060e8006d69c000000d69c00000f24

size: 1049280 Kbytes

/dev/rdisk/disk7

World Wide Identifier(WWID)    = 0x60060e8006d69c000000d69c00000f26

size: 1049280 Kbytes

-- node2

/dev/rdisk/disk14

World Wide Identifier(WWID)    = 0x60060e8006d69c000000d69c000000a8

size: 209715840 Kbytes

/dev/rdisk/disk15

World Wide Identifier(WWID)    = 0x60060e8006d69c000000d69c00000f24

size: 1049280 Kbytes

/dev/rdisk/disk16

World Wide Identifier(WWID)    = 0x60060e8006d69c000000d69c00000f26

size: 1049280 Kbytes

/dev/rdisk/disk17

World Wide Identifier(WWID)    = 0x60060e8006d69c000000d69c00000f25

size: 1049280 Kbytes

-- 绑定盘符

-- node1

mkdir -p /dev/oracle

mknod /dev/oracle/ocr1 c 13 0x000007

mknod /dev/oracle/ocr2 c 13 0x000008

mknod /dev/oracle/ocr3 c 13 0x000009

mknod /dev/oracle/data1 c 13 0x000006

-- node2

crw-r-----   1 bin        sys         13 0x000005 Aug  2 04:33 /dev/rdisk/disk14

crw-r-----   1 bin        sys         13 0x000006 Aug  2 04:33 /dev/rdisk/disk15

crw-r-----   1 bin        sys         13 0x000007 Aug  2 04:33 /dev/rdisk/disk16

crw-r-----   1 bin        sys         13 0x000008 Aug  2 04:33 /dev/rdisk/disk17

mkdir -p /dev/oracle

mknod /dev/oracle/ocr1 c 13 0x000008

mknod /dev/oracle/ocr2 c 13 0x000006

mknod /dev/oracle/ocr3 c 13 0x000007

mknod /dev/oracle/data1 c 13 0x000005

--修改用户,用户组及权限

chown -R grid:asmadmin /dev/oracle

chmod 660 /dev/oracle/*

-- 清空磁盘头数据

dd  if=/dev/zero  of=/dev/oracle/ocr1 bs=8192  count=1280

dd  if=/dev/zero  of=/dev/oracle/ocr2 bs=8192  count=1280

dd  if=/dev/zero  of=/dev/oracle/ocr2 bs=8192  count=1280

dd  if=/dev/zero  of=/dev/oracle/data1 bs=8192  count=1280

1.15配置ntp服务

-- 查看当前时区

echo $TZ

or

cat /etc/TIMEZONE

or

cat /etc/default/tz

-- 设置时区

# set_parms timezone

____________________________________________________________________________

The following procedure enables you to set the time zone.

Select your location from the following list:

1) North America or Hawaii

2) Central America

3) South America

4) Europe

5) Africa

6) Asia

7) Australia, New Zealand

8) Russia / CIS

____________________________________________________________________________

Enter the number for your location (1-7) then press [Enter] #

-- 添加ntp服务器,根据实际环境添加或修改NTP服务端IP地址

vi /etc/ntp.conf

server 127.127.0.1

-- 更改两个参数的值

vi /etc/rc.config.d/netdaemons

export NTPDATE_SERVER=127.127.0.1

export XNTPD=1 (1表示启动xntpd;0表示不启动xntpd)

export XNTPD_ARGS=”-x”

-- 配置ntpd的参数,我们主要强调的是要配置成"微调的模式" 。HP默认是微调模式。

-- 启动ntp服务

/sbin/init.d/xntpd start

-- 检查是否生效

ntpq -p

ps -ef |grep ntp|grep -v grep

-- 安装完成后需要使用如下命令确认

$ crsctl check ctss

1.16 配置SSH互信

1)grid用户和oracle用户分别配置

# su - grid

$ mkdir ~/.ssh

$ chmod 700 ~/.ssh

$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

节点一:

-- 将生成的rsa和dsa密钥复制到authorized_keys

$ cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys

-- 将节点2的生成的密钥追加到节点1的authorized_keys中,若有多个节点,依次执行

$ ssh node2 "cat ~/.ssh/*.pub" >> ~/.ssh/authorized_keys

-- 将最终的authorized_keys文件传输到其它所有节点

$ scp ~/.ssh/authorized_keys node2:~/.ssh/authorized_keys

-- 修改文件权限

$ chmod 600 ~/.ssh/authorized_keys

-- oracle用户参照上面步骤配置

-- 互信验证(oracle,grid)所有节点操作

su - grid

export SSH='ssh -o ConnectTimeout=3 -o ConnectionAttempts=5 -o PasswordAuthentication=no -o StrictHostKeyChecking=no'

$ ${SSH} rac1 date

$ ${SSH} rac1-priv date

$ ${SSH} rac2 date

$ ${SSH} rac2-priv date

2) oralce11g可以在安装时进行自动配置ssh,第一次设置,点击“Setup”,设置成功后点击“Test”,成功后需两边节点测试验证互信。

2. 图形界面安装

2.1 预检查

su - grid

./runcluvfy.sh stage -pre crsinst -n vpar4,vpar5 -fixup -verbose

2.2 图形界面安装GI软件

以grid用户登录,进入到安装文件解压目录

./runInstaller

……

-- root用户,分别在两个节点执行以下脚本

/oracle/app/oraInventory/orainstRoot.sh

/oracle/app/11.2.0/grid/root.sh

2.3 检查集群状态

注意:gsd为OFFLINE状态正常,配置ntp服务则ora.ctssd为OBSERVER的状态

su - grid

crsctl stat res -t -init

crsctl stat res -t

2.4

创建ASM磁盘组

su – grid

asmca

2.5 图形界面安装RDBMS 软件

注意事项:两个DB的安装包需解压在同个目录下。

su  - oracle

./runInstaller

……

--节点root用户运行脚本

/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh

2.6 dbca建库

su – oracle

dbca

HP-UX平台安装Oracle11gR2数据库的更多相关文章

  1. Linux平台安装Oracle11gR2数据库

    1. 数据库安装先决条件 1.1 认证的操作系统检查确认 o RHEL4,OEL4 - update 7 or greater o RHEL5,OEL5 - 5.2 or greater o RHEL ...

  2. AIX平台安装Oracle11gR2数据库

    1. 前提条件 1.1 认证操作系统 Certification Information for Oracle Database on IBM AIX on Power systems(Doc ID ...

  3. Windows平台安装SQLite3数据库

    Windows平台安装SQLite3数据库 话不多说,开始! 访问SQLite官网下载资源 在搜索引擎中键入SQLite3关键字寻找官网入口或直接点击此处前往SQLite官网,官网界面如下: 点击页面 ...

  4. 阿里云ecs Linux平台安装mongodb数据库

    MongoDB提供了linux平台上32位和64位的安装包,你可以在官网下载安装包. 下载地址:http://www.mongodb.org/downloads 下载完安装包,并解压 tgz(以下演示 ...

  5. linux-centos7安装Oracle11gr2数据库(在图形界面下)

    修改操作系统核心参数 在Root用户下执行以下步骤: 1)修改用户的SHELL的限制,修改/etc/security/limits.conf文件 oracle soft nproc 2047 orac ...

  6. Oracle安装部署之一键安装oracle数据库及其脚本

    准备工作:通过ftp工具上传oracle安装软件到linux系统/mnt目录下,并通过unzip命令解压软件.--------------------------------------------- ...

  7. Windows平台安装配置mysql数据库

    Windows平台安装配置mysql数据库 作者:Eric 微信:loveoracle11g 去下载mysql软件 https://www.mysql.com/downloads/ https://d ...

  8. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:3.安装Oracle RAC-3.5.安装oracle11gr2 database 软件与创建数据库

    3.5.安装oracle11gr2 database 软件与创建数据库 3.5.1.安装Oracle 11gr2 Database 以oracle 用户登录到节点一,切换到软件安装目录,执行安装. 在 ...

  9. CentOS7安装Oracle11gR2

     转自E路情人https://www.cnblogs.com/Q1013588888/p/9219128.html 一.安装CentOS-7_x86_64 1.CentOS7:带GUI的服务器(FTP ...

随机推荐

  1. [android] 优酷环形菜单-相对布局练习

    优酷环形菜单 布局文件,使用<RelativeLayout/>控件作为第一级菜单,相对布局,位于父控件的底部,水平居中,因为图片不是特别的标准,因此宽度和高度都钉死,宽度是高度的两倍 二次 ...

  2. Open Credit System(UVA11078)

    11078 - Open Credit System Time limit: 3.000 seconds Problem E Open Credit System Input: Standard In ...

  3. linux系统编程:自己动手写一个ls命令

    ls用于列举目录内容,要实现这个功能,毫无疑问,需要读取目录,涉及到两个api: opendir:DIR *opendir(const char *name), 传文件名,返回一个指针,指向目录序列 ...

  4. Tronado自定义Session

    这里就不一一诉说Session和Cookie直接的关系了,下面以一张图来概括: 下面是一个简单的Tornaod自定义Session的例子,看完后你可能会明白为什么我们在Django里可以直接使用req ...

  5. 在vue项目中,通过v-for循环,动态添加后台返回的事件

    一.现有一种业务需求,前端的某个元素添加点击事件,但事件是后台返回的(不确定),需要动态添加,下面是具体思路: .假定后台返回数据为如下格式: list: [ { name: '李寻欢', kungF ...

  6. AngularJS单页面路由配置恩,理解了就很简单啦

    利用route实现单页面跳转功能 利用angularJS开发流程 1)配置好angularJS开发环境 2)利用 yo angular projectname创建项目目录 3)删除掉系统自动生成的一些 ...

  7. JNI使用方法

    JNI可以让我们在java代码中调用本地库的功能. 下面记录一下JNI简单的使用方法 创建java端接口 public class JNIIterface { // 导入最终生成的dll文件 stat ...

  8. Expo大作战(十一)--expo中的预加载和缓存资产(Preloading & Caching Assets),expo中的图标 (Icon)

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  9. springboot 1.3.5升级1.5.9后 默认使用tomcat 8.5版本 get请求报400 异常信息为 The valid characters are defined in RFC 7230 and RFC 3986

    1.springboot 1.3.5升级1.5.9后 默认使用tomcat 8.5版本而之前用的是tomcat7    get请求报400 异常信息为 The valid characters are ...

  10. IAM页面是在统一区分配的还是在混合区分配的?

    IAM页面是在统一区分配的还是在混合区分配的? IAM页面的作用这里就不说了,网上的资料很多 文章中用到的工具:查看SQLSERVER内部数据页面的小插件Internals Viewer 先建立四张表 ...