【软件基础知识】什么是 API,详细解读

news2024/11/23 11:33:10

想象一下,你正在使用智能手机上的天气应用。你打开应用,瞬间就能看到实时天气、未来预报,甚至是空气质量指数。但你有没有想过,这些数据是如何神奇地出现在你的屏幕上的?答案就在三个字母中:API。

API,全称Application Programming Interface(应用程序编程接口),是现代软件世界的无形英雄。它就像是数字世界中的万能翻译官,让不同的软件系统能够无缝对话和协作。在这个日益互联的世界里,API的重要性与日俱增。据统计,2023年全球API调用量已突破万亿级,预计到2025年将增长至10万亿次。

本文将带你深入了解API的世界,揭示它如何在幕后运作,为我们的数字生活提供动力。无论你是初学者还是经验丰富的开发者,这篇文章都将为你打开API的新视角。

目录

    • 什么是API?
      • API的核心概念
      • API的重要性
    • API的工作原理
      • API工作流程
      • 示例: 使用天气API
    • API的类型
      • 1. Web API
      • 2. 库和框架API
      • 3. 操作系统API
      • 4. 远程过程调用(RPC) API
      • 5. WebSocket API
      • 6. 数据库API
    • RESTful API详解
      • RESTful API的关键特征
      • RESTful API设计示例
      • RESTful API实现示例
    • API的实际应用案例
      • 1. 社交媒体集成
      • 2. 支付处理
      • 3. 地图和位置服务
      • 4. 天气数据服务
      • 5. 电子商务集成
    • API的优势与挑战
      • API的优势
      • API的挑战
    • API开发最佳实践
    • API的未来趋势
    • 总结

什么是API?

API,即应用程序编程接口(Application Programming Interface),是一套预定义的规则和协议,允许不同的软件应用程序相互通信和交互。简单来说,API就像是餐厅里的服务员,它接收你的请求(订单),将请求传递给厨房(服务器),然后将结果(食物)带回给你。
image.png

API的核心概念

  1. 接口: API定义了软件组件之间交互的方式。它指定了请求和响应的格式,以及可用的操作。

  2. 抽象: API隐藏了底层实现的复杂性,提供了一个简化的接口供开发者使用。

  3. 契约: API作为客户端和服务器之间的契约,定义了它们之间交互的规则和期望。

API的重要性

在当今的数字生态系统中,API的重要性不言而喻:

  • 互操作性: API使不同的系统能够无缝集成和协作。
  • 效率: 开发者可以利用现有的API,而不是从头开始构建每个功能。
  • 创新: API开放了新的可能性,允许开发者以创新的方式组合和使用现有服务。
  • 扩展性: 企业可以通过API将其服务扩展到更广泛的用户群。

根据最新的统计数据,全球API市场规模预计将从2021年的41亿美元增长到2026年的137亿美元,复合年增长率(CAGR)为27.3%。这一增长趋势凸显了API在现代软件开发中的核心地位。[2]

API的工作原理

理解API的工作原理,可以帮助我们更好地掌握如何使用和开发API。让我们通过一个简单的例子来说明API是如何工作的。

API工作流程

  1. 客户端发起请求: 当你在天气应用中输入城市名称时,应用(客户端)会向天气API发送一个请求。

  2. API接收请求: 天气API服务器接收到这个请求。

  3. 处理请求: API服务器处理这个请求,可能包括查询数据库,进行计算等。

  4. 生成响应: 服务器生成一个包含请求数据(如天气信息)的响应。

  5. 返回响应: API将这个响应发送回客户端。

  6. 客户端处理响应: 天气应用接收到响应,并在界面上显示天气信息。
    image.png

示例: 使用天气API

让我们看一个具体的例子,使用Python代码来调用一个假设的天气API:

import requests

