自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 yarn 命令运行问题 bug

yarn : 无法加载文件 C:\Users\junwei.ke\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?中的 about_Execution_Policies。所在位置 行:1 字符: 1。

2025-05-22 14:01:09 186

原创 Lodash isEqual 方法源码实现分析

isEqual。

2025-05-12 13:47:35 814

原创 Python3虚拟环境与包管理:项目隔离的艺术

虚拟环境不是奢侈品,而是必需品"每个项目一个环境"是Python开发的最佳实践明确声明和锁定依赖版本是团队协作的基础现代化工具(Poetry、Pipenv)提供了更完整的解决方案掌握虚拟环境,让你的Python之旅更加顺畅“给我一个虚拟环境,我能撬动整个Python世界。” —— 阿基米德(如果他是Python开发者)记住:好的项目管理始于良好的环境隔离!掌握虚拟环境,你就掌握了Python项目的基础架构。

2025-05-10 15:14:30 584

原创 Python3正则表达式:字符串魔法师的指南[特殊字符]‍♂️

想象一下,你是一位文本世界的探险家,需要在茫茫字符海洋中寻找特定的"宝藏"(模式)。正则表达式就是你的"寻宝地图"!正则表达式(Regular Expression,简称regex)是一种强大的字符串搜索、匹配和操作的模式语言。🔍 查找特定模式的文本✂️ 替换文本中的特定内容✅ 验证文本是否符合特定格式(如邮箱、电话号码)🪓 分割文本为多个部分符号作用就像在说…\d匹配任意数字,等同于[0-9]“来个数字吧!\D匹配任意非数字,等同于[^0-9]“数字以外的都行!\w。

2025-05-08 13:06:45 1147

原创 Python3 上下文管理器:优雅管理资源的艺术

