JavaWeb学习(未完结)

news2024/11/15 12:26:42

文章目录

  • 一、基本概念
    • 1.1 动态Web网站简介
    • 1.2 web应用程序
    • 1.3 静态web
    • 1.4 动态web
  • 二、web服务器
    • 2.1 技术
    • 2.2 应用服务器
    • 2.3 安装 jdk8
  • 三、Tomcat
    • 3.1 安装 Tomcat9
    • 3.2 文件说明
    • 3.3 启动并使用Tomcat
    • 3.4 关闭Tomcat
    • 3.5 可能遇到的问题
    • 3.6 配置
      • 3.6.1 修改测试访问的网页地址
      • 3.6.2 修改测试访问的网页内容
      • 3.6.3 修改存放网页的位置
    • 3.7 网站是如何进行访问的?
    • 3.8 网站应有的结构
  • 四、Http 详解
    • 4.1 版本
    • 4.2 Http请求
      • 4.2.1 请求行
      • 4.2.2 消息头
    • 4.3 Http响应
      • 4.3.1 响应体
      • 4.3.2 响应状态码
  • 五、Maven
    • 5.1 安装Maven
    • 5.2 文件说明
    • 5.3 修改镜像
    • 5.4 配置环境变量
    • 5.5 创建本地仓库
    • 5.6 在IDEA中使用Maven
    • 5.7 模板创建和直接创建的对比
    • 5.8 标记文件夹
    • 5.9 在IDEA中配置Tomcat
    • 5.10 Maven侧边栏的说明
    • 5.11 pom文件分析
    • 5.12 约定大于配置思想的缺点
    • 5.13 更改webapp版本
  • 六、Servlet
    • 6.1 Servlet简介
    • 6.2 使用Servlet
      • 6.2.1 编写Java文件
      • 6.2.2 编写Servlet映射
      • 6.2.3 配置Tomcat
      • 6.2.4 运行
    • 6.3 Servlet运行原理
    • 6.4 Mapping
        • **说在最后📝*:*

一、基本概念

在 Java 中,动态web资源开发的技术统称为JavaWeb

1.1 动态Web网站简介

提供给所有人看到的数据始终会发生变化,每个人在不同时间,不同地点看到的信息个不相同

https-------443端口

http---------80端口

常用技术栈:

  • Servelt
  • JSP
  • ASP
  • PHP

1.2 web应用程序

可以提供浏览器访问的程序,web应用程序编写完毕后,若想提供给外界访问,需要用Tomcat服务器统一管理。

  • html、css、js
  • jsp、servlet
  • java程序
  • jar包
  • 配置文件(properties)

1.3 静态web

类似html这样的网页后缀,如果服务器上一直存在这些东西,我们就可以通过网络进行读取。

静态web存在的缺点:

  • web页面无法动态更新,只能编写JavaScript实现伪动态

  • 无法和数据库交互,数据无法持久化(注册、商品信息、用户信息),和用户无法交互;

1.4 动态web

页面会动态展示

动态web存在的缺点:

  • 如果加入服务器的动态web资源出现了错误,我们需要重新编写后台程序再发布,即停机维护

二、web服务器

C/S:客户端和服务器

B/S:浏览器和服务器

2.1 技术

  • ASP:在HTML中嵌入了VB的脚本,ASP+COM,缺点:业务代码多,页面混乱,维护成本高;
  • PHP:开发速度快,功能强大,支持跨平台,代码简单,缺点:无法承载大访问量的情况(局限性);
  • JSP/Servlet:sun公司主推的B/S架构,基于Java,可承载三高(高性能、高可用、高并发),语法与ASP相似。

2.2 应用服务器

作用:处理用户请求和提供用户响应信息。

IIS

IIS是指World Wide Web server服务,IIS是一种Web(网页)服务组件,专业的说,IIS可以赋予一部主机电脑一组以上的IP地址,而且还可以有一个以上的域名作为Web网站。

Tomcat

Tomcat 是由 Apache 软件基金会下属的 Jakarta 项目开发的一个 Servlet 容器,按照 Sun Microsystems 提供的技术规范开发出来,Tomcat 8 实现了对 Servlet 3.1 和 JavaServer Page 2.3(JSP)的支持,并提供了作为 Web 服务器的一些特有功能,如 Tomcat 管理和控制平台、安全域管理和 Tomcat 附加组件等。最新版本为9.0