def get_weather(city):
    # API端点
    url = f"https://api.weatherservice.com/v1/current?city={city}"
    
    # 发送GET请求
    response = requests.get(url)
    
    # 检查响应状态
    if response.status_code == 200:
        # 解析JSON响应
        data = response.json()
        
        # 提取所需信息
        temperature = data['temperature']
        humidity = data['humidity']
        
        return f"当前{city}的温度是{temperature}°C,湿度是{humidity}%"
    else:
        return "无法获取天气信息"

# 使用API
print(get_weather("北京"))

在这个例子中:

  1. 我们定义了一个get_weather函数,它接受一个城市名作为参数。
  2. 函数构造了一个API请求URL,包含了城市名。
  3. 使用requests库发送GET请求到API。
  4. 检查响应状态,如果成功(状态码200),则解析JSON响应。
  5. 从响应中提取温度和湿度信息。
  6. 最后,返回格式化的天气信息字符串。

这个简单的例子展示了API如何允许我们的应用程序与外部服务交互,获取实时数据。

API的类型

image.png

API有多种类型,每种类型都有其特定的用途和特点。了解这些类型可以帮助开发者选择最适合其需求的API。以下是几种主要的API类型:

1. Web API

Web API是最常见的API类型,它通过HTTP协议在网络上提供服务。

  • RESTful API: 遵循REST(Representational State Transfer)架构原则,使用标准HTTP方法如GET,POST,PUT,DELETE等。
  • SOAP API: 使用XML格式交换数据,通常用于企业级应用。
  • GraphQL API: 允许客户端精确指定所需的数据,减少过度获取或不足获取的问题。

2. 库和框架API

这些API是编程语言或软件框架提供的接口,用于执行特定任务。

  • 例如: Java API, .NET Framework API

3. 操作系统API

操作系统API允许应用程序与操作系统交互,访问系统资源。

  • 例如: Windows API, POSIX

4. 远程过程调用(RPC) API

RPC API允许程序调用另一个地址空间(通常是在远程计算机上)的子程序,就像调用本地子程序一样。

  • 例如: gRPC, XML-RPC

5. WebSocket API

WebSocket API提供全双工,双向通信通道,适用于需要实时数据交换的应用。

6. 数据库API

数据库API允许应用程序与数据库管理系统交互。

  • 例如: JDBC (Java Database Connectivity), ODBC (Open Database Connectivity)

RESTful API详解

RESTful API是当今最流行的Web API类型之一。REST(Representational State Transfer)是一种软件架构风格,它定义了一组创建Web服务的约束条件和属性。让我们深入了解RESTful API的核心概念和最佳实践。

RESTful API的关键特征

  1. 无状态: 每个请求都包含处理该请求所需的所有信息,服务器不保存任何客户端状态。

  2. 客户端-服务器架构: 客户端和服务器职责分离,提高了可移植性和可扩展性。

  3. 可缓存: 响应必须隐式或显式地标记为可缓存或不可缓存。

  4. 统一接口: 使用标准的HTTP方法(GET, POST, PUT, DELETE等)进行资源操作。

  5. 分层系统: 允许架构由多个层次组成,每个层次只知道与之直接交互的层。

RESTful API设计示例

image.png

让我们设计一个简单的RESTful API来管理一个图书馆的书籍:

  1. 获取所有书籍

    • HTTP方法: GET
    • URL: /api/books
    • 响应: 返回所有书籍的列表
  2. 获取特定书籍

    • HTTP方法: GET
    • URL: /api/books/{id}
    • 响应: 返回指定ID的书籍详情
  3. 添加新书籍

    • HTTP方法: POST
    • URL: /api/books
    • 请求体: 包含新书籍的详细信息
    • 响应: 返回新创建的书籍信息
  4. 更新书籍信息

    • HTTP方法: PUT
    • URL: /api/books/{id}
    • 请求体: 包含更新后的书籍信息
    • 响应: 返回更新后的书籍信息
  5. 删除书籍

    • HTTP方法: DELETE
    • URL: /api/books/{id}
    • 响应: 返回操作状态

RESTful API实现示例

