Python CGI编程

文章目录

  • 什么是CGI
  • CGI架构
  • Web服务器支持及配置
  • CGI程序示例
  • CGI环境变量
  • GET和POST方法
    • GET方法
    • POST方法
    • 区别
    • 注意事项
  • 使用POST方法传递数据
    • 1. 创建HTML表单
    • 2. 编写CGI脚本
    • 3. 配置服务器
    • 4. 提交表单
    • 5. 服务器处理请求
    • 注意事项
  • 通过CGI程序传递checkbox数据
    • 创建HTML表单
    • 编写CGI脚本
    • 注意事项
  • 通过CGI程序传递Radio数据
    • 创建HTML表单
    • 编写CGI脚本
    • 注意事项
  • 通过CGI程序传递 Textarea 数据
    • 创建HTML表单
    • 编写CGI脚本
    • 注意事项
  • 通过CGI程序传递下拉数据
    • 创建HTML表单
    • 编写CGI脚本
    • 注意事项

什么是CGI

CGI是“计算机生成图像”(Computer-Generated Imagery)的缩写,它指的是通过计算机软件创造的静态或动态的图像。这种技术广泛应用于电影、动画、视频游戏以及模拟器等多个领域。通过CGI,制作人员能够创造出从现实世界拍摄无法实现的场景和效果,或者重现那些过于危险、成本过高或无法实现的场景。
在电影产业中,CGI技术使得电影制作人大大扩展了他们的创意界限,从《侏罗纪公园》中的恐龙到《阿凡达》中的外星世界,CGI技术为观众带来了前所未有的视觉体验。在动画制作中,从《玩具总动员》到《冰雪奇缘》,CGI让动画角色和世界变得更加生动和逼真。
除了娱乐产业,CGI在科学研究、医学、建筑和军事模拟等领域也有着重要的应用。例如,科学家可以使用CGI来可视化复杂的分子结构,医生可以模拟手术过程,建筑师可以创建建筑物的三维模型,而军事训练可以利用CGI进行模拟战斗场景的演练。
随着技术的发展,CGI技术也在不断进步,包括更加逼真的渲染技术、更加高效的动画制作流程以及更加智能的图像处理算法等。

CGI架构

在这里插入图片描述

Web服务器支持及配置

Web服务器及其支持与配置的简要概述:

  • Apache与mod_wsgi:
    • Apache是世界上最流行的Web服务器软件之一。
    • mod_wsgi是一个Apache模块,它允许Apache服务器运行Python WSGI应用程序。
    • 配置mod_wsgi通常涉及到编辑Apache的配置文件(httpd.conf或apache2.conf),添加对Python代码的引用,并确保mod_wsgi模块已加载。
  • Nginx与uWSGI:
    • Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3代理服务器。
    • uWSGI是一个实现了WSGI协议的Web服务器,它通常与Nginx配合使用。
    • 配置Nginx涉及编辑其配置文件(通常是nginx.conf),设置代理传递到uWSGI,而uWSGI需要配置来运行Python应用程序。
  • Gunicorn:
    • Gunicorn是一个用Python编写的WSGI HTTP服务器,通常用于运行生产中的Web应用程序。
    • 它被设计成易于配置和部署,通常与Nginx配合使用,Nginx作为反向代理服务器。
    • Gunicorn的配置通常通过命令行参数或配置文件完成。
  • Django内置服务器:
    • Django是一个高级Python Web框架,它内置了一个轻量级的开发服务器。
    • 这个服务器不适合生产环境,因为它设计为在开发过程中提供快速反馈。
    • 启动Django内置服务器通常很简单,只需运行python manage.py runserver命令。
  • Flask内置服务器:
    • Flask是一个轻量级的Web应用框架,它也包含一个简单的内置服务器。
    • 与Django一样,这个服务器仅适用于开发环境。
    • 运行Flask应用程序通常涉及到运行应用程序的Python脚本。
      对于生产环境,建议使用Apache、Nginx和uWSGI或Gunicorn这样的成熟服务器,因为它们提供了更好的性能、安全性和稳定性。开发环境中,Django和Flask的内置服务器就足够了,因为它们易于使用且可以快速启动。
      在配置任何Web服务器时,都需要考虑以下几个方面:
  • 安全设置,如使用SSL/TLS加密。
  • 性能调优,如负载均衡和缓存策略。
  • 稳定性,如设置适当的进程和线程数。
  • 日志记录,以便于监控和故障排查。

