1 2 3 4 5 ··· 21 下一页
摘要: 核心思路: 设定概率: 奖项1概率:5% 即 [0 - 0.05) 的范围 奖项2率:10%. 即 [0.05 - 0.1) 的范围。注:为什么是从0.05开始?因为<0.05的话就是中了上一个奖 不中奖. 即 [0.05 - 1) 的范围 要提高中奖难度,可以通过 缩小中奖概率区间 来减少中奖的机 阅读全文
posted @ 2024-12-04 20:46 我是格鲁特 阅读(262) 评论(0) 推荐(0)
摘要: 特性WebpackRollupViteRspackSWCEsbuild 文件输入 单文件或多文件 单文件或多文件 单文件或多文件 单文件或多文件 单文件或多文件 单文件或多文件 原目录输出 ✅ 支持 ✅ 支持 ✅ 支持 ✅ 支持 ❌ 不支持 ✅ 支持 文件捆绑 ✅ 支持 ✅ 支持 ✅ 支持 ✅ 支持 阅读全文
posted @ 2024-11-12 18:14 我是格鲁特 阅读(719) 评论(0) 推荐(0)
摘要: 使用JSON.parse(Json.stringify())实现深拷贝有哪些坑? 如果属性值是undefined、或者函数,序列化后属性丢失; 如果属性值是RegExp、Error对象,序列化后值是{}; 如果属性值是NaN、Infinity和-Infinity,则序列化的结果会变成null 因此一 阅读全文
posted @ 2024-11-11 11:48 我是格鲁特 阅读(41) 评论(0) 推荐(0)
摘要: 一、webpack热更新原理 1.使用 webpack-dev-server (后面简称 WDS)托管静态资源、提供websocket服务 2.webpack打包时会将HMR Runtime和源代码一起编译成 bundle 文件。HMR Runtime主要 负责接收服务发送的websocket消息, 阅读全文
posted @ 2022-04-26 11:54 我是格鲁特 阅读(34) 评论(0) 推荐(0)
摘要: 二分查找算法,也称折半搜索算法,是一种在有序数组中查找某一特定元素的搜索算法。算法思想是不断的缩小查找范围。 思路步骤 1️⃣ 确定基准: 选定数组的中间元素(基准值)。 如果数组大小为偶数,通常选择中间的 右侧元素(也可以选择左侧元素,但不影响算法效果)。 2️⃣ 分割数组: 将数组分成两半,基准 阅读全文
posted @ 2022-04-11 17:36 我是格鲁特 阅读(587) 评论(0) 推荐(0)
摘要: 刚接触bable的同学可能会认为使用了Babel,配置了preset预设后就可以愉快的使用 es6+做开发了,事实上,在默认情况下Babel只会做语法转换(let、const、class、箭头函数等),而不做新api的转换,新的api总结起来分为两类: 全局对象和全局对象相关的方法,例如Promis 阅读全文
posted @ 2022-03-25 10:37 我是格鲁特 阅读(1898) 评论(0) 推荐(0)
摘要: 一、配置文件 几乎所有的前端工程师都知道可以用babel将es6+的语法转换为es5,转换工具要么使用babel-cli,要么使用webpack的babel-loader,不管使用哪种转换工具,通常都需要一个配置文件来建立转换规则(也可以在webpack的babel-loader的配置项,原理都一样 阅读全文
posted @ 2022-03-25 10:35 我是格鲁特 阅读(338) 评论(0) 推荐(0)
摘要: 一、场景 0.1 + 0.2 = 0.30000000000000004 1.5 - 1.2 = 0.30000000000000004 19.9 * 100 = 1989.9999999999998 0.3 / 0.1 = 2.9999999999999996 二、原因 js中的数字只有 Numb 阅读全文
posted @ 2022-03-17 21:17 我是格鲁特 阅读(2514) 评论(0) 推荐(0)
摘要: 事件绑定方法 Html事件处理程序-直接在元素上指定事件及相应的处理程序,事件处理程序中可直接访问event对象(不需要用参数接收event独享),this指向当前元素,同时还扩展了this和document的作用域,即访问对象的属性或方法时可以省略this或document Dom0级事件处理程序 阅读全文
posted @ 2019-07-17 17:39 我是格鲁特 阅读(1857) 评论(0) 推荐(1)
摘要: 面试中经常会问到防抖、节流、函数柯里化,其他的一般不会问。 防抖函数(debouncing) 核心思想:对同一个函数进行连续调用时,只有最后次调用生效, 实现方式:使用setTimeout方法,每次调用时,清除上一次的timer,并将本次的timer记录下来就可以保证只有最后一次调用会生效 func 阅读全文
posted @ 2018-12-09 20:27 我是格鲁特 阅读(744) 评论(0) 推荐(0)
摘要: 因为 Math.random() 制造的随机数范围是[0, 1)想要生成16到22之间的随机数(即最小值m=16,最大值n=22),首先需要计算出最大值与最小值的差range=m-n 随后把[0, 1)这个区间的随机数乘以range,区间就拓展到[0, 6)。在此基础之上再加最小值,范围就移动到[1 阅读全文
posted @ 2018-09-18 08:42 我是格鲁特 阅读(371) 评论(0) 推荐(0)
摘要: 一、Loader写法及执行顺序 从webpack2起,loader的格式如下: module: { rules: [ {test: /\.css$/, use: ['style-loader','css-loader']}, ] } webpack1中的写法如下: module: { loaders 阅读全文
posted @ 2018-09-11 16:24 我是格鲁特 阅读(894) 评论(0) 推荐(0)
摘要: 核心思路(分治思想) 快速排序采用**分治(Divide and Conquer)**的思想,基本步骤如下: 选取基准(Pivot):从数组中选择一个“基准值”。 分区(Partition): 将数组分成两部分:小于基准值的放左边,大于基准值的放右边(可原地交换实现)。 递归排序(Recursion 阅读全文
posted @ 2018-05-26 22:35 我是格鲁特 阅读(219) 评论(0) 推荐(0)
摘要: 一、什么是BFC css布局主要采用盒子模型(BOX),元素的类型和 display 属性,决定了 Box 的类型,常见的盒子类型有两种: block-level box:display 属性为 block, list-item, table 的元素,会生成 block-level box。 inl 阅读全文
posted @ 2018-03-02 15:50 我是格鲁特 阅读(243) 评论(0) 推荐(0)
摘要: 可以在package.json 中的模块配置字段,告诉 Node.js、浏览器、打包工具(如 Webpack、Vite)或 TypeScript 如何正确识别、加载你的 npm 包,解决了不同模块规范(CommonJS/ES Module)、不同环境下的 “入口文件” 和 “类型定义” 匹配问题。 阅读全文
posted @ 2025-08-30 13:20 我是格鲁特 阅读(8) 评论(0) 推荐(0)
摘要: DNS(Domain Name System): 将域名转换为ip的系统 假设访问 www.example.com: 浏览器检查本地缓存,看有没有 www.example.com 的 IP 记录。 没有的话,交给操作系统的 DNS 解析器(Resolver)。 操作系统查询本地缓存、hosts 文件 阅读全文
posted @ 2025-08-23 08:13 我是格鲁特 阅读(12) 评论(0) 推荐(0)
摘要: 懒加载是指:浏览器自己会在图片快进入视口时加载。 1. 原生支持 (推荐) HTML5 里 <img> 标签已经支持: <img src="big.jpg" loading="lazy" alt="图片" /> 浏览器自己会在图片快进入视口时加载。 优点:零 JS,性能最好,现代浏览器大部分支持。 阅读全文
posted @ 2025-08-21 16:56 我是格鲁特 阅读(13) 评论(0) 推荐(0)
摘要: /** * 并发启动任务,每完成一批任务后再启动下一批 */ async function batchRun(tasks,batchSize){ for(let i= 0;i<tasks.length;i+=batchSize){ const batch = tasks.slice(i,i+batc 阅读全文
posted @ 2025-07-24 20:33 我是格鲁特 阅读(11) 评论(0) 推荐(0)
摘要: Taro 是一个跨平台的开发框架,目标是让开发者能够通过一套代码实现 多端(小程序、H5、React Native 等) 的应用开发。它的实现原理主要围绕编译时转换、运行时适配两大核心机制实现跨端能力。 一、编译时转换 1. 使用 Babel 转换为抽象语法树(AST) 代码解析: Taro 通过 阅读全文
posted @ 2025-04-23 10:45 我是格鲁特 阅读(261) 评论(0) 推荐(0)
摘要: 一、本质 Electron 的本质可以理解为将一个 Chromium 浏览器(WebView)和 Node.js 环境嵌套在一起。 二、核心 双进程机制 主进程(Main Process):运行 Node.js 代码,负责控制应用的生命周期、创建窗口、跟操作系统进行交互。 渲染进程(Renderer 阅读全文
posted @ 2025-04-23 10:25 我是格鲁特 阅读(64) 评论(0) 推荐(0)
摘要: 1.二叉树最大深度 思路: 如果节点为空 (root null),表示这一部分的深度是 0。 如果节点不为空,递归地计算左子树和右子树的深度,然后返回左右子树深度的最大值加上 1(表示当前节点的深度) 代码实现: function maxDepth(root) { // 基本情况:如果节点为空,深度 阅读全文
posted @ 2025-03-26 19:50 我是格鲁特 阅读(11) 评论(0) 推荐(0)
摘要: 问题描述: 给定一个整数数组 nums,要求找到一个连续的子数组(至少包含一个元素),使得该子数组的和最大。返回这个最大和 输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 子数组 [4,-1,2,1] 的和最大,为 6。 解决方法 这个问题可以使用动态规划来求解。 动态规划转 阅读全文
posted @ 2025-03-26 15:44 我是格鲁特 阅读(15) 评论(0) 推荐(0)
摘要: 爬楼梯问题是一个经典的动态规划问题,通常表述为:一个人站在楼梯的底部,每次可以选择爬 1 级或 2 级楼梯,问到达楼顶有多少种不同的方式。 问题分析 每次可以选择向上爬 1 层楼梯,或者 2 层楼梯。 假设我们在第 n 层楼梯,那么在到达第 n 层楼梯时,前一步可以是从第 n-1 层楼梯爬上来的,或 阅读全文
posted @ 2025-03-26 11:38 我是格鲁特 阅读(82) 评论(0) 推荐(0)
摘要: 一个峰值元素是指一个元素,它大于或等于它的左右邻居(如果有的话)。 问题描述 给定一个整数数组 nums,请找出其中的一个峰值元素,并返回它的索引。 你可以假设数组的左右边界的元素永远是负无穷。 例如,nums = [1, 2, 3, 1],则峰值元素是 3,返回其索引 2。 解法思路 我们可以利用 阅读全文
posted @ 2025-03-25 20:21 我是格鲁特 阅读(14) 评论(0) 推荐(0)
1 2 3 4 5 ··· 21 下一页