如何调用讯飞星火认知大模型的API以利用其卓越功能

摘要

讯飞星火认知大模型,作为科大讯飞精心打造的一款人工智能模型,在自然语言理解和生成方面展现出了卓越的能力。这款模型通过深度学习技术和大量数据的训练,具备了强大的语言理解、文本生成和对话交互等功能。

一、模型功能概述

讯飞星火认知大模型能够为用户提供个性化的信息服务,包括但不限于语音识别、文本分析、自动翻译以及智能问答等。它在多个应用场景中都能发挥出色,如在智能客服系统中准确理解用户问题,或在内容创作领域协助生成高质量的文章或报告。

讯飞星火提供了三种不同的API模型供用户选择:Spark3.5 Max、Spark Pro、Spark Lite。这些模型均具备不同的性能和功能特点,以满足不同用户的需求。目前,这些模型都提供了免费的调用额度,供用户试用和体验。
在这里插入图片描述
讯飞星火Lite API永久免费开放!在这里插入图片描述
在这里插入图片描述

讯飞星火Pro/Max API免费赠送200万tokens,相当于三百万汉字。

链接:https://xinghuo.xfyun.cn/sparkapi?ch=gjaa

通过本文你能力学到:

  • Python调用方式
    作为广泛使用的编程语言,Python提供了方便的接口来调用讯飞星火的API。您可以通过官方文档获取Python SDK,并按照指南进行调用。
  • 其他调用方式
    除了Python,讯飞星火也支持其他编程语言的调用方式。您可以在官方文档中查找对应的SDK或API接口,以适应您的开发需求。

Spark3.5 Max/Spark Pro/Spark Lite的区别

讯飞星火Spark3.5 Max:最强大的星火大模型版本,效果最优支持联网搜索、天气、日期等多个内置插件核心能力全面升级,各场景应用效果普遍提升支持System角色人设与FunctionCall函数调用。讯飞星火Spark3.5 Max所有套餐价格:
在这里插入图片描述
讯飞星火Spark Pro:专业级大语言模型,兼顾模型效果与性能。数学、代码、医疗、教育等场景专项优化支持联网搜索、天气、日期等多个内置插件。覆盖大部分知识问答、语言理解、文本创作等多个场景。讯飞星火Spark Pro所有套餐价格:

在这里插入图片描述
讯飞星火 Spark Lite:轻量级大语言模型,低延迟,全免费。支持在线联网搜索功能,响应快速、便捷,全面免费开放,适用于低算力推理与模型精调等定制化场景。Spark Lite免费向大家开放!
在这里插入图片描述

支持的能力

API调用支持的方式

支持的方式有:WebAPI、安卓、IOS、Windows、Linux等多种方式

在这里插入图片描述

注意事项:

关于Web接口的说明:

必须符合 websocket 协议规范(rfc6455)。
websocket握手成功后用户在60秒内没有发送请求数据,服务侧会主动断开。
本接口默认采用短链接的模式,即接口每次将结果完整返回给用户后会主动断开链接,用户在下次发送请求的时候需要重新握手链接。
关于SDK的说明:

高效接入:SDK统一封装鉴权模块,接口简单最快三步完成SDK集成接入
稳定可靠: 统一连接池保障连接时效性,httpDNS保障请求入口高可用性
配套完善:支持多路并发用户回调上下文绑定,交互历史管理及排障日志回传收集
多平台兼容:覆盖Windows,Linux,Android,iOS以及其他交叉编译平台
关于tokens的说明(重要):

接口采用tokens方式计费。
tokens与词表、分词方案相关,没有精确的计算方式,但是接口会返回本次计费的tokens数(详见接口文档响应参数描述)。
接口计费会将请求text字段下所有的content内容均计费,开发者需要酌情考虑保留的历史对话信息数量,避免浪费tokens(最大的输入tokens见接口文档参数描述)。
关于文本审核说明(重要):

接口会对用户输入和AI输出内容进行文本审核,会对包括但不限于:(1) 涉及国家安全的信息;(2) 涉及政治与宗教类的信息;(3) 涉及暴力与恐怖主义的信息;(4) 涉及黄赌毒类的信息;(5) 涉及不文明的信息 的输入输出赋予错误码返回(详见错误码部分10013和10014说明)

在线调试

