自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员成长指北

一个有趣的且乐于分享的人.专注 完整的 Node.js 技术栈分享,从 JavaScript 到 Node.js;再到后端数据库,祝您成为优秀的高级 Node.js 工程师.座右铭:今天未完成的,明天更不会完成.

  • 博客(2915)
  • 收藏
  • 关注

转载 前端关于单点登录的知识

作者:An_an16347原文:https://juejin.im/post/6844903664264413198什么是单点登录单点登录(Single Sign On),简称为 SSO...

2020-08-24 08:32:50 1525

转载 轻松理解JS中的面向对象,顺便搞懂prototype和__proto__

作者:蒋鹏飞链接:https://juejin.im/post/5e50e5b16fb9a07c9a1959af这篇文章主要讲一下JS中面向对象以及 __proto__,ptototyp...

2020-08-23 14:24:28 501

转载 前端模块化:CommonJS,AMD,CMD,ES6 学习

作者 | subwaydown地址 |https://juejin.im/post/6844903576309858318模块化的开发方式可以提高代码复用率,方便进行代码的管理。通常一...

2020-08-22 11:30:00 393

转载 (有趣问答)2019年nodejs凉了吗?凉到什么程度了?

今天在下于知乎上看到一个有趣的问题,叫「2019年nodejs凉了吗?凉到什么程度了?」问题挺耸人听闻的,但其实是一个很普适性的问题,对于大部分语言和框架的使用者来说都值得借鉴。这个问题...

2020-08-21 08:36:14 1221

原创 vue中8种组件通信方式, 值得收藏!

之前写了一篇关于vue面试总结的文章, 有不少网友提出组件之间通信方式还有很多, 这篇文章便是专门总结组件之间通信的vue是数据驱动视图更新的框架, 所以对于vue来说组件间的数据通信非常重要,那么组件之间如何进行数据通信的呢?首先我们需要知道在vue中组件之间存在什么样的关系, 才更容易理解他们的通信方式, 就好像过年回家,坐着一屋子的陌生人,相互之间怎么称呼,这时就需要先知道自己和他们...

2019-11-28 16:53:48 4282 3

原创 消息队列Rabbitmq,在Node.js中的应用

为什么写这篇文章 现在的面试要求越来越高了,打开看了看几个 BOSS 招聘 Node.js 全栈开发的,其中都有一条“了解 消息队列,并在项目中应用过”,呜呜呜 后端开发者应该都知道消息队列,但是一些前端开发者可能知道的并不多,但是你们可能好奇抢票,商品秒杀等功能是如何实现的,其实没有多么高大上,看了消息队列就知道了。 文章导图(你能学到)什么是消息队列“消息队列...

2019-11-26 09:05:34 7460 3

原创 Node.js中的执行顺序(微任务与事件循环)

提出问题在理解node.js的异步的时候有一些不懂的地方,使用node.js的开发者一定都知道它是单线程的,异步不阻塞且高并发的一门语言,但是node.js在实现异步的时候,两个异步任务开启了,是就是谁快就谁先完成这么简单,还是说异步任务最后也会有一个先后执行顺序?对于一个单线程的的异步语言它是怎么实现高并发的呢?好接下来我们就带着这两个问题来真正的理解node.js中的异步(微任务与事件循环...

2019-04-28 22:05:50 6334 2

原创 超详细的redis学习(1)-入门篇

什么是Redis基本概念redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库(非关系性数据库)。redis的优势速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)支持丰富数据类型,支持string,list,set,sorted set,hash支持事务,操作都是原子性...

2018-09-12 15:11:01 24813 2

原创 javascript之原型链详解

对象着手在谈原型链之前,先了解对象,万物皆对象。所有引用类型(函数,数组,对象)都拥有proto属性(隐式原型)所有函数拥有prototype属性(显式原型)(仅限函数)原型对象:拥有prototype属性的对象,在定义函数时就被创建prototype与proto两个概念prototype:此属性只有构造函数才有,它指向的是当前构造函数的原型对象。proto:此...

2018-09-07 17:06:41 640

原创 javascript中的闭包这一篇就够了

