当前位置: 首页 > news >正文

书生·浦语大模型全链路开源体系-笔记作业2

全部写成了shell脚本,可以一键执行。

笔记:

1. 环境安装(InternStudio开发机)

# 1. 创建conda环境
studio-conda -o internlm-base -t demo
# 2. 激活conda环境
conda activate demo
# 3. 安装额外的依赖
pip install huggingface-hub==0.17.3
pip install transformers==4.34 
pip install psutil==5.9.8
pip install accelerate==0.24.1
pip install streamlit==1.32.2 
pip install matplotlib==3.8.3 
pip install modelscope==1.9.5
pip install sentencepiece==0.1.99

2. InternLM2-Chat-1.8B 模型下载与运行

按路径创建文件夹,并进入到对应文件目录中:

# 1. 创建项目路径
mkdir -p /root/demo
touch /root/demo/cli_demo.py
touch /root/demo/download_mini.py
cd /root/demo
# 2. 键入脚本内容
echo '
import os
from modelscope.hub.snapshot_download import snapshot_download# 创建保存模型目录
os.system("mkdir /root/models")# save_dir是模型保存到本地的目录
save_dir="/root/models"snapshot_download("Shanghai_AI_Laboratory/internlm2-chat-1_8b", cache_dir=save_dir, revision="v1.1.0")
' > /root/demo/download_mini.py
# 3. 脚本运行,下载模型
python /root/demo/download_mini.py

3. cli_demo运行

# 1. 键入文件内容
echo '
import torch
from transformers import AutoTokenizer, AutoModelForCausalLMmodel_name_or_path = "/root/models/Shanghai_AI_Laboratory/internlm2-chat-1_8b"tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True, device_map="cuda:0")
model = AutoModelForCausalLM.from_pretrained(model_name_or_path, trust_remote_code=True, torch_dtype=torch.bfloat16, device_map="cuda:0"
)
model = model.eval()system_prompt = """You are an AI assistant whose name is InternLM (书生·浦语).
- InternLM (书生·浦语) is a conversational language model that is developed by Shanghai AI Laboratory (上海人工智能实验室). It is designed to be helpful, honest, and harmless.
- InternLM (书生·浦语) can understand and communicate fluently in the language chosen by the user such as English and 中文.
"""messages = [(system_prompt, "")]print("=============Welcome to InternLM chatbot, type 'exit' to exit.=============")while True:input_text = input("\nUser  >>> ")input_text = input_text.replace(" ", "")if input_text == "exit":breaklength = 0for response, _ in model.stream_chat(tokenizer, input_text, messages):if response is not None:print(response[length:], flush=True, end="")length = len(response)
' > /root/demo/cli_demo.py
# 2. 激活conda环境
conda activate demo
# 3. 执行脚本
python /root/demo/cli_demo.py

等待模型加载完成,键入内容示例:

请创作一个 500 字而且剧情很反转的小故事

效果如下:(看起来不太反转,/狗头,故事挺不错)

4. cli_demo学习笔记

主要是学习一下cli_demo的流程:

1. 导入必要的库:

transformers: Hugging Face Transformers 库,提供了预训练的自然语言处理模型

AutoTokenizer:

  • 这是 Transformers 库中的一个类,用于自动加载适合输入模型的tokenizer。

  • 它可以根据模型名称或路径自动选择合适的tokenizer类,并初始化该tokenizer。

  • 主要用于将输入文本转换为模型可以理解的数字序列(token ID)。

  • 常见的功能包括:

    • from_pretrained(): 从指定的模型路径加载预训练的tokenizer。

    • encode(): 将输入文本转换为token ID序列。

    • decode(): 将token ID序列转换回文本。

    • pad(): 对输入序列进行填充,使其长度一致。

    • attention_mask: 生成一个注意力掩码,指示哪些部分需要注意。

AutoModelForCausalLM:

  • 这是 Transformers 库中的一个类,用于自动加载适合因果语言模型(Causal Language Model)任务的预训练模型。

  • 它可以根据模型名称或路径自动选择合适的模型类,并初始化该模型。

  • 这种类型的语言模型可以用于生成文本,因为它可以根据之前的输入预测下一个词。

  • 主要用于文本生成、对话系统等任务。

  • 常见的功能包括:

    • from_pretrained(): 从指定的模型路径加载预训练的模型。

    • forward(): 给定输入,返回模型的输出logits。

    • generate(): 基于输入生成新的文本。

    • stream_chat(): 在交互式对话中逐步生成响应。

