Oracle database 静默安装 oracle 11g 一键安装

news2024/10/5 20:21:27

基于oracle安装包中应答文件实现一键安装

支持环境:

Linux :centerOS 7
oracle :11.2.0


Oracle应答文件

runInstaller应答文件
/database/response/db_install.rsp
netca应答文件
/database/response/netca.rsp
dbca应答文件
/database/response/dbca.rsp

解压oracle安装包后在生成database目录
静默安装需先编辑对应应答文件
编辑完成后执行安装程序指定对应应答文件


一键安装脚本

基于oracle可以实现静默安装的前提、
我们可以将安装oracle的步骤整合为shell脚本、
同时增加命令行控制、
增加可自定义项、

#!/bin/bash
#Create by:zhangyongze
#为什么不问问神奇的海螺呢丶
#oracle一键安装脚本
#############################
#变量初始化
oracle_version=11.2.0
oracle_base=/oracledata/app/oracle
oracle_instance_name=orcl
oracle_file=""
oracle_unzip=/oracledata
oracle_log_file=`pwd`/oracle_install.log
oracle_password="sysadmin"
help_str="参数说明:
   --oracleversion, -v:  oracle版本(支持11.2.0)
   --oraclebase,    -b  : oracle_base  选填 默认 /oracledata/app/oracle
   --oraclesid,     -s  : oracle_sid 选填 默认 orcl
   --installfile,   -f  : 安装文件(绝对路径) 必填
   --installdir,    -d  : 安装文件存放目录(绝对路径)选填 默认 /oracledata
   --installlog,    -l  : 安装日志(绝对路径) 选填 默认当前目录
   --syspasswd,     -p  : sys用户密码  选填 默认 sysadmin
   --help,          -h   : 帮助
   oracle_home =\${oracle_base}/product/\${oracle_version}/dbhome_1"

# 定义命令执行选项
getopt_cmd=$(getopt -o v:b:s:f:d:l:p:h --long oracleversion:,oraclebase::,oraclesid::,installfile:,installdir:,installlog::,syspasswd::,help  -n $(basename $0) -- "$@")
[ $? -ne 0 ] && exit 1
# 将规范化后的命令行参数分配至位置参数($1,$2,...)
eval set -- "$getopt_cmd"
  
# 接受执行选项;赋值给变量
while [ -n "$1" ] 
do
case "$1" in
-h|--help)
    echo -e "$help_str"
            exit ;;
-v|--oracleversion)
            oracle_version="$2"
            shift ;;
-b|--oraclebase)
            oracle_base="$2"
            shift ;;
-s|--oraclesid)
            oracle_instance_name="$2"
            shift ;;
-f|--installfile)
            oracle_file="$2"
            shift ;;
-d|--installdir)
            oracle_unzip="$2"
            shift ;;
-l|--installlog)
            oracle_log_file="$2"
            shift ;;
-p|--syspasswd)
            oracle_password="$2"
            shift ;;
--) 
            shift
            break ;;
*)          
            echo "$1 is not an option"
            exit 1 ;;  # 发现未知参数,直接退出
        
 esac
 shift
done

##########变量################
oracle_home=${oracle_base}/product/${oracle_version}/dbhome_1
host_name=`hostname`
host_ip=`ip addr | grep inet | grep -v 127 | grep -v inet6 |awk '{print $2}'| grep -Eo "[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}"|head -n 1`

