自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Web 开发 17

路由” 是数据在网络中 “找路、赶路” 的全过程,是实现设备互联(尤其是跨网络互联)的基础。路由器是执行路由功能的核心设备,而 “路由表” 是路由器的 “导航地图”。日常上网(刷视频、聊微信)的每一次数据传输,背后都依赖路由机制的支撑。统一资源定位符),通俗来说就是我们常说的 “网址”,它是互联网中用于精确定位和访问某个资源(如网页、图片、视频、文件等)的标准化字符串格式。

2025-09-02 21:53:26 605

原创 学习日志42 python

单冒号主要省略的是 step(步长),默认步长为 1冒号某一侧为空时,额外省略该侧的边界(start或end),默认取到头 / 尾start缺省为 0,end缺省为序列长度,step缺省为 1。记住这个规则,就能理解所有省略写法的含义了。

2025-09-02 14:18:50 755

原创 hello算法笔记 01

离散节点 + 引用连接,所有操作都围绕 “修改引用指向” 展开关键思想:用current临时节点遍历,保护头节点;用current!= null判断链表结尾直接修改head导致链表丢失、初始化时用数组语法、插入节点时顺序颠倒【全是我踩到的坑】2 PPython 实现链表的核心逻辑和 Java 完全相同:都是先定义节点类,再通过 “引用连接节点”,遍历 / 查找靠while循环判断None。唯一需要适应的是 Python 的语法细节(如__init__构造方法、判空、无静态类修饰等),上手成本很低。

2025-08-30 18:44:32 748

原创 学习日志41 python

方法,这是 Python 中的一个特殊方法,用于支持类的实例像列表、元组等可迭代对象一样通过索引(或切片)来访问元素。函数用于将一个可迭代对象(如列表、元组、字符串等)组合为一个索引序列,同时返回索引和对应的元素。是装饰器语法的标志,省略后就无法实现「类方法」和「静态方法」的特殊功能了,必须严格按照。就是 Python 内置的装饰器,它们的作用是把普通函数「装饰」成类方法或静态方法。它的本质是一个接受函数作为参数,并返回新函数的高阶函数。的形式放在函数或类的定义上方,这就是装饰器语法的标志。

2025-08-30 18:43:24 792

原创 学习日志40 python

变量b的本质:只是一个 "标签",每次赋值都会让它指向新的对象(旧对象若无人引用则被回收)对象的不可变性:字符串一旦创建就无法修改,所有 "修改" 都是生成新对象地址重复的原因:是 Python 的缓存优化(字符串驻留),而非 "值变而对象不变"你的测试方法(用id()追踪对象)非常好,这是理解 Python 内存管理的有效手段~生成器通过yield关键字增量产生数据,每次迭代返回一个值,适合构建自定义数据流:python运行"""生成器:模拟源源不断产生数据的流"""

2025-08-28 16:19:40 680

原创 杂记 08

不贪多,先 “用” 再 “记”:比如学pandas,先做 “处理一个 Excel 表格” 的案例,比先背 10 个函数管用。不脱离场景:如果你的目标是 “自动化办公”,就别先学numpy(用不上),先学openpyxl;如果是 “数据分析”,就别先学pyautogui。先解决 “小问题”:比如先学 “用os模块批量删除空文件夹”,再学 “用pandas处理 10 万行数据”,从小问题积累信心。按这个路径,你不会被 “模块多” 吓到,反而能快速把模块用起来,形成 “学习→实践→巩固” 的正循环。

2025-08-28 14:06:55 716

原创 Leetcode 17 java

维度亮点待优化点核心限制把握精准判断 “O (1) 空间不能用新数组”算法思路准确回忆 “摩尔投票” 的核心(对抗筛选)细节规则记混(+1/-1 的触发条件)实现想法Set 去重逻辑正确,有 “遍历统计” 的落地意识1. Set 不符合 O (1) 空间;2. “return 大于 0” 表述模糊整体来看,你的思考已经抓住了这道题的核心(空间限制 + 投票算法),只是需要修正算法细节和明确实现方法的空间代价,就完全能写出最优解了。

2025-08-22 00:21:32 604

原创 学习日志39 python