标记器(tokenizer): 
详细看这里,huggingface官方解释的很详细:https://huggingface.co/learn/nlp-course/zh-CN/chapter2/4

  • Tokenizer是Transformers库中的一个核心组件,用于将原始文本转换为模型可以理解的数字序列(token ID)。

  • 它负责将文本分割成有意义的词汇单元(token),并将每个token映射到一个唯一的数字ID。

  • 这个过程称为"tokenization",是使用预训练语言模型的关键步骤之一。

设置系统提示 (system prompt):

  • system_prompt: 这是一个字符串,定义了 InternLM 助手的身份和属性。它会在对话开始时被传递给模型。

初始化消息列表:

  • messages = [(system_prompt, "")]: 将系统提示作为第一条消息初始化消息列表。

开始聊天循环:

  • while True: 进入一个无限循环,直到用户输入 "exit" 退出。

  • input_text = input("\nUser >>> "): 等待用户输入消息。

  • input_text = input_text.replace(" ", ""): 去除用户消息中的空格。

  • if input_text == "exit": break: 如果用户输入 "exit",则退出循环。

  • length = 0: 初始化响应长度为 0。

  • for response, _ in model.stream_chat(tokenizer, input_text, messages):: 使用模型生成响应。stream_chat 函数会逐步生成响应文本。

  • if response is not None: print(response[length:], flush=True, end=""): 打印响应中新生成的部分。flush=True 确保立即输出,end="" 避免换行。

  • length = len(response): 更新已输出的响应长度。

作业

4. 实战1:部署实战营优秀作品 八戒-Chat-1.8B 模型

a. 环境搭建
# 1. clone项目
cd /root/
git clone https://gitee.com/InternLM/Tutorial -b camp2
# git clone https://github.com/InternLM/Tutorial -b camp2
cd /root/Tutorial
# 2. 下载模型
python /root/Tutorial/helloworld/bajie_download.py
# 3. 启动模型
streamlit run /root/Tutorial/helloworld/bajie_chat.py --server.address 127.0.0.1 --server.port 6006
b. 本地连接端口,进行本地浏览器访问
# 从本地使用 ssh 连接 studio 端口
# 将下方端口号 38374 替换成自己的端口号
ssh -CNg -L 6006:127.0.0.1:6006 root@ssh.intern-ai.org.cn -p 38374
# 按照下面步骤,更改端口号,填入密码。

c. 跟八戒对话
我是猴哥,你是谁

5. 实战2:使用 Lagent 运行 InternLM2-Chat-7B 模型

Lagent 是一个开源的 LLM 智能体框架,允许使用者快速将一个大语言模型转换成智能体,并提供一些典型工具来激发大语言模型的潜能。Lagent 框架图如下:

Lagent 包含三个主要模块:agents,llms 和 actions。

  • agents 实现了多种智能体,如 ReAct,AutoGPT。
  • llms 支持多种大语言模型,包括在 HuggingFace 上托管的开源模型(Llama-2, InterLM)及 GPT3.5/4 等闭源模型。
  • actions 包含一系列工具,并提供工具执行器来统一管理。
a. 环境搭建,项目下载与部署
conda activate demo
cd /root/demo
git clone https://gitee.com/internlm/lagent.git
# git clone https://github.com/internlm/lagent.git
cd /root/demo/lagent
git checkout 581d9fb8987a5d9b72bb9ebd37a95efd47d479ac
pip install -e . # 源码安装
b. 使用 Lagent 运行 InternLM2-Chat-7B 模型为内核的智能体

Intern Studio 在 share 文件中预留了实践章节所需要的所有基础模型,包括 InternLM2-Chat-7b 、InternLM2-Chat-1.8b 等等。我们可以在后期任务中使用 share 文档中包含的资源,但是在本章节,为了能让大家了解各类平台使用方法,还是推荐同学们按照提示步骤进行实验。

