news 2026/10/19 2:06:54

10.18学习笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
10.18学习笔记

一、本周学习收获

1. 类与对象

本周深入理解了面向对象编程的核心思想。类是对象的模板,对象是类的实例。通过new关键字创建对象,对象拥有类的属性和方法。

classStudent:def__init__(self,name,age):self.name=name self.age=agedefstudy(self):print(f"{self.name}正在学习")# 创建对象stu=Student("张三",20)stu.study()

2. 面向过程 vs 面向对象

  • 面向过程:以函数为中心,按步骤解决问题,关注"怎么做"
  • 面向对象:以对象为中心,将数据和操作封装在一起,关注"谁来做"

面向对象更符合人类的思维习惯,便于代码复用和维护。

3. 三大特性

封装

封装将对象的属性和方法隐藏起来,只对外暴露必要的接口。通过private修饰属性,防止外部直接访问和修改。

继承

子类继承父类的属性和方法,实现代码复用。使用extends关键字,子类可以重写父类的方法。

classAnimal:defeat(self):print("动物在吃东西")classDog(Animal):defeat(self):print("狗在啃骨头")
多态

同一方法在不同对象上有不同表现。通过父类引用指向子类对象,调用时动态绑定实际类型的方法。

a=Dog()a.eat()# 输出:狗在啃骨头

4. 私有化与 set/get 方法

属性私有化后,通过set方法修改值、get方法查询值,保证数据安全。

classPerson:def__init__(self):self._name=Nonedefset_name(self,name):self._name=namedefget_name(self):returnself._name

5. 利用 OpenAI SDK 调用大模型

本周学习了如何通过 OpenAI SDK 调用大模型接口,核心流程包括:

  1. 任务:明确要完成的任务目标
  2. 对象:确定调用的大模型对象
  3. 约束内容:设置参数约束(如温度、最大 token 数)
  4. 表达:构造合适的提示词
  5. 提供上下文:给模型提供必要的背景信息
fromopenaiimportOpenAI client=OpenAI(api_key="your-api-key")completion=client.chat.completions.create(model="gpt-4",messages=[{"role":"user","content":"请解释什么是多态"}],)print(completion.choices[0].message.content)

6. 提示词与提示词注入

  • 提示词(Prompt):引导模型输出的输入文本,好的提示词能显著提升回答质量
  • 提示词注入(Prompt Injection):恶意构造输入,试图让模型执行非预期指令,需要做好防护

7. 断点的使用

调试时设置断点可以暂停程序执行,观察变量状态:

  • 恢复程序(Resume):继续执行到下一个断点
  • 步过(Step Over):单步执行,不进入方法内部

8. HTTP 协议与 API 交互

请求结构
  • 请求行:方法 + URL + 协议版本
  • 请求头:携带认证信息、内容类型等
  • 请求体:携带业务数据
响应结构
  • 状态行:协议版本 + 状态码 + 状态描述
  • 响应头:服务器信息、内容类型等
  • 响应体:返回的业务数据
状态码
  • 200:成功
  • 400:客户端请求错误
  • 500:服务端内部错误

9. Swagger 接口文档

Swagger 可以自动生成接口文档,方便前后端联调。一个好的接口必须有参数校验,对参数类型进行校验,避免非法数据进入系统。

10. 请求与响应规范

11. 对话小助手项目实践

本周还利用 AI 工具实现了一个简易版的智能对话界面,将前面学到的大模型调用、HTTP 协议、接口规范等知识串联起来。

项目目标

做一个能跟用户对话的小助手,用户输入问题,AI 返回回答,界面实时展示对话内容。

核心流程
  1. 前端界面:搭建一个简单的聊天窗口,包含输入框、发送按钮和消息列表
  2. 后端接口:接收用户消息,调用大模型 SDK 获取回答
  3. 对话交互:把用户消息和 AI 回答按顺序展示在界面上
