`
jimichan
  • 浏览: 282169 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Jetty6 指南和解析 - 第二章 Jetty初探

阅读更多

写在前面:使用jetty已经很久了,它是一个很出色的web容器和工具,特在此和大家分享jetty6的知识。网络上有一些关于jetty的资料,但过去陈旧且不具有系统性,导致很多人误解jetty的功能,国外目前也没有关于jetty的书籍,所以那些搞翻译的人也没有翻译来源,故决定写一本关于jetty6的书,以推广jetty在国内的使用。记住jetty不仅仅是一个web容器!

 

 

由于这一些系列文章正在编写过程中,写好一章就发一章,难免有很多错误的地方,欢迎哥们指正!

第2章 Jetty初探

 
 
2.1 下载
    Jetty的首页地址是http://www.mortbay.org/jetty/,点击Downloads进入下载介绍页面,由于Jetty7之后,托管服务有Eclipse接替,所以jetty6.1之前(包含6.1)继续由Codehaus提供下载服务,在该页面的下方有如下信息:
    

 

版本JavaHTTPServletJSPStatusNotes
Jetty-8 eclipse 1.6- HTTP/1.1 RFC2616 3.0 2.2 Development Standardized async
Jetty-7 eclipse 1.5- HTTP/1.1 RFC2616 2.5 2.1 Almost stable org.eclipse.jetty
Jetty-6.1 1.4-1.6 HTTP/1.1 RFC2616 2.5 2.1 or 2.0 Stable Async SSL, AJP, cometd, testing
Jetty-6 1.4-1.5 HTTP/1.1 RFC2616 2.5 2.1 or 2.0 Deprecated Continuations, IOC, NIO, dynamic buffers, smaller, faster, better
Jetty-5.1 1.2-1.5 HTTP/1.1 RFC2616 2.4 2.0 Stable J2EE 1.4 Compliance tested, optimizations, geronimo integration.
Jetty-5.0 1.2-1.4 HTTP/1.1 RFC2616 2.4 2.0 Deprecated Schema, JettyPlus
Jetty-4.2 1.2-1.4 HTTP/1.1 RFC2616 2.3+ 1.2 Mature JettyPlus
Jetty-4.1 1.2-1.4 HTTP/1.1 RFC2616 2.3 1.2 Deprecated JAXP1.1, AJP13(mod_jk)
Jetty-4.0 1.2 HTTP/1.1 RFC2616 2.3 1.2 Deprecated  
Jetty-3.1 1.2 HTTP/1.1 RFC2068 2.2 1.1 Ancient JMX
Jetty-3.0 1.2 HTTP/1.1 RFC2068 2.2 1.1 Fossilized  
Jetty-2.4 1.1 HTTP/1.0 RFC1945 2.1 1.0 Legendary  
Jetty-1.0 1.0 HTTP/1.0 RFC1945 - - Mythical  

 

 

 
 本书讨论的Jetty版本是6.1,也是目前使用最多的稳定版本,我们到http://dist.codehaus.org/jetty/jetty-6.1.22/下载6.1系列最新的6.1.22版本:
 
jetty-6.1.22-src.zip 16-Nov-2009 23:04 5.7M
jetty-6.1.22.zip 16-Nov-2009 23:10 24M
 
    我们下载24M大小的jetty-6.1.22.zip文件,另外一个文件有5M是因为只包含了Jetty源码和实例源码,jetty-6.1.22.zip文件包包含了 api文档,实例代码、jetty源码、发行Jar文件、各操作系统下的启动脚本和其他部分依赖包。也许你会有疑问,我之前介绍Jetty的时候说Jetty体积非常小,是的没错!Jetty核心文件的大小只有约700K!
 
 

2.2 安装

    要运行Jetty的首要条件当然是需要安装JDK了,建议使用j2se 1.5以上的版本,关于JDK或者JRE的安装,为了环保这里就不再花费篇章介绍了,请参考其他网络资料。
    
    其实Jetty所谓的安装过程也就是将下载的文件解压到指定的目录,然后根据不同的操作系统来配置环境变量而已。
 
   以后讲解如何从maven源码编译等。

2.3 使用java命令启动

    只要在支持j2se的平台的操作系统下,jetty都可以运行。所以我们先介绍jetty提供的跨平台的服务启动方式。

2.3.1 快速启动

     打开控制台,定位到jetty的安装目录,执行命令:            
        
java -jar start.jar etc/jetty.xml
提示:关于如何执行java的jar文件请查找其他资料。
 
    start.jar 后面内容是传递给start.jar的参数,多个参数用空格隔开。
 
参数内容可以有以下几种:
  1. --help    查看帮助信息
  2. --stop    停止服务,下节中会讲到
  3. --version  查看当前jetty版本信息
  4. 其他:作为Jetty服务配置文件
 

    我们看到上条命令指定参数内容为etc/jetty.xml,它实际指向一个服务配置文件,该文件是用来设置jetty服务启动的系统配置信息。比如监听端口,发布某个目录下面的web应用,jndi的配置等等,这些将在后续章节详细描述。当然服务配置文件可以是多个,比如:

 
java -jar start.jar etc/jetty.xml etc/jetty-plus.xml
   这条命令就指定了两个服务配置文件,etc/jetty.xml和etc/jetty-plus.xml。
 
    在后续的章节中术语“服务配置文件”就是指的这些文件。
   
    使用浏览器打开地址 http://localhost:8080/ ,你将会看到jetty的默认示例站点。
 

2.3.2 停止服务

    在刚才启动jetty的终端窗口里面按住ctrl-c键即可。
 
    不过你可以这样来启动
 
java -DSTOP.PORT=8009 -DSTOP.KEY=secret -jar start.jar
     
    jetty启动后会在本地监听你指定的端口8009,并将在验证下次关闭命令的密码secret。现在再通过命令:
 
java -DSTOP.PORT=8009 -DSTOP.KEY=secret -jar start.jar --stop 
 
    就可以在本机的另外一个终端窗口来停止jetty服务。在linux系统中,你可以先将jetty进程转移到后台执行,然后再通过命令行来停止Jetty服务。
 
    哦,看了上面的介绍你或许以为jetty启动和关闭是如此麻烦,一点也不符合Jetty小巧玲珑的气质。其实Jetty为我们准备了各个操作系统中快捷的方式。不过记住不管何种方式最终都是通过start.jar来启动jetty服务的。
 

2.3.3 start.jar深入探讨

     初学者可以先跳过本节。本节讨论start.jar模块的作用和细节。start.jar让jetty各个不同的组件联合起来工作,使得jetty看上去像一个服务器软件,同时start.jar也不过是jetty的其中一个组件而已。了解start.jar工作原理后,我们就可以知道#jetty_home/lib下面那么多文件夹下面的jar文件是如何配被选择性地加入到classpath中去的。
 
    Jetty start 组件提供了跨平台的启动方式。 通过启动命令 java -DDEBUG=true -jar start.jar [jetty.xml ... ] 可以看到启动过程的debug日志信息。
 
    看看Jetty start 在启动过程中都做了哪些操作:
        
  1. 自动设置正确的 jetty home目录
  2. 根据JDK版本配置classpath,比如jdk1.5版本之前的版本只能使用jsp2.0规范所需的jar包
  3. 根据设定的classpath,构建好一个类加载器。再根据设定的main class来调用指定main class的main方法
    由此可见start组件是相当独立的组件,甚至我们可以在自己的项目里面单独使用该组件控制程序的启动。
 

    start.config语法

    Jetty start是由一个名叫start.config的配置文件控制的,这个文件存在start.jar里面,路径是org/mortbay/start/start.config。熟悉这个配置文件的内容会对jetty作为服务器的启动过程有更好的了解。最重要的是我们知道jetty的classpath的设置和如何通过设置系统变量来把外部类路径增加到jetty中。
 
    start.config的格式是每一行一条指令,如果以#开头则为注解行。指令的后面是执行条件,如果条件不符合则忽略。
    指令有如下几种情况:
  • 以.path结尾: 如果.path前面的字符串存在且长度大于0,则将该类路径加入到系统类路径中
  • 包含 “=”  :   执行System.setProperty(property,value)调用,“=”左边为property,右边为value
  • 以.class结尾:如果".class"前面有值的话,就设定为Main class
  • 以.xml结尾:  如果指定的xml文件存在的话就作为jetty服务的启动配置文件之一
  • 以/*结尾:    指定目录下面的所以jar或者zip文件,被加入到classpath中
  • 以/**结尾:  指定递归该目录下面的所以jar或者zip文件,被加入到classpath中
  • 以/结尾:     指定的目录作为classpath的一部分
  • 其他:         作为一个文件加入到classpath中
    关于条件:
  • "<",">"," <=",">=","==","!=" 是条件的比较操作符,从左到右执行
  • exists 检测紧跟着后面的文件是否存在
  • available 检测紧跟着后面的class是否存在
  • !表示非;always表示true
  • 变量nargs表示传递给start.jar的参数数量
  • 变量java表示java版本
    其他规则:
  • 的指令按行从上到下执行
  • 如果一个文件或者目录由于条件被否决,没有被加入到类路径中,那么即使后续指令中包含了该文件或者目录,那么同样不会被加入类路径中
  • 指令或者条件中, $(...) 表示获取系统属性,即一次System.getProperty()调用。如$(jetty.class.path).path指令,当系统属性“jetty.class.path”没有设置,那么运行时实际指令的值位 “.path”。如果设置系统属性“jetty.class.path”的值为"/usr/local/jarlib",那么运行时实际指令值为 "/usr/local/jarlib.path"
 
start.config文件
$(jetty.class.path).path                         always
$(jetty.lib)/**                                  exists $(jetty.lib)
 
 
# Try different settings of jetty.home until the jetty.jar is found.
jetty.home=.                                     ! exists $(jetty.home)/start.jar 
jetty.home=..                                    ! exists $(jetty.home)/start.jar
jetty.home=/home/jetty                           ! exists $(jetty.home)/start.jar
jetty.home=/C:/jetty                             ! exists $(jetty.home)/start.jar
jetty.home=.                                     ! exists $(jetty.home)/start.jar 
 
# The main class to run
org.mortbay.xml.XmlConfiguration.class
$(start.class).class
 
# The default configuration files
$(jetty.home)/etc/jetty.xml                      nargs == 0
 
# Set the jetty classpath
$(jetty.home)/lib/*                              always
 
# Set the classpath for the supporting cast               
$(jetty.home)/lib/jsp-2.1/*                      java >= 1.5   
$(jetty.home)/lib/jsp-2.0/*                      ! available org.apache.jasper.servlet.JspServlet               
$(jetty.home)/lib/management/*       
$(jetty.home)/lib/management/mx4j/*              java < 1.5           
$(jetty.home)/lib/naming/*                              
$(jetty.home)/lib/plus/*                             
$(jetty.home)/lib/xbean/*                             
$(jetty.home)/lib/wadi/*                             
$(jetty.home)/lib/grizzly/*                             
$(jetty.home)/lib/annotations/*                  java >= 1.5                            
 
$(jetty.home)/lib/jre1.5/**                      java >= 1.5
 
# Recursively add all jars and zips from the ext lib
$(jetty.home)/lib/ext/**                        always
 
# Try some standard locations for anything missing.
/usr/share/java/ant.jar                          ! available org.apache.tools.ant.Main
 
# Add a resources directory if it is there
$(jetty.home)/resources/
    

2.4我们可以学到什么

 
 

2.5 Windows系统下启动和关闭控制

    
    jetty利用Win32Wrapper工具(http://wrapper.tanukisoftware.org)使得在window系统上可以以控制台或者Window服务的方式运行jetty程序,使用起来非常方便。
   
    在 $jetty_home/bin目录下有如下几个相关文件:Jetty-Service.exe , jetty-service.conf。双击Jetty-Service.exe 文件,即可以控制台的方式来运行jetty了。jetty-service.conf 显然是配置文件了,一会详细介绍。
 
     (以后我们用 $jetty_home来表示Jetty的安装目录)

    

  注册Windows服务
        打开命令行,转到 $jetty_home/bin 目录,执行命令:
        
        E:\jetty-6.1.22\bin>Jetty-Service.exe --install jetty-service.conf
        wrapper  | Jetty6-Service installed.
 
  启动服务
        执行命令: Jetty-Service.exe --start jetty-service.conf 
  停止服务
         执行命令:Jetty-Service.exe --stop jetty-service.conf 
  注销服务
         执行命令:Jetty-Service.exe --remove jetty-service.conf 
 
    
    你在成功注册Windows服务后,可以修改服务让其随系统自动启动。
 
jetty-service.conf 配置文件

wrapper.java.classpath.1=../lib/win32/*.jar               

wrapper.java.classpath.2=../lib/*.jar
wrapper.java.classpath.3=../start.jar
wrapper.java.library.path.1=../lib/win32/
#wrapper.java.additional.n可以设置jvm参数
wrapper.java.additional.1=-Djetty.home=../           #设置系统属性jetty.home,指定jetty根目录
wrapper.java.additional.2=-Djetty.logs=../logs        #设置系统属性jetty.logs
wrapper.java.initmemory=3                                 #jvm初始内存大小
wrapper.java.maxmemory=64                              #jvm内存大小
wrapper.java.mainclass=org.mortbay.jetty.win32service.JettyServiceWrapperListener
#wrapper.app.parameter.n可以设置应用程序参数,及 -jar start.jar 后面的参数
#例如 wrapper.app.parameter.1=../etc/jetty.xml ../etc/jetty-ajp.xml
wrapper.app.parameter.1=../etc/jetty.xml
wrapper.console.format=PM
wrapper.console.loglevel=INFO
wrapper.logfile=../logs/jetty-service.log          #输出到System.out到内容将同时被记录在该文件
wrapper.logfile.format=LPTM
wrapper.logfile.loglevel=INFO
wrapper.logfile.maxsize=0                          #jetty-service.log文件的最大尺寸,0表示不限制
wrapper.logfile.maxfiles=0                          #当限制文件大小时,允许存在的最多文件个数
wrapper.syslog.loglevel=NONE
wrapper.ntservice.name=Jetty
wrapper.ntservice.displayname=Jetty6-Service
wrapper.ntservice.description=Jetty is an open-source, standards-based, full-featured web server implemented entirely in java
wrapper.ntservice.starttype=AUTO_START
wrapper.ntservice.interactive=false
 
#Win32Wrapper中定义一个触发器,当控制抛出OutOfMemoryError错误,则重启Jetty服务
wrapper.filter.trigger.1=java.lang.OutOfMemoryError  
wrapper.filter.action.1=RESTART
 

2.6 Linux系统下启动和关闭控制

     在$jetty_home/bin目录下,Jetty为我们提供了一个名为jetty.sh的shell脚本文件,在linux环境下我们用这命令 ./jetty.sh start 和 .jetty.sh stop 命令来启动和关闭jetty。jetty.sh在启动Jetty后,将jvm的系统进程ID保存在一个$JETTY_RUN/jetty.pid的文件里面,然后在收到stop命令后读取pid来关闭相应进程。
     在jetty.sh里面还可以定制变量来控制jetty,如指定JAVA_HOME目录、指定jvm最大内存、指定pid文件的位置等。

2.6.1 系统变量的设置

提示:在编辑变量的时候“=”两边千万不要有空格。
 
下面逐个介绍各变量的作用:
 

JAVA_HOME    

    指定Java安装目录。当你需要指定特定位置的jdk或者jetty搜索不到java安装目录时,需要设定该变量。
例如:    JAVA_HOME=/usr/local/java/jdk1.5.0_10/
 

JAVA

     执行java命令。默认值为 $JAVA_HOME/bin/java。一般不需要设置。
 

JAVA_OPTIONS

    JVM的可选参数。你可以利用这个选项配置内存大小、系统变量等等其他参数,这个变量非常有用。
 
例如:JAVA_OPTIONS="-Xmn128M -Xms256M -Xmx1024M 
-Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider"
 

JETTY_RUN

    jetty.pid文件的存放目录。默认值为 /var/run, /usr/var/run  或 /tmp 三者之一。如果你需要在一台服务器上启动多个安装目录下的jetty,那么必须设定该变量以避免共享同一pid文件而造成冲突。建议设置为各个安装目录下面新建的run目录。
 

JETTY_PID

    pid文件的路径。默认值 $JETTY_RUN/jetty.pid。一般不需要设置。
 

JETTY_ARGS

    传递jetty的参数。值 java -jar start.jar 后面的部分。
 

JETTY_HOME

    jetty安装目录。虽然jetty尝试搜索jetty安装目录,但是我们还是建议设定该变量。
例如:
    JETTY_HOME=/usr/local/jetty-6.1.22
 
    在启动java时增加jvm 参数 “-Djetty.home=$JETTY_HOME” 。所以在Linux环境下,start.jar的自动搜索jetty_home的动作会被取消。
 

JETTY_USER

    如设定该值,那么将以该用户的身份启动jetty
 

JETTY_PORT

    jetty服务器监听端口。如果设定该值,那么在启动java时增加jvm 参数 “-Djetty.port=$JETTY_PORT” 。
    在jetty启动配置文件里,<Set name="Port"><SystemProperty name="jetty.port" default="8080"/></Set>这个语句将会使用我们这里指定的端口值。
 

2.6.2 命令参数

    系统控制台中,跳转到 $jetty_home/bin目录下,输入“  ./jetty.sh start”,其中start为命令参数,现在介绍几个常用命令参数
    

start    

    启动jetty服务

 

stop    

    停止jetty服务

restart 

    重启jetty服务

supervise    

 

    挂起服务

 
check   
 
     显示当前jetty实例运行时所使用的变量参数,可以用来查看变量是否设置正确。
显示结果实例:
node-189 bin # ./jetty.sh check
Checking arguments to Jetty:
JETTY_HOME     =  /usr/local/jetty-6.1.15
JETTY_CONF     =
JETTY_RUN      =  /var/run
JETTY_PID      =  /var/run/jetty.pid
JETTY_PORT     =
JETTY_LOGS     =
CONFIGS        =  /usr/local/jetty-6.1.15/etc/jetty-logging.xml /usr/local/jetty-6.1.15/etc/jetty.xml
JAVA_OPTIONS   =   -Djetty.home=/usr/local/jetty-6.1.15 -Djava.io.tmpdir=/tmp
JAVA           =  /usr/local/java/jdk1.5.0_10/bin/java
CLASSPATH      =  /usr/local/java/jdk1.5.0_10/lib:/usr/local/java/jdk1.5.0_10/jre/lib
RUN_CMD        =  /usr/local/java/jdk1.5.0_10/bin/java  -Djetty.home=/usr/local/jetty-6.1.15 -Djava.io.tmpdir=/tmp -jar /usr/local/jetty-6.1.15/start.jar  /usr/local/jetty-6.1.15/etc/jetty-logging.xml /usr/local/jetty-6.1.15/etc/jetty.xml
 
Jetty running pid=24573
 
 

2.6.3 相关配置文件

 

/etc/jetty.conf

    如果该文件存在,那么该文件的内容会被解析用来设定jetty 启动配置文件(configurations),规则如下:
 
  • 以“#”开头:该行内容作为注解
  • 指向一个文件的路径:如果该文件存在则作为jetty启动的一个启动配置文件
  • 指向一个目录的路径:如果该目录存在,则目录下的所有.xml的文件会被作为启动配置文件

 

    如果不存在该文件,jetty.sh将会使用默认值 :

“ ${JETTY_HOME}/etc/jetty-logging.xml ${JETTY_HOME}/etc/jetty.xml ”

 

/etc/default/jetty 、/etc/default/jetty6 和 $HOME/.jettyrc

    若任何一个文件存在,那么jetty.sh文件执行时都会执行它。我们可以在这些文件中配置系统变量。
    
 
   

2.7本章小结

xxx

  

15
0
分享到:
评论
10 楼 Yinny 2013-08-20  
楼主V5 网上的文章一搜一堆互相copy的,自己写的文章 太难能可贵啦~!
9 楼 290845534 2013-07-26  
wangpeihu 写道
我想收藏,可是我不敢,我没有那500W,我只能将它背下来了。呵呵。


收藏这个把 这个不要500W 
http://docs.codehaus.org/display/JETTY/A+look+at+the+start.jar+mechanism
8 楼 宋建勇 2013-05-21  
very nice!
7 楼 hexiao0511 2012-01-05  
什么东西。如果我要在一个linux下面运行2个完全独立的实例,一个实例重启对另外一个完全没有任何影响咋办。
6 楼 wantdrink 2010-07-13  
楼主这个系列的文章写得非常好
易懂且内容全面
5 楼 ferly_j 2010-06-28  
我也想试试这个google都在使用的web容器,
谢谢 楼主
4 楼 wangpeihu 2010-06-14  
我想收藏,可是我不敢,我没有那500W,我只能将它背下来了。呵呵。
3 楼 xgj1988 2010-06-01  
2 楼 xgj1988 2010-06-01  
:idea:  顶
1 楼 fishyu0817 2010-05-25  
真不错,自己的理解。这个很重要,我会关注

相关推荐

    Jetty权威指南.pdf

    #### 二、Jetty初探 **2.1 下载** 用户可以从Jetty官网下载最新版本的Jetty。官方提供多种打包方式,包括zip压缩包、tar.gz压缩包等,方便不同操作系统用户的选择。 **2.2 安装** 安装Jetty非常简单,只需要解压...

    家庭支出与收入数据数据集,根据人口统计和地理指标进行了分类,加拿大为例,适用于数据分析、机器学习

    这个数据集提供了2010年至2021年间加拿大各省的家庭支出与收入数据,这些数据根据人口统计和地理指标进行了分类。每行代表了年份(REF_DATE)、省份(GEO)以及编码后的支出或收入类型的唯一组合(COORDINATE)。以下是该数据集的关键特点及包含的列信息: 关键特点: 支出数据:家庭支出按照收入五分位数和支出类别进行分类。 收入数据:家庭收入值根据家庭类型、较年长成年人的年龄组别和收入水平细分。 地理位置匿名化:为了保护隐私,原始的地理位置标识符被替换为如“Province 1”这样的标签。 时间序列:涵盖了超过十年的财务数据(2010–2021),适合用于纵向经济和社会趋势分析。 包含的列: REF_DATE:记录年份(2010–2021) GEO:省份标签(例如,“Province 1”) Statistic:度量类型(例如,平均家庭支出) Before-tax household income quintile:税前家庭收入水平分组 Household expenditures, summary-level categories:支出类别 UOM:计量单位 COORD

    【锂电池剩余寿命预测】GRU门控循环单元锂电池剩余寿命预测(Matlab完整源码和数据)

    1.【锂电池剩余寿命预测】GRU门控循环单元锂电池剩余寿命预测(Matlab完整源码和数据) 2.数据集:NASA数据集,已经处理好,B0005电池训练、测试; 3.环境准备:Matlab2023b,可读性强; 4.模型描述:GRU门控循环单元在各种各样的问题上表现非常出色,现在被广泛使用。 5.领域描述:近年来,随着锂离子电池的能量密度、功率密度逐渐提升,其安全性能与剩余使用寿命预测变得愈发重要。本代码实现了GRU门控循环单元在该领域的应用。 6.作者介绍:机器学习之心,博客专家认证,机器学习领域创作者,2023博客之星TOP50,主做机器学习和深度学习时序、回归、分类、聚类和降维等程序设计和案例分析,文章底部有博主联系方式。从事Matlab、Python算法仿真工作8年,更多仿真源码、数据集定制私信。

    【更新至2024年】2000-2024年各省专利侵权案件结案数数据

    2000-2024年各省专利侵权案件结案数数据 1、时间:2000-2024年 2、来源:国家知识产权J 3、指标:专利侵权案件结案数 4、范围:31省 5、用途:可用于衡量知识产权保护水平

    HMTL+JS+CSS实现贪吃蛇游戏,包含有一般模式,困难模式,还有无敌模式

    - 使用`<div>` 容器组织游戏界面,包含得分显示、游戏画布和操作按钮 - 支持三种游戏模式选择(一般模式、困难模式、无敌模式) - 移动端和桌面端兼容,提供触摸和键盘两种控制方式 2. CSS样式 : - 采用Flex布局实现页面居中显示 - 使用Grid布局实现方向按钮的排列 - 定义了游戏容器的阴影、圆角等视觉效果 - 为按钮添加了hover效果和过渡动画 3. JavaScript逻辑 : - 使用Canvas API实现游戏渲染 - 实现了蛇的移动、食物生成、碰撞检测等核心游戏逻辑 - 支持三种游戏模式,不同模式对应不同的游戏速度和规则 - 使用localStorage保存最高分记录 - 实现随机颜色生成,使游戏更具趣味性 代码整体结构清晰,功能完整,具有良好的可扩展性和可维护性。

    附件2-5:台区智能融合终端入网专业检测送检样品主要元器件清单.docx

    台区终端电科院送检文档

    基于强化学习的飞机升阻力特性预测模型实现及应用(含详细可运行代码及解释)

    内容概要:本文详细介绍了一个基于强化学习(RL)的飞机升阻力特性预测模型的实现过程。首先,定义了飞机空气动力学环境,包括状态空间、动作空间以及目标——预测升力系数(Cl)和阻力系数(Cd)。接着,通过生成模拟数据并进行预处理,创建了用于训练的数据集。然后,构建了一个神经网络代理模型,用于联合编码状态和动作,并预测升阻力系数。最后,实现了PPO算法来训练强化学习代理,使其能够根据当前状态选择最优动作,并通过不断迭代提高预测精度。文中还提供了完整的代码实现和详细的注释。 适合人群:航空航天领域的研究人员、机器学习工程师、对强化学习感兴趣的开发者。 使用场景及目标:适用于需要预测飞机升阻力特性的应用场景,如飞行器设计优化、性能评估等。目标是通过强化学习方法提升预测模型的准确性,从而为实际工程提供可靠的理论支持和技术手段。 其他说明:本文不仅涵盖了模型的设计与实现,还包括了数据生成、预处理等多个环节,有助于读者全面理解整个建模过程。同时,提供的代码可以作为研究和开发的基础,方便进一步扩展和改进。

    cmock ut aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

    cmock ut aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

    lsm6d datasheet

    lsm6d datasheet

    风力发电机传动机构的设计(增速器).rar

    风力发电机传动机构的设计(增速器)

    genesys-zu(5ev)配置petalinux(从安装到嵌入)

    genesys-zu(5ev)配置petalinux(从安装到嵌入)

    django自建博客app

    django自建博客app

    基于android平台的学生选课系统的设计与实现.zip

    Android项目原生java语言课程设计,包含LW+ppt

    幼儿园预防肺结核教育培训课件资料.pptx

    幼儿园预防肺结核教育培训课件资料

    STM32F103RCT6单片机控制气泵和电磁阀的开关,气泵和电磁阀的开和关均为开关量,使用mos管控制,mos管选择主要注意两个参数即可,一是导通的电流,二是耐压值,并且常用NMOS管

    STM32F103RCT6单片机控制气泵和电磁阀的开关 1、气泵和电磁阀的开和关均为开关量,实现控制方法有多种,比如继电器,但是继电器动作有噪声且体积较大,更好的方法为使用mos管。 2、mos管的选型:mos管选择主要注意两个参数即可,一是导通的电流,二是耐压值,并且常用NMOS管,根据要求,气泵和电磁阀供电电压为12V,所以选择的mos管耐压值要大于12V,这里选用耐压值为30V的MOS管,并且导通电流为5.8A。

    面板数据-全国各省金融监管强度数据集-含处理代码(2009-2023年).txt

    因文件较多,数据存放网盘,txt文件内包含下载链接及提取码,永久有效。失效会第一时间进行补充。样例数据及详细介绍参见文章:https://blog.csdn.net/T0620514/article/details/146916073

    将 Windows 系统中 “C:\windows\fonts” 目录下的所有字体文件

    将 Windows 系统中 “C:\windows\fonts” 目录下的所有字体文件

    计量自动化终端技术规范 第2-5部分:智能量测终端功能模组接口协议(2023年6月).pdf

    智能量测终端最新标准

    滑道式提升机及其控制电路的设计.zip

    滑道式提升机及其控制电路的设计.zip

    《基于YOLOv8的化工管道焊缝缺陷检测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

Global site tag (gtag.js) - Google Analytics