cd /root/demo/lagent
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-7b /root/models/internlm2-chat-7b
sed -i 's/internlm\/internlm2-chat-20b/\/root\/models\/internlm2-chat-7b/gi' /root/demo/lagent/examples/internlm2_agent_web_demo_hf.py
streamlit run /root/demo/lagent/examples/internlm2_agent_web_demo_hf.py --server.address 127.0.0.1 --server.port 6006
c. 同4.2章节,本地连接端口进行访问
# 从本地使用 ssh 连接 studio 端口
# 将下方端口号 38374 替换成自己的端口号
ssh -CNg -L 6006:127.0.0.1:6006 root@ssh.intern-ai.org.cn -p 38374
d. 运行程序

输入:请解方程 X^2=81 之中 X 的结果

运行结果:

6. 实战3:实践部署 浦语·灵笔2 模型

创建图文并茂的文章,遥遥领先。

a. 初步介绍 XComposer2 相关知识

浦语·灵笔2 是基于 书生·浦语2 大语言模型研发的突破性的图文多模态大模型,具有非凡的图文写作和图像理解能力,在多种应用场景表现出色,总结起来其具有:

  • 自由指令输入的图文写作能力: 浦语·灵笔2 可以理解自由形式的图文指令输入,包括大纲、文章细节要求、参考图片等,为用户打造图文并貌的专属文章。生成的文章文采斐然,图文相得益彰,提供沉浸式的阅读体验。
  • 准确的图文问题解答能力:浦语·灵笔2 具有海量图文知识,可以准确的回复各种图文问答难题,在识别、感知、细节描述、视觉推理等能力上表现惊人。
  • 杰出的综合能力: 浦语·灵笔2-7B 基于 书生·浦语2-7B 模型,在13项多模态评测中大幅领先同量级多模态模型,在其中6项评测中超过 GPT-4V 和 Gemini Pro。

b. 配置基础环境
# 激活环境,安装依赖包
conda activate demo
# 补充环境包
pip install timm==0.4.12 sentencepiece==0.1.99 markdown2==2.4.10 xlsxwriter==3.1.2 gradio==4.13.0 modelscope==1.9.5# 克隆项目
cd /root/demo
git clone https://gitee.com/internlm/InternLM-XComposer.git
# git clone https://github.com/internlm/InternLM-XComposer.git
cd /root/demo/InternLM-XComposer
git checkout f31220eddca2cf6246ee2ddf8e375a40457ff626# 创建软链
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm-xcomposer2-7b /root/models/internlm-xcomposer2-7b
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm-xcomposer2-vl-7b /root/models/internlm-xcomposer2-vl-7b# 运行程序
cd /root/demo/InternLM-XComposer
python /root/demo/InternLM-XComposer/examples/gradio_demo_composition.py  \
--code_path /root/models/internlm-xcomposer2-7b \
--private \
--num_gpus 1 \
--port 6006
c. 同4.2章节,本地连接端口进行访问

运行程序执行到这里后再进行ssh连接

# 从本地使用 ssh 连接 studio 端口
# 将下方端口号 38374 替换成自己的端口号
ssh -CNg -L 6006:127.0.0.1:6006 root@ssh.intern-ai.org.cn -p 38374
d. 运行程序

输入:

根据以下标题:“中国水墨画:流动的诗意与东方美学”,创作长文章,字数不少于800字。请结合以下文本素材:
“水墨画是由水和墨调配成不同深浅的墨色所画出的画,是绘画的一种形式,更多时候,水墨画被视为中国传统绘画,也就是国画的代表。也称国画,中国画。墨水画是中国传统画之一。墨水是国画的起源,以笔墨运用的技法基础画成墨水画。线条中锋笔,侧锋笔,顺锋和逆锋,点染,擦,破墨,拨墨的技法。墨于水的变化分为五色。画成作品,题款,盖章。就是完整的墨水画作品。
基本的水墨画,仅有水与墨,黑与白色,但进阶的水墨画,也有工笔花鸟画,色彩缤纷。后者有时也称为彩墨画。在中国画中,以中国画特有的材料之一,墨为主要原料加以清水的多少引为浓墨、淡墨、干墨、湿墨、焦墨等,画出不同浓淡(黑、白、灰)层次。别有一番韵味称为“墨韵”。而形成水墨为主的一种绘画形式。”

运行结果:

7. 实战4:图片理解

Ctrl+C终止上面程序,继续输入指令,启动 InternLM-XComposer2-vl:

