- 博客(20)
- 收藏
- 关注
原创 Node.js是单线程的,那该如何充分利用多核CPU呢?
在主进程中创建多个子进程,每个子进程独立运行,分配给CPU核心,让多个进程共享负载。PM2 是一个强大的进程管理器,支持多核自动分配。它可以一键启动多个Node.js实例,让每个实例利用不同的CPU核心,并管理进程状态,自动重启失败进程。child_process 模块允许Node.js 创建独立的子进程并于主进程进行通信,适用于需要再煮进程之外完成计算密集型任务的情况。: Cluster模块可以轻松地创建多个Node.js 进程(称为工作进程),每个进程又运行相同的代码,并共享相同的服务器端口。
2025-07-02 11:11:21
435
原创 自定义v-model不使用$emit怎么实现
在vue中,v-model的默认实现依赖于value prop 和input 事件(vue 2)或 modelValue prop 和update:modelValue 事件(vue3)。在vue2中,.sync 修饰符可以实现类似v-model的双向绑定,但它仍然基于机制(update: propName),只是语法更简洁。可以通过ref或provide/inject 直接修改父组件的数据,但这种方式破坏了组件的封装性,不推荐。1. 完全不用prop + emit,子组件直接修改父组件的数据。
2025-06-30 18:08:30
728
原创 在vue中如何自定义一个v-model
此外,Vue3.x支持多个v-model绑定。在vue中自定义一个v-model绑定,可以通过组件的model选项或显式地使用value prop和input事件来实现。: 默认使用modelvalue prop 和update:modelValue 事件,支持自定义和多个v-model绑定。可以通过model选项自定义v-model 的prop 和事件,或显式使用value prop 和input 事件。在vue2.x中,可以通过组件的model选项来定义v-model的prop和事件。
2025-06-30 17:14:05
379
原创 在没有async/await的时候,koa是怎么实现的洋葱模型
在没有async/await的情况下,Koa通过生成器函数(generator function)实现洋葱模型(onion model)的中间件机制。Koa利用生成器函数的yield关键字来控制中间件的执行顺序,实现了洋葱模型的调用和处理机制。洋葱模型表示中间件的执行顺序蕾丝洋葱的层次结构。中间件按顺序执行(进入洋葱),在每个中间件执行完成,再回到之前的中间件(离开洋葱), 这种模式确保了请求处理和响应的过程。:中间件按照链式调用的方式连接起来,每个中间件的 next 都是下一个中间件的生成器函数。
2025-06-26 17:16:44
333
原创 怎么在koa中,进行中间件的异常处理?
概述: 确保异常处理的中间件放在其他中间件的最后,这样它可以捕获之前中间件中发生的所有异常。概述: 使用第三方中间件可以简化错误处理,例如: koa-err。
2025-06-25 17:49:12
337
原创 说说express midleware(中间件)的工作原理
中间件函数可以对请求进行处理、修改响应、终止请求-响应周期,或者将请求传递给下一个中间件。中间件可以通过调用next()函数将控制权传递给下一个中间件函数。每个中间件函数可以对请求进行处理,比如修改请求对象(req)、响应对象(res),或者执行某些操作(如日志记录、身份验证等)。如果请求没有被终止且所有中间件都执行完成,Express会将请求传递到定义的路由处理函数(如果有的话),最后发送响应给客户端。控制权转移到下一个中间件函数,直到所有中间件都执行完成,或者找到一个能够终止请求–响应周期的中间件。
2025-06-25 15:45:22
301
原创 怎么进行Node服务内存优化
优化Node.js应用的内存使用可以显著提高应用性能和稳定性。Chrome DevTools: 可以进行内存快照分析,帮助找出内存泄漏和不必要的内存占用。使用搞笑的数据结构来管理数据,例如选择合适的缓存策略,避免的不必要的数据复制和存储。定期使用工具检查内存快照,特别是在应用运行一段时间后,检查是否内存持续增长的情况。避免过度依赖: 只使用必要的依赖库, 避免引入不必要的内存开销。谨慎使用闭包,确保不持有对大对象的引用,避免意外的内存占用。减少复杂计算和内存占用高的操作,尽量使用高效算法和数据结构。
2025-06-25 14:42:12
433
原创 webpack的基础配置介绍
(webpack是一个打包工具,他的作用是根据配置文件的入口模块,进行模块的依赖分析,并不会运行源代码)webpack compiler是开始打包的起点,每一次打包只对应一个compiler,后续的打包工作是由compiler构建的compilation负责。其中,webpack compiler实在webpack初始化阶段构建的,可理解为,获取配置对象之后,准备编译之前。webpack的编译核心就是:对源代码的模块进行依赖分析,最终输出编译后打包的结果,依赖分析的过程就是编译的过程。
2025-04-30 14:40:47
887
原创 场景题(持续更新)
全局拦截器: 在请求头中添加路由标识(如X-Request-Form: /page-a),后端根据标识判断是否处理。浏览器缓存: 设置Cache-Control: public, max-age=3600,后续请求直接命中缓存。前端缓存:使用内存缓存(如: Map)或持久化存储(如localStorage)适用场景:单页应用(SPA)中需区分请求属于哪个路由。FCP(首次内容绘制):浏览器首次绘制任何内容的时间。TTI(可交互时间):页面可响应用户输入的时间。LCP(最大内容绘制):首屏可见内容完成时间。
2025-04-28 17:58:33
1580
原创 如何实现虚拟列表
虚拟列表的核心是通过只渲染可见区域的数据,减少 DOM 节点的数量,从而提升渲染性能。实现时需要关注滚动事件的监听、可见数据的动态计算、以及占位高度的设置。通过合理的优化,虚拟列表可以显著提升长列表的渲染效率和用户体验。如果每条数据的高度不固定,可以使用IntersectionObserver或其他方式动态计算高度。对于滚动后重复出现的节点,可以缓存DOM节点,避免重复创建。性能要求较高的场景,避免因大量DOM节点导致的卡顿。渲染一个空的占位元素,确保滚动条正常显示。渲染visibleData到视口中。
2025-04-08 17:12:34
445
原创 面试题(一)
16.8 前:React 逐步优化核心架构(Fiber)、增强组件能力(Context、Portal),并铺垫异步渲染基础。16.8:Hooks 的引入彻底改变函数组件范式,成为 React 开发的核心模式。16.8 后:继续完善 Hooks 生态和并发渲染能力,推动 React 向更灵活、高效的方向演进。
2025-04-08 16:42:58
1496
原创 MAC使用nvm管理node版本,VSCODE与系统的Node版本不一致
使用nvm管理node版本,在系统终端中切换node版本,但是vscode中的终端版本还是之前的(在vscode中开不同的终端显示的版本也不一致)
2025-03-05 12:52:57
478
原创 useContext和contentContext
createContext 创建一个上下文对象,可以用于在组件树中共享数据,而不必通过 props 手动传递。获取上下文对象,可以理解为简化版的 Consumer,可以直接从上下文对象中解构出 数据。Provider: 用于提供上下文的组件。Consumer: 用于消费上下文的组件。
2025-02-25 10:34:21
189
原创 组件实例的生命周期和路由导航守卫执行顺序
在beforeRouteEnter中,你不能直接访问组件实例,但可以在next的回调函数中访问它。而在beforeMount中,你可以自由地访问组件实例的数据和方法。需要注意的是,如果你的组件是通过其他方式(如条件渲染、动态组件等)被创建和挂载的,而不是通过路由导航,那么beforeRouteEnter将不会被调用,只有beforeMount会被执行。最后,组件实例被挂载到DOM上,mounted钩子被调用(但在这个问题中没有提到)。
2025-02-21 16:05:42
359
原创 vue中各methods的执行顺序
对于跨组件(包括mixin)的依赖注入,你可以使用Vue的provide和inject选项。如果mixin和组件之间的交互非常复杂,你可能需要考虑使用Vuex来管理状态,或者使用事件总线来在它们之间传递消息。这样,即使组件内部有同名的方法,它们也不会相互干扰。虽然Vue的合并策略默认会覆盖mixin中的方法,但你可以通过自定义合并策略来改变这种行为。2.2 组件内的methods方法会覆盖mixins中的同名方法,这个是否有什么方式可以尽量避免。// 组件内部方法,不覆盖mixin中的方法。
2024-09-21 17:56:42
1680
1
原创 联合类型和交叉类型
1. query和param传参有什么区别:<1>用法上的:使用query传参的时候,name,path都可以引入,但使用params传参的时候只能使用name进行引入。接收参数都是类似的,分别是this.route.query.name和this.route.query.name和this.route.query.name和this.route.params.name(接收参数时是...
2019-06-20 11:46:33
324
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