实战5 基于Qwen2的数据库管理系统

使用模型实现从数据库表格中查询各种信息

实践1:查询订单表中的各种信息

编写函数调用:是从OpenAI官方案例中提取出来的

def get_sql_completion(client,database_schema_string,messages, model="qwen-turbo"):response = client.chat.completions.create(model=model,messages=messages,temperature=0.5, tools=[{"type": "function","function": {"name": "ask_database","description": "Use this function to answer user questions about business. \Output should be a fully formed SQL query.","parameters": {"type": "object","properties": {"query": {"type": "string","description": f"""SQL query extracting info to answer the user's question.SQL should be written using this database schema:{database_schema_string}The query should be returned in plain text, not in JSON.The query should only contain grammars supported by SQLite.""",}},"required": ["query"],}}}],)return response.choices[0].message

 初始化数据库

def ask_database(cursor,query):cursor.execute(query)records = cursor.fetchall()return recordsdef DBInit(cursor,database_schema_string,DataList):cursor.execute(database_schema_string)# 插入5条明确的模拟记录mock_data = DataListfor record in mock_data:cursor.execute('''INSERT INTO orders (id, customer_id, product_id, price, status, create_time, pay_time)VALUES (?, ?, ?, ?, ?, ?, ?)''', record)# 提交事务conn.commit()def select_all(cursor):# 查询orders表中的所有数据cursor.execute("SELECT * FROM orders")rows = cursor.fetchall()# 打印查询结果for row in rows:print(row)

初始化数据 

 database_schema_string = """CREATE TABLE orders (id INT PRIMARY KEY NOT NULL, -- 主键,不允许为空customer_id INT NOT NULL, -- 客户ID,不允许为空product_id STR NOT NULL, -- 产品ID,不允许为空price DECIMAL(10,2) NOT NULL, -- 价格,不允许为空status INT NOT NULL, -- 订单状态,整数类型,不允许为空。0代表待支付,1代表已支付,2代表已退款create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 创建时间,默认为当前时间pay_time TIMESTAMP -- 支付时间,可以为空);"""DataList =  [(1, 1001, 'TSHIRT_1', 50.00, 0, '2023-10-12 10:00:00', None),(2, 1001, 'TSHIRT_2', 75.50, 1, '2023-10-16 11:00:00', '2023-08-16 12:00:00'),(3, 1002, 'SHOES_X2', 25.25, 2, '2023-10-17 12:30:00', '2023-08-17 13:00:00'),(4, 1003, 'HAT_Z112', 60.75, 1, '2023-10-20 14:00:00', '2023-08-20 15:00:00'),(5, 1002, 'WATCH_X001', 90.00, 0, '2023-10-28 16:00:00', None)
]conn = sqlite3.connect(':memory:')cursor = conn.cursor()DBInit(cursor,database_schema_string,DataList)select_all(cursor)

 main函数调用函数来实现查询任务

# prompt = "上个月的销售额"#prompt = "统计每月每件商品的销售额"prompt = "哪个用户消费最高?消费多少?"messages = [{"role": "system", "content": "基于 order 表回答用户问题"},{"role": "user", "content": prompt}]response = get_sql_completion(client,database_schema_string,messages)if response.content is None:response.content = ""messages.append(response)if response.tool_calls is not None:tool_call = response.tool_calls[0]if tool_call.function.name == "ask_database":arguments = tool_call.function.argumentsargs = json.loads(arguments)print(args["query"])result = ask_database(cursor,args["query"])print(result)messages.append({"tool_call_id": tool_call.id,"role": "tool","name": "ask_database","content": str(result)})response = get_sql_completion(client,database_schema_string,messages)print("====最终回复====")print(response.content)

整体代码如下