conda activate democd /root/demo/InternLM-XComposer
python /root/demo/InternLM-XComposer/examples/gradio_demo_chat.py  \
--code_path /root/models/internlm-xcomposer2-vl-7b \
--private \
--num_gpus 1 \
--port 6006

打开 http://127.0.0.1:6006 (上传图片后) 键入内容示例如下:

请分析一下图中内容

实践效果如下图所示:

相关文章:

书生·浦语大模型全链路开源体系-笔记作业2

全部写成了shell脚本,可以一键执行。 笔记: 1. 环境安装(InternStudio开发机) # 1. 创建conda环境 studio-conda -o internlm-base -t demo # 2. 激活conda环境 conda activate demo # 3. 安装额外的依赖 pip install huggingface-hub0.17.3 pip inst…...

手把手教你发布你的第一个npm插件包

在开源的世界里,npm(Node Package Manager)不仅是JavaScript生态中不可或缺的一部分,也是全球最大的软件注册表,它使得分享和复用代码变得异常简单。如果你有一个很棒的想法或者实用的功能想要封装成一个npm包供他人使…...

Docker-compose 编排lnmp(dockerfile) 完成Wordpress

一、部署 Nginx 镜像 1. 建立工作目录 mkdir /opt/lnmp/nginx -pcd /opt/lnmp/nginx#上传 nginx 安装包 nginx-1.12.0.tar.gz#上传 wordpress 服务包 wordpress-4.9.4-zh_CN.tar.gz mkdir /opt/lnmp/nginx/htmltar zxvf wordpress-4.9.4-zh_CN.tar.gz -C /opt/lnmp/nginx/html…...

秋招突击——算法打卡——5/28——复习{Z字形变换、两数之和}——新做:{整数反转、字符串转整数}

文章目录 复习Z字形变换实现代码参考代码 两数之和复习代码 新作整数反转个人实现实现代码 参考做法字符串转换整数个人解法 分析总结 复习 Z字形变换 实现代码 这里使用了他的思想,但是没有用他的代码,虽然已经比上次简洁了,但是还是不够&…...

PPT设置为本框的默认格式以及固定文本框

调整文本框固定位置 双击文本框之后勾选如下三个位置 设置文本框为默认 在调整好文本框的基本性质后,设置为默认即可...

计算机基础(5)——进制与进制转换

💗计算机基础系列文章💗 👉🍀计算机基础(1)——计算机的发展史🍀👉🍀计算机基础(2)——冯诺依曼体系结构🍀👉&#x1f34…...

发现情绪背后的真实心理需求,选择适合你的情绪调节方式

一、教程描述 心态对人的生活质量以及身体健康等多方面,都会产生非常重要的影响,受到不良情绪的影响,人的心态也会发生一定的变化。对于处于不良情绪状态的人来讲,应该重视学会调整自己的情绪。在心理学上,人的每种情…...

代理记账公司的五大问题及其解决方案

代理记账公司是现代企业管理中不可或缺的一部分,它为企业的日常运营提供了专业、高效的服务,随着行业的发展和竞争的加剧,代理记账公司的面临的问题也日益突出,这些问题主要表现在以下几个方面: 业务流程不规范 许多代…...

TH方程学习 (7)

一、内容介绍 TH存在广泛应用,在下面案例中,将介绍几种相对运动模型,斜滑接近模型,本节学习斜滑接近制导方法能够对接近时间、接近方向以及自主接近过程的相对速度进行控制。施加脉冲时刻追踪器的位置连线可构成一条直线&#xf…...

2024最新python入门教程|python安装|pycharm安装

前言:在安装PyCharm之前,首先需要明确PyCharm是一款功能强大的Python集成开发环境(IDE),由JetBrains公司开发。PyCharm旨在通过提供智能代码补全、语法高亮、代码检查、快速导航和重构等丰富的编码辅助工具&#xff0c…...

docker架构

docker架构 Docker daemon 是Docker最核心的后台进程,它负责响应来自Dockerclient的请求,然后将这此请求翻译成系统调用完成容器管理操作。该进程会在后台后启动一个APIServer,负责接收由 Dockerclient发送的请求;接收到的请求将通…...

使用Java进行网络采集:代理IP与参数传递详解

在Java编程语言中,参数传递机制是一个常见的讨论话题。理解这一点对于编写高效且无错误的Java代码至关重要。本文将探讨Java的参数传递机制,解析其究竟是“按引用传递”还是“按值传递”,并结合网络爬虫技术的实例,展示如何在实际…...

