暂时未有相关云产品技术能力~
他强由他强,清风拂山岗;他横由他横,明月照大江;他自狠来他自恶,我自一口真气足;
内存管理:申请 -> 使用 -> 释放 垃圾回收:不可达对象(没有使用到且不可访问到的对象)就是垃圾对象,会被JS垃圾回收引擎自动回收。 GC算法:不可达对象的内存空间会被GC算法回收。大概是这四种算法 引用计数、标记清除、标记整理、分代回收。 性能优化:细节上的留心,使程序更自信。
前端面试 无非就是 CSS + JS + 框架 + 工具 + 源码 + 算法 + 职业规划 + 实战,这篇文章以及接下来的文章也是围绕这些内容依次展开。 说到JS,它非常的强大,除了在页面中运行js,还有在服务器中运行的node.js,以js的构建工具等等,但是我在这篇文章中并不会去说那些js的扩展,比如多端应用、服务器端框架部分、小程序等等东西,还是说说通用的以及基础的部分吧。 首当其冲的是 作用域、闭包、面向对象的this指向以及多种创建方式呀继承方式呀、ES6的语法以及promise和async呀await呀,还有与HTML有关的JS DOM呀,和网络有关的 HTTP、NodeJS呀
vue的生命周期是官方公布的一系列的钩子,其实你只需要知道这些钩子在什么时候使用就可以了。但是有时你会发现,给子组件传值传一个复杂对象的时候,感觉明明传了,但子组件中遍历取值的还是会报错,甚至需要在子组件中去做if else之类的判断。 当然如果你给子组件设置props时加上合适的数据类型以及默认值,那么也没多大事儿,但是这是基于vue生命周期出现的问题,也许你了解了这个生命周期后,可以更优雅的解决这个问题噢。
React 就干两件事,打造用户界面,响应各种事件。16.0版本提出fiber,16.8版本提出hooks。 React原来是php项目,后来改了编译器,换成js来编译,然后加入虚拟dom。所以React只做两件事,一件事是渲染ui,一件事是响应事件。mvc和mvvm都是早些年angular的设计理念。react并不是什么mvvm和mvc,它只是一个很小的东西,只做那两件事儿。它只是个工具。backbone才是真正的mvc,它是模仿java的spring,挪到前端来了。
91题**解码方法**的难度属于中等,但其涉及到的知识并不少呢,斐波那契、备忘录剪枝、动态规划等等,除了题解之外,我也会深入浅出的讲解这些知识点,文章末尾我还会使用 正则 + 斐波那契的写法来解题,我们一起来看看。
Mock.js**模拟数据**的强大,相信不少朋友都能感受到,它帮助我们更快地“模拟”我们所要各种数据。那么,它怎么知道我们需要什么内容的数据嘞?它又是如何工作的?在这篇文章里,我们一起来看看。
Echarts**可视化工具**的强大,相信不少朋友都能感受到,它帮助我们更快地“搭建 ”我们想要的可视化图表应用。那么,它怎么知道我们需要什么样的图表?它又是如何工作的?在这篇文章里,我们一起来看看。
爬虫是**非常的**的强大,相信不少朋友都有所耳闻,它帮助我们更快地“获得”我们所要关键数据。那么,它怎么知道我们要需要什么内容?它又是如何工作的?在这篇文章里,我们一起来看看。
前端面试 无非就是 CSS + JS + 框架 + 工具 + 源码 + 算法 + 职业规划 + 实战,这篇文章以及接下来的文章也是围绕这些内容依次展开。 说到CSS,它现在已经非常的强大,已经支持了许多PS一般的功能了,但是我并不会去说那些部分东西,还是说说通用的或者基础的部分。 首当其冲的是 BFC、弹性布局、垂直居中、移动端/响应式、css预处理、三角和缩放、大屏自适应。
过去有很多次文件下载的功能,但是都没有记录下来,这次有空就把文件下载的功能从0写一遍,于是就有了这篇文章。 我会从简到难的方式去实现下载功能。从直接下载字符串到简单请求下载文件,最终通过后端返回的文件名来实现动态下载文件。
读了前三章,了解了虚拟dom的局部更新的设计思路,也知道了vue这个框架的开发体验、框架体积控制、剔除无用代码、不同资源输出格式、特性开关、错误处理、TS支持等等,它们互相配合,从而大大的降低了开发者的心智压力,这些也是衡量一个框架的质量指标,vue做的很好。 vue3中通过声明式的模板UI,编译器将模板或组件转成虚拟dom,再由渲染器转成真实dom,编译器中做了优化,从而使得渲染器能够更快找到变更的元素,性能上得到了很大的优化。
vscode的用户片段非常的方便,比如我想规范注释、快速生成代码呀,vscode的用户片段都可以帮我实现,而且是那种非常定制化去实现。定义好片段后,你还可以通过脚手架去生成一个vscode插件,并不复杂。
本篇文章记录的是上手react并做好一个React项目的大概知识点,比如antd、transition、redux、react-redux、middleware、reducer、router、hooks等等。
本篇文章记录的是上手react并做好一个React项目的大概知识点,比如jsx本质、生命周期、组件嵌套、父子通信、组件通信、插槽机制、跨组件通信、setState、react性能优化、ref、受控和非受控组件、高阶组件、React中使用样式。
react 是一个视图层的类库,主要是做dom渲染和响应事件的事情,如果想更高的把控它,可以有脱离基础语法束缚的哲学,从而能够站的更高。
在vue和react中都有用到使用vdom来进行渲染界面,在页面刚创建的时候使用vdom来渲染界面性能并没有直接使用dom操作来渲染页面好,但是在更新界面的时候使用虚拟dom比直接使用dom操作要性能好,当然你如果原生dom操作非常熟练、经验也非常丰富,可能也有例外,不过那么多原生dom操作也会有比较大的心智压
第二章了解了一个框架设计的核心要素,vue在这方面表现很不错。 开发体验、框架的体积、输出的资源格式、特性的开关、错误的处理、类型支持等等,vue都有考虑。
第一章我已经觉得有所收获了,写的很精彩,接下来就是第二章了,框架设计的核心要素,应该是框架的大体轮廓的介绍吧。 构建产物、模块格式、警告信息、定位问题、开发和生产的区别、热更新的支持、树摇(去掉框架中没用到的功能代码)。
权衡的艺术,看到这个名字,我瞬间脑袋就像个灯泡一样,瞬间一亮。我喜欢,我很想知道vue权衡的艺术,就像上帝为什么要造人一样的艺术(狗头)。好了,开始。
设计思路: 要有一个待迭代的数据对象,存放原始数据。 要有一个对迭代器行为进行封装的class,在这个class中可以定义遍历对象的一些行为。 要有一个获取指定数据对象迭代器操作类,在这个操作类中就直接拿到指定的迭代器。当然你在初始化的时候你可以传入待迭代的数据对象,也可以在操作类中追加待迭代的数据对象的子项。
谷歌浏览器的并发数是6个,有六个请求正在处理,那么其它的任务就会排队,等六个请求任务中的某一个完成之后,就会立马插入进去执行。这样一来,就清楚了。
github的actions是一个持续集成的工具,类似java的jekins,actions中需要编写流水线脚本,脚本并不难,只是环境的熟悉。github pages 是一个静态网站服务,只要你按照特定规则在指定的仓库或者分支上存放html代码,就可以通过特定规则的url去访问到该静态页面网站,很方便。
js中的number类型采用的是64位浮点数,也就是js中的整数、小数统统都是浮点数噢。
访问者模式属于行为型模式,这个类型的设计模式总结出了 类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,花式的去使用对象的行为来完成特定场景下的功能。
中介者模式属于行为型模式,这个类型的设计模式总结出了 类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,花式的去使用对象的行为来完成特定场景下的功能。
命令模式属于行为型模式,这个类型的设计模式总结出了 类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,花式的去使用对象的行为来完成特定场景下的功能。
备忘录模式属于行为型模式,这个类型的设计模式总结出了 类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,花式的去使用对象的行为来完成特定场景下的功能。
迭代器模式属于行为型模式,这个类型的设计模式总结出了 类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,花式的去使用对象的行为来完成特定场景下的功能。
状态模式属于行为型模式,这个类型的设计模式总结出了 类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,花式的去使用对象的行为来完成特定场景下的功能。
职责链模式属于行为型模式,这个类型的设计模式总结出了 类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,花式的去使用对象的行为来完成特定场景下的功能。
策略模式属于行为型模式,这个类型的设计模式总结出了 类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,花式的去使用对象的行为来完成特定场景下的功能。
观察者模式属于行为型模式,这个类型的设计模式总结出了 类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,花式的去使用对象的行为来完成特定场景下的功能。
外观模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。
组合模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。
享元模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。
适配器模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。
装饰器模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。
桥接模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。
单例模式属于创建型模式,这个类型的设计模式是将 对象的创建和使用解耦了,花式的去创建对象。
原型模式属于创建型模式,这个类型的设计模式是将 对象的创建和使用解耦了,花式的去创建对象。
建造者模式属于创建型模式,这个类型的设计模式是将 对象的创建和使用解耦了,花式的去创建对象。
死记是没有用的,正如教条主义式的生搬硬套没有多少作用,理解了才能举一反三、灵活运用。 我们可以再弄清楚十大原则:单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖倒置原则、 迪米法特原则、组合聚合复用原则、不重复你自己、尽量保持简单、不过度设计。
堆(Heap)是一种树结构,线段树(Segment Tree)也是一种树结构,它也被叫做区间树(Interval Tree)。
优先队列本身就是一种队列。 普通队列:先进先出、后进后出,如排队买票吃饭一样。 优先队列:出队顺序和入队顺序无关,和优先级相关。如去医院看病,床位非常的紧张,需要排队才能去做手术的话,此时做手术的这个队伍的顺序就是一个优先队列。因为医生是根据每一个患者的病症的不同以及需要这个手术的紧急程度的不同来去安排谁先做手术谁后做手术,也可以认为每一个患者是有一个优先级的。优先级高者先得,这样的一个队列就叫做优先队列,它和普通队列最主要的区别是在于出队这个操作上,入队很简单,但是优先级高的先出队。
堆是一个特殊的树结构。 在前面的文章中,使用了二分搜索树实现了集合和映射这两个相对来讲更加高层的数据结构。树这种数据结构本身在计算机科学领域占有重要的地位,树这种形状本身可以产生非常多的拓展,在面对不同的问题的时候可以稍微改变或者限制树这种数据结构的性质,从而产生不同的数据结构,高效的解决不同的问题。 之后的文章会有四个不同的例子,堆、线段树、字典树、并查集,通过这些不同的数据结构的学习可以体会到数据结构的灵活之处,以及在设计数据结构的时候其中的一些思考非常重要,因为这些思考会让你对数据结构这个领域有更加深刻的认识。
映射是高层的数据结构,高层的数据结构还有栈和队列,这种数据结构更像是定义好了这种数据结构的相应的使用接口。 有了这些使用的接口包括这些数据结构本身所维持的一些性质,就可以非常容易的把它们放入一些具体的应用中,但是底层实现可以是多种多样的。 比如栈和队列的底层实现即可以是动态数组也可以是链表,映射 Map 也是类似这样的数据结构。
上篇二分搜索树的文章中,认识了树这种高效的结构,对递归也有更深层次的认识,也体会到了二分搜索树前中后序递归遍历的思想,也就是深度优先遍历。二分搜索树的遍历,对每一个节点都有三次的访问机会。前序遍历访问节点都是在第一个访问机会的位置才去访问节点,中序遍历访问节点都是在第二个访问机会的位置才去访问节点,后序遍历访问节点都是在第三个访问机会的位置才去访问节点。 接下来开始认识一下树遍历非递归的思想,也就是层序遍历(广度优先遍历)。还有删除树节点以及更多二分搜索树的feature。
上篇文章已经从底层完整实现了一个单链表这样的数据结构,并且也依托链表这样的数据结构实现了栈和队列,在实现队列的时候对链表进行了一些改进。 递归不光用于树这样的结构中还可以用在链表这样的结构中,链表本身就天然的具有递归结构性质,只不过链表太简单了,它是一个线性结构,所以可以使用非递归的方式,如使用循环的方式就可以非常容易的解决链表的问题,从链表开始就要打好递归的基础,对深入学习树结构包括更加深刻的理解递归算法都是非常有好处的。
链表是最基础的动态数据结构。 动态数组、栈、队列,底层都是依托静态数组,靠 resize 解决固定容量问题。它们所谓的动态,是从用户的角度上来看的。 链表是真正的动态数据结构,它是数据结构中的一个重点,也有可能是一个难点吧。它是最简单的一种动态数据结构,其它更高级的动态数据结构有二分搜索树、Trie、平衡二叉树、AVL、红黑树等等。 熟悉了最简单的动态数据结构,那么对于更高级的也会比较容易掌握了。
数据结构是计算机领域专业必学的知识点,因为数据结构研究的就是数据如何在计算机中进行组织和存储,从而高效的获取数据或者修改数据。 有时可以让我们根据不同的应用,灵活选择最合适的数据结构继而解决相应的问题。