自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 AI掘金头条新闻系统 (Toutiao News)-相关推荐

本文实现了一个新闻详情页接口,包含新闻详情获取、浏览量增加和相关新闻推荐功能。通过get_related_news方法查询同分类下浏览量最高的5篇相关新闻(排除当前新闻),并按浏览量降序排列。接口返回包含新闻详情(标题、内容、作者等)和相关推荐列表的JSON数据,同时自动增加新闻浏览量。使用FastAPI框架实现,包含错误处理(404未找到)和数据验证。

2026-05-21 22:13:02 8

原创 AI掘金头条新闻系统 (Toutiao News)-增加浏览量

本文展示了新闻浏览系统的两个核心功能实现:1) increase_new_views函数通过SQLAlchemy异步更新指定新闻的浏览量计数器;2) get_news_detail路由接口在获取新闻详情时自动触发浏览量更新,并处理各种异常情况。代码采用FastAPI框架,实现了新闻详情查询和浏览量统计的原子操作,包含完善的错误处理机制(404状态码返回),确保数据一致性和接口可靠性。两个函数通过异步数据库会话协同工作,构成完整的新闻详情页业务逻辑。

2026-05-20 09:28:26 16

原创 AI掘金头条新闻系统 (Toutiao News)-获取新闻详情

这篇文章展示了如何使用FastAPI实现新闻详情查询功能。代码分为两部分:1)数据访问层(crud/news.py)定义了异步函数get_news_detail,通过ID查询新闻记录;2)路由层(routers/news.py)创建了/detail接口,接收新闻ID参数,调用数据访问函数并返回结果。当新闻不存在时返回404错误,否则返回新闻详情数据。整个实现采用了异步数据库操作和依赖注入,体现了FastAPI的现代Web开发特性。

2026-05-19 09:20:54 28

原创 AI掘金头条新闻系统 (Toutiao News)-获取新闻列表

本文展示了新闻管理系统后端 API 的核心代码结构,主要包含分页响应模型、数据模型、数据库操作和路由处理四个部分。`common/page_result.py` 定义统一分页返回格式,包含状态码、提示信息和数据内容;`models/news.py` 使用 SQLAlchemy ORM 定义新闻分类和新闻数据表结构,并设置相关字段与索引;`crud/news.py` 封装异步查询方法,用于获取新闻列表和总数量;`routers/news.py` 实现新闻列表接口,支持分页查询并返回统一结果。

2026-05-18 09:07:24 30

原创 AI掘金头条新闻系统 (Toutiao News)-解决跨域问题

本文展示了FastAPI后端服务中配置CORS跨域访问的代码示例。通过添加CORSMiddleware中间件,设置了允许所有来源("*")访问、支持携带Cookie、允许所有HTTP方法和请求头的宽松跨域策略。虽然示例中注释了生产环境应限制特定域名列表的推荐做法,但当前配置为开发环境提供了最大化的跨域访问便利性。同时代码还包含了FastAPI基本路由设置和新闻模块路由的挂载。

2026-05-17 09:23:18 275

原创 AI掘金头条新闻系统 (Toutiao News)-获取新闻分类

本文展示了FastAPI项目中新闻模块的实现结构,包含三个核心文件:1) common/result.py定义了统一API响应格式Result类,提供成功/失败的标准化返回;2) crud/news.py实现异步数据库操作,通过SQLAlchemy查询新闻分类数据;3) routes/new.py创建新闻API路由,调用CRUD层获取数据并使用Result统一封装响应。整个架构采用分层设计,实现了请求处理、业务逻辑与数据访问的分离,支持分页查询并确保API响应格式的一致性。

2026-05-16 21:09:09 65

原创 AI掘金头条新闻系统 (Toutiao News)-数据库和ORM配置

本文介绍了SQLAlchemy异步数据库连接的配置方法。首先通过pip安装SQLAlchemy和aiomysql驱动。然后在配置文件中设置异步数据库URL,创建异步引擎时配置了连接池参数(pool_size=10, max_overflow=20)。通过async_sessionmaker创建异步会话工厂AsyncSessionLocal,并定义了get_db依赖项来管理会话生命周期,包括事务提交、异常回滚和资源释放。配置支持MySQL数据库的异步操作,适用于需要高性能数据库访问的应用场景。

2026-05-14 09:53:54 73

