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

原创 送给初学者学习设计模式的一些技巧

设计模式只是提供了一些模版供人们去使用,具体的还是需要我们去创造,学习设计模式就像内功修炼一样,不能急于求成,慢慢看框架源码设计或者看看优秀的开源项目,可以学到不少好的东西。下面有奖竞猜,猜猜下面go语言代码符合啥设计原则(非常的简单,后台私信答案)fmt.Println("逛街的衣服")fmt.Println("工作的衣服")cs.Style()cw.Style()

2023-12-13 01:25:08 95

原创 三角形最小路径和

一样如果用普通的遍历,或者是递归计算的话,一般计算机在计算到50的时间计算任务应该是指数级别的增长,假如我们拿出一个数组来记录一下他每次计算的值,这样是不是就省去了好多不必要的计算,同样这道题也可以这样想,我们把计算的结果记录下来这样就避免了重复的计算,这就是动态规划的精华所在。题是这样的一次只能走一步,然后求出最短的路径,看到这道题很多人第一反应,双重循环分别去比较每个数的大小,这个思路很不错,让我们在多想一点点,那就是如果双重循环的话就会产生很多次重复的计算,就像。第二行就有了两个元素,我们可以选择。

2023-10-22 14:03:25 236

原创 遍历完全二叉树节点

我们先来普及一下完全二叉树的概念:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第h层,则该层包含1~ 2h个节点。这种解法是最简单在运行时间和速度空间上都很快,如果想不到完全二叉树的性质可以使用这种方法无脑遍历,无脑来解这道题。大概思路就是分别递归遍历左右节点直到节点为nil为止。由于代码思路很简单,我们直接看代码。

2023-10-21 09:15:01 117

原创 最长回文子串

上面的两种解法,最快的是一种解法,动态规划的解法,其实和暴力解法差了一个平方,动态规划大概是n2 只是在暴力解法的基础上进行了剪枝的操作模,而第一种解法把复杂度控制在了n,准确来说是2n一般省略掉2所以为n。循环条件的设定为整个字符串长度的-2因为在查到最后一个元素的时候呀,他是没有比较的必要了,因为当循环到最后一个字符的时候就没有判断的必要了,最后一个字符没有向右扩散的字符了,这样就可以少循环一次。最后一个要想的就是当找出最长的回文子串的时候,我们应该去寻找他 的其实坐标 ,以便我们返回,首先。

2023-10-20 13:31:17 292

原创 JavaScript-手写compose函数

大家好,今天跟大家聊一个非常古老的一个思想,函数式编程思想,函数式编程有他的好处,当然也有坏处,今天我们不详细的讲函数式编程,今天我们来讲里面的一个compose函数,有了解过的同学应该知道,compose的作用大概就是简化执行科理化函数的调用过程,大概意思就是在这个函数里面穿进去好多函数,他都会按顺序执行了,下面我们准备一下初始化代码(今天我们只讲一种方法,其实我是不太看好这种方法的只不过我看这种方法实现貌似挺多的,今天就来讲一下这种方法):我们如果像上面这么写太繁琐了,我们写代码,就是上帝,当然是

2022-09-03 20:11:34 380 1

原创 js防抖功能实现

上面我们简单的调用了一下我们写的取消功能发现是可以的,其实面试的话实现第一个基本的就可以了,那有人就要问为啥还要写额外的功能呢,我记得网上有句话说的挺多的就是我可以不用但绝对不能不会,对吧,能多学一点是一点, 下面我们实现下一个叫立即执行的功能,其实这个功能也超级的简单,我们只用在多传一个参数就好啦,下面我们实现一下。

2022-09-02 20:53:28 1927

原创 JavaScript-手写findIndex原理实现

大家好,今天给大家带来的依旧是一个非常简单的方法,findIndex的实现原理,这个数组的方法实现起来基本上都大同小异,个别的不太一样,今天实现的这个方法的作用呢,就是返回查找符合条件的数组下标,没有则返回-1,非常的简单,下面我们开始上初始代码:下面我们开始实现这个方法,这个方法实现起来其实很简单大概得思路就是判断传入的参数返回的是true还是false如果为true就返回当前的下标,如果为false就说明没找到返回-1下面顺着思路我们大概的去实现一下:我们试一下发现效果跟原生的一样,我们的思