###########函数区#############
#打印输出
function wlog()
{
    content_str=$1
    var_color=$2
    var_curr_timestamp=`date "+%Y-%m-%d %H:%M:%S.%N" | cut -b 1-23`
	content_echo_str=""
	

    ## 判断参数1 是否是空字符串
    if [ "x${content_str}" == "x" ];then
        return
    else
        content_str="[${var_curr_timestamp}] ${content_str}"
    fi
	content_echo_str="${content_str}"

    ## 判断颜色
    if [ "${var_color}" == "green" ];then
        content_echo_str="\033[32m${content_str}\033[0m"
    elif [ "${var_color}" == "yellow" ];then
        content_echo_str="\033[33m${content_str}\033[0m"
    elif [ "${var_color}" == "red" ];then
        content_echo_str="\033[1;41;33m${content_str}\033[0m"
    fi

    ## 打印输出
    echo -e "${content_echo_str}"
	
	echo "${content_str}" >> ${oracle_log_file}
}
#判断/dev/shm是否足够2G,不够予以添加
addShm(){
  swap_zize=`df | grep /dev/shm | awk '{print $2 / 1024 / 1024}'`
  swap_zize=${swap_zize%.*}
  if [ ${swap_zize} -lt 2 ]
	then 
		wlog '/dev/shm空间小于2G,正在为您扩充/dev/shm空间...'
		mount -o size=2000M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm
		echo 'tmpfs                /dev/shm             tmpfs   defaults,size=1200M        0 0' >>  /etc/fstab
		mount -o remount /dev/shm
  fi
}

#判断交换空间是否足够,不够予以添加
addSwap(){
  swap_zize=`free | grep Swap | awk '{print $2 / 1024 / 1024}'`
  swap_zize=${swap_zize%.*}
  if [ ${swap_zize} -lt 1 ]
	then 
		wlog '交换空间小于1G,正在为您扩充交换空间...'
		dd if=/dev/zero of=/root/swap bs=1024k count=1024 >> ${oracle_log_file} 2>&1
		mkswap /root/swap >> ${oracle_log_file} 2>&1
		swapon /root/swap >> ${oracle_log_file} 2>&1
		echo "/sbin/swapon /root/swap" >> /etc/rc.d/rc.local
  fi
}

#添加oracle12c需要的依赖
installDependence(){
  wlog "正在安装数据库依赖环境..."
  yum -y install libnsl.x86_64 binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33* elfutilslibelf-devel gcc gcc-c++ glibc* glibc glibc-devel glibc-devel* ksh libgcc* libgcc libstdc++ libstdc++ libstdc++-devel libstdc++-devel* libaio libaio* libaio-devel libaio-devel*.i686 make sysstat unixODBC unixODBC* unixODBC-devel unixODBCdevel* libXp unzip wget vim epel-release >> ${oracle_log_file} 2>&1
  wlog "数据库依赖环境已完成"
}

#添加oracle用户组以及用户
addOracleUserAndGroup(){
  groupadd oinstall
  groupadd dba
  groupadd oper
  useradd -g oinstall -G dba,oper oracle
  wlog "oracle用户以及用户组已创建,使用oracle用户时自行修改密码"
}

#修改环境变量
modifyEnvironment(){
  echo "${host_ip} ${host_name}" >> /etc/hosts
  sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config 
  setenforce 0
  wlog "已关闭selinux"
  cp /etc/sysctl.conf /etc/sysctl.conf.bak_`date "+%Y-%m-%d_%H:%M:%S"`
  echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf
  echo "fs.file-max = 6815744" >> /etc/sysctl.conf
  echo "kernel.shmall = 1073741824" >> /etc/sysctl.conf
  echo "kernel.shmmax = 4398046511104" >> /etc/sysctl.conf
  echo "kernel.shmmni = 4096" >> /etc/sysctl.conf
  echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf
  echo "net.ipv4.ip_local_port_range = 9000 65500" >> /etc/sysctl.conf
  echo "net.core.rmem_default = 262144" >> /etc/sysctl.conf
  echo "net.core.rmem_max = 4194304" >> /etc/sysctl.conf
  echo "net.core.wmem_default = 262144" >> /etc/sysctl.conf
  echo "net.core.wmem_max = 1048576" >> /etc/sysctl.conf
  sysctl -p >> ${oracle_log_file} 2>&1
  wlog "/etc/sysctl.conf文件已经备份且修改为oracle官方要求的最小值"
  
  cp /etc/security/limits.conf /etc/security/limits.conf.bak_`date "+%Y-%m-%d_%H:%M:%S"`
  echo "oracle soft nproc 10240" >> /etc/security/limits.conf
  echo "oracle hard nproc 10240" >> /etc/security/limits.conf
  echo "oracle soft nofile 65536" >> /etc/security/limits.conf
  echo "oracle hard nofile 65536" >> /etc/security/limits.conf
  wlog "/etc/security/limits.conf文件已经备份且修改为oracle官方要求的最小值"
  
  cp /etc/pam.d/login /etc/pam.d/login_`date "+%Y-%m-%d_%H:%M:%S"`
  echo "session  required      pam_limits.so" >>  /etc/pam.d/login
  wlog "/etc/pam.d/login已修改,添加session  required      pam_limits.so"
  
  # echo "if [ $USER = ""oracle"" ]; then" >>  /etc/profile
  # echo "  if [ $SHELL = ""/bin/ksh"" ]; then" >>  /etc/profile
  # echo "    ulimit -p 16384" >>  /etc/profile
  # echo "    ulimit -n 65536" >>  /etc/profile
  # echo "  else" >>  /etc/profile
  # echo "    ulimit -u 16384 -n 65536" >>  /etc/profile
  # echo "  fi" >>  /etc/profile
  # echo "fi" >>  /etc/profile
  # source /etc/profile
  # wlog "/etc/profile已修改,限制其他用户使用"
}