多功能光时域反射仪的工作原理

6426A-2101多功能光时域反射仪是新一代掌上型智能化光纤通信测量仪器,具有强大的功能和广泛的应用领域。它能够显示光纤及光缆的损耗分布曲线图,测量光纤及光缆的多种关键参数,包括长度、损耗、接续质量等,为光纤通信系统的工程施…...

目标检测数据集 - 海洋垃圾检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍:海洋垃圾检测数据集,真实拍摄海洋海底场景高质量垃圾检测图片数据,涉及场景丰富,比如海底塑料垃圾数据、海底铁制品罐状垃圾数据、海底纸张垃圾数据、海洋生物和海底垃圾同框数据、海底探索仪器和海底垃圾同框数据、海…...

如何进行Java程序的性能优化

在软件开发中,性能优化是一个至关重要的环节,它直接影响到用户体验、系统稳定性和资源消耗。对于Java程序而言,性能优化更是不可或缺的一部分。下面,我将从技术难点、面试官关注点、回答吸引力和代码举例四个方面,详细…...

Echarts柱状图数据太多,自定义长度之后,自适应浏览器缩放

不知道是不是最优解,但是当前解决了我遇到的问题,如有更好的方法,希望看到这篇文章的同学可以不吝指导一番,非常感谢 1、问题描述: 因Ecahrts柱状图数据有时多有时少,所以在数据达到一定程度之后&#xff…...

小白级教程—安装Ubuntu 20.04 LTS服务器

下载 本教程将使用20.04版进行教学 由于官方速度可能有点慢,可以下方的使用清华镜像下载 https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/ 点击20.24版本 选择 ubuntu-20.04.6-live-server-amd64.iso 新建虚拟机 下载好后 我们使用 VMware 打开它 这里选…...

9、中华人民共和国个人信息保护法

第一章 总  则 第一条 为了保护个人信息权益,规范个人信息处理活动,促进个人信息合理利用,根据宪法,制定本法。 第二条 自然人的个人信息受法律保护,任何组织、个人不得侵害自然人的个人信息权益。 第三条 在中华人民共和国境内处理自然人个人信息的活动,适用本…...

经典回归模型及Python实现方法

文章目录 1. 引言2. 经典回归模型及Python实现2.1 线性回归 Linear Regression2.2 多项式回归 Polynomial Regression2.3 逻辑回归 Logistic Regression2.4 岭回归 Ridge Regression2.5 套索回归 LASSO Regression2.6 弹性网络回归 Elastic Net2.7 决策树回归 Decision Tree Re…...

Git 保留空文件夹结构

假设有如下 helloworld 项目结构: helloworld|--.git|--.gitignore|--Builds|--WebGL|--iOS|--Android现在有个需求,在上传到 github 仓库时,只想保留 WebGL、iOS、Android 文件夹的结构,不想要里面的内容,可以按以下…...

【吊打面试官系列】MySQL 中有哪几种锁?

大家好,我是锋哥。今天分享关于 【MySQL 中有哪几种锁?】面试题,希望对大家有帮助; MySQL 中有哪几种锁? 1、表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,…...

小巧、免费高级分类整理桌面图标和文件程序

一、简介 1、专为Windows操作系统设计的桌面整理工具,旨在帮助用户更好地管理和整理桌面上的图标和文件。这款软件以其小巧、免费且无广告的特点受到用户的欢迎,尤其适合那些希望保持桌面整洁、提高工作效率的用户。 二、下载 1、下载地址: 官网链接:https://www.coodesker…...

Elasticsearch挂掉后,如何快速恢复数据

目录 一、Elasticsearch使用 二、实体类 2.1 mysql 实体类 2.2 Elasticsearch实体类 三、XXL-job定时执行 一、Elasticsearch使用 当我们做搜索功能时,如果为了提高查询效率,通常使用Elasticsearch搜索引擎加快搜索效率。以搜索商品为例,我…...

eNSP学习——连接RIP与OSPF网络、默认路由

目录 相关主要命令 实验一、连接RIP与OSPF网络 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、搭建RIP和OSPF网络 3、配置双向路由引入 4、手工配置引入时的开销值 实验二、使用OSPF、RIP发布默认路由 原理介绍 实验目的 实验内容 实…...

