Tomcat

【Tomcat】 tree -L 1├── bin # 包含了Tomcat服务器的可执行文件,如启动和关闭脚本、管理脚本等。├── BUILDING.txt # 包含了关于如何构建Tomcat服务器的说明文档。├── conf # 包含了Tomcat服务器的配置文件,如服务器配置、日志配置、Web应用程序配置等。├── CONTRIBUTING.md # 包含了关于如何向Tomcat项目贡献代码的说明文档。├── lib # 包含了Tomcat服务器运行所需的Java类库文件。 阅读详情

1.Web流程

1.1 软件架构

1. C/S:客户端/服务器端

基于客户端,需要有指定的APP,比如手机上的淘宝和电脑上的淘宝/QQ等,得先下载并安装就可以使用,不依赖与其他软件

  1. B/S:浏览器/服务器端

基于浏览器,比如网页版淘宝,网页版百度,只要有浏览器就可以通过地址进行访问

1.2 资源分类

1. 静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源.静态资源可以直接被浏览器解析,如: html,css,JavaScript,内容都是在源码中写死的(硬代码)

2. 动态资源:每个用户访问相同资源后,得到的结果可能不一样。称为动态资源。动态资源被访问后,需要先转换 为静态资源,在返回给浏览器,如:servlet/jsp,php,asp....

1.3 网络通信三要素

1. IP:电子设备(计算机)在网络中的唯一标识。  ,通过IP或者域名可以找到某一台电脑

127.0.0.1 代表当前电脑 

2. 端口:应用程序在计算机中的唯一标识。 0~65536   ,比如MySQL的端口是3306

3. 传输协议:规定了数据传输的规则       

基础协议:1. tcp:安全协议,三次握手。 速度稍慢,类似于打电话           

2. udp:不安全协议。 速度较快,类似于发短信

1.4 流程图

       1.前端发送请求,根据路径信息,访问后台接口。

              请求路径中,包含 协议、ip地址、端口号、路径

              通过ip地址找到服务器

              通过端口号,找到web服务器程序

              通过具体路径,找到执行的代码

       2.后端接收到请求后,进行处理,处理完成后,向前端返回响应。

       3.后端处理时,会通过和数据库交互,完成数据的操作。

2.Web服务器软件

2.1概念

服务器:安装了服务器软件的计算机。

服务器软件:接收用户的请求,处理请求,做出响应。

web服务器软件:接收用户的请求,处理请求,做出响应。   

在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目,实际上可以理解为web容器。

2.2常见的与java相关的服务器软件

1.webLogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。    2.webSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。

3.JBOSS:JBOSS公司的,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。

       4.Tomcat:Apache基金组织,中小型的JavaEE服务器,仅仅支持少量的JavaEE规范               servlet/jsp。开源的,免费的。

Jetty

2.3 Tomcat

       1. 介绍

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

2. 下载安装与卸载

       官网下载:http://tomcat.apache.org/

       安装:解压压缩包即可

       * 注意:安装目录建议不要有中文和空格

       卸载:删除目录就行了

参考 相关软件/TomCat安装和使用.docx 进行安装测试即可


3. 目录介绍

4. 启动 访问 关闭

              启动:bin/startup.bat ,双击运行该文件即可

              访问:浏览器输入http://localhost:8080 回车访问自己                                               http://别人的ip:8080 访问别人

              关闭:bin/shutdown.bat,双击运行该文件即可

       5. 修改端口号

              Conf目录下的server.xml文件中,找到

              <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

              修改8080为想要的端口即可

2.4 运行步骤

1 创建项目并启动 - 参考安装教程

2 当启动项目后 可以通过浏览器访问

IP:端口/项目名

127.0.0.1:8080/ServletTest

127.0.0.1 : 找到某一台电脑

8080 : 找到TomCat服务器的 webapps

ServletTest : 找到webapps下的某个部署的项目

2.5 端口占用问题

这个弹框 就是端口被占用问题

