自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 Docker1: 安装、镜像和容器概念

是 Docker 官方为 Windows 和 macOS 提供的桌面客户端和运行环境(包含 Docker 引擎、命令行工具、Kubernetes 等)查看Docker版本,验证安装成功。是一个开源的容器化平台,

2026-05-08 15:58:59 169

原创 AI对话API服务(Python/FastAPI/大模型部署):代码标记学习

本文介绍了一个基于Hugging Face Transformers库的大语言模型问答系统实现。主要内容包括:1) 使用AutoTokenizer和AutoModelForCausalLM加载预训练模型;2) 通过apply_chat_template方法格式化输入文本;3) 配置模型生成参数如max_new_tokens、temperature等控制输出;4) 处理模型输出并解码为可读文本;5) 使用Python logging模块记录运行日志,设置不同级别(INFO/WARNING/ERROR)的日志输

2026-05-08 14:21:15 51

原创 AI入门学习

本文介绍了大语言模型(LLM)和检索增强生成(RAG)的核心概念与技术实现。主要内容包括:1) Tokenizer将文本转换为模型可理解的token,Embedding将token转为向量;2) LLM与RAG的对比,前者依赖训练数据,后者可实时检索外部信息;3) 使用Hugging Face工具链的实践指南,包括环境配置、模型下载和本地缓存;4) 通过transformers库调用模型实现文本生成和多轮对话的代码示例;5) 分析了模型参数对生成效果的影响,如temperature控制随机性。文章提供了从理

2026-05-06 20:28:52 369

原创 Redis 基础、缓存、String/Hash

Redis在AI服务中的核心应用包括:缓存大模型对话历史、存储Embedding向量、管理热点数据和接口限流。通过设置TTL实现自动数据清理,既节省内存又保证时效性。实战示例展示了Redis与FastAPI的集成方案:1)对话系统缓存问答结果;2)用户信息查询优先读取Redis缓存;3)采用哈希结构存储结构化数据。关键技术点包括:惰性删除机制减少性能损耗、MD5生成缓存键名、组合使用内存与持久化存储。这种架构显著提升了AI服务的响应速度,实测显示缓存命中时响应时间从秒级降至毫秒级,同时通过自动过期机制有效预

2026-04-25 10:21:18 409

原创 SQLAlchemy学习记录

SQLAlchemy是Python中最流行的ORM框架,它允许开发者使用Python代码而非SQL语句操作数据库。核心组件包括:1)引擎(Engine)负责数据库连接管理;2)会话(Session)提供事务交互接口;3)模型(Model)通过Python类映射数据库表。典型使用流程为:先创建引擎建立连接,再通过sessionmaker生成会话工厂,最后用Session实例执行增删改查操作。文中提供了MySQL数据库连接示例,包括表结构设计、模型定义和完整的CRUD操作代码,特别强调了使用虚拟环境的重要性以避

2026-04-16 20:58:50 451

原创 FastAPI 核心

容覆盖路由与 GET/POST 请求实现、请求体解析与参数校验、响应模型设计,同时详解文件上传、中间件应用,以及统一返回格式封装与全局异常处理。以实战为导向,帮助快速掌握 FastAPI 关键能力,搭建规范、健壮的高性能 API 服务,适配 AI 服务开发与接口封装场景。

2026-04-12 16:32:53 470

原创 Python 工程化基础3:异步 async/await 基础

异步编程通过非阻塞方式提升程序效率,特别适用于需要等待I/O操作的场景(如调用LLM API)。文章通过代码示例对比了同步(顺序执行)和异步(并发执行)的差异,演示了asyncio.gather()实现任务并发的优势。同时介绍了事件循环机制,包括自动管理(asyncio.run)和手动控制(new_event_loop)两种方式,并解释了async/await关键字的作用。异步编程能显著减少等待时间,使总耗时取决于最长任务而非任务总和。

