自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (2)
  • 收藏
  • 关注

原创 Vue3 + TS4.8踩坑之配置husky问题env: sh\r: No such file or directory

mac下,保存husky的钩子命令文件commit-msg之后,git commit的时候提示:env: sh\r: No such file or directory。原因是.editorconfig配置中的end_of_line = crlf强制将文件转为了dos编码格式的。需要注释掉end_of_line = crlf,将commit-msg修改为unix编码的。

2023-04-22 21:52:08 1818

原创 Vue3 + TS4.8其他踩坑记录

Vue3 Module has no default export.Vetur(1192),Vue3不要和Vetur搭配是用,而是是用Volar

2023-04-21 11:46:22 1194

原创 Vue3 + TS4.8的一些类型标注踩坑记录

Vue3 + TS4.8的一些类型标注踩坑记录:'PiniaPluginContext' is a type and must be imported using a type-only import when 'preserveValueImports' and 'isolatedModules' are both enabled.ts(1444)

2023-04-20 19:34:11 3202

原创 Vue3组合式Api script setup模式中顶层使用await报Top-level ‘await‘ expressions are only allowed when the ‘module‘

今天练习Vue3的Suspense组件的时候碰到在Vue3组合式Api script setup模式中顶层使用await时报错Eslint错误(能正常编译),错误提示是:Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', or 'nodenext', and the 'target' option is set t

2023-04-13 21:02:52 3835

原创 很有意思的Generator function函数做参数的调用问题

Generator function 生成函数的调用和启动不一样,调用之后,函数不没有启动,只有再调用gen.next()的时候,才进入函数体,函数才启动。

2023-03-18 12:39:09 160

转载 nestjs[一例看懂中间件、守卫、管道、异常过滤器、拦截器]

本文转自网络,这里mark记录一下,自己学习用:nestjs[一例看懂中间件、守卫、管道、异常过滤器、拦截器]_墨水白云的博客-CSDN博客_nestjs 拦截器

2021-12-24 16:19:56 588

原创 图解推导爬楼梯(跳台阶)问题详细过程

1,题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。,2,递推公式(状态转移方程)推导分析,需求比较简单。拿到这个题目的第一想法就是递归,但是这个递推公式是怎么得来的?我居然陷入了逻辑死胡同,花了很长时间才彻底绕出来了。不多说,先上图:图片链接:上楼梯(1次上1台或者2台)问题 | ProcessOn免费在线作图,在线流程图,在线思维导图 |认真的看上图,可以看出:上到

2021-11-11 23:06:32 4078

原创 动态规划思想解决找零问题,最精炼的实现(JavaScript版)

1,背景:十一节前练习了使用动态规划、回溯、贪心等算法实现找零问题:动态规划、回溯、贪心算法解找零问题(最小张数付款问题)(JavaScript实现)_yangxinxiang84的专栏-CSDN博客是实现出来了,也没有问题,但是总感觉使用动态规划实现的时候状态转移部分有点奇怪,有点复杂,理解上有一些困难。遂向大神川哥请教,大神就是大神,咔咔咔一会给我发了一个Java版本过来,当看到川哥的实现的代码的时候,我以为他理解错了(怀疑实现错了),因为代码确实太精炼了,居然没有用除法,没有用取模。。。

2021-10-11 15:41:28 980

原创 动态规划、回溯、贪心算法解找零问题(最小张数付款问题)(JavaScript实现)

1,背景需求:我们有 3 种不同面值的硬币,11 元、5 元、1 元(一定会有),我们要支付 15 元(整数),最少需要 多少个硬币?最少要3 个硬币(3 个 5 元的硬币)。2,动态规划实现这个问题应该是满适合用动态规划解的:多阶段决策求最优解。思路:A),用硬币的面值划分阶段,每一个阶段(每种硬币值)都有两种情况:使用或者不使用该面值硬币。B),每决策完一次之后,都会产生一组状态:本次决策用了多少个硬币、一共现在用了多少个硬币、每种状态下还剩余多少钱。C),将各个阶段