showBar(){
  i=$1
  jj=0
  ((jj=i+3))
  jj=`echo "$i $jj"|awk '{printf "%d\n",$1/$2*100}'`
  msg=$2
  b=`echo "" | sed ":a; s/^/-/; /-\{${jj}\}/b; ta"`
  b="${b}>"
  if [ $msg == "执行中" ]
    then	  
	  printf "[%-101s] %d%% %3s \r" "$b" "$jj" "$msg";
  else
      jj=100
	  b=`echo "" | sed ":a; s/^/-/; /-\{${jj}\}/b; ta"`
	  b="${b}>"
      printf "[%-101s] %d%% %3s \n" "$b" "$jj" "$msg";
  fi
}

function installOracle(){
  wlog "#########开始安装oracle数据库#########" "green"

  rm -rf ${oracle_unzip}/database >> ${oracle_log_file} 2>&1
  wlog "开始解压oracle数据库文件..."
  unzip ${oracle_file} -d ${oracle_unzip}/ >> ${oracle_log_file} 2>&1
  chown oracle:oinstall -R ${oracle_unzip}
 # mkdir -p ${oracle_home}
 # chown -R oracle:oinstall ${oracle_home}
 # chmod -R 775 ${oracle_home}

  wlog "oracle数据库文件解压完毕"
  echo "export TMP=/tmp" >>  /home/oracle/.bash_profile
  echo "export TMPDIR=\$TMP" >>  /home/oracle/.bash_profile
  echo "export ORACLE_HOSTNAME=${host_name}" >>  /home/oracle/.bash_profile
  echo "export ORACLE_UNQNAME=${oracle_instance_name}" >>  /home/oracle/.bash_profile
  echo "export ORACLE_BASE=${oracle_base}" >>  /home/oracle/.bash_profile
  echo "export ORACLE_HOME=${oracle_home}" >>  /home/oracle/.bash_profile
  echo "export ORACLE_SID=${oracle_instance_name}" >>  /home/oracle/.bash_profile
  echo "export PATH=/usr/sbin:$PATH" >>  /home/oracle/.bash_profile
  echo "export PATH=\${ORACLE_HOME}/bin:\$PATH" >>  /home/oracle/.bash_profile
  echo "export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib" >>  /home/oracle/.bash_profile
  echo "export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib" >>  /home/oracle/.bash_profile
  echo "export NLS_LANG=\"SIMPLIFIED CHINESE_CHINA.ZHS16GBK\"" >>  /home/oracle/.bash_profile

  
  source /home/oracle/.bash_profile
  wlog "oracle环境变量已经配置"  
  
  wlog "正在修改安装文件......"
  a[0]="oracle.install.option=INSTALL_DB_SWONLY"
  a[1]="UNIX_GROUP_NAME=oinstall"
  a[2]="INVENTORY_LOCATION=${oracle_base}/oraInventory"
  a[3]="ORACLE_HOME=${oracle_home}"
  a[4]="ORACLE_BASE=${oracle_base}"
  a[5]="oracle.install.db.InstallEdition=EE"
  a[6]="oracle.install.db.DBA_GROUP=dba"
  a[7]="oracle.install.db.OPER_GROUP=oper"
  a[8]="oracle.install.db.BACKUPDBA_GROUP=dba"
  a[9]="oracle.install.db.DGDBA_GROUP=dba"
  a[10]="oracle.install.db.KMDBA_GROUP=dba"
  a[11]="oracle.install.db.RACDBA_GROUP=dba"
  a[12]="oracle.install.db.config.starterdb.type=GENERAL_PURPOSE"
  a[13]="oracle.install.db.config.starterdb.globalDBName=${oracle_instance_name}"
  a[14]="oracle.install.db.config.starterdb.SID=${oracle_instance_name}"
  a[15]="oracle.install.db.config.starterdb.characterSet=ZHS16GBK"
  a[16]="SECURITY_UPDATES_VIA_MYORACLESUPPORT=false"
  a[17]="DECLINE_SECURITY_UPDATES=true"
  for i in ${a[*]}; do
    sed -i "s#^${i%%=*}=.*#${i}#" "${oracle_unzip}/database/response/db_install.rsp"
  done
  wlog "修改安装文文件完毕......"
  #rm -rf ${oracle_file}
  

  wlog "开始安装数据库..."
  su - oracle <<EOF 
  cd ${oracle_unzip}/database
  if [ -f oracle_install_log.out ]
    then
      rm oracle_install_log.out
  fi
  nohup ./runInstaller -force -silent -noconfig -responseFile ${oracle_unzip}/database/response/db_install.rsp -ignorePrereq >> oracle_install_log.out &
EOF
  
  ii=0
  while true
  do
    sleep 1
	egrep -e "FATAL|Failed" ${oracle_unzip}/database/oracle_install_log.out
	msg=$?
	if [ "$msg" == '0' ]
	  then
		showBar ${ii} "失败"
		exit
	fi
	grep "Successfully Setup Software." ${oracle_unzip}/database/oracle_install_log.out >> ${oracle_log_file} 2>&1
	msg=$?	
	if [ "$msg" == '0' ]
	  then
		showBar 100 "成功"
		wlog "oracle数据库安装成功" "green"
		break
	fi
	showBar ${ii} "执行中"
	((ii=ii+2))
  done
  
  `grep "orainstRoot.sh" ${oracle_unzip}/database/oracle_install_log.out  >> ${oracle_log_file} 2>&1`
  `grep "root.sh" ${oracle_unzip}/database/oracle_install_log.out  >> ${oracle_log_file} 2>&1`
  su - oracle -c "netca /silent /responsefile ${oracle_unzip}/database/response/netca.rsp" >> ${oracle_log_file} 2>&1
  
  wlog "oracle数据库初始化完成" "green"
  
}

