- 博客(67)
- 问答 (1)
- 收藏
- 关注
原创 发布npm包时,你要考虑的东西都在这了
main: 定义了npm包的入口文件,browser 环境和 node 环境均可使用module: 定义npm包的 ESM 规范的入口文件,browser 环境和 node 环境均可使用browser: 定义npm包在 browser 环境下的入口文件。
2023-06-06 02:49:44
386
原创 DFA敏感词过滤算法-JS实现
DFA(Deterministic Finite Automaton)敏感词检测算法是一种基于有限状态自动机的高效字符串匹配算法,通过将敏感词构建成一棵状态转移图,将文本逐个字符进行匹配,并根据状态转移图的规则进行状态的转移来检测是否包含敏感词,具有快速、高效的特点,在实际应用中被广泛使用。DFA敏感词检测算法是一种高效的字符串匹配算法,可以快速地在一段文本中检测是否包含敏感词。
2023-06-06 02:47:13
516
原创 jwt 的鉴权过程与安全性分析
JWT(JSON Web Token)是一种基于标准JSON格式的轻量级身份认证和授权协议。JWT由三部分组成:Header(头部)、Payload(载荷)和Signature(签名)。下面简要介绍JWT的使用过程:用户通过用户名和密码向服务器发送登录请求。服务器收到请求后,验证用户名和密码是否正确。如果验证通过,服务器将用户信息作为Payload(载荷)加入到JWT中,并设置过期时间等信息,然后使用加密算法生成Signature(签名)。
2023-04-01 18:46:52
1420
原创 文件上传都发生了啥
用上面的代码尝试一下。没上传任何内容打印了一下 file 变量,是 undefined,然后我上传了一张图片,再次打印后 file 变量是一个 File 函数构造出的对象了,它里面有文件的一些简略信息,如大小 size,文件名 name 以及文件格式 type 等,而且文件内容也在这个对象里,只不过以 ArrayBuffer 的方式在文件的原型链上体现,看看下面对于 File 对象的操作。
2023-04-01 18:45:35
601
原创 在一个闭包环境下,父函数里没有被用到的变量还保存在内存中吗?
对的,就是因为这个作用域链,f 函数依然可以读取到 checkscopeContext.AO 的值,说明当 f 函数引用了 checkscopeContext.AO 中的值的时候,即使 checkscopeContext 被销毁了,但是 JavaScript 依然会让 checkscopeContext.AO 活在内存中,f 函数依然可以通过 f 函数的作用域链找到它,正是因为 JavaScript 做到了这一点,从而实现了闭包这个概念。我认为还在的,父函数的AO对象还会在内存中。闭包的实际过程是这样的。
2023-02-15 23:27:29
143
转载 前端重新部署通知用户刷新网页
有时候上线上好了,但用户还在用旧版,一般只有刷新之后,重新请求了网络资源才能拿到新的资源。而且旧版js的hash指向又变了,容易收到一些没必要的bug报告。
2023-02-12 16:41:48
755
原创 还是得每天保持学习呀!(一)
需要注意的是最后一个定时器打印出的 p1 其实是.finally 的返回值(BTW如果没有这个finally,定时器打印的promsie值也是undefined,因为then没有返回东西),我们知道.finally的返回值如果在没有抛出错误的情况下默认会是上一个 Promise 的返回值,而这道题中.finally 上一个 Promise 是.then(),但是这个.then() 并没有返回值,所以 p1 打印出来的 Promise 的值会是 undefined,.finally的返回值如果在。
2023-01-29 16:32:39
248
原创 前端布局写法原理理解与总结+记忆(两栏布局、圣杯布局、双飞翼布局)
实现两栏布局(左边固定,右边自适应,文档结构是一个父div包裹两个左右div,子元素height设置百分百自动撑满父元素)<div class="outer"> <div class="left">左侧</div> <div class="right">右侧</div></div>可能有些初学者不知道为什么下面的方法就能形成自适应的效果,这里有一些小贴士希望能帮助你们理解:1. 关于auto:width是auto会自
2023-01-25 15:02:55
983
原创 await 返回了什么
可以理解 await 后面的语句相当于放到了 new Promise 中,下一行及之后的语句相当于放在 Promise.then 中。
2023-01-23 11:07:07
7134
转载 promise里resolve的参数情况
那么也会执行该 then 方法, 并且由该 then 方法决定后续状态。那么当前的 Promise 的状态会由传入的 Promise 来决定。resolve 参数有以下几种类型。then 里正常打印。相当于状态进行了移交。
2023-01-23 10:47:28
633
原创 async、await踩坑
await把Promise解析为普通对象,async函数return的返回值是promise对象,await后转化为普通Object
2022-09-16 14:24:51
466
原创 初步了解:git rebase,除 git merge 之外的另一种代码合并命令
变基操作的实质是丢弃一些现有的提交,然后相应地新建一些内容一样但实际上不同的提交。如果你已经将提交推送至某个仓库,而其他人也已经从该仓库拉取提交并进行了后续工作,此时,如果你用 git rebase 命令重新整理了提交并再次推送,你的同伴因此将不得不再次将他们手头的工作与你的提交进行整合,如果接下来你还要拉取并整合他们修改过的提交,事情就会变得一团糟。你在查看一个经过变基的分支的历史记录时会发现,尽管实际的开发工作是并行的, 但它们看上去就像是串行的一样,提交历史是一条直线没有分叉。变基(rebase)。.
2022-08-09 16:04:13
363
原创 《style scope》 css作用域保护如何修改(组件库)子组件的样式
我修改了一个组件库子组件的样式。结果啥都不起作用,但我修改了我自己写的div就可以。为啥。
2022-08-03 14:05:24
434
原创 git cherry-pick —— “拷贝”其他分支的 commit 内容到自己分支
cherry-pick 意为挑选commit 后面的一串字符串就是 commitHash 或者说 id?将目标的 Hash 拷贝下来,这里假设 123453、执行 cherry pick注意:cherry-pick 会自动提交二)扩展:它可以一次性转移多个提交可以一次性转移两个提交之间的所有提交信息,但不包含 A如果要包含 A ,就配置项如果不想自动提交,可以用 -n其他配置项见参考文章git cherry-pick 教程...
2022-07-08 18:01:18
723
原创 使用rem
简介rem作为一个单位, 经过合理的换算, 就可以当px一样使用.公式rem = (designWidth/windowWidth)* 100这里的100为我们在设计图中设置的1rem的大小,也叫基准值。跟随窗口变换的代码$(function(){ function setRem(){ var windowWidth = $(window).width(); console.log(windowWidth); var rem = parseInt(windowWidt
2022-03-23 11:25:35
138
转载 数组常用函数整理
/** * JSFrame Name:EasyJs * File Name:JSFrame * Date:2014-11-28 上午10:50:09 * Copyright (c) 2014, China Link Communications LTD All Rights Reserved. * Author:by sicd * Describe: * Commonly used function of js code * */ /** 1、原生JavaScript
2022-02-27 09:37:07
116
原创 React Fiber —— 帮 React 15 解决性能问题的新特性
是 React 16 一个新特性,解决了 React 16 之前同步更新的性能问题
2022-02-26 18:40:02
590
原创 浏览器渲染原理的学习与总结
参考文章:浏览器渲染原理浏览器渲染原理1. 进程和线程进程包涵线程,微信是一个进程, 里面有很多诸如用户登录等线程.a.线程共享内存, 进程独立内存:进程与进程之间是相互独立的, 他们各自有各自的内存, 而线程之间是独立的, 但他们共享同一个内存空间.b.线程依赖进程, 进程控制线程没有进程, 线程就不存在, 需要进程来控制多个线程的执行.c.「为了提升浏览器的稳定性和安全性,浏览器采取了多进程模型。」如果一个页面有问题,不影响其他页面的运行。2.浏览器进程架构[外链图片转存失败,源
2022-02-06 15:57:30
840
原创 阻止事件冒泡\事件捕获 [无废话版]
(一) 前言1.1 Dom 事件流捕获阶段处于目标阶段冒泡阶段DOM事件流中,实际的目标在捕获阶段不会接收到事件,下一个阶段是处于目标阶段,这时事件被触发,最后进入事件冒泡阶段。我们认为处于目标阶段是事件冒泡阶段的一部分。1.2 监听事件如何切换冒泡与捕获改变 addEventListener 的第三个参数:接收布偶值,默认为 falsetrue 为采用事件捕获document.getElementById("third").addEventListener("click",fu
2022-01-31 17:28:02
2061
原创 一道考察范围挺广的题
知识点new 等运算符的优先级settimeout 函数和立即执行函数的作用域是上一级作用域。函数提升优先于变量提升,但最后的赋值结果看谁是最后赋值的,函数在预编译的时候就会进行赋值(一边声明,一边赋值。),然后再是变量的赋值。最后变量的赋值就覆盖了函数的赋值。var name;function name(){ console.log(1);} console.log(typeof name);//functionname = 12console.log(typeof nam
2022-01-22 16:08:26
215
原创 变量提升和函数提升哪个优先
问题首先:普遍认为函数声明提升优于变量提升但为什么下面的结果是这样的呢(第一个输出我们好理解,因为是先编译后赋值,编译的时候先声明了var 和 function,之后再进行赋值)预编译看这篇console.log(typeof a); // functionvar a = 1;function a(){}console.log(typeof a); // number解释:肯定是函数声明优先,但最后的结果要看谁最后赋值函数声明先赋值,变量声明执行到赋值语句才赋值因为两种声明方式共同
2022-01-22 14:43:03
1152
原创 git提交报错 OpenSSL SSL_read: Connection was aborted, , errno 10053
说白话就是一次性上交代码太多了Git默认限制推送的大小,运行命令更改限制大小即可修改一下配置git config --global http.postBuffer 524288000参考文章:
2022-01-20 17:06:13
1583
原创 vs code git 提交 fatal: remote origin already exists 远程仓库已经存在
fatal: remote origin already exists1、删除远程仓库git remote rm origin2、将远程仓库添加到分支git remote add origin https://github.com/xxx/xxx.git 3、重新推送参考:Git 提示fatal: remote origin already exists 错误解决办法...
2022-01-20 17:04:09
470
原创 JS继承-(二)原型式继承、寄生式继承、寄生组合继承
原型式继承原理等同ES5的Object.create()方法,创建一个函数,使这个函数成为括号中obj的构造函数,也就是这个函数的原型指向这个obj然后返回这个构造函数的实例,是一个浅拷贝,新实例的引用数据类型改变会让原来的obj改变 //原型链继承好像都会提升添加属性的代码。并不是这样的,可能只是f12的错误!!是个欺骗 //O obj_c = { name:'小李', sex:'male',
2022-01-19 18:31:55
556
原创 JS 继承-(一)原型链继承、构造函数继承、组合继承
前言都说了 JS 是面向对象的语言啦,单线程。拥抱面向对象继承、封装、多态原型链继承核心:一个子类函数的 prototype 指向父类函数的实例child.prototype = new parent() function foo1() { this.name = '小明'; } function foo3() { this.size = 'max' } foo3.prototype = new foo1(); //1.原型链继承
2022-01-18 16:34:07
484
原创 你不知道的JS阅读笔记——(2)提升和闭包
1、提升函数声明提升的优先度比变量提升的优先度要高函数表达式不会提升2、闭包2.1 简介函数内声明函数可以说是闭包,但准确的来说并不是。闭包:某函数在声明的作用域外被调用并且能够阻止「原作用域」的销毁,以及使用原作用域内的变量闭包和块作用域结合是最屌的var result = [];var a = 3;var total = 0;function foo(a) { //3.这里如果被改为let i 将会是绝杀,可惜改不得,因为let会在每一次的迭代里面生成一个封闭的作用域
2022-01-16 13:55:31
195
原创 如何去介绍自己的项目
如何去介绍项目?解析:首先描述自己所做项目有哪些功能模块,然后描述其中单个模块有哪些功能,再对其中的一个单独功能进行详细描述,中间可以穿插一下遇到的技术问题,循环往复,和面试官保持平等对话。举例:我在上家单位最近做的项目是一个基于 ajax 和 template 完成了一款文章资讯类的项目,其中包含登录功能,一文章列表渲染等功能,通过封装单独的 API 文件,为了保证业务逻辑之前更加清晰,配合 ajax 完成了对文章分类功能的数据渲染,以及实现删除文章,以及修改,添加文章等操作...
2022-01-16 12:58:46
628
原创 call、bind、apply三者的区别
call写了就等于直接调用函数foo.call(obj,要传给函数的参数1,要传给函数的参数2...)apply写了就等于直接调用函数区别于 call 就是后面参数的传入,其他都一样foo.apply(obj,[要传给函数的参数1,要传给函数的参数2...])bind写了还要加括号才算调用函数跟 call 参数设置一样foo.bind(obj,[要传给函数的参数1,要传给函数的参数2...])相同点这三个都能够改变 this 指向call 和 apply 的第一个参数都一样是
2022-01-15 16:57:59
2769
原创 ES6的新特性
ES6的新特性(1)变量声明:由var变为let和const;(2)模板字符串:使用反引号``;在模板字符串里面支持换行,并可以在里面使用${}来包裹一个变量或表达式;(3)解构:有***数组解构***和***对象解构***;可以快速获取数组和对象的值;//解构赋值const foo = [1,2,3,4,5]const [a,bd,e] = foo //数组解构 按顺序赋值console.log(a,bd,e); //1,2,3const foo2 = { name:'lulul
2022-01-15 15:16:45
224
空空如也
NodeJS,看发帖的点就知道现在有多无奈了
2021-08-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人