原创 創建型-原型模式

定義  使用原型實例指定創建對象的種類,並且通過拷貝這些原型創建新的對象。原型模式是一種對象創建型模式---百科。  通俗的說就是原型模式是一種創建型設計模式,指定某個對象(通過某種方式)得到一個新的對象,在內存中擁有新的地址,得到的對

原创 創建型:工廠模式-工廠方法、抽象工廠

簡單工廠問題 簡單工廠中我們通過參數來返回不同的產品對象,如果管理的對象過多,這個工廠函數會比較龐大,且當我們需要增加一個新的產品時,需要修改這個工廠方法,違反開閉原則(對拓展開放,對修改關閉)。 爲了解決簡單工廠模式的問題,出現了工廠

原创 創建型:構造器模式

簡介 構造器模式,也被稱爲建造者、生成器模式,是設計模式中比較容易理解的模式之一。 定義:將一個對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。 定義不太容易理解,簡單的說就是構造器模式中的對象的屬性是通過一個構造器來設置

原创 創建型:工廠模式-簡單工廠

定義   之所以叫簡單工廠是因爲真的非常簡單,只要一個工廠(函數)就可以了,如果把被創建的對象稱爲產品,把創建產品的對象或者方法稱爲工廠,那麼只需要傳入不同的參數,就可以返回不同的產品(實例),這種模式就叫簡單工廠模式。 簡單工

原创 設計模式與前端工程師

 前端要不要學習設計模式   始終認爲每個行業都有自己的特點,各自的專業性。一個開發工程師如果不知道電腦是哪些基本硬件組成,那麼我們大概率都會認爲這個人非常不專業。那麼前端要不要學設計模式呢?設計模式跟前端有多大關係呢?   前端工程師首先

原创 前端---梳理 http 知識體系 2

  爲什麼要有HTTPS   HTTP 天生具有明文的特點,整個傳輸過程完全透明,任何人都能夠在鏈路中截獲、修改或者僞造請求 / 響應報文,數據不具有安全性。僅憑HTTP 自身是無法解決的,需要引入新的HTTPS協議,簡單的說就是不安全。

原创 前端---梳理 http 知識體系 1

 最近看了http相關的知識點,覺得還是有必要整理下,這樣對自己的網絡知識體系也有幫助。 HTTP 是什麼  http叫超文本傳輸協議,可以拆成超文本、傳輸、協議來理解 協議   http 是一個用在計算機裏面的協議,使用計算機通信之

原创 javascript 之迭代器

簡介   迭代器是一種設計模式,可在容器對象 如 鏈表、數組上遍歷,無需關心容器對象的內存分配的實現細節。簡單的理解就是可以一個一個的依次拿到其中的數據,類似一個移動的指針,但是會告訴我們什麼時候結束。這樣我們可以拿到數據之後可以做一些我

原创 前端數據結構--二叉樹先序、中序、後序 遞歸、非遞歸遍歷

二叉樹遍歷 二叉樹的遍歷是指從根節點出發,按照某種順序依次訪問所有節點,而且只訪問一次,二叉樹的遍歷方式很多,如果限制了從左到右的方式,那麼主要有4種: 前序遍歷:根左右 中序遍歷:左根右 後續遍歷:左右根 層序遍歷:按層級、從上到下,

原创 前端數據結構--樹

前面介紹過的都是線性的數據結構,本文將介紹一種非線性數據結構——樹,它對於存儲需要快速查找的數據非常有用。樹是一種一對多的數據結構,樹這種數據結構在生活中經常看到,如 組織結構圖   圖中每個元素我們叫做節點,即樹(Tree)可以理解爲是

原创 前端數據結構--線性結構-隊列、棧

棧   棧是一種特殊的的線性表結構,只允許在一端插入和刪除操作。允許插入和刪除的一端是棧頂,另一端是棧底,不包含任何數據的叫空棧,棧具有後進者先出(Last in first out)簡稱LIFO,棧的操作主要有入棧、出棧 如 線性表

原创 前端數據結構--線性結構-鏈表

鏈表   標準數組是一塊連續的內存地址,所以在做插入、刪除時會對數據進行大量的移動,如果數據量很大那麼效率會比較低。如果我們把每一個元素都記錄着下一個元素的地址,那我們在做插入、刪除時是不是隻需要改變下一個元素的地址即可, 如  從存儲結

原创 前端數據結構--線性結構-數組

線性結構 線性結構是一個有序數據元素的集合,數據之間的關係是1:1 的關係如: 平時常用的線性結構有數組、線性表、棧、隊列 如。 什麼是數組   數組是計算機分配一塊連續的內存空間,來存儲具有相同元素類型的數據。數組具有隨機訪問的特點

原创 前端數據結構---複雜度分析

爲什麼需要複雜度分析   我們可以把代碼跑一遍,然後通過一些工具來統計、監控就能得到算法執行的時間和佔用的內存大小。爲什麼還要做時間、空間複雜度分析呢?這種分析方法能比我實實在在跑一遍得到的數據更準確嗎?   首先,肯定的說這種評估算法執行

原创 前端數據結構---相關基礎概念

前端要不要學習數據結構   作爲一名IT技術人員,需要不斷的完善自己的知識體系來提升自己,類似數據結構、網絡等。在工作中大部分時間我們都是做應用層面的開發,有時候對數據結構、算法這些基本功要求不是很高,但是一些基本得知識點我們還是需要掌握。