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

搭建自己的专属AI——使用Ollama+AnythingLLM+Python实现DeepSeek本地部署

前言

最近DeepSeek模型非常火,其通过对大模型的蒸馏得到的小模型可以较轻松地在个人电脑上运行,这也使得我们有机会在本地构建一个专属于自己的AI,进而把AI“调教”为我们希望的样子。本篇文章中我将介绍如何使用Ollama+AnythingLLM+Python实现DeepSeek的本地部署,并训练一个自己的专属AI。

工具介绍

我选用Ollama+AnythingLLM来管理训练AI模型,先来介绍一下这两个工具是什么。

Ollama

Ollama是一个模型管理工具,其logo是一只羊驼:

通过Ollama,我们可以轻松下载它所支持的模型,包括llama,qwen以及最近很火的deepseek-r1,并把它作为一个本地的模型提供商以便被其他程序所调用。

AnythingLLM

AnythingLLM是一个训练AI的工具,其支持的模型数量很多,并且有方便的图形化界面来上传训练AI所需要的文档。在AnythingLLM中,可以指定各种LLM,向量数据库以及Embedder。此外,它还提供了丰富的RESTful风格的API以供其他程序调用,使得外部程序可以轻松调用AnythingLLM训练出的AI。

整体架构

整体架构图如下:

 我们首先通过Ollama下载DeepSeek模型,然后可以基于DeepSeek来创建自己的AI模型(指定系统提示词之类的微调);然后将其导入到AnythingLLM中,最后通过Python来调用AnythingLLM提供的API实现和AI进行交互。

安装Ollama

第一步我们先来安装Ollama。

我们打开Ollama官网地址:https://ollama.com,点击Download按钮,再根据自己的系统选择合适的安装包下载,这里以Windows为例。

在安装之前,我们可以通过设置系统环境变量来指定Ollama模型下载的路径,如图所示:

我们建立一个名为OLLAMA_MODELS的环境变量,值为Ollama模型下载的路径。

由于Ollama的奇葩设计,其会安装在C盘下的默认目录,如果我们不想让他安装在默认目录的话,就不要使用双击的方式打开刚刚下好的安装包,而是通过cmd输入以下命令:

OllamaSetup.exe /DIR="绝对路径名"

在安装完成后,打开cmd,输入ollama,如看到以下命令,说明安装成功:

然后我们进入ollama的deepseek-r1模型页面:https://ollama.com/library/deepseek-r1,可以看到有多种模型以供选择:

这里的1.5b,7b,8b的含义是模型中参数的数量,b即billion,参数越多的模型越“聪明”,但需要的配置也就越高。我的电脑是i7 8700K+4070,因此我选择了14b的模型;32b的模型需要4090或3090才能跑起来,大家可以根据自己的配置来选择。

选择好模型之后点击红圈中的按钮,复制命令到剪贴板中,然后将其粘贴到cmd中,ollama就会开始下载模型了(此处大概率需要梯子,大家自行解决)。

在下载完成后,我们的cmd窗口会变成下图:

此时我们就可以开始和AI对话了,输入信息后回车,等待一会(取决于模型大小以及系统配置)后AI就会回复:

此时打开浏览器,输入http://localhost:11434,可以看到“Ollama is running”的页面,说明Ollama的服务已经启动了。

我们已经成功地下载好了deepseek-r1的蒸馏模型,下面我们可以写一个Model文件,来基于deepseek-r1来创建属于我们自己的AI。

新建一个文件,命名为ModelFile(文件名自己随意取),输入以下内容:

FROM deepseek-r1:14b
PARAMETER temperature 1
PARAMETER num_ctx 1024
PARAMETER mirostat_eta 0.5
PARAMETER top_k 60
PARAMETER top_p 0.95
SYSTEM """
你是一个我的个人助手,在回答问题时尽量贴近人类语言来回答问题。
"""

FROM关键字的含义为,从哪个大模型来创建这个AI,这里选择的是14b模型;