2026-04-11 01:08:33 49

原创 Python 工程化基础2:文件读写、JSON、异常处理、日志 logging

本文介绍了Python编程中的三个实用技巧:1) 使用json模块进行数据序列化和反序列化操作,演示了如何将字典写入JSON文件并读取;2) 异常处理示例,包括文件不存在和JSON格式错误的捕获;3) 日志记录logging模块的使用,展示了如何配置日志输出到文件和控制台,并记录不同级别的日志信息。这些技巧能帮助开发者更好地处理程序运行中的各种情况,提高代码的健壮性和可维护性。

2026-04-11 00:09:34 54

原创 Python 工程化基础1:环境(conda)、pip、requirements.txt

本文介绍了使用conda管理Python虚拟环境的完整流程:1)创建并激活conda虚拟环境;2)在虚拟环境中用pip安装包;3)生成requirements.txt依赖文件(需手动清理异常行);4)通过requirements.txt重建相同环境;5)验证环境隔离效果。重点说明了如何跨目录使用requirements.txt文件,以及如何确认虚拟环境与全局环境隔离成功。整个流程涵盖了虚拟环境创建、依赖管理、环境重建和隔离验证等关键环节。

2026-04-10 21:41:24 536

原创 对课上SQL使用技巧示例补充

本文介绍了SQL数据库操作的5个实用技巧:1)使用UPDATE批量更新空值成绩,可快速生成随机分数或模拟真实成绩分布;2)安全清空成绩字段的方法,强调备份的重要性;3)优化COUNT查询,建议使用LIMIT 1提高效率;4)小表驱动大表查询策略,通过IN子查询提升性能;5)字符串字段优化,强调加引号避免索引失效。这些技巧能有效提升数据库操作效率和查询性能。

2026-03-31 20:33:57 383

原创 ruoyi(v3.8.2)用户数据权限

本文摘要介绍了权限管理系统中的数据权限实现方案。主要内容包括:1)权限作用及设置效果,通过超级管理员和普通用户角色展示不同数据访问权限;2)五种数据权限范围(全部、自定义、部门、部门及以下、仅本人)的实现原理;3)实际应用案例,演示了车间设备数据管理系统的代码生成、数据库建表及后端修改过程;4)测试验证环节,通过不同角色用户(admin、ry、lewis)登录验证权限控制效果。系统采用AOP切面技术实现数据过滤,确保不同角色用户只能访问权限范围内的数据。

2025-12-02 16:27:19 1068

原创 ruoyi(v3.8.2)菜单权限

本文介绍了信息系统中的菜单权限管理机制及其实现方法。菜单权限通过角色分配控制用户对系统功能和数据的访问范围,包括菜单管理、权限控制、功能权限和数据权限等层面。文章详细阐述了权限控制的实现步骤:1)在数据库中配置权限标识;2)后端使用注解验证权限;3)通过接口获取用户权限列表;4)前端存储权限数据;5)使用指令控制界面元素显示。最后以fans表权限提示功能为例,展示了从前端按钮实现、权限指令编写到后端验证的完整开发流程,说明了如何通过系统配置和代码实现精确的权限管控。

2025-11-29 16:06:08 1059

原创 分页功能实现(v3.8.2)

本文分析了fans信息管理系统的分页功能实现。前端采用element-ui分页组件,通过@pagination事件触发数据请求;后端基于MyBatis的PageHelper插件实现自动分页,通过拦截SQL自动添加LIMIT子句并执行COUNT查询获取总数。详细阐述了从Controller调用startPage()到SQL拦截、结果封装的全流程,包括分页参数存储ThreadLocal、Page对象包装等关键技术点。同时介绍了通过Navicat数据生成工具快速创建测试数据的方法,以及处理性别字段映射问题的SQL

2025-11-18 15:48:55 628

原创 触发验证实例(vue3.8.2)