改端口 可以再tomcat安装目录下的 conf中的server.xml中更改

3.Servlet

3.1 概述

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet 理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用 来扩展基于HTTP协议的Web服务器。

最早支持Servlet标准的是JavaSoft的Java Web Server,此后,一些其它的基于Java的Web服务器开始支持标准的Servlet。

3.2 快速入门

      1. eclipse中创建web项目

              参考 相关软件/TomCat安装和使用.docx 进行项目的创建

      2. 创建servlet

创建一个类,继承HttpServlet类,并覆写doGet()/doPost()方法(根据页面请求方式而定)

创建servlet有两种 1 实现Servlet接口 2 继承HttpServlet  推荐使用继承

HttpServletRequest request代表了客户端向服务器发送过来的请求对象

HttpServletResponse response代表了服务器向客户端发送回来的响应对象

response.setContentType("text/html;charset=utf-8"); 设置返回的类型和字符编码

类型有好多,在TomCat的安装路面下,conf/web.xml里面

<mime-mapping> 中的类型 都可以进行设置

response.getWriter().println();向页面输出内容

与之类似的还有一个write() 也是向页面输出内容

out.write()是字节输出流的方法

out.print()/out.println()是字符输出流的方法

区别

     1 print方法是子类JspWriter,write是Writer类中定义的方法;

     2 重载的print方法可将各种类型的数据转换成字符串的形式输出,而重载的write方法只能输出字符、字符数组和字符串等与字符相关的数据;

     3 JspWriter类型的out对象使用print方法和write方法都可以输出字符串,但是,如果字符串对象的值为null时,print方法将输出内容为“null”的字符串,而write方法则是抛出NullPointerException异常。

在web.xml中 添加映射关系

注册和映射也有两种方式

1 xml

2 注解 @WebServlet

然后运行项目,浏览器请求 127.0.0.1:8080/Servlet_01/hello

演示示例:_01_HelloServlet

练习以上程序

 3. 执行原理

 4. Tomcat手动部署项目

       1. 直接将项目放到webapps目录下即可。

       2. 简化部署:将项目打成一个war包,再将war包放置到webapps目录下。                                  * war包会自动解压缩

3.3 生命周期

Servlet生命周期就是从创建Servlet对象开始一直到死亡的一个执行过程

1 先执行构造方法,用于创建Servlet对象

2 执行init()方法做初始化操作

3 执行service()/doGet()/doPost()方法处理真正的逻辑操作和数据交互

4 执行destroy()方法进行资源释放和销毁

Web.xml配置 :

<servlet>

        <servlet-name>_02_ServletLife</servlet-name>

        <servlet-class>com.tledu.zrz.servlet._02_ServletLife</servlet-class>

    </servlet>

    <servlet-mapping>

        <servlet-name>_02_ServletLife</servlet-name>

        <url-pattern>/s</url-pattern>

    </servlet-mapping>

演示示例:_02_ServletLife

通过上面示例可以看出,默认是第一次请求的时候,对servlet进行初始化,第一次请求才会执行构造方法和init方法以及service方法

再次请求就只会执行service方法

当然我们也可以通过web.xml中的配置,设置在启动TomCat的时候就初始化servlet

使用 load-on-startup 可以设置初始化的时机

    <servlet>

        <servlet-name>_02_ServletLife</servlet-name>

        <servlet-class>com.tledu.zrz.servlet._02_ServletLife</servlet-class>

        <!-- 设置servlet初始化的时机,默认是 -1,在第一次请求的时候初始化 -->

        <!-- 0 和 正整数都是在加载的时候启动,启动TomCat的时候 -->

        <load-on-startup>1</load-on-startup>

    </servlet>

    <servlet-mapping>

        <servlet-name>_02_ServletLife</servlet-name>

        <url-pattern>/s</url-pattern>

    </servlet-mapping>

3.4 Request

1. Http中请求消息格式

* 格式:

POST /login.html    HTTP/1.1       

