Web 服务器 -【Tomcat】的简单学习

  • Tomcat
    • 1 简介
      • 1.1 什么是Web服务器
    • 2 基本使用
      • 2.1 下载
      • 2.2 安装
      • 2.3 卸载
      • 2.4 启动
      • 2.5 关闭
      • 2.6 配置
      • 2.7 部署
    • 3 Maven创建Web项目
      • 3.1 Web项目结构
      • 3.2 创建Maven Web项目
    • 4 IDEA使用Tomcat
      • 4.1 集成本地Tomcat
      • 4.2 Tomcat Maven插件

Tomcat

1 简介

1.1 什么是Web服务器

Web服务器是一个应用程序(软件),对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷。主要功能是"提供网上信息浏览服务"。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-abKtSM7l-1691801125756)(assets/1627058356051.png)]

Web服务器是安装在服务器端的一款软件,将来我们把自己写的Web项目部署到Web Tomcat服务器软件中,当Web服务器软件启动后,部署在Web服务器软件中的页面就可以直接通过浏览器来访问了。

Web服务器软件使用步骤

  • 准备静态资源
  • 下载安装Web服务器软件
  • 将静态资源部署到Web服务器上
  • 启动Web服务器使用浏览器访问对应的资源

上述内容在演示的时候,使用的是Apache下的Tomcat软件,至于Tomcat软件如何使用,后面会详细的讲到。而对于Web服务器来说,实现的方案有很多,Tomcat只是其中的一种,而除了Tomcat以外,还有很多优秀的Web服务器,比如:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yv6WyzcN-1691801125757)(assets/1627060368806.png)]

Tomcat就是一款软件,我们主要是以学习如何去使用为主。具体我们会从以下这些方向去学习:

  1. 简介: 初步认识下Tomcat

  2. 基本使用: 安装、卸载、启动、关闭、配置和项目部署,这些都是对Tomcat的基本操作

  3. IDEA中如何创建Maven Web项目

  4. IDEA中如何使用Tomcat,后面这两个都是我们以后开发经常会用到的方式

首选我们来认识下Tomcat。

Tomcat

Tomcat的相关概念:

  • Tomcat是Apache软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范。

  • 概念中提到了JavaEE规范,那什么又是JavaEE规范呢?

    JavaEE: Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF。

  • 因为Tomcat支持Servlet/JSP规范,所以Tomcat也被称为Web容器、Servlet容器。Servlet需要依赖Tomcat才能运行。

  • Tomcat的官网: https://tomcat.apache.org/ 从官网上可以下载对应的版本进行使用。

Tomcat的LOGO

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A3O9Qcq5-1691801125757)(assets/1627176045795.png)]

小结

通过这一节的学习,我们需要掌握以下内容:

  1. Web服务器的作用

封装HTTP协议操作,简化开发

可以将Web项目部署到服务器中,对外提供网上浏览服务

  1. Tomcat是一个轻量级的Web服务器,支持Servlet/JSP少量JavaEE规范,也称为Web容器,Servlet容器。

2 基本使用

Tomcat总共分两部分学习,先来学习Tomcat的基本使用,包括Tomcat的下载、安装、卸载、启动和关闭

2.1 下载

直接从官网下载

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qx0IwhFR-1691801125757)(assets/1627178001030.png)]

2.2 安装

Tomcat是绿色版,直接解压即可

  • 在D盘的software目录下,将apache-tomcat-8.5.68-windows-x64.zip进行解压缩,会得到一个apache-tomcat-8.5.68的目录,Tomcat就已经安装成功。

    注意,Tomcat在解压缩的时候,解压所在的目录可以任意,但最好解压到一个不包含中文和空格的目录,因为后期在部署项目的时候,如果路径有中文或者空格可能会导致程序部署失败。

  • 打开apache-tomcat-8.5.68目录就能看到如下目录结构,每个目录中包含的内容需要认识下,

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AulIIwE6-1691801125758)(assets/1627178815892.png)]

    bin:目录下有两类文件,一种是以.bat结尾的,是Windows系统的可执行文件,一种是以.sh结尾的,是Linux系统的可执行文件。

    webapps:就是以后项目部署的目录

    到此,Tomcat的安装就已经完成。

