TOMCAT全解

news2024/11/15 15:54:30

目录

一 、WEB技术简介

HTTP协议

B/S 结构

前端三大核心技术简介

HTML

CSS

JavaScript

二 、WEB框架

web资源和访问

后台应用架构

三、tomacat的介绍

四、tomcat的部署

tomcat的反向代理

 tomcat的负载均衡

 memcached的安装与启动

 tomcat的session会话保持


 、WEB技术简介

HTTP协议

基本介绍:
• HTTP:超文本传输协议,是从万维网服务器传输超文本到本地浏览器的传送协议
• HTTP是一种应用层协议,是基于TCP/IP通信协议来传送数据的,其中 HTTP1.0、HTTP1.1、HTTP2.0 均为 TCP 实现,HTTP3.0 基于 UDP 实现。现主流使用 HTTP1.0 和 HTTP3.0
• 协议:为了是数据在网络源头到达目的,网络通信的参与方必须遵守相同的规则,这套规则曾为协议,他的最终体现为在网络上传输的数据报的格式 ,通俗的来讲协议就是要保证网络通信的双方,能够互相对接,互相联系的暗号。

工作过程:
当我们在浏览器输入一个网址,此时浏览器就会给对应的服务器发送一个HTTP请求,对应的服务器收到这个请求之后,经过计算就会返回一个HTTP响应,并且当我们访问一个网站的时候,可能涉及到不止一次的HTTP请求和相应的交互过程。
HTTP协议的特点:一发一收,一问一答。

B/S 结构

B/S架构,即浏览器/服务器架构,是一种网络架构模式,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户端只需要安装一个浏览器,通过Web服务器与数据库服务器进行数据交互。B/S架构利用了Web浏览器技术和Internet协议,实现了异构系统的连接和信息的共享。

B/S架构的分层:

第一层表现层:主要完成用户和后台的交互及最终查询结果的输出功能。

第二层逻辑层:主要是利用服务器完成客户端的应用逻辑功能。

第三层数据层:主要是接受客户端请求后独立进行各种运算。

前端三大核心技术简介

HTML

HTML(全称为“超文本标记语言”)是一种用于创建Web页面的标记语言。它是Web开发的基础,允许开发者定义页面的结构、内容和样式。HTML使用一些标记或“标签”来描述文本和媒体内容的结构和格式,这些标签可以指示网页浏览器如何显示内容,包括标题、段落、列表、超链接、图像、音频、视频等等。HTML还可以与其他Web技术(如CSS和JavaScript)结合使用,以实现更复杂和交互性的Web应用程序。

CSS

CSS通常称为CSS样式表或层叠样式表(级联样式表),主要用于设置HTML页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、边距等)以及版面的布局等外观显示样式。
CSS以HTML为基础,提供了丰富的功能,如字体、颜色、背景的控制及整体排版等,而且还可以针对不同的浏览器设置不同的样式。

JavaScript

JavaScript是一门跨平台、面向对象的脚本语言(不需要编译,直接解释运行即可),来控制网页的行为,它能使网页可交互。

 、WEB框架

web资源和访问

Web 资源的类型

  • 静态资源

定义:指内容不随时间变化而变化的资源。 例子:HTML 文件、CSS 样式表、JavaScript 文件、图像文件(如 JPEG、PNG)、音频文件、视频文件等。

特点:一旦创建,在没有人为修改的情况下,每次访问都返回相同的内容。

  • 动态资源

定义:其内容是根据特定的请求动态生成的资源。

例子:由服务器端脚本(如 PHP、Python、Java 等语言编写的服务器端程序)生成的网页内容。 特点:每次请求可能会得到不同的响应,因为资源的生成取决于请求的参数、用户身份、数据库状态等多种因素。

Web 资源的访问方式

  • 通过浏览器访问 :这是最常见的方式。用户在浏览器的地址栏中输入 URL(统一资源定位符),浏览器向服务器发送请求,服务器返回相应的 Web 资源,浏览器解析并显示这些资源。 例如,当你在浏览器中输入一个网站的地址,如 “www.example.com”,浏览器会向该网站的服务器发送请求,获取 HTML、CSS、JavaScript 等资源,并将其渲染成用户可以看到的网页。
  • 通过 API 访问 :许多 Web 应用程序提供 API(应用程序编程接口),允许其他程序以编程的方式访问其资源。 例如,一个天气应用程序可能提供一个 API,让其他开发者可以获取特定地区的天气信息。开发者可以使用编程语言(如 Python、Java、JavaScript 等)发送 HTTP 请求到该 API 的端点,获取以 JSON 或 XML 格式返回的天气数据。
  • 命令行工具访问 有些工具可以通过命令行界面访问 Web 资源。例如,使用 “curl” 命令可以发送 HTTP 请求并获取资源的内容。 比如,在命令行中输入 “curl https://www.example.com”,会返回该网站的 HTML 内容。