function installIntance(){
  wlog "#########开始安装oracle数据库单实例#########" "green"
  wlog "正在修改数据库实例配置文件......"
  rm -rf ${oracle_unzip}/database/response/dbca.rsp
  echo "[GENERAL]" >>  ${oracle_unzip}/database/response/dbca.rsp
  echo "RESPONSEFILE_VERSION = "11.2.0" " >>  ${oracle_unzip}/database/response/dbca.rsp
  echo "OPERATION_TYPE =  "createDatabase"" >>  ${oracle_unzip}/database/response/dbca.rsp
  echo "[CREATEDATABASE]" >>  ${oracle_unzip}/database/response/dbca.rsp
  echo "GDBNAME=${oracle_instance_name}" >>  ${oracle_unzip}/database/response/dbca.rsp
  echo "SID=${oracle_instance_name}" >>  ${oracle_unzip}/database/response/dbca.rsp
  echo "TEMPLATENAME =  "General_Purpose.dbc"" >>  ${oracle_unzip}/database/response/dbca.rsp
  echo "SYSPASSWORD=${oracle_password}" >>  ${oracle_unzip}/database/response/dbca.rsp
  echo "SYSTEMPASSWORD=${oracle_password}" >>  ${oracle_unzip}/database/response/dbca.rsp
  echo "DATAFILEJARLOCATION=${ORACLE_HOME}/assistants/dbca/templates/" >>  ${oracle_unzip}/database/response/dbca.rsp
  echo "AUTOMATICMEMORYMANAGEMENT=TRUE" >>  ${oracle_unzip}/database/response/dbca.rsp
  echo "CHARACTERSET=ZHS16GBK" >>  ${oracle_unzip}/database/response/dbca.rsp
  echo "NATIONALCHARACTERSET=AL16UTF16" >>  ${oracle_unzip}/database/response/dbca.rsp
  echo "TOTALMEMORY=30000" >>  ${oracle_unzip}/database/response/dbca.rsp
  echo "RECOVERYAREADESTINATION=${ORACLE_BASE}/flash_recovery_area" >>  ${oracle_unzip}/database/response/dbca.rsp
  echo "STORAGETYPE="FS"" >>  ${oracle_unzip}/database/response/dbca.rsp
  echo "LISTENERS=LISTENER" >>  ${oracle_unzip}/database/response/dbca.rsp

  # a[1]="GDBNAME=${oracle_instance_name}"
  # a[2]="SID=${oracle_instance_name}"
  # a[3]="RESPONSEFILE_VERSION=11.2.0"
  # a[4]="OPERATION_TYPE=createDatabase"
  # a[5]="TEMPLATENAME=General_Purpose.dbc"
  # a[6]="SYSPASSWORD=${oracle_password}"
  # a[7]="SYSTEMPASSWORD=${oracle_password}"
  # a[8]="DATAFILEJARLOCATION=${ORACLE_HOME}/assistants/dbca/templates/"
  # a[9]="DATAFILEDESTINATION=${ORACLE_BASE}/oradata/"
  # a[10]="CHARACTERSET=ZHS16GBK"
  # a[11]="NATIONALCHARACTERSET=AL16UTF16"
  # a[12]="MEMORYPERCENTAGE=40"
  # a[13]="AUTOMATICMEMORYMANAGEMENT=FALSE"
  # a[14]="TOTALMEMORY=30000"
  # a[15]="RECOVERYAREADESTINATION=${ORACLE_BASE}/flash_recovery_area"
  # a[16]="LISTENERS=LISTENER"
  # a[17]="STORAGETYPE="FS""
  # for i in ${a[*]}; do
  #   sed -i "s#^${i%%=*}=.*#${i}#" "${oracle_unzip}/database/response/dbca.rsp"
  # done
  wlog "修改数据库实例配置文件完毕......"
  su - oracle -c "dbca -silent   -responseFile ${oracle_unzip}/database/response/dbca.rsp" >> ${oracle_log_file} 2>&1
  su - oracle -c "mkdir -p ${oracle_home}/oradata/${oracle_instance_name}/" >> ${oracle_log_file} 2>&1
  wlog "oracle数据库实例安装完成!" "green"
}
addBootstrap(){
  sed -i "s/^ORACLE_HOME_LISTNER=.*/ORACLE_HOME_LISTNER=\$ORACLE_HOME/" ${oracle_home}/bin/dbstart
  sed -i "s/^ORACLE_HOME_LISTNER=.*/ORACLE_HOME_LISTNER=\$ORACLE_HOME/" ${oracle_home}/bin/dbshut
  rm -rf /etc/oratab 
  echo "${oracle_instance_name}:${oracle_home}:Y" >>  /etc/oratab
  cat >>/etc/rc.d/init.d/oracle<<EOF
#!/bin/bash
# whoami # root 
# chkconfig: 345 51 49  
# description: starts the oracle dabasedeamons 
# 
ORACLE_HOME=${oracle_home}
ORACLE_OWNER=oracle 
ORACLE_DESC=oracledatabase
case "\$1" in 
'start') 
echo -n \"Starting \${ORACLE_DESC}:\" 
runuser - \$ORACLE_OWNER -c '\$ORACLE_HOME/bin/lsnrctl start' 
runuser - \$ORACLE_OWNER -c '\$ORACLE_HOME/bin/dbstart' 
runuser - \$ORACLE_OWNER -c '\$ORACLE_HOME/bin/emctl start dbconsole' 
touch \${ORACLE_LOCK} 
echo 
;; 
'stop') 
echo -n "shutting down \${ORACLE_DESC}: " 
runuser - \$ORACLE_OWNER -c '\$ORACLE_HOME/bin/lsnrctl stop' 
runuser - \$ORACLE_OWNER -c '\$ORACLE_HOME/bin/dbshut' 
rm -f \${ORACLE_LOCK} 
echo  
;; 
'restart') 
echo -n "restarting \${ORACLE_DESC}:" 
\$0 stop 
\$0 start 
echo 
;; 
*)  
echo "usage: \$0 { start | stop | restart }" 
exit 1 
esac 
exit 0
EOF
  chmod 755 /etc/rc.d/init.d/oracle
  chkconfig --add oracle
}