2.3 卸载

卸载比较简单,可以直接删除目录即可

2.4 启动

双击: bin\startup.bat

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y1Ah3WLE-1691801125758)(assets/1627179006011.png)]

启动后,通过浏览器访问 http://localhost:8080能看到Apache Tomcat的内容就说明Tomcat已经启动成功。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zCAou0Gp-1691801125758)(assets/1627199957728.png)]

注意: 启动的过程中,控制台有中文乱码,需要修改conf/logging.prooperties

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7QFTa7Ab-1691801125759)(assets/1627199827589.png)]

2.5 关闭

关闭有三种方式

  • 直接x掉运行窗口:强制关闭[不建议]
  • bin\shutdown.bat:正常关闭
  • ctrl+c: 正常关闭

2.6 配置

修改端口

  • Tomcat默认的端口是8080,要想修改Tomcat启动的端口号,需要修改 conf/server.xml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pMINVw2k-1691801125759)(assets/1627200509883.png)]

注: HTTP协议默认端口号为80,如果将Tomcat端口号改为80,则将来访问Tomcat时,将不用输入端口号。

启动时可能出现的错误

  • Tomcat的端口号取值范围是0-65535之间任意未被占用的端口,如果设置的端口号被占用,启动的时候就会包如下的错误

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8ynx0ot6-1691801125759)(assets/1627200780590.png)]

  • Tomcat启动的时候,启动窗口一闪而过: 需要检查JAVA_HOME环境变量是否正确配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pAyhjfVS-1691801125759)(assets/1627201248802.png)]

2.7 部署

  • Tomcat部署项目: 将项目放置到webapps目录下,即部署完成。

    • 资料/2. Tomcat/hello 目录拷贝到Tomcat的webapps目录下

    • 通过浏览器访问http://localhost/hello/a.html,能看到下面的内容就说明项目已经部署成功。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4ZNTMw0Z-1691801125760)(assets/1627201572748.png)]

      但是呢随着项目的增大,项目中的资源也会越来越多,项目在拷贝的过程中也会越来越费时间,该如何解决呢?

  • 一般JavaWeb项目会被打包称war包,然后将war包放到Webapps目录下,Tomcat会自动解压缩war文件

    • 资料/2. Tomcat/haha.war目录拷贝到Tomcat的webapps目录下

    • Tomcat检测到war包后会自动完成解压缩,在webapps目录下就会多一个haha目录

    • 通过浏览器访问http://localhost/haha/a.html,能看到下面的内容就说明项目已经部署成功。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4nxGXdKW-1691801125760)(assets/1627201868752.png)]

至此,Tomcat的部署就已经完成了,至于如何获得项目对应的war包,后期我们会借助于IDEA工具来生成。

3 Maven创建Web项目

介绍完Tomcat的基本使用后,我们来学习在IDEA中如何创建Maven Web项目,学习这种方式的原因是以后Tomcat中运行的绝大多数都是Web项目,而使用Maven工具能更加简单快捷的把Web项目给创建出来,所以Maven的Web项目具体如何来构建呢?

在真正创建Maven Web项目之前,我们先要知道Web项目长什么样子,具体的结构是什么?

3.1 Web项目结构

Web项目的结构分为:开发中的项目和开发完可以部署的Web项目,这两种项目的结构是不一样的,我们一个个来介绍下:

  • Maven Web项目结构: 开发中的项目

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xCpTO8gC-1691801125760)(assets/1627202865978.png)]

  • 开发完成部署的Web项目

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SkevkjrM-1691801125760)(assets/1627202903750.png)]

    • 开发项目通过执行Maven打包命令package,可以获取到部署的Web项目目录
    • 编译后的Java字节码文件和resources的资源文件,会被放到WEB-INF下的classes目录下
    • pom.xml中依赖坐标对应的jar包,会被放入WEB-INF下的lib目录下

