- 博客(91)
- 收藏
- 关注
原创 什么是互斥锁(Mutex)?在Go语言中如何使用互斥锁来保护共享资源?
定义:互斥锁是一种同步机制,它用于保护共享资源,使同一时间只能有一个操作在访问该资源。工作原理:一个 goroutine 在访问共享资源之前需要先获取锁,完成后再释放锁。其他试图获取同一锁的 goroutine 会被阻塞,直到锁被释放。
2025-04-05 01:00:00
300
原创 在Go语言中什么是并发编程中的自旋状态
自旋锁(Spinlock)是一种通过忙等待实现的锁机制,可以在特定场合下提高并发性能。虽然 Go 语言的标准库没有直接提供自旋锁的实现,但通过使用atomic包,可以很方便地创建自己的自旋锁。在使用自旋锁时,需要注意其高 CPU 占用的特性,确保在合适的场景中使用,以避免对系统性能造成负面影响。
2025-04-05 01:00:00
103
原创 go怎么移除切片中的数据?
在 Go 中,移除切片中的数据,可以通过多种方式实现。切片的特性使得移除元素的操作相对简单,但需要注意在移除元素后切片的重新组织和可能的内存浪费问题。
2025-04-04 01:00:00
203
原创 Go语言中的panic和recover有什么作用?
在 Go 语言中,panic和recover是用于错误处理的重要机制。它们主要用于处理程序中的严重错误或异常情况,以保证程序的健壮性和可恢复性。以下是对它们的详细解释以及在实际工作中的应用。
2025-04-04 01:00:00
228
原创 go的map是无序的,每次迭代map的顺序可能不同。如果需要按特定顺序遍历map,应该怎么做呢?
通过将map中的键或值提取到切片中并利用 Go 的 sorting 函数,可以灵活地按照特定顺序遍历map。这种方法适用于不同类型的排序需求,只需调整排序的逻辑即可。
2025-04-03 01:00:00
126
原创 Go语言中的slice和数组有什么区别?
数组数组是一种固定大小的集合,大小是类型的一部分。例如,声明了一个包含 3 个整数的数组。切片切片是一个动态大小的序列,是对数组的更灵活的封装。切片背后的数组长度是动态的。例如,声明了一个整数切片,初始时没有元素。
2025-04-03 01:00:00
161
原创 Go语言中的指针有什么作用?
指针在 Go 语言中提供了更有效的资源管理和数据传递方式,尤其是在处理复杂的数据结构和大规模数据时。正确地使用指针可以显著提高程序性能和内存效率。指针允许函数接收变量的引用,而不是复制变量的值。多个 goroutine 可以共享访问同一数据结构的指针,从而实现数据共享和协调,尽管需要小心数据竞争问题。当结构体或数组比较大时,直接传递指针会比传递值更高效,因为只需要复制指针的地址,而不是整个数据结构的内容。通过指针,你可以直接操作内存地址,这在管理和分配动态数据结构(如链表、树等)时特别重要。
2025-04-02 01:00:00
389
原创 Go语言中的defer关键字有什么作用?
在Go语言中,defer关键字用于确保某些操作在函数返回时被执行,通常用于清理工作,例如关闭文件、释放资源或解锁互斥锁。无论函数以何种方式退出(正常返回或发生panic),所有被defer声明的操作都会执行。defer。
2025-04-01 09:03:28
242
原创 Go语言中的并发是如何实现的?
在Go语言中,并发是通过和实现的。Goroutine 是轻量级的线程,可以通过go关键字轻松创建,而 channels 则用于在 goroutines 之间进行通信。
2025-04-01 09:02:08
308
原创 自定义 eslint 插件, 要求常量为大写 snake 命名方式, 该怎么做?
创建 ESLint 插件:建立一个目录结构,配置。实现规则:编写规则逻辑,检查常量命名规范。使用并测试规则:在 JavaScript 项目中应用该规则。
2025-03-31 01:00:00
487
原创 eslint 是怎么做到用配置规则去检验代码异常?
ESLint 是一种广泛使用的 JavaScript 和 TypeScript 代码质量工具,它通过配置规则来检查和标记代码中的潜在问题。
2025-03-29 15:00:00
348
原创 Recoil 里面 selectorFamily 的作用是什么?和 selector 有啥区别?
在 Recoil 中,是用于创建一组可以根据参数生成的选择器的工具。它的作用和基本的selector。
2025-03-29 09:00:00
255
原创 vite 开发过程是直接将文件给浏览器?
一旦资源被更新,Vite 会通过 WebSocket 通知浏览器只更新发生变化的模块,而不会整个页面重新加载。:Vite 使用 ES 模块(ESM)的方式,它会解析请求的资源,处理依赖关系。在 Vite 的开发过程中,它并不是直接将文件提供给浏览器,而是采用一种更为高效的方式来处理文件。所以,Vite 在开发阶段通过开发服务器处理和转换文件,而不是将原始文件直接提供给浏览器。在这个阶段,它会进行许多优化,生成最终的可部署文件。:当你启动 Vite 开发服务器时,Vite 会监测项目目录中的文件变化。
2025-03-28 01:00:00
215
原创 前端面试:node 里面 stream 是什么, 有啥应用场景?
在 Node.js 中,是一个用于处理数据流的抽象接口,允许我们以块的方式读取和写入数据,而不是一次性加载整个数据。这种方式特别适用于处理大文件或需要实时处理的数据流。
2025-03-28 01:00:00
543
原创 vite 在开发过程中, 是如何处理 TS 文件的?
在前端开发中,Vite 对 TypeScript (TS) 文件的处理主要依赖于原生 ES 模块和一些工具的集成。
2025-03-27 01:00:00
191
原创 前端有哪些性能指标?其中:FCP、LCP、TTFB、FID、TTI、CLS、TBT 等, 分别表示什么意思?
了解这些性能指标可以帮助开发者在前端开发中有针对性地优化网页加载和用户交互体验。
2025-03-26 01:00:00
298
原创 前端面试:使用 vite 打包工程, 输出为 es6 的代码, 但是依赖的 模块是 es5 commonjs 写的;这个他是怎么处理的?
在使用 Vite 打包工程时,处理依赖 ES5 CommonJS 模块的方式主要依赖于 Vite 的构建特性和模块转换机制。
2025-03-25 08:39:29
302
原创 前端面试:前端两个 dom 元素是可以拖拽的, 要实现两个 dom 之间的连接线,如何实现?
当用户拖动其中一个元素时,连接线会自动更新位置,提供了直观的连接效果。在前端开发中,实现两个可拖拽的 DOM 元素之间连接线的功能通常涉及到以下几个步骤:设置可拖拽元素、计算连接线的起始和结束位置,并在这些位置之间绘制连线。// 清空 canvas。/* 让 canvas 不阻止鼠标事件 */// 设置 canvas 的宽高为窗口的宽高。// 计算元素在页面上的绝对位置。// 初始绘制连接线。
2025-03-24 01:00:00
778
原创 前端面试:将已经 push 到远端的两个 commit 合并成一个 commit 应该怎么做 ?
通过以上步骤,你可以将两个已经 push 到远端的 commit 合并为一个。在实际工作中,这种方法是清理和优化 commit 历史的一种有效手段,使得代码库更整洁、更易于阅读。在 Git 中,将已经 push 到远端的两个 commit 合并成一个 commit 通常涉及到使用 rebase 和 push --force 操作。接下来,Git 会提示你编辑合并后的 commit 信息。你可以修改合并后的 commit 消息,将两个 commit 的信息合并为一条更有意义的消息。根据需要修改并保存。
2025-03-22 01:00:00
344
原创 前端面试:代码里console.log比较多,该怎么办?
在开发过程中,console.log 是一种常见的调试工具,用于输出变量值和程序状态。然而,随着代码的增长,过多的 console.log 可能会显得杂乱无章,影响代码的可读性和性能。这些库提供更有效的日志管理和调试选项,比如不同的日志级别(info、warn、error 等)和更灵活的输出选项(如输出到文件或远程日志服务)。通过引入合适的工具、规范和流程,可以有效管理和减少代码中的 console.log 数量。在代码审查过程中,定期检查团队的提交,确保没有多余的 console.log 被合并。
2025-03-22 01:00:00
740
原创 前端面试:[React] Recoil 里面 selector 该如何使用?
首先,你需要定义一个或多个atom,它们是状态的基本单元。比如,你可以定义一个简单的计数器:key: 'counterState', // 唯一 IDdefault: 0, // 初始值});
2025-03-21 01:00:00
196
原创 前端面试:[React] Recoil 里面 selector 支持哪些参数?
在使用 Recoil selector 时,主要的参数包括 key 和 get,而 set 和 setSelf 可以帮助你管理更新逻辑,支持更复杂的状态管理需求。通过这些参数,你可以创建强大且灵活的派生状态系统,更好地管理你的 React 应用的状态。在 Recoil 中,selector 用于派生状态并可以通过传递不同的参数来实现更强大的功能。// 更新 selector 自身的值。// 返回获取的数据。
2025-03-21 01:00:00
680
原创 前端面试:[React] useRef 是如何实现的?
useRef 是一个非常强大且灵活的 Hook,它主要用于访问 DOM 元素和存储不引起重新渲染的可变数据。由于它的内部实现确保了返回的 ref 对象在组件的整个生命周期内保持不变,因此它适合用于多种应用场景。useRef 是 React 中一个非常有用的 Hook,它用于在组件中持久存储可变的值而不会引起重新渲染。这里,我们可以想象 ref 对象是一个简单的包含 .current 属性的对象。在 React 的实现中,useRef Hook 是通过底层的 hook 系统来管理状态和副作用的。
2025-03-20 08:39:28
1030
原创 前端面试:[React] scheduler 调度机制原理?
在实际工作中,利用 Scheduler 的特性,可以显著提升应用的用户体验和整体性能,确保用户的交互流畅而及时。Scheduler 引入了一种精细的调度机制,以便更好地管理渲染任务的优先级,使应用能够响应用户的输入,同时处理其他非紧急任务。React Scheduler 也为开发者提供了一些 API 工具,使得调试和监控任务的调度变得更加简单,例如 unstable_scheduleCallback,可用于手动调度任务。使用优先级,Scheduler 可以根据用户的输入和应用的状态,选择最应该执行的任务。
2025-03-20 08:38:48
802
原创 前端面试:日志监控-如何还原用户操作流程?
通过使用用户行为监控工具、自定义事件跟踪、Session Storage、重放用户操作、数据分析与可视化等方法,可以有效地还原用户的操作流程。在用户操作过程中,可以使用浏览器的 Session Storage 或 Local Storage 来保存用户的操作记录。将记录的用户操作数据进行分析和可视化,帮助团队理解用户的操作流程。通过记录的用户操作数据,可以在需要时重放用户的操作流程。在分析用户操作流程时,结合用户反馈可以更好地理解用户的意图和遇到的问题。识别用户在操作流程中的痛点,并进行相应的改进。
2025-03-19 02:00:00
777
原创 前端面试:如何做好前端监控方案?
建立一个有效的前端监控方案需要明确目标、选择合适工具、集成监控代码、设计数据收集与分析流程、持续优化,并确保合规性。通过这种系统化的监控策略,可以及时发现和解决问题,提升用户体验和应用性能。制定一个有效的前端监控方案是确保用户体验、及时发现和解决问题的重要措施。设计上报数据的方式和频率,同时考虑性能影响。可以定义统一的接口来上报数据,例如通过 fetch 方法将数据发送到服务器。根据监控的目标,选择合适的监控工具和服务。首先,需要明确监控的目标和需求。确保监控代码集成到前端项目中。
2025-03-19 01:00:00
485
原创 前端面试:如何标准化处理线上用户反馈的问题?
标准化处理线上用户反馈的问题,是一个系统的流程,需要从反馈的收集到解决、回访和报告分析等多方面进行管理。通过建立明确的反馈渠道、制定标准化格式、优先级评估、经典反馈闭环及持续改进的工作机制,可以有效提升用户满意度和产品质量,同时增强用户与产品之间的互动性与忠诚度。为了便于收集和分析用户反馈,建议设置标准化的反馈格式,让用户在提交反馈时能够提供必要的信息。通过汇总分析,生成反馈报告,向团队分享,便于全员了解用户关注的重点问题,并可作为后续开发和改进的参考。定期进行用户反馈的分析,总结趋势和问题。
2025-03-18 08:54:16
496
原创 前端面试:日志监控问题:可有办法将请求的调用源码地址包括代码行数也上报上去?
通过使用 Error.stack、try...catch、Source Maps 和集成日志监控服务,可以有效地将请求的调用源码地址和代码行数上报。许多日志监控和错误追踪服务(如 Sentry、LogRocket、Rollbar 等)提供了内置的功能来捕获和上报错误信息,包括调用栈和源代码行号。通过使用 Source Maps,可以将压缩后的代码映射回原始代码,从而获取更准确的调用位置。如果你有自己的日志监控解决方案,可以自定义上报逻辑,将调用栈信息、请求的 URL、参数等一并发送到你的服务器。
2025-03-18 08:53:32
539
原创 前端如何从入门进阶到架构师
在入门阶段,我们的目标是掌握前端的基本语法和知识,以便能够独立解决一些基础问题。以下是各阶段的学习指南,助你从零基础到高级开发者,掌握前端开发的精髓。进阶阶段的目标是深化对知识的理解,强化高级编程技能,如性能优化和项目架构选择,并提升编程理论水平。实战阶段的核心在于扩展知识面,通过阅读书籍和参与项目实践,将理论与实践相结合,提升理论水平和实战经验。这几个视频课程都是关于项目实战方面的,没什么好介绍的,跟着课程把里面的项目实战都实践一遍,对提升编程技能很有帮助。做状态管理,没有使用额外的数据管理库。
2025-03-17 08:50:39
2089
原创 前端面试:babel-runtime 作用是啥?
babel-runtime 的主要作用是提供一个共享的运行时库,以避免代码重复、提供 helper 函数以及支持现代 JavaScript 特性的 polyfill。通过结合使用 @babel/plugin-transform-runtime,开发者可以更高效地管理和使用 Babel 转换的代码,尤其是在大型或复杂的项目中。babel-runtime 是 Babel 的一个重要组成部分,主要用于解决在 JavaScript 中使用一些 ES6+ 特性时的兼容性问题。
2025-03-17 08:47:55
322
原创 前端面试:React生态有哪些?
React 的生态系统提供了丰富的工具和库,涵盖了状态管理、路由、数据获取、样式处理、测试、服务端渲染等各个方面。在实际工作中,开发者可以根据项目的需要选择合适的工具组合,以便高效构建高性能的 Web 应用。这种灵活的生态系统使得 React 成为一种流行的前端开发技术。React 生态系统极为丰富,涵盖了很多工具、库和框架,能够帮助开发者提高工作效率和构建高质量的应用程序。
2025-03-13 20:34:10
995
原创 前端面试:浏览器有同源策略, 但是为何 cdn 请求资源的时候不会有跨域限制?
虽然浏览器具有同源策略,但 CDNs 通过配置适当的 CORS 头、将资源设置为公开可访问,并且依赖于浏览器处理静态资源的方式,使得跨域请求能够顺利进行。如果开发者需要更严格的跨域控制,则可以在服务器端进行配置,以满足特定的安全需求。同源策略是浏览器的一项安全机制,旨在防止恶意网站访问其他网站的数据。这意味着,只有从相同源(协议、域名和端口相同)发出的请求才能访问某些资源。这个请求不会受到跨域限制,因为 CDN 配置了适当的 CORS 头来允许这些资源的公开访问。
2025-03-13 20:33:17
354
原创 前端面试:axios 请求的底层依赖是什么?
的底层依赖于浏览器的 XMLHttpRequest API 用于发送网络请求,并在 Node.js 环境中使用 http 或 https 模块。它在此基础上实现了一系列功能,如 Promise 支持、请求/响应拦截、请求合并以及各种网络请求配置选项,为开发者提供了直观且强大的 API。它简化了与 RESTful APIs 的交互,并提供了许多便利的方法与配置选项。在这个示例中,虽然代码显示的是在 Node.js 中使用的 Axios,但底层的实现仍然是通过 HTTP 模块发送请求的。
2025-03-13 20:32:26
611
原创 前端面试:ajax 和 xhr 是什么关系?
在前端开发中,AJAX(Asynchronous JavaScript and XML)和 XHR(XMLHttpRequest)是两个密切相关但有些不同的概念。希望这能帮助你更好地理解 AJAX 和 XHR 的关系!如果你有其他问题,随时可以问。
2025-03-13 20:30:59
897
空空如也
element-ui在移动端怎么让弹出框居中显示?
2025-03-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人