开源模型搭建

本地部署 DeepSeek-R1 大模型! **1、本地部署,**我们可以通过Ollama来进行安装 Ollama 官方版:【点击前往】 Web UI 控制端【点击安装】 安装命令 1.5B Qwen DeepSeek R1 ollama run deepseek-r1:1.5b 7B Qwen DeepSeek R1 ollama run deepseek-r1:7b 8B Llama DeepSeek R1 ollama run deepseek-r1:8b 14B Qwen DeepSeek R1 ollama run deepseek-r1:14b 32B Qwen DeepSeek R1 ollama run deepseek-r1:32b 70B Llama DeepSeek R1 ollama run deepseek-r1:70b

2025年1月28日 · 1 分钟 · Creeper

fastapi用户模型备份

用户模型 用户的信息: 姓名 性别 # -*- coding:utf-8 -*- """ @Des: 基础模型 """ from tortoise import fields from tortoise.models import Model class TimestampMixin(Model): create_time = fields.DatetimeField(auto_now_add=True, description='创建时间') update_time = fields.DatetimeField(auto_now=True, description="更新时间") class Meta: abstract = True class UserWechat(TimestampMixin): city = fields.CharField(null=True, max_length=255, description='城市') country = fields.CharField(null=True, max_length=255, description='国家') headimgurl = fields.CharField(null=True, max_length=255, description='微信头像') nickname = fields.CharField(null=True, max_length=255, description='微信昵称') openid = fields.CharField(unique=True, max_length=255, description='openid') unionid = fields.CharField(unique=True, null=True, max_length=255, description='unionid') province = fields.CharField(null=True, max_length=255, description='省份') sex = fields.IntField(null=True, description='性别') user: fields.OneToOneRelation["UserWechat"] = \ fields.OneToOneField("base.User", related_name="wechat", on_delete=fields.CASCADE) class Meta: table_description = "用户微信" table = "user_wechat" class User(TimestampMixin): role: fields.ManyToManyRelation["Role"] = \ fields.ManyToManyField("base.Role", related_name="user", on_delete=fields.CASCADE) username = fields.CharField(null=True, max_length=20, description="用户名") user_type = fields.BooleanField(default=False, description="用户类型 True:超级管理员 False:普通管理员") password = fields.CharField(null=True, max_length=255) nickname = fields.CharField(default='binkuolo', max_length=255, description='昵称') user_phone = fields.CharField(null=True, description="手机号", max_length=11) user_email = fields.CharField(null=True, description='邮箱', max_length=255) full_name = fields.CharField(null=True, description='姓名', max_length=255) user_status = fields.IntField(default=0, description='0未激活 1正常 2禁用') header_img = fields.CharField(null=True, max_length=255, description='头像') sex = fields.IntField(default=0, null=True, description='0未知 1男 2女') remarks = fields.CharField(null=True, max_length=30, description="备注") client_host = fields.CharField(null=True, max_length=19, description="访问IP") wechat: fields.OneToOneRelation[UserWechat] class Meta: table_description = "用户表" table = "user" class Role(TimestampMixin): user: fields.ManyToManyRelation[User] role_name = fields.CharField(max_length=15, description="角色名称") access: fields.ManyToManyRelation["Access"] = \ fields.ManyToManyField("base.Access", related_name="role", on_delete=fields.CASCADE) role_status = fields.BooleanField(default=False, description="True:启用 False:禁用") role_desc = fields.CharField(null=True, max_length=255, description='角色描述') class Meta: table_description = "角色表" table = "role" class Access(TimestampMixin): role: fields.ManyToManyRelation[Role] access_name = fields.CharField(max_length=15, description="权限名称") parent_id = fields.IntField(default=0, description='父id') scopes = fields.CharField(unique=True, max_length=255, description='权限范围标识') access_desc = fields.CharField(null=True, max_length=255, description='权限描述') menu_icon = fields.CharField(null=True, max_length=255, description='菜单图标') is_check = fields.BooleanField(default=False, description='是否验证权限 True为验证 False不验证') is_menu = fields.BooleanField(default=False, description='是否为菜单 True菜单 False不是菜单') class Meta: table_description = "权限表" table = "access" class AccessLog(TimestampMixin): user_id = fields.IntField(description="用户ID") target_url = fields.CharField(null=True, description="访问的url", max_length=255) user_agent = fields.CharField(null=True, description="访问UA", max_length=255) request_params = fields.JSONField(null=True, description="请求参数get|post") ip = fields.CharField(null=True, max_length=32, description="访问IP") note = fields.CharField(null=True, max_length=255, description="备注") class Meta: table_description = "用户操作记录表" table = "access_log" class SystemParams(TimestampMixin): params_name = fields.CharField(unique=True, max_length=255, description="参数名") params = fields.JSONField(description="参数") class Meta: table_description = "系统参数表" table = "system_params"

2024年10月23日 · 2 分钟 · Creeper