以下是使用Python和Flask框架实现上述API的简单示例:

from flask import Flask, jsonify, request

app = Flask(__name__)

# 模拟数据库
books = [
    {"id": 1, "title": "1984", "author": "George Orwell"},
    {"id": 2, "title": "To Kill a Mockingbird", "author": "Harper Lee"}
]

@app.route('/api/books', methods=['GET'])
def get_books():
    return jsonify(books)

@app.route('/api/books/<int:book_id>', methods=['GET'])
def get_book(book_id):
    book = next((book for book in books if book['id'] == book_id), None)
    if book:
        return jsonify(book)
    return jsonify({"error": "Book not found"}), 404

@app.route('/api/books', methods=['POST'])
def add_book():
    new_book = request.json
    new_book['id'] = max(book['id'] for book in books) + 1
    books.append(new_book)
    return jsonify(new_book), 201

@app.route('/api/books/<int:book_id>', methods=['PUT'])
def update_book(book_id):
    book = next((book for book in books if book['id'] == book_id), None)
    if book:
        book.update(request.json)
        return jsonify(book)
    return jsonify({"error": "Book not found"}), 404

@app.route('/api/books/<int:book_id>', methods=['DELETE'])
def delete_book(book_id):
    global books
    books = [book for book in books if book['id'] != book_id]
    return '', 204

if __name__ == '__main__':
    app.run(debug=True)

这个例子展示了如何使用Flask创建一个简单的RESTful API。它实现了基本的CRUD(创建、读取、更新、删除)操作,并遵循了RESTful设计原则。

API的实际应用案例

API在现代软件开发中无处不在,它们在各个行业和应用场景中发挥着关键作用。让我们探讨一些API的实际应用案例,以更好地理解它们的重要性和多样性。

1. 社交媒体集成

案例: Facebook Graph API

Facebook提供了Graph API,允许开发者访问Facebook的社交图谱数据。这使得第三方应用可以实现"使用Facebook登录"功能,或者在用户授权的情况下访问和发布内容。

import requests

def get_user_posts(access_token):
    url = f"https://graph.facebook.com/v12.0/me/posts?access_token={access_token}"
    response = requests.get(url)
    if response.status_code == 200:
        return response.json()['data']
    else:
        return None

# 使用示例
posts = get_user_posts('YOUR_ACCESS_TOKEN')
for post in posts:
    print(post['message'])

2. 支付处理

案例: Stripe API

Stripe提供了强大的支付处理API,使得开发者可以轻松地在应用中集成支付功能。

import stripe

stripe.api_key = "YOUR_STRIPE_SECRET_KEY"

def create_payment(amount, currency, source):
    try:
        charge = stripe.Charge.create(
            amount=amount,
            currency=currency,
            source=source,
            description="Example charge"
        )
        return charge
    except stripe.error.StripeError as e:
        return str(e)

# 使用示例
payment = create_payment(1000, 'usd', 'tok_visa')
print(payment)

3. 地图和位置服务

案例: Google Maps API

Google Maps API允许开发者在其应用中集成地图功能,进行地理编码,路线规划等。

// 在HTML中加载Google Maps JavaScript API
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>

// JavaScript代码
function initMap() {
    const map = new google.maps.Map(document.getElementById("map"), {
        center: { lat: 40.7128, lng: -74.0060 },
        zoom: 8,
    });
}

// 在页面加载完成后初始化地图
window.onload = initMap;

这个例子展示了如何使用Google Maps JavaScript API在网页中嵌入一个简单的地图。

4. 天气数据服务

案例: OpenWeatherMap API

OpenWeatherMap提供了全球天气数据的API,允许开发者在应用中集成实时天气信息。

import requests

def get_weather(city, api_key):
    url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"
    response = requests.get(url)
    if response.status_code == 200:
        data = response.json()
        return f"当前{city}的温度是{data['main']['temp']}°C,天气状况是{data['weather'][0]['description']}"
    else:
        return "无法获取天气信息"