3.2 创建Maven Web项目

介绍完Maven Web的项目结构后,接下来使用Maven来创建Web项目,创建方式有两种:使用骨架和不使用骨架

使用骨架

具体的步骤包含:

1.创建Maven项目

2.选择使用Web项目骨架

3.输入Maven项目坐标创建项目

4.确认Maven相关的配置信息后,完成项目创建

5.删除pom.xml中多余内容

6.补齐Maven Web项目缺失的目录结构

  1. 创建Maven项目

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0x2BPHA3-1691801125761)(assets/1627227574092.png)]

  2. 选择使用Web项目骨架

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EYQcp1v9-1691801125761)(assets/1627227650406.png)]

  3. 输入Maven项目坐标创建项目

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Lq2ZNfn-1691801125761)(assets/1627228065007.png)]

  4. 确认Maven相关的配置信息后,完成项目创建

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XnfFNCn8-1691801125761)(assets/1627228413280.png)]

  5. 删除pom.xml中多余内容,只留下面的这些内容,注意打包方式 jar和war的区别

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZsryneQ0-1691801125762)(assets/1627228584625.png)]

  6. 补齐Maven Web项目缺失的目录结构,默认没有java和resources目录,需要手动完成创建补齐,最终的目录结果如下

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hovgd3oq-1691801125762)(assets/1627228673162.png)]

不使用骨架

具体的步骤包含:

1.创建Maven项目

2.选择不使用Web项目骨架

3.输入Maven项目坐标创建项目

4.在pom.xml设置打包方式为war

5.补齐Maven Web项目缺失webapp的目录结构

6.补齐Maven Web项目缺失WEB-INF/web.xml的目录结构

  1. 创建Maven项目

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i394UL1D-1691801125762)(assets/1627229111549.png)]

  2. 选择不使用Web项目骨架

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MhBvEMR0-1691801125762)(assets/1627229137316.png)]

  3. 输入Maven项目坐标创建项目

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c91XzC8a-1691801125763)(assets/1627229371251.png)]

  4. 在pom.xml设置打包方式为war,默认是不写代表打包方式为jar

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T52o1yQD-1691801125763)(assets/1627229428161.png)]

  5. 补齐Maven Web项目缺失webapp的目录结构

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tKlkiQNX-1691801125763)(assets/1627229584134.png)]

  6. 补齐Maven Web项目缺失WEB-INF/web.xml的目录结构
    6800

  7. 补充完后,最终的项目结构如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NoNRM0fP-1691801125764)(assets/1627229478030.png)]

上述两种方式,创建的web项目,都不是很全,需要手动补充内容,至于最终采用哪种方式来创建Maven Web项目,都是可以的,根据各自的喜好来选择使用即可。

小结

1.掌握Maven Web项目的目录结构

2.掌握使用骨架的方式创建Maven Web项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eLq8QSbJ-1691801125764)(assets/1627204022604.png)]

3.掌握不使用骨架的方式创建Maven Web项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ohtdqvDa-1691801125764)(assets/1627204076090.png)]

4 IDEA使用Tomcat

  • Maven Web项目创建成功后,通过Maven的package命令可以将项目打包成war包,将war文件拷贝到Tomcat的webapps目录下,启动Tomcat就可以将项目部署成功,然后通过浏览器进行访问即可。
  • 然而我们在开发的过程中,项目中的内容会经常发生变化,如果按照上面这种方式来部署测试,是非常不方便的
  • 如何在IDEA中能快速使用Tomcat呢?

在IDEA中集成使用Tomcat有两种方式,分别是集成本地TomcatTomcat Maven插件