打开链接:https://xinghuo.xfyun.cn/sparkapi?ch=gjaa,选择在线调试:
在这里插入图片描述
然后,注册账号,选择一种方式登录,如下图:
在这里插入图片描述
创建一个应用,如下图:
在这里插入图片描述
然后,我们填写内容,如下:
在这里插入图片描述
发现不能调用,为啥呢?我们还没有领取tokens,所以下一步先领取tokens。链接:https://xinghuo.xfyun.cn/sparkapi?scr=true,
在这里插入图片描述
选择我们刚才建立的应用测试,选择免费包,如下图:
在这里插入图片描述
在这里插入图片描述
填写好后,下单即可!
在这里插入图片描述
显示交易成功后,就可以调试了!选择模型,设置指令,角色设定,回复长度等。写完之后,就可以在输入框里填写你想要输出的内容。如下图:
在这里插入图片描述

星火认知大模型Web API调用文档

在上面完成在线调试后,点击更多服务信息查询,如下图:

在这里插入图片描述
然后找到APP_ID、API_SECRET、API_KEY 等信息,如下图:在这里插入图片描述

Python集成星火认知大模型示例

首先,安装PyPI上的包,在python环境中执行命令,命令如下:

pip install --upgrade spark_ai_python

然后,执行代码:

from sparkai.llm.llm import ChatSparkLLM, ChunkPrintHandler
from sparkai.core.messages import ChatMessage#星火认知大模型Spark3.5 Max的URL值,其他版本大模型URL值请前往文档(https://www.xfyun.cn/doc/spark/Web.html)查看
SPARKAI_URL = 'wss://spark-api.xf-yun.com/v3.5/chat'
#星火认知大模型调用秘钥信息,请前往讯飞开放平台控制台(https://console.xfyun.cn/services/bm35)查看
SPARKAI_APP_ID = ''
SPARKAI_API_SECRET = ''
SPARKAI_API_KEY = ''
#星火认知大模型Spark3.5 Max的domain值,其他版本大模型domain值请前往文档(https://www.xfyun.cn/doc/spark/Web.html)查看
SPARKAI_DOMAIN = 'generalv3.5'if __name__ == '__main__':spark = ChatSparkLLM(spark_api_url=SPARKAI_URL,spark_app_id=SPARKAI_APP_ID,spark_api_key=SPARKAI_API_KEY,spark_api_secret=SPARKAI_API_SECRET,spark_llm_domain=SPARKAI_DOMAIN,streaming=False,)messages = [ChatMessage(role="user",content='你好呀')]handler = ChunkPrintHandler()a = spark.generate([messages], callbacks=[handler])print(a)

输出结果:

