摘要: 前言 数组特点 存储区间是连续,且占用内存严重,空间复杂也很大,时间复杂为O(1)。 优点:是随机读取效率很高,原因数组是连续(随机访问性强,查找速度快)。 缺点:插入和删除数据效率低,因插入数据,这个位置后面的数据在内存中要往后移的,且大小固定不易动态扩展。 链表特点 区间离散,占用内存宽松,空间 阅读全文
posted @ 2021-02-04 23:14 龙陌 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 在 Git 中创建分支时,选择分支名称的命名规范非常重要,因为它不仅有助于代码审查和协作,还能提高项目管理和追踪问题的效率。 在给定的两个选项之间选择,fix/bug_123 和 fix_bug_123,通常推荐使用带有斜杠 / 的风格,即 fix/bug_123,原因如下: 语义清晰:使用 / 分 阅读全文
posted @ 2024-07-05 10:45 龙陌 阅读(2) 评论(0) 推荐(0) 编辑
摘要: JavaScript中的异步模式 JavaScript语言的执行环境是“单线程(singlethread)”,就是指一次只能完成一个任务。 如果有多个任务,就必须排队,等前面一个任务完成,再执行后面一个任务,以此类推。 这种模式的好处是实现起来比较简单,执行环境相对单纯, 坏处是只要有一个任务耗时很 阅读全文
posted @ 2024-07-04 20:15 龙陌 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 在React应用中,组件的频繁更新可能会导致性能问题,因为每次更新都涉及到重新渲染和布局计算。为了提升性能,避免不必要的更新是非常关键的。以下是一些优化React组件性能,避免频繁更新的策略: 使用PureComponent或React.memo PureComponent 和 React.memo 阅读全文
posted @ 2024-07-04 20:14 龙陌 阅读(2) 评论(0) 推荐(0) 编辑
摘要: WebP 图片格式是由 Google 开发的一种现代图像格式,旨在提供更高效的图像压缩,相比于传统的 JPEG、PNG 和 GIF 格式,WebP 提供了显著的优势: 更高的压缩率:WebP 支持无损和有损压缩。在有损压缩模式下,WebP 可以提供比 JPEG 更高的压缩率,这意味着相同质量的图片, 阅读全文
posted @ 2024-07-04 19:29 龙陌 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 在现代Web开发中,浏览器对同时发起的网络请求确实存在一定的限制,这个限制通常与浏览器的安全性和性能优化有关。不同浏览器对最大并发连接数有不同的默认设置,例如,Chrome 和 Firefox 大致允许每个域名上同时有6到8个TCP连接,而IE可能更低。当超过这个限制时,额外的请求会被排队等待,直到 阅读全文
posted @ 2024-07-04 15:03 龙陌 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 要优化这段代码以避免 ESLint 的 array-callback-return 错误,你需要确保 map 函数中的每个回调都返回一个值或者通过早期返回来处理。 在你的例子中,你只在满足特定条件时返回元素。 ESLint 的规则要求每个数组迭代都应有返回值,否则它会抛出警告。 一种解决方案是在不满 阅读全文
posted @ 2024-07-04 14:24 龙陌 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 在B端产品的表格设计中,操作按钮的交互逻辑是一个需要细致考虑的问题。表格作为信息展示和数据管理的重要工具,其操作按钮的设计直接影响到用户的操作效率和使用体验。 关于是否应该在未选中行时禁用删除按钮,还是应该在点击按钮时提示选择数据,以下是从几个不同角度的关键点分析: 一、用户体验与直观性 用户心理预 阅读全文
posted @ 2024-07-03 16:53 龙陌 阅读(3) 评论(0) 推荐(0) 编辑
摘要: DI:Defect Index(缺陷率) 定义:DI值是衡量软件质量的高低的指标之一。 公式:DI= 致命级别的问题个数10+严重级别的问题个数3+一般级别的问题个数1+提示级别的问题个数0.1 阅读全文
posted @ 2024-07-01 11:43 龙陌 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 在 TypeScript 中,要限制一个方法的参数 data 必须是数组且数组的长度为偶数,可以通过定义一个类型守卫来实现。这里有一个示例: function isEvenArray<T>(arg: T[]): arg is T[] { return Array.isArray(arg) && ar 阅读全文
posted @ 2024-06-25 15:35 龙陌 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 在 Markdown 中,要链接到文档中的四级标题(即第四级别的标题),可以使用以下方法: 假设你有一个 Markdown 文档结构如下: # 标题1 ## 标题2 ### 标题3 #### 标题4 正文内容。 如果你想要创建一个链接,指向第四级标题(#### 标题4),可以按照以下步骤操作: 添加 阅读全文
posted @ 2024-06-25 00:15 龙陌 阅读(3) 评论(0) 推荐(0) 编辑
摘要: NaN 是 JavaScript 中的特殊值,表示"Not-a-Number",通常用于表示数学运算中未定义或无法表示的结果。 它是一种特殊的数字值,但与其他数字不同,NaN 本身是一个数值,可以用来进行比较和判断。 NaN 与任何值相加都会得到NaN NaN 与任何值都不相等,包括他本身 NaN 阅读全文
posted @ 2024-06-24 22:17 龙陌 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 在 TypeScript 中,如果你想要从一个复杂的类型(比如 TableRowSelection)中仅选取特定的属性(如 onChange 和 onSelect),你可以使用 Pick 工具类型来完成这个任务。 首先,确保你已经定义了或者导入了 TableRowSelection 类型,并且知道它 阅读全文
posted @ 2024-06-24 18:46 龙陌 阅读(4) 评论(0) 推荐(0) 编辑
摘要: node: protocol is available as of Node.js 14.18.0 LTS. Since we are dropping support for all Node.js versions below that, we can takeadvantage of this 阅读全文
posted @ 2024-06-21 23:32 龙陌 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 这段命令是用于在Node.js项目中安装React 17版本的一个指定操作,具体各部分含义如下: npm i 或 npm install:这是用于在Node.js项目中安装包的命令,会根据package.json文件中的dependencies或devDependencies安装所有依赖,如果没有指 阅读全文
posted @ 2024-06-17 14:11 龙陌 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 在React中,修改state中的对象数组中的某个对象属性时,最佳实践是先拷贝再修改,然后再设置state。这样做是为了遵守React的状态更新应该是幂等的原则,即多次执行相同的操作应该得到相同的结果,并且避免直接修改state导致的不可预期的行为和潜在的bug。 具体步骤如下: 拷贝:首先,你需要 阅读全文
posted @ 2024-06-17 10:53 龙陌 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 使用WebSocket时,通常的做法是只建立一个WebSocket连接,通过这个连接来获取和发送所有相关数据。 WebSocket协议本身就是为了实现双向通信而设计的,它提供了一种长期持久的连接,允许服务器主动向客户端推送数据。 如果为每条数据都创建一个新的WebSocket连接,不仅会浪费资源(比 阅读全文
posted @ 2024-06-17 09:54 龙陌 阅读(14) 评论(0) 推荐(0) 编辑
摘要: >>> 是JavaScript中的无符号右移位运算符。它将操作数的所有位向右移动指定位数,丢弃被移出的位,并在左侧填充零。特别地,>>> 0 是一个常用的技巧,用于确保任何数字(包括负数)都被转换为无符号的32位整数。这意味着结果总是非负的,并且范围在0到2^32-1之间。 具体解释 符号位处理:在 阅读全文
posted @ 2024-06-06 11:19 龙陌 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 在React中,虽然发布订阅模式(Pub/Sub)可以作为一种实现跨多层级组件间通信的方法,但它并不是React官方推荐的主要手段,尤其是在React Hooks和Context API普及之后。 React推荐的跨组件通信方法主要包括: Props drilling:最直接的方式,通过props从 阅读全文
posted @ 2024-06-06 11:18 龙陌 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 在JavaScript中,使用addEventListener方法向元素添加事件监听器时,如果有多个相同的事件名称(比如多次调用addEventListener("click", function)),这些监听器不会互相覆盖,而是会累加。 这意味着所有为同一事件类型注册的监听器都会按照添加的顺序依次 阅读全文
posted @ 2024-06-05 14:39 龙陌 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 在JavaScript中,对于私有方法的命名,尽管语言本身并不强制任何命名规范,但有一些广泛接受的约定来表明方法或属性的私有性。 这些约定主要是为了提高代码的可读性和维护性,让其他开发者能够快速识别出哪些方法或属性是设计为内部使用的。以下是几种常见的私有方法命名约定: 下划线前缀 (_methodN 阅读全文
posted @ 2024-06-05 13:36 龙陌 阅读(5) 评论(0) 推荐(0) 编辑
摘要: Yarn本身并没有直接提供一个命令来查看node_modules中的某个依赖包是由package.json中的哪个包直接或间接引入的。 但是,你可以通过一些间接的方式来获取这些信息: 手动检查: 打开node_modules中你想查询的依赖包的package.json文件,查看它的name字段确认包 阅读全文
posted @ 2024-06-05 13:35 龙陌 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 这段代码的作用是获取当前文件所在目录下的plopfile.js文件的绝对路径。这里是逐步解释: import.meta.url: 这是ES Modules中的一个元属性,它提供了当前模块的绝对URL。 在Node.js环境中,当你在一个模块文件中访问import.meta.url时,它会返回该模块文 阅读全文
posted @ 2024-05-31 17:09 龙陌 阅读(26) 评论(0) 推荐(0) 编辑
摘要: promisify(rimraf)('node_modules') 这样的用法结合了两个Node.js中的概念:promisify和rimraf,带来了以下好处: 从回调到Promise: promisify是Node.js内置的util模块中的一个函数,它将采用回调风格的函数转换为返回Promis 阅读全文
posted @ 2024-05-30 19:24 龙陌 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 在npm中,直接使用npm publish命令发布包时,如果不更改版本号,npm会阻止你发布相同版本号的包。 这是为了避免意外地覆盖已发布的包版本,导致依赖该版本的其他项目出现问题。 因此,直接“强制推送”之前的版本号包并不是推荐的做法。 但如果你确实有特殊需求(比如紧急修复了安全漏洞,需要重新发布 阅读全文
posted @ 2024-05-30 14:58 龙陌 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 集成测试和冒烟测试在软件测试流程中有着不同的目的和执行时机: 冒烟测试通常在软件的新版本构建完成后立即进行,作为质量 gate 的第一步。 它的目的是快速验证软件的基本功能是否正常工作,是否可以进行进一步的详细测试。 冒烟测试就像是一个初步的检查,确保没有严重的故障阻碍后续的全面测试。 如果冒烟测试 阅读全文
posted @ 2024-05-29 16:59 龙陌 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 在 dumi 2.x 中支持 CSS Modules 是比较直接的,因为 dumi 基于 Umi,而 Umi 自身就对 CSS Modules 提供了良好支持。以下是基本步骤和注意事项来在 dumi 项目中使用 CSS Modules: 安装依赖: 确保你的项目中已经安装了相应的加载器,如style 阅读全文
posted @ 2024-05-28 14:26 龙陌 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 里氏替换原则(Liskov Substitution Principle, LSP)是面向对象设计中的一个基本原则,由芭芭拉·利斯科夫(Barbara Liskov)在1987年提出。 这个原则的中心思想非常直观,可以用一句通俗的话来解释:“子类应当能够替换掉它们的父类,而不会影响到程序的正确性。” 阅读全文
posted @ 2024-05-27 10:05 龙陌 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 接口隔离原则(Interface Segregation Principle, ISP)的通俗解释可以这样理解: 想象你在经营一家餐厅,餐厅里有各种各样的顾客,有的顾客只想吃素菜,有的顾客只对肉类感兴趣,还有的顾客可能对甜品情有独钟。 如果你设计了一个菜单,上面既有素食、又有肉食和甜品,那么对于只想 阅读全文
posted @ 2024-05-27 10:04 龙陌 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 在React中,useMemo 和 useEffect 都是 Hooks,但它们各自有不同的用途和适用场景。上述代码片段使用了 useMemo 来 memoize(记忆化)一个计算结果,确保只要依赖项(tuningFileOptionsMemo 和 currentTuningFileId)不变,返回 阅读全文
posted @ 2024-05-22 11:15 龙陌 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 422是一个HTTP状态码,表示服务器理解客户端的请求,但无法处理该请求。这个状态码通常被用于Web应用程序中的表单验证,其中服务器无法处理客户端提交的表单数据。 具体来说,当一个客户端向服务器提交表单数据时,服务器首先会验证这些数据是否符合要求。 如果数据验证失败,服务器会返回422状态码,告诉客 阅读全文
posted @ 2024-05-20 20:30 龙陌 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 这个需求的合理性取决于具体的应用场景和目的。让我们分析一下: 合理性的一面: 简化逻辑处理:如果这个类型字段是为了在后端快速区分或过滤不同类型的对象属性,那么在前端就做好标记,可以简化后端处理逻辑,减少在后端进行类型判断的需要。 一致性保证:在前端加入类型字段并确保它与对象属性中的一致,可以在一定程 阅读全文
posted @ 2024-05-20 14:24 龙陌 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 后端要求前端将一些不必要的字段原封不动地传递回来,这种做法通常并不合理,主要原因如下: 增加数据传输负担:每次请求包含额外无用的字段会增加数据传输的体积,特别是在移动设备或网络条件不佳的情况下,这可能导致响应速度变慢,影响用户体验。 资源浪费:无论是服务器带宽、内存还是CPU,在处理和传输这些不必要 阅读全文
posted @ 2024-05-20 14:16 龙陌 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 在React中,通常我们不直接“暴露”组件内部的state给外部去监听或修改,因为这违反了组件设计中的封装原则。 然而,确实有需求让外部知道某个组件的内部状态变化,这时可以通过以下几种方式实现通信: 回调函数(Callback Function): 你可以通过传递一个回调函数作为prop从父组件到子 阅读全文
posted @ 2024-05-13 14:56 龙陌 阅读(42) 评论(0) 推荐(0) 编辑
摘要: .nojekyll 文件是一个用于GitHub Pages的特殊文件。当你在GitHub仓库的根目录中包含这个文件时,它会告诉GitHub Pages不要使用Jekyll来处理你的站点。 Jekyll是一个静态站点生成器,GitHub Pages默认使用它来将Markdown和其他文本格式的文件转换 阅读全文
posted @ 2024-05-12 17:24 龙陌 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 使用TypeScript编写一个函数getPackageSize,该函数接收一个配置对象packageOpt作为参数,用于获取指定文件夹中所有文件的总大小,并根据配置决定是否返回已转换单位的大小值或直接通过回调函数返回字节大小。 下面是一个基于Node.js环境的实现示例,因为直接在浏览器环境中操作 阅读全文
posted @ 2024-05-12 13:54 龙陌 阅读(4) 评论(0) 推荐(0) 编辑
摘要: F:\learn-front\code-inspector\package.json 这两行命令是用于在JavaScript项目中发布(publish)软件包到npm仓库的脚本定义,常见于使用pnpm作为包管理器的Monorepo(单仓库多项目)结构的项目中。 这里具体解释一下每部分的含义: pub 阅读全文
posted @ 2024-05-12 11:28 龙陌 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 关于e.stopPropagation(),大家应该知道这个方法是用来阻止事件冒泡的。 那么e.stopImmediatePropagation()可能比较少见。 stopImmediatePropagation 用来阻止在同一DOM对象上同一事件类型的其它事件函数的执行 并且与事件先后注册的顺序有 阅读全文
posted @ 2024-05-11 23:04 龙陌 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 终于明白了 Array.sort(comparator) 的原理 原文地址: https://www.jameskerr.blog/posts/javascript-sort-comparators/ After 13 years of JavaScript, I finally have a wa 阅读全文
posted @ 2024-05-10 22:38 龙陌 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 在CSS中,border-radius 用于创建元素的圆角边框,但边框圆角本身是包含在元素的总宽度和高度内的,并不会额外占用外部空间或使元素尺寸变大。如果你想让圆角“向外突出”,即不占用div本身的宽度和高度,可以通过一些技巧来模拟这种效果。 一种常见的方法是使用伪元素 (::before 和 :: 阅读全文
posted @ 2024-05-10 10:44 龙陌 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 该链接指向GitHub上一个SVG图像文件。根据链接的路径/long36708/blob/main/resources/img/grid-snake.svg,这个文件已经被放置在了名为long36708的仓库中的一个特定目录结构里。这里的路径说明了文件的组织方式: main 表示该仓库的默认分支(通 阅读全文
posted @ 2024-05-08 21:31 龙陌 阅读(4) 评论(0) 推荐(0) 编辑