工具MyBatis Generator(MBG)

MyBatis Generator(MBG),这是官方帮我们提供的一个自动生成代码的工具,前面的课程中,我们都是脑袋里想好,pojo有哪些属性,属性的类型是什么,对应的数据表中的字段名字是什么,匹配的类型是什么..…...

NeuralForecast 模型的参数 windows_batch的含义

NeuralForecast 模型的参数 windows_batch的含义 flyfish import pandas as pd import numpy as npAirPassengers np.array([112.0, 118.0, 132.0, 129.0, 121.0, 135.0, 148.0, 148.0, 136.0, 119.0],dtypenp.float32, )AirPassengersDF pd.DataFrame({"unique_id&qu…...

【记录】打印|用浏览器生成证件照打印PDF,打印在任意尺寸的纸上(简单无损!)

以前我打印证件照的时候,我总是在网上找在线证件照转换或者别的什么。但是我今天突然就琢磨了一下,用 PDF 打印应该也可以直接打印出来,然后就琢磨出来了,这么一条路大家可以参考一下。我觉得比在线转换成一张 a4 纸要方便的多&am…...

【python实现】实时监测GPU,空闲时自动执行脚本

文章目录 代码 代码 # author: muzhan # contact: levio.pkugmail.com import os import sys import time cmd nohup python -u train_post_2d_aut.py > output1.log & # gpu空闲时,需要执行的脚本命令 def gpu_info():gpu_status os.popen(nvidia-smi…...

chrome 浏览器历史版本下载

最近做一个项目,要使用到chrome浏览器比较久远的版本,在网上查找资源时,发现chrome比较老的版本的安装包特别难找,几经寻找,总算找到,具体方法如下 打开百度,搜索关键字【chrome版本号‘浏览迷’】,例如“chrome41浏览迷”,找到“全平台”开头的链接&am…...

【设计模式】工厂模式(创建型)⭐⭐⭐

文章目录 1.概念1.1 什么是工厂模式1.2 优点与缺点 2.实现方式2.1 简单工厂模式(Simple Factory)2.2 简单工厂模式缺点2.3 抽象工厂模式(Abstract Factory Pattern) 3 Java 哪些地方用到了工厂模式4 Spring 哪些地方用到了工厂模式…...

易语言可以做api网站对接吗/重庆百度推广的代理商

目录EFCore调优篇注一.DBFirst1.引入程序包2.DFFirst命令执行:3.命令说明二.性能优化篇1.多活动结果集连接复用2.批处理语句3.非跟踪查询4.非跟踪增加5.非跟踪修改6.非跟踪删除7.正确使用Find/FirstOrDefault8.区分IQueryable和IEnumerable9.导航属性延迟查询&#…...

asp.net 房产局政府网站模板/搜索引擎的四个组成部分及作用

因為網頁上有個欄位允許使用者輸入多行文字,可是如果只是單純的把該欄位直接跟Label Binding起來時,顯示出來的結果不會有換行的效果,只要改用自行繫結,然後用下面的方法,把輸出文字裡面的換行文字"\n"轉換成…...

怎样用java做网站/谷歌chrome浏览器

https://segmentfault.com/a/1190000019149860...

wordpress 手机 登陆不了/seo引擎搜索网站

多线程里为啥要用异步编程?因为异步到其他线程里,不阻塞主线程,让主线程处理更多的事情。 //开启一个定时任务线程,挂载消费者任务。 //定时任务不就是time定时器,对没错。这个的区别是time运行在主线程中&#xff0c…...

梅州市工程建设交易中心网站/网站策划运营

打开背包,打开商店,里面的东西琳琅满目,怎么实现呢?直接通过UI加载?是不是太消耗内存啦,此时我们就读表加载 商品表 Item表 从上面shop表中读取序列号,在Item表中进行查找加载 c#读表的名字要与表的名字一致哟(其实也完全不一样,人家前面多个Dr嘛,哈哈) 是不是在哪见过?对,就…...

政务网站的建设/seo排名工具给您好的建议下载官网

👇👇关注后回复 “进群” ,拉你进程序员交流群👇👇来源丨小集https://mp.weixin.qq.com/s/o8IeIoEJUXV9i9ILm3msOASwift 官方在上个月 25 号宣布将 Swift 的 Bug 清单迁移到 Github 问题清单中。目前,第一阶…...