Host: localhost       

User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0       

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8               Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2               Accept-Encoding: gzip, deflate

Referer: http://localhost/login.html

Connection: keep-alive

Upgrade-Insecure-Requests: 1

(空行)

username=zhangsan

              1)请求行

                     请求方式      请求url 请求协议/版本

                                          GET /login.html HTTP/1.1

                     HTTP协议有7中请求方式,常用的有2种

                     * GET:

                            1. 请求参数在请求行中,在url后。

                            2. 请求的url长度有限制的

                            3. 不太安全

                     * POST:

                            1. 请求参数在请求体中

                            2. 请求的url长度没有限制的

                            3. 相对安全

              2)请求头:客户端浏览器告诉服务器一些信息

                            格式  请求头名称: 请求头值

                     * 常见的请求头:

                            1. User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息                                            * 可以在服务器端获取该头的信息,解决浏览器的兼容性问题

                   2. Referer:http://localhost/login.html

                            * 告诉服务器,我(当前请求)从哪里来?

                            * 作用:

                                   1. 防盗链

                                   2. 统计工作

              3)请求空行 :空行,就是用于分割POST请求的请求头和请求体的。   

              4)请求体(正文):* 封装POST请求消息的请求参数

2. Request对象

       1.)  request对象和response对象的原理

              1. request和response对象是由服务器创建的。我们来使用它们

              2. request对象是来获取请求消息,response对象是来设置响应消息

       2.)HttpServletRequest对象,继承ServletRequest接口,封装HTTP请求消息

3. Request功能

       1) 获取请求消息数据       

              1. 获取请求行数据          

                     * GET /day14/demo1?name=zhangsan HTTP/1.1

                     * 方法: 

                            1. 获取请求方式 :GET 

                                   * String getMethod()

                            2. (*)获取虚拟目录:/day14

                                   * String getContextPath()

                            3. 获取Servlet路径: /demo1

                                   * String getServletPath()

                            4. 获取get方式请求参数:name=zhangsan

                                  * String getQueryString()

                            5. (*)获取请求URI:/day14/demo1

                                   * String getRequestURI()

                                   * StringBuffer getRequestURL() 

                6. 获取协议及版本:HTTP/1.1

                                   * String getProtocol()

                7. 获取客户机的IP地址:

                                   * String getRemoteAddr()

              2. 获取请求头数据

              * 方法:

                     * (*)String getHeader(String name):通过请求头的名称获取请求头的值                                     * Enumeration<String> getHeaderNames():获取所有的请求头名称

             

              3. 获取请求体数据:

              * 请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数

              * 步骤:

                     1. 获取流对象

                     *  BufferedReader getReader():获取字符输入流,只能操作字符数据

                     *  ServletInputStream getInputStream():获取字节输入流,可以操作所有类型数据

                     2. 再从流对象中拿数据

       2)其他功能:

              1. 获取请求参数通用方式:不论get还是post请求方式都可以使用下列方法来获取请求参数

              String getParameter(String name):根据参数名称获取参数值    例如获取参数:username=zs&password=123

              String[] getParameterValues(String name):根据参数名称获取参数值的数组 例如获取参数: hobby=xx&hobby=game

              Enumeration<String> getParameterNames():获取所有请求的参数名称

              Map<String,String[]> getParameterMap():获取所有参数的map集合

              2. 请求转发:一种在服务器内部的资源跳转方式

                     *步骤:

                            1. 通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)

                            2. 使用RequestDispatcher对象来进行转发:forward(ServletRequest request, ServletResponse response)

                     *特点:

                            1. 浏览器地址栏路径不发生变化

                            2. 只能转发到当前服务器内部资源中。

                            3. 转发是一次请求

              3. 共享数据:

                     * 域对象:一个有作用范围的对象,可以在范围内共享数据

                     * request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据

                     * 方法:

                            1. void setAttribute(String name,Object obj):存储数据

                            2. Object getAttitude(String name):通过键获取值

                            3. void removeAttribute(String name):通过键移除键值对

              4. 获取ServletContext:

                            * ServletContext getServletContext()

                    