摘要:本文分析了角色管理系统中的表单验证流程,从前端到后端的完整实现。系统通过@Validated注解配合实体类校验规则实现参数验证,使用全局异常处理器捕获MethodArgumentNotValidException异常。后端采用SpringSecurity进行权限控制,并记录操作日志。重点展示了当用户提交空角色名称时,系统从前端表单验证、HTTP请求、后端参数解析到异常处理的完整链路,最终通过响应拦截器在前端显示错误提示。最后介绍了如何自定义验证注解实现用户昵称的非空、唯一性和长度限制验证。

2025-11-14 18:59:58 663

原创 Spring 系列注解(v3.8.2)

本文系统介绍了Spring框架中IOC/DI和SpringMVC的核心注解及其应用机制。在IOC/DI部分,详细阐述了@Component及其衍生的@Service、@Repository等组件注册注解的工作原理,以及@Autowired和@Resource的依赖注入实现方式。针对SpringMVC,重点解析了@RestController、@RequestMapping等控制器注解,以及@PathVariable、@RequestBody等请求参数绑定注解的运作流程。文章通过分层架构的调用示例,完整展示了

2025-11-06 11:22:20 583

原创 Ruoyi Vue (v3.8.2)生成代码的使用

本文介绍了使用Ruoyi-Vue框架进行数据表操作的具体流程:首先创建并导入fans数据表,通过代码生成功能自动生成前后端代码和SQL文件;接着将生成的代码部署到对应位置并运行SQL文件;然后针对过程中出现的导航栏重复显示问题,提出了通过删除sys-menu表中重复记录来解决的方法;最后验证了增删改查功能的实现效果。关键点包括:代码生成后需及时替换文件、数据库操作后要及时刷新、注意SQL文件的运行次数以避免重复数据。

2025-10-30 17:35:16 1020

原创 Ruoyi-Vue(v3.8.2)后端单表user 的CURD 功能代码和测试

本文介绍了在RuoYi-Vue项目中实现用户CRUD操作的完整流程。首先需创建或导入user表,然后添加Mapper接口定义基础操作,并编写对应的XML映射文件实现SQL语句。在Service层封装业务逻辑,Controller层处理HTTP请求。最后通过Postman测试GET查询、POST添加、PUT修改和DELETE删除功能,同时需配置SecurityConfig文件以确保接口访问安全。文中详细说明了各层代码实现方法及注意事项,包括@Param注解的使用建议、动态SQL更新等关键技术点。

2025-10-24 11:02:27 658

原创 MyBatis 读取MySQL 数据简单示例

前端访问后端URL,显示后端从数据库读取的数据输入:前端访问URL为输出:前端显示后端从数据库读取的数据1.新建项目2.新建模块mybatis3.启动新模块项目验证是否正常。最终由于DataSouce 未配置,预期结果应为启动失败注意:根据问题解决方式没有解决,删掉下载的.mis,去中下载其他版本。注意:!!!配置mysql时密码不要以0开头。

2025-10-17 14:01:36 874

原创 Android Studio实现日历效果

获取两个对象的样式路径。拉取project中的日历1,在侧边栏Attributes的layout_width和——height填写初始大小100dp。发现上下的相邻边框合并,使得边框宽,解决方式:让相邻边框由相邻变成重合。日历2,3中边框叠加处没有横线:设置边框颜色和背景颜色一样(这样子不需要移动边框不用改topMargin值)文本框(创建,赋值),添加到视图,设置颜色和大小,在整个组件布局(上下两个框)中居中。日历3中三行如何实现:三个样式框,上下两个设置圆角,中间没有圆角值。备注为:日历1,2,3。

2025-10-11 20:26:25 284

原创 SpringBoot HelloSpringBoot入门

