当前位置: 首页 > Web前端 > JavaScript

来看看新的前端《进阶不完全指南》专栏是什么为

时间:2023-03-26 22:00:59 JavaScript

背景这篇文章收录在《进阶不完全指南》专栏。按照之前系列文章的惯例,第一篇一般是背景介绍和大纲提炼。这个系列还是老样子(文笔功夫到这里也帮不上忙。)首先,我想表达一下我的写作目的:与我的团队成员和朋友分享,完成承诺给别人的事情,不后悔也不后悔后悔!我想系统化高级路线。当然,在写的过程中难免有零散的内容,但如果后续写的内容足够多,我也会把它浓缩总结一下(以后再说,到那一步再说)。愿景:足以帮助后来者少走几条弯路!希望就职业决策这个话题给大家一些建议。写作中难免喋喋不休,废话连篇。希望几句话能有丝毫共鸣,就够了嘿嘿!提升自己的分享能力、写作能力、换位思考能力(有时间和读者的陪伴)就够了!主要是把之前的备忘录写的摘录的所有总结整理出来。地基不稳(内乱不平),如何盖起千层高楼(如何开疆拓土)。专栏介绍。本来这个专栏只写数据结构和算法的,今天早上突然有个神秘的声音告诉我你写数据结构和算法是行不通的,(我是听话型的)回复:好,我赶紧改它。(仔细想想也不是没有道理,毕竟搞错了发那么多专栏就尴尬了。)经过长时间的思想斗争,就叫《进阶不完全指南》吧。写法、内存分配、cpu分配、垃圾回收、硬件指令……这一套东西,实现方式千差万别,思路大同小异。了解操作系统/运行原理,就知道原始语言的某些用途是相互吻合的。(比如javascriptcontainerv8=>browser)如果你了解数据结构,你就会知道为什么所有的语言都有数组、链表和哈希,什么时候用,怎么用。把算法搞清楚了,你会发现,写代码的时候,如果有神,思考问题的角度就会不一样。弄清楚设计模式,当你看大部分的框架原理时,效率会呈指数级增长。这个系列会真正介绍数据结构/算法/设计模式。数据结构这里首先简单列出基本数结构包括的内容,后面会逐步展开讨论。数据结构数组(array):数组是一种可以在内存中连续存放多个元素的结构,在内存中的分配也是连续的。通过数组下标访问数组中的元素。链表(linkedlist):链表是物理存储单元上的一种不连续、无顺序的存储结构。数据元素的逻辑顺序是通过链表的指针地址来实现的。每个元素包含两个节点,一个是存储元素域(内存空间)的数据,另一个是指向下一个节点地址的指针域。根据指针的指向,链表可以形成不同的结构,如单链表、双向链表、循环链表等。栈(stack):栈是一种特殊的线性表,只能在线性表的一端进行操作。栈顶允许操作,栈底不允许操作。栈的特点是:先进先出,或称后进先出,从栈顶放元素的操作称为入栈,取出元素的操作称为出栈。即主要有两个操作:push,向栈顶(尾)添加元素;pop,移除堆栈的顶部(结束)元素。队列和栈一样,队列也是一个线性表。不同的是,队列可以在一端添加元素,在另一端移除元素,即:先进先出。从一端放入元素的操作称为入队,从一端取出元素的操作称为出队。堆堆是一种特殊的数据结构,可以看作是树的数组对象。树树是一种数据结构,是由n(n>=1)个有限节点组成的具有层次关系的集合。哈希表(hashtable)哈希表,也叫哈希表,是一种根据键码和值(keyandvalue)直接访问,通过key和value映射到集合中某个位置的数据结构,并快速找到集合中的数据。的对应元素。图由节点的有限集合V和边的集合E组成。实现方式有矩阵、邻接表等,以上只是大概的内容,后面会逐步介绍数据结构。data~~Structures~~Algorithms(算法)Searches(搜索)BFSBreadthTraversalDFSDepthTraversal...排序类(Sorting)BubbleSortBubbleSortQuicksortQuickSort...其他类...以上只是概览内容,后续会逐步展开,会用到上面的一些数据结构算法~~~设计模式(design_patterns)设计模式来自于专家智慧的结晶(不一定是损失),设计模式取入考虑系统的可重用性和可扩展性。设计模式提供了通用的设计语汇和通用的形式,可以更有效地改善内部沟通。面向对象设计模式创建模式结构模式行为模式...函数式设计模式改进的OOP观察者模式...JS单例模式中的设计模式策略模式...以上内容后面会展开,所有提到的内容都会有所体现在本专栏中。目的是进步。就算神明降临,也拦不住我。我说!设计~~~~注意模块(请阅读指南内容/达成一定共识)本系列编码部分使用JavaScript。;本文所有编码部分优化后会上传至github;文章中指出的代码仅供逻辑参考。注意,因为编码部分是用高级语言写的,所以有编译时间等客观因素。复杂度不准确,主要是为了理解思路。注意,因为编码部分是用javascript写的,所以基本数据结构的实现并不是“真实”的(比如js中数组的实现有快数组和慢数组(hashtable)多种形式)。相关代码和测试代码请参考后续git仓库说明。系列文章内容会参考github现有仓库,后续每篇文章都会贴出参考链接。最后,请不要质疑我的专栏更新速度,因为你们要互相信任(我相信你们不会。哈哈哈)。总之,我保证每个栏目每周出一篇以上。每一篇文章的背后,我都需要做一些工作:编码&编码测试&文章内容的完善。求个赞。还有一些希望:希望在写作的过程中,能带给我不一样的思考。共情。希望写作的过程能给大家带来一些收获。共同进步的原则。希望明天是晴天!