Centos系统安装Tomcat(Tomcat7,Java8-jdk1.8)

2023-11-03

以前经常使用java8 也就是java jdk1.8 和tomcat7开发web系统,怀旧记录一下在centos7系统里安装部署tomcat7,同时部署多个tomcat7的方法,解决tomcat7在centos7系统启动很慢的问题

apache tomcat7远离了,在tomcat官网上已经看不到tomcat7的身影了,我自己也早已不再用tomcat7,在整理曾经的保存的博客和项目时,简单记录一下tomcat7的安装使用过程,将来或许用不到了,或许遇到老项目时还是会用到,因此怀念记录一下tomcat7的安装和配置

首先在官网上找到老版本

https://archive.apache.org/dist/tomcat/

下载后上传到centos7服务器的/home目录下面

解压

tar -xvzf apache-tomcat-7.0.81.tar.gz

修改名称

mv apache-tomcat-7.0.81 tomcat7

启动之前确定当前系统有没有java环境(java8 jdk1.8)

[root@myw home]# java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
[root@myw home]# 

启动并确认是否启动成功

[root@myw home]# cd tomcat7/bin
[root@myw bin]# ls
bootstrap.jar  catalina.sh         commons-daemon.jar            configtest.bat  daemon.sh   digest.sh         setclasspath.sh  shutdown.sh  startup.sh       tomcat-native.tar.gz  tool-wrapper.sh  version.sh
catalina.bat   catalina-tasks.xml  commons-daemon-native.tar.gz  configtest.sh   digest.bat  setclasspath.bat  shutdown.bat     startup.bat  tomcat-juli.jar  tool-wrapper.bat      version.bat
[root@myw bin]# ./startup.sh
Using CATALINA_BASE:   /home/tomcat7
Using CATALINA_HOME:   /home/tomcat7
Using CATALINA_TMPDIR: /home/tomcat7/temp
Using JRE_HOME:        /usr/local/jdk18
Using CLASSPATH:       /home/tomcat7/bin/bootstrap.jar:/home/tomcat7/bin/tomcat-juli.jar
Tomcat started.
[root@myw bin]# netstat -lnp|grep java
tcp6       0      0 :::8080                 :::*                    LISTEN      27905/java          
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      27905/java          
tcp6       0      0 :::8009                 :::*                    LISTEN      27905/java          
[root@myw bin]# 

访问浏览器的8080端口(默认端口),保证服务器8080端口可访问(系统防火墙和云商安全组配置)

关闭停止

[root@myw bin]# ./shutdown.sh
Using CATALINA_BASE:   /home/tomcat7
Using CATALINA_HOME:   /home/tomcat7
Using CATALINA_TMPDIR: /home/tomcat7/temp
Using JRE_HOME:        /usr/local/jdk18
Using CLASSPATH:       /home/tomcat7/bin/bootstrap.jar:/home/tomcat7/bin/tomcat-juli.jar
[root@myw bin]# 

查看控制台输出

在tomcat7/logs里

tail -200f catalina.out
[root@myw bin]# cd ..
[root@myw tomcat7]# ls
bin  conf  lib  LICENSE  logs  NOTICE  RELEASE-NOTES  RUNNING.txt  temp  webapps  work
[root@myw tomcat7]# cd logs
[root@myw logs]# ls
catalina.2023-01-29.log  catalina.out  host-manager.2023-01-29.log  localhost.2023-01-29.log  localhost_access_log.2023-01-29.txt  manager.2023-01-29.log
[root@jpmlg4syqgfe22ch logs]# tail -200f catalina.out
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version:        Apache Tomcat/7.0.81
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built:          Aug 11 2017 10:21:27 UTC
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server number:         7.0.81.0
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name:               Linux
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version:            3.10.0-1160.el7.x86_64
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture:          amd64
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home:             /usr/local/jdk18/jre
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version:           1.8.0_144-b01
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor:            Oracle Corporation
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE:         /home/tomcat7
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME:         /home/tomcat7
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.util.logging.config.file=/home/tomcat7/conf/logging.properties
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.endorsed.dirs=/home/tomcat7/endorsed
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=/home/tomcat7
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=/home/tomcat7
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.io.tmpdir=/home/tomcat7/temp
Jan 29, 2023 5:37:22 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
Jan 29, 2023 5:37:22 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Jan 29, 2023 5:37:22 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 471 ms
Jan 29, 2023 5:37:22 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jan 29, 2023 5:37:22 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.81
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/tomcat7/webapps/docs
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /home/tomcat7/webapps/docs has finished in 258 ms
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/tomcat7/webapps/host-manager
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /home/tomcat7/webapps/host-manager has finished in 74 ms
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/tomcat7/webapps/manager
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /home/tomcat7/webapps/manager has finished in 64 ms
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/tomcat7/webapps/ROOT
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /home/tomcat7/webapps/ROOT has finished in 46 ms
Jan 29, 2023 5:37:22 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/tomcat7/webapps/examples
Jan 29, 2023 5:37:23 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /home/tomcat7/webapps/examples has finished in 139 ms
Jan 29, 2023 5:37:23 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Jan 29, 2023 5:37:23 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jan 29, 2023 5:37:23 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 623 ms