main(){
  clear
  cat null > ${oracle_log_file}
  chmod 777 ${oracle_log_file}
  wlog "开始为您一键安装oracle数据库,请确认一下信息" "green"
  wlog "Oracle版本号:${oracle_version}"
  wlog "Oracle主目录:${oracle_base}"
  wlog "Oracle安装目录:${oracle_home}"
  wlog "Oracle数据库实例名称:${oracle_instance_name}"
  wlog "Oracle数据库系统用户初始密码:${oracle_password}"
  wlog "Oracle数据库解压目录:${oracle_unzip}"
  wlog "Oracle数据库安装文件:${oracle_file}"
  wlog "安装详细日志文件:${oracle_log_file}"
  wlog "确认以此参数安装,请输入Y,开始安装,修改参数请按其他任意键结束安装:" "red"
  read -t 10 confirm_str
  if [ "$confirm_str" != 'y' ] && [ "$confirm_str" != 'Y' ];
    then
	  echo ""
	  wlog "一键安装oracle数据库已停止,您可以再修改完参数后再次执行。" "red"
	  exit
  fi
  if [ $(id -u) != "0" ];
    then 
      wlog "Oracle数据库安装需要以root用户执行!" "red"
    exit
  fi
  
  if [ ! -f ${oracle_file} ];
    then 
      wlog "Oracle数据库文件不存在!" "red"
      exit 
  fi
  wlog "#########开始初始化安装环境#########" "green"  

  installDependence

  modifyEnvironment
  
  addSwap
  
  addShm
  
  addOracleUserAndGroup
  
  installOracle
  
  installIntance
  
  addBootstrap
  wlog "已为您添加自启动脚本..." "green"
  
  wlog "安装程序已全部结束,请留意防火墙状态并尝试连接数据库进行测试" "red"
  wlog "关闭防火墙命令:    systemctl stop firewalld" "green"
  wlog "关闭数据库命令:    service oracle stop" "green"
  wlog "开启数据库命令:    service oracle start" "green"
  wlog "重启数据库命令:    service oracle restart" "green"
  wlog "您的数据库连接地址:${host_ip}:1521/${oracle_instance_name}" "green"
  wlog "管理员用户名:      system" "green"
  wlog "初始密码:          ${oracle_password}" "green"
}

