原创 Vue源碼解析(一)

使用vue已經大半年時間了,寫起來已經很順手了。比起之前的jquery時代,vue配合webpack的使用,讓前端代碼整體性更強,代碼量也比之前少了一些。用了一段時間後,也想了解Vue具體是如何實現這樣的一個mvvm框架的,經過一

原创 記曾做運營二三事

最近,在一次小組會議上和大家聊起了自己在上一家公司做過運營的事情。今天又想了想當初那段經歷,覺得應該記錄下來,一方面日後更好的進行會議總結,一方面希望給在小型創業公司的同學一些參考。 前言 那是在我工作了大概一年半左右的時間,那時

原创 人工智能來臨的焦慮和機會

人工智能可以說是這兩年互聯網行業最熱的詞彙之一,有人說2017年是人工智能的元年。元年這個詞可能大家聽到的也不少,比如去年的VR/AR元年,到今年就沒什麼聲音了。不管怎麼樣,人工智能的確正在一步一步來臨,雖然目前還處於比較初級的階

原创 effective javascript(六)——掌握閉包

一、什麼是閉包的? MDN的解釋:閉包是指那些能夠訪問獨立(自由)變量的函數 (變量在本地使用,但定義在一個封閉的作用域中)。換句話說,這些函數可以“記憶”它被創建時候的環境。 直接看定義也比較難以理解,還是先看一個例子: fu

原创 推薦系統學習(三)——聚類算法

聚類分析 什麼是聚類分析? 聚類 (Clustering) 就是將數據對象分組成爲多個類或者簇 (Cluster),它的目標是:在同一個簇中的對象之間具有較高的相似度,而不同簇中的對象差別較大。所以,在很多應用中,一個簇中的數據對象

原创 推薦系統學習(一)——推薦引擎初探

信息發現 如今已經進入了一個數據爆炸的時代,隨着 Web 2.0 的發展, Web 已經變成數據分享的平臺,那麼,如何讓人們在海量的數據中想要找到他們需要的信息將變得越來越難。 在這樣的情形下,搜索引擎(Google,Bing,百度

原创 Vue源碼解析(三)

接下來調用eventsMixin方法,看名稱就知道是關於事件相關的,主要是在Vue的原型上加入$on,$once,$off,$emit方法。 Vue.prototype.$on = function (event, fn) {

原创 effective javascript(五)——變量作用域(儘量少用全局變量,儘量使用局部變量)

javascript中創建全局變量十分簡單,並不需要特別任何形式的聲明就可以被整個程序的所有代碼訪問。 定義全局變量最大的問題是污染了命名空間,有可能會導致意外的衝突。 同時全局變量不利於代碼模塊化,容易導致獨立組件、之間的耦

原创 effective javascript(八)——eval函數

javascript中的eval函數功能十分強大,錯誤使用eval函數的方法之一就是允許它干擾作用域。下面來看個例子: function demo(a) { eval("var b = a"); return b;

原创 Vue源碼解析(五)

接下來看看renderMixin方法,這個方法在Vue的原型上增加了$nextTick、_render以及_o、_n、_s等方法。 Vue.prototype.$nextTick = function (fn) { ret

原创 開源推薦系統整理

 花了大概1天的時間整理的各語言的開源推薦系統,比較完整全面的項目標紅。 一、python庫 1、benfred/implicit Fast Python Collaborative Filtering for Implicit Data

原创 effective javascript(三)——原始類型優於封裝對象

javascript除了object外一共有5個原始類型:布爾值、數字、字符串、null和undefined。(其中null類型進行typeof操作結果爲“object”) 字符串原始類型和封裝對象異同 在某些地方,String對

原创 Vue源碼解析(四)

接下來看看lifecycleMixin方法,這個方法在Vue的原型上增加了_update、$forceUpdate和$destroy方法。 Vue.prototype._update = function (vnode, hydr

原创 effective javascript(四)——避免對於混合類型使用==運算符

先來看一個簡單的例子: "1.0e0" == {valueOf: function () { return true;}} 結果爲:true 這兩個看似毫無關係的對象,使用”==”符號的結果卻是true。js的隱式強制轉換看似比較

原创 Vue源碼解析(二)

接着看一下第二部分,調用stateMixin方法。 function stateMixin (Vue) { // flow somehow has problems with directly declared definit