影响 Web 资源访问的因素

  • 网络连接: 稳定的网络连接是确保顺利访问 Web 资源的基础。如果网络速度慢或不稳定,可能会导致资源加载缓慢或失败。 例如,在网络拥堵的情况下,下载大文件或访问视频流可能会变得非常缓慢。
  • 服务器性能 :服务器的处理能力、内存、存储等性能因素会影响对 Web 资源的响应速度。 如果服务器负载过高,可能会导致响应时间延长,甚至无法响应请求。
  • 安全性设置 :防火墙、代理服务器、HTTPS 加密等安全设置可能会限制对某些 Web 资源的访问。 例如,一些公司的网络可能会设置防火墙,阻止员工访问特定类型的网站。
  • 资源权限 :Web 资源可能具有不同的访问权限设置。例如,某些网页可能需要用户登录才能访问,或者某些 API 可能需要授权才能使用。 如果没有正确的权限,用户将无法访问相应的资源。

后台应用架构

单体架构

传统架构(单机系统),一个项目一个工程:比如商品、订单、支付、库存、登录、注册等等,统
一部署,一个进程all in one的架构方式,把所有的功能单元放在一个应用里。然后把整个应用部署到一台服务器上。
如果负载能力不行,将整个应用进行水平复制,进行扩展,然后通过负载均衡实现访问。
Java 实现: JSP Servlet ,打包成一个 jar war 部署易于开发和测试: 也十分方便部署 ; 当需要扩展时,只需要将 war 复制多份,然后放到多个服务器上,再做个负载均衡就可以了。
如果某个功能模块出问题,有可能全站不可访问,修改 Bug 后、某模块功能修改或升级后,需要停
掉整个服务,重新整体重新打包、部署这个应用 war 包,功能模块相互之间耦合度高 , 相互影响 , 不适合当今互联网业务功能的快速迭代。
特别是对于一个大型应用,我们不可能吧所有内容都放在一个应用里面,我们如何维护、如何分工
合作都是问题。如果项目庞大,管理难度大web应用服务器:开源的 tomcat jetty glassfish 。商用的有 weblogic websphere Jboss

微服务 

属于 SOA Service Oriented Architecture )的子集。
微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底去掉耦合,每一
个微服务提供单个业务功能,一个服务只做一件事。每个服务都围绕着具体业务进行构建,并且能
够被独立地部署到生产环境、类生产环境等。
从技术角度讲就是一种小而独立的处理过程,类似与进程的概念,能够自行单独启动或销毁微服务架构(分布式系统),各个模块/ 服务,各自独立出来, " 让专业的人干专业的事 " ,独立部署。分布式系统中,不同的服务可以使用各自独立的数据库。
服务之间采用轻量级的通信机制(通常是基于 HTTP RESTful API )。
微服务设计的思想改变了原有的企业研发团队组织架构。传统的研发组织架构是水平架构,前端、
后端、 DBA 、测试分别有自己对应的团队,属于水平团队组织架构。而微服务的设计思想对团队的
划分有着一定的影响,使得团队组织架构的划分更倾向于垂直架构,比如用户业务是一个团队来负
责,支付业务是一个团队来负责。但实际上在企业中并不会把团队组织架构拆分得这么绝对,垂直
架构只是一种理想的架构。
微服务的实现框架有多种,不同的应用架构,部署方式也有不同。