2022-09-01 20:33:52 604

原创 JavaScript-手写reduce原理

大家好,今天给大家带来的是数组的reduce方法,大家应该挺熟悉这个方法的,这个方法的作用就是累加,这个方法实现起来的难度相比较于前面的方法会难上那么一点点,下面我们准备一下初始代码:上面我们准备好了初始的代码,其实呢reduce一共有四个参数第一个就是累加的初始值,第二个就是数组的每一项大家常用的就是这两个,后面一个是数组的下标,另一个是数组本身,下面我们思考一下,如果累加器,不传值第二个初始值,会报错吗,答案是不会的,这呢,有两个实现方法,一个是看做是如果不传值默认值为0,还有一种就是不传值,默认

2022-08-31 20:37:12 365

原创 JavaScript-手写every原理

大家好,今天给大家讲的是数组的every方法,跟昨天的some方法正好相反,every的作用是有一项不满足条件的就返回false一般用作购物车的全选按钮的场景或者其他的,下面我们来手写一下这个方法,先准备一下初始代码:上面我们看到返回的是false,下面我们来模拟一下every方法,今天没有新的逻辑:上面代码我们就写完了,逻辑大概跟昨天一样,就不在这里过多的强调了,不懂的大家可以私信我,或者看一下前面的文章,喜欢的可以点个赞感谢感谢!!!...

2022-08-30 19:08:23 328 1

原创 JavaScript-手写some原理

我给大家讲一下今天的新代码,以前相似的就不讲了,数组方法实现的方式都类似,就有些逻辑不同,首先第五行,判断fn函数返回的是否为true如果为true就终止循环,符合原函数的条件,不符合条件就继续找,直到找完这个数组,所以我们在数组结束后返回一个false,这样就完成了some方法的模拟原理。...

2022-08-29 19:46:30 323 2

原创 JavaScript-filter手写原理

大家好,今天继续给大家带来关于数组的方法,今天要介绍的是filter过滤的数组,大家知道这个数组跟前面我们讲的非常的类似,所以今天我们就长话短说,直接写准备的代码:上面就是我们准备的代码,下面我们把filter换成我们自己的代码,来写一下(myFilter):上面我们就完成了代码的编写模拟,我们讲一下今天跟昨天不一样的地方,因为filter返回的是符合条件的数组,所以我们需要将符合条件的push进符合条件的新数组,所以就有了第6行,剩下的跟昨天就类似啦,今天的内容非常简单,大家好好理解一下,不会

2022-08-28 19:47:59 215 1

原创 js实现原理-find原理实现

大家好,今天给大家带来的是数组的另一个方法find,这个方法大家应该都很清楚,他的作用就是返回符合条件的第一个元素,在方法中需要传一个回调函数,回调函数中传三个值,一个是每个元素一个是下标一个是数组本身,今天我们模仿的跟昨天的map实现起来还是有很大的类似的所以今天内容很简单,下面我们先准备好初始代码:上面我们看到输出为8下面我 们开始模拟一下这个find方法我们的就叫做myFind方法:...

2022-08-27 19:52:16 492

原创 JavaScript-map手写原理

我们来讲解一下上面的代码在5行的this[i]的意思呢就是因为当前this指向的是arr数组所以我们循环this[i]得到的就是数组的每一项,这样我们就满足了第一个参数item的标准,第二个参数呢是下标我们传过去i不就是下标码,第三个参数就是arr数组本身,正好this指向的就是数组本身,所以第三个参数就是this。我们先上面定义好一个自调函数然后里面在数组的原型链里面绑定一个我们自定义的函数,这样就完成了可以使用.myMap效果的调用,下面我们,说一下在函数内部的this指向谁呢?...

2022-08-26 20:38:33 408 1

原创 JavaScript-bind实现原理

大家好,今天给大家带来的是bind的实现原理,比前两个call,apply稍微有点点难,但是大家想要玩转js高级,那就当然是模仿各种的实现原理,对自己的js理解啥的提升挺快的,bind的话,想必大家知道:作用就是改变this指向,不调用函数没,这个跟前两个有些不一样下面我就带大家来写一下bind的实现原理:(在实现bind的原理之前我们先看一下原生的是啥样的然后我们去模仿一下)发现结果没有问题,其实js 的一些原理挺简单的,当我们学会写原理之后js高级的一些东西,就发现会幡然醒悟,奥原来是这样。...