原创 AI掘金头条新闻系统 (Toutiao News)-模块化路由

本文展示了FastAPI项目中路由模块化的实现方式。在routers/news.py中创建了APIRouter实例,定义了/news/categories接口;在main.py中通过include_router方法注册该路由模块。这种模块化设计使项目结构更清晰,便于维护和扩展路由功能。

2026-05-13 09:09:05 792

原创 AI掘金头条新闻系统 (Toutiao News)-项目介绍

基于 FastAPI 和 SQLAlchemy 的新闻系统后端,使用 MySQL 存储数据、Redis 缓存热点内容。系统包含用户管理、新闻浏览、收藏、历史记录等功能,采用分层架构设计。接口支持 Token 认证、统一异常处理,并通过异步操作、缓存策略和连接池提升性能。

2026-05-11 14:42:57 446

原创 7天掌握FastAPI-ORM

本文围绕 FastAPI 中 ORM 的使用展开,说明 ORM 可通过对象方式操作数据库,减少手写 SQL,提高开发效率与安全性。重点介绍 SQLAlchemy 异步引擎、会话工厂、连接池配置、模型类定义、自动建表、查询、分页、聚合以及增删改操作。通过依赖注入将数据库会话集成到路由中,实现书籍管理 CRUD 接口,并强调事务提交、回滚、异常处理和连接释放等安全实践。

2026-05-09 10:23:39 515

原创 7天掌握FastAPI-依赖注入

FastAPI依赖注入系统摘要:依赖注入是FastAPI的核心特性,通过Depends实现组件复用和解耦。系统将可重用的逻辑封装为依赖项(函数/类),自动注入到路径操作中。典型应用包括共享分页参数等通用逻辑,如/news/news_list和/user/user_list接口共用分页查询参数。优势体现在:1)减少代码重复;2)分离业务与基础设施代码;3)便于测试时替换依赖。使用方法分为三步:创建依赖项→导入Depends→在路由函数中声明依赖。这种机制显著提升了代码的可维护性和测试便捷性。

2026-05-08 09:42:06 309

原创 7天掌握FastAPI-中间件