部署多个tomcat7 重新解压并且修改为tomcat7-2

两个tomcat同时是无法启动的

<Server port="8005" shutdown="SHUTDOWN">
………………………………………………………………………………………………………………

    <!-- A "Connector" represents an endpoint by which requests are received
         and responses are returned. Documentation at :
         Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
         Java AJP  Connector: /docs/config/ajp.html
         APR (HTTP/AJP) Connector: /docs/apr.html
         Define a non-SSL HTTP/1.1 Connector on port 8080
    -->
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

</Server>

这个是tomcat7conf文件夹下server.xml的配置

tomcat7-2 的改动 8005 改成 8006

8080改成8081

8009改成8010

改的端口可以随意,根据实际需要

启动后

[root@myw ~]# netstat -lnp|grep java
tcp6       0      0 :::8080                 :::*                    LISTEN      31034/java          
tcp6       0      0 :::8081                 :::*                    LISTEN      31104/java          
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      31034/java          
tcp6       0      0 127.0.0.1:8006          :::*                    LISTEN      31104/java          
tcp6       0      0 :::8009                 :::*                    LISTEN      31034/java          
tcp6       0      0 :::8010                 :::*                    LISTEN      31104/java          
[root@myw ~]# 

可以看到2个tomcat7都启动了,各自占用三个端口

但是有些时候在centos7.x下面发现tomcat7启动很慢(有时候等好几分钟),特别是多个tomcat7启动的情况,这里官方和很多博文都有一些说明,说java.security.SecureRandom类要调用还是啥在是在linux(Centos)上,/dev/random和/dev/urandom啥原因,办法是修改一个东西就可以启动很快

在$JAVA_PATH/jre/lib/security/java.security目录下的这个文件改东西

打开这个文件后可以看到有一行配置是这样的

securerandom.source=file:/dev/random
#
# Sun Provider SecureRandom seed source.
#
# Select the primary source of seed data for the "SHA1PRNG" and
# "NativePRNG" SecureRandom implementations in the "Sun" provider.
# (Other SecureRandom implementations might also use this property.)
#
# On Unix-like systems (for example, Solaris/Linux/MacOS), the
# "NativePRNG" and "SHA1PRNG" implementations obtains seed data from
# special device files such as file:/dev/random.
#
# On Windows systems, specifying the URLs "file:/dev/random" or
# "file:/dev/urandom" will enable the native Microsoft CryptoAPI seeding
# mechanism for SHA1PRNG.
#
# By default, an attempt is made to use the entropy gathering device
# specified by the "securerandom.source" Security property.  If an
# exception occurs while accessing the specified URL:
#
#     SHA1PRNG:
#         the traditional system/thread activity algorithm will be used.
#
#     NativePRNG:
#         a default value of /dev/random will be used.  If neither
#         are available, the implementation will be disabled.
#         "file" is the only currently supported protocol type.
#
# The entropy gathering device can also be specified with the System
# property "java.security.egd". For example:
#
#   % java -Djava.security.egd=file:/dev/random MainClass
#
# Specifying this System property will override the
# "securerandom.source" Security property.
#
# In addition, if "file:/dev/random" or "file:/dev/urandom" is
# specified, the "NativePRNG" implementation will be more preferred than
# SHA1PRNG in the Sun provider.
#
securerandom.source=file:/dev/random

注释掉修改成

#securerandom.source=file:/dev/random
securerandom.source=file:/dev/./urandom