三、tomacat的介绍

Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,Tomcat 具有处理 HTML 页面的功能,它还是一个 Servlet 和JSP容器。
起始于 SUN 公司的一个 Servlet 的参考实现项目 Java Web Server ,开发者是 James Duncan Davidson, 在1999 年,将项目贡献给了 apache 软件基金会( ASF ),和 ASF 现有的项目 JServ 合并,并开源成为顶级项目。
Tomcat 仅仅实现了 Java EE 规范中与 Servlet JSP 相关的类库,是 JavaEE 不完整实现。
1999 年发布初始版本是 Tomcat 3.0 ,实现了 Servlet 2.2 JSP 1.1 规范。
Tomcat 4.x 发布时,内建了 Catalina Servlet 容器)和 Jasper JSP engine )等。
当前 Tomcat 的正式版本已经更新到 10.0.x 版本,但当前企业中主流版本为 8.x 7.x。
官网 :
http://tomcat.apache.org/
官网文档 :
https://tomcat.apache.org/tomcat-8.5-doc/index.html
帮助文档 :
https://cwiki.apache.org/confluence/display/tomcat/
https://cwiki.apache.org/confluence/display/tomcat/FAQ

四、tomcat的部署

常见部署方式

  • standalone模式,Tomcat单独运行,直接接受用户的请求,不推荐。
  • 反向代理,单机运行,提供了一个Nginx作为反向代理,可以做到静态由nginx提供响应,动态jsp代理给Tomcat LNMTLinux + Nginx + MySQL + Tomcat ;LAMTLinux + ApacheHttpd+ MySQL + Tomcat
  • 前置一台Nginx,给多台Tomcat实例做反向代理和负载均衡调度,Tomcat上部署的纯动态页面更 适合 LNMTLinux + Nginx + MySQL + Tomcat
  • 多级代理 LNNMTLinux + Nginx + Nginx + MySQL + Tomcat

 安装tomcat

安装3个主机,分别为nginx、tomcat-node1、tomcat-node2

在两台tomcat主机上安装java环境

yum install java-1.8.0-openjdk.x86_64 -y

[root@tomcat-node1 ~]# ll /etc/alternatives//jre_openjdk/
总用量 184
-rw-r--r-- 1 root root   1522  8月 30  2022 ASSEMBLY_EXCEPTION
drwxr-xr-x 2 root root    188  8月 22 09:19 bin
drwxr-xr-x 9 root root   4096  8月 22 09:19 lib
-rw-r--r-- 1 root root  19274  8月 30  2022 LICENSE
-rw-r--r-- 1 root root 157063  8月 30  2022 THIRD_PARTY_README

 在两台tomcat主机上安装软件包并启动tomcat

[root@tomcat-node1 ~]# tar zxf apache-tomcat-9.0.93.tar.gz -C /usr/local/
[root@tomcat-node1 ~]# cd /usr/local/
[root@tomcat-node1 local]# ls
apache-tomcat-9.0.93  etc    include  lib64    sbin   src
bin                   games  lib      libexec  share
[root@tomcat-node1 local]# ln -s apache-tomcat-9.0.93 tomcat
[root@tomcat-node1 local]# cd tomcat/
[root@tomcat-node1 tomcat]# ls
bin           CONTRIBUTING.md  logs       RELEASE-NOTES  webapps
BUILDING.txt  lib              NOTICE     RUNNING.txt    work
conf          LICENSE          README.md  temp
[root@tomcat-node1 tomcat]# cd bin/
[root@tomcat-node1 bin]# ls
bootstrap.jar                 configtest.sh     shutdown.sh
catalina.bat                  daemon.sh         startup.bat
catalina.sh                   digest.bat        startup.sh
catalina-tasks.xml            digest.sh         tomcat-juli.jar
ciphers.bat                   makebase.bat      tomcat-native.tar.gz
ciphers.sh                    makebase.sh       tool-wrapper.bat
commons-daemon.jar            setclasspath.bat  tool-wrapper.sh
commons-daemon-native.tar.gz  setclasspath.sh   version.bat
configtest.bat                shutdown.bat      version.sh
[root@tomcat-node1 bin]# ./startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

网页测试: 

生成tomcat的启动文件 

[root@tomcat-node1 conf]# vim tomcat.conf
[root@tomcat-node1 conf]# vim /lib/systemd/system/tomcat.service

 使/usr/bin/tomcat具备可执行的权限

[root@tomcat-node1 conf]# vim /usr/bin/tomcat
[root@tomcat-node1 conf]# chmod +x /usr/bin/tomcat
[root@tomcat-node1 conf]# tomcat start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
[root@tomcat-node1 conf]# vim /lib/systemd/system/tomcat.service

 生成启动文件