什么是闭包 维基百科中的概念在计算机科学中,闭包(也称词法闭包或函数闭包)是指一个函数或函数的引用,与一个引用环境绑定在一起,这个引用环境是一个存储该函数每个非局部变量(也叫自由变量)的表。闭包,不同于一般的函数,它允许一个函数在立即词法作用域外调用时,仍可访问非本地变量 学术上闭包是指在 JavaScript 中,内部函数总是可以访问其所在的外部函数中声明的参...

2018-09-06 18:08:48 1002

原创 LayoutParams基本使用

LayoutParams是什么?LayoutParams主要保存了一个View的布局参数,因此可以使用LayoutParams来改变布局参数从而达到View位置的效果,一般在自定义View的时候使用。LayoutParams怎么用?如果父控件是LinearLayout,需要使用LinearLayout.LayoutParams 代码如下:LinearLayout.La...

2018-08-05 23:17:31 9742

原创 回调地狱解决方案之Promise

Node.js异步控制之Promise为什么出现Promise在javascript开发过程中,代码是单线程执行的,同步操作,彼此之间不会等待,这可以说是它的优势,但是也有它的弊端,如一些网络操作,浏览器事件,文件等操作等,都必须异步执行,针对这些情况,起初的操作都是使用回调函数实现。实现方式如下(虚拟代码):function One(callback) { if ...

2018-07-29 15:56:07 1053

原创 async和await的讲解

async和await的讲解声明async函数的几个方法//普通的函数声明async function A(){}//声明一个函数表达式let A=async function(){}//async形式的箭头函数let A=async ()=>{}初识async和awaitasync与await实例应用,基础代码 控制器调用与serv...

2018-07-29 12:29:06 34622 1

原创 开发过程中的系统通知与推送的全面讲解

前言:在我们的软件开发中,系统通知和推送是必不可少的一部分,本篇文章将针对Android端和服务端分别讲解如何完整的实现一个系统通知与推送的功能 ,文章更注重逻辑、思想,不会讲那些基本极光sdk集成内容,如果需要请直接去极光推送官网查看文档。学前准备Android - 了解广播的基本使用,创建广播的几种方式 - ActivityManage和packpageManage的区别...

2018-07-24 10:22:23 5094

原创 解决Gradle:download特别慢或卡主不动的问题

解决Gradle:download特别慢或卡主不动的问题Gradle 在project创建的时候的时候会出现connect refused:connect或者卡在building gradle download https:等情况。 大多数的原因是因为我们Google对我们国内网络的限制: 解决办法:使用阿里云的国内镜像仓库地址,就可以快速的下载需要的文件修改项目根目录下的文件 build.gr

2017-06-10 21:14:34 20508 3

原创 Native与html5交互入门篇

Native与html5交互目前主流的移动端开发是混合开发Hybrid 先说一下什么是Hybrid APP,它指的是半原半Web的混合类App,需要下载安装,看上去类似Native App,但只有很少的UI Web View,它极力打造类似原生的App。 学习Native和html5交互,我们要学两点: 1、怎么把一个html5界面当作控件一样显示在界面中。 2、怎么和html5进行数据交互

2017-06-04 20:16:02 1298

转载 Cursor 内部工作原理

Cursor 会将你的问题转为一个向量,然后在向量数据库中查找最相近的片段,可能包括多个文件中的函数调用、定义、注释等。即便你配置了自己的 OpenAI API 密钥,请求仍会先经过 Cursor 的后端,这样系统才能添加系统指令、代码上下文以及专属格式,确保模型理解你的需求。介绍了 Cursor,一个结合了 AI 技术的代码编辑器,它通过深度学习和语义索引的方式,提升了开发者的工作效率。Cursor 通过与 VS Code 相似的界面和功能,以及自己的 AI 特性,实现了代码的智能化编辑和错误检查。

2025-05-18 21:30:32 3

转载 2025年了,npm 与 pnpm我们该如何选择

在前端开发的工具链中,包管理器是极为关键的一环,它就像一位高效的管家,帮助开发者管理项目中的各种依赖包。以一个包含 10 个项目的工作区为例,每个项目平均依赖 100 个包,使用 npm 时,node_modules目录总共可能占用 5GB 左右的空间,而使用 pnpm,这个数字可能会降至 1GB 以下,为开发者节省了大量宝贵的磁盘资源。pnpm 自称是 “高性能的 npm”,它通过创新的依赖存储和链接机制,实现了更快的安装速度和更少的磁盘占用,在中大型项目中优势明显,受到越来越多开发者的青睐。

2025-05-15 09:06:59 12

转载 开发神器 Cursor 最全配置指南:从入门到高效工作流!建议收藏

Include project structure:启用后会将当前项目的目录结构发送给 Cursor Agent,有助于它理解项目的整体架构,从而提供更上下文相关的建议。通过 MCP,你可以将 Cursor 与外部工具(如 Notion、Confluence、Jira 等)集成,扩展 AI 的上下文来源,提升其在特定领域的表现。启用如 GitLens 这类 Git 工具插件,可在代码中直接查看提交记录、修改历史和协作痕迹,有助于团队成员之间快速定位改动来源、追溯上下文,提升协作效率。

2025-05-15 09:06:59 157

转载 Node基础模块复盘,聊聊 zlib 压缩

接下来,就是实践的阶段了,虽然工作中没有使用Node.js开发的场景,但是自己可以创造项目,正好我有一个现成的小程序,可以开发一套文章管理后台系统。在过去一个月的学习中,虽然都是碎片化的学习,但是随着技术的积累,形成一套属于自己的学习体系,可以帮助更快更好的掌握新技术。我再官网给出的示例的基础上,将http的响应内容生成不同的文件,可以看出压缩过和未经过压缩的文件的文件大小是有区别的。对http请求和响应的压缩,我还有待在实际应用场景中研究和实践,单纯实现官网的例子,我感觉自己没有完全掌握。

2025-05-14 09:19:27 12

转载 干货 | 携程机票前端Web流式通信SSE全链路应用实践

仅仅只是简单接入SSE是远远不够的,离不开全链路(SSE技术选型,多层网络架构的适配,服务间的流式通信等等)的支持,所以最终决定联合携程框架、SRE、机票前后端团队共同来实现对SSE全链路的适配,真正意义上实现全公司通用的普适方案。关于SSE原生流解析 与 fes流解析是不同语言实现的这一点,我们也思考了语言差异对性能的影响,所以对响应数据的解析耗时做了实验,在相同机器和网络环境下,对比了原生 SSE 和 fes 处理数据流的耗时,实验结论是两者在耗时上没有明显差异(毫秒级)。

2025-05-14 09:19:27 14

转载 如何流畅地在浏览器中渲染100万个元素?深入浏览器底层渲染原理图文分享

若你能够理解上图所示的运行过程,那么你就了解了事件循环的大致流程,但这时又出现一个问题:已知我们可以通过其他线程执行异步任务,然后再通过回调函数推回任务队列,但是试想一个情况,我现在有很多由不同线程返回的回调函数在任务队列等待执行,但此时我点击了页面的一个按钮触发了回调函数,推入到任务队列中,在用户视角,为了即时响应用户操作我作为主线程是不是应该尽量马上执行这个回调函数?但前面还有这么多回调任务没执行,岂不是还要排队慢慢等?,如果在渲染过程中 JS 删除或增加了某个元素,那执行了一半的渲染线程应该怎么做?

2025-05-13 10:12:55 16

转载 万能的渐变!CSS 渐变实现自适应进度条

总之,渐变几乎是万能的,如果你想进阶学习CSS,一定少不了渐变。确实也能实现,不过总觉得用一个标签来实现这样一个装饰性的小圆点有点过于冗余了,不够优雅。除了使用径向渐变,还可以使用自适应SVG来实现,可以不用考虑繁杂的径向渐变语法。其实这里有个技巧,只需要收尾相连,能够覆盖整个容器,就可以当做最小平铺单元。以上就本文的全部内容了,一些关于渐变的实际应用,你学到了吗?由于是完全自适应的,圆点可以自定义数量,宽度也能自动分配,就像这样。,然后就是关键点了,当两个分界点重合时,就能形成边界分明的圆形。

2025-05-12 22:33:36 19

转载 别再写一堆 if-else 了:用状态模式优雅管理状态行为

在使用前要权衡问题的复杂度。但想象一下,如果手机有十几种模式,每种模式还要影响多个行为(比如来电、短信、闹钟、通知等),那么条件分支会迅速增多,而且每种模式的逻辑会分散在代码中的各个 if 语句里,维护起来就非常容易出错。许多框架和库在内部使用状态模式或类似的概念(例如,用户界面组件通常具有启用 / 禁用 / 悬停等状态,这些状态在幕后通过状态对象或状态模式来实现)。当你切换模式时,实际上就是更换状态对象,这样就避免了大量的条件判断,而是依靠多态来实现 —— 每个状态类知道在该状态下该如何处理具体的动作。

2025-05-12 22:33:36 11

转载 常见的 React 库架构设计

因此,只要把其他组件或 hooks 放在 Provider 之下,就可以直接使用核心的数据和功能,即使你并没有直接传递这些内容。其中,处理 Suspense 和 Promise 的原始 hook 会被大量使用,但在某些场景下,也可能需要用到更多的新 hook。不过,这种行为在某些场景下是你想要的,因为它可以避免 “撕裂”(tearing)—— 也就是组件使用了旧的状态数据。虽然 React 在并发特性中默认允许某些状态撕裂,以优先渲染更重要的内容,但对于外部状态,React 认为撕裂是不好的。

2025-05-11 22:33:12 25

转载 一份完整的「高级前端性能优化」手册

浏览器在解析 HTML 的时候,如果遇到一个没有任何属性的 script 标签,就会暂停解析,先发送网络请求获取该 JS 脚本的代码内容,然后让 JS 引擎执行该代码,当代码执行完毕后恢复执行后续解析。因此,我们可以将每个页面路由组件,拆成单独的一个个 chunk 文件,这样 main.js 文件体积降低,在首屏加载时,不会再加载其他页面的资源,从而提升首屏渲染速度。例举一个常见的场景:在 CSR 客户端渲染中,如果 main.js 资源体积过大,会导致在资源加载完成以前,页面会出现长时间的白屏。

2025-05-09 12:46:28 48

转载 实战!从 0 到 1 搭建 H5 AI 对话页面

起初,我打算借助 UniApp 现成的插件快速完成,可深入了解后发现,这些插件无法满足项目需求,于是踏上了自主开发的征程。SSE 全称 Server - Sent Events,能让服务器实时推送更新到客户端,特别适合 AI 对话场景,实现逐字返回对话结果,给用户带来流畅的交流体验。虽然领导没要求,但我看到腾讯元宝在流式输出文本时的自动滚动和手势拖拽功能,觉得很实用,决定在项目中实现类似效果。最初,我计划在前端实现语音转文字。但老板是福建人,方言复杂,担心前端识别准确率低,便放弃了这个想法。

2025-05-09 12:46:28 34

转载 人人都需要一个 HTTP proxy 来 debug

每当接 API 出问题时,就按下快捷键打开 DevTools,切到 Network 分页,找到红色的那一行,右键复制成 cURL 粘贴到群里面,让后端自己找找问题。以上是两个我有印象的范例,但实际开发中应该碰过更多更多,基本上都是只靠 DevTools 来看 Network 没办法解决的问题,要么是看不到,要么看到的东西不太对。除了电脑的网页之外,手机也可以使用,可以在 Android 上设置代理服务器连接到同一个 Wi-Fi 的电脑上,接着在手机上安装证书,就能够拦截手机的流量。

2025-05-08 08:57:03 64

转载 用Python+Gemini,几行代码,把你的照片变成宫崎骏风格动画艺术!

首先,连接Gemini API需要一个Gemini API Key,这相当于你的“通行证”,告诉Gemini服务:“我是授权用户,可以请求生成内容啦!就是教你用几行Python代码,结合Google最新的Gemini API,把静态图片变成宫崎骏(Ghibli)风格的动画艺术作品!创建新的API Key 点击【Create API Key】,几秒钟后系统会生成一串专属你的API密钥。保存好你的API Key 复制API Key,保存到本地文件或者粘贴到代码中(注意保密,不要随便泄露)。

2025-05-08 08:57:03 43

转载 通过performance面板验证浏览器资源加载与渲染机制

不过,当脚本加载完成后,会立即执行脚本内的代码,此时如果HTML还没有解析完成,则会暂停对html的解析,从而阻塞页面渲染。的脚本加载是异步的,这类标签视为ES6模块来处理,而ES6模块是设计为异步加载的,当浏览器遇到此类标签时,会开始异步下载改模块及其依赖项,不会暂停页面的解析和渲染工作,当HTML文档被解析完成后,会在触发。读完本本文你将彻底弄懂以下核心知识。:带有defer属性的脚本,加载不会阻塞页面的解析和渲染过程,浏览器可以继续解析页面的其余部分,当整个文档完成解析后,在触发。

2025-05-07 10:10:33 21

转载 30k的前端简历到底是长啥样的?

写的详细一点,比如:遇到了什么问题,使用什么方法,最终达到什么样的效果。笔者从业8年多,资深前端(亲自招聘入职了100+多人,面试了千余人,也看过1w+份简历)只要你知道怎么去更好地表达、更好地去美化、更好地去表现,那么你的简历也可以很出彩。4、封装了一些东西,让多人使用或提高整体效率的,贴上使用的人数、提高了多少效率。文件太多,所以大家可以扫下方二维码进行领取,并且报上你的工作年限,即可享受。问:我做的都是简单的项目,所以简历上根本就没什么好写的。在整理这些简历模板的时候,发现了很多简历上的。

2025-05-07 10:10:33 17

转载 更强大、更灵活! defineModel 重新定义双向绑定

它本质上是对 v-model 指令的语法糖,但提供了更简洁、更直观的语法。后,我们在组件中虽然可以不用像之前那样显式的接收props与emits,但Vue同样会帮我们生成这两块内容,并且可以看到两者红框内基本一样,只不过使用。的引入不仅简化了 Vue 中的双向绑定,还为开发者提供了更强大的工具来处理复杂的数据流。2. 子组件在接受数据的同时也还要接受事件,只不过这个事件并不是父组件显式传递过来的,并且格式有点区别。2. 子组件接收数据的同时还需要接收父组件传递过来的事件,并通过。从编译后的代码可以看出,

2025-05-06 09:04:39 26

转载 一个前端面试官的思考:当Promise遇上真实业务场景

作为一名前端面试官,我经常遇到这样的候选人:聊 Promise API 的时候说的很溜,我感觉我都没他这么溜,然后再问实际的 Promise 业务场景的时候就不会说了。"你对Promise熟悉吗?Promise.all、Promise.race、Promise.any..." "好的,那我们来看一个实际场景..."通过这个例子,我们可以看到: 知道API的使用,并不意味着你就会用。"假设用户要上传100张图片,但是服务器限制同时最多只能处理5个请求,你会怎么处理?queue : 存储待执行的任务队列。

2025-05-06 09:04:39 13

转载 新AI神器,让你秒懂开源项目架构设计!

它就像是专属于GitHub的 Deep Research,背后有Devin的技术加持,能够自动分析仓库代码,生成全面而详细的项目文档,并支持你直接与之对话提问!检索到的文档也是非常的全面, 包含架构图、插件系统、请求处理流、应用生命周期等都提供了详细的说明和流程图,简直不要太直观。DeepWiki提供的是up-to-date的文档,能让你时刻了解项目的最新状态,不再为过时的信息而烦恼。带着程序员那点好奇心,认真的尝试了一下,用完后,只想说真的是神器,这么省心的神器!北大DeepSeek 实战使用PDF。

2025-05-04 10:10:25 24

转载 原生 Observable API 来了!能否取代每周下载 5200 万次的 RxJS?

该提案受响应式编程范式启发,引入声明式的事件处理模型,通过可观察对象和观察者的解耦设计,使开发者能以更函数式的方式组合、转换和操作事件流。因此,Observable API 可能在浏览器事件处理中取代 RxJS 的某些用途,而无法完全取代 RxJS,尤其在复杂场景或跨环境开发中。:Observable API 提供了丰富的操作符,但可能不如 RxJS 全面,后者有更多操作符和更长的开发历史。RxJS 是一个全面的反应式编程库,提供广泛的操作符和功能,用于处理异步数据流,其 npm 周下载量高达。

2025-04-30 10:10:41 17

转载 我不允许你还不知道 vite-plugin-pwa

本文就带大家系统了解一下它的安装使用、核心功能和进阶技巧,让你的 Vite 应用秒变原生 App!的神兵利器,无论是离线体验、推送通知还是热更新体验,都非常值得一试!点击地址栏出现的下载按钮,会出现一个下载弹窗,说明配置成功!配置或者页面,插件也能快速热更新,不用手动重启。生成的 manifest.webmanifest。最近在给项目加 PWA 支持时,发现。自动生成 service worker。PWA 支持推送,配合第三方服务(如。

2025-04-29 09:09:04 12

转载 8年磨一剑,Koa 3.0 正式发布!看看带来了哪些新功能

8年等待,Koa 3.0 终于来了!它不仅是 Node.js 经典框架的自我革新,更是整个社区技术进步的缩影。Koa 3.0 将最低 Node.js 版本提升至 v18,全面利用现代 V8 引擎的性能与安全优势。Koa 3.0 支持将自定义 Node.js 流直接作为响应体,极大提升了大文件、音视频等场景的传输效率。,无论你身处何处,都能随时访问当前请求的上下文信息。3.0 不仅是一次版本号的跃迁,更是 Node.js 现代化进程的重要里程碑。错误的特殊处理,流的错误需开发者自行把控,提升灵活性和一致性。

2025-04-29 09:09:04 31

转载 前端自适应方案全面解析:打造多端适配的现代网页

前端自适应(Responsive & Adaptive Design)是指网页能够根据不同的屏幕尺寸、分辨率或设备类型,自动调整布局、字体、图片等元素的显示方式,以确保用户在任何设备上都能获得良好的浏览体验。在移动互联网时代,用户访问网页的设备多种多样,从桌面电脑到平板、手机,甚至折叠屏设备,屏幕尺寸和分辨率差异巨大。选择合适的方案,并结合 PostCSS、Sass 等工具,可以大幅提升开发效率和用户体验。(基于父元素字体大小)进行布局,结合 JavaScript 动态计算基准值。

2025-04-28 09:04:17 110

转载 程序员必备!一文讲透晋升答辩!

所以,作为相对“脆弱”的个体,比起苛求规则的公平性,我们更应该(主要是因为更能)做的是更主动的适配系统已有的协议接口,更好的开放我们自身这一封闭系统,让评审这把尺子能够有更多可度量的机会,从而提升我们自身的容错能力。所以,同一评分如8.4,按不同的细分规则,结果分别是8/9/8了,而8.5是8/9/9,9.1是9/9/9。不过,仅仅是把材料放置上去也是不够的,我们还需要在这些砖/瓦/木之间添加适量的混领土/粘合剂,让这些在外表让已经组合起来的独立模块,在内质上也要得到合理的链接。

2025-04-28 09:04:17 9

转载 用分层结构扩展你的 React 项目

所以当我接下来参与的项目转向使用 React 时,我感到非常惊讶,因为 React 几乎没有针对大多数开发者的官方库,也没有一个成文的风格指南可供参考。Layered React Structure(LRS)是一种旨在清晰分层、高效开发和维护大型 React 项目的方法论,强调组件和逻辑的分层组织,以及如何在 React 项目中更好地测试和样式管理。关于 “智能” 组件和 “傻瓜” 组件的争论有很多不同的说法,但以下是我在实际开发中总结的一些通用经验法则。我建议你在使用 LRS(分层结构)时遵循这些规则。

2025-04-26 23:17:45 9

空空如也

空空如也

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

TA关注的人

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