请根据您的具体需求和运行环境选择合适的Web服务器和配置方式。

CGI程序示例

首先,确保你的Web服务器(如Apache)已经配置好了CGI支持,并且知道CGI脚本的存放位置。
创建一个名为hello.py的文件,并输入以下内容:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import cgitb
cgitb.enable()  # This line enables CGI error reporting

print("Content-Type: text/html")  # HTTP header to specify content type
print()  # Blank line required, end of headers

print("<html>")
print("<head>")
print("<title>Hello, World!</title>")
print("</head>")
print("<body>")
print("<h1>Hello, World!</h1>")
print("</body>")
print("</html>")

确保文件的第一行指明了Python解释器的路径,这通常是通过#!/usr/bin/env python3来实现的。cgitb模块用于在浏览器中显示错误信息,这在调试时非常有用。
将hello.py文件保存到你的Web服务器的CGI-bin目录下,或者任何其他配置为运行CGI脚本的目录。
确保hello.py文件有执行权限,你可以通过运行以下命令来赋予执行权限:

chmod +x hello.py

现在,如果你的Web服务器配置正确,你可以在浏览器中访问CGI脚本的URL(例如,http://yourserver.com/cgi-bin/hello.py)来运行这个脚本。你应该会看到一条消息“Hello, World!”显示在浏览器中。
请注意,CGI脚本的性能通常不是很高,对于高流量的网站,可能需要考虑其他更高效的解决方案,如WSGI服务器(如uWSGI或Gunicorn)或者使用异步框架(如aiohttp)。此外,现代Web开发通常使用框架(如Django或Flask),这些框架内置了更好的HTTP处理机制,而不是直接使用CGI。

CGI环境变量

CGI(Common Gateway Interface)环境变量是服务器传递给CGI脚本的信息集合,它们包含了有关请求、服务器和客户端的详细信息。以下是一些常见的CGI环境变量:

  • CONTENT_TYPE:请求主体的MIME类型,例如application/x-www-form-urlencoded。
  • CONTENT_LENGTH:请求主体的长度(以字节为单位)。
  • HTTP_:包含客户端发送的HTTP请求头信息,其中代表具体的头名称,例如HTTP_USER_AGENT、HTTP_REFERER。
  • QUERY_STRING:URL中的查询字符串(问号?之后的部分)。
  • REMOTE_ADDR:客户端的IP地址。
  • REMOTE_HOST:客户端的完整主机名(如果服务器配置了名称解析)。
  • REQUEST_METHOD:HTTP请求方法(如GET、POST等)。
  • SCRIPT_NAME:CGI脚本的URL路径。
  • SERVER_NAME:服务器的域名。
  • SERVER_PORT:服务器正在监听的端口号。
  • SERVER_PROTOCOL:客户端使用的协议版本(如HTTP/1.0或HTTP/1.1)。
  • SERVER_SOFTWARE:服务器软件的名称和版本。
  • PATH_INFO:URL中的额外路径信息,跟在CGI脚本名之后。
  • PATH_TRANSLATED:PATH_INFO经过路径映射转换后的结果。
  • AUTH_TYPE:身份验证的类型(如果使用了身份验证)。
  • REMOTE_USER:经过身份验证的用户名(如果使用了身份验证)。

这些环境变量为CGI脚本提供了执行其任务所需的信息。例如,一个CGI脚本可能会检查REQUEST_METHOD来确定如何处理输入数据,或者使用CONTENT_TYPE来解析上传的文件。
CGI脚本可以通过查询环境变量来获取这些信息。在Python中,可以使用os.environ字典来访问这些环境变量,例如:

import os

request_method = os.environ.get('REQUEST_METHOD')
content_type = os.environ.get('CONTENT_TYPE')

了解和使用这些环境变量对于编写能够正确响应Web请求的CGI脚本至关重要。

GET和POST方法

在Web开发中,GET和POST方法是HTTP协议定义的两种基本请求方法,用于客户端和服务器之间的数据传输。在Python中,CGI脚本通常处理这两种方法的请求。以下是GET和POST方法的简要说明以及如何在Python中处理它们:

GET方法

GET方法通常用于请求服务器上的数据。当使用GET方法时,请求的数据会附加在URL之后,以查询字符串的形式发送。例如:

GET /test.cgi?name=John&age=30 HTTP/1.1
Host: example.com

在Python中,可以通过os.environ获取查询字符串:

import os

query_string = os.environ.get('QUERY_STRING', '')

然后,你可以解析查询字符串来获取参数:

import urllib.parse

params = urllib.parse.parse_qs(query_string)
name = params.get('name', [''])[0]
age = params.get('age', [''])[0]

POST方法

POST方法通常用于向服务器发送数据,尤其是当数据量较大或者包含敏感信息时。POST请求的数据不会出现在URL中,而是包含在请求的正文中。例如,一个表单提交可能会使用POST方法。
在Python中,处理POST请求需要读取标准输入(通常是sys.stdin),因为数据会从那里读取:

import sys
import cgi

form = cgi.FieldStorage()
name = form.getvalue('name', '')
age = form.getvalue('age', '')

区别

  • GET请求的数据在URL中可见,因此它不适合传输敏感信息。
  • GET请求有长度限制,而POST请求可以传输更多的数据。
  • GET请求可以被缓存、被保存在浏览器历史记录中,而POST请求通常不会被缓存。
  • GET请求应该用于幂等的操作,即多次执行同一请求不会产生不同的结果。POST请求通常用于非幂等的操作,如创建或更新资源。

注意事项

  • 在处理用户输入时,应始终对数据进行验证和清理,以防止注入攻击和其他安全风险。
  • 使用CGI时,服务器可能会限制POST请求的正文大小,这需要在服务器配置中进行调整。

在实际应用中,CGI脚本的使用已经逐渐被更现代的Web框架和服务器端技术所取代,如WSGI、Django、Flask等,这些技术提供了更高效和安全的处理HTTP请求的方法。

使用POST方法传递数据

使用POST方法传递数据通常涉及创建一个HTML表单,用户填写表单并提交,然后服务器上的脚本处理提交的数据。以下是使用POST方法传递数据的基本步骤:

1. 创建HTML表单

创建一个包含标签的HTML页面,设置method属性为"POST",并指定action属性为处理数据的脚本的URL。

<form action="your_script.cgi" method="POST">
  <label for="name">Name:</label>
  <input type="text" name="name" id="name">
  <label for="age">Age:</label>
  <input type="text" name="age" id="age">
  <input type="submit" value="Submit">
</form>

2. 编写CGI脚本

在服务器上编写一个CGI脚本来处理POST请求。这个脚本将读取POST过来的数据并做出相应的处理。

#!/usr/bin/env python3
import cgi
import cgitb
cgitb.enable()  # This line enables CGI error reporting

form = cgi.FieldStorage()

name = form.getvalue('name', '')
age = form.getvalue('age', '')

print("Content-Type: text/html")  # HTTP header to specify content type
print()  # Blank line required, end of headers

print("<html>")
print("<head>")
print("<title>POST Result</title>")
print("</head>")
print("<body>")
print("<p>Name: {}</p>".format(name))
print("<p>Age: {}</p>".format(age))
print("</body>")
print("</html>")

3. 配置服务器

确保你的Web服务器(如Apache)已经配置好了CGI支持,并且知道CGI脚本的存放位置。

4. 提交表单

用户在浏览器中填写表单并点击提交按钮后,表单数据将以POST请求的方式发送到服务器。

5. 服务器处理请求

服务器接收到POST请求后,会执行CGI脚本。脚本从cgi.FieldStorage()对象中获取表单数据,并生成响应。

注意事项

  • 在实际部署时,确保CGI脚本的权限设置正确,以便Web服务器可以执行它。
  • 对于生产环境,CGI可能不是最佳的选择,因为它的性能和安全性问题。可以考虑使用更现代的Web框架,如Django或Flask。
  • 处理用户输入时,始终要验证和清理数据,以防止SQL注入、跨站脚本(XSS)等安全风险。

通过CGI程序传递checkbox数据

在HTML表单中,复选框(checkbox)允许用户从多个选项中选择一个或多个值。当表单通过CGI程序提交时,复选框的数据将以名称-值对的形式发送。如果复选框没有被选中,则不会发送任何数据。
以下是如何在HTML表单中创建复选框以及如何在CGI程序中接收这些数据的示例。

创建HTML表单

<form action="your_script.cgi" method="POST">
  <input type="checkbox" name="option1" value="Value 1"> Option 1
  <input type="checkbox" name="option2" value="Value 2"> Option 2
  <input type="checkbox" name="option3" value="Value 3"> Option 3
  <input type="submit" value="Submit">
</form>

编写CGI脚本

在Python中,你可以使用cgi.FieldStorage()类来解析表单数据。对于复选框,你需要检查每个复选框的名称是否存在于FieldStorage对象中。

#!/usr/bin/env python3
import cgi
import cgitb
cgitb.enable()  # This line enables CGI error reporting

form = cgi.FieldStorage()

# 检查复选框是否被选中
option1 = form.getvalue('option1')
option2 = form.getvalue('option2')
option3 = form.getvalue('option3')

print("Content-Type: text/html")  # HTTP header to specify content type
print()  # Blank line required, end of headers

print("<html>")
print("<head>")
print("<title>Checkbox Result</title>")
print("</head>")
print("<body>")
print("<p>Option 1: {}</p>".format(option1 if option1 else 'Not selected'))
print("<p>Option 2: {}</p>".format(option2 if option2 else 'Not selected'))
print("<p>Option 3: {}</p>".format(option3 if option3 else 'Not selected'))
print("</body>")
print("</html>")

我们使用form.getvalue(‘optionX’)来获取每个复选框的值,其中’optionX’是复选框的名称。如果复选框没有被选中,getvalue()将返回None,我们通过条件表达式来处理这种情况。

注意事项

  • 如果多个同名复选框被选中,它们将以列表的形式出现在FieldStorage对象中。例如,如果有多个option1复选框被选中,你需要使用form.getlist(‘option1’)来获取它们的值列表。
  • 在处理表单数据时,始终要验证和清理数据,以防止注入攻击和其他安全风险。
  • 对于生产环境,CGI可能不是最佳的选择,因为它的性能和安全性问题。可以考虑使用更现代的Web框架,如Django或Flask。

通过CGI程序传递Radio数据

通过CGI程序传递单选按钮(radio button)数据与传递复选框数据类似。单选按钮允许用户从一组选项中选择一个值。在HTML表单中,所有具有相同名称的单选按钮都属于同一个组。
以下是如何在HTML表单中创建单选按钮以及如何在CGI程序中接收这些数据的示例。

创建HTML表单

<form action="your_script.cgi" method="POST">
  <input type="radio" name="choice" value="Option A"> Option A
  <input type="radio" name="choice" value="Option B"> Option B
  <input type="radio" name="choice" value="Option C"> Option C
  <input type="submit" value="Submit">
</form>

在这个表单中,所有单选按钮都具有相同的名称"choice",但它们有不同的value属性。

编写CGI脚本

在Python中,你可以使用cgi.FieldStorage()类来解析表单数据。由于单选按钮属于同一个组,你只需要检查它们的名称即可获取选中的值。

#!/usr/bin/env python3
import cgi
import cgitb
cgitb.enable()  # This line enables CGI error reporting

form = cgi.FieldStorage()

# 获取选中的单选按钮的值
choice = form.getvalue('choice')

print("Content-Type: text/html")  # HTTP header to specify content type
print()  # Blank line required, end of headers

print("<html>")
print("<head>")
print("<title>Radio Button Result</title>")
print("</head>")
print("<body>")
print("<p>Chosen Option: {}</p>".format(choice))
print("</body>")
print("</html>")

我们使用form.getvalue(‘choice’)来获取选中单选按钮的值。如果单选按钮被选中,getvalue()将返回选中项的value属性值。

注意事项

  • 如果单选按钮被选中,它们的值将以字符串的形式返回。
  • 在处理表单数据时,始终要验证和清理数据,以防止注入攻击和其他安全风险。
  • 对于生产环境,CGI可能不是最佳的选择,因为它的性能和安全性问题。可以考虑使用更现代的Web框架,如Django或Flask。

通过CGI程序传递 Textarea 数据

在HTML中,元素用于创建多行文本输入框,允许用户输入较长的文本。当用户通过表单提交数据时,中的文本会被发送到服务器。在CGI程序中处理数据的方法与处理其他表单元素(如单选按钮、复选框或输入框)类似。
以下是如何在HTML表单中创建元素,以及如何在CGI程序中接收和处理这些数据的示例。

创建HTML表单

<form action="your_script.cgi" method="POST">
  <label for="description">Description:</label>
  <textarea id="description" name="description" rows="4" cols="50">
    Enter your description here.
  </textarea>
  <input type="submit" value="Submit">
</form>

编写CGI脚本

在Python中,你可以使用cgi.FieldStorage()类来解析表单数据。然后,你可以使用getvalue()方法来获取元素的值。

#!/usr/bin/env python3
import cgi
import cgitb
cgitb.enable()  # This line enables CGI error reporting

form = cgi.FieldStorage()

# 获取<textarea>元素的值
description = form.getvalue('description', '')

print("Content-Type: text/html")  # HTTP header to specify content type
print()  # Blank line required, end of headers

print("<html>")
print("<head>")
print("<title>Textarea Result</title>")
print("</head>")
print("<body>")
print("<p>Description: {}</p>".format(description))
print("</body>")
print("</html>")

我们使用form.getvalue(‘description’)来获取元素的值。如果元素没有被填写,getvalue()将返回一个空字符串。

注意事项

  • 元素的值作为字符串发送,因此CGI脚本应该将它们作为字符串处理。
  • 在处理用户输入时,应始终验证和清理数据,以防止注入攻击和其他安全风险。
  • 对于生产环境,CGI可能不是最佳选择,因为它的性能和安全性问题。可以考虑使用更现代的Web框架,如Django或Flask。

通过CGI程序传递下拉数据

通过CGI程序传递下拉菜单(dropdown menu)数据与传递其他表单元素(如单选按钮、复选框或文本域)类似。在HTML中,下拉菜单由元素实现,用户可以从提供的选项中选择一个值。当表单通过CGI程序提交时,下拉菜单的数据将以名称-值对的形式发送。
以下是如何在HTML表单中创建下拉菜单以及如何在CGI程序中接收这些数据的示例。

创建HTML表单

<form action="your_script.cgi" method="POST">
  <label for="select_option">Choose an option:</label>
  <select id="select_option" name="select_option">
    <option value="Option A">Option A</option>
    <option value="Option B">Option B</option>
    <option value="Option C">Option C</option>
  </select>
  <input type="submit" value="Submit">
</form>

元素的name属性被设置为"select_option",这意味着当表单被提交时,所选选项的value属性值将被发送到名为select_option的CGI变量。

编写CGI脚本

在Python中,你可以使用cgi.FieldStorage()类来解析表单数据。然后,你可以使用getvalue()方法来获取下拉菜单的值。

#!/usr/bin/env python3
import cgi
import cgitb
cgitb.enable()  # This line enables CGI error reporting

form = cgi.FieldStorage()

# 获取下拉菜单的值
select_option = form.getvalue('select_option')

print("Content-Type: text/html")  # HTTP header to specify content type
print()  # Blank line required, end of headers

print("<html>")
print("<head>")
print("<title>Dropdown Result</title>")
print("</head>")
print("<body>")
print("<p>Selected Option: {}</p>".format(select_option))
print("</body>")
print("</html>")

我们使用form.getvalue(‘select_option’)来获取下拉菜单的值。如果下拉菜单被选中,getvalue()将返回选中项的value属性值。

注意事项

  • 如果下拉菜单中的某个选项被选中,它的value属性值将被发送到服务器。
  • 在处理表单数据时,始终要验证和清理数据,以防止注入攻击和其他安全风险。
  • 对于生产环境,CGI可能不是最佳选择,因为它的性能和安全性问题。可以考虑使用更现代的Web框架,如Django或Flask。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EMO: Emote Portrait Alive - 阿里HumanAIGC

EMO: Emote Portrait Alive - 阿里HumanAIGC 最近这一个星期&#xff0c;也就是2月28日的时候&#xff0c;阿里巴巴的HumanAIGC团队发布了一款全新的生成式AI模型EMO&#xff08;Emote Portrait Alive&#xff09;。EMO仅需一张人物肖像照片和音频&#xff0c;就可以让照片中的…

抖音视频评论采集工具|短视频批量下载软件

《抖音视频评论采集工具——解放双手的智能助手》 在数字化时代&#xff0c;抖音视频已成为人们获取信息、娱乐放松的重要来源之一。针对抖音视频评论的采集需求&#xff0c;我们推出了一款功能强大的软件&#xff0c;让您轻松实现评论批量提取&#xff0c;QQ:290615413提高工作…

mirthConnect忽略HTTPS SSL验证

mirthConnect SSL忽略验证 1、下载https网站证书 点击不安全---->证书无效 2、查看mirth 秘钥库口令 在mirthConnect 的conf目录下面keystore.storepass 3、导入证书到本地 在jdk的bin目录下面执行 keytool -importcert -file "下载的网站证书路径" -keysto…

win11修改网络算法为BBR2_提升网络环境质量

Win11 BBR2 是Google开发的一种高效的网络拥塞控制算法&#xff0c;玩 Linux 的朋友应该对它还有锐速不陌生。相比Windows默认使用的 CUBIC 算法&#xff0c;BBR2 在网络吞吐量、延迟、全局性能等方面都有一定优势。 如果你日常网络经常丢包或者高延迟可以尝试切换为BBR2算法。…

基于SpringBoot的在线拍卖系统(附项目源码+论文)

摘要 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单管理、留言板管理、系统管理&#xff0c;用户&#xff1b;首页、个人中心、历史竞拍管理、竞拍订单管理、留言板管理&#xff0…

Nucleic Acids Research | scATAC-seq+CUTTag探究关键转录因子对视网膜细胞分化的调控作用

在中枢神经系统发育过程中&#xff0c;多能神经祖细胞如何产生不同的神经细胞类型仍然知之甚少。最近的scRNA-seq研究已经描绘了包括神经视网膜在内的许多神经系统中单个神经细胞类型的发育轨迹。进一步了解神经细胞多样性的形成需要了解表观遗传景观如何沿着个体细胞谱系变化以…

智慧草莓基地:Java与SpringBoot的技术革新

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

EthSign联合创始人 POTTER LI 确认出席Hack .Summit() 香港区块链开发者大会!

thSign联合创始人 POTTER LI确认将出席由 Hack VC 主办&#xff0c;并由 AltLayer 和 Berachain 联合主办&#xff0c;与 SNZ 和数码港合作&#xff0c;由 Techub News 承办的Hack.Summit() 2024区块链开发者盛会。 Potter Li&#xff0c;南加州大学应有数学系&#xff0c;南加…

数字化转型导师坚鹏:金融机构数字化转型情况、政策及法规解读

金融机构数字化转型总体情况、政策及法规解读 课程背景&#xff1a; 很多学员存在以下问题&#xff1a; 不知道金融机构数字化转型总体情况&#xff1f; 不清楚金融机构数字化转型相关政策&#xff1f; 不知道金融机构数字化转型相关法规&#xff1f; 课程特色&#xf…

人工智能_大模型013_AIGC生成式模型的增强检索_RAG知识补充检索_补充私域和实时场景知识_关键字检索增强---人工智能工作笔记0149

什么是RAG,RAG的意思就是,如果一套生成式AIGC大模型,你昨天训练了以后,那么今天的知识,还没有给他进行训练,那么回答的时候,他就会遗漏今天的知识,那么我们就可以通过检索的手段,把今天的知识,检索出来,然后补充道prompt中,给这个大模型.让他参考,这样就包含了今天的知识相当于…

【Java EE初阶二十八】简单的博客系统

1. 博客系统的基本情况 1.1 四个页面 1.博客列表页&#xff1a;显示出当前网站上都有哪些博客 2.博客详情页&#xff1a;点击列表上的某个博客,就能进入对应详情页,(显示出博客的具体内容) 3.博客编辑页&#xff1a;让用户编写博客内容,并且发送到服务器 4. 博客系统登录页 总…

Eclipse也可以轻松创建JSP动态Web项目 绿色、免费、神器、就是好用一大截!

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享博主 &#x1f40b; 希望大家多多支持一下, 我们一起学习和进步&#xff01;&#x1f604; &#x1f3c5; 如果文章对你有帮助的话&#xff0c;欢迎评论 &#x1f4ac;点赞&a…

STM32CubeMX PID差速循迹小车

在之前TB6612驱动中&#xff0c;主要实现了固定速度下小车的循迹&#xff0c;在车身偏转使用默认的速度进行纠偏&#xff0c;使车身恢复正常状态。接线图和之前TB6612一样STM32Cubemx TB6612直流电机驱动-CSDN博客。 今天要做的是&#xff0c;两路循迹判断车身偏的情况下&…

好书推荐 《Excel函数与公式应用大全for Excel 365 Excel 2021》

一.基本介绍 1.什么是 Excel? Excel 是微软公司开发的一款电子表格软件&#xff0c;是 Microsoft Office 套件的一部分。它被广泛用于数据处理、分析、可视化和管理等方面。Excel 提供了丰富的功能&#xff0c;使用户能够创建、编辑、存储和分享各种类型的数据表格。 2.Exc…

C++——String(1)

目录 1. 为什么学习string类&#xff1f; 1.1 C语言中的字符串 1.2 相关题目 2. 标准库中的string类 2.1 string类&#xff08;了解一下&#xff09; 2.2 string类的常用接口说明 1. string类对象的常见构造 2. string类对象的容量操作 3. string类对象的访问及遍历操作…

llm llama GPU 内存/显存计算

Calculating GPU memory for serving LLMs | Substratus.AI

Deeplearning4j【基础 01】初识Java深度学习框架DL4J

初识Java深度学习框架DL4J 1.起因2.简介3.组件3.1 Deeplearning4j/ScalNet3.1.1 Deeplearning4jf&#xff08;Java&#xff09;3.1.2 ScalNet&#xff08;Scala&#xff09; 3.2 ND4J/LibND4J3.3 SameDiff3.4 DataVec3.5 Arbiter3.6 RL4J 4.总结 内容来自网络&#xff0c;基于官…

(libusb) usb口自动刷新

文章目录 libusb自动刷新程序Code目录结构Code项目文件usb包code包 效果描述重置reset热拔插使用 END libusb 在操作USB相关内容时&#xff0c;有一个比较著名的库就是libusb。 官方网址&#xff1a;libusb 下载&#xff1a; 下载源码官方编好的库github&#xff1a;Release…

招聘人才小程序源码系统:多城市招聘平台+招聘会+职场咨询 带完整的搭建教程以及安装代码包

移动互联网的飞速发展&#xff0c;线上招聘已成为企业和求职者之间的重要桥梁。为了满足多城市、多行业、多岗位的招聘需求&#xff0c;以及提供一站式的求职服务&#xff0c;小编给大家分享一款“招聘人才小程序源码系统”。该系统不仅整合了多城市的招聘平台资源&#xff0c;…

C++:函数模板整理

函数模板: 找到函数相同的实现思路&#xff0c;区别于函数的参数类型。 使用函数模板使得函数可容纳不同类型的参数实现函数功能&#xff0c;而不是当类型不同时便编译大量类型不同的函数&#xff0c;产生大量重复代码和内存占用 函数模板格式&#xff1a; template<typ…