PARAMETER,指定参数的值。

  • temperature:范围为0-1,0比较一板正经,1更接近于真人。
  • num_ctx:设置使用下一个token的上下文窗口大小。 
  • mirostat_eta:影响算法对生成文本的响应速度,默认值为0.1。
  • top_k:减少生成无意义内容的概率,值越高答案越多样,默认值为40。
  • top_p:较高的值会使得生成文本更丰富,默认值为0.9。

完整的参数说明可以参考官方文档:https://github.com/ollama/ollama/blob/main/docs/modelfile.md

SYSTEM,系统提示词,我们可以在这里加一些对AI风格的描述,不需要花里胡哨的提示词,直接说人话就行。 

在写完这个文件后,我们运行以下命令,使用刚写好的ModelFile来创建自己的模型:

ollama create <模型名> -f <ModelFile全路径>

然后输入ollama list,可以看到我们新建的模型。 

安装AnythingLLM

我们刚才已经创建了本地的模型,但还没有对它进行自己独特的训练,这就需要我们安装AnythingLLM了。

打开AnythingLLM官网:https://anythingllm.com,点击Download for desktop按钮,根据自己的系统选择安装包下载,下载好后正常双击安装就好。

安装完成后运行AnythingLLM,在AnythingLLM Preference中进行相关配置,由于我已经配置过了,因此这里没有图了,口述一下:

LLM Provider选Ollama,Ollama Base URL输入http://127.0.0.1:11434,Chat Model Selection选我们刚才建好的模型,这个会作为默认模型;

Embedding Preference中,Provider默认就可以,如果你有别的选择也可以用自己的。

Vector Database中,Provider选LanceDB即可

然后我们就可以在左侧边栏新建工作区,开始对话了。

这里介绍一下AnythingLLM工作区的概念。在AnythingLLM中,一个工作区可以算为是一个独立的AI,使用相同的向量数据库;不同的工作区可以使用不同的模型,这样可以确保不同的AI相互独立,不会互相污染。每个工作区可以建立不同的Thread,这里的Thread为对话列表,而并非线程,相当于你可以和这个AI同时发起不同的对话。

下面我们来看看要如何训练这个AI。我们可以注意到,左边边栏的工作区右侧有个上传图标,点击它:

会弹出一个UI让我们选择训练的内容 

 我们可以选择上传文件,或者可以在下面的Fetch Website中输入网址。

我们新建一个文本文件,写这么一句话:

(这里不用张三的原因是之前我告诉AI张三是只猫) 

(温馨提示:你可以把李四换成你身边的任何人) 

点击上传,再选中这个文件,点击Move to Workspace,然后再点击右下方的Save and Embed按钮,AnythingLLM就会用这个文件来训练AI。 

 然后我们来问一声AI:李四是谁?

可以看出AI已经知道了李四是条狗:)

 我们也可以点击工作区右边的齿轮图标,在右边的向量数据库页签中查看向量数量:

训练的内容越多,这个值就越大。

 我们已经初步知道了如何在AnythingLLM客户端中训练AI以及和AI对话,下面我们来看一下如何用python来调用AnythingLLM的API。

我们在AnythingLLM左边栏下方点击扳手图标,进入设置界面,然后选择API密钥项:

然后点击右边的生成新的API密钥按钮,在弹出的画面中点击Create API key按钮,AnythingLLM就会生成一个新的密钥以供后续python调用使用。

 

编写Python代码

我们新建一个python工程,输入以下代码:

# main.py
import requests
import json
if __name__ == '__main__':while True:print('Send message >>>')message = input()json_data = {'message': message,'mode':'chat',}headers = {'Content-Type':'application/json','Authorization': 'Bearer <刚才生成的API Key>','accept':'application/json'}response = requests.post('http://localhost:3001/api/v1/workspace/<小写的工作区名称>/chat', headers=headers ,json=json_data)answer_dict = json.loads(response.content)# answer_dict已经拿到了AI返回的结果了,以下两行是去除掉输出的思考过程answer = answer_dict['textResponse'].__str__()final_answer = answer[answer.index('</think>')+len('</think>')+1:]# 打印AI的结果print(final_answer)

 这里要注意的是,headers里Authorization的值为‘Bearer <API Key>’的值,Bearer是固定不变的;json_data的mode的值有两种:chat和query。query只会根据你上传的文件来回答内容,你不告诉它的东西它是不会回答的,适合做特定领域内的AI;chat则既会根据已训练好的内容来回答,同时也会根据你上传的内容来回答,更适合通用AI。