4.1 集成本地Tomcat

目标: 将刚才本地安装好的Tomcat8集成到IDEA中,完成项目部署,具体的实现步骤

  1. 打开添加本地Tomcat的面板

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TgOmGjSf-1691801125765)(assets/1627229992900.png)]

  2. 指定本地Tomcat的具体路径

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C8B9ejke-1691801125765)(assets/1627230313062.png)]

  3. 修改Tomcat的名称,此步骤可以不改,只是让名字看起来更有意义,HTTP port中的端口也可以进行修改,比如把8080改成80

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VsYabGTx-1691801125765)(assets/1627230366658.png)]

  4. 将开发项目部署项目到Tomcat中

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G9B2WVWm-1691801125766)(assets/1627230913259.png)]

    扩展内容: xxx.war和 xxx.war exploded这两种部署项目模式的区别?

    • war模式是将WEB工程打成war包,把war包发布到Tomcat服务器上

    • war exploded模式是将WEB工程以当前文件夹的位置关系发布到Tomcat服务器上

    • war模式部署成功后,Tomcat的webapps目录下会有部署的项目内容

    • war exploded模式部署成功后,Tomcat的webapps目录下没有,而使用的是项目的target目录下的内容进行部署

    • 建议大家都选war模式进行部署,更符合项目部署的实际情况

  5. 部署成功后,就可以启动项目,为了能更好的看到启动的效果,可以在webapp目录下添加a.html页面

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YbVYZygU-1691801125766)(assets/1627233265351.png)]

  6. 启动成功后,可以通过浏览器进行访问测试

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tbJnFCCS-1691801125766)(assets/1627232743706.png)]

  7. 最终的注意事项

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Gwe7dP5-1691801125766)(assets/1627232916624.png)]

至此,IDEA中集成本地Tomcat进行项目部署的内容我们就介绍完了,整体步骤如下,大家需要按照流程进行部署操作练习。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NuchlFE5-1691801125767)(assets/1627205657117.png)]

4.2 Tomcat Maven插件

在IDEA中使用本地Tomcat进行项目部署,相对来说步骤比较繁琐,所以我们需要一种更简便的方式来替换它,那就是直接使用Maven中的Tomcat插件来部署项目,具体的实现步骤,只需要两步,分别是:

  1. 在pom.xml中添加Tomcat插件

    <build><plugins><!--Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version></plugin></plugins>
    </build>
    
  2. 使用Maven Helper插件快速启动项目,选中项目,右键–>Run Maven --> tomcat7:run

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RR9rpmNh-1691801125767)(assets/1627233963315.png)]

注意:

  • 如果选中项目并右键点击后,看不到Run Maven和Debug Maven,这个时候就需要在IDEA中下载Maven Helper插件,具体的操作方式为: File --> Settings --> Plugins --> Maven Helper —> Install,安装完后按照提示重启IDEA,就可以看到了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sih830zy-1691801125767)(assets/1627234184076.png)]

  • Maven Tomcat插件目前只有Tomcat7版本,没有更高的版本可以使用
  • 使用Maven Tomcat插件,要想修改Tomcat的端口和访问路径,可以直接修改pom.xml
<build><plugins><!--Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>80</port><!--访问端口号 --><!--项目访问路径未配置访问路径: http://localhost:80/tomcat-demo2/a.html配置/后访问路径: http://localhost:80/a.html如果配置成 /hello,访问路径会变成什么?答案: http://localhost:80/hello/a.html--><path>/</path></configuration></plugin></plugins>
</build>

小结

通过这一节的学习,大家要掌握在IDEA中使用Tomcat的两种方式,集成本地Tomcat和使用Maven的Tomcat插件。后者更简单,推荐大家使用,但是如果对于Tomcat的版本有比较高的要求,要在Tomcat7以上,这个时候就只能用前者了。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解JAVA远程debug