升级Tomcat解决Tomcat 安全漏洞【为了同一个tomcat版本安装多个服务】2026-7-16 如果是Java web应用,需要迁移webapps目录下的war文件。主要迁移conf目录下的文件,尤其是server.xml文件。访问日志路径配置,修改server.xml。为了同一个tomcat版本安装多个服务。访问 127.0.0.1:8080。 阅读详情

相关推荐

CS224W图神经网络实战:如何用Motifs和Graphlets分析社交网络结构?

本文基于斯坦福CS224W课程,深入探讨了如何利用网络模体(Motifs)和图元(Graphlets)分析社交网络的微观结构。通过实战代码演示,文章介绍了如何识别具有统计显著性的关键连接模式,计算节点的图元度向量以刻画局部拓扑特征,并将这些结构洞见应用于社区发现、影响力分析及图神经网络的节点特征工程,从而提升模型在虚假账号检测等任务中的性能。

2w3e4r5t6y的博客 911

SpringBoot自动配置原理&内嵌tomcat启动及DispatchServlet加载时机

https://blog.youkuaiyun.com/qq_39364985/article/details/116998689 目录 一.概述 二.SpringBoot环境 三.自动配置原理 三. 内嵌Tomcat的启动时机 一.概述 SpringBoot简单来说就是是对spring,springmvc的一个高级封装,根据spring自己的spi机制加载spring.factories文件里的各种配置类。 一个仅依赖web环境的spirngboot项目,Springboot的启用原理可以概述为以

yygr的博客 1721

利用Arcgis发布wmts服务

使用发布 GIS 服务连接连接到 ArcGIS Server 站点后,可以将各种 GIS 资源(如地图文档、数据库以及服务定义)发布到服务器上。此外,还可以添加、删除、启动和停止服务。使用管理 GIS 服务器连接到 ArcGIS Server 站点后,可以编辑各种服务器属性,例如配置存储位置、集群配置、参与到该站点中的计算机列表以及管理站点的数据存储。通过使用 GIS 服务连接建立连接后,可以查看并使用发布到该站点的服务。但不能编辑服务器或服务属性、发布服务,也不能添加、删除、启动、停止或暂停服务。

ghgfsasxda的博客 2393

tomcat-Dockerfile 可配置tomcat的访问日志_dockerfile java -jar 指定tomcat日志

libapr1。

2401_87378735的博客 1704

HALCON卡尺模型实战:5分钟搞定工件尺寸测量(附完整代码)

本文详细介绍了HALCON卡尺模型在工件尺寸测量中的实战应用,通过5分钟快速搭建测量系统的完整指南,包括基础配置、高级参数调优和完整代码示例。卡尺模型能自动识别边缘并计算精确尺寸,显著提升工业视觉检测的效率和一致性,特别适用于实时测量场景。

weixin_42570296的博客 462

Obsidian从零搭建:可验证、可回溯、可演进的知识库工具链

个人知识库不是开箱即用的软件,而是基于Markdown内核构建的可演进系统。其核心原理在于分离‘稳定内核’与‘可插拔扩展’:Obsidian原生支持双链、嵌入、Frontmatter等基础能力,构成不可降级的知识骨架;而Dataview、Templater等插件则作为可验证、可回溯的增强层,需通过三问验证(解决痛点?有原生替代?失效可降级?)方可引入。这种设计赋予知识库技术价值——抗版本升级、跨平台兼容、离线可用,并支撑技术文档管理、项目复盘、读书笔记等真实场景。当面对computer use插件不可用或h

weixin_30660027的博客 680