import json
import sqlite3
from cv2.version import ci_build
from openai import OpenAI
import osimport requests
from openpyxl.chart.label import DataLabelList
from sympy.physics.units import temperaturedef get_sql_completion(client,database_schema_string,messages, model="qwen-turbo"):response = client.chat.completions.create(model=model,messages=messages,temperature=0,  # 模型输出的随机性,0 表示随机性最小tools=[{"type": "function","function": {"name": "ask_database","description": "Use this function to answer user questions about business. \Output should be a fully formed SQL query.","parameters": {"type": "object","properties": {"query": {"type": "string","description": f"""SQL query extracting info to answer the user's question.SQL should be written using this database schema:{database_schema_string}The query should be returned in plain text, not in JSON.The query should only contain grammars supported by SQLite.""",}},"required": ["query"],}}}],)return response.choices[0].messagedef ask_database(cursor,query):cursor.execute(query)records = cursor.fetchall()return recordsdef DBInit(cursor,database_schema_string,DataList):cursor.execute(database_schema_string)# 插入5条明确的模拟记录mock_data = DataListfor record in mock_data:cursor.execute('''INSERT INTO orders (id, customer_id, product_id, price, status, create_time, pay_time)VALUES (?, ?, ?, ?, ?, ?, ?)''', record)# 提交事务conn.commit()def select_all(cursor):# 查询orders表中的所有数据cursor.execute("SELECT * FROM orders")rows = cursor.fetchall()# 打印查询结果for row in rows:print(row)if __name__ == '__main__':client = OpenAI(api_key=os.getenv('DASHSCOPE_API_KEY'),base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")database_schema_string = """CREATE TABLE orders (id INT PRIMARY KEY NOT NULL, -- 主键,不允许为空customer_id INT NOT NULL, -- 客户ID,不允许为空product_id STR NOT NULL, -- 产品ID,不允许为空price DECIMAL(10,2) NOT NULL, -- 价格,不允许为空status INT NOT NULL, -- 订单状态,整数类型,不允许为空。0代表待支付,1代表已支付,2代表已退款create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 创建时间,默认为当前时间pay_time TIMESTAMP -- 支付时间,可以为空);"""DataList =  [(1, 1001, 'TSHIRT_1', 50.00, 0, '2023-10-12 10:00:00', None),(2, 1001, 'TSHIRT_2', 75.50, 1, '2023-10-16 11:00:00', '2023-08-16 12:00:00'),(3, 1002, 'SHOES_X2', 25.25, 2, '2023-10-17 12:30:00', '2023-08-17 13:00:00'),(4, 1003, 'HAT_Z112', 60.75, 1, '2023-10-20 14:00:00', '2023-08-20 15:00:00'),(5, 1002, 'WATCH_X001', 90.00, 0, '2023-10-28 16:00:00', None)
]conn = sqlite3.connect(':memory:')cursor = conn.cursor()DBInit(cursor,database_schema_string,DataList)select_all(cursor)# prompt = "上个月的销售额"#prompt = "统计每月每件商品的销售额"prompt = "哪个用户消费最高?消费多少?"messages = [{"role": "system", "content": "基于 order 表回答用户问题"},{"role": "user", "content": prompt}]response = get_sql_completion(client,database_schema_string,messages)if response.content is None:response.content = ""messages.append(response)if response.tool_calls is not None:tool_call = response.tool_calls[0]if tool_call.function.name == "ask_database":arguments = tool_call.function.argumentsargs = json.loads(arguments)print(args["query"])result = ask_database(cursor,args["query"])print(result)messages.append({"tool_call_id": tool_call.id,"role": "tool","name": "ask_database","content": str(result)})response = get_sql_completion(client,database_schema_string,messages)print("====最终回复====")print(response.content)

====最终回复====
消费最高的用户是用户ID为1001的用户,该用户的总消费金额为75.5元。

实践2:查询学生信息

随机生成学生信息,格式为[student_id, name, class, gender, scores, total, average, status, enrollment_date, graduation_date]

def generate_student_data(count):# 名字列表names = ["程健", "张伟", "李娜", "王强", "赵敏", "陈晨", "杨洋", "刘磊", "吴婷", "周杰"]# 学号base_student_id = 10000# 学生状态:1表示在读,2表示已毕业,0表示休学statuses = [1, 2, 0]# 入学时间:假设在过去的3年内enrollment_start_date = datetime(2020, 9, 1)enrollment_end_date = datetime(2023, 9, 1)# 生成学生数据students_data = []for i in range(count):name = random.choice(names)student_id = str(base_student_id + i)class_name = f"高三{random.randint(1, 5)}班"# 随机生成成绩scores = {"Chinese": random.randint(60, 100),"Math": random.randint(60, 100),"English": random.randint(60, 100),"Physics": random.randint(60, 100),"Chemistry": random.randint(60, 100),"Biology": random.randint(60, 100)}# 计算总分和平均分total = sum(scores.values())average = total / len(scores)gender = random.choice(["M","F"])# 随机选择学生状态(1: 在读,2: 已毕业,0: 休学)status = random.choice(statuses)# 生成入学时间enrollment_date = enrollment_start_date + (enrollment_end_date - enrollment_start_date) * random.random()enrollment_date_str = enrollment_date.strftime('%Y-%m-%d')# 毕业时间:如果已毕业,随机生成一个毕业日期graduation_date_str = Noneif status == 2:graduation_date = enrollment_date + timedelta(days=random.randint(700, 800))  # 假设毕业时间在入学后2-3年graduation_date_str = graduation_date.strftime('%Y-%m-%d')students_data.append((student_id, name, class_name, gender,str(scores), total, average, status, enrollment_date_str, graduation_date_str))return students_data