这样,tomcat7和tomcat7-2就能快速地启动了(当然,有时候tomcat7不会存在启动慢的问题)

现在启动两个tomcat7只需要端口修改后,就各自是各自的,但是以前曾经记得部署两个tomcat7的时候,jdk有一个path配置

CATALINA_HOME

CATALINA_BASE

这个第一个tomcat7可以默认(一般也配置了的)

1.首先在/etc/profile里和java jdk配置放一起,配置后source /etc/profile指令

export CATALINA_HOME=/home/tomcat7
export CATALINA_BASE=/home/tomcat7

export CATALINA2_HOME=/home/tomcat7-2
export CATALINA2_BASE=/home/tomcat7-2

export JAVA_HOME=/usr/local/jdk18
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

2.tomcat7和tomcat7-2的bin目录下的catalina.sh文件开头处各自增加配置信息

export CATALINA_BASE=$CATALINA_BASE
export CATALINA_HOME=$CATALINA_HOME

export CATALINA_BASE=$CATALINA2_BASE
export CATALINA_HOME=$CATALINA2_HOME

两个都配置好后可以关停重启后测试

tomcat配置ssl方式(阿里申请免费也有详细部署方式) 80端口重定向到443端口

    -->
    <Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443" />
 
    
    <Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               keystoreFile="/home/tomcat7/conf/xxx-xxxxxxx-com-tomcat-345456.jks"  
               keystorePass="12345678" />

这个.jks的文件要放在conf同级目录下面

tomcat7的默认编码是ISO-8859-1,习惯性使用UTF-8,那么修改一下配置

URIEncoding="UTF-8"
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/>

当然还有一些其他配置,例如最大线程数,默认不配置大概是200 需要的可以配置maxThreads="1000",还有一些其他的配置,需要去官网看Connector节点的配置,一般默认已经能够满足需求了

一般tomcat7在centos7.x系统下要配置开机启动,防止系统出现问题重启后tomcat7没启动的情况

首先需要配置java jdk的路径,在tomcat7和tomcat7-2的bin目录下catalina.sh里配置

export JAVA_HOME=/usr/local/jdk18
export JRE_HOME=/usr/local/jdk18/jre

tomcat7/bin/catalina.sh

tomcat7-2/bin/catalina.sh

这里是配置了2个tomcat的,那么需要创建两个tomcat的服务

tomcat7的tomcat7.service

[Unit]
Description=tomcat7 web server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/home/tomcat7/bin/startup.sh
ExecStop=/home/tomcat7/bin/shutdown.sh
[Install]
WantedBy=multi-user.target

tomcat7-2的tomcat7-2.service

[Unit]
Description=tomcat7-2 web server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/home/tomcat7-2/bin/startup.sh
ExecStop=/home/tomcat7-2/bin/shutdown.sh
[Install]
WantedBy=multi-user.target

将tomcat7.service和tomcat7-2.service放在/usr/lib/systemd/system/下面

 
// service文件有新加和更改都需要重新加载
systemctl daemon-reload
 
// 启动
systemctl start tomcat7.service
systemctl start tomcat7-2.service 

// 停止
systemctl stop tomcat7.service
systemctl stop tomcat7-2.service
 
// 查看启动状态
systemctl status tomcat7.service
systemctl status tomcat7-2.service 
 