2022-08-25 18:57:17 420

原创 JavaScript-手写apply原理

上面就简单的实现了apply的手写原理,今天水了一篇,万分抱歉,明天一定认真更新哈哈哈,大家晚安呢!

2022-08-23 22:16:15 288

原创 JavaScript-手写call原理

跟我们讲的作用一模一样下面我们把call换成我们自己写的函数,在换之前我们思考一个问题,如何才能通过.访问到我们写的这个函数呢?没错通过原型链来设置。上面我们实现了第一个返回对象的形式,然后我们来实现第二步改变this的指向,及函数调用。我们来试一下是否可以,我们发现结果多了一个function函数。

2022-08-21 20:13:16 369 1

原创 JavaScript-手写instanceof关键字

Hello,大家好,今天给大家带来的是instanceof关键字的手写面试题,现在前端呢,可以说是非常的卷,企业为了考验我们对专业知识基础学习的是否扎实进行考察,所以一般会出一些简单的复原题,回归正题,instanceof关键字的作用呢是判断对象是否是某个构造函数的实例。写完这个函数之后,我们打印结果发现有点点瑕疵继承的不能判断,这样我们就不符合条件了,JavaScript里面的instanceof关键字是一层层的向上去找__proto__一样不一样,直到找到null为止。所以我们去改进一下我们的代码。

2022-08-20 20:28:19 429

原创 javascript-手写new的原理

大家好,从今天开始给大家带来最新一个栏目手写面试常见的面试题,因为最近要准备面试。正好自己也复习一下,找到自己的不足。好啦,今天给大家讲解的面试题是new的原理。在面试中呢,问的非常多的无非是:第一个就是可以说一下new的执行过程,第二个就是手写new关键字。2、将对象的隐式原型属性指向构造函数的显式原型属性。1、创建空对象,这个对象作为返回的实例对象。得到的结果就是 Person的实例对象。

2022-08-19 21:03:21 298 3

原创 谈谈angular的优缺点

正因为深度继承了rxjs使得angualr对全局状态管理的依赖不是那么的大,完全可以自己去封装一套自己的状态管理,利用服务和rxjs(发布订阅)封装一套。上面就是我对angular老大哥的一点看法,angular自2009年诞生,因为一次重大的更新毁了自己,个人对angular的崛起还是抱有希望的,毕竟框架本身很完美,做到了真正的面向对象开发,可能因为学习成本太高影响商业等因素吧,在中国有点点没落了,在angular在世界排名还是比较靠前的,个人看法angular可以用来作为学习底层框架的一个奠基石。...

2022-08-15 21:32:29 1862 3

原创 js实现力扣71题简化路径

很久不见时隔大概...忘记了哈哈哈哈,最近在搞MongoDB,感觉很适合前端哈哈哈,话不多说,今天给大家带来的是,一道算法题题解,可能太简单了,对于内些大佬来说,咳咳,大佬,就看乐子就好啦,不废话了,给大家讲的是力扣的第71题,简化路径这道题呢是一个中等题,挑战一下吧,下面我们来看题。大家看到题,小白可能已经懵了,这是啥一大段文字,大家先不要急,我们开始讲解思路。分析完了这道题下面我们来用代码去实现一下:通过上面代码就实现了力扣的71题,哈哈哈,是不是很简单,祝大家在自己的算法的道路上越来越来,进入到

2022-06-14 21:47:40 434 1

原创 flutter之dart语言发展

今天来给大家介绍一门最近在学的语言dart,提到dart大家应该不陌生,大家首先想到的就是移动的flutter,没错,flutter,无限接近原生,轻量,独立的渲染引擎...等等等,好多,好了今天来给大家介绍的就是开发flutter的基础dart语言,说起dart,个人感觉易上手,对于JavaScript的小伙伴没有上手难度,语法几乎是一样的,但是在这个基础上多了个人的包管理库pub,这个资源也挺丰富的。下面我们聊聊dart语言的优势。完全面向对象,此外还支持接口,mixin,抽象类和静态类...