2.3 安装 jdk8

程序员好冰

三、Tomcat

官网链接

3.1 安装 Tomcat9

程序员好冰

3.2 文件说明

image-20230209155240737
  • bin :启动、关闭的脚本文件
  • conf : 配置
  • lib : 依赖的jar包
  • logs : 日志
  • temp : 存放临时文件
  • webapps : 存放网站

3.3 启动并使用Tomcat

Tomcat路径 ------ > bin目录 -------> startup.bat 双击

在浏览器输入:localhost:8080

访问测试:http://localhost:8080

localhost(默认主机) 127.0.0.1

默认端口号:8080

  • mysql默认端口号:3306
  • http默认端口号:80
  • https默认端口号:443

3.4 关闭Tomcat

Tomcat路径 ------ > bin目录 -------> shutdown.bat 双击

3.5 可能遇到的问题

  1. Java环境变量没配置;
  2. 闪退问题,需要配置兼容性;
  3. 乱码问题,在startup.bat文件中配置。

3.6 配置

3.6.1 修改测试访问的网页地址

在conf目录下打开server.xml (服务器核心配置文件)

image-20230209160826908

修改默认端口号

image-20230209201502541

修改默认主机,如:将 localhost 改为 www. haobing. com

  • 第一步:将Host的name属性修改为 www. haobing. com

image-20230209201604371

  • 第二步:打开文件:C:\Windows\System32\drivers\etc\hosts

image-20230209202219933

  • 第三步:添加映射

    image-20230209202348957

3.6.2 修改测试访问的网页内容

在webapps目录下找到 ROOT 打开

image-20230209204234807

保留这个文件夹(WEB-INF),其它都可以修改

image-20230209204429359

3.6.3 修改存放网页的位置

Host下的APPBase属性就是网页的根目录

image-20230209203021614

webapps下的每个文件夹名,都是可以访问的

image-20230209204856693

3.7 网站是如何进行访问的?

  • 客户端请求网址;

  • 先查找客户端本机 host(C:\Windows\System32\drivers\etc\hosts ) 配置文件下有没有这个域名的映射;

    • 有,直接返回对应的IP地址,结束
    • 没有,继续下一步
  • 查找DNS服务器

    • 有,返回对应的IP地址,结束
    • 没有,访问出现错误 404

3.8 网站应有的结构

---webapps  //Tomcat服务器的web目录、
	-ROOT
	-haobing  //网站的目录名
	-WEB-INF  //存放网站程序
		-web.xml   //网站的配置文件
		-classes  //Java程序
		-lib   //web应用所依赖的jar包
	-index.jsp //默认的首页
	-static
		-css
		-js
		-img
	-...

四、Http 详解

一个简单的请求-响应协议

它指定了客户端可能发送给服务器什么样的信息以及得到什么样的响应

默认端口:80

Https:安全,默认端口:443

超文本传输协议,超文本:图片、音乐、视频、定位、地图…,运行在TCP之上

4.1 版本

  • http 1.0 :仅能够一次连接,客户端可以与web服务器连接后,只能获得一个web资源,之后断开连接;
  • http 1.1:能够进行多次连接,可以获得多个web资源。

4.2 Http请求

客户端------发请求-----服务器

请求 URL: https://www.baidu.com/
请求方法: GET/POST
状态代码: 200 OK
远程地址: 14.215.177.39:443
引用者策略: strict-origin-when-cross-origin
Accept:text/html
Accept-Encoding: gzip
Accept-Language: zh-CN   -------------->语言
Cache-Control: max-age=0
Connection: keep-alive

4.2.1 请求行

请求行中的请求方式:GET;

请求方式:GET、POST、HEAD、DELETE、PUT、TRACT

  • GET:一次请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但是高效;
  • POST:一次请求能够携带的参数没有限制,大小没有限制,不会会在浏览器的URL地址栏显示数据内容,安全,但是不高效。

4.2.2 消息头

Accept:   -------------->告诉浏览器它支持的数据类型
Accept-Encoding:    -------------->支持哪种编码格式:GBKUTF-8GB2312ISO8859-1
Accept-Language:    -------------->设置语言
Cache-Control:    -------------->缓存控制
Connection:    -------------->告诉浏览器,请求完成是断开还是保持连接
HOST:   -------------->主机

4.3 Http响应