# 使用示例
print(get_weather("London", "YOUR_API_KEY"))

5. 电子商务集成

案例: Shopify API

Shopify的API允许开发者创建自定义的电子商务解决方案,如订单管理,产品目录更新等。

import shopify

# 配置Shopify API连接
shop_url = "https://your-store.myshopify.com"
api_version = "2023-04"
private_app_password = "YOUR_PRIVATE_APP_PASSWORD"

session = shopify.Session(shop_url, api_version, private_app_password)
shopify.ShopifyResource.activate_session(session)

# 获取所有产品
products = shopify.Product.find()
for product in products:
    print(f"产品名称: {product.title}, 价格: {product.variants[0].price}")

# 关闭会话
shopify.ShopifyResource.clear_session()

这个例子展示了如何使用Shopify API获取店铺中的所有产品信息。

API的优势与挑战

API为现代软件开发带来了众多优势,但同时也面临一些挑战。让我们深入探讨这些方面。

API的优势

  1. 提高开发效率
    API允许开发者利用现有的功能和服务,而不是从头开始构建。这大大减少了开发时间和成本。例如,使用Google Maps API可以轻松地在应用中添加复杂的地图功能,而无需自己开发地图系统。

  2. 促进创新
    通过组合不同的API,开发者可以创造出全新的应用和服务。例如,将天气API与旅游API结合,可以创建一个智能旅行规划应用。

  3. 提升互操作性
    API使不同的系统和服务能够无缝集成。这在企业环境中尤其重要,可以连接不同部门的系统,提高整体效率。

  4. 扩展业务机会
    通过开放API,企业可以将其服务扩展到更广泛的用户群,创造新的收入流。例如,Salesforce通过其API生态系统显著扩大了其市场份额。

  5. 提高用户体验
    API允许应用提供更丰富、更实时的功能,从而提升用户体验。例如,社交媒体应用可以通过API实时更新用户动态。

API的挑战

  1. 安全性问题
    API可能成为安全漏洞的入口点。未经适当保护的API可能导致数据泄露或未授权访问。例如,2018年Facebook的API漏洞导致了大规模的用户数据泄露。[2]

  2. 性能和可扩展性
    随着API使用量的增加,维护高性能和可扩展性变得越来越具有挑战性。据Akamai的报告,2023年API流量已占到整体Web流量的83%,这对API基础设施提出了巨大挑战。[4]

  3. 版本控制和兼容性
    随着API的演进,维护向后兼容性同时引入新功能可能变得复杂。这需要仔细的版本控制策略。

  4. 文档和支持
    提供清晰、最新的文档和充分的支持对API的成功至关重要,但这往往是一项具有挑战性的任务。

  5. 依赖性风险
    过度依赖第三方API可能带来风险。如果API提供商改变其服务条款或停止服务,可能会对依赖该API的应用造成严重影响。

  6. 合规性和数据隐私
    随着GDPR等法规的实施,确保API处理和传输的数据符合各种法律和隐私要求变得越来越重要。

API开发最佳实践

为了应对这些挑战并充分发挥API的优势,遵循一些最佳实践是非常重要的。以下是一些API开发的关键最佳实践:

  1. 安全性优先

    • 实施强大的身份验证和授权机制(如OAuth 2.0)。
    • 使用HTTPS加密所有API通信。
    • 实施速率限制以防止滥用。
    • 定期进行安全审计和渗透测试。
  2. 设计清晰一致的接口

    • 遵循RESTful设计原则。
    • 使用清晰、直观的命名约定。
    • 提供一致的错误处理和响应格式。
  3. 版本控制

    • 在URL或头部中包含版本信息(例如: /api/v1/users)。
    • 计划向后兼容性和弃用策略。
  4. 性能优化

    • 实施缓存机制。
    • 优化数据库查询。
    • 考虑使用CDN分发API负载。
  5. 全面的文档

    • 提供详细、最新的API文档。
    • 包括示例代码和用例。
    • 使用工具如Swagger自动生成文档。
  6. 监控和分析

    • 实施全面的日志记录。
    • 使用API监控工具跟踪性能和使用情况。
    • 定期分析API使用模式以进行优化。
  7. 遵守数据隐私法规

    • 确保API处理符合GDPR、CCPA等隐私法规。
    • 实施数据最小化原则。
  8. 提供优质的开发者体验

    • 创建开发者门户。
    • 提供SDK和客户端库。
    • 建立活跃的开发者社区。
  9. 灵活的数据格式

    • 支持多种数据格式(如JSON、XML)。
    • 使用内容协商允许客户端选择首选格式。
  10. 异步处理

    • 对于长时间运行的操作,考虑使用异步API。
    • 实施webhook以推送更新。