在 Python 中,可调用对象(Callable)指的是可以像函数一样被调用的对象,即可以在对象后面加括号()并传入参数来执行的对象。可调用对象:能加()调用的对象(函数、类、带__call__的实例等)。内存空间:每个独立对象占一块空间,变量只是指向对象的 “指针”,多个变量可共享同一对象的内存。通过id()函数可以查看对象的内存地址(唯一标识),帮助理解:python运行a = 10b = aprint(id(a), id(b)) # 输出相同的地址(a 和 b 指向同一对象)

2025-08-21 21:06:43 1334

原创 杂记 07

维度编译错误运行错误发生阶段编译 / 解释阶段程序运行阶段能否启动程序不能(直接报错)能启动,但执行中出错主要原因语法错误、类型不匹配(静态检查)逻辑错误、资源问题、数据异常排查难度通常较易(位置明确)可能较难(与具体执行场景相关)编译错误是 “写的代码不符合语法规则,机器看不懂”;运行错误是 “代码语法没问题,但执行时遇到了意外情况(比如算着算着发现除以 0 了)”。4 更改学习策略(python)现在发觉自己做py题目做多了而码力并没有增强,原因还是敲得太少了。

2025-08-21 21:06:38 1023

原创 杂记 06

微服务(Microservices)是一种软件架构设计风格,核心是将传统的 “单体应用” 拆分成多个小型、独立、可自治的服务单元,每个单元专注解决特定业务问题,最终通过协作完成整体业务功能。微服务不是 “技术”,而是 “架构思路”—— 通过 “拆分” 解决单体应用的臃肿和脆弱,通过 “协同工具” 保障多服务的稳定运行。它更适合中大型项目(比如用户量百万级、业务复杂的平台),小型项目用单体反而更高效(避免过度设计)。

2025-08-21 17:26:45 478

原创 学习日志38 python

在 Python 中,标识符的命名需要遵循一定的规范,这些规范有助于提高代码的可读性和一致性。以下是主要的命名规则和惯例:变量和函数:使用小写字母,多个单词之间用下划线连接(snake_case)python运行 类名:每个单词首字母大写,不使用下划线(PascalCase)python运行 常量:全部使用大写字母,多个单词之间用下划线连接python运行 私有成员:以单下划线开头(仅为约定,不真正真正限制访问)python运行 特殊方法和变量:以双下划线开头

2025-08-19 13:43:09 1083

原创 Leetcode 16 java

迭代法:时间复杂度 O (n)(遍历一次链表),空间复杂度 O (1)(仅用 3 个指针),是更常用的解法(无递归栈开销)。递归法:时间复杂度 O (n)(递归 n 次),空间复杂度 O (n)(递归栈深度),思路更巧妙但需理解“回溯调整”。下次遇到链表操作,先想 “指针如何移动才能避免断裂”,多画几步流程(比如用草稿纸写 prev/curr/next 的变化),会比直接写代码更清晰~对比项翻转二叉树(递归)反转链表(迭代 / 递归)结构特性非线性(每个节点有两个分支)

2025-08-18 22:34:05 771

原创 杂记 05

原码:直观但无法高效运算,仅用于早期简单场景。反码:过渡方案,解决了部分运算问题但仍有缺陷。补码:最终解决方案,通过统一加减法为加法运算,简化了计算机硬件设计,同时避免了 0 的二义性,成为现代计算机表示有符号整数的标准方式。原码、反码、补码的转换规则,是计算机 “用二进制表示和计算有符号数” 的底层逻辑。学会它们,不仅能帮你理解 “计算机为什么能算对”,更能在调试底层问题、处理数值异常、进行系统级开发时,快速定位问题本质 —— 这是从 “会用” 到 “理解原理” 的重要一步。

2025-08-18 22:10:12 938

原创 学习日志37 python

直接在类中定义的变量就是类属性,无需特殊关键字,可通过。

2025-08-18 21:45:22 800

原创 杂记 04

惰性” 的核心是 “不提前干活,等需要了再动手类型计算方式(“勤快” vs “惰性”)例子对比内存占用差异列表(勤快)一次性生成所有值,全部存到内存→ 直接生成 1~9999 所有数字,全存起来内存里会同时存在 10000 个数字生成器(惰性)只在 “要值” 时才生成 1 个,生成后不保留→ 一开始不生成任何值,等调用__next__()才出 1,再调用出 2内存里永远只存 “下一个要生成的值的位置”,不管范围多大,占用都极小。

2025-08-18 12:54:03 699

原创 Leetcode 15 java