想象你去图书馆借书:你进入图书馆,使用资源(阅读书籍),然后离开时确保归还所有书籍并保持一切整洁。上下文管理器就是Python中的"图书馆管理员",它帮助你自动处理资源的获取和释放过程。上下文管理器主要通过with语句实现,处理的是"上下文"——即程序运行的特定环境状态。📌核心概念:上下文管理器负责设置一个环境,让你在其中执行代码,然后无论成功或失败都能清理环境。这非常适合处理需要成对操作的场景,如打开/关闭文件、获取/释放锁、连接/断开数据库等。基于类的方法(实现__enter__和__exit__

2025-05-08 12:57:56 568

原创 element.scrollIntoView(options)

是一个浏览器原生 API,用于将指定元素滚动到其父容器或窗口的可视区域中。带分页或无限滚动的表格需要通过键盘或按钮上下切换行记录需要自动定位并高亮某一行。

2025-04-30 11:30:33 356

原创 Python3 高级数据处理:推导式大法

推导式(Comprehensions)是Python中最强大的语法特性之一,它让我们能用简洁优雅的方式来创建和转换数据集合。列表推导式就像一个快速食品加工机:你放入原材料(可迭代对象),设置筛选条件(if语句),然后每个通过筛选的食材都经过同样的加工(表达式),最终得到一盘精心处理过的成品。字典推导式就像一个自动标签机:你给它一堆物品(可迭代对象),它按照你的规则给每个物品贴上相应的标签(键),并可能修改物品本身(值),最终生成一个有序的标签-物品对应表。这实现了矩阵的顺时针旋转90度。

2025-04-29 13:19:17 829

原创 Python3: 函数式编程特性

函数式编程就像是用乐高积木搭建程序:每个函数都是一个小积木,我们通过组合这些积木来构建复杂的结构,而不是改变它们的形状。函数式编程是一种编程范式,它将计算视为数学函数的求值,并避免改变状态和可变数据。函数是"一等公民"(可以像普通变量一样被传递和使用)强调"不可变性"(避免修改已有数据)追求"纯函数"(相同输入总是产生相同输出,没有副作用)喜欢"声明式"而非"命令式"(描述"做什么"而非"怎么做")

2025-04-29 10:23:47 553

原创 Python3:装饰器、生成器与迭代器

允许在不修改原函数的情况下添加新功能可以用于函数或类实用场景:日志记录、性能监控、访问控制、缓存等。

2025-04-29 10:15:21 881

原创 Python3:面向对象编程

想象一下,如果编程是搭建乐高积木,那么面向对象编程(OOP)就是创造了一套可以自定义形状、功能和行为的积木系统。不再局限于使用现成的积木,你可以设计自己的积木类型!类(Class) 是蓝图,对象(Object) 是实体。想象你有一个"蛋糕模具"(类),你可以用它制作出无数个"蛋糕"(对象)。每个蛋糕都有相同的基本结构(属性),但可以有不同的口味、装饰(状态)。二、四大基石:面向对象的核心特性1️⃣ 封装(Encapsulation):包装复杂性,提供简单接口就像使用咖啡机,你只需要按按钮,不需要了解内

2025-04-27 13:27:45 437

原创 前端分页与瀑布流最佳实践笔记 - React Antd 版

虚拟滚动:仅渲染可见区域内的元素,大幅提升性能// 使用React Window (安装: npm install react-window)</div><List{Row}</List>数据预取:提前加载下一页数据,提升用户体验// 当用户滚动到接近底部时预加载// 当滚动到距离底部20%的位置时预加载请求优化:使用防抖和节流控制请求频率// 防抖:用于搜索输入}, 300);// 节流:用于滚动事件}, 200);

2025-04-27 11:37:02 1036

原创 Python3:文件操作

文件操作是编程中的基础技能,Python 提供了简单而强大的文件处理功能。通过文件操作,你可以读取、写入、修改文件,实现数据的永久存储和共享。

2025-04-25 16:39:33 711

原创 Python3基础:异常处理

异常是程序运行时出现的错误或意外情况。当 Python 遇到无法正常处理的情况时,会抛出一个异常。如果不处理这些异常,程序就会崩溃并显示错误信息。

2025-04-25 10:23:55 786

原创 Python3基础: 模块与包的基本概念

模块是一个包含 Python 代码的文件(.py文件),可以定义函数、类和变量,还可以包含可执行代码。简单来说,模块就像是一个工具箱,里面放着各种可以重复使用的工具(代码)。包是一种组织模块的方式,本质上是一个包含多个模块的目录,必须包含一个特殊的文件(在 Python 3.3+ 中,这个文件可以为空或不存在,但创建它是一个好习惯)。想象一下,如果模块是工具箱,那么包就是一个带有多个抽屉的工具柜,每个抽屉(子包或模块)中存放不同类型的工具。

2025-04-25 10:02:08 639

原创 Python3 基础:函数定义与调用

什么是函数?一、函数的定义二、函数的调用三、函数参数3.1位置参数3.2关键字参数3.3默认参数值3.4可变数量的参数args:接收任意数量的位置参数**kwargs:接收任意数量的关键字参数3.5 综合使用各种参数四、返回值4.1 返回多个值4.2没有返回值的函数五、函数作用域与变量5.1 局部变量5.2全局变量5.3修改全局变量六、函数是一等公民6.1函数赋值给变量6.2函数作为参数6.3函数作为返回值七、匿名函数(Lambda 函数)八、递归函数九、文档字符串(Docstring)十、函数的最佳实践。

2025-04-24 19:34:01 593

原创 Python3 基础:控制流结构(条件语句、循环)

幸运的是,Python 提供了丰富的控制流结构,让我们的代码能够像人类思维一样灵活。控制流是 Python 编程的核心元素,掌握条件语句和循环结构,可以让你的程序具有决策能力和重复执行能力。随着实践经验的积累,你会逐渐掌握何时使用哪种控制结构,如何简化复杂的逻辑,以及如何编写更加优雅、高效的 Python 代码。条件语句让程序能够根据不同情况执行不同的操作,就像我们日常生活中的"如果…不过要注意,过多的嵌套会让代码难以阅读和维护,应尽量避免过深的嵌套。语句用于立即跳出循环,不再执行循环中的后续代码。

2025-04-24 19:11:40 732

原创 DevOps:概念与学习路径

DevOps 是一种结合软件开发(Development)和IT运维(Operations)的文化与实践方法,旨在缩短系统开发生命周期,提高软件交付频率,确保可靠的软件发布,并与业务目标保持一致。会在下方持续更新链接~本人打算以python为路线,近期Python正式成为英伟达CUDA原生编程语言,所以非常值得学习一下。后续我会建立各个专栏分类用于学习,有兴趣的可以持续关注。

2025-04-24 14:38:41 926

原创 Python 学习路线与笔记跳转(持续更新笔记链接)

Python 是一种高级编程语言,以其简洁、易读的语法和强大的生态系统而闻名。自动化脚本Web 开发数据分析与科学计算机器学习与人工智能DevOps 工具开发云基础设施管理。

2025-04-24 14:36:57 1832

原创 Python3 基础:变量、数据类型和基本运算

在 Python 中,变量是存储数据的容器,而数据类型决定了数据的性质和可执行的操作。Python 的动态类型系统使得编码更加灵活,但同时也要注意数据类型的正确使用。基本运算符让我们能够对数据进行操作,不同类型的数据可以使用不同的运算符。想象一下,变量就像是带标签的盒子,你可以在里面放东西,以后需要时再拿出来用。Python 有几种基本的数据类型,就像不同形状的积木,我们可以用它们构建复杂的结构。通常是检查数据类型的最佳选择,因为它尊重类的继承层次结构,并且可以同时检查多种类型。浮点数是有小数部分的数字。

2025-04-24 14:35:47 907

原创 React+TypeScript:现代化前端路由导航系统开发详解

高效的路由导航系统是现代单页应用的关键组成部分。通过实现细粒度监听、优先级控制和便捷的导航API,可以大大提高应用的性能和开发效率。本文介绍的增强型路由系统适合复杂的企业级应用,尤其是那些需要精细路由控制的场景,如数据分析平台、管理系统等。通过合理应用这些模式和工具,你可以构建出更加灵活、高效的前端路由系统,为用户提供流畅的导航体验。

2025-04-24 13:57:51 1175

原创 React:什么是Hook?通俗易懂的讲讲

窗口宽度:{width}

2025-04-24 13:45:27 474

原创 React:<></>的存在是为了什么

是 React 的Fragment(片段)语法糖,等价于 。主要作用:允许你在组件里返回多个元素,而不需要额外增加一个 DOM 节点。用 div 包裹(会多出无意义的 div)这样会多一个无意义的 div,可能影响样式和布局。这样不会生成额外的 DOM 节点,渲染出来只有两个 div。一句话总结: 是 React 的“空标签”,让你可以返回多个元素而不增加多余的 HTML 节点。

2025-04-22 15:49:29 274

原创 Dify使prompt和业务代码解耦,那么什么是Prompt?

Prompt(提示词)是输入给大语言模型(LLM)的文本指令或问题,用于引导模型生成特定的输出内容。

2025-04-19 17:04:46 228

原创 ping 命令的用途与功能

ping是一个非常基础且强大的网络诊断工具,它通过发送 ICMP (Internet Control Message Protocol) 回显请求包到目标主机,并等待回显响应来测试网络连接。以下是ping。

2025-04-15 19:18:28 358

原创 每日一个前端小技巧:使用扩展运算符和短路逻辑条件性地添加对象属性

在 JavaScript 开发中,我们经常需要根据某些条件动态地向对象添加属性。一种非常简洁且常用的方法是结合使用对象扩展运算符 (这是一个非常实用且优雅的 JavaScript 小技巧,适用于需要根据条件动态构建对象的场景。为真值 (truthy) 时,你才想向一个新对象添加。让我们看一个更具体的例子,比如只有当。这个属性且其值为真值时,才将它以。) 操作符的短路特性。

2025-04-14 12:55:26 360

原创 Web API:AbortController

取消进行中的网络请求停止不再需要的异步操作实现请求超时逻辑防止竞态条件在用户交互变化时优雅地处理资源清理它提供了一种标准且优雅的方式来管理异步操作的生命周期,特别是在单页应用程序中,对于提高用户体验和资源利用效率非常重要。

2025-04-07 17:22:25 656

原创 Vite:前端代理服务器转发在网络中看不到转发地址的原因

需要注意的是,Vite 的代理功能仅在开发环境中有效。,浏览器只与本地 Vite 开发服务器通信,对实际的转发目标一无所知。这是代理的核心特性之一,也是它解决跨域问题的关键机制。这就是为什么在浏览器请求头中看不到实际的转发地址的原因。使用 Vite 的代理转发功能时,使用上述配置,当浏览器请求。

2025-04-07 16:53:59 502

原创 CSS3:Flex简记

下面是整理的一个【🎯 Flex 概念图 + 使用场景速查表】,适合初学到进阶理解弹性布局。

2025-03-27 13:57:00 523

原创 React:useLayoutEffect 解决组件闪烁问题

是 React 中的一个钩子函数,它与更常用的useEffect。而useEffect。

2025-03-24 10:22:24 397

原创 深拷贝在 JavaScript 中的几种实现方式对比

在无法使用 JSON 或 structuredClone 的情况下,可以手动编写递归函数来深度拷贝对象。• 灵活性高,可以根据需要扩展以处理更多特殊情况。• 不依赖环境提供的 API,兼容性好。• 需要手动处理各种边界情况,代码实现和维护较复杂。• 性能上通常不及浏览器原生实现的 structuredClone。• 对兼容性有要求的项目或需要定制拷贝逻辑的场景;• 数据结构较简单,且不频繁调用时。JSON 方法:适用于简单数据,性能好,但局限性明显。

2025-03-20 18:48:49 860

原创 JavaScript:还在用if判断属性是否存在?哒咩(?.)用起来

这种写法的含义是:如果 fstNode 对象有 children 属性且它的值为 truthy,则执行内部的操作。如果 fstNode.children 是 undefined、null 或任何 falsy 值(例如 false, 0, “” 等),则不会执行任何操作。在这个例子中,只有当 fstNode 和 fstNode.children 都存在时,forEach 才会被调用。.),我们可以简化对嵌套属性的安全访问。在 JavaScript 中,我们常常使用 if 语句来检查某个对象的属性是否存在。