目录 1.什么是远程debug&#xff1f; 2.远程debug普通JAVA程序 环境 测试程序 程序启动指令 编译器配置 3.远程debug JAVA Web程序 4.远程debug spring boot程序 1.什么是远程debug&#xff1f; 远程debug&#xff0c;也就是可以在本地debug远端部署的程序&#xff0c…

【数据结构与算法】十大经典排序算法-冒泡排序

&#x1f31f;个人博客&#xff1a;www.hellocode.top &#x1f3f0;Java知识导航&#xff1a;Java-Navigate &#x1f525;CSDN&#xff1a;HelloCode. &#x1f334;掘金&#xff1a;HelloCode &#x1f31e;知乎&#xff1a;HelloCode ⚡如有问题&#xff0c;欢迎指正&#…

MOCK测试

介绍 mock&#xff1a;就是对于一些难以构造的对象&#xff0c;使用虚拟的技术来实现测试的过程。 mock测试&#xff1a;在测试过程中&#xff0c;对于某些不容易构造或者不容易获取的对象&#xff0c;可以用一个虚拟的对象来代替的测试方 法。 接口Mock测试&#xff1a;在接口…

【C++】内存管理与模板

目录 一、内存管理 1.new与delete基本用法 (1) 内置类型 (2) 自定义类型 2.new, delete与malloc, free对比 (1) 内置类型 (2) 自定义类型 (3)综合特点 3.new与delete的底层实现 4. 定位new表达式 二、模板 1.引入机制 2. 基本使用 (1) 函数模板 ①概念&#xff1a…

Hadoop+Python+Django+Mysql热门旅游景点数据分析系统的设计与实现(包含设计报告)

系统阐述的是使用热门旅游景点数据分析系统的设计与实现&#xff0c;对于Python、B/S结构、MySql进行了较为深入的学习与应用。主要针对系统的设计&#xff0c;描述&#xff0c;实现和分析与测试方面来表明开发的过程。开发中使用了 django框架和MySql数据库技术搭建系统的整体…

06-1_Qt 5.9 C++开发指南_对话框与多窗体设计_标准对话框

在一个完整的应用程序设计中&#xff0c;不可避免地会涉及多个窗体、对话框的设计和调用&#xff0c;如何设计和调用这些对话框和窗体是搞清楚一个庞大的应用程序设计的基础。本章将介绍对话框和多窗体设计、调用方式、数据传递等问题&#xff0c;主要包括以下几点。 Qt 提供的…

OffSec Labs Proving grounds Play——FunboxEasyEnum

文章目录 端口扫描目录扫描文件上传漏洞利用查看用户爆破密码sudo提权flag位置FunboxEasyEnum writeup walkthrough Funbox: EasyEnum ~ VulnHub Enumeration Brute-force the web server’s files and directories. Be sure to check for common file extensions. Remote…

Hadoop理论及实践-HDFS四大组件关系(参考Hadoop官网)

NameNode&#xff08;名称节点&#xff0c;Master主节点&#xff09; NameNode主要功能 1、NameNode负责管理HDFS文件系统的元数据&#xff0c;包括文件&#xff0c;目录&#xff0c;块信息等。它将元数据Fsimage与Edit_log持久化到硬盘上。一个是Fsimage(镜像文件&#xff09…

android,Compose,消息列表和动画(点击item的时候,就会删除)

Compose,消息列表和动画&#xff08;点击item的时候&#xff0c;就会删除&#xff09; package com.example.mycompose08import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundat…

PoseiSwap 开启“Poseidon”池,治理体系或将全面开启

PoseiSwap 曾在前不久分别以 IDO、IEO 的方式推出了 POSE 通证&#xff0c;但 PoseiSwap DEX 中并未向除 Zepoch 节点外的角色开放 POSE 资产的交易。而在前不久&#xff0c;PoseiSwap 推出了全新的“Poseidon”池&#xff0c;该池将向所有用户开放&#xff0c;并允许用户自由的…