FastAPI 中间件是在请求进入应用和响应返回客户端前后执行的统一处理函数。通过 @app.middleware("http")`定义,可用于日志记录、身份认证、跨域处理、响应头设置和性能监控等。多个中间件执行时,请求阶段按代码自下而上执行,响应阶段按自上而下返回。

2026-05-07 14:25:18 80

原创 7天掌握FastAPI-参数

FastAPI 的接口参数分为三类。路径参数嵌在 URL 路径中,用于标识具体资源,可借助 `Path` 添加校验规则(如数值范围限制)。查询参数跟在问号后面,用于过滤、排序和分页,支持 `Query` 注解设置默认值。请求体参数位于 HTTP 消息体中,用于创建或更新资源,需用 Pydantic 模型定义数据结构,并可对字段长度、格式等做校验。三者各有分工:路径参数定位资源,查询参数筛选资源,请求体承载数据,共同构成了 FastAPI 灵活完整的参数处理体系。

2026-05-06 14:56:02 534

原创 7天掌握FastAPI-路由

FastAPI路由机制解析:路由是URL与处理函数的映射关系,通过装饰器@app.get()定义。示例展示了根路由("/")返回"HelloWorld666","/hello"路由返回固定问候,以及练习中"/user/hello"返回学习状态。这种机制使不同URL触发对应的异步函数,实现灵活的请求响应处理,是Web框架的核心功能之一。

2026-05-06 14:52:09 119

原创 7天掌握FastAPI-第一个FastAPI程序

本文介绍了使用FastAPI框架创建和运行Web项目的基本流程。首先需要创建项目并设置虚拟环境以隔离依赖。运行项目时,可通过命令uvicorn main:app --reload启动Uvicorn ASGI服务器,其中main:app表示运行main.py文件中的FastAPI实例app,--reload参数支持开发时的代码热更新。项目启动后,可通过http://127.0.0.1:8000/docs访问交互式API文档。使用虚拟环境能避免依赖冲突,保持环境稳定。该流程适用于FastAPI/Starlett

2026-05-06 14:49:35 331

原创 Spring中的事务是如何实现的?

Spring事务本质是通过AOP实现,采用方法拦截机制:在方法执行前开启事务,方法执行后根据结果决定提交或回滚,从而确保数据一致性。

2026-02-07 18:27:07 347

原创 你们项目中有没有使用到AOP?

本文介绍了在后台管理系统中使用AOP技术实现操作日志记录的方法。通过AOP的环绕通知和切点表达式定位需要记录的方法,获取类信息、方法信息、注解及请求方式等参数,并将这些数据持久化到数据库中。该方法实现了系统操作日志的自动化记录功能。

2026-01-28 16:40:32 36

原创 什么是AOP?

Spring中的AOP(面向切面编程)通过抽取公共逻辑(如日志、事务)实现模块复用,降低耦合度,提升代码可维护性。

2026-01-25 20:07:58 44

原创 Spring框架中的单例bean是线程安全的吗?

Spring单例Bean在多线程环境下默认不是线程安全的,当多个请求并发修改单例状态时会出现线程安全问题。Spring框架本身不提供线程安全封装,开发者需自行处理。通常无状态Service/DAO类可视为线程安全,而有状态对象需要额外同步措施。最简解决方案是将作用域从singleton改为prototype。

2026-01-24 08:59:00 56

原创 那你之前使用过水平分库吗?

针对单库数据量超1000万导致的性能问题,采用水平分库方案。部署3台服务器和数据库,通过Mycat进行数据分片,按ID取模规则迁移旧数据,实现存储和读取压力的分摊,有效提升系统性能。

2026-01-21 10:43:10 333

原创 你们项目用过MySQL的分库分表吗?

MySQL分库分表是在单表数据量达到1000万或20G后,为解决性能瓶颈(IO/CPU)而采取的策略。垂直拆分按业务或字段划分,实现冷热数据分离;水平拆分通过取模或范围路由将数据分散到多个库表。拆分后需解决分布式事务、跨节点查询等问题,常用Sharding-Sphere、MyCat等中间件实现。适用于高并发、海量数据场景,能有效提升系统性能和可用性。

2026-01-17 16:44:52 421

原创 MySQL主从同步原理是什么?

MySQL主从复制通过二进制日志(Binlog)实现数据同步。主库将事务变更记录到Binlog,从库读取并写入中继日志(RelayLog),最终重做日志事件完成数据同步。

2026-01-16 12:00:07 44

原创 事务中的隔离性是如何保证的呢?(你解释一下MVCC)

MVCC通过隐藏字段(trx_id、roll_pointer)、undolog版本链和readview机制实现事务隔离。不同隔离级别通过readview控制事务访问数据的版本,避免读写冲突。undolog记录数据变更历史,形成版本链,roll_pointer实现版本回溯。该机制有效保证事务隔离性。

2026-01-14 14:03:07 36

原创 undo log和redo log的区别是什么?

redolog记录数据页物理变化,确保宕机恢复和事务持久性;undolog记录逻辑操作,支持事务回滚,保障原子性和一致性。两者分别负责物理恢复和逻辑回滚功能。

2026-01-12 09:14:58 102

原创 怎么解决并发事务问题呢?MySQL的默认隔离级别是?

MySQL提供四种事务隔离级别解决并发问题:未提交读无法解决任何问题;读已提交仅解决脏读;可重复读(默认级别)解决脏读和不可重复读;串行化能解决所有问题但性能较低。不同级别在数据一致性和性能间提供不同权衡。

2026-01-10 08:53:25 309

原创 并发事务带来哪些问题?

并发事务中的三大问题:脏读指读取到其他事务未提交的"脏数据";不可重复读指同一事务内多次读取同一数据结果不一致;幻读指读取到其他事务新插入的"幻行"。这些问题都源于事务间的并发操作导致的数据不一致现象。

2026-01-09 14:55:09 378

原创 事务的特性是什么?可以详细说一下吗?

ACID特性定义了事务的四个关键原则:原子性确保事务完全执行或完全不执行;一致性保证数据状态正确转换;隔离性防止并发事务相互干扰;持久性确保提交的事务永久保存。以转账为例,500元要么完整转移,要么完全不转,且转账过程不受干扰,结果永久存储。这些特性共同保障了数据库事务的可靠性。

2026-01-02 08:48:54 119

原创 在使用索引的时候,是如何优化呢?

索引创建应遵循查询优化原则:选择高频查询字段,采用复合索引覆盖返回值,避免索引字段运算和类型转换,合理控制索引数量。

2026-01-01 09:46:03 129

原创 创建表的时候,你们是如何优化的呢?

本文介绍了创建数据表时的字段类型选择方法。参考《嵩山版》开发手册,针对不同数据类型选择相应字段类型:数值类采用TINYINT、INT、BIGINT等;字符串类选用CHAR、VARCHAR或TEXT。通过合理匹配字段内容与数据类型,确保数据库设计规范高效。

2025-12-31 16:09:50 104

原创 SQL的优化经验有哪些?

SQL优化方法包括:合理选择字段类型、建立有效索引、优化SQL语句(避免SELECT*、优先UNIONALL和INNERJOIN)、实施主从复制与读写分离,以及大数据量时采用分库分表策略。这些措施能显著提升数据库性能。

2025-12-29 16:57:24 93

原创 什么情况下索引会失效?

索引失效的常见原因包括:1)违反最左匹配原则;2)模糊查询时%在前置位置;3)对索引字段进行运算或类型转换;4)复合索引中范围查询阻断后续条件索引使用。这些情况都会导致数据库无法有效利用索引,影响查询性能。

2025-12-28 23:09:44 139

原创 索引创建原则有哪些?

索引创建应遵循以下原则:数据量超过10万时考虑建索引;优先选择查询、排序或分组频繁的字段;推荐使用复合索引覆盖SQL返回值;区分度低的字段放组合索引后面;长字段可用前缀索引;需平衡索引数量,避免影响增删改性能。索引能提升查询效率,但过多会影响写入速度。

2025-12-26 09:33:09 131

原创 MySQL超大分页怎么处理?

针对大数据量分页查询效率低的问题,提出使用覆盖索引和子查询的优化方案。先通过覆盖索引快速查询ID字段完成分页,再基于ID列表用子查询获取完整数据,有效提升查询性能。该方法利用了索引优势,避免了直接大表排序的低效操作。

2025-12-25 17:50:59 146

原创 知道什么叫覆盖索引吗?

覆盖索引是一种优化技术,指查询所需字段全部包含在索引中,无需回表查询主键索引。它能减少I/O操作,显著提升查询性能,是数据库优化的有效手段。

2025-12-21 08:43:37 477

原创 知道什么是回表查询吗?

回表查询是通过二级索引找到主键值,再根据主键查询聚簇索引获取完整数据行的过程。这种操作需要两次索引查找,会影响查询性能,在优化时应尽量减少回表次数。

2025-12-20 14:13:50 93

原创 什么是聚簇索引什么是非聚簇索引?

本文介绍了数据库索引的两种类型:聚簇索引和非聚簇索引。聚簇索引将数据与索引存储在一起,B+树叶子节点包含整行数据,通常由主键构成且每个表只有一个;非聚簇索引则将数据与索引分开存储,B+树叶子节点保存主键值,允许创建多个且多为用户自定义索引。两种索引类型在数据组织和存储方式上存在明显差异。

2025-12-19 09:36:37 310

原创 B树和B+树的区别是什么呢?

B树与B+树的核心差异在于数据存储位置:B树各节点都存数据,B+树仅叶子节点存数据。这种结构使B+树查询效率更稳定,范围查询优势明显,因其叶子节点形成双向链表,支持高效顺序访问。

2025-12-18 09:14:15 114

原创 索引的底层数据结构了解过吗?

MySQL的InnoDB存储引擎采用B+树索引结构,因其具有路径短、磁盘读写高效、适合范围查询等优势。B+树节点可容纳更多子节点,非叶子节点仅存储键值和指针,叶子节点存储数据并形成双向链表,提升了查询性能。

2025-12-17 09:29:55 367

原创 了解过索引吗?(什么是索引)

索引是MySQL中提升查询效率的关键数据结构,通过减少I/O操作和排序成本来优化性能。它能加速数据检索,降低CPU消耗,是数据库优化的重要手段。

2025-12-16 09:48:14 111

原创 SQL语句执行很慢,如何分析呢?

使用MySQL的EXPLAIN命令可分析SQL执行慢的原因。通过检查key和key_len判断索引命中情况,type字段评估优化空间(如全表扫描),extra建议识别回表问题。优化方案包括添加索引或调整查询字段。

2025-12-15 09:22:46 162

空空如也

空空如也

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

TA关注的人

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