main

执行脚本 -h 查看帮助文档

在这里插入图片描述

oracle11g一键安装脚本

寻找缺失的依赖包

解决思路

找同系统版本未安装Oracle的数据库

配置网络yum源

使用yum downloadonly 命令 下载包

yum install --downloadonly binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33.i686 glibc glibc.i686 glibc-devel glibc-devel.i686 ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libX11 libX11.i686 libXau libXau.i686 libXi libXi.i686 libXtst libXtst.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel libstdc++-devel.i686 libxcb libxcb.i686 make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel gcc gcc-c++ libXext libXext.i686 zlib-devel zlib-devel.i686 unzip wget vim epel-release --downloaddir=/oralcepkg

打包传输到需要安装Oracle的服务器

解压后 yum -y install *

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/860982.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FFmpeg音视频处理技术:基于Linux下QT Creator的FFmpeg环境搭建(史上最全)

前言 阅读本文章的小伙伴需要注意&#xff0c;本作者主要是从4个方面进行FFmpeg环境的搭建&#xff08;完全适应利用常见操作系统平台进行FFmpeg音视频开发&#xff09;&#xff0c;大家根据需要自行选择相应的环境进行搭建&#xff1a; &#xff08;1&#xff09;Linux&#x…

【Java并发】ReentrantLock的实现原理