通过遵循这些最佳实践,开发者可以创建更安全、更高效、更易用的API,从而提高整体的开发效率和用户满意度。

API的未来趋势

随着技术的不断发展,API领域也在持续演进。以下是一些值得关注的API未来趋势:

  1. API-First设计
    越来越多的公司采用API-First的开发方法,将API设计作为产品开发的核心。这种方法有助于创建更一致、更可扩展的系统。

  2. GraphQL的兴起
    GraphQL作为REST的替代方案正在获得越来越多的关注。它允许客户端精确指定所需的数据,减少了过度获取和不足获取的问题。

  3. 无服务器和微服务架构
    API与无服务器计算和微服务架构的结合,使得开发更加灵活和可扩展。这种趋势预计将继续增长。

  4. AI和机器学习API
    随着AI技术的进步,越来越多的公司提供AI和机器学习API,使开发者能够轻松地将这些先进功能集成到他们的应用中。

  5. IoT和API
    物联网(IoT)设备的普及带来了对专门API的需求,以处理大量的实时数据流。

  6. API安全性的增强
    随着API安全威胁的增加,更先进的安全措施(如AI驱动的威胁检测)将成为标准。

  7. 开放银行和金融API
    金融行业正在经历API革命,开放银行API允许第三方开发者访问银行数据和服务。

  8. 区块链API
    随着区块链技术的成熟,提供区块链功能的API将变得更加普遍。

  9. 实时API
    WebSocket和Server-Sent Events等技术的使用将增加,以支持实时数据传输和事件驱动的架构。

  10. API管理平台的演进
    API管理平台将继续发展,提供更强大的分析、安全和开发者体验功能。

据Gartner的预测,到2025年,90%的现代应用将使用API作为其组成部分。这凸显了API在未来软件开发中的核心地位。[4]

总结

API已经成为现代软件开发不可或缺的一部分,它们连接了数字世界的各个角落,推动了创新和效率的提升。从简单的数据交换到复杂的系统集成,API在各个领域都发挥着关键作用。

在本文中,我们深入探讨了API的定义、工作原理、类型以及实际应用案例。我们还讨论了API开发面临的挑战和最佳实践,以及未来的发展趋势。关键要点包括:

  1. API是应用程序之间通信的桥梁,使不同系统能够无缝集成。
  2. RESTful API是当前最流行的API类型,遵循一套标准化的设计原则。
  3. API在社交媒体、支付处理、地图服务等多个领域有广泛应用。
  4. API开发面临安全性、性能、版本控制等挑战,需要遵循最佳实践来应对。
  5. API的未来趋势包括API-First设计、GraphQL的兴起、AI和IoT集成等。

随着数字化转型的深入,API的重要性只会继续增加。无论是开发者、企业还是最终用户,都将从API带来的创新和效率中受益。掌握API开发和使用的技能,将成为未来技术领域的关键竞争力。

最后,值得注意的是,API生态系统正在不断演变。保持对新趋势和最佳实践的关注,将有助于开发者和企业在这个快速变化的领域保持竞争力。随着技术的进步,我们可以期待看到更多创新的API应用,进一步推动数字世界的发展。

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

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