mklink的使用

mklink 是 Windows 操作系统中的命令行工具,用于创建符号链接(symbolic link)或硬链接(hard link)。这两种链接类型都是文件系统中的对象引用,它们允许将一个文件或目录链接到另一个位置,而无需复制实际的数据。 符号链接(Symbolic Link): 符号链接是一种指向目标文件或目录的快捷方式。它类似于快捷方式(Shortcut),但是在操作系统级别上更为透明。 符号链接可以链接到文件或目录,甚至可以链接到网络位置。 符号链接支持相对路径和绝对路径。 例如,创建符号链接的命令如下: mklink /d [目标] [源] 其中 /d 表示创建目录的符号链接,[目标] 是新链接的路径,[源] 是源文件或目录的路径。 硬链接(Hard Link): 硬链接是在文件系统中创建的两个或多个文件条目,它们都指向相同的实际数据块。 硬链接只能链接到同一文件系统中的文件,并且不能链接到目录。 删除原始文件不会删除硬链接,只有在删除所有硬链接后,实际数据块才会被释放。 例如,创建硬链接的命令如下: mklink [目标] [源] [目标] 是新链接的路径,[源] 是源文件的路径。 这些链接可以用来简化文件和目录的组织,创建备份,或者在不同位置共享相同的数据。需要注意的是,创建符号链接和硬链接通常需要管理员权限。 mklink /j 是 Windows 操作系统中的命令,用于创建一个目录的符号链接,也被称为“联接”(junction)。这个命令的作用是在文件系统中创建一个目录的符号链接,使得该链接指向另一个目录,而不是一个文件。这类似于硬链接,但是是针对目录的链接。 具体的命令格式如下: mklink /j [目标] [源] 其中: /j 表示创建目录的符号链接。 [目标] 是新链接的路径,即符号链接将被创建的位置。 [源] 是源目录的路径,即符号链接将指向的位置。 这种符号链接的创建可以使得一个目录的内容在文件系统中出现在多个位置,而实际上只占用一份磁盘空间。这在一些情况下是很有用的,例如,你可能想要在不同的位置使用相同的数据,但不想在每个位置都复制整个目录的内容。符号链接允许你在这些位置之间共享相同的目录结构。 需要注意的是,创建符号链接通常需要管理员权限。 mklink /d 和 mklink /j 是 Windows 操作系统中用于创建符号链接的两个不同的选项,它们主要用于链接目录。以下是它们之间的主要区别: 目标存在时的行为: /d: 创建目录的符号链接。可以链接到一个已经存在的目录,但要求目标目录不存在。即,如果目标目录已经存在,无法创建 /d 类型的符号链接。 /j: 创建目录的符号链接(联接)。可以链接到一个已经存在的目录,并且不要求目标目录不存在。如果目标目录已经存在,/j 会将链接指向现有目录,而不创建新目录。 支持的文件系统: /d: 可以在所有支持 NTFS 文件系统的版本上使用。 /j: 主要用于支持 NTFS 文件系统的版本,特别是用于链接目录到一个卷(卷是文件系统上的一个单独的逻辑存储单元)。 用途: ...

2024年1月13日 · 1 分钟 · Creeper

OpenWrt的编译和使用

OpenWrt的编译和使用 lede仓库源码和教程 OpenWrt的编译和使用 Flippy 的 Openwrt 打包源码 Flippy 的 Openwrt 打包源码 passwall仓库 kenzok8 仓库 里面有armbian和openwrt以及内核 ophub 注意 不要用 root 用户进行编译 国内用户编译前最好准备好梯子 默认登陆IP 192.168.1.99 密码 password 编译命令 首先装好 Linux 系统,推荐 Debian 11 或 Ubuntu LTS 安装编译依赖 sudo apt update -y sudo apt full-upgrade -y sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \ bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \ git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \ libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \ mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \ libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \ vim wget xmlto xxd zlib1g-dev python3-setuptools 下载源代码,更新 feeds 并选择配置 git clone https://github.com/coolsnowwolf/lede cd lede ./scripts/feeds update -a ./scripts/feeds install -a make menuconfig 下载 dl 库,编译固件 (-j 后面是线程数,第一次编译推荐用单线程) make download -j8 make V=s -j1 本套代码保证肯定可以编译成功。里面包括了 R23 所有源代码,包括 IPK 的。 ...

2023年10月22日 · 3 分钟 · Creeper

docker相关帮助