翻转二叉树的本质,是对每一个节点,交换它的左子树和右子树。比如示例 1 中的根节点4,要交换它的左子树(以2为根)和右子树(以7为根);接着处理2这个节点,交换它的左子树(1)和右子树(3再处理7这个节点,交换它的左子树(6)和右子树(9直到遇到 “空节点”(没有子树可交换),就停止。递归处理二叉树时,每个节点只被 “访问并交换一次”,处理顺序是 “先处理所有子节点,再处理当前节点”,子节点处理完不会回头,当前节点处理完也不会再被重新处理,因此无需担心 “root 被修改后再次调用” 的问题。

2025-08-17 23:50:11 654

原创 Web 开发 16

函数体写法是否需要return适用场景(参数) => { ... }是(必须写)函数体有多行逻辑或需要条件判断(参数) => 表达式否(自动返回)单行简单表达式(参数) => ( ... )否(自动返回)多行表达式(如 JSX 结构)花括号{}里要显式return,圆括号()或直接写表达式则隐式返回。在 JSX 中,为了代码清晰和避免错误,多行结构推荐用()包裹并省略return。2嵌套函数:看 “是否定义在另一个函数内部”回调函数:看 “是否被当作参数传给另一个函数”你最初的理解是对的,

2025-08-17 18:15:37 896

原创 学习日志36 python

这确实体现了不同编程语言的设计哲学差异:Python 作为动态类型语言,追求简洁和易用性,用统一的str类型处理所有文本数据(无论是单个字符还是长字符串),减少了类型定义的负担,让开发者更专注于业务逻辑。而 C、Java 等静态强类型语言则更强调类型的严谨性,通过区分char和字符串类型,在编译阶段就能进行更严格的类型检查,这在大型项目中有助于减少类型相关的错误,也更符合底层内存管理的逻辑(比如char通常占用 1 字节,而字符串是字符数组)。

2025-08-17 15:51:24 659

原创 Leetcode 14 java

今天复习一下以前做过的题目,感觉是忘光了。给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回null。图示两个链表在节点c1开始相交题目数据保证整个链式结构中不存在环。注意,函数返回结果后,链表必须保持其原始结构。自定义评测:评测系统的输入如下(你设计的程序不适用- 相交的起始节点的值。如果不存在相交节点,这一值为0listA- 第一个链表listB- 第二个链表skipA- 在listA。

2025-08-16 22:57:07 1066

原创 杂记 03

当你搬 1 个箱子时,用手就行(普通工具);当你搬 1000 个箱子时,就需要卡车(Spark 这种分布式框架)—— 卡车不是 “奇怪的东西”,而是 “搬大活必须的工具”。Spark 本质是 “为大数据时代量身定做的‘数据处理卡车’”,是技术跟着需求走的必然产物。

2025-08-16 22:06:26 671

原创 学习日志35 python

get()方法的核心优势是避免因键不存在而导致的KeyError,适合在不确定键是否存在的场景中使用。当需要为不存在的键返回特定默认值(如空字符串、0、提示信息等)时,get()比条件判断(如)更简洁。优先使用 "安全方法"当不确定目标是否存在时,尽量用返回特定值的方法(如find()get()),避免直接访问(如index()dict[key]),减少报错风险。python运行# 安全判断字符串是否包含子串s = "test"= -1: # 用 -1 判断print("存在")

2025-08-16 22:06:09 997

原创 Web 开发 15

本质上,是要让setStories执行的时机,严格晚于 “接口数据返回”。stories存的是真实可用的数据;组件渲染、业务逻辑能基于正确的数据执行。如果是 React 框架,还可以结合useEffect控制 “何时发起请求”(比如组件挂载时、某个状态变化时),让异步流程更贴合组件生命周期。异步操作要 “等结果”,再更新状态,避开 “异步未完成就执行同步逻辑” 的坑。Promise 本身不是结果,而是 “承诺会拿到结果” 的 “订单”。

2025-08-15 23:49:33 636

原创 杂记 02

SSH 本质是一种安全的远程通信协议,核心是通过加密保护远程操作的安全性,不仅用于服务器远程管理,也广泛应用于代码仓库访问、文件传输等场景。SSH 在多人协作中最核心的作用是简化远程仓库的访问流程和保障数据传输安全,尤其适合团队高频次的代码同步操作。配置一次 SSH 密钥后,团队成员可以专注于代码开发,而不必在认证环节浪费时间,是协作开发中的基础工具之一。

2025-08-15 22:35:20 792

原创 学习日志34 python

read()python运行 readline()python运行 readlines()python运行 补充说明:这些函数适用于不同的读取场景,可根据实际需求选择使用:读取整个文件用,逐行处理用,需要一次性获取所有行并处理用。 是数学中的向下取整函数,用于返回小于或等于输入值 的最大整数。例如:Python 2.x: 返回 float 类型 例如: 的结果是 (浮点数)Python 3.x: 返回 int 类型 例如: 的结果是

2025-08-15 12:23:42 728

原创 杂记 01

90% 的开发场景(尤其是后端、云原生、脚本开发):优先用WSL 2,轻便、高效、集成性好。需要 Linux 图形化界面或深度系统定制:选Ubuntu 虚拟机。实际使用中,WSL 已经能满足绝大多数开发需求,且微软持续优化 WSL 的功能(如支持 GUI 应用、Docker 原生运行等),推荐优先尝试。减少沟通成本(明确需求和方案);保证代码质量(测试、评审);降低上线风险(灰度、监控)。不同团队(比如互联网公司偏敏捷快速迭代,传统企业偏严谨流程)会调整步骤,但核心逻辑相通~

2025-08-13 23:36:12 833

原创 学习日志33 python

ord(c):字符 → 编码(字符转数字)chr(i):编码 → 字符(数字转字符)这两个函数在处理字符编码转换、密码学、文本处理等场景中非常常用,比如大小写字母转换(可得到差值 32)。

2025-08-13 19:12:15 695

原创 Web 开发 14

JavaScript 里,post这类网络请求是“异步操作”当代码执行到post(...)时,浏览器会 “单独开一个线程” 去发请求、等响应不会阻塞后面的代码(但这里后面没代码,核心是then的逻辑)。只有当请求成功(拿到响应)后,才会执行.then(...)里的回调函数setAdmin(!admin)。所以顺序一定是!!!!!!!!!!发 POST 请求(异步开始)→等待响应(此时主线程继续干别的,但这里没别的代码)→响应成功 → 执行 setAdmin(改状态)

2025-08-12 20:38:32 1291

原创 学习日志32 python

简单说,foo。

2025-08-12 15:49:10 725

原创 学习日志31 python

是 Python 中一种非常简洁且实用的特色语法,用于交换两个变量的值。例如:python运行这种语法不仅限于两个变量,还可以同时处理多个变量的赋值和交换,如也是合法的。这体现了 Python 语法的简洁性和灵活性。

2025-08-11 21:37:07 539

原创 学习日志30 python

遍历列表时删除元素的关键是避免在遍历过程中改变原列表的长度和索引顺序。推荐使用“遍历副本 + 修改原列表” 或列表推导式,简单且不易出错。

2025-08-07 14:08:50 890

原创 Web 开发 13

明确子组件功能:先想子组件要干啥,需要哪些数据支撑(比如这里<Profile/>要控制按钮状态)。匹配父组件数据:看父组件(这里是)有的数据里,哪些能满足子组件功能需求。判断是否传递:子组件需要的,就传;用不上的,别传(传了也是多余,还可能让数据 flow 混乱)。简单说就是“子组件功能决定传什么”。比如做 “购物车组件”,子组件要显示商品总价,那父组件的 “商品列表 + 价格” 数据就得传;要是子组件只负责 “展示商品图片”,可能就不用传价格数据。

2025-08-07 00:30:32 1134

原创 学习日志29 python

当子类定义了__slots__时,子类实例允许拥有的属性是父类__slots__与子类__slots__的并集。子类实例可以使用自身__slots__中定义的属性也可以使用父类__slots__中定义的属性但不能使用两者都未定义的属性__slots__ = ('a', 'b') # 父类允许的属性__slots__ = ('c', 'd') # 子类允许的属性# 子类实例可以使用父类和子类的 slots 属性child.a = 1 # 父类 slots 中的属性,允许。

2025-08-06 23:24:33 1217

原创 Leetcode 13 java

这个解法的关键是利用两个指针 “同步遍历” 两个有序链表,每次选较小的节点拼接,充分利用了链表的有序性,效率很高。理解了这个思路,以后遇到 “合并 k 个有序链表” 等问题也能举一反三啦~ 是不是没那么难?加油!java运行// 定义链表的节点结构int val;// 节点存储的值// 指向下一个节点的引用(指针)// 三个构造方法,用于创建节点ListNode() {} // 空构造} // 只传值的构造。

2025-08-05 23:26:09 960

原创 学习日志28 python

实现方法,支持索引和切片访问。支持迭代(由间接实现)。如果再实现__len__方法,就更接近列表、元组等标准序列的行为。例如,Python 中的range对象就是典型的 “类序列” 对象,它实现了和__len__,支持索引、切片、迭代和len()操作,但不是列表那样的 “容器型” 序列。特性编译型语言解释型语言执行方式预编译为机器码,直接运行解释器边解释边执行效率高(无需重复翻译)较低(但 JIT 可优化)跨平台性差(依赖操作系统)好(依赖解释器)典型代表C、C++、Go。

2025-08-05 23:03:14 988

原创 Web 开发 12

是你给服务器的 “搜索指令”!是规矩里的 “关键词标签”(告诉服务器这是搜索内容),web+lab是你实际想搜的内容(用代替空格,浏览器的小习惯)。服务器收到这个,就会返回和web lab相关的 YouTube 视频结果啦~总结:整个网址就是让浏览器带着 “安全规矩”,拿着 “搜索部门地址”+“你要搜的内容”,去 YouTube 服务器要结果,就像你带着 “暗号 + 地址 + 需求”,找朋友帮你找东西一样 ,前端里做搜索功能,经常得这么拼网址、传参数哟~1xx:“我收到了,处理中”2xx:“成了!3xx。

2025-08-04 23:58:43 1053

原创 学习日志27 python

封装是 “隐藏内部细节”,解决数据安全和接口简化问题;多态是 “统一接口,不同实现”,解决代码灵活性和扩展性问题;二者常结合使用:封装为多态提供了基础(确保对象内部稳定),多态通过封装的接口实现灵活交互。

2025-08-04 22:31:11 1080

原创 Leetcode 12 java

翻转二叉树的核心不是找 “数学规律”,而是每个节点都要交换左右子树,递归通过 “先处理子问题(翻转左右子树),再处理当前问题(交换)” 的思路,完美贴合这个需求。多模拟几次示例的递归过程,就能直观感受到它的合理性啦~翻转二叉树 = 每个节点都做一次 “左右孩子互换”,递归就是让每个节点按 “从下到上” 的顺序完成这个互换(先处理孩子,再处理自己)。就这么简单,下次再想不通,就把自己当成节点,想想 “我只需要换左右两个孩子,孩子的事让他们自己搞定” 就行啦!

2025-08-03 23:44:35 619

原创 Web 开发 11

state“no props” 的核心是组件不依赖外部数据,而不是 “没有数据”。要么是纯静态 UI(真・无数据);要么是数据自给自足(有内部数据,不需要外部传入)。组件的数据是否需要从外部(父组件)获取。如果不需要,就是 no props 组件~你的理解非常准确!这种 “自己有按钮、自己处理数据” 的子组件,需要用state来管理自己的数据,因为数据是动态变化的(比如点击次数会变),但不需要props,因为数据不需要和外部组件交互。举个具体例子:一个子组件。

2025-08-03 23:27:06 1043

原创 学习日志26 python

根据前面的例子和问题,你需要重点强化的是Python 函数参数的传递规则,尤其是不同类型参数的优先级和赋值逻辑。这类题的核心是 “借数学场景考编程思维”,就像用 “计算圆面积” 考你是否理解πr²的公式逻辑,而不是让你背具体数值。面试时抓住 “逻辑拆解→小例验证→关联应用” 这三个步骤,就能轻松应对~生成器表达式是 Python 中处理迭代场景的高效工具,核心优势是惰性计算和内存高效。它的语法简洁,常与sum()any()all()等函数配合使用,尤其适合处理大量数据或无需一次性存储所有结果的场景。

2025-08-03 15:42:54 767

原创 Web 开发 10

NavBar 组件:无 props 时,内部实现导航逻辑,可包含状态(如菜单切换)。className 替代 class:因 JavaScript 关键字冲突,React 中必须用className定义样式类。类名命名规范:以组件名开头(如navbar-xxx)、小写连字符、语义化,目的是提高可读性和避免冲突。遵循这些规范能让 React 代码更符合社区习惯,便于团队协作和后期维护。A:你的理解非常准确!CSS 变量(Custom Properties)确实和编程语言中的常量(constant)

2025-08-02 23:45:19 738

空空如也

空空如也

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

TA关注的人

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