深入Tomcat:JNDI在TOMCAT中的应用

 说句实话,在J2EE应用中很少用Tomcat得,一般都用Weblogic,Jboss,不过在网上发现了这篇文章,对于想对Tomcat做深入研究的朋友的确不错!JNDI在TOMCAT中的应用 在J2EE应用中,JNDI可以简化开发者的工作。而TOMCAT则使用户可以很方便的使用JNDI来开发自己的应用。 一.JNDI的配置 用户只需要配置TOMCAT的$CATALINA_HOME/CONF/S

上海夜未眠 2631

HDRP shader 获取阴影(Custom Pass)

Unity:2021.3.0f1 HDRP:12.1.6

LanQ的博客 2098

TOMCAT

TOMCAT tomcat是什么: tomcat是一个中间件,在B/S架构中,浏览器发出的http请求经过tomcat中间件,转发到最终目的服务器上,响应消息再通过tomcat返回给浏览器 tomcat做的主要事情: 开启监听端口监听用户的请求,解析用户发来的http请求,然后访问你指定的应用系统,然后你返回的页面经过tomcat返回给用户 Apache、Nginx和tomcat的区别: Apa...

qq_45300162的博客 2158

【一步到位】Android Studio 实现安卓连接阿里云物联网云平台

最新版本目前是Android Studio Iguana | 2024.1.2,你可以到官网上去找之前的版本,手上有工作项目的不要去轻易尝试,说不定你就编译失败了,失败了也不要担心,解决就可以了。

m0_73799445的博客 1万+

工业级AI智能体落地:OpenClaw+ONNX Runtime全栈部署,端到端延迟压至12ms

OpenClaw+ONNX的组合为工业AI智能体的落地提供了一套完整、高效、安全的解决方案。它解决了传统云端智能体在工业场景中面临的延迟、安全和稳定性问题,实现了本地数据闭环和毫秒级响应。未来,随着边缘计算和轻量级大模型技术的发展,工业AI智能体将变得更加智能和强大。我们可以预见,在不久的将来,工厂里的每一台设备都将拥有自己的AI智能体,它们能够自主感知、自主决策、自主执行,真正实现工业生产的全自动化和智能化。👉 点击我的头像进入主页,关注专栏第一时间收到更新提醒,有问题评论区交流,看到都会回。

2601_94871597的博客 735

tomcat优化总结

系统发生了比较严重的性能问题,因为事情紧急只能取消自己的休假计划,赶到现场调试系统。 到了之后,首先检查了Tomcat的配置文件server.xml,原来一直以为肯定是配置服务器的同学没有把Tomcat中默认的允许访问的最大数75给改掉,后来发现不是这个问题,在配置文件中设置Context的地方有一段非常的诡异:有一个Context的路径是在%Tomcat%/webapps/ROOT中的一个目录A

怪手大分的专栏 1万+

SAP BOM批量反查代码分享

SAP BOM反查批量查询代码分享

我小时候很黑的博客 4972

TOMCAT服务

1.用户通过浏览器进行了一个操作,比如输入网址并回车,或者是点击链接,接着浏览器获取了这个事件。2.浏览器向服务端发出TCP连接请求。3.服务程序接受浏览器的连接请求并经过TCP三次握手建立连接。4.浏览器将请求数据打包成一个HTTP协议格式的数据包。5.浏览器将该数据包推入网络,数据包经过网络传输,最终达到端服务程序6.服务端程序拿到这个数据包后,同样以HTTP协议格式解包,获取到客户端的意图。7.得知客户端意图后进行处理,比如提供静态文件或者调用服务端程序获得动态结果。

CZZDg的博客 1151

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

如何配置Tomcat,以及Tomcat和IIS的配置(1)