main函数

看注释

if __name__ == '__main__':client = OpenAI(api_key=os.getenv('DASHSCOPE_API_KEY'),base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")database_schema_string = """CREATE TABLE students (student_id INT NOT NULL,             -- 学号,不允许为空name VARCHAR(50) NOT NULL,                   -- 姓名,不允许为空gender CHAR(1) NOT NULL,                     -- 性别,单个字符,'M'表示男,'F'表示女class VARCHAR(50) NOT NULL,                  -- 班级,不允许为空scores JSON NOT NULL,                        -- 成绩,存储为JSON类型total INT NOT NULL,                          -- 总分average DECIMAL(5,2) NOT NULL,               -- 平均分status INT NOT NULL DEFAULT 1,               -- 学生状态,0表示休学,1表示在读,2表示已毕业enrollment_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,  -- 入学时间,默认为当前时间graduation_date TIMESTAMP DEFAULT NULL       -- 毕业时间,可以为空
);
"""
#创建数据库conn = sqlite3.connect(':memory:')cursor = conn.cursor()a = generate_student_data(5)
#加载数据并且检查是否完全加载成功DBInit(conn,cursor,database_schema_string,a)select_all(cursor)prompt = "找出英语最高分的班级和姓名"#prompt = “目前在读学生有多少人”#prompt = "计算一下高三4班的平均分是多少"messages = [{"role": "system", "content": "基于 student 表回答用户问题"},{"role": "user", "content": prompt}]response = get_sql_completion(client,database_schema_string,messages)if response.content is None:response.content = ""messages.append(response)print("====Function Calling====")print(response)if response.tool_calls is not None:tool_call = response.tool_calls[0]if tool_call.function.name == "ask_database":arguments = tool_call.function.arguments
#解决输出bug json无法处理[]这个符号if '["Query"]'in arguments:arguments = arguments.replace('["Query"]',"Query")print(arguments)args = json.loads(arguments)print("====SQL====")print(args["Query"])result = ask_database(cursor,args["Query"])print("====DB Records====")print(result)messages.append({"tool_call_id": tool_call.id,"role": "tool","name": "ask_database","content": str(result)})
#根据函数结果进行回复response = get_sql_completion(client,database_schema_string,messages)print("====最终回复====")print(response.content)

完整代码 

import json
import sqlite3
from openai import OpenAI
import os
import requests
import randomimport randomdef generate_student_data(count):# 名字列表names = ["程健", "张伟", "李娜", "王强", "赵敏", "陈晨", "杨洋", "刘磊", "吴婷", "周杰"]# 学号base_student_id = 10000# 学生状态:1表示在读,2表示已毕业,0表示休学statuses = [1, 2, 0]# 入学时间:假设在过去的3年内enrollment_start_date = datetime(2020, 9, 1)enrollment_end_date = datetime(2023, 9, 1)# 生成学生数据students_data = []for i in range(count):name = random.choice(names)student_id = str(base_student_id + i)class_name = f"高三{random.randint(1, 5)}班"# 随机生成成绩scores = {"Chinese": random.randint(60, 100),"Math": random.randint(60, 100),"English": random.randint(60, 100),"Physics": random.randint(60, 100),"Chemistry": random.randint(60, 100),"Biology": random.randint(60, 100)}# 计算总分和平均分total = sum(scores.values())average = total / len(scores)gender = random.choice(["M","F"])# 随机选择学生状态(1: 在读,2: 已毕业,0: 休学)status = random.choice(statuses)# 生成入学时间enrollment_date = enrollment_start_date + (enrollment_end_date - enrollment_start_date) * random.random()enrollment_date_str = enrollment_date.strftime('%Y-%m-%d')# 毕业时间:如果已毕业,随机生成一个毕业日期graduation_date_str = Noneif status == 2:graduation_date = enrollment_date + timedelta(days=random.randint(700, 800))  # 假设毕业时间在入学后2-3年graduation_date_str = graduation_date.strftime('%Y-%m-%d')students_data.append((student_id, name, class_name, gender,str(scores), total, average, status, enrollment_date_str, graduation_date_str))return students_datadef get_sql_completion(client,database_schema_string,messages, model="qwen-turbo"):response = client.chat.completions.create(model=model,messages=messages,temperature=0,  # 模型输出的随机性,0 表示随机性最小tools=[{"type": "function","function": {"name": "ask_database","description": "Use this function to answer user questions about business. \Output should be a fully formed SQL query.","parameters": {"type": "object","properties": {"Query": {"type": "string","description": f"""SQL query extracting info to answer the user's question.SQL should be written using this database schema:{database_schema_string}The query should be returned in plain text, not in JSON.The query should only contain grammars supported by SQLite.""",}},"required": "Query",}}}],)return response.choices[0].messagedef ask_database(cursor,query):cursor.execute(query)records = cursor.fetchall()return recordsdef DBInit(conn,cursor,database_schema_string,DataList):cursor.execute(database_schema_string)# 插入5条明确的模拟记录for record in DataList:cursor.execute('''INSERT INTO students (student_id, name, class, gender, scores, total, average, status, enrollment_date, graduation_date) VALUES (?,?,?,?,?,?,?,?,?,?)''', record)# 提交事务conn.commit()def select_all(cursor):# 查询orders表中的所有数据cursor.execute("SELECT * FROM students")rows = cursor.fetchall()# 打印查询结果for row in rows:print(row)if __name__ == '__main__':client = OpenAI(api_key=os.getenv('DASHSCOPE_API_KEY'),base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")database_schema_string = """CREATE TABLE students (student_id INT NOT NULL,             -- 学号,不允许为空name VARCHAR(50) NOT NULL,                   -- 姓名,不允许为空gender CHAR(1) NOT NULL,                     -- 性别,单个字符,'M'表示男,'F'表示女class VARCHAR(50) NOT NULL,                  -- 班级,不允许为空scores JSON NOT NULL,                        -- 成绩,存储为JSON类型total INT NOT NULL,                          -- 总分average DECIMAL(5,2) NOT NULL,               -- 平均分status INT NOT NULL DEFAULT 1,               -- 学生状态,0表示休学,1表示在读,2表示已毕业enrollment_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,  -- 入学时间,默认为当前时间graduation_date TIMESTAMP DEFAULT NULL       -- 毕业时间,可以为空
);
"""conn = sqlite3.connect(':memory:')cursor = conn.cursor()a = generate_student_data(5)DBInit(conn,cursor,database_schema_string,a)select_all(cursor)prompt = "找出英语最高分的班级和姓名"messages = [{"role": "system", "content": "基于 student 表回答用户问题"},{"role": "user", "content": prompt}]response = get_sql_completion(client,database_schema_string,messages)if response.content is None:response.content = ""messages.append(response)print("====Function Calling====")print(response)if response.tool_calls is not None:tool_call = response.tool_calls[0]if tool_call.function.name == "ask_database":arguments = tool_call.function.argumentsif '["Query"]'in arguments:arguments = arguments.replace('["Query"]',"Query")print(arguments)args = json.loads(arguments)print("====SQL====")print(args["Query"])result = ask_database(cursor,args["Query"])print("====DB Records====")print(result)messages.append({"tool_call_id": tool_call.id,"role": "tool","name": "ask_database","content": str(result)})response = get_sql_completion(client,database_schema_string,messages)print("====最终回复====")print(response.content)

输出信息为:

(10000, '张伟', 'F', '高三5班', "{'Chinese': 89, 'Math': 99, 'English': 75, 'Physics': 95, 'Chemistry': 98, 'Biology': 76}", 532, 88.66666666666667, 1, '2022-03-13', None)
(10001, '刘磊', 'M', '高三4班', "{'Chinese': 100, 'Math': 98, 'English': 88, 'Physics': 86, 'Chemistry': 86, 'Biology': 86}", 544, 90.66666666666667, 1, '2021-05-11', None)
(10002, '赵敏', 'M', '高三3班', "{'Chinese': 71, 'Math': 62, 'English': 93, 'Physics': 68, 'Chemistry': 94, 'Biology': 80}", 468, 78, 0, '2020-09-15', None)
(10003, '张伟', 'F', '高三5班', "{'Chinese': 83, 'Math': 86, 'English': 94, 'Physics': 84, 'Chemistry': 73, 'Biology': 70}", 490, 81.66666666666667, 2, '2021-03-27', '2023-03-20')
(10004, '周杰', 'M', '高三3班', "{'Chinese': 85, 'Math': 94, 'English': 89, 'Physics': 91, 'Chemistry': 76, 'Biology': 99}", 534, 89, 1, '2022-10-17', None)
====Function Calling====
ChatCompletionMessage(content='', refusal=None, role='assistant', function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='call_0f92904f36084c65b90b09', function=Function(arguments='{"Query": "SELECT s.class, s.name FROM students s WHERE s.scores->>\'English\' = (SELECT MAX(scores->>\'English\') FROM students) LIMIT 1;"}', name='ask_database'), type='function', index=0)])
{"Query": "SELECT s.class, s.name FROM students s WHERE s.scores->>'English' = (SELECT MAX(scores->>'English') FROM students) LIMIT 1;"}
====SQL====
SELECT s.class, s.name FROM students s WHERE s.scores->>'English' = (SELECT MAX(scores->>'English') FROM students) LIMIT 1;
====DB Records====
[('高三5班', '张伟')]
====最终回复====
英语最高分的学生所在的班级是高三5班,学生姓名是张伟。
 

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

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

相关文章

C++玩转物联网:认识树莓派Pico

在嵌入式编程的领域中,树莓派Pico、Arduino和ESP32都是广受欢迎的微控制器开发板,但它们在性能、功能和编程语言支持上各有特点。树莓派Pico是树莓派基金会推出的一款高性价比开发板,搭载了RP2040微控制器,支持标准的C库&#xff…

网络基础 - 网段划分篇

我们知道,IP 地址(IPv4 地址)由 “网络标识(网络地址)” 和 “主机标识(主机地址)” 两部分组成,例如 192.168.128.10/24,其中的 “/24” 表示从第 1 位开始到多少位属于网络标识,那么,剩余位就属于主机标识了&#xf…

当微软windows的记事本被AI加持

1985年,微软发布了Windows 1.0,推出了一款革命性的产品:记事本(Notepad)。这款软件旨在鼓励使用一种未来主义的新设备——鼠标,并让人们可以不依赖VI等键盘工具就能书写文本和编写代码。记事本因其简洁和高…

FastGPT + Dify,本地知识库快速部署!

本文主要内容 本地部署 Dify、FastGPT、OllamaDify、FastGPT 对接一些目前免费的 LLM 大语言 AI 模型Dify、FastGPT 对接 Ollama 本地模型 大家好,我是一名喜欢在家折腾本地部署的开发者,这次我来分享如何在本地运行 Ollama,并将它与 FastG…

黄仁勋对话孙正义:日本的AI新饼、Arm的AI野心与英伟达的东亚新机会

2020 年的软银世界大会上,孙正义与黄仁勋围绕「What’s Next for AI」展开了一次围炉对谈。黄仁勋穿着标志性的皮夹克坐在火堆旁,畅谈了将 Arm 纳入麾下的重要价值,孙正义也毫不吝啬赞美之词,称老黄在未来 10 年会达到史蒂夫 乔布…

什么是邻道泄露抑制比(ACLR)

今天和大家一起学习交流下邻道泄露抑制比(ACLR)指标,看看是否 让你产生一些新的灵感。 什么是ACLR? 邻道泄露抑制比是用于衡量下行的发射性能,是主信道的发射功率与测得的相邻信道的功率之比。ACLR值越低,表示相临信道的功率的干扰越小,说明系统的性能越好。一般用dB…

VMware和CentOS 7.6 Linux操作系统的安装使用

1. 安装VMware 安装VMware之前,有些电脑是需要去BIOS里修改设置开启cpu虚拟化设备支持才能安装。如果运气不好在安装过程中安装不了的话就自行百度吧。 打开 VMware 的官网: https://www.vmware.com/ 点击 product,往下滑找到 see desktop hypeerviso…

沈阳乐晟睿浩科技有限公司抖音小店保障

在当今这个数字化时代,电子商务行业以其便捷性、高效性和广泛的覆盖面,成为了推动经济发展的新引擎。沈阳乐晟睿浩科技有限公司,作为这股变革洪流中的佼佼者,凭借其深厚的技术实力、敏锐的市场洞察力和前瞻性的战略布局&#xff0…

学习日志009--面向对象的编程

一、面向对象 面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它使用“对象”来设计应用程序和计算机程序。它利用了抽象、封装、继承和多态这些概念。 一、面向对象编程的核心概念 封装(Encaps…

Sorvall Legend Micro 17 微量离心机产品特性

在科研实验中,微量离心机扮演着至关重要的角色。其中,Thermo Scientific Sorvall Legend MicroCL 17R 微量离心机凭借其出色的性能和紧凑的设计,成为众多科研人员的首选。 这款微量离心机体积小巧,非常适合空间有限的实验室。它支…

Camp4-L2:InternVL 多模态模型部署微调实践

书生浦语大模型实战营第四期:InternVL 多模态模型部署微调实践 教程链接:https://github.com/InternLM/Tutorial/tree/camp4/docs/L2/InternVL视频链接:https://www.bilibili.com/video/BV1nESCYWEnN/任务链接:https://github.co…

Unity内置渲染管线升级URP,使用ShaderGraph

问题描述 在内置渲染管线的工程中,导入之前通过ShaderGraph制作的Shader。 文件不可打开,我们需要升级成URP 过程记录 当前Unity版本 2022.3.49 安装Package 创建配置文件 Assets -> Rendering -> URP Asset 创建成功 修改配置 Edit->P…

MYSQL 修改表的结构

在项目的实际开发中,随着版本的迭代和需求的变更,经常会对表结构进行调整,比如向现有表中添加列,删除列,或者修改某列的列名、数据类型或长度,这时就需要对表进行修改操作。 修改表结构语法 ALTER TABLE t…

夹耳开放式耳机好用吗?夹耳开放式耳机推荐

夹耳式耳机作为开放式耳机的一种,在最近几年里深受大家欢迎。它能够受到大家欢迎的原因主要是其不入耳的特性,既有助于保护听力健康,又能让人尽情享受极致的音乐体验。不过,很多小伙伴不知道夹耳式耳机到底好不好用?夹…

React--》掌握openapi-typescript-codegen快速生成API客户端代码

今天深入探索一个神奇的工具——openapi-typescript-codegen。它不仅能够帮助你快速生成TS代码,还能让你的API请求更加高效、类型安全,让开发者摆脱手动编写冗长请求代码的困扰,专注于实现业务逻辑。接下来让我们一起来了解它的强大功能和使用…

【C++】类中的“默认成员函数“--构造函数、析构函数、拷贝构造、赋值运算符重载

目录 "默认"成员函数 概念引入: 一、构造函数 问题引入: 1)构造函数的概念 2)构造函数实例 3)构造函数的特性 4)关于默认生成的构造函数 (默认构造函数) 默认构造函数未完成初始化工作实例: 二…

中仕公考怎么样?事业编面试不去有影响吗?

事业编考试笔试已经通过,但是面试不去参加会有影响吗? 1. 自动放弃面试资格:未能按时出席事业单位的面试将被视为主动放弃该岗位的竞争机会。 2. 个人信誉问题:面试作为招聘流程的关键步骤,无故缺席可能被解释为诚信…

websocket初始化

websocket初始化 前言 上一集我们HTTP的ping操作就可以跑通了,那么我们还有一个协议---websocket,我们在这一集就要去完成我们websocket的初始化。 分析 我们在初始化websocket的之前,我们考虑一下,我们什么时候就要初始化我们…

Unity中HDRP设置抗锯齿

一、以前抗锯齿的设置方式 【Edit】——>【Project Settings】——>【Quality】——>【Anti-aliasing】 二、HDRP项目中抗锯齿的设置方式 在Hierarchy中——>找到Camera对象——>在Inspector面板上——>【Camera组件】——>【Rendering】——>【Pos…

Linux系统任务管理

文章目录 系统任务管理atcron 🏡作者主页:点击! 🤖Linux专栏:点击! ⏰️创作时间:2024年11月14日11点20分 系统任务管理 任务管理 计划执行:特定时间运行一次:at 定期执…