2025-02-10 20:27:24 235

原创 JavaScript:||=的写法作用

|= 是一种逻辑赋值操作符(logical assignment operator),它是 JavaScript 中的一种简写方式,结合了逻辑运算符 ||(逻辑或)和赋值操作符 =。它的作用是:• 如果左侧的变量(foundImprovement)是falsy(即 false, 0, "", null, undefined 或 NaN),则将右侧的表达式的结果赋给左侧变量。• 如果左侧的变量是 truthy,则保持原值,不做任何改变。if (!

2025-02-10 20:17:07 376

原创 JavaScript:CPU缓存预取以及确定数据下直接更改数组length的好处

1. CPU 缓存预取:通过反向填充栈,可以利用 CPU 的预取机制,提高内存访问效率。这种方法优化了内存布局,避免了频繁的随机内存访问,提高了缓存命中率。2. 直接改变 length 的原因:在 JavaScript 中,数组的 length 可以直接修改,它是一个动态的属性。修改 length 不需要进行数组的复制或其他操作,因此相比 push 等方法,能更高效地调整数组的大小,避免了不必要的内存分配和数据复制。

2025-02-10 16:54:01 991

原创 JavaScript:固定长度数组与 push 操作的优化

性能提升:使用固定长度数组并通过直接索引操作来代替 push 方法,通常能够显著提高性能,尤其是在以下情况下:• 你已经知道数组的最终大小,并且可以在创建数组时预分配内存。• 数组中不会有频繁的大小变化,避免了动态扩容的开销。• 你希望减少隐式类型检查和内存重分配,提升代码执行效率。通过这种方式,你可以控制内存分配和数组的增长方式,从而获得更高效的内存使用和更低的性能开销。这对于性能敏感型应用,如数据处理、游戏开发、实时计算等,尤其重要。

2025-02-10 15:53:18 467

原创 JavaScript:基本类型(Array、Obejct)各个迭代方式区别

​ • for-in: 用于遍历对象的属性(键)。​ • for-of: 用于遍历可迭代对象的值(如数组、字符串、Map 等)。​ • for: 传统的循环结构,适用于索引操作。​ • forEach: 数组专用的遍历方法,简洁易读,但不支持 break 和 continue。​ • map: 用于在遍历时生成新数组。​ • Object.keys(), Object.values(), Object.entries(): 用于遍历对象的键、值和键值对。

2025-02-08 17:26:55 871

原创 JavaScript:大量数据下Object.values().map()的缺陷和解决方案

比更高效,因为它避免了额外的数组创建,直接在对象本身上进行迭代。尤其是在处理大量数据时,这种差异更加明显。

2025-02-08 16:55:47 529

原创 TypeScript——类型守卫

有时候你需要定义一个类型保护函数,用于更复杂的类型检查。这些函数通常返回一个布尔值,并且使用类型谓词 () 来告诉 TypeScript 在这个分支中,我们可以认为变量属于某个特定类型。// 假设这里从某个地方获取宠物// 简单示例,默认返回 Fishpet.swim();

2025-01-24 15:12:38 298

原创 d3 绑定数据 类型定义问题

这个错误提示表明 d3 的 attr 方法期望的回调函数类型和你传入的 (d: readonly number[]) => number 类型不匹配。原因是 d3 无法知道回调中 d 的具体类型是 readonly number[],因此默认推断为 unknown。• AttributeValue 是属性值的类型(如 string | number | boolean)。• Datum 是绑定的数据类型(默认为 unknown)。• 提前用 .data() 显式绑定数据也是一种可靠的做法。

2025-01-24 14:54:03 411

原创 git——merge和rebase

将主分支上的更改整合到特性(feature)分支中,是一个常见的问题。是一种把两个或多个分支的历史记录结合起来的方法。通常是在特性分支完成开发之后,将特性分支合并到主分支。是另一种整合更改的方法,通过将特性分支上的更改应用到主分支的头部,使提交历史变得更加线性。通过这种方式,可以兼顾到历史记录的清晰和完整,同时也能够灵活处理不同开发阶段的需求。将特性分支合并回主分支,确保历史记录完整且合并过程可追踪。在使用 Git 进行分支管理时,决定是使用。:在开发特性分支期间,可以经常使用。

2025-01-13 11:10:30 494

原创 Proto文件——定义TS数据类型

在现代前后端分离开发过程中,Proto文件(Protocol Buffers)提供了许多优势,尤其是在定义数据结构和通信协议方面。服务定义:Proto 文件不仅可以定义数据结构,还能定义服务接口,用于描述 RPC(远程过程调用)。这使得前端和后端之间的调用更加规范和一致。数据一致性:前后端使用同一套数据模型,避免数据不匹配。自动生成代码:减少手动编码,降低出错风险。高效的序列化和反序列化:提高性能,节省带宽。向后兼容性:方便进行版本控制和扩展。服务定义和RPC支持。

2025-01-13 10:20:15 1245

空空如也

空空如也

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

TA关注的人

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