服务器-----响应------客户端

Cache-Control:private    -------------->缓存控制
Connection: keep-alive   --------------->连接,保持连接,说明是http1.1
Content-Encoding: gzip   --------------->编码
Content-Type: text/html; charset=utf-8 ------>类型

4.3.1 响应体

Accept:   -------------->告诉浏览器它支持的数据类型
Accept-Encoding:    -------------->支持哪种编码格式:GBKUTF-8GB2312ISO8859-1
Accept-Language:    -------------->设置语言
Cache-Control:    -------------->缓存控制
Connection:    -------------->告诉浏览器,请求完成是断开还是保持连接
HOST:   -------------->主机
ReFresh:   -------------->告诉客户端多久刷新一次
Location:   -------------->让网页重新定位

4.3.2 响应状态码

  • 200:成功
  • 3**:请求重定向
  • 4**:找不到资源
  • 5**:服务器代码错误
  • 502:网关错误

五、Maven

官网链接

Maven的核心功能是合理叙述项目间的依赖关系,通俗点讲,就是通过pom.xml文件的配置获取jar包,而不用手动去添加jar包

在JavaWeb开发中,需要手动导入jar包,Maven可以自动帮我们导入和配置jar包。

项目架构管理工具,核心思想:约定大于配置

Maven会规定好你该如何去编写我们的Java代码,必须要按照这个规范来。

5.1 安装Maven

程序员好冰

5.2 文件说明

image-20230210112653209

  • bin:执行文件
  • boot:启动需要的选项
  • conf:配置文件

5.3 修改镜像

Maven目录下---->conf------>settings.xml

镜像:方便下载使用

image-20230210113127034

image-20230210113157537

阿里云镜像官网

image-20230210113551709

找到Maven

image-20230210113613119

直接复制

image-20230210113752569

粘贴在这,即可

image-20230210113925965

5.4 配置环境变量

M2_HOME---------------bin目录

MAVEN_HOME--------bin上一级目录

image-20230210115203446

添加path

image-20230210115356258

查看是否配置成功--------------mvn -version

image-20230210115524542

5.5 创建本地仓库

在Maven目录下创建一个文件夹

image-20230210120751587

修改localRepository下的目录

image-20230210120646176

5.6 在IDEA中使用Maven

打开全局设置

image-20230210121855567

设置Maven

image-20230210121945384

更改:

  1. Maven版本
  2. settings.xml位置
  3. 本地仓库位置

image-20230210122237233

Apply

image-20230210122313712

创建新项目

image-20230210122353742

image-20230210122636845

点击创建

image-20230210122800172

image-20230210122832893

查看本地仓库,发现多出来的文件,说明成功

image-20230210123039045

成功!

5.7 模板创建和直接创建的对比

左边使用模板创建------------------------右边直接创建

image-20230210175523750

5.8 标记文件夹

约定大于配置思想

按照图中打开

image-20230210212325892

image-20230210212500014

照上修改后,对应的文件图标将会改变颜色

image-20230210212638392

5.9 在IDEA中配置Tomcat

编辑配置

image-20230210213011719

找到并选择本地Tomcat

image-20230210213210963

相关配置

image-20230210214145800

配置Tomcat HOME

image-20230210215331377

image-20230210215523383

配置Tomcat的安装路径

image-20230210215616375

成功,点击OK-----Apply

image-20230210215721480

指定一个文件夹名

image-20230210214248602

image-20230210214332672

虚拟路径映射

image-20230210214745910

点击运行

这里访问到的HelloWorld就是我们默认的index.jsp中的内容

image-20230210215944626

image-20230210220006144

Tomcat配置成功

5.10 Maven侧边栏的说明

image-20230210221445515

5.11 pom文件分析

<!--Maven版本和头文件-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

<!--  这里就是我们刚才配置的GAV-->
  <groupId>org.example</groupId>
  <artifactId>javaweb-01-maven</artifactId>
<!--  项目的打包方式:
        1.jar-Java应用;
        2.war-JavaWeb应用-->
  <packaging>war</packaging>
<!--  版本-->
  <version>1.0-SNAPSHOT</version>

  <name>javaweb-01-maven Maven Webapp</name>

  <url>https://maven.apache.org</url>
<!--  配置-->
  <properties>
      <!--项目的默认构建编码-->
       <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
       <maven.compiler.source>1.8</maven.compiler.source>
       <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