在post的url中,workspace/后的参数是工作区内部名称,为小写的工作区名称,但如果你不清楚工作区的内部名称是什么,可以发送如下请求来在响应中查看所有的工作区信息:

response = requests.get('http://localhost:3001/api/v1/workspaces', headers=headers)

可以在如下地址查看所有的AnythingLLM的API文档:http://localhost:3001/api/docs/#/Workspaces/get_v1_workspaces 

然后我们可以在powershell中运行我们这个main.py,问出我们刚才的那个问题:李四是谁?

 AI回答正确!

结语

在此篇博客中,我们实现了基于Ollama+AnythingLLM+Python的deepseek本地部署,并对它进行了初步的训练,让它知道了李四是条狗。我们可以在此基础上进一步扩展我们想要的功能,如自制个webUI之类的,或者让它成为某个领域的UI,或者让它只是纯粹和我们逗闷子,希望大家都能通过此方法来训练出自己想要的AI。 

相关文章:

搭建自己的专属AI——使用Ollama+AnythingLLM+Python实现DeepSeek本地部署

前言 最近DeepSeek模型非常火&#xff0c;其通过对大模型的蒸馏得到的小模型可以较轻松地在个人电脑上运行&#xff0c;这也使得我们有机会在本地构建一个专属于自己的AI&#xff0c;进而把AI“调教”为我们希望的样子。本篇文章中我将介绍如何使用OllamaAnythingLLMPython实现…...

【AI绘画】MidJourney关键词{Prompt}全面整理

AI绘画整理&#xff0c;MidJourney关键词。喜欢AI绘画的朋友必备&#xff0c;建议收藏&#xff0c;后面用到时供查阅使用。 1、光线与影子篇 中 英 闪耀的霓虹灯 shimmeringneon lights 黑暗中的影子 shadows in the dark 照亮城市的月光 moonlightilluminatingthe cit…...

如何将IP切换到海外:详细指南

在现代互联网应用中&#xff0c;IP地址成为了网络通信和数据交换的基础。然而&#xff0c;很多时候&#xff0c;由于区域限制或隐私保护的需求&#xff0c;用户可能需要将自己的IP地址切换到海外。无论是为了绕过地域限制访问内容&#xff0c;还是为了提高隐私安全&#xff0c;…...

蓝牙技术在物联网中的应用有哪些

蓝牙技术凭借低功耗、低成本和易于部署的特性&#xff0c;在物联网领域广泛应用&#xff0c;推动了智能家居、工业、医疗、农业等多领域发展。 智能家居&#xff1a;在智能家居系统里&#xff0c;蓝牙技术连接各类设备&#xff0c;像智能门锁、智能灯泡、智能插座、智能窗帘等。…...

YOLOv8:目标检测与实时应用的前沿探索

随着深度学习和计算机视觉技术的迅速发展&#xff0c;目标检测&#xff08;Object Detection&#xff09;一直是研究热点。YOLO&#xff08;You Only Look Once&#xff09;系列模型作为业界广受关注的目标检测框架&#xff0c;凭借其高效、实时的特点&#xff0c;一直迭代更新…...

LeetCode:62.不同路径

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;62.不同路径 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &…...

范冰冰担任第75届柏林电影节主竞赛单元评委 共鉴电影佳作

近日&#xff0c;备受瞩目的柏林电影节迎来了新一届盛事&#xff0c;而华人演员范冰冰将以主竞赛单元评委身份亮相&#xff0c;引发了广泛关注。此前她已担任过戛纳国际电影节、东京国际电影节、圣塞巴斯蒂安国际电影节等众多电影节主竞赛单元评委。作为国际影坛的知名人物&…...

基于Python的药物相互作用预测模型AI构建与优化(下.代码部分)