2021-09-30 21:04:19 1527

原创 贪心、回溯、动态规划算法求“变形”杨辉三角的最短路径

1、背景需求:“杨辉三角”不知道你听说过吗?我们现在对它进行一些改造。每个位置的数字可以随意填写,经过某个数字只能到达下面一层相邻的两个数字。假设你站在第一层,往下移动,我们把移动到最底层所经过的所有数字之和,定义为路径的长度。请你编程求出从最高层移动到最底层的最短路径长度。咱们今天通过三种算法思想来解这个题:分别是回溯、动态回归、贪心等算法。这三种算法思想各有自己适应的场景,简要的说:贪心:一条路走到黑,就一次机会,只能哪边看着顺眼走哪边。不一定能求得满足要求的值。回溯:一.

2021-09-27 22:15:22 920

原创 JavaScript实现归并排序算法并详解

归并排序是非常经典的基础排序之一,使用分治的思想,分而治之。先将待排序数组分拆为更小的数组,一直拆分到只有一个元素(只有一个元素的数组就是有序的),然后对分拆的数组按顺序进行合并。这个思想就是分而治之的思想,变成实现的时候,常用递归编程技巧来实现。直接上图来说这个过程(图是拷贝网上的):这里重点详细讲一下合并过程,合并被分解好的左右两部分的时候,左右两部分分别已经排好了,因此可以按如下图策略合并:比如需要合并left [1,5,6]的数组和right [2,3,4]数组的过程图:..

2021-08-30 20:16:00 879

原创 图解JavaScript单向循环链表及其反转实现

