Servlet—TomCat、HTTP协议

Mac 不小心断开移动硬盘导致磁盘无法读取和加载(顺利解决!) Mac移动硬盘不正确断开连接导致无法读取加载的解决方法,亲测有效 阅读详情

1.  TomCat

1.1 安装TomCat服务器

这里就不详细叙述怎么安装和配置TomCat服务器了,不会的可以去百度,我这里是在一台虚拟机(ip为192.168.80.101)中装的TomCat,这里我先启动TomCat,

./startup.sh 
Using CATALINA_BASE:   /usr/tomcat/apache-tomcat-6.0.45
Using CATALINA_HOME:   /usr/tomcat/apache-tomcat-6.0.45
Using CATALINA_TMPDIR: /usr/tomcat/apache-tomcat-6.0.45/temp
Using JRE_HOME:        /usr/java/jdk1.7.0_67
Using CLASSPATH:       /usr/tomcat/apache-tomcat-6.0.45/bin/bootstrap.jar

然后再浏览器中输入192.168.80.101:8080,得到一个TomCat界面,说明启动成功。


1.2 TomCat目录结构

[hadoop@H01 apache-tomcat-6.0.45]$ ll
total 116
drwxr-xr-x 2 hadoop hadoop  4096 Feb 18 19:29 bin
drwxr-xr-x 3 hadoop hadoop  4096 Feb 18 19:44 conf
drwxr-xr-x 2 hadoop hadoop  4096 Feb 18 19:29 lib
-rw-r--r-- 1 hadoop hadoop 56685 Feb  2 02:09 LICENSE
drwxr-xr-x 2 hadoop hadoop  4096 Feb 18 19:30 logs
-rw-r--r-- 1 hadoop hadoop   807 Feb  2 02:09 NOTICE
-rw-r--r-- 1 hadoop hadoop  9124 Feb  2 02:08 RELEASE-NOTES
-rw-r--r-- 1 hadoop hadoop 16220 Feb  2 02:09 RUNNING.txt
drwxr-xr-x 2 hadoop hadoop  4096 Feb 18 19:29 temp
drwxr-xr-x 7 hadoop hadoop  4096 Feb  2 02:08 webapps
drwxr-xr-x 3 hadoop hadoop  4096 Feb 18 19:30 work

TomCat目录中的每个目录有各自的作用,bin目录存放启动和关闭 Tomcat 的等脚本文件,conf目录存放 Tomcat 服务器的各种配置文件,lib目录存放 Tomcat 服务器的支撑jar 包,logs目录存放 Tomcat 的日志文件,temp目录存放 Tomcat 运行时产生的临时文件,webapps目录是web应用所在目录,即供外界访问的web资源的存放目录,work是Tomcat 的工作目录。

2. Web应用程序

Web应用程序指供浏览器访问的程序,通常也简称为web应用。一个web应用由多个静态web资源和动态web资源组成,如:html、css、js文件、Jsp文件、java程序、支持jar包、配置文件等等。假设现在有一个web应用olds,里面包含两个html文件(a.html和b.html)。

[hadoop@H01 olds]$ pwd
/home/hadoop/web/olds
[hadoop@H01 olds]$ ls
a.html  b.html


2.1 虚拟目录的映射

Web应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚似目录的映射。虚拟目录的映射配置有很多方式。比如想要对olds这个web应用进行虚拟目录映射。

一种方式是在conf/server.xml文件中的host元素中配置,例如:



使用这种方式需要重启TomCat服务器,然后在浏览器中输入:http://192.168.80.101:8080/oner/a.html就可以访问到服务器中的olds这个web应用,但是访问方式是通过它的虚拟虚拟目录oner进行访问的。




在Tomcat6中,不再建议在server.xml文件中配置context元素,细节查看tomcat服务器关于context元素的说明。
另一种方式是在conf/Catalina/localhost的目录下建立xml文件(名字可以任意起),例如建立一个page1.xml文件,里面内容为:

<Context docBase="/home/hadoop/web/olds"/>

这样,olds这个web应用的虚拟目录就为page1,可以通过浏览器来验证下:


如果xml文件命名方式为foo#bar.xml,则映射成的虚拟目录为多级目录foo/bar,例如,将page1.xml文件拷贝一份,命名为page2#page3.xml。