四、特征工程 4.1 分子描述符计算 分子描述符作为量化分子性质的关键数值,能够从多维度反映药物分子的结构和化学特征,在药物相互作用预测中起着举足轻重的作用。RDKit 库凭借其强大的功能,为我们提供了丰富的分子描述符计算方法,涵盖了多个重要方面的分子性质。 分子量…...

【C语言】内存管理

【C语言】内存管理 文章目录 【C语言】内存管理1.概念2.库函数3.动态分配内存malloccalloc 4.重新调整内存的大小和释放内存reallocfree 1.概念 C 语言为内存的分配和管理提供了几个函数。这些函数可以在 <stdlib.h> 头文件中找到。 在 C 语言中&#xff0c;内存是通过…...

团体程序设计天梯赛-练习集——L1-029 是不是太胖了

前言 5分级别里面目前做到的最难的一道题&#xff0c;但是非常简单&#xff0c;5分的题看看写点代码就行了。 L1-029 是不是太胖了 据说一个人的标准体重应该是其身高&#xff08;单位&#xff1a;厘米&#xff09;减去100、再乘以0.9所得到的公斤数。已知市斤的数值是公斤数…...

appmatrix平台(一个汇集原创web APP的平台)服务规划

Appmatrix平台&#xff08;一个汇集原创web APP的平台&#xff09;服务规划 Web app是部署机器学习、深度学习等需要算力较大的应用的主要形式&#xff0c;一般都是独立、散在部署&#xff0c;对使用和相互交流造成了一定的不便。App Matrix将各类web应用汇集在一起&#xff0…...

vscode+WSL2(ubuntu22.04)+pytorch+conda+cuda+cudnn安装系列

最近在家过年闲的没事&#xff0c;于是研究起深度学习开发工具链的配置和安装&#xff0c;之前欲与天公试比高&#xff0c;尝试在win上用vscodecuda11.6vs2019的cl编译器搭建cuda c编程环境&#xff0c;最后惨败&#xff0c;沦为笑柄&#xff0c;痛定思痛&#xff0c;这次直接和…...

pytorch实现长短期记忆网络 (LSTM)

人工智能例子汇总&#xff1a;AI常见的算法和例子-CSDN博客 LSTM 通过 记忆单元&#xff08;cell&#xff09; 和 三个门控机制&#xff08;遗忘门、输入门、输出门&#xff09;来控制信息流&#xff1a; 记忆单元&#xff08;Cell State&#xff09; 负责存储长期信息&…...

洛谷P2651 添加括号III

题目链接&#xff1a;P2651 添加括号III - 洛谷 | 计算机科学教育新生态 题目难度:普及一 题目分析&#xff1a; a1肯定是分子&#xff0c;a2肯定是分母&#xff0c;那么尽可能多的是a3以后的变为分子&#xff0c;怎么办呢&#xff1f; a1/(a2/a3/a4/...)a1a3a4.../a2&#…...

Mysql进阶学习

目录 一.Mysql服务器内部架构(了解) 二.Mysql引擎 2.1 innodb引擎 2.2 myisam引擎 三.索引 3.1索引分类 3.2mysql索引数据结构 3.3聚簇索引和非聚簇索引 3.4回表查询 3.5索引下推 四.事务 数据库事务特征 事务隔离性&#xff0c;隔离级别 事务实现原理 五.锁 ①…...

白话DeepSeek-R1论文(二)| DeepSeek-R1:AI “升级打怪”,从“自学成才”到“全面发展”!

最近有不少朋友来询问Deepseek的核心技术&#xff0c;今天开始陆续针对DeepSeek-R1论文中的核心内容进行解读&#xff0c;并且用大家都能听懂的方式来解读。这是第二篇趣味解读。 DeepSeek-R1&#xff1a;AI “升级打怪”&#xff0c;从“自学成才”到“全面发展”&#xff01…...

WordPress eventon-lite插件存在未授权信息泄露漏洞(CVE-2024-0235)

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...

python 语音识别