如何配置Tomcat,以及Tomcat和IIS的配置(1)1、首先要先下载JDK和Tomcat,我使用的版本是JDK_1_4_2_08和Tomcat5.0.16.下载网址请自己网上搜。下面先安装JDK,然后再安装Tomcat。安装完成以后就要添加环境变量了。右击我的电脑->属性->高级->环境变量,在系统变量中新建或编辑环境变量需要添加的环境变量如下:(1)、JAVA_HOME(JDK运行使用

1469

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

TOMCAT实验

配置Java环境Java环境被存放在 /etc/alternatives/目录下解压tomcat安装包到/usr/local/目录下,并制作软连接tomcat启动tomcat,查看端口浏览器访问。

weixin_65846252的博客 1001

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

shell脚本部署tomcat

#!/bin/bash #AUTHOR:AN #DATE:2019-08-29 #FUNCTION: #DESCRIBE:快速部署Tomcat ######################定义变量###################### Nfs_Dir=/cloud_nsd #NFS共享目录 Script_Path=$Nfs_Dir/shell #脚本路径 Soft_Path...

运维@小兵的博客 609

tomcat和apache

1. tomcat是什么?做什么用的? 2. tomcat和apache是什么关系?整合是怎么回事? 3. jsp和它们什么关系? 4. apache,tomcat,jsp,php,mysql能一起用吗? 1.TOMCAT是个支持JSP和Servlet的东东,当然也可以做为小型的WEB服务器来用。 2.APACHE是个大型的WEB服务器

ios_xumin的专栏 1446

Tomcat 中的JVM问题

1.TOMCAT初始JVM大小为64M,在将应用正式部署后,可以通过调整catalina.bat中的内容调整tomcat的初始JVM大小,以获得更好的性能。范例如下(catalina.bat):%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Xms128m -Xmx256m -Djava.endorsed.dirs="%JAVA_ENDO

技术无疆 3599

tomcat下查看并发流量

http://wangxuliangboy.javaeye.com/blog/235081 如何在WINDOW下配置TOMCAT APR:   APR是什么呢,(Tomcat can use the Apache Portable Runtime to provide

yinshuiy的专栏 2262

linux搭建tomcat

1:配置多个tomcat,(也可单个) tomcat官网 1.下载tomcat wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.47/bin/apache-tomcat-8.5.47.tar.gz 2.解压 tar -xvf 名称 3.重命名,并复制多个出来(如果只需要配置一个,就不需要复制了) mv 文件名称 新文件名称 4.配置环境变量 vi /etc/profile 添加如下 (如果只需要配置一

weixin_43564690的博客 454

tomcat 集群

集成 集成……老听人说具体它是个啥东东咧,下面这个关于tomcat集成就解释的蛮清楚的 借鉴一下下 目录 TOMCAT集群 1 1 集群 1 1.1 什么是集群 1 1.2 集群的特性 1 1.3 集群的分类 1 1.4 TOMCAT集群配置的优缺点 2 1.5 APACHE+TOMCAT 2 1.6 环境说明 2 2 软件安装 3 2.1 安装说明

牵手*-*白首 966

Windows 下安装 Tomcat 及搭建 Tomcat 服务

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的Web 应用服务器。........

Talk is cheap. Show me the code 955

java 内嵌tomcat_Embed Tomcat Java(内嵌tomcat启动简述)

简单记录一下内部tomcat启动maven pom.xmlorg.apache.tomcat.embedtomcat-embed-core8.5.28org.apache.tomcattomcat-jasper8.5.28org.springframeworkspring-web5.0.4.RELEASEcompileorg.springframeworkspring-webmvc5.0.4.R...

weixin_30141959的博客 1192

Docker 安装 Tomcat

=== 方法一、通过 Dockerfile构建 创建Dockerfile 首先,创建目录tomcat,用于存放后面的相关东西。 runoob@runoob:~$ mkdir -p ~/tomcat/webapps ~/tomcat/logs ~/tomcat/conf webapps目录将映射为tomcat容器配置的应用程序目录 logs目录将映射为tomcat容器的日志目录 conf目录里的配置文件将映射为tomcat容器的配置文件 进入创建的tomcat目录,创建Dockerfile FROM java

m0_67393295的博客 359
上一篇: JSAjax
下一篇: servlet jsp
java_yangXL
博客等级 码龄5年 1粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值