发送第一请求send点击之后Body请求体区域一直加载中,需要保证IDEA上程序运行中,ctrl+s保存请求,就可以加载出来了。会有 “请求与资源不匹配”错误,可能由前端路径写错、后端文件缺失等多种原因导致。若发现文中存在可改进或错误之处,恳请不吝指正,期待与你共同探讨、一起进步。(关于postman使用非常详细,里面包括对postman界面元素介绍)4.后端程序添加支持/hello的post,put,delelte请求。添加后查看一下数据是否正常,看到是正常的。浏览器测试的开发者工具的简单会看。

2025-10-01 16:21:36 470 1

原创 指针的入门

C语言传递参数(或者赋值),可以是值传递,也可以是传递指针,传递指针也叫地址传递。1)默认传递值的类型:基本数据类型(整型类型,小数类型,字符类型),结构体,共用体。2)指向数组的指针,指向结构体的指针,指向共用体的指针,二级指针,多级指针。2)默认传递地址的类型:指针,数组。

2024-05-26 13:59:40 414

原创 可变数组(创建,回收,计算可用空间,访问,数组空间扩大)

【代码】可变数组(创建,回收,计算可用空间,访问,数组空间扩大)

2024-05-23 11:01:02 306

原创 PTA7-25~27

【代码】PTA7-25。

2024-05-11 23:21:46 264 1

原创 【链表初步】动态链表(头插法)

利用头插法,创建类似下图所示的动态链表,其中结点数据域由键盘输入而确定。要创建下图的链表,输入的依次是DCBA。创建好链表后,还需要依次访问各个结点,输出各个结点的数据域。

2024-05-11 18:33:27 421 2

原创 PTA7-14

【代码】PTA7-14。

2024-05-08 18:59:30 407 1

原创 函数的递归

【代码】函数的递归。

2024-05-03 13:56:56 234

原创 初识C语言回顾

本质上,static修饰局部变量的时候,改变了变量的存储位置的,影响了变量的生命周期,生命周期变长,和程序的生命周期一样.】、按位取反运算符【~】自增自减运算符【++,--】、负号运算符【-】、类型转换运算符【(类型)】、指针运算符和取地址运算符【*和&】、长度运算符【sizeof】如=(赋值),==(判断相当)等等。下标运算符【[】、分量运算符的指向结构体成员运符【->】、结构体成员运算符【.】,函数调用【()】乘法运算符【*】、除法运算符【/】、取余运算符【%】、加法运算符【+】、减法运算符【-】

2024-04-22 01:29:49 736 1

原创 第四篇之未完结的第二篇

希望有一整天畅游在C world.一行4个整数中找最大值。

2024-04-08 23:34:17 207 1

原创 第三篇,接未完结的第二篇

转义字符"\"的用法:想让哪一个字符失去本身的作用就加\。关于double类型与float类型:区别在于精度。double类型的数据:scanf时用:%lf。static定义的变量不被销毁。%.3lf:表示保留三位小数。

2024-04-07 21:57:45 222 1

原创 第二篇学习

是一个特殊定义的字符,值在不同的编译器上值是不同的,但总是负数,在绝大多数的系统中值是-1。switch()的内容可以是:int,char,enum类型的。'\0'转义字符 转义功能是结束符 ASKII码值是0。发送EOF信号的方法:CTRL+Z+回车。'0'字符0 ASKLII值是48。错误原因:字符加空格导致输出错误。getchar:获取字符。EOF是文件结束的标志。||是或,&&是并且。

2024-04-06 23:50:13 180 1

原创 C语言第一篇博客

3转向语句:break语句√,goto语句,continue语句√,return语句√;break:如果不满足某个case,就从这个case中跳出,继续执行下面的内容。continue :跳过本次循环后面的代码,直接去判断部分,进行下一次循环的判断。1条件判断语句/分支语句(选择结构):if语句√,switch语句√;default:如果case都不满足,就执行default后面的内容。2循环执行语句:do while语句,while语句√,for语句;判断是不是奇数:T1:i%2==1。

2024-04-05 23:47:15 198 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除