generations=[[ChatGeneration(text="PyTorch是一个基于Python的科学计算库,主要用于深度学习研究和开发。它提供了两个高级功能:张量计算(类似于NumPy)和深度神经网络。以下是一些PyTorch基础知识:\n\n1. 安装PyTorch:\n\n```bash\npip install torch torchvision\n```\n\n2. 导入库:\n\n```python\nimport torch\n```\n\n3. 张量:\n\n张量是PyTorch中的基本数据结构,类似于多维数组。可以使用`torch.Tensor()`创建张量,或者使用`torch.randn()`创建一个随机张量。\n\n```python\n# 创建一个2x3的浮点数张量\nx = torch.Tensor([[1, 2, 3], [4, 5, 6]])\nprint(x)\n\n# 创建一个2x3的随机张量\ny = torch.randn(2, 3)\nprint(y)\n```\n\n4. 张量操作:\n\n张量支持各种操作,如加法、乘法、索引等。\n\n```python\n# 张量加法\nz = torch.add(x, y)\nprint(z)\n\n# 张量乘法\nz = torch.mul(x, y)\nprint(z)\n\n# 张量索引\nprint(x[:, 1])\n```\n\n5. 自动求导:\n\nPyTorch中的张量默认是可自动求导的,这对于训练神经网络非常有用。可以使用`.requires_grad_()`方法将张量设置为可求导。\n\n```python\n# 创建一个可求导的张量\nx = torch.ones(2, 2, requires_grad=True)\nprint(x)\n\n# 计算梯度\ny = x + 2\nz = y * y * 3\nout = z.mean()\nprint(out)\n\n# 反向传播\nout.backward()\nprint(x.grad)\n```\n\n6. 神经网络:\n\n使用`torch.nn`模块可以定义神经网络。首先定义一个继承自`torch.nn.Module`的类,然后实现`__init__()`和`forward()`方法。\n\n```python\nimport torch.nn as nn\nimport torch.nn.functional as F\n\nclass Net(nn.Module):\n    def __init__(self):\n        super(Net, self).__init__()\n        self.conv1 = nn.Conv2d(1, 6, 3)\n        self.conv2 = nn.Conv2d(6, 16, 3)\n        self.fc1 = nn.Linear(16 * 6 * 6, 120)\n        self.fc2 = nn.Linear(120, 84)\n        self.fc3 = nn.Linear(84, 10)\n\n    def forward(self, x):\n        x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))\n        x = F.max_pool2d(F.relu(self.conv2(x)), 2)\n        x = x.view(-1, self.num_flat_features(x))\n        x = F.relu(self.fc1(x))\n        x = F.relu(self.fc2(x))\n        x = self.fc3(x)\n        return x\n\n    def num_flat_features(self, x):\n        size = x.size()[1:]\n        num_features = 1\n        for s in size:\n            num_features *= s\n        return num_features\n\nnet = Net()\nprint(net)\n```\n\n7. 训练神经网络:\n\n使用`torch.optim`模块中的优化器(如SGD、Adam等)来训练神经网络。在每个训练循环中,执行前向传播、计算损失、反向传播和优化器更新权重。\n\n```python\n# 定义超参数\ninput_size = 784\nhidden_size = 500\nnum_classes = 10\nnum_epochs = 5\nbatch_size = 100\nlearning_rate = 0.001\n\n# 加载MNIST数据集\ntrain_dataset = torchvision.datasets.MNIST(root='./data', train=True, transform=torchvision.transforms.ToTensor(), download=True)\ntest_dataset = torchvision.datasets.MNIST(root='./data', train=False, transform=torchvision.transforms.ToTensor())\ntrain_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=batch_size, shuffle=True)\ntest_loader = torch.utils.data.DataLoader(dataset=test_dataset, batch_size=batch_size, shuffle=False)\n\n# 定义模型、损失函数和优化器\nmodel = Net()\ncriterion = nn.CrossEntropyLoss()\noptimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)\n\n# 训练模型\nfor epoch in range(num_epochs):\n    for i, (images, labels) in enumerate(train_loader):\n        images = images.view(-1, 28*28)\n        outputs = model(images)\n        loss = criterion(outputs, labels)\n        optimizer.zero_grad()\n        loss.backward()\n        optimizer.step()\n        if (i+1) % 100 == 0:\n            print('Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, i+1, len(train_loader), loss.item()))\n```", message=AIMessage(content="PyTorch是一个基于Python的科学计算库,主要用于深度学习研究和开发。它提供了两个高级功能:张量计算(类似于NumPy)和深度神经网络。以下是一些PyTorch基础知识:\n\n1. 安装PyTorch:\n\n```bash\npip install torch torchvision\n```\n\n2. 导入库:\n\n```python\nimport torch\n```\n\n3. 张量:\n\n张量是PyTorch中的基本数据结构,类似于多维数组。可以使用`torch.Tensor()`创建张量,或者使用`torch.randn()`创建一个随机张量。\n\n```python\n# 创建一个2x3的浮点数张量\nx = torch.Tensor([[1, 2, 3], [4, 5, 6]])\nprint(x)\n\n# 创建一个2x3的随机张量\ny = torch.randn(2, 3)\nprint(y)\n```\n\n4. 张量操作:\n\n张量支持各种操作,如加法、乘法、索引等。\n\n```python\n# 张量加法\nz = torch.add(x, y)\nprint(z)\n\n# 张量乘法\nz = torch.mul(x, y)\nprint(z)\n\n# 张量索引\nprint(x[:, 1])\n```\n\n5. 自动求导:\n\nPyTorch中的张量默认是可自动求导的,这对于训练神经网络非常有用。可以使用`.requires_grad_()`方法将张量设置为可求导。\n\n```python\n# 创建一个可求导的张量\nx = torch.ones(2, 2, requires_grad=True)\nprint(x)\n\n# 计算梯度\ny = x + 2\nz = y * y * 3\nout = z.mean()\nprint(out)\n\n# 反向传播\nout.backward()\nprint(x.grad)\n```\n\n6. 神经网络:\n\n使用`torch.nn`模块可以定义神经网络。首先定义一个继承自`torch.nn.Module`的类,然后实现`__init__()`和`forward()`方法。\n\n```python\nimport torch.nn as nn\nimport torch.nn.functional as F\n\nclass Net(nn.Module):\n    def __init__(self):\n        super(Net, self).__init__()\n        self.conv1 = nn.Conv2d(1, 6, 3)\n        self.conv2 = nn.Conv2d(6, 16, 3)\n        self.fc1 = nn.Linear(16 * 6 * 6, 120)\n        self.fc2 = nn.Linear(120, 84)\n        self.fc3 = nn.Linear(84, 10)\n\n    def forward(self, x):\n        x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))\n        x = F.max_pool2d(F.relu(self.conv2(x)), 2)\n        x = x.view(-1, self.num_flat_features(x))\n        x = F.relu(self.fc1(x))\n        x = F.relu(self.fc2(x))\n        x = self.fc3(x)\n        return x\n\n    def num_flat_features(self, x):\n        size = x.size()[1:]\n        num_features = 1\n        for s in size:\n            num_features *= s\n        return num_features\n\nnet = Net()\nprint(net)\n```\n\n7. 训练神经网络:\n\n使用`torch.optim`模块中的优化器(如SGD、Adam等)来训练神经网络。在每个训练循环中,执行前向传播、计算损失、反向传播和优化器更新权重。\n\n```python\n# 定义超参数\ninput_size = 784\nhidden_size = 500\nnum_classes = 10\nnum_epochs = 5\nbatch_size = 100\nlearning_rate = 0.001\n\n# 加载MNIST数据集\ntrain_dataset = torchvision.datasets.MNIST(root='./data', train=True, transform=torchvision.transforms.ToTensor(), download=True)\ntest_dataset = torchvision.datasets.MNIST(root='./data', train=False, transform=torchvision.transforms.ToTensor())\ntrain_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=batch_size, shuffle=True)\ntest_loader = torch.utils.data.DataLoader(dataset=test_dataset, batch_size=batch_size, shuffle=False)\n\n# 定义模型、损失函数和优化器\nmodel = Net()\ncriterion = nn.CrossEntropyLoss()\noptimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)\n\n# 训练模型\nfor epoch in range(num_epochs):\n    for i, (images, labels) in enumerate(train_loader):\n        images = images.view(-1, 28*28)\n        outputs = model(images)\n        loss = criterion(outputs, labels)\n        optimizer.zero_grad()\n        loss.backward()\n        optimizer.step()\n        if (i+1) % 100 == 0:\n            print('Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, i+1, len(train_loader), loss.item()))\n```"))]] llm_output={'token_usage': {'question_tokens': 7, 'prompt_tokens': 7, 'completion_tokens': 1359, 'total_tokens': 1366}} run=[RunInfo(run_id=UUID('7ff2abd7-11af-44da-b91d-6650c3ccfa0a'))]