Git:在本地电脑上如何使用git?

git 版本&#xff1a; 2.40.1.windows.1 文章目录 一. 使用git之前你必须要理解的几个概念1.1 理解工作区、版本库、暂存区的概念1.2 提交Git版本库的步骤【分两步执行】 二. Git本地库实战2.1 初始化版本库2.2 新建 & 提交 & 状态2.3 查看日志2.4 回退 & 穿梭 &am…

Codeforces Round 892 (Div. 2) C. Another Permutation Problem 纯数学方法 思维题

Codeforces Round 892 (Div. 2) C. Another Permutation Problem 源码&#xff1a; #include <iostream> #include <algorithm> #include <set> #include <map> #include <queue> #include <vector> #include <stack> #include &l…

面试热题(螺旋矩阵)

给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素 一看到这个大家有没有想到 就是一个螺旋形状&#xff0c;那这道题我们应该怎么解决&#xff1f; 我们先来仔细的看&#xff0c;它这种螺旋形状的遍历是先【右-下-左-上】…

aardio 调用 python pickle load 数据

aardio 调用 python pickle load 词典数据&#xff1b; pip install readmdict dump_pickle.py import os import sys import time import pickle from readmdict import MDX, MDDos.chdir("/mdict")mdxfile "your.mdx" if not os.path.exists(mdxfil…

Kotlin和Java互操作时的可空性

注&#xff1a;文中demo的kt版本是1.7.10 一、kotlin语言中的可空性设计 在Java语言中的NPE&#xff08;NullPointerException&#xff09;可以说非常常见&#xff0c;而且诟病已久。 kotlin做为后起之秀&#xff0c;在空指针的问题上进行了升级&#xff0c;即&#xff1…

数据结构-带头双向循环链表的实现

前言 带头双向循环链表是一种重要的数据结构&#xff0c;它的结构是很完美的&#xff0c;它弥补了单链表的许多不足&#xff0c;让我们一起来了解一下它是如何实现的吧&#xff01; 1.节点的结构 它的节点中存储着数据和两个指针&#xff0c;一个指针_prev用来记录前一个节点…

微服务监控技术skywalking的部署与使用(亲测无坑)

微服务监控技术skywalking的部署与使用 1. 前期准备2. skywalking安装部署2.1 Java Agent2.2 apache/skywalking-oap-server2.3 apache/skywalking-ui 3. 项目启动4.效果展示 1. 前期准备 注&#xff1a;本篇文章采用docker部署&#xff0c;采用8.2.0版本&#xff0c;版本一定…

【Nginx】Nginx负载均衡

负载均衡&#xff1a;通过反向代理来实现 Nginx的七层代理和四层代理&#xff1a; 七层是最常用的反向代理方式&#xff0c;只能配置在nginx配置文件的http模块当中 &#xff1b;配置的方法名称为&#xff1a;upstream模块&#xff0c;不能写在server中也不能写在location中&a…

FPGA实践 ——Verilog基本实验步骤演示

0x00 回顾&#xff1a;AND/OR/NOT 逻辑的特性 AND&#xff1a;与门可以具有两个或更多的输入&#xff0c;并返回一个输出。当所有输入值都为 1 时&#xff0c;输出值为 1。如果输入值中有任何一个为 0&#xff0c;则输出值为 0。 OR&#xff1a;或门可以具有两个或更多的输入…

湘大 XTU OJ 1290 Alice and Bob 题解(非常详细):字符串 分类讨论 简单模拟

一、链接 1290 Alice and Bob 二、题目 题目描述 Alice和Bob玩剪刀-石头-布的游戏&#xff0c;请你写个程序判断一下比赛的结果。 输入 第一行是一个整数K&#xff0c;表示样例的个数。 以后每行两个单词&#xff0c;rock表示石头&#xff0c;paper表示布&#xff0c;scis…