[root@tomcat-node1 conf]# useradd -s /sbin/nologin -M tomcat
[root@tomcat-node1 conf]# chown -R tomcat.tomcat /usr/local/tomcat/
[root@tomcat-node1 conf]# systemctl daemon-reload
[root@tomcat-node1 conf]# systemctl enable --now tomcat
Created symlink /etc/systemd/system/multi-user.target.wants/tomcat.service → /usr/lib/systemd/system/tomcat.service.

tomcat的反向代理

利用 nginx 反向代理功能,实现图中的代理功能,将用户请求全部转发至指定的同一个 tomcat 主机。
利用 nginx 指令 proxy_pass 可以向后端服务器转发请求报文 , 并且在转发时会保留客户端的请求报文中的host首部,最终在浏览器上测试。
[root@tomcat-node1 ~]# ls
anaconda-ks.cfg  apache-tomcat-9.0.93.tar.gz  test.jsp
[root@tomcat-node1 ~]# cp test.jsp /usr/local/tomcat/webapps/ROOT/
[root@tomcat-node1 ~]# scp test,jsp root@172.25.254.20:/usr/local/tomcat/webapps/ROOT/

nginx代理配置

[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhosts.conf
[root@nginx-node1 ~]# nginx -s reload

 

 tomcat的负载均衡

使用源地址哈希算法

[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhosts.conf
[root@nginx-node1 ~]# nginx -s reload

测试:在不同的浏览器测试www.zf.org/test.jsp

memcached的安装与启动

[root@tomcat-node1 ~]# dnf install memcached -y

相关参数

set、add、replace、get、delete
#前三个命令是用于操作存储在 memcached 中的键值对的标准修改命令,都使用如下所示的语法:
command <key> <flags> <expiration time> <bytes>
<value>
#参数说明如下:
command set/add/replace
key key 用于查找缓存值
flags 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
expiration time 在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
bytes 在缓存中存储的字节数
value 存储的值(始终位于第二行)
#增加key,过期时间为秒,bytes为存储数据的字节数
add key flags exptime bytes
[root@tomcat-node1 ~]# vim /etc/sysconfig/memcached
[root@tomcat-node1 ~]# systemctl start memcached.service 
[root@tomcat-node1 ~]# netstat -antlupe | grep memcached
tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      977        77335      33552/memcached     
tcp6       0      0 ::1:11211               :::*                    LISTEN      977        77336      33552/memcached  

使用telnet测试

[root@tomcat-node2 ~]# yum install telnet -y
[root@tomcat-node2 ~]# telnet 172.25.254.20 11211
Trying 172.25.254.20...
Connected to 172.25.254.20.
Escape character is '^]'.
add key1 0 20 2
ll
STOREO
get key1
VALUE key1 0 2
ll
END

 tomcat的session会话保持

2台tomcat主机传输相关软件包

[root@tomcat-node1 ~]# cd jar/
[root@tomcat-node1 jar]# ls
asm-5.2.jar                memcached-session-manager-2.3.2.jar      msm-kryo-serializer-2.3.2.jar  spymemcached-2.12.3.jar
kryo-3.0.3.jar             memcached-session-manager-tc9-2.3.2.jar  objenesis-2.6.jar
kryo-serializers-0.45.jar  minlog-1.3.1.jar                         reflectasm-1.11.9.jar

将spymemcached.jar、memcached-session-manage等相关的jar文件都放到Tomcat的lib目录下

[root@tomcat-node1 jar]# cp *.jar /usr/local/tomcat/lib/
[root@tomcat-node1 jar]# cd /usr/local/tomcat/lib/
[root@tomcat-node1 lib]# ls
annotations-api.jar       jasper.jar                               servlet-api.jar          tomcat-i18n-ko.jar
asm-5.2.jar               jaspic-api.jar                           spymemcached-2.12.3.jar  tomcat-i18n-pt-BR.jar
catalina-ant.jar          jsp-api.jar                              tomcat-api.jar           tomcat-i18n-ru.jar
catalina-ha.jar           kryo-3.0.3.jar                           tomcat-coyote-ffm.jar    tomcat-i18n-zh-CN.jar
catalina.jar              kryo-serializers-0.45.jar                tomcat-coyote.jar        tomcat-jdbc.jar
catalina-ssi.jar          memcached-session-manager-2.3.2.jar      tomcat-dbcp.jar          tomcat-jni.jar
catalina-storeconfig.jar  memcached-session-manager-tc9-2.3.2.jar  tomcat-i18n-cs.jar       tomcat-util.jar
catalina-tribes.jar       minlog-1.3.1.jar                         tomcat-i18n-de.jar       tomcat-util-scan.jar
ecj-4.20.jar              msm-kryo-serializer-2.3.2.jar            tomcat-i18n-es.jar       tomcat-websocket.jar
el-api.jar                objenesis-2.6.jar                        tomcat-i18n-fr.jar       websocket-api.jar
jasper-el.jar             reflectasm-1.11.9.jar                    tomcat-i18n-ja.jar

修改tomcat配置 ,其可内容参考官方网址:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration

[root@tomcat-node1 lib]# vim /usr/local/tomcat/conf/context.xml
[root@tomcat-node1 lib]# systemctl restart tomcat
[root@tomcat-node2 lib]# vim /usr/local/tomcat/conf/context.xml
[root@tomcat-node2 lib]# systemctl restart tomcat

 修改nginx配置

[root@nginx-node1 ~]#  vim /usr/local/nginx/conf.d/vhosts.conf

 

 测试:

关闭172.25.254.10 的tomcat服务

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

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

相关文章

入门Java编程的知识点—>面向对象(day07)

重点掌握什么是面向对象&#xff1f;重点掌握面向对象封装的意义&#xff1f;重点掌握类的封装,创建对象,访问对象&#xff1f; 面向对象 OO&#xff1a;&#xff08;Object Oriented&#xff09;面向对象 面向对象是一种编程思想,遵循面向对象设计原则可以写出高质量代码, …

nacos配置发布和服务订阅

nacos安装这里就不说了&#xff0c;官网看即可&#xff0c;以下为单机nacos &#xff08;一&#xff09;nacos客户端 &#xff08;1&#xff09; 配置管理配置列表 点击编辑页面如下&#xff1a; 点击详情页面如下&#xff1a; &#xff08;2&#xff09; 服务管理服务列…

Excel十进制度转为度分秒格式

最近写报告经常需要整理坐标表。 不同的情况往往需要不同的手段来实现。 其中一种情况是&#xff0c;ArcMap以单位度计算坐标字段&#xff0c;然后利用‘表转Excel’工具导出为xls表格。 通过这种方式导出的经纬度坐标是十进制度&#xff0c;比如37.702398675533。 而我需要…

汽车租赁|基于SprinBoot+vue的汽车租赁系统(源码+数据库+文档)

汽车租赁系统 目录 基于SprinBootvue的汽车租赁系统 一、前言 二、系统设计 三、系统功能设计 5.1系统功能模块 5.2管理员功能模块 5.3业务员功能模块 5.4用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&…

探索Git:分布式版本控制系统的力量(二)

&#x1f600;前言 本篇博文是关于分布式版本控制系统Git的一些基本介绍&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我…

Wemos D1 Mini pro/ nodeMcu / ESP8266 驱动 240*320 ILI9341 SPI液晶屏

Wemos D1 Mini / nodeMcu / ESP8266 驱动 240*320 ILI9341 SPI液晶屏 效果展示器件硬件连接引脚连接原理图引脚对照表 安装TFT_eSPI库TFT_eSPI库中User_Setup.h文件的参数修改User_Setup.h文件的位置User_Setup.h文件中需要修改的参数User_Setup.h完成源码 例程 缘起&#xff1…

Python酷库之旅-第三方库Pandas(100)

目录 一、用法精讲 431、pandas.DataFrame.items方法 431-1、语法 431-2、参数 431-3、功能 431-4、返回值 431-5、说明 431-6、用法 431-6-1、数据准备 431-6-2、代码示例 431-6-3、结果输出 432、pandas.DataFrame.keys方法 432-1、语法 432-2、参数 432-3、功…

【BES2500x系列 -- RTX5操作系统】Battery模块 -- 邮箱线程诞生的第一视角 -- osThreadDef --(十三)

&#x1f48c; 所属专栏&#xff1a;【BES2500x系列】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f49…

如何用短链接提高内容传播效率?C1N短网址的秘密!

咱都知道&#xff0c;在互联网时代&#xff0c;链接已经成为我们分享内容的标配。但有时候那些长得离谱又复杂的链接&#xff0c;实在是让人头疼。不仅容易出错&#xff0c;还大大降低了内容传播的效率。于是&#xff0c;短链接应运而生&#xff0c;成为现代数字营销中不可或缺…

免费分享一套Java协同过滤推荐算法的SpringBoot+Vue(图书)商城系统【论文+源码+SQL脚本】,帅呆了~~

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的Java协同过滤推荐算法的SpringBootVue(图书)商城系统&#xff0c;分享下哈。 项目视频演示 【免费】Java协同过滤推荐算法的SpringBootVue(图书)商城系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 伴随着…

【精选】数码论坛系统设计与实现(计算机毕业设计福利,计算机毕业设计参考,JAVA毕业设计)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

环境搭建 | Windows中MinGW-w64及GCC的下载、安装与配置

本文将介绍 GNU、GCC、MinGW 等相关概念&#xff0c;并着重介绍 Windows 中 MinGW-w64 的下载、安装与配置。MinGW-w64 的安装方式有两种&#xff1a;安装程序安装、压缩包安装&#xff0c;压缩包既可在 SourceForge 上下载&#xff0c;也可在 GitHub 上下载。 前导概念 GNU …

模型 ORID思维

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。"结构化思维&#xff0c;深入探讨&#xff0c;明智决策。 1 ORID思维的应用 1.1 提升员工绩效的ORID模型应用 某企业为了提高员工的工作效率和满意度&#xff0c;采用ORID模型进行绩效面谈&…

【Kubernetes】Containerd-得到好物

目录 一、前言二、好物分享1. nerdctl2. buildkit3. k3s4. k9s5. 镜像加速器 三、物料包下载四、总结 一、前言 小伙伴们好久不见鸭&#xff0c;今天小涛分享一些 Containerd容器运维 非常Amazing的工具&#xff0c;老铁们看看操练起来~ 附&#xff1a;最新可用容器镜像加速链…

150mw绿光激光模组主要用途

在现代科技高速发展的今天&#xff0c;激光技术作为一种高精度、高稳定性的技术手段&#xff0c;已经在众多领域展现出了其独特的优势。其中&#xff0c;150mw绿光激光模组作为激光技术的重要分支&#xff0c;以其卓越的性能和广泛的应用前景&#xff0c;备受瞩目。接下来给大家…

MES系统不良品溯源管理:提升产品质量的利器

一、MES系统与不良品溯源管理 MES系统是一种实现车间生产智能化、信息化的管理系统&#xff0c;通过对生产现场的数据采集、处理和分析&#xff0c;为企业提供实时、准确的生产信息。不良品溯源管理是指在生产过程中&#xff0c;对不良品产生的原因进行追踪和分析&#xff0c;…

一文了解内网穿透以及内网穿透工具 Sunny-Ngrok 的使用指南

文章目录 概述简介内网穿透的原理内网穿透的方法内网穿透的应用场景内网穿透的安全考量 Sunny-Ngrok 内网穿透工具简介使用步骤 主要参考 概述 简介 在现代网络架构中&#xff0c;内网穿透&#xff08;也称为 NAT 穿透或端口转发&#xff09;是一项至关重要的技术&#xff0c…

Python | Leetcode Python题解之第375题猜数字大小II

题目&#xff1a; 题解&#xff1a; class Solution:def getMoneyAmount(self, n: int) -> int:f [[0] * (n 1) for _ in range(n 1)]for i in range(n - 1, 0, -1):for j in range(i 1, n 1):f[i][j] j f[i][j - 1]for k in range (i, j):f[i][j] min(f[i][j], k …

探索 AI Agents:从理念到 Python 实际运用

作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话: 本文主要介绍了如何利用人工智能代理(AI Agents)从概念到Python中的实际应用,以及如何构建一个内容创作工作流程,通过多个代理协作完成从视频分析到博客撰写的复杂任务,完成后也许这会改变你对人…

【STM32】驱动OLED屏

其实我没买OLED屏哈哈哈&#xff0c;这个只是学习了&#xff0c;没机会实践。 大部分图片来源&#xff1a;正点原子HAL库课程 专栏目录&#xff1a;记录自己的嵌入式学习之路-CSDN博客 目录 1 显示原理 2 读写方式&#xff1a;8080并口 2.1 支持的指令类型 2.2 …