importosimportuvicornfromopenaiimportOpenAIfromfastapiimportFastAPI app=FastAPI()# 请将 api_key 和 base_url 替换为你自己的配置client=OpenAI(api_key="your-api-key",base_url="https://your-base-url/v1",)msgs=[{"role":"system","content":"你是一只可爱的小狗,每次回答都需要汪一下"}]@app.get("/chat")defsend_message(msg:str):u_msg={"role":"user","content":msg}msgs.append(u_msg)completion=client.chat.completions.create(model="qwen3.8-max",messages=msgs,)result=completion.choices[0].message.content ai_msg={"role":"assistant","content":result}msgs.append(ai_msg)returnresultif__name__=="__main__":uvicorn.run(app,host="127.0.0.1",port=8000)
收获与体会
  • 把「请求有规范、响应有规范」真正落地到了项目里,前后端联调顺畅了很多
  • 通过实际调用大模型,加深了对提示词工程的理解——同样的接口,提示词写得好,回答质量差别很大
  • 调试时用断点观察请求参数和响应结果,比盲目打印高效得多

请求有规范,响应也应有统一规范:

{"msg":"操作成功","data":[],"code":200}

统一响应格式便于前端统一处理,降低联调成本。

二、遇到的难题与困惑

1. 多态的理解

刚开始很难理解为什么父类引用调用子类方法,后来通过画内存图、多写多练,逐渐明白了动态绑定的原理。

2. 提示词注入的防护

如何有效防止提示词注入?目前的理解是:对用户输入做过滤、限制系统指令的暴露、使用分隔符区分指令和数据,但实际效果还需要进一步验证。

3. HTTP 状态码的区分

400 和 500 的区别容易混淆。经过学习明确:400 是客户端的问题(参数错误、格式不对),500 是服务端的问题(代码异常、数据库故障)。

4. 参数校验的粒度

不知道参数校验应该做到什么程度,是只校验类型,还是也要校验业务规则(如范围、格式)?目前倾向于:基础类型校验 + 关键业务规则校验。

三、错题反思与总结

1. 封装理解错误

错误:以为private只是语法要求,不理解其意义。

反思:封装的核心是"保护数据 + 隐藏实现",private是手段,安全是目的。

2. 继承与多态混淆

错误:以为继承就是多态。

反思:继承是代码复用机制,多态是运行时行为。继承是多态的前提之一,但多态还依赖方法重写和动态绑定。

3. 响应格式不统一

错误:不同接口返回不同格式,前端处理困难。

反思:统一响应格式({msg, data, code})是接口设计的基本规范,应在项目初期就确定。

4. 调试效率低

错误:遇到问题不会用断点,只会加打印语句。

反思:断点 + 步过 + 观察变量,比打印语句更高效,应养成调试习惯。

5. 总结

本周收获很大,从面向对象基础到 HTTP 协议、大模型调用,知识面拓宽了不少。接下来需要:

  • 多写代码巩固面向对象三大特性
  • 深入理解 HTTP 协议细节
  • 练习提示词工程,提升大模型调用效果
  • 规范接口设计,养成良好编码习惯
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/19 2:06:30

Redis分布式锁防超卖实战详解

一、为什么高并发下会出现超卖做电商的同学应该都遇到过这样的场景:明明库存只有 10 件,结果用户下单却成功了 12 单。问题出在哪?说白了就是多个请求同时读到库存,然后各自扣减,最后把库存扣成了负数。举个最简单的例…

作者头像 李华
网站建设 2026/10/19 2:06:00

STM32F407+FreeRTOS开发环境搭建:Keil MDK与CubeMX实战详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/19 2:04:07

芯参谋(58):BLDC 电机驱动电路设计指南

BLDC 电机驱动电路设计指南 编制日期 2026-10-05 | 版本号 Rev 1.4 从三相全桥拓扑、上桥供电、死区与互锁、MOSFET 选型,到电流采样、保护体系、PCB 布局与换相软件实现的完整落地方案 先读这一条:本文给的是设计方法与判断准则&#xff…

作者头像 李华
网站建设 2026/10/19 2:03:52

ollama外部无法访问.ollama.service 文件无法写入.ollama外部无法访问.

一、修改配置文件,看看行不行 【修改配置】编辑ollama文件时,要在两行注释之间的设置才不会被抹除 在这里【总体过程】修改的过程 1. 编辑 ollama service 环境变量 sudo systemctl edit ollama进入 nano 编辑器,粘贴下面内容: [S…

作者头像 李华
网站建设 2026/10/19 2:03:45

租约还剩两年的底铺,到期会发生什么

「带租约」在商铺推介里几乎是褒义词:接手即可收租,不必自己招租。但租约是一份有期限的合同,而不是一项永久权利。买家真正要回答的问题不是「有没有租约」,而是「这份租约还能覆盖多久,到期那天我准备做什么」。一、…

作者头像 李华