上一篇讲解分析了一下单向链表的反转实现。再看一下单向循环链表的反转。(高清图地址: https://www.processon.com/view/link/6121c41363768958e5302f6e)1,直观的看一下区别:先直观的看一下【单向链表】和【单向循环链表】的区别反转之后的指针(引用)指向:2,实现策略:2.1,从头节点开始遍历整个链表,直到找到尾节点。循环尾节点的判断是【尾节点】等于【头节点】 ,之前单向非循环链表的尾节点判断是节点的n...

2021-08-22 11:31:41 612

原创 图解ES6实现单向链表(添加)和反转功能

这几天在看算法基础,链表部分再练练手,单向链表的反转是一个比较考验思维缜密的技巧点。先在纸上画一下单向链表的结构,分析一下指向问题,基本得出解决思路(解决思路不复杂,但是要小心处理各个指针(引用)的指向关系):1,基本得出解决思路1,通过while循环遍历链表。2,每次遍历都要分析出三层节点关系:父节点、子节点,孙节点。每次遍历都将子节点的next指针(引用)指向父节点。3,遍历结束之后,获得当前链表的尾节点。4,修正头节点head的next指针为null,变为尾节点用。5,将头节点

2021-08-21 18:07:56 222

转载 JavaScript正则表达式的分组匹配详解

1,分组下面的正则表达式可以匹配kidkidkid:const reg = /kidkidkid/而另一种更优雅的写法是:const reg = /(kid){3}/这里由圆括号包裹的一个小整体称为分组。2,候选一个分组中,可以有多个候选表达式,用|分隔:这里的|相当于“或”的意思。var reg = /I love (him|her|it)/; reg.test('I love him') // true reg.test('I love her') /

2021-08-11 17:48:18 2165

原创 TypeScript中的模块解析原理

图形化的方式总结一下TypeScript中的模块解析原理。1,模块解析原理:https://www.processon.com/view/link/61128f195653bb6d0a7310b02,TS模块解析--一些核心解析参数https://www.processon.com/view/link/61128ee507912940a96566bc...

2021-08-10 22:43:50 184

原创 Typescript类型检查中的协变、逆变和不变

我个人理解,协变、逆变是针对于复杂类(集合)函数之间的类型兼容性关系。主要考虑数组和函数。先看一些比较权威的定义:https://baike.baidu.com/item/%E5%8D%8F%E5%8F%98/10963814?fr=aladdin 协变(covariant),如果它保持了子类型序关系≦。该序关系是:子类型≦基类型。 逆变(contravariant),如果它逆转了子类型序关系。 不变(invariant),如果上述两种均不适用。 首先考虑数组类型构

2021-08-08 15:57:02 224

原创 深入理解Typescript中的类型和构造器签名new

这两天重看ts基础部分的interface和泛型,涉及到构造器签名部分,看得还是比较模糊,仔细再整理一下,这次应该是清晰了。变量类型限定,主要用在以下场景:限定普通变量类型,限定函数类型(也属于限定变量类型),限定函数返回值类型,限定类类型。这里从限定普通变量类型开始,重点讲下限定类类型,即函数构造器签名。1,限定普通变量类型这是最简单和常用的类型限定用法,比如:(这部分代码也是后续演示代码的基础部分,后续用到这三个类的地方,定义都在这里)// 这部分代码也是后续演示代码的基础部分,后

2021-08-07 19:16:46 8715 2

原创 ES6的三个点(... 扩展运算符)应用场景小结

https://www.processon.com/view/link/610a94ca1e0853337b1bd06f1,解构赋值1.1,解构数组将数组中未解构的内容全部赋值合并在一个数组中给...后面的参数function test1(){ const[a,b,...c]=[1,5,7,12,15,18]; console.log(c); // [ 7, 12, 15, 18 ]}此时剩余参数必须是最后的元素,比如下面这个会报错:funct...

2021-08-04 22:00:02 335

原创 ES6中super关键字小结

小结参考:https://www.processon.com/view/link/61081304e0b34d3e35b7d0f6#map一、在类class中实行super这个关键字,既可以当作函数使用,也可以当作对象使用。在这两种情况下,它的用法完全不同。第一种情况,super作为函数调用时,代表父类的构造函数。ES6 要求,子类的构造函数必须执行一次super函数。作为函数时,super()只能用在子类的构造函数之中,用在其他地方就会报错。class A {}class B e

2021-08-02 23:49:04 265

原创 ES6新特性在较低版本node或者浏览器环境下的支持问题

这里持续的记录一些在较低版本的node环境或者浏览器下,ES6新特性的兼容问题。处理也很简单,用webpack编译一下,或者升级运行环境。1,类实例属性的新写法class Logger { // 类实例属性的新写法 在我的机器node v10.16.0下会报错,高版本node v14不会报错 level = "debug"; // 类实例属性的新写法 在我的机器node v10.16.0下会报错,高版本node v14不会报错 outoutPath = "../l

2021-08-01 10:32:52 539

原创 小技巧:前端用不同的方式实现斐波那契 fibonacci数列

斐波那契fibonacci数列是经典的入门算法题,定义是:从第3项开始,前面相邻两项之和,构成了后一项。也就是,从第3项开始,每一项等于前面两项之和。从定义看,最直观的就是递归,走一版:版本1:/** * 计算斐波那契数列第n项的值 * @param {*} n * @returns 第n项的值 */function fibonacci(n){ if(n<=1) { return 1; } return fibonacci(n-...

2021-07-30 15:58:01 451

原创 小技巧: 用ES6的方式获取URL链接中的参数

直接撸代码:function getURLParams() { const searchURL = location.search; // 获取到URL中的参数串 const params = new URLSearchParams(searchURL); const valueObj = Object.fromEntries(params); // 转换为普通对象 return valueObj;}...

2021-07-24 16:21:51 2668

原创 深入理解JavaScript的执行流程,执行上下文EC、变量对象VO、活动对象AO、作用域Scope(链)

这几天在梳理JS基础,花了两天的时间重新完整的梳理了JS的执行机制,参考了很多网文、ECMAScript规范、MDN的文章,在此做一个总结。感觉这次梳理的应该比较清晰了。(本文中一部分示例代码和图片是copy来的哈)。一、名词解释:执行上下文环境:也叫执行上下文,Execution Context,下文中简写为EC。(没找到一个官方的定义)个人理解是JS在运行时候记录JS运行的时候需要用到的各种属性等信息的一个对象,主要供JS引擎解析执行代码用。执行上下文中记录了Scope,VO|AO,this

2021-01-23 23:08:33 1285 7

原创 用流程图详解插入排序原理和流程(JavaScript实现)

插入排序是一个基础排序算法,网上都说比较简单。但是我在彻底去理解它的过程和原理的时候,还是着实花了一些精力。把这个过程用一个流程图记录下来,方便自己和需要的伙伴阅读。一、核心思想插入排序的核心思想是,将待排数组抽象划分成两个区域,一个是有序区域,一个是无序区域。通过两层循环,逐一的将无序区域的内容,按顺序插入到有序区域。1,初始区域划分:第一个元素(index = 0)初始为有序区域,因为只有一个元素,不存在有序无序一说;从第二个元素(index = 1)往后算初始的无序区域2,外层循环作用

2020-12-28 09:57:14 5350

原创 强大的shelljs以及其中的rsync

shelljs着实强大,已经基本跟原生shell差不多了。以下内容整理自网络:一、使用ShellJS提升你的开发效率(一)直接看连接:https://juejin.im/post/5cdb76166fb9a032196ef1ff或者:https://blog.csdn.net/weixin_33980459/article/details/91422235或者看官网:http://documentup.com/shelljs/shelljs二、rsync基本命令和..

2020-11-23 16:37:23 467

原创 小技巧: 查看pm2启动的nodejs的日志

一般情况下,pm2启动的nodejs中console.log出来的内容都会以标准流的方式输出到屏幕上。查看方式:1,直接运行 pm2 logs,此时屏幕上会同时输出error log和 实时log, 同时会打印出日志文件的路径, 类似:root@xxxxxxx:~# pm2 logs[TAILING] Tailing last 15 lines for [all] processes (change the value with --lines option)/root/.pm2/pm2.

2020-11-11 15:58:12 14304

原创 Object.defineProperty和Reflect.defineProperty的区别

Object.defineProperty和Reflect.defineProperty都是可以从底层修改一个对象的元属性的,Reflect.defineProperty将逐步的会取代Object.defineProperty,二者的基本用法是一致的。其中很大的一个区别是:Object.defineProperty的返回值是设置的对象;而Reflect.defineProperty的返回值是boolean,表示设置属性是否成功。撸代码看看:// 测试一下definePropertyfun

2020-07-08 13:36:16 993

原创 图解JavaScript中的async generator函数执行顺序

ES6中的async generator函数很好用,在处理一些列的异步调用管理上很方便。可以方便的处理异步函数,可以用来管理异步的、序列的异步工作流。但是执行的顺序确实有点绕,脑子不太好使,端午节期间花了一天的时间来彻底梳理了一下。注意,看这篇文章前,最好要先了解generator函数的运行机制和基本的使用。这篇文章不做阐述。直接撸代码一、generator函数中,直接使用yield返回// 模拟一个异步函数function mockFetch(url, ms){ log(

2020-06-26 20:59:50 462

原创 ES6中的generator函数的应用简介

ES6中的generator函数的应用简介这里先留一个坑哈,方便其他文档链接过来。该文章计划主要写generator函数的使用场景。

2020-06-26 11:55:11 211

原创 JavaScript中的函数分类和讲解:普通函数(含对象的方法)、generator函数、async函数、async generator函数使用讲解

在ES6之前,JS中主要只有一种函数,ES6之后,加入了其他的一些函数,方便了很多其他场景的处理,尤其是异步场景的处理,用的合适,能大大的简化异步代码的处理。一、普通函数:这里所说的普通函数,包含普通函数、函数表达式定义的函数、对象中的方法,箭头函数等。普通函数是比较常见、常用的,这里描述一下涉及的调用方式:// 1.1, 直接函数调用方式:Person("迪丽热巴", 18, "直接函数调用");// 1.2, 方法调用obj.doSomeThing()// 2, 构造函数方式

2020-06-26 11:51:10 382

原创 用ES6的新特性实现斐波那契数列

斐波那契数列是每一门语言必讲的一个简单又经典的算法题,用ES6的新特性来实现,简单、清晰数列从第3项开始,每一项都等于前两项之和,比如:1、1、2、3、5、8、13、21、34直接撸代码:方案1,解构赋值的方式:function fib1(num){ let rst = []; let [pre, current] = [0,1]; if(num>=3){ for(let i=0; i<num; i++){ rs.

2020-06-01 22:47:30 441

原创 JavaScript中函数调用方式小结

新冠疫情的五一假期,没有出去浪,在家把JS基础温故一下,小结一下目前我遇到的JS函数的调用方式。可能有遗漏的,但是应该比较全了。我进行了一下分类,一共分了约几大类:1,构造函数调用(2种)2,直接调用(1种)3,通过call, apply等方式调用(4种)4,通过bind调用(1种)5,自执行函数直接调用(严格上说,不算一种调用方式),这个不举例了老样子,直接撸代码...

2020-05-05 16:25:23 209

原创 用流程图详细解释JavaScript冒泡排序原理和流程

冒泡排序很简单,两重循环即可。用一个图详细解释其冒泡原理。核心原理是:把每一个元素和数组中的每一个元素进行位置比较,如果满足移动的条件,相比较的两个元素交换位置(冒泡)先撸代码,代码简短:/** * 数组的冒泡排序 * @param {array} arr * @author xinxiang84@126.com */function bubbleSort(arr) {...

2020-05-03 00:32:38 2036 1

原创 一图解析JavaScript快速排序原理,看了就不会忘~~

今天有个朋友问快速排序的原理,用processon给他画了一个图,也顺手贴上来,给需要的朋友使用。快排的核心原理是:1,选数组中的中间数据为比较的基数 (其实选哪个都可以,选第一个或者最后一个都行)2,从头开始遍历数组,跟选出来的中间数进行比较,比中间数小的放左边数组,大的放右边数组3,此时得到leftArr数组、中间元素、右边数组4,分别对左边数组执行步骤1~3,直到拆不出数...

2020-05-02 22:32:37 830

原创 redux学习之有点贱的combineReducers爬坑

这几天在看react、redux,在试用redux的combineReducers,准备动手敲一敲代码,按照书上的讲解背着敲一遍示例,结果刚到使用combineReducers创建store就无情的抛出错误,先分享个错误描述和截图:醒目的报错:Error: Reducer "todos" returned undefined during initialization. If the state ...

2018-05-22 16:12:14 4996 1

原创 在win7上使用wamp搭建PHP实战问题小结

今年要开始全力学习PHP,今天晚上在win7机器上搭建PHP,虽然简单,还是遇到了几个小问题。步骤:1,到官网下载wampserver:    http://www.wampserver.com/    官网很卡通,然后跳转到了这里真正下载: http://sourceforge.net/projects/wampserver/?source=typ_redirect    文

2015-03-25 23:46:12 325

BACKBONE.JS应用程序开发--高清版

Backbone.js提供了一套Web开发的框架,为复杂的JavaScript应用程序提供了一个MVC结构。   《Backbone.js应用程序开发》详细介绍了如何使用Backbone.js完成Web应用开发。全书从了解MVC、SPA和Backbone.js的基本知识开始,然后着手构建3个示例应用程序。《Backbone.js应用程序开发》还介绍了Backbone和Grunt-BBB、jQuery Mobile等开发工具的配合使用,以及Jasmine、QUnit和SinonJS等测试解决方案。

2017-09-02

空空如也

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

TA关注的人

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