// 加入开机启动
systemctl enable tomcat7.service
systemctl enable tomcat7-2.service 
// 取消开机启动
systemctl disable tomcat7.service
systemctl disable tomcat7-2.service
[root@myw ~]# systemctl enable tomcat7.service
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat7.service to /usr/lib/systemd/system/tomcat7.service.
[root@myw ~]# systemctl enable tomcat7-2.service
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat7-2.service to /usr/lib/systemd/system/tomcat7-2.service.
[root@myw ~]# systemctl start tomcat7.service
[root@myw ~]# systemctl start tomcat7-2.service
[root@myw ~]# netstat -lnp|grep java
tcp6       0      0 :::8080                 :::*                    LISTEN      2133/java           
tcp6       0      0 :::8081                 :::*                    LISTEN      2187/java           
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      2133/java           
tcp6       0      0 127.0.0.1:8006          :::*                    LISTEN      2187/java           
tcp6       0      0 :::8009                 :::*                    LISTEN      2133/java           
tcp6       0      0 :::8010                 :::*                    LISTEN      2187/java           
[root@myw ~]# systemctl status tomcat7.service
?.tomcat7.service - tomcat7 web server
   Loaded: loaded (/usr/lib/systemd/system/tomcat7.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2023-01-31 09:52:20 CST; 31s ago
  Process: 2125 ExecStart=/home/tomcat7/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 2133 (java)
   CGroup: /system.slice/tomcat7.service
           ?..2133 /usr/local/jdk18/jre/bin/java -Djava.util.logging.config.file=/home/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djav...

Jan 31 09:52:20 myw systemd[1]: Starting tomcat7 web server...
Jan 31 09:52:20 myw startup.sh[2125]: Tomcat started.
Jan 31 09:52:20 myw systemd[1]: Started tomcat7 web server.
[root@myw ~]# systemctl stop tomcat7.service
[root@myw ~]# systemctl stop tomcat7-2.service
[root@myw ~]# netstat -lnp|grep java
[root@myw ~]# 

如此在centos下安装的两个tomcat7都可以实现开机启动了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Centos系统安装Tomcat(Tomcat7,Java8-jdk1.8) 的相关文章

  • angular2 通过 ControlValueAccessor NG_VALUE_ACCESSOR实现自定义表单控件

    一 演示自定义控件的双向绑定 二 如何实现 cform component ts 自定义表单控件CformComponent 的实现 注意下里面的注释段落 import Component OnInit Input forwardRef f
  • QT自定义Widget控件及其使用

    今天来给大家分享一下QT自定义widget控件及其使用 当ui设计器提供的界面不满足实际需求时 可以从QWidget继承自定义的界面组件 有两种方法一种是提升法 另一种是ui设计器自定义界面组件widget组件 我们本次先说提升法 通过这个
  • 预告:Intel、Hulu、阿里、京东、携程等大数据实战直播

    前言 由CSDN主办的SDCC 2017之大数据技术实战线上峰会将在CSDN学院举行 作为SD系列技术峰会的一部分 本次线上峰会秉承干货实料 案例 的内容原则 将邀请圈内顶尖的布道师 技术专家和技术引领者 共话大数据平台构建 优化提升大数据
  • 学生选课系统---数据库课程设计SQL Server

    可以直接从我的GitHub中获取文档 学生选课系统GitHub 一 题目 学生选课系统 二 需求分析 1 根据学生专业学年学期等信息 录入课程完成课程计划 2 根据课程计划 录入任课教师信息 3 学生可以根据学年学期等信息 选择课程完成选课
  • 2022年第三届“大湾区杯”粤港澳金融数学数学建模竞赛

    2022年第三届 大湾区杯 粤港澳金融数学数学建模竞赛 文章目录 2022年第三届 大湾区杯 粤港澳金融数学数学建模竞赛 前言 一 分析B题 券商研报对公司股票走势的影响和投资策略 1 解读题目 2 第一问解析 3 第二问解析 4 第三问解
  • python读excel文件解析

    目录 一 题目描述 二 示例 三 分析 1 获取工作簿对象 2 获取表单的名字 3 通过表单名获取指定的表单对象 4 获取单元格中的值 一 题目描述 例如在当前文件夹下有一个名为 阿里巴巴2020年股票数据 xls 的Excel文件 读取并
  • Android Studio 自动更新

    一丶最近项目开发在用Android Studio 不过无奈自动更新检查时总是提示 Connection failed Please check your network connection and try again 怀疑可能是因为 不可
  • 关于vue3的使用插件FileSaver并且excel导出的实现方法

    参考文章 1vue elementui表格前端导出excel以及自定义导出样式 前端自定义报表模板 elementui 小郑有点困了的博客 CSDN博客 2Vue3 XLSX FileSaver导出导入功能 菜鸟学习JAVA开发的博客 CS
  • ESP8266 下载报错please check partition type 6 addr:3fd000 len:3000

    问题现象 串口打印 ESP8266 12F 的错误如下 ets Jan 8 2013 rst cause 2 boot mode 3 7 load 0x40100000 len 23948 room 16 tail 12 chksum 0x
  • 《信号与系统》解读 前言:为什么要解读《信号与系统》?

    什么需要解读 信号与系统 为什么需要开辟这个专题呢 1 基础理论的基础 2 工程技术的基础 3 建立系统思维 1 基础理论的基础 信号与系统 是 数字信号处理DSP 通信原理 数字通信原理 等其他基础课程的基础 传统的信号与系统偏硬件 现代
  • 写五个以科技为主题的html页面,要求用css实现,请写出实现代码

    在此基础上 我们可以创建五个以科技为主题的 HTML 页面 并使用 CSS 来实现设计 科技新闻页面 HTML 代码
  • Fibonacci数列(斐波那契数列)

    斐波那契数列 Fibonacci sequence 又称黄金分割数列 因数学家列昂纳多 斐波那契 Leonardoda Fibonacci 以兔子繁殖为例子而引入 故又称为 兔子数列 指的是这样一个数列 1 1 2 3 5 8 13 21
  • TCP的超时时间间隔的简单理解

    网上查了许多资料 都比较抽象 自我理解记录篇 本文适用于查了许多资料 但觉得还是比较抽象 有基础相关知识的人阅读 样本RTT SampleRTT EstimatedRTT 1 EstimatedRTT aSampleRTT 参考值 0 12
  • JS--变量

    变量在使用时分为两步 声明变量 赋值 1 声明变量 var age 声明一个名称为age的变量 var是一个JS关键词 用来声明变量 使用该关键词声明变量后 计算机会 自动为变量分配内存空间 不需要程序员管 age是程序员定义的变量名 我们
  • 《C++ primer plus》精炼(OOP部分)——对象和类(4)

    学习是人类进步的阶梯 也是个人成功的基石 罗伯特 肯尼迪 文章目录 友元函数 利用友元函数重载 lt lt 运算符 重载部分示例 矢量类 友元函数 先看看在上一章中我们作为例子的代码 class Student string name in
  • QComboBox 设置代理组件

    背景 QComboBox 是Qt中比较常用的一个输入控件 用于实现一个文本下拉列表 在简单的应用场景中 QComboBox 完全可以满足要求 但是项目实践过程中会遇到以下问题 需要实现比较复杂的下拉列表 比如同时显示图标 文字 按钮等 QC
  • CUDA学习(九)想好好解释一下利用shared memory去做matrixMul

    代码来自CUDA Samples v9 1 0 Simple matrixMul 主要注释了matrixMulCUDA C A B 它的理念是把矩阵分成小块 每个线程利用两层循环 大循环在迭代subMatrix 小循环则是迭代每个小subM
  • 【Android UI设计与开发】第08期:底部菜单栏(三)Fragment+FragmentTabHost实现仿新浪微博底部菜单栏

    PS 这是转载CSDN作者yangyu20121224的文章 真的非常不错 它主要讲述如何通过Fragment碎片实现点击TabHost切换页面 可惜作者很长时间没有更新了 他写的那系列文章都很实用 以后在做Android布局时会用到该篇文
  • Reading and Writing Images_OpenCV 3.0.0-dev documentation

    OpenCV 3 0 0 dev documentation OpenCV API Reference imgcodecs Image file reading and writing https docs opencv org 3 0 b

随机推荐

  • Python While 循环语句

    Python 编程中 while 语句用于循环执行程序 即在某条件下 循环执行某段程序 以处理需要重复处理的相同任务 其基本形式为 while 判断条件 condition 执行语句 statements 执行语句可以是单个语句或语句块 判
  • iOS开发抓包工具之Charles使用

    在iOS开发过程中 抓包是常见的必备技能之一 这里我们主要介绍一下Mac下的抓包利器Charles 文中版本 4 0 1 它可以非常方便的抓取Http Https请求 从而提高我们的开发效率 本文中不提供破解版安装使用说明 网上一大堆 建议
  • 单链表头插和尾插详解

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 链表定义 二 代码解析 1 程序代码 2 程序图解 前言 链表是一种常见的数据元素 它和我们之前学的数组不同 储存元素个数不受限制 操作难度也更大 为加强
  • Linux man手册一篇通

    linux man man是Linux的一个非常强的的命令 它的全称为manual 手册 有了它不用联网 轻松获取相关信息 man手册章节组成 man手册通常由多个类型章节组成 章节类型定义如下 章节 内容 中文 1 Executable
  • 攻防世界---getit

    getit 题目描述 菜鸡发现这个程序偷偷摸摸在自己的机器上搞事情 它决定一探究竟 题目附件 https adworld xctf org cn media task attachments e3dd9674429f4ce1a25c08ea
  • Java语音技术之FreeTTS

    转自 微点阅读 https www weidianyuedu com content 0017809736406 html Java语音技术之FreeTTS Java提供了语音API技术用于支持应用程序或Web页面中的人机语音交互 其核心技
  • Flash Download failed - “Cortex-M3“解决方法

    前几天在玩STM32F1的时候 烧录代码的时候出现这样一个错误 Error Flash Download failed Cortex M3 首先肯定要看配置问题 采用不同的仿真器 需要配置的选项就不同 这个完全可以自己看产品说明 当确定配置
  • vscode资源管理器隐藏配置文件的显示

    资源管理器显示太多 开头的文件 大多是配置文件 显示过多造成查看混乱 如何隐藏这些文件呢 左下角点击设置按钮中的设置 点击如图所示的按钮 在弹出的settings json 中添加如下内容并保存 files exclude true 注意
  • Nginx报错[emerg]: unknown directive “”

    前言 今天用记事本修改Nginx中的conf配置文件 由于自己没有备份 导致出问题 解决了两个小时都没有解决掉 不过遇到问题是好事 可以解决 如果有备份遇到问题也许不会一直去解决吧 但是 如果工作中的项目 由于自己的不备份 随意改动 影响项
  • 【C++入门】C/C++的(静态)断言用法总结

    1 C语言的断言 1 1 函数原型 include
  • linux0.11中的fork实现和一些注意事项

    最近几天刚开始在读代码 读的挺爽的 不过碰到了很多问题 慢慢来吧 有一个fork的系统调用一直没弄明白 查了一下再CSDN上有一篇好文 记录一 下 顺便自己添加一些自己的想法 下面是思路和提问 内核是linux0 11版本 里面的fork
  • Java刷新bean重新加载bean 上下文 刷新bean

    Autowired private ApplicationContext applicationContext 可以为接口或者业务方法被调用 public void reloadInstance 获取上下文 DefaultListableB
  • Transformer 训练优化

    前言 自 BERT 出现以来 NLP 领域已经进入了大模型的时代 大模型虽然效果好 但是毕竟不是人人都有着丰富的 GPU 资源 在训练时往往就捉襟见肘 出现显存 out of memory 的问题 或者训练时间非常非常的久 因此 这篇文章主
  • C语言深入学习--checklist6:函数、变量

    函数 1 如何查看函数在内存中的地址 打印该函数名的值就可以了 函数名是一个const的函数指针 2 如何给一个函数指针赋值 下面这个例子 函数指针的赋值和调用都有了 include
  • VNC远程连接(Win连Linux)

    VNC是主流Linux发行版内置的图形化远程工具之一 1 在Linux上启动VNC Server 执行vncserver命令 2 直接运行 vncviewer exe 系统会出现 Connection details 对话框 在 Conne
  • Mol Cell Proteomics.

    大家好 本周分享的是发表在MCP上的一篇关于鸟枪蛋白质组学中的错误率的文章 题目是Integrated identification and quantification error probabilities for shotgun pr
  • Android 仪表盘 图片 中心 旋转

    因为项目需求 需要做一个基于仪表盘方式的数据显示方式 在网上一会 google 一会 baidu 最后得来的也就是对 Matrix 的几个解释 之前还被 hdpi mdpi ldip 搞得晕头转向的 郁闷了许久 但是今天终于搞定了 心情愉悦
  • PID整定二:基于Ziegler-Nichols的频域响应

    PID整定二 基于Ziegler Nichols的频域响应 1参考 2连续Ziegler Nichols方法的PID整定 2 1整定方法 2 2仿真示例 1参考 1 1根轨迹图的绘制及分析 1 2计算机控制技术01 3 4离散系统的根轨迹分
  • 蓝桥杯python组算法模板与习题

    目录 一 一些简单的处理技巧和语法 1 小技巧 1 1 python中的快读 sys库 1 2 python程序测试时间 仅供参考实际比赛可能也没啥用 1 3 python中日期处理等问题小技巧 2 基础语法 2 1 首先就是标准格式化输入
  • Centos系统安装Tomcat(Tomcat7,Java8-jdk1.8)

    以前经常使用java8 也就是java jdk1 8 和tomcat7开发web系统 怀旧记录一下在centos7系统里安装部署tomcat7 同时部署多个tomcat7的方法 解决tomcat7在centos7系统启动很慢的问题 apac