[hadoop@H01 localhost]$ more page2#page3.xml 
<Context docBase="/home/hadoop/web/olds"/>

这时在浏览器中输入http://192.168.80.101:8080/page2/page3/a.html地址仍然可以访问到a.html这个文件。


这种方式的好处是无需重启TomCat服务器。

如果将该xml文件命名为ROOT.xml,则会将ROOT.xml中的web应用配置为缺省Web应用。

[hadoop@H01 localhost]$ more ROOT.xml 
<Context docBase="/home/hadoop/web/olds"/>



除此之外,还可以让TomCat自动映射web应用,这种方式该怎么实现呢?tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚似目录。换句话说,tomcat服务器webapps目录中的web应用,外界可以直接访问。

2.2 web应用组织结构

开发web应用时,不同类型的文件有严格的存放规则,否则不仅可能会使web应用无法访问,还会导致web服务器启动报错。



2.3 web.xml文件的作用

web应用中,web.xml文件是其中最重要的一个文件,它用于对web应用中的web资源进行配置。通过web.xml文件,可以将web应用中的:某个web资源配置为网站首页、将servlet程序映射到某个url地址上....等等。但凡涉及到对web资源进行配置,都需要通过web.xml文件。

举例,通过web.xml文件配置网站首页。

[hadoop@H01 mail]$ more hello.html 
Hello Java!
Hello Web!

[hadoop@H01 WEB-INF]$ ls
classes  lib  web.xml
[hadoop@H01 WEB-INF]$ more web.xml 
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/
ns/javaee/web-app_2_5.xsd"
    version="2.5">

    <welcome-file-list>
        <welcome-file>hello.html</welcome-file>
    </welcome-file-list>

</web-app>

打开浏览器进行验证



注意:Web.xml文件必须放在web应用\WEB-INF目录下

2.4 Web资源访问图




TomCat的体系结构:


2.5 配置TomCat服务器的加密会话

1. 使用如下命令生成服务器证书:

[hadoop@H01 ~]$ keytool -genkey -alias tomcat -keyalg RSA
Enter keystore password:  
Re-enter new password: 
What is your first and last name?
  [Unknown]:  192.168.80.101
What is the name of your organizational unit?
  [Unknown]:  
What is the name of your organization?
  [Unknown]:  
What is the name of your City or Locality?
  [Unknown]:  
What is the name of your State or Province?
  [Unknown]:  
What is the two-letter country code for this unit?
  [Unknown]:  
Is CN=192.168.80.101, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct?
  [no]:  y

Enter key password for <tomcat>
	(RETURN if same as keystore password):  
[hadoop@H01 ~]$ 

将生成的.keystore文件复制到TomCat服务器的conf目录下:


[hadoop@H01 ~]$ cp .keystore /usr/tomcat/apache-tomcat-6.0.45/conf/

在server.xml文件中配置加密连接器,并指定加密连接器从哪个密钥库中获取数字证书



3. 使用浏览器访问:https://192.168.80.101:8443。注意是htts



点击继续浏览此网站




3. HTTP协议

3.1 HTTP协议简介

HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程。

HTTP协议是学习JavaWEB开发的基石,不深入了解HTTP协议,就不能说掌握了WEB开发,更无法管理和维护一些复杂的WEB站点。

HTTP协议的版本:HTTP/1.0、HTTP/1.1。在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源;HTTP1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源。

思考:一个web页面中,使用img标签引用了三幅图片,当客户端访问服务器中的这个web页面时,客户端总共会访问几次服务器,即向服务器发送了几次HTTP请求。

总共是4次,因为打开web页面时是一次请求,浏览器解析img标签后再次向服务器发送3次请求。

3.2 HTTP请求

客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容:一个请求行、若干消息头、以及实体内容,如下所示 :


3.2.1 HTTP请求细节——请求行

在上面示例中请求行中的GET称之为请求方式,请求方式有:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT。常用的有:GET、 POST。

用户如没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点超链接访问等都是get,用户如想把请求方式改为post,可通过更改表单的提交方式实现。

不管POST或GET,都用于向服务器请求某个WEB资源,这两种方式的区别主要表现在数据传递上:

如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:

GET /mail/1.html?name=abc&password=xyz HTTP/1.1

GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K。

如请求方式为POST方式,则可以在请求的实体内容中向服务器发送数据,Post方式的特点:传送的数据量无限制。