接口说明

请求地址

Tips: 星火大模型API当前有Lite、V2.0、Pro和Max四个版本,四个版本独立计量tokens。

传输协议 :ws(s),为提高安全性,强烈推荐wss

Spark3.5 Max请求地址,对应的domain参数为generalv3.5:

wss://spark-api.xf-yun.com/v3.5/chat

Spark Pro请求地址,对应的domain参数为generalv3:

wss://spark-api.xf-yun.com/v3.1/chat

Spark V2.0请求地址,对应的domain参数为generalv2:

wss://spark-api.xf-yun.com/v2.1/chat

Spark Lite请求地址,对应的domain参数为general:

wss://spark-api.xf-yun.com/v1.1/chat

请求参数

# 参数构造示例如下
{"header": {"app_id": "12345","uid": "12345"},"parameter": {"chat": {"domain": "generalv3.5","temperature": 0.5,"max_tokens": 1024, }},"payload": {"message": {# 如果想获取结合上下文的回答,需要开发者每次将历史问答信息一起传给服务端,如下示例# 注意:text里面的所有content内容加一起的tokens需要控制在8192以内,开发者如有较长对话需求,需要适当裁剪历史信息"text": [{"role":"system","content":"你现在扮演李白,你豪情万丈,狂放不羁;接下来请用李白的口吻和用户对话。"} #设置对话背景或者模型角色{"role": "user", "content": "你是谁"} # 用户的历史问题{"role": "assistant", "content": "....."}  # AI的历史回答结果# ....... 省略的历史对话{"role": "user", "content": "你会做什么"}  # 最新的一条问题,如无需上下文,可只传最新一条问题]}}
}

接口请求字段由三个部分组成:header,parameter, payload。 字段解释如下

header部分
在这里插入图片描述
parameter.chat部分
在这里插入图片描述
payload.message.text部分

注:text下所有content累计内容 tokens需要控制在8192内

在这里插入图片描述

接口响应

# 接口为流式返回,此示例为最后一次返回结果,开发者需要将接口多次返回的结果进行拼接展示
{"header":{"code":0,"message":"Success","sid":"cht000cb087@dx18793cd421fb894542","status":2},"payload":{"choices":{"status":2,"seq":0,"text":[{"content":"我可以帮助你的吗?","role":"assistant","index":0}]},"usage":{"text":{"question_tokens":4,"prompt_tokens":5,"completion_tokens":9,"total_tokens":14}}}
}

接口返回字段分为两个部分,header,payload。字段解释如下

header部分
在这里插入图片描述
payload.choices部分
在这里插入图片描述
payload.usage部分(在最后一次结果返回)
在这里插入图片描述

完整调用方式

# coding: utf-8
import _thread as thread
import os
import time
import base64import base64
import datetime
import hashlib
import hmac
import json
from urllib.parse import urlparse
import ssl
from datetime import datetime
from time import mktime
from urllib.parse import urlencode
from wsgiref.handlers import format_date_timeimport websocket
import openpyxl
from concurrent.futures import ThreadPoolExecutor, as_completed
import osclass Ws_Param(object):# 初始化def __init__(self, APPID, APIKey, APISecret, gpt_url):self.APPID = APPIDself.APIKey = APIKeyself.APISecret = APISecretself.host = urlparse(gpt_url).netlocself.path = urlparse(gpt_url).pathself.gpt_url = gpt_url# 生成urldef create_url(self):# 生成RFC1123格式的时间戳now = datetime.now()date = format_date_time(mktime(now.timetuple()))# 拼接字符串signature_origin = "host: " + self.host + "\n"signature_origin += "date: " + date + "\n"signature_origin += "GET " + self.path + " HTTP/1.1"# 进行hmac-sha256进行加密signature_sha = hmac.new(self.APISecret.encode('utf-8'), signature_origin.encode('utf-8'),digestmod=hashlib.sha256).digest()signature_sha_base64 = base64.b64encode(signature_sha).decode(encoding='utf-8')authorization_origin = f'api_key="{self.APIKey}", algorithm="hmac-sha256", headers="host date request-line", signature="{signature_sha_base64}"'authorization = base64.b64encode(authorization_origin.encode('utf-8')).decode(encoding='utf-8')# 将请求的鉴权参数组合为字典v = {"authorization": authorization,"date": date,"host": self.host}# 拼接鉴权参数,生成urlurl = self.gpt_url + '?' + urlencode(v)# 此处打印出建立连接时候的url,参考本demo的时候可取消上方打印的注释,比对相同参数时生成的url与自己代码生成的url是否一致return url# 收到websocket错误的处理
def on_error(ws, error):print("### error:", error)# 收到websocket关闭的处理
def on_close(ws):print("### closed ###")# 收到websocket连接建立的处理
def on_open(ws):thread.start_new_thread(run, (ws,))def run(ws, *args):data = json.dumps(gen_params(appid=ws.appid, query=ws.query, domain=ws.domain))ws.send(data)# 收到websocket消息的处理
def on_message(ws, message):# print(message)data = json.loads(message)code = data['header']['code']if code != 0:print(f'请求错误: {code}, {data}')ws.close()else:choices = data["payload"]["choices"]status = choices["status"]content = choices["text"][0]["content"]print(content,end='')if status == 2:print("#### 关闭会话")ws.close()def gen_params(appid, query, domain):"""通过appid和用户的提问来生成请参数"""data = {"header": {"app_id": appid,"uid": "1234",# "patch_id": []    #接入微调模型,对应服务发布后的resourceid},"parameter": {"chat": {"domain": domain,"temperature": 0.5,"max_tokens": 4096,"auditing": "default",}},"payload": {"message": {"text": [{"role": "user", "content": query}]}}}return datadef main(appid, api_secret, api_key, gpt_url, domain, query):wsParam = Ws_Param(appid, api_key, api_secret, gpt_url)websocket.enableTrace(False)wsUrl = wsParam.create_url()ws = websocket.WebSocketApp(wsUrl, on_message=on_message, on_error=on_error, on_close=on_close, on_open=on_open)ws.appid = appidws.query = queryws.domain = domainws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE})# SPARKAI_APP_ID = 'fc4a8d37'
# SPARKAI_API_SECRET = 'OTFlMjI1OTFjYzljMDEyNzk5ODA2NjMy'
# SPARKAI_API_KEY = '359cb64d9bbe50b44e4a7cb376685246'
if __name__ == "__main__":main(appid="fc4a8d37",api_secret="OTFlMjI1OTFjYzljMDEyNzk5ODA2NjMy",api_key="359cb64d9bbe50b44e4a7cb376685246",#appid、api_secret、api_key三个服务认证信息请前往开放平台控制台查看(https://console.xfyun.cn/services/bm35)gpt_url="wss://spark-api.xf-yun.com/v3.5/chat",      # Max环境的地址# Spark_url = "ws://spark-api.xf-yun.com/v3.1/chat"  # Pro环境的地址# Spark_url = "ws://spark-api.xf-yun.com/v1.1/chat"  # Lite环境的地址domain="generalv3.5",     # Max版本# domain = "generalv3"    # Pro版本# domain = "general"      # Lite版本址query="帮我写一篇pytoch基础知识,输出的格式是markdown的,要求有详细的知识讲解和示例,字数不低于5000字")

输出结果:

# PyTorch基础知识## 1. PyTorch简介PyTorch是一个基于Python的科学计算库,它主要针对两类人群:1. 作为NumPy的替代品,可以利用GPU的性能进行计算
2. 提供最大的灵活性和速度的深度学习研究平台.........................................

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

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

相关文章

linux端口被占用 关闭端口

系列文章目录 文章目录 系列文章目录一、linux端口被占用 关闭端口1.参考链接2.具体命令 二、【linux关闭进程命令】fuser -k 和 kill -9 的区别1.参考链接2.具体命令 一、linux端口被占用 关闭端口 1.参考链接 linux端口被占用 关闭端口 2.具体命令 1.查看端口是否被占用 …

商超仓库管理系统

摘要 随着全球经济和互联网技术的快速发展,依靠互联网技术的各种管理系统逐渐应用到社会的方方面面。各行业的有识之士都逐渐开始意识到过去传统的人工管理模式已经逐渐成为企业发展的绊脚石,不再适应现代企业的发展需要。企业想要得到更好的发展&#…

FreeRtos-13资源管理

一、临界资源是什么 要独占式地访问临界资源,有3种方法: 1.公平竞争:比如使用互斥量,谁先获得互斥量谁就访问临界资源,这部分内容前面讲过。 谁要跟我抢,我就灭掉谁: 2.中断要跟我抢?我屏蔽中断 3.其他任务要跟我抢?我禁止调度器,不运行任务切换 二、暂停调度器…

【C语言】自定义类型

目录 一、结构体: 1、结构体的声明: 2、结构体的自引用: 3、结构体变量的定义和初始化: 4、结构体内存对齐: 5、结构体传参: 6、位段: 二、枚举类型: 三、联合体&#xff1a…

网络安全:什么是SQL注入

文章目录 网络安全:什么是SQL注入引言SQL注入简介工作原理示例代码 攻击类型为什么SQL注入危险结语 网络安全:什么是SQL注入 引言 在数字化时代,数据安全成为了企业和个人最关心的问题之一。SQL注入(SQL Injection)是…

【LLM之RAG】RAT论文阅读笔记

研究背景 近年来,大型语言模型(LLMs)在各种自然语言推理任务上取得了显著进展,尤其是在结合大规模模型和复杂提示策略(如链式思维提示(CoT))时。然而,LLMs 在推理的事实…

C++的智能指针 RAII

目录 产生原因 RAII思想 C11的智能指针 智能指针的拷贝与赋值 shared_ptr的拷贝构造 shared_ptr的赋值重置 shared_ptr的其它成员函数 weak_ptr 定制删除器 简单实现 产生原因 产生原因:抛异常等原因导致的内存泄漏 int div() {int a, b;cin >> a…

手机usb共享网络电脑没反应的方法

适用于win10电脑,安卓手机上可以 开启usb网络共享选择,如果选择后一直跳,让重复选择usb选项的话,就开启 开发者模式,进到 开发者模式 里设置 默认usb 共享网络 选项 ,就不会一直跳让你选。 1.先用数据线 连…

八大经典排序算法

前言 本片博客主要讲解一下八大排序算法的思想和排序的代码 💓 个人主页:普通young man-CSDN博客 ⏩ 文章专栏:排序_普通young man的博客-CSDN博客 若有问题 评论区见📝 🎉欢迎大家点赞👍收藏⭐文章 目录 …

HTTP详细总结

概念 HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。 特点 基于TCP协议: 面向连接,安全 TCP是一种面向连接的(建立连接之前是需要经过三次握手)、可靠的、基于字节流的传输层通信协议,在…

Linux管道与重定向

管道 是进程通信的方法之一,在Linux中用命令1|命令2的形式表示,将前一个命令的结果作为后续命令的参数进行输入,也有tee管道,可以进行多次筛选,即多次使用|过滤命令。 重定向 文件描述符FD Linux中输入输出分为三种…

C语言变量、指针的内存关系

1. type p ? 表示从内存地址p开始,开辟一段内存,内存大小为类型type规定的字节数,然后把等号右边的值写入到这段内存中。 因此,这块内存起点位置是p,结束是ptype字节数-1。 2. type* p ?表示从内存地址p开始&…

SpingBoot快速入门下

响应HttpServietResponse 介绍 将ResponseBody 加到Controller方法/类上 作用:将方法返回值直接响应,如果返回值是 实体对象/集合,将会自动转JSON格式响应 RestController Controller ResponseBody; 一般响应 统一响应 在实际开发中一般…

Python学习打卡:day11

day11 笔记来源于:黑马程序员python教程,8天python从入门到精通,学python看这套就够了 目录 day1183、自定义 Python 包创建包导入包方式1方式2方式3方式4 84、安装第三方包安装第三方包——pippip的网络优化 安装第三方包——PyCharm 85、…

代码随想录-Day36

452. 用最少数量的箭引爆气球 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完全垂…

基于WPF技术的换热站智能监控系统16--动态数据绑定

1、实现思路 1)实时读取到的数据绑定到前台UI控件上,这个通过MVVM模式实现,同时注意实时读取必须通过任务task异步方式,这就需要读取PLC数据。 2)UI控件的动作,如开或关水泵,必定能够将值写入…

Python | Leetcode Python题解之第169题多数元素

题目: 题解: class Solution:def majorityElement(self, nums: List[int]) -> int:count 0candidate Nonefor num in nums:if count 0:candidate numcount (1 if num candidate else -1)return candidate

Java | Leetcode Java题解之第171题Excel表列序号

题目: 题解: class Solution {public int titleToNumber(String columnTitle) {int number 0;int multiple 1;for (int i columnTitle.length() - 1; i > 0; i--) {int k columnTitle.charAt(i) - A 1;number k * multiple;multiple * 26;}ret…

《Windows API每日一练》5.2 按键消息

上一节中我们得知,Windows系统的按键消息有很多类型,大部分按键消息都是由Windows系统的默认窗口过程处理的,我们自己只需要处理少数几个按键消息。这一节我们将详细讲述Windows系统的所有按键消息及其处理方式。 本节必须掌握的知识点&…

wsl2平台鸿蒙全仓docker编译环境快速创建方法

文章目录 1 文章适用范围:2 WSL环境安装3 镜像迁移非C盘4 Docker环境准备4.1 docker用户组和用户创建4.2 Docker环境配置4.2.1 Ubuntu下安装docker工具4.2.2 鸿蒙Docker环境安装4.2.3 鸿蒙全仓代码拉取编译 5 鸿蒙全仓代码的更新策略6 参考文献7 FAQ7.1 缺头文件xcr…