<!--  项目依赖-->
  <dependencies>
<!--    项目具体依赖的jar包文件-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
    </dependency>
  </dependencies>
<!--  项目构建的插件-->
  <build>
    <finalName>javaweb-01-maven</finalName>
  </build>
</project>

Maven的 JAR 包仓库

image-20230211143702405

Maven的强大之处在于:它会帮你导入一个JAR包所依赖的其他JAR包

5.12 约定大于配置思想的缺点

Maven由于它的约定大于配置的思想,当我们编写的配置文件不符合规范的时候,将会无法导出或者生效

例如:在java目录(本应该放class文件)下,存放xml文件或properties文件

解决方案

链接一

链接二

在build中配置resources,来防止资源导出失败的问题

<build>
      <resources>
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>**/*.properties</exclude>
                <exclude>**/*.xml</exclude>
             </excludes>
            <filtering>false</filtering>
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
</build>

Maven中的目录树

Maven中jar包的一些结构体系

image-20230211123619825

5.13 更改webapp版本

替换为webapp4.0版本,和Tomcat一致

原始版本:webapp2.3

image-20230211150350752

找到:Tomcat安装目录-------webapps-------ROOT-------WEB-INF-------web.xml

image-20230211150528638

image-20230211150559155

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  version="4.0"
  metadata-complete="true">
</web-app>

将上面的内容替换到WEB-INF下的web.xml中,全部替换

image-20230211150654433

替换后…

image-20230211150816502

六、Servlet

6.1 Servlet简介

简介链接:Servlet 是 Sun 公司推出的一种基于 Java 的动态网站开发技术。

编写 Servlet 代码需要遵循 Java 语法,一个 Servlet 程序其实就是一个按照 Servlet 规范编写的 Java 类。Servlet 程序需要先编译成字节码文件(.class文件),然后再部署到服务器运行。

Sun公司在这些API中提供一个叫Servlet的接口,如果你想开发一个Servlet程序,需要完成两个步骤:

  • 编写一个类,实现Servlet接口
  • 把开发好的Java类部署到web服务器中

实现了Servlet接口的Java程序叫做Servlet

6.2 使用Servlet

创建一个普通的Maven项目,并将src目录删除

image-20230211160216670

在pom.xml中添加项目依赖

<dependencies>
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>2.3.3</version>
    </dependency>
</dependencies>

找到Maven仓库:maven-repo\javax\servlet,Maven会自动下载如下文件:

image-20230211160703324

创建子模块

image-20230211161319196

image-20230211161516162

父子项目

image-20230211161847774

父项目中的pom.xml

image-20230211161952849

子项目中

image-20230211162051344

父项目中的 JAR 包子项目可以直接使用,反过来不行-------------多态

son extends father {}

更换web.xml中的webapp版本

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  version="4.0"
  metadata-complete="true">
</web-app>

编写Servlet程序

6.2.1 编写Java文件

java—package

image-20230211162725083

包名规范

image-20230211162941810

class文件

image-20230211163037367

image-20230211163108181

Servletvoid service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
GenericServletpublic abstract void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
HttpServletimage-20230211164530623
HelloServlet(我们创建的类)我们需要进行重写

重写doGet()和doPost()方法

快捷键:alt + insert

image-20230211164756588

由于get或者post只是请求实现的方式不同,因此可以互相调用,业务逻辑都一样

package com.haobin.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("进入doGet方法");
        PrintWriter writer = resp.getWriter();
        writer.print("Hello,Serlvet!");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

6.2.2 编写Servlet映射

为什么需要映射?

我们编写的是Java程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们要在web服务器中注册我们编写的Servlet,还需要给它一个浏览器能够访问的路径

在web.xml文件下

image-20230211170008073

mapping-----映射

image-20230211170253491

6.2.3 配置Tomcat

编辑配置

image-20230210213011719

找到并选择本地Tomcat

image-20230210213210963

相关配置

image-20230210214145800

配置Tomcat HOME

image-20230210215331377

image-20230210215523383

配置Tomcat的安装路径

image-20230210215616375

成功,点击OK-----Apply

image-20230210215721480

指定一个文件夹名

image-20230210214248602

image-20230210214332672

虚拟路径映射

image-20230210214745910

点击运行

这里访问到的HelloWorld就是我们默认的index.jsp中的内容

image-20230210215944626