2022-05-07 21:25:25 879

原创 react-redux状态管理(react18版本)

react的状态管理还是挺多的现在流行的有以下五种:Recoil MobX XState Redux Context今天我们来讲一下react众多状态管理之一的redux,虽然这个我不太喜欢用,但是我觉得简单的状态管理谁都会,但是难的就是程序员的分水岭,所以今天来给大家讲一下redux。下面我们来讲讲redux的优点:可以在众多组件中传值,突破react单向数据流的限制 不仅支持react还支持vue等主流框架 当然是好用方便啦接下来我们讲一下啥时候去使用他在我们有好多组件,

2022-04-24 22:03:15 3236 3

原创 vue ssr之nuxt

最近这一段时间,没更新干货的原因是因为,最近在写一个后天管理系统,模仿若依写的。刚开始写,感觉挺简单的,就想着,拿我新学的nuxt加node-express练练手,直接上手写,期间还是踩了许多坑。下面就给大家详细的讲讲。首先咱先说nuxt是啥,nuxt呢是vue单页面解决无法被爬虫爬取的解决办法之一——服务端渲染, node就不用说了吧,大前端必备技能之一,让我们前端程序员也能去写后端的代码我们主要来说nuxt,因为踩了很多坑,自我感觉nuxt还是比较好上手的,只要会vue就能轻松的上手,在去刷刷文

2022-04-21 00:18:55 2278 9

原创 vue2简单实现一个传送门的效果

今天,给大家分享一个有趣的技术,一个叫传送门的小组件实现,我们平时看直播的时候,直播软件上会有贴心的小窗口,今天我带大家就来实现一个传送门。实现这个传送门我们借助三个插件大家先装好分别为西瓜视频播放器(这里不是打广告哦,别的播放器也可以):npm install xgplayer vueuse组件库里面的uselntersectionObserver:npm i @vueuse/core 传送门的插件:npm i vue2-teleport(这个插件是非官方的,官方的支持的是vue3)好啦

2022-04-12 00:09:48 1570

原创 react+router v6+tedux+ts踩到的坑

今天,给大家分享一个我写基于react+router v6+tedux+ts一个用户管理系统的小练习,中间也很波折,以前觉得很简答,但确实踩了不少的坑,尤其在redux和router方面,踩了好多坑,今天就来给大家分享一下我踩得坑,以免大家会踩到。咱就从redux的配置开始说起吧,redux加ts我也是第一次写,刚开始写的时候确实费了不少劲,但等了一会,就还好吧一、redux安装问题第一个问题就是redux的配置安装问题,首先安装redux,需要安装1、redux的类型声明文件2、red

2022-04-08 17:21:07 1618 6

原创 Elementui避坑指南及vuecli

因为最近复习了一下vue和react的路由部分,然后用了一下vue的element ui,遇到了几个小bug给大家分享一下,我的步骤是这样的(这里使用的vue cli)vue2安装element npm i element-ui -S 一般项目都会使用按需引入,因为全部引入的话会使包的体积过大,加载时间变长,首页白屏等现象,当然全是这个造成的,首页白屏的优化方法有很多,比如:vue的ssr,优化协议,懒加载等等等等,诶呀!跑题了,也算简单普及一下吧。下面我们就按需引入按需引入需要安

2022-04-07 00:17:19 1344 5

原创 git的简单使用

git的基本使用

2022-04-01 15:59:47 349 2

原创 Ese6系列【结构赋值】

结构赋值:在日常开发中,我们经常会定义很多的数组或者对象,然后从数组或对象中提取出相关的信息,通常这样写代码会显得很凌乱,通过结构赋值可以大大简化了写代码的量。下面我们来看一些例子来学习一下:例子1:const student = { name:'jsPool', age:20,}要取到name,和age的值,常规写法:console.log(student.name) //"jsPool"console.log(student.age) //20es6写法结构

2022-03-30 21:20:19 623 2

Lunar_pro-5.3.3_[Kitdown].dmg

Lunar_pro-5.3.3_[Kitdown].dmg

2022-11-20

空空如也

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

TA关注的人

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