文章目录 ReentrantLock是什么&#xff1f;ReentrantLock底层源码&#xff1a;ReentrantLock底层原理图解&#xff1a;&#xff08;以NonfairSync举例&#xff09; ReentrantLock是什么&#xff1f; synchronized关键字是一种隐式锁&#xff0c;即它的加锁与释放是自动的&…

Android 开发面试中,面试官最喜欢问那些问题?

作者&#xff1a;小谢 “你遇到过哪些高质量的Android面试&#xff1f;” [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3Pc1xZw5-1691675604271)(//upload-images.jianshu.io/upload_images/24388310-aa3c732481d0749f.png?imageMogr2/auto-orie…

自动脱扣型绝缘靴(手套)耐压支架操作步骤

一、概述 KDJS-8Q自动脱扣型绝缘靴&#xff08;手套&#xff09;耐压支架是根据《DLT 976-2017 带电作业工具、装置和设备预防性试验规程》、《DLT 1476-2015电力安全工器具预防性试验规程》、《GBT 17622-2008带电作业用绝缘手套》、《CB21148 2020足部防护 安全鞋》等…

【java】java项目在idea中Build Project或Rebuild Project一直进行不完

问题场景 我项目进行重新构建的时候&#xff0c;项目构建到某一个位置就一直不动了 解决方法 1.清理idea缓存 2.加大idea的内存 File -> Setting

在 Delphi 的 TRichEdit 中插入图片并保存为html文件

当在 Delphi 中使用 TRichEdit 组件时&#xff0c;有时需要将图片插入到文本中。下面详细介绍了如何在 TRichEdit 中插入图片。 引言&#xff1a; TRichEdit 组件是 Delphi 中常用的文本编辑控件&#xff0c;它不仅可以显示文本内容&#xff0c;还可以插入图片&#xff0c;丰富…

springboot汽车租赁后台java出租客户管理jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 springboot汽车租赁后台 系统有1权限&#xff1a;管理…

SCI论文中字体和图片字体大小的要求

SCI论文中字体和图片字体大小的要求 文章目录 1. American Chemical Society(ACS)要求2. Nature要求 1. American Chemical Society(ACS)要求 https://www.zhihu.com/question/380612293?utm_id0 2. Nature要求

章节1:HTTP协议回顾

章节1&#xff1a;HTTP协议回顾 HTTP请求方式 get请求&#xff1a;我们通常用其发起查询。 post请求&#xff1a;我们用其来向服务器提交数据。 HTTP请求格式 第一行为请求行。 HTTP响应格式 HTTP特点 请求应答模式灵活可扩展可靠传输无状态 stateless

网神 SecGate 3600 防火墙任意文件上传漏洞复现(HW0day)

0x01 产品简介 网神SecGate3600下一代极速防火墙&#xff08;NSG系列&#xff09;是基于完全自主研发、经受市场检验的成熟稳定网神第三代SecOS操作系统 并且在专业防火墙、VPN、IPS的多年产品经验积累基础上精心研发的高性能下一代防火墙 专门为运营商、政府、军队、教育、大型…

推出 Elasticsearch 查询语言 (ES|QL)