3.2.2 HTTP请求细节——请求头

请求头实例:

Accept: text/html,image/*    
Accept-Charset: ISO-8859-1
Accept-Encoding: gzip,compress
Accept-Language: en-us,zh-cn 
Host: www.it315.org:80
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT
Referer: http://www.it315.org/index.jsp
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Cookie
Connection: close/Keep-Alive   
Date: Tue, 11 Jul 2000 18:23:51 GMT

常用的请求头:

accept:浏览器通过这个头告诉服务器,它所支持的数据类型
Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集
Accept-Encoding:浏览器通过这个头告诉服务器,支持的压缩格式
Accept-Language:浏览器通过这个头告诉服务器,它的语言环境
Host:浏览器通过这个头告诉服务器,想访问哪台主机
If-Modified-Since: 浏览器通过这个头告诉服务器,缓存数据的时间
If-None-Match:缓存相关的头
Referer:浏览器通过这个头告诉服务器,客户机是哪个页面来的(防盗链)
User-Agent:浏览器通过这个头告诉服务器,客户机的软件环境(比如浏览器类型及版本、操作系统类型及版本)
Cookie:浏览器通过这个头可以向服务器带数据
Connection:浏览器通过这个头告诉服务器,请求完后是断开链接还是何持链接


3.3 HTTP响应

一个HTTP响应代表服务器向客户端回送的数据,它包括:HTTP请求中的常用头:一个状态行、若干消息头、以及实体内容 ,如下所示:


3.3.1 HTTP响应的细节——状态行

格式: HTTP版本号 状态码 原因叙述<CRLF>。

举例:HTTP/1.1 200 OK

状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数。响应状态码分为5类,如下所示:


3.3.2 HTTP响应细节——响应头

响应头实例:

Location: http://www.it315.org/index.jsp 
Server:apache tomcat
Content-Encoding: gzip 
Content-Length: 80 
Content-Language: zh-cn 
Content-Type: text/html; charset=GB2312 
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT
Refresh: 1;url=http://www.it315.org
Content-Disposition: attachment; filename=aaa.zip
Transfer-Encoding: chunked  
Set-Cookie:SS=Q0=5Lb_nQ; path=/search
Expires: -1
Cache-Control: no-cache  
Pragma: no-cache   
Connection: close/Keep-Alive   
Date: Tue, 11 Jul 2000 18:23:51 GMT

常用的响应头:

Location: 服务器通过这个头(这个头配合状态码302使用),来告诉浏览器跳到哪里
Server:服务器通过这个头,告诉浏览器服务器的类型
Content-Encoding:服务器通过这个头,告诉浏览器,数据的压缩格式
Content-Length: 服务器通过这个头,告诉浏览器回送数据的长度
Content-Language: 服务器通过这个头,告诉浏览器语言环境
Content-Type:服务器通过这个头,告诉浏览器回送数据的类型
Last-Modified:服务器通过这个头,告诉浏览器当前资源缓存时间
Refresh:服务器通过这个头,告诉浏览器多长时间刷新一次,也可以指定刷新后指向新的页面
Content-Disposition: 服务器通过这个头,告诉浏览器以下载方式打开数据
Transfer-Encoding:服务器通过这个头,告诉浏览器数据是以分块方式回送的
ETag:缓存相关的头
Expires: 服务器通过这个头,告诉浏览器把回送的资源缓存多长时间,-1或0表示不缓存
Cache-Control: no-cache  
Pragma: no-cache   
服务器通过以上两个头,也是控制浏览器不要缓存数据


《YOLOv8:从入门到实战》报错解决 & 专栏答疑 《YOLOv8:从入门到实战》专栏上线后,部分同学在学习过程中提出了一些问题,笔者相信这些问题其他同学也有可能遇到。为了让大家可以更好地学习本专栏内容,笔者特意推出了该篇专栏答疑,针对同学们在学习过程中所提出的问题进行汇总记录,并不断实时更新,希望能够帮助到大家!🌈 阅读详情

相关推荐

大语言模型在建筑规范自动化合规审查中的微调策略与规模效应实践

大语言模型(LLM)通过在海量文本数据上预训练,具备了强大的语言理解和生成能力。其核心原理是基于Transformer架构,通过自注意力机制捕捉长距离依赖关系。在工程实践中,为了将这种通用能力适配到建筑、法律、金融等高度专业化的垂直领域,通常需要采用领域微调技术。微调通过使用特定领域的高质量指令数据对模型参数进行更新,使其掌握专业术语、逻辑规则和任务范式,从而解决通用模型在专业场景下知识匮乏和“幻觉”问题。结合检索增强生成(RAG)技术,将动态外部知识库作为模型的“参考手册”,能进一步提升事实准确性并降低幻

weixin_30667831的博客 362

Squid代理服务3.1版本的配置和使用简介

Squid是一个单进程的异步代理缓存服务器,支持HTTP,FTP,GOPHER,ICP等协议。通过配置,可以实现反向代理、透明代理的功能,并且支持缓存,是实现高性能网站的必备基础设施之一。通常部署在应用服务器的前端。 Squid的安装就比较简单,可以yum安装或源码安装,安装完之后,配置在/etc/squid/目录下。 1 命令行参数 -a port 同配置中的http_po

zzulp的专栏 1万+

避坑指南:ZYNQ MPSOC QSPI固化时MT25QU256闪存的特殊配置

本文针对Xilinx ZYNQ UltraScale+ MPSoC平台,详细解析了使用Vitis工具将BOOT.bin固化至Micron MT25QU256ABA QSPI NOR Flash时的特殊配置与避坑指南。重点阐述了Init文件的真实作用、电压与频率的精确匹配策略,以及针对该闪存型号的初始化序列,帮助工程师解决烧录失败、启动异常等常见问题,确保系统可靠启动。

weixin_29175469的博客 270

一站到底 ---前端基础之网络

网络相关的知识是每个前端工程师都应该具备的。很多从事前端的朋友们都没系统学习过计算机网络和http相关内容。在没有建立一个整体的知识体系下,会有一种一站到底答题的感觉,每个知识点都大致知道问题的答案,但总不确定,更不知道具体是怎么回事。本文系统的梳理了与前端密切相关的网络知识。(这是我自己学习的总结,整理出的笔记,分享给大家) 本文中的代码演示整理在《node.js的小美好》 : 还是老规则,在...

weixin_34198881的博客 533

ROS环境下UR机械臂与Realsense相机手眼标定实战指南

本文提供了在ROS环境下,对UR机械臂与Realsense相机进行手眼标定的完整实战指南。详细介绍了从环境搭建、软件包安装、硬件配置到分步数据采集与计算的完整流程,并分享了常见的避坑技巧与精度优化方法,旨在帮助开发者高效、准确地完成标定,为后续的机器人视觉应用奠定坚实基础。

sunny的博客 646

飞腾平台(FT2000/4 D2000/8)配置GPIO引脚

飞腾平台配置CPU的引脚为GPIO工作模式的方式有永久型和暂时型: - 永久型是通过UEFI中的MmioWrite32函数来实现的,该方法可以在UEFI阶段就对复用引脚的工作模式配置为GPIO,并且在进入操作系统后仍然不会发生便会; - 临时型是通过rw工具,在系统下手动修改复用引脚的工作模式,该方法在系统重启后会失效,所以是暂时型的。

qq_30135687的博客 5612

uni-app网络请求封装跨域_前端入门必备网络基础知识

网络相关的知识是每个前端工程师都应该具备的。很多从事前端的朋友们都没系统学习过计算机网络和http相关内容。在没有建立一个整体的知识体系下,会有一种一站到底答题的感觉,每个知识点都大致知道问题的答案,但总不确定,更不知道具体是怎么回事。本文系统的梳理了与前端密切相关的网络知识。在学之前,我们先考考自己,我整理一下知识点,看看我们需要掌握那些问题。然后我们通过把问题知识点串起来去总结。 推荐: 前端...

weixin_39956443的博客 1324

大数据分析案例-基于决策树算法构建世界杯比赛预测模型

本项目旨在分析往届世界杯比赛数据,找出规律,最后使用决策树算法构建世界杯比赛预测模型,给出两个球队即可预测胜率,可以给爱看球的小伙伴提供一个参考。本次实验我们使用了2018年及其之前的世界杯比赛数据,通过建立决策树模型,模型准确率为82%,接着我们使用该模型预测了2022年世界杯的5场半决赛及决赛,模型准确率也是接近80%的,说明模型效果还是很不错的。心得与体会:通过这次Python项目实战,我学到了许多新的知识,这是一个让我把书本上的理论知识运用于实践中的好机会。

m0_64336780的博客 1万+

Windows Server 2012 R2新功能介绍之工作文件夹使用

工作文件夹是Windows Server 2012 R2中的一个新特性,允许用户在多个设备上同步“工作文件夹”目录中的数据。用户可以同步笔记本电脑和平板电脑上的文件夹并编辑里面的文件,而此时文件夹处理离线状态,当用户下次连接上网络后,这些改变会进行同步。目前“工作文件夹”只支持Windows 8.1客户端。将来也会支持Windows 7和iPad、Android设备。和Dropbox一样,工作文...

weixin_33860737的博客 466

71.qt quick-可伸展菜单-抽屉栏示例 通用QML界面(一键换肤)

特点: 支持动态添加item、删除item、自适应界面 附带添加删除、展开等动画 同时支持qwidget、qml加载 支持number提示(比如消息数量等) 侧边抽屉栏支持动画伸展 支持换肤、拖拽、最大化等

抵抗时间扭曲,坚持做一件有意义的事 5285

15、虚拟环境中的数据保护与恢复方案解析

本文深入解析了虚拟环境中两种重要的数据保护与恢复解决方案:RecoverPoint for Virtual Machines(RP4VM)在VxRail上的设计,以及Veeam Backup & Replication(VBR)与VxRail的集成方案。文章详细介绍了RP4VM的网络布局、故障转移场景及其相关问题,以及VBR的架构设计、备份与复制流程、许可证选项及其多平台支持特性。此外,还探讨了RP4VM与VBR结合使用的综合解决方案,以及未来数据保护领域的发展趋势,如智能化管理、云原生集成和零信任架构,为

t4y5u6i7o的博客 95

.net通过url访问服务器获取服务器返回数据

一、url为http协议 1、普通调用: public string GetInfo(string url) { //访问http方法 string strBuff = ""; Uri httpURL = new Uri(url); ///HttpWebRequest类继承于WebRequest,并没有自己的构造...

狮子座小小羊 6872

AMBA-CHI协议详解(五)

 每个事务由许多不同的packets组成,这些数据包通过互连(interconnect)传输。packets内的一组ID域段用于提供有关包的附加信息。

Crazzy_M的博客 1960

tomcat和http协议和servlet

文章目录javaweb什么是javaweb?请求和响应常用的web服务器Tomcat目录介绍启动Tomcat服务器Tomcat的停止Tomcat端口号的修改idea下的操作Servlet什么是Servlet实现Servlet程序url地址到Servlet程序的访问Servlet的生命周期通过继承HttpServlet实现Servlet程序(日常) javaweb 什么是javaweb? JavaWeb 是指,所有通过 Java 语言编写可以通过浏览器访问的程序的总称,叫 JavaWeb。 JavaWeb 是

weixin_46744534的博客 841

深度学习工具包 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")

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

javaEE初阶——HTTP协议+Tomcat+servlet

JavaEE初阶——HTTP协议 + Tomcat + servlet

baiyang2001的博客 1165

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JavaWeb03-HTTP协议,Tomcat,Servlet

HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则Tomcat是Apache 软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范。Tomcat 也被称为 Web容器、Servlet容器。Servlet 需要依赖于 Tomcat才能运行javaEE:Java Enterprise Edition,Java企业版。指java企业级开发的技术规范总和。

qq_33627452的博客 1269

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

(7)web后端基础(Tomcat+Servlet+Http协议)

BS架构。

weixin_65698803的博客 929

Web-环境搭建:Tomcat/HTTP协议/Servlet

Web服务器通常由硬件和软件共同构成。硬件:电脑,提供服务供其它客户电脑访问软件:电脑上安装的服务器软件,安装后能提供服务给网络中的其他计算机,将本地文件映射成一个虚拟的url地址供网络中的其他人访问。Web服务器主要用来接收客户端发送的请求和响应客户端请求。常见的JavaWeb服务器::当前应用最广的JavaWeb服务器JBoss (Redhat红帽)︰支持JavaEE,应用比较广EJB容器->SSH轻星级的框架代替。

qq_48865614的博客 1772

tomcat、servlet、Http协议

(状态码都是3位数字)1xx~5xx 1xx:服务器接收客户端消息,但没有接收完成,等待一段时间后,发送1xx多状态码 2xx:成功,代表:200 3xx:重定向。(状态码都是3位数字)1xx~5xx 1xx:服务器接收客户端消息,但没有接收完成,等待一段时间后,发送1xx多状态码 2xx:成功,代表:200 3xx:重定向。值:in-line(默认值,在当前页面内打开) attachment:以附件形式打开响应体,文件下载。

m0_71467744的博客 482

HTTP协议、Tomcat服务器、Servlet、Request对象

servlet一、HTTP协议1.1 简介1.2 浏览器中的书写格式1.3 HTTP协议的特点1.4 HTTP 请求1.4.1 Get 请求1.4.2 Post 请求1.5 HTTP 响应二、Tomcat服务器2.1 什么是Tomcat2.2 安装Tomcat三、Servlet的实现3.1 创建Web项⽬3.2 Servlet的实现3.3 Servlet的工作流程3.4 Servlet的生命周期四、HttpServletRequest对象4.1 接收请求4.1.1 常用方法4.1.2 获取请求参数(重

qq_43647383的博客 364

JavaWeb(HTTP协议、Tomcat、Servlet)

JavaWeb(HTTP协议、Tomcat、Servlet)

MMH1028的博客 150

1个月征服Java:零基础直达企业级开发——Tomcat、Servlet、HTTP协议

本文介绍了JavaWeb开发中的三大核心内容:1) Tomcat服务器的安装配置与常见问题处理;2) Servlet的快速入门与执行流程解析;3) HTTP协议的请求响应格式详解。重点讲解了Tomcat作为轻量级Web容器的使用方法,Servlet接口的实现与部署过程,以及HTTP协议的无状态特性、请求响应数据格式和状态码分类。通过具体代码示例,演示了如何获取请求参数、设置响应内容等关键操作,为构建Web应用提供了完整的技术路线图。

阳光开朗大男孩 = ̄ω ̄=的博客 1084

关于Tomcat、HTTP协议、Servlet实现的总结

Tomcat: Tomcat 是一个符合 JavaEE WEB 标准的最小的 WEB 容器,所有的 JSP 程序一定要有 WEB 容器的支持才能运行,而且在给定的 WEB 容器里面都会支持事务处理操作。Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器, 在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。 对于一个初学者来说...

PussyCatsss的博客 434

Servlet(1)—Servlet容器tomcat和HTTP协议

Servlet容器为JavaWeb应用提供运行时环境,它负责管理Servlet和JSP的生命周期,以及管理他们的共享数据。 Servlet容器也称JavaWeb应用容器,或者Servlet/JSP容器。 目前最流行的Servlet容器包括: Tomcat Resin .J2EE服务器(如weblogic)中也提供了内置的Servlet容器 Tomcat 是免费的开放源码的Serrvlet容器,有

T_P_F的博客 629

web核心,Tomcat,web项目发布,http协议,servlet基本

web核心概念 1.资源的分类 静态资源 html css js 拿过来 动态资源 servlet jsp php 在线邮箱 本质就是一个数据库,根据用户名和密码去数据库中查询对应的记录,动态的生成html页面,发给浏览器去展示 浏览器只能解析静态的页面 2.软件的架构 b/s:网页版qq,无需更新,数据都是从服务器过来的,服务器的压力比较大 c/s:桌面版qq,页面酷炫,和本地交互很方便,占用本地资源比较大 3.通信三要素 ip:设备在网络中的唯一标识 端口:程序在设备中的唯一标识

zhenyu93的博客 274

Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)

目前市场上有两种流行的软件架构:优点:缺点:(客户端程序上)优点:(没有客户端,直接使用浏览器即可)缺点:(效果一般、体验一般、服务器压力极大)请求和响应是成对出现的。 而且必须先有请求,再有响应 (类似与一问一答)完整格式如下:例如:https://www.baidu.com/常见的WEB服务器:官网地址 本站地址&本文所需资料下载在JavaEE规范中,WEB项目存在一定的目录结构,具体结构如下: 在开发中,都是使用eclipse或idea和tomcat整合使用,方便开发测试。eclipse & id

Daniel的博客 599
上一篇: DAO设计模式
下一篇: Servlet—Servlet简介、Servlet调用过程
Wang_AI
博客等级 码龄12年 988粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值