相关文章

大数据最新面试题(持续更新)

2024大数据面试题 什么是Hbase&#xff1f;它与Hadoop的关系是什么&#xff1f; Hbase是一个开源的分布式数据库&#xff0c;基于Hadoop的HDFS&#xff0c;用于大数据存储和处理。它提供了高性能的读写能力和可扩展性。 Hbase的架构是什么&#xff1f; Hbase的架构由Region…

C++11——lambda

lambda lambda的介绍lambda的使用lambda的细节->捕捉列表 lambda的介绍 lambda是匿名函数&#xff0c;再适合的场景去使用可以提高代码的可读性。 场景&#xff1a; 假设有一个Goods类需要进行按照价格、数量排序 class Goods {string name;size_t _price;//价格int num;/…

大模型推理性能优化

LLM 推理的核心指标 首 Token 延迟(决定了用户体验) 延迟:从输入到输出最后一个 token 的延迟 吞吐量:每秒针对所有请求生成的 token 数(针对所有并发请求) 推理的性能卡点 1. KV-Cache 大小导致并发能力受限 LLM推理的过程是一个自回归的过程,前 i 次的token会作为…

秒懂Linux之共享内存

目录 共享内存概念 模拟实现共享内存 创建key阶段 ​编辑创建共享内存阶段 删除共享内存阶段 查看共享内存属性阶段 挂接共享内存到进程阶段 取消共享内存与进程挂接阶段 进程通信阶段 添加管道改进版 共享内存函数 shmget函数 shmat函数 shmdt函数 shmctl函数 共享内存概念 共…

第二十一节:学习Redis缓存数据库的Hash操作(自学Spring boot 3.x的第五天)

这节记录下Redis的Hash操作。主要是opsForHash方式和boundHashOps方式。 boundHashOps和opsForHash都是Spring Data Redis中用于操作Redis哈希数据结构的方法&#xff0c;但它们在使用方式和场景上存在一些区别。 boundHashOps 使用方式&#xff1a; boundHashOps方法通过Redi…

【第十三章:Sentosa_DSML社区版-机器学习聚类】

目录 【第十三章&#xff1a;Sentosa_DSML社区版-机器学习聚类】 13.1 KMeans聚类 13.2 二分KMeans聚类 13.3 高斯混合聚类 13.4 模糊C均值聚类 13.5 Canopy聚类 13.6 Canopy-KMeans聚类 13.7 文档主题生成模型聚类 13.8 谱聚类 【第十三章&#xff1a;Sentosa_DSML社…

C#基于SkiaSharp实现印章管理(8)

上一章虽然增加了按路径绘制文本&#xff0c;支持按矩形、圆形、椭圆等路径&#xff0c;但测试时发现通过调整尺寸、偏移量等方式不是很好控制文本的位置。相对而言&#xff0c;使用弧线路径&#xff0c;通过弧线起始角度及弧线角度控制文本位置更简单。同时基于路径绘制文本时…

Chainlit集成LlamaIndex实现知识库高级检索(简单融合寻回器)

检索原理 ** 简单融合寻回器 ** 简单融合寻回原理&#xff0c;是利用多个检索器&#xff0c;融合查询最终的结果返回给LLM。此检索器还将通过生成与原始问题相关的问题&#xff0c;用相关问题再次检索多个检索器的数据&#xff0c;把原始问题和相关问题经过多个检索器检索结果…

Relations Prediction for Knowledge Graph Completion using Large Language Models

文章目录 题目摘要简介相关工作方法论实验结论局限性未来工作 题目 使用大型语言模型进行知识图谱补全的关系预测 论文地址&#xff1a;https://arxiv.org/pdf/2405.02738 项目地址&#xff1a; https://github.com/yao8839836/kg-llm 摘要 知识图谱已被广泛用于以结构化格式表…

高级java每日一道面试题-2024年9月20日-分布式篇-什么是CAP理论?