image-20230210220006144

Tomcat配置成功

6.2.4 运行

生成的target文件夹

image-20230211170930431

网页显示

image-20230211171050812

image-20230211171112181

映射请求逻辑

image-20230211171413233

6.3 Servlet运行原理

Servlet是由Web服务器调用的,web服务器在收到浏览器请求之后,会进行如下过程:

image-20230227171229506

6.4 Mapping

  • 一个Servlet可以指定一个映射路径
<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
</servlet-mapping>
  • 一个Servlet可以指定多个映射路径
<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello2</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello3</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello4</url-pattern>
</servlet-mapping>
  • 一个Servlet可以指定通用映射路径(*可以包括任何东西,包括为空的情况)
<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello/*</url-pattern>
</servlet-mapping>

说在最后📝

​ ✍创作不易,如果觉得文章写得还可以的话,就不要吝啬你的 👍 啦~ ✍


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1251139.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LLM之Agent(一):使用GPT-4开启AutoGPT Agent自动化任务完整指南

在ChatGPT引领的大模型时代&#xff0c;要想让大模型按照用户的指令执行&#xff0c;Prompt设计是一门艺术&#xff0c;由此还催生了一个职业”Prompt工程师“。其实&#xff0c;并不是所有人都可以设计出好的Prompt&#xff0c;甚至同样的Prompt应用在不同的大模型上表现的结果…

Mysql数据库 20.DCL数据控制语言

因这类SQL语言开发人员操作较少&#xff0c;主要是数据库管理员&#xff08;DBA&#xff09;使用&#xff0c;所以前文没有提及&#xff0c;这篇文章进行补充说明 DCL数据控制语言 用来管理数据库用户&#xff0c;控制数据库的访问权限 1.管理用户 1.1 查询用户 select * f…

想当老师应该去学什么专业

专业选择是决定未来职业发展的重要步骤&#xff0c;如果你也想成为一名老师&#xff0c;那么这五个专业可能会适合你&#xff01; 教育学专业 教育学专业是培养教育理论和方法的学科&#xff0c;这些理论知识将帮助你理解教学过程、学生发展、课程设计和评估。该专业将让你全面…

从入门到精通:JMeter接口测试全流程详解!

利用Jmeter做接口测试怎么做呢&#xff1f;过程真的是超级简单。 明白了原理以后&#xff0c;把零碎的知识点填充进去就可以了。所以在学习的过程中&#xff0c;不管学什么&#xff0c;我一直都强调的是要循序渐进&#xff0c;和明白原理和逻辑。这篇文章就来介绍一下如何利用…

互联网时代的身份标识有哪些?

在互联网时代&#xff0c;我们的在线活动几乎都与IP地址相关。无论是浏览网页、观看视频&#xff0c;还是进行在线交易和沟通交流&#xff0c;我们的设备都会分配到一个独特的IP地址。然而&#xff0c;你可能并未意识到的是&#xff0c;IP地址不仅标识了我们在网络中的身份&…

Java零基础——Linux篇

1.【熟悉】认识Linux 1.1 什么是操作系统 1.2 现实生活中的操作系统 1.2.1 Win10 1.2.2 Mac 1.2.3 Android(Linux) 1.2.4 iOS(Unix) 1.3 操作系统的发展史 1.3.1 Unix 1965年之前的时候&#xff0c;电脑并不像现在一样普遍&#xff0c;它可不是一般人能碰的起的&#xff0c…

怎样提升伦敦银买卖技巧?

如果投资者想提升伦敦银的买卖技巧&#xff0c;可以学习一些有用的技术分析方法。所谓技术分析&#xff0c;就是通过对行情过往价格和相关交易数据进行收集&#xff0c;用图表的方式解读白银市场&#xff0c;进而预测行情未来主线走势、判断价格细节变化、寻找重要支撑点阻力点…

外贸分享|如何从外贸小白成长为大咖?这10件事值得你坚持做

外贸成功不是一朝一夕的事&#xff0c;而是需要有充分的准备和持续的努力。作为一位有着丰富经验的外贸人员&#xff0c;我总结了成功的秘诀&#xff0c;分享了一个优秀的外贸人应该做好的10项工作。 1 找不到客户怎么办&#xff1f; 有很多各种各样的原因值得思考&#xff1a…

前缀和+哈希表——560. 和为 K 的子数组

文章目录 &#x1fa90;1. 题目&#x1f31f;2. 算法原理⭐解法一&#xff1a;暴力枚举⭐解法二&#xff1a;前缀和哈希表 &#x1f31e;3. 代码实现 &#x1fa90;1. 题目 题目链接&#xff1a;560. 和为 K 的子数组 - 力扣&#xff08;LeetCode&#xff09; 给你一个整数数组…

python动态规划求解最长回文子串

回文是什么&#xff0c;回文是正着读和反着读都是一样的字符叫着回文。  如 ‘aba’&#xff0c;‘aa’&#xff0c;‘b’&#xff0c;这些都是回文 class Solution:def longestPalindrome(self,s: str) -> str:n len(s)dp [[False] * n for _ in range(n)]ans "…

基于袋獾算法优化概率神经网络PNN的分类预测 - 附代码

基于袋獾算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于袋獾算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于袋獾优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神经网络的光滑…

一篇文章让你入门python集合和字典

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 一、集合: 增加 add 删除 del 删除集合 discard(常用)删除集合中的元素 &#xff0c;删除一个不存在的元素不会报错 remove 删除一个不存在的元素会报错 pop随…

MobileNets发展

写在前面&#xff1a;本博客仅作记录学习之用&#xff0c;部分图片来自网络&#xff0c;如需引用请注明出处&#xff0c;同时如有侵犯您的权益&#xff0c;请联系删除&#xff01; 文章目录 引言MobileNetsMobileNet - V1思想代码实现 MobileNet - V2思想代码实现 MobileNet - …

成都数字孪生技术推进制造业升级,工业物联网可视化应用加速

成都数字孪生技术推进制造业升级&#xff0c;工业物联网可视化应用加速。灯塔工厂转型的关键在于第四次工业革命新技术的应用。数字孪生灯塔工厂是工业4.0技术的应用典范&#xff0c;工业4.0的核心技术包括&#xff1a;数字孪生、大数据分析&#xff0c;工业物联网&#xff0c;…

怎么当代课老师教学生

老师朋友们&#xff0c;有没有帮忙当过代课老师呢&#xff1f;或者&#xff0c;没当过的老师是不是对这种职业充满了好奇&#xff1f;让我来分享一下&#xff0c;当代课老师的日常是什么样的吧&#xff01; 备课 说起备课&#xff0c;那可是个大工程&#xff01;不过&#xff…

html实现360度产品预览(附源码)

文章目录 1.设计来源1.1 拖动汽车产品旋转1.2 汽车产品自动控制 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/134613931 html实现360度产品预览&#xff08;附源码&…

《微信小程序开发从入门到实战》学习三十

3.4 开发参与投票页面 3.3.7 获取用户信息 如果投票是实名投票&#xff0c;那么用户点击完成确认投票时&#xff0c;需要将用户投票信息和用户昵称一起提交&#xff0c;可以在JS文件中使用API接口wx.getuserInfo获取用户的信息。 使用wx.getUserInfo接口前需要对获取 用户信…

破案现场:Docker容器资源限制导致的oom问题

破案现场&#xff1a;Docker容器资源限制导致的oom问题 01 事故现场02 问题定位03 对症下药04 后记 原文来自于微信公众号“运维之美” https://mp.weixin.qq.com/s?__bizMzA5NDY1MTM3MA&mid2247484902&idx1&sn8394aefd884ee09ea546fcd400dd233c&chksm904a136…

LeetCode-805.保持城市天际线 C/C++实现 超详细思路及过程[M]

&#x1f388;归属专栏&#xff1a;深夜咖啡配算法 &#x1f697;个人主页&#xff1a;Jammingpro &#x1f41f;记录一句&#xff1a;摆烂一天后&#xff0c;写的第一篇博客 文章目录 LeetCode-807. 保持城市天际线&#x1f697;题目&#x1f686;题目描述&#x1f686;题目示…

TPLink-Wr702N 通过OpenWrt系统打造打印服务器实现无线打印

最近淘到了一个TPLink-Wr702N路由器&#xff0c;而且里面已经刷机为OpenWrt系统了&#xff0c;刚好家里有一台老的USB打印机&#xff0c;就想这通过路由器将打印机改为无线打印机&#xff0c;一番折腾后&#xff0c;居然成功了&#xff0c;这里记录下实现过程&#xff0c;为后面…