目录 一、语音识别 二、代码实践 2.1 使用vosk三方库 2.2 使用SpeechRecognition 2.3 使用Whisper 一、语音识别 今天识别了别人做的这个app,觉得虽然是个日记app 但是用来学英语也挺好的,能进行语音识别,然后矫正语法,自己说的时候 ,实在不知道怎么说可以先乱说,然…...

2501,编写dll

DLL的优点 简单的说,dll有以下几个优点: 1)节省内存.同一个软件模块,若是源码重用,则会在不同可执行程序中编译,同时运行这些exe时,会在内存中重复加载这些模块的二进制码. 如果使用dll,则只在内存中加载一次,所有使用该dll的进程会共享此块内存(当然,每个进程会复制一份的d…...

Linux命令汇总

1、帮忙类 --help 直接在当前窗口显示帮助 command --help man 创建新窗口显示帮助 man command 2、目录操作类 2.1、查看目录 ls:以列表方式&#xff0c;查看目录中内容 tree:以树状方式&#xff0c;查看目录中内容 2.2、创建、删除文件及目录 touch&#xff1a;创建…...

漏洞扫描工具之xray

下载地址&#xff1a;https://github.com/chaitin/xray/releases 1.9.11 使用文档&#xff1a;https://docs.xray.cool/tools/xray/Scanning 与burpsuite联动&#xff1a; https://xz.aliyun.com/news/7563 参考&#xff1a;https://blog.csdn.net/lza20001103/article/details…...

Java手写简单Merkle树

Java手写Merkle树代码 package com.blockchain.qgy.component;import com.blockchain.qgy.model.MerkleTreeNode; import com.blockchain.qgy.util.SHAUtil;import java.util.*;public class MerkleTree<T> {//merkle树private List<MerkleTreeNode<T>> lis…...

vue之pinia组件的使用

1、搭建pinia环境 cnpm i pinia #安装pinia的组件 cnpm i nanoid #唯一id&#xff0c;相当于uuid cnpm install axios #网络请求组件 2、存储读取数据 存储数据 >> Count.ts文件import {defineStore} from piniaexport const useCountStore defineStore(count,{// a…...

升级到Mac15.1后pod install报错

升级Mac后&#xff0c;Flutter项目里的ios项目运行 pod install报错&#xff0c; 遇到这种问题&#xff0c;不要着急去百度&#xff0c;大概看一下报错信息&#xff0c;每个人遇到的问题都不一样。 别人的解决方法并不一定适合你&#xff1b; 下面是报错信息&#xff1a; #…...

力扣【1049. 最后一块石头的重量 II】Java题解(背包问题)

让石头分成重量相同的两堆&#xff08;尽可能相同&#xff09;&#xff0c;相撞之后剩下的石头就是最小的。进一步转化成容量为重量总喝一半的背包最多可以装多少质量的石头。这样就转化成了背包问题。 最后求结果时&#xff0c;我们所最多能装的时dp[target]&#xff0c;那另一…...

CSS 图像、媒体和表单元素的样式化指南

CSS 图像、媒体和表单元素的样式化指南 1. 替换元素&#xff1a;图像和视频1.1 调整图像大小示例代码&#xff1a;调整图像大小 1.2 使用 object-fit 控制图像显示示例代码&#xff1a;使用 object-fit 2. 布局中的替换元素示例代码&#xff1a;Grid 布局中的图像 3. 表单元素的…...

寒武纪MLU370部署deepseek r1

文章目录 前言一、平台环境准备二、模型下载三、环境安装四、代码修改五、运行效果 前言 DeepSeek-R1拥有卓越的性能&#xff0c;在数学、代码和推理任务上可与OpenAI o1媲美。其采用的大规模强化学习技术&#xff0c;仅需少量标注数据即可显著提升模型性能&#xff0c;为大模…...

Spring的AOP的JoinPoint和ProceedingJoinPoint

Spring的AOP的JoinPoint 在Spring AOP中&#xff0c;JoinPoint 是一个核心接口&#xff0c;用于表示程序执行过程中的一个连接点&#xff08;如方法调用或异常抛出&#xff09;。它提供了访问当前被拦截方法的关键信息的能力。以下是关于 JoinPoint 的详细说明&#xff1a; 一…...

每日一道算法题

题目&#xff1a;单词接龙 II 给定两个单词&#xff08;beginWord 和 endWord&#xff09;和一个字典 wordList&#xff0c;找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则&#xff1a; 每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的…...

Node.js——body-parser、防盗链、路由模块化、express-generator应用生成器

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…...

Java小白入门教程:两大类型的修饰符以及示例

目录 一、访问控制修饰符 1、default 就是啥都不写的那种 2、private 私有 3、public 公开 4、protected 受保护的 二、非访问控制修饰符 1、static 静态 2、final 最终 3、abstract 抽象 4、synchronized 锁 5、transient 瞬态 6、volatile 易变 一、访问控制修饰符…...

正则表达式入门

入门 1、提取文章中所有的英文单词 //1&#xff0e;先创建一个Pattern对象&#xff0c;模式对象&#xff0c;可以理解成就是一个正则表达式对象 Pattern pattern Pattern.compile("[a-zA-Z]"); //2&#xff0e;创建一个匹配器对象 //理解:就是 matcher匹配器按照p…...

云原生(五十二) | DataGrip软件使用

文章目录 DataGrip软件使用 一、DataGrip基本使用 二、软件界面介绍 三、附件文件夹到项目中 四、DataGrip设置 五、SQL执行快捷键 DataGrip软件使用 一、DataGrip基本使用 1. 软件界面介绍 2. 附加文件夹到项目中【重要】 3. DataGrip配置 快捷键使用&#xff1a;C…...

如何成为一名 Python 全栈工程师攻略

## 从零基础到全栈工程师&#xff1a;Python 学习路线&#xff08;细化版&#xff09; **目标&#xff1a;** 掌握 Python 编程&#xff0c;并能独立开发全栈应用。 **学习路线&#xff1a;** ### 第一阶段&#xff1a;Python 基础 (4-6 周) **目标&#xff1a;** 掌握 Pyt…...

无需云端服务器: 三步实现DeepSeek大模型本地化部署deepseek、Ollama和Chatbox

&#x1f389;无需云端&#xff01;三步实现DeepSeek大模型本地化部署&#x1f60e; 还在为云端AI服务的高昂费用而苦恼&#xff1f;是否总担心数据隐私会在云端泄露&#xff1f;别愁啦&#xff01;DeepSeek R1——这款与OpenAI o1性能相媲美的开源大模型&#xff0c;结合Olla…...

mysql教程

MySQL 教程 一、简介 MySQL 是一个开源的关系型数据库管理系统&#xff0c;广泛应用于各种规模的项目中。以下是一些基础知识和常用操作。 二、安装与启动 安装&#xff1a;根据操作系统选择合适的安装包进行安装。启动&#xff1a;通过命令行或服务管理工具启动 MySQL 服务…...

【自学笔记】JavaWeb的重点知识点-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 JavaWeb知识点一、基础概念二、项目结构三、Tomcat服务器四、数据库连接&#xff08;JDBC&#xff09;五、前端技术六、高级技术 总结 以下是JavaWeb知识点的MD格式…...

项目升级Sass版本或升级Element Plus版本遇到的问题

项目升级Sass版本或升级Element Plus版本遇到的问题 如果项目有需求需要用到高版本的Element Plus组件&#xff0c;则需要升级相对应的sass版本&#xff0c;Element 文档中有提示&#xff0c;2.8.5及以后得版本&#xff0c;sass最低支持的版本为1.79.0&#xff0c;所升级sass、…...

[EAI-028] Diffusion-VLA,能够进行多模态推理和机器人动作预测的VLA模型

Paper Card 论文标题&#xff1a;Diffusion-VLA: Scaling Robot Foundation Models via Unified Diffusion and Autoregression 论文作者&#xff1a;Junjie Wen, Minjie Zhu, Yichen Zhu, Zhibin Tang, Jinming Li, Zhongyi Zhou, Chengmeng Li, Xiaoyu Liu, Yaxin Peng, Chao…...

char和varchar的区别、varchar(?)中问号部分的含义、索引的作用

char和varchar的区别 char是固定长度类型&#xff0c;当输入字符不满设定的固定长度时依旧占用固定长度的空间&#xff0c;补充空字节。 最大长度为255个字符 优点&#xff1a;效率高&#xff0c;在涉及索引和排序时缺点&#xff1a;占用空间使用场景&#xff1a;存储密码的…...

.NET9增强OpenAPI规范,不再内置swagger

ASP.NETCore in .NET 9.0 OpenAPI官方文档ASP.NET Core API 应用中的 OpenAPI 支持概述 | Microsoft Learnhttps://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/openapi/overview?viewaspnetcore-9.0https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/ope…...

qsort应用

每天都会收到ai个礼物&#xff0c;到第n天的时候&#xff0c;然然发现他的宿舍被礼物搞得一团糟&#xff0c;所以然然打算到超市买一个柜子装礼物。但是超市有m个柜子&#xff0c;每个柜子都有不同的容量bi&#xff0c;然然想知道每个柜子最多可以装多少天的礼物&#xff08;可…...

仿真设计|基于51单片机的贪吃蛇游戏

目录 具体实现功能 设计介绍 51单片机简介 资料内容 仿真实现&#xff08;protues8.7&#xff09; 程序&#xff08;Keil5&#xff09; 全部内容 资料获取 具体实现功能 利用单片机8*8点阵实现贪吃蛇游戏的控制。 仿真演示视频&#xff1a; 51-基于51单片机的贪吃蛇游…...

Linux内核中的页面错误处理机制与按需分页技术

在现代操作系统中,内存管理是核心功能之一,而页面错误(Page Fault)处理机制是内存管理的重要组成部分。当程序访问一个尚未映射到物理内存的虚拟地址时,CPU会触发页面错误异常,内核需要捕获并处理这种异常,以决定如何响应,例如加载缺失的页面、处理权限错误等。Linux内…...

Baklib推动企业知识管理创新与效率提升的全面探讨

内容概要 在当今数字化转型的背景下&#xff0c;有效的知识管理显得尤为重要。知识是企业的核心资产&#xff0c;而传统的管理方式往往无法充分发挥这些知识的价值。因此&#xff0c;企业亟需一种高效、灵活的解决方案来应对这一挑战。Baklib作为一款先进的企业级知识管理平台…...

NLP自然语言处理通识

目录 ELMO 一、ELMo的核心设计理念 1. 静态词向量的局限性 2. 动态上下文嵌入的核心思想 3. 层次化特征提取 二、ELMo的模型结构与技术逻辑 1. 双向语言模型&#xff08;BiLM&#xff09; 2. 多层LSTM的层次化表示 三、ELMo的运行过程 1. 预训练阶段 2. 下游任务微调 四、ELMo的…...

计算机毕业设计Python+CNN卷积神经网络考研院校推荐系统 考研分数线预测 考研推荐系统 考研爬虫 考研大数据 Hadoop 大数据毕设 机器学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

【编译原理实验二】——自动机实验:NFA转DFA并最小化

本篇适用于ZZU的编译原理课程实验二——自动机实验&#xff1a;NFA转DFA并最小化&#xff0c;包含了实验代码和实验报告的内容&#xff0c;读者可根据需要参考完成自己的程序设计。 如果是ZZU的学弟学妹看到这篇&#xff0c;那么恭喜你&#xff0c;你来对地方啦&#xff01; 如…...

Hive:复杂数据类型之Map函数

Map函数 是Hive里面的一种复杂数据类型, 用于存储键值对集合。Map中的键和值可以是基础类型或复合类型&#xff0c;这使得Map在处理需要关联存储信息的数据时非常有用。 定义map时,需声明2个属性: key 和 value , map中是 key value 组成一个元素 key-value, key必须为原始类…...

C++ 中的引用(Reference)

在 C 中&#xff0c;引用&#xff08;Reference&#xff09;是一种特殊的变量类型&#xff0c;它提供了一个已存在变量的别名。引用在很多场景下都非常有用&#xff0c;比如函数参数传递、返回值等。下面将详细介绍 C 引用的相关知识。 1. 引用的基本概念和语法 引用是已存在…...