如果有遗漏,评论区告诉我进行补充 面试官: 什么是CAP理论&#xff1f; 我回答: 在Java高级面试中&#xff0c;CAP理论是一个经常被提及的重要概念&#xff0c;它对于理解分布式系统的设计和优化至关重要。CAP理论是分布式系统理论中的一个重要概念&#xff0c;它描述了一个分…

【数学分析笔记】第3章第2节 连续函数(4)

3. 函数极限与连续函数 3.2 连续函数 3.2.9 反函数的连续性定理 【定理3.2.2】【反函数连续性定理】设 y f ( x ) yf(x) yf(x)在闭区间 [ a , b ] [a,b] [a,b]上连续且严格单调增加&#xff0c;设 f ( a ) α , f ( b ) β f(a)\alpha,f(b)\beta f(a)α,f(b)β&#xff0…

仓颉编程入门

#体验华为仓颉编程语言# 仓颉发布的第一时间&#xff0c;就申请了测试。昨天发现申请通过 &#xff0c;果断下载SDK体验一下。 废话不多说&#xff0c;从下载完开始&#xff0c;下面这个图&#xff0c;就是下载的文件&#xff1a; 看文件夹样子跟c/c套路差不多。bin目录是cjc…

linux安装nginx+前端部署vue项目(实际测试react项目也可以)

&#x1f9f8;本篇博客作者测试上线过不下5个项目&#xff0c;包括单纯的静态资源&#xff0c;vue项目和react项目&#xff0c;包好用&#xff0c;请放心使用 &#x1f4dc;作者首页&#xff1a;dream_ready-CSDN博客 &#x1f4dc;有任何问题都可以评论留言&#xff0c;作者将…

什么是大模型的泛化能力?

大模型的泛化能力指的是模型在未见过的数据上表现的能力&#xff0c;即模型不仅能在训练数据上表现良好&#xff0c;也能在新的、未知的数据集上保持良好的性能。这种能力是衡量机器学习模型优劣的重要指标之一。 泛化能力的好处包括但不限于&#xff1a; 提高模型的适应性&a…

基于uniapp的民宿酒店预订系统(后台+小程序)

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

F28335中断系统

1 中断介绍 1.1 中断概念 1.2 TMS320F28335 中断概述

CUDA并行架构

一、CUDA简介 CUDA(Compute Unified Device Architecture)是一种由NVIDIA推出的通用并行计算架构&#xff0c;该架构使GPU(Graphics Processing Unit)能够对复杂的计算问题做性能速度优化。 二、串并行模式 高性能计算的关键是利用多核处理器进行并行计算。 串行模式&#…

使用LangGPT提示词让大模型比较浮点数

使用LangGPT提示词让大模型比较浮点数 背景介绍环境准备创建虚拟环境安装一些必要的库安装其他依赖部署大模型启动图形交互服务设置提示词与测试 LangGPT结构化提示词 背景介绍 LLM在对比浮点数字时表现不佳&#xff0c;经验证&#xff0c;internlm2-chat-1.8b (internlm2-cha…

Excel-时间取整,工作有效时长计算

在计算考勤时&#xff0c;打卡时间不是整点&#xff0c;上班时间是遵循整点开始计算的&#xff0c;员工提前打卡&#xff0c;所以要用到时间向上取整。 上班取整&#xff1a; 使用CEILING函数可实现该需求&#xff0c;参考以下公式&#xff0c;第一个参数为上班打卡时间&#…

MySQL篇(窗口函数/公用表达式(CTE))(持续更新迭代)

目录 讲解一&#xff1a;窗口函数 一、简介 二、常见操作 1. sumgroup by常规的聚合函数操作 2. sum窗口函数的聚合操作 三、基本语法 1. Function(arg1,..., argn) 1.1. 聚合函数 sum函数&#xff1a;求和 min函数 &#xff1a;最小值 1.2. 排序函数 1.3. 跨行函数…