2020-2-28 java 学习 开始学习javaee了 瞎跳着看

2020-2-28 java 学习 开始学习javaee了 瞎跳着看

今日内容

  1. web相关概念

  2. web服务器软件:Tomcat

  3. Servlet入门学习

web概念

  1. 软件架构

    1. C/S:客户端/服务器端
    2. B/S:浏览器端/服务器端
  2. 资源分类

    1. 静态资源:html css js
    2. 动态资源:servlet/jsp,php,asp 要先转换成静态资源 然后返回给浏览器 响应
  3. 网络通信三要素

    1. IP:电子设备(计算机)在网络中的唯一标识

    2. 端口:应用程序在计算机中的唯一标识。0-65536

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

      1. tcp:安全协议,三次握手,速度稍慢

      2. udp:不安全协议。速度快

web服务器软件

  • 服务器:就是安装服务器软件的计算机

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

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

    • 在web服务器软件中,可以部署web项目让用户通过浏览器来访问 这些项目
    • 也叫web容器
  • 常见的java相关的Web服务器软件:

    • webLogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的
    • webSphere
    • JBoSS
    • Tomcat:Apacha基金组织,中小型javaee服务器,仅仅支持少量的javaee规范serlet/jsp 免费!!
  • JavaEE:java语言在企业级开发中使用的技术规范的总和,一共规定了13项大的规范

  • Tomcat:web服务器软件

    1. 下载:https://tomcat.apache.org/download-80.cgi

    2. 安装:解压压缩包即可

      • 安装目录里不要有中文
    3. 卸载:删除就行

    4. 启动:

      • 去目录下找bin目录下找startup.exe

      • http://localhost:8080/

      • 可能遇到的问题

        • 黑窗口一闪而过
        1. 原因没有正确配置JAVA_PATH的环境变量

        2. 解决方案:正确配置

        • 启动报错:

          1. 找到占用的端口号,并且找到对应的进程杀死改进程

          2. 修改自身的端口号config目录下server.xml http协议默认的端口号是80

    5. 关闭:

      1. 正常 关闭:保存该保存的东西ctrl+c
      2. 强制关闭:直接点x
    6. 配置:

      • 部署项目的方式

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

        2. 简化部署:将项目打包成war包 放到webapps下 会自动解压

        3. 去config/server.xml里面改虚拟路径

          在标签中配置

          docBase:项目存放的路径

        4. 在conf\catelina\localhost创建任意的xml文件

          写入内容:

    7. 静态项目与动态项目的目录结构
      在这里插入图片描述

      • java动态项目的目录结构

      ​ --项目的根目录

      ​ --WEB-INF目录

      ​ --web.xml:web项目的核心配置文件

      ​ --classed目录:放置字节码文件的目录

      ​ --lib目录:放置依赖的jar包

  • 将Tomcat集成到IDEA中 并创建JavaEE的项目,部署项目

servlet: server applet

  • 概念:Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则

  • 将来我们自定义一个类,实现Servlet接口复写方法

  • 快速入门:

    1. 创建一个JavaEE项目

    2. 定义一个类实现servlet接口

      • public class ServletDemo01 implements Servlet
        
    3. 实现接口中的方法

    4. 配置一下Servlet

      • 在WEB-INF/web.xml中配置

        <!--配置Servlet -->
        <servlet>
            <servlet-name>demo1</servlet-name>
            <servlet-class>cn.lsl.web.serlet.ServletDemo01</servlet-class>
        
        </servlet>
        <servlet-mapping>
            <servlet-name>demo1</servlet-name>
            <url-pattern>/demo1</url-pattern>
        </servlet-mapping>
        
      • 访问http://localhost:8080/demo1

    在这里插入图片描述

  • servlet执行原理:

    public class ServletDemo01 implements Servlet {
    
      //提供服务的方法
        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("hello,servlet");
        }
    }
    
  1. 当服务器接收到客户端浏览器的请求之后,会解析请求URL路径,获取访问的Servlet的资源路径

  2. 查找web.xml文件,是否有对应的标签体的内容

  3. 如果有则在找到对应的全类名

  4. tomcat会将字节码文件加载进内存,并且创建其对象

  5. 调用其方法

目录结构

  • servlet的生命周期

    1. 被创建:init方法 执行一次

      在标签下配置

             <!--指定Servlet的创建时机
      1.第一次被访问时,创建
          *<load-on-startup>的值为负数
      2.服务器启动时,创建
          *<load-on-startup>的值为0或正整数
       -->
      
      • servlet的init方法只执行一次,说明一个servlet在内存中只存在一个对象,servlet时单例的
      • 多个用户访问时,可能存在线程问题
      • 解决:尽量不要在servlet中定义成员变量。即使定义了成员变量也不要对其修改。
    2. 提供服务:service方法 执行多次

      每次访问Servlet时,Servlet方法都会被调用一次

    3. 被销毁:destroy方法 执行一次

      destroy方法在Servlet被销毁之前执行,用于释放资源

  • servlet3.0:

  1. 好处:

    1. 支持注解配置,可以不需要web.xml了
  2. 步骤:

    1. 创建JavaEE项目选择Servlet版本3.0以上,可以不创建web.xml

    2. 定义一个类,实现Servlet接口

    3. 复写方法

    4. 在类上使用@webServlet注解,进行配置

      @WebServlet("/demo2")//资源路径
      public class SerletDemo01 implements Servlet {
          @Override
          public void init(ServletConfig servletConfig) throws ServletException {
      
          }
      

IDEA与Tomcat相关配置

  1. IDEA会为每一个tomcat部署的项目单独建立一份配置文件

    Using CATALINA_BASE:   "C:\Users\李世林\.IntelliJIdea2017.3\system\tomcat\_BASIC_code"
    
  2. 工作空间项目 和 tomcat部署的web项目

    • tomcat真正访问的是"tomcat部署的web项目","tomcat部署的web项目"对应着“工作空间项目”的web目录下的所有资源
    • WEB-INF目录下不能被浏览器直接访问
    • 断点调试,使用“小虫子debug启动”
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值