作者&#xff1a;Costin Leau 我很高兴地宣布&#xff0c;经过大约一年的开发&#xff0c;Elasticsearch 查询语言 (ES|QL) 已准备好与世界共享&#xff0c;并已登陆 Elasticsearch 存储库。 ES|QL 是 Elasticsearch 原生的强大声明性语言&#xff0c;专为可组合性、表现力和速…

网络加速与文件传输软件:如何通过优化网络提升文件传输速度

在信息化社会&#xff0c;文件传输是人们生活和工作中必不可少的一个环节。但是&#xff0c;由于网络环境的多样性和传输过程中可能出现的各种问题&#xff0c;文件传输速度经常受到影响。因此&#xff0c;如何优化网络以提高文件传输速度成为了一个重要的课题。本文将探讨网络…

Mybatis-plus 异常:Not Found TableInfoCache

标题&#xff1a;Mybatis-plus 异常&#xff1a;Not Found TableInfoCache Mybatis-plus 是一个流行的基于 Mybatis 的增强工具包&#xff0c;可以极大地简化数据库操作。然而&#xff0c;在使用 Mybatis-plus 过程中&#xff0c;可能会遇到一些异常情况&#xff0c;其中之一就…

mysql基础之触发器的简单使用

1.建立学生信息表 -- 触发器 -- 建立学生信息表 create table s1(id int unsigned auto_increment,name varchar(30),score tinyint unsigned,dept varchar(50),primary key(id) );2.建立学生补考信息表 -- 建立学生补考信息表 create table s2 like s1;3.建立触发器&#xf…

【excel技巧】excel公式如何隐藏?

Excel文件中最重要的除了数据还有就是一些公式了&#xff0c;但是只要点击单元格&#xff0c;公式就能显示出来&#xff0c;如果不想别人看到公式应该如何设置呢&#xff1f;今天分享隐藏excel单元格数据的方法。 选中单元格&#xff0c;点击右键打开【设置单元格格式】&#x…

【Linux】云服务器自动化部署VuePress博客(Jenkins)

前言 博主此前是将博客部署在 Github Pages&#xff08;基于 Github Action&#xff09;和 Vercel 上的&#xff0c;但是这两种部署方式对于国内用户很不友好&#xff0c;访问速度堪忧。因此将博客迁移到自己的云服务器上&#xff0c;并且基于 Jenkins&#xff08;一款开源持续…

最强自动化测试框架Playwright-(2)实用操作

元素定位 定位器是playwright自动等待和重试功能的核心部分。简而言之&#xff0c;定位器表示一种随时在页面上查找元素的方法。 Locators | Playwright Python 如下这些是推荐的 page.get_by_role&#xff08;&#xff09; 按显式和隐式辅助功能属性进行定位。 page.get…

Dockerfile 语法梳理及介绍

1. FROM FROM参数&#xff1a;从什么基础镜像构建新的镜像。 举例 &#xff1a; FROM centos&#xff0c; FROM ubuntu, FROM hello-world 使用 centos 镜像作为基础镜像。 注意&#xff1a;尽量使用官方的镜像作为基础镜像, 为了安全起见。 2. LABEL LABEL参数&#xff1a;从上…

交流汽车充电桩也有大功率的,为什么市场还是想做直流的?

新能源汽车交流充电桩和直流充电桩的区别是什么&#xff1f; 交流汽车充电桩也有大功率的&#xff0c;为什么市场还是想做直流的&#xff1f; 交流充电桩和直流充电桩最本质的区别是充电时车载设备的参与程度。 交流充电桩就好比是一双筷子&#xff0c;它把食物送到嘴里&#…

Windows 编译CEF源码详细记录

背景 默认的CEF不支持音视频功能&#xff0c;需要下载源码将ffmpeg开关打开&#xff0c;再进行编译。 Linux编译参考&#xff1a; 《Linux CEF源码下载编译详细记录》 创建目录结构 code/automate/automate-git.py <-- CEF build scriptchromium_git/cef/ …