要Docker容器中运行Python程序 安装Docker: 如果您尚未安装Docker,首先需要安装Docker。可以参考Docker官方网站上的安装指南,选择适合您操作系统的版本。 创建一个Dockerfile: 在您的项目目录中创建一个名为Dockerfile的文件,该文件将包含Docker容器的配置。以下是一个简单的示例Dockerfile: #python版本 FROM python:alpine3.18 #设置工作目录 WORKDIR /app #复制当前目录中的所有文件到容器的工作目录 COPY . . #安装Python依赖 RUN pip install -r requirements.txt #运行Python程序 CMD ["python", "your_script.py"] 在这个示例中,我们使用了官方的Python 3.9基础镜像,设置了工作目录,并将当前目录中的所有文件复制到容器中。接下来,我们通过pip install安装了Python程序所需的依赖,并使用CMD指令运行了Python程序(假设您的Python程序文件名为your_script.py)。 构建Docker镜像: 执行以下命令在项目目录中构建Docker镜像(确保您的Dockerfile位于项目目录中): docker build -t <yourusername/镜像名称>:<标签> <Dockerfile路径> 这会创建一个Docker镜像。 运行Docker容器: 使用以下命令在Docker容器中运行Python程序: docker run my-python-app 这将启动一个Docker容器,运行您的Python程序。请注意,容器将在程序执行完毕后自动停止。 这些步骤假定您已经有一个Python程序,并且可能有一个名为requirements.txt的文件来指定程序的依赖项。根据您的项目的实际情况,您可以自定义Dockerfile和容器的配置。 上传到Docker Hub 如果您希望将这个镜像上传到Docker Hub或其他容器仓库以供他人使用,您需要首先登录到Docker Hub(或其他仓库),然后使用 docker push 命令将镜像推送到仓库。例如: docker login docker push <yourusername/镜像名称>:<标签> docker run 命令 docker run 命令用于在Docker中运行容器。以下是一些常见的 docker run 命令的选项和示例用法: 基本用法: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] OPTIONS: 用于指定各种选项的参数,如端口映射、环境变量、卷挂载等。 IMAGE: 指定要运行的Docker镜像。 COMMAND(可选): 指定容器内要执行的命令。如果不提供,则默认运行镜像中的默认命令。 ARG...(可选): 传递给容器内命令的参数。 常用选项: -d 或 --detach: 让容器在后台运行(分离模式)。 -p 或 --publish: 指定端口映射,将容器内的端口映射到主机上的端口。例如 -p 8080:80 将容器内的端口80映射到主机上的端口8080。 -e 或 --env: 设置环境变量。例如 -e MYSQL_ROOT_PASSWORD=pass 可以设置MySQL的root密码。 -v 或 --volume: 挂载卷,将主机文件或目录挂载到容器内的路径。例如 -v /host/folder:/container/folder 可以将主机上的文件夹挂载到容器内的路径。 --name: 为容器指定一个名称。 --rm: 当容器停止后自动删除容器。 -it: 使用交互式终端运行容器,通常与 -d 不一起使用。 示例用法: 运行一个简单的容器并在后台运行: ...

2023年9月24日 · 2 分钟 · Creeper

ffmpeg的使用方法

FFmpeg使用教程 转载自阮一峰 FFmpeg 是视频处理最常用的开源软件。 它功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes),也是许多音频和视频格式的标准编码/解码实现。 FFmpeg 本身是一个庞大的项目,包含许多组件和库文件,最常用的是它的命令行工具。本文介绍 FFmpeg 命令行如何处理视频,比桌面视频处理软件更简洁高效。 如果你还没安装,可以根据 官方文档 先完成安装。 概念 介绍 FFmpeg 用法之前,需要了解一些视频处理的基本概念。 容器 视频文件本身其实是一个容器(container),里面包括了视频和音频,也可能有字幕等其他内容。 常见的容器格式有以下几种。一般来说,视频文件的后缀名反映了它的容器格式。 MP4 MKV WebM AVI 下面的命令查看 FFmpeg 支持的容器。 $ ffmpeg -formats 编码格式 视频和音频都需要经过编码,才能保存成文件。不同的编码格式(CODEC),有不同的压缩率,会导致文件大小和清晰度的差异。 常用的视频编码格式如下。 H.262 H.264 H.265 上面的编码格式都是有版权的,但是可以免费使用。此外,还有几种无版权的视频编码格式。 VP8 VP9 AV1 常用的音频编码格式如下。 MP3 AAC 上面所有这些都是有损的编码格式,编码后会损失一些细节,以换取压缩后较小的文件体积。无损的编码格式压缩出来的文件体积较大,这里就不介绍了。 下面的命令可以查看 FFmpeg 支持的编码格式,视频编码和音频编码都在内。 ffmpeg -codecs 编码器 编码器(encoders)是实现某种编码格式的库文件。只有安装了某种格式的编码器,才能实现该格式视频/音频的编码和解码。 以下是一些 FFmpeg 内置的视频编码器。 libx264:最流行的开源 H.264 编码器 NVENC:基于 NVIDIA GPU 的 H.264 编码器 libx265:开源的 HEVC 编码器 libvpx:谷歌的 VP8 和 VP9 编码器 libaom:AV1 编码器 音频编码器如下。 ...

2023年8月1日 · 4 分钟 · Creeper