<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 12, 文章 - 0, 評(píng)論 - 22, 引用 - 0
    數(shù)據(jù)加載中……

    2013年10月20日

    遲來(lái)的年終總結(jié)(2014-2015)

        正好2016年的春假結(jié)束了,趁這個(gè)時(shí)間總結(jié)一下前面兩年的工作情況。
        2014年之前一直做的是java后臺(tái)開(kāi)發(fā),工作的內(nèi)容整體感覺(jué)是不難的,平常也都有自我學(xué)習(xí)源碼、框架之類(lèi)的。2014-2015年這兩年跟隨移動(dòng)互聯(lián)網(wǎng)的潮流,轉(zhuǎn)作了android開(kāi)發(fā),負(fù)責(zé)android團(tuán)隊(duì)。在一家公司一直做后臺(tái)近3年,也的確對(duì)相同的業(yè)務(wù)沒(méi)什么激情了,工作性質(zhì)的轉(zhuǎn)變還挺不錯(cuò)。回首這兩年時(shí)間,心情到是有些復(fù)雜。
        2014年初剛轉(zhuǎn)到android組的時(shí)候,對(duì)于android的了解是零;另外也是頭一次管理團(tuán)隊(duì),心里也是有些忐忑。進(jìn)入android團(tuán)隊(duì)沒(méi)2個(gè)月,恰逢android版本的整體升級(jí)(參考別組的產(chǎn)品代碼來(lái)改造升級(jí)),我自己攔了一部分核心業(yè)務(wù)來(lái)做。最初的想法是籍著這個(gè)升級(jí)的項(xiàng)目來(lái)了解andorid代碼,順便熟悉業(yè)務(wù),之后就是暗無(wú)天日2個(gè)多月的忙碌。最后產(chǎn)品是出來(lái)了,但是發(fā)現(xiàn)對(duì)于android知識(shí)和業(yè)務(wù)的了解的還是不夠,之間還一度感覺(jué)精神都抑郁了,想想也是夠嗆的。這兩個(gè)月之前也算是對(duì)產(chǎn)品代碼有了一定了解,另外對(duì)于團(tuán)隊(duì)間的運(yùn)作和管理也有了一定的熟悉,磕磕碰碰的度過(guò)了最艱難的時(shí)期。這2個(gè)月的時(shí)間對(duì)我說(shuō),算是這兩年中工作上最重要的一個(gè)時(shí)期。回過(guò)頭來(lái)看,其實(shí)這兩個(gè)月自己時(shí)間的安排不太合理,每天小組的瑣事挺多,分去了我一半精力,另一半又趕產(chǎn)品升級(jí)的事;的確是有點(diǎn)顧此失彼。當(dāng)時(shí)可能還是選擇一些小模塊來(lái)熟悉代碼,會(huì)比較合理。
        度過(guò)了最難的2個(gè)月后,工作和小組管理也步上正規(guī)。我們部門(mén)是b2b,公司內(nèi)部的資源和分散,經(jīng)常一個(gè)模塊的功能,需要3,4個(gè)小組一起來(lái)處理。又經(jīng)過(guò)好長(zhǎng)時(shí)間,熟悉流程,并跟其他小組人來(lái)完善流程,也逐步融入團(tuán)隊(duì),適應(yīng)andorid小組的節(jié)奏。這個(gè)事在2015年還在不斷的進(jìn)行中。2014年中還是出過(guò)幾件有意思的事,小組成員離職、與其他組人員溝通出問(wèn)題遭投訴,android人員招聘等等,細(xì)節(jié)就不一一道來(lái)了。
        2015年感覺(jué)相對(duì)2014年是平穩(wěn)很多,畢竟適應(yīng)了1年的小組節(jié)奏了。2015年工作主要在于項(xiàng)目管理和小組的管理上。每周組織小組成員的知識(shí)培訓(xùn),制定代碼規(guī)范,優(yōu)化外部流程等等。這一年的出差倒是需要提一下,有過(guò)幾次銷(xiāo)售讓出差說(shuō)是給客戶(hù)技術(shù)解答,最后發(fā)現(xiàn)一句話都不用說(shuō);后面出差的時(shí)候我都會(huì)再三確認(rèn)出差的具體事由。總體來(lái)說(shuō)去外面出差還是挺不錯(cuò)的,跟客戶(hù)了解項(xiàng)目需求、技術(shù)解答等也是挺有意思、挺鍛煉人的,如有時(shí)間多,還可以順便在當(dāng)?shù)赝嫱妗?br />     兩年下來(lái),可惜的是對(duì)于android的了解,只是個(gè)皮毛。2014兼顧開(kāi)發(fā)和管理,對(duì)于andorid技術(shù)的專(zhuān)研不深也就算了;2015年其實(shí)有很多時(shí)間可以加深android的了解,可惜由于種種原因都沒(méi)能花時(shí)間進(jìn)去。這兩年的收獲也是不小,由一個(gè)純粹的開(kāi)發(fā),到項(xiàng)目管理、團(tuán)隊(duì)管理的職責(zé)轉(zhuǎn)變,也使自己的眼界開(kāi)闊了不少;對(duì)于熱門(mén)的移動(dòng)行業(yè)也有一定的了解;andorid小組最初由7個(gè)人,一度達(dá)到15個(gè)人,跟隨著小組一起成長(zhǎng)。2016年工作又是有變動(dòng),重新回到后臺(tái)開(kāi)發(fā),之后可能出差會(huì)多些,還要學(xué)學(xué)技術(shù)包裝,哎感覺(jué)跟技術(shù)這條路背道而馳了。2016年已經(jīng)起航,祝福自己順利吧!
        

    posted @ 2016-02-14 00:28 heavensay 閱讀(265) | 評(píng)論 (0)編輯 收藏

    jQuery分析紀(jì)要

           本文是對(duì)jQuery源碼分析的簡(jiǎn)單紀(jì)要。

    jQuery相關(guān)對(duì)象內(nèi)存圖



        jQuery代碼分析紀(jì)要:
            1、 jQuery一加載進(jìn)來(lái),就執(zhí)行匿名函數(shù),進(jìn)行jQuery的初始化工作,定義jQuery的功能,最后暴露出jQuery和$變量給用戶(hù)使用。
    (function( window, undefined ) {

    window.jQuery = window.$ = jQuery
    })( window );

            2、 jQuery功能擴(kuò)展函數(shù)Extend
    jQuery.extend = jQuery.fn.extend = function() {
        
    }
            jQuery提供了2個(gè)供用戶(hù)擴(kuò)展的函數(shù)jQuery.extend和jQuery.fn.extend。
            jQuery.extend 用于擴(kuò)展jQuery自身方法,如jQuery.ajax, jQuery.getJSON等,jQuery.fn.extend則是用于擴(kuò)展jQuery(...)的方法,從上面的內(nèi)存圖中可以看出,經(jīng)過(guò)jQuery包裝后的dom元素,在其原型鏈上會(huì)擁有jQuery.fn.extend擴(kuò)展的方法。

            3、 jQuery函數(shù),就是我們平常$('#id')所執(zhí)行的函數(shù),返回包裝過(guò)的dom元素
       // Define a local copy of jQuery
        jQuery = function( selector, context ) {
            // The jQuery object is actually just the init constructor 'enhanced'
            return new jQuery.fn.init( selector, context, rootjQuery );
        },

    posted @ 2013-10-29 20:18 heavensay 閱讀(395) | 評(píng)論 (0)編輯 收藏

    Spring加載資源分析

         摘要: 這篇文檔是對(duì)Spring加載和解析xml文件過(guò)程的分析  閱讀全文

    posted @ 2013-10-28 00:12 heavensay 閱讀(11410) | 評(píng)論 (2)編輯 收藏

    Js中Prototype、__proto__、Constructor、Object、Function關(guān)系介紹

    一    Prototype、__proto__與Object、Function關(guān)系介紹

            Function、Object:Js自帶的函數(shù)對(duì)象。
            prototype,每一個(gè)函數(shù)對(duì)象都有一個(gè)顯示的prototype屬性,它代表了對(duì)象的原型(Function.prototype函數(shù)對(duì)象是個(gè)例外,沒(méi)有prototype屬性)。
            __proto__:每個(gè)對(duì)象都有一個(gè)名為_(kāi)_proto__的內(nèi)部隱藏屬性,指向于它所對(duì)應(yīng)的原型對(duì)象(chrome、firefox中名稱(chēng)為_(kāi)_proto__,并且可以被訪問(wèn)到)。原型鏈正是基于__proto__才得以形成(note:不是基于函數(shù)對(duì)象的屬性prototype)。
           關(guān)于上面提到的函數(shù)對(duì)象,我們來(lái)看以下例子,來(lái)說(shuō)明:
            var o1 = {};
            var o2 =new Object();
            
            function f1(){}
            var f2 = function(){}
            var f3 = new Function('str','console.log(str)');
        
            f3('aabb');   // aabb
            console.log('typeof Object:'+typeof Object);            //function
            console.log('typeof Function:'+typeof Function);        //function
            console.log('typeof o1:'+typeof o1);   //object
            console.log('typeof o2:'+typeof o2);   //object
            console.log('typeof f1:'+typeof f1);   //function
            console.log('typeof f2:'+typeof f2);   //function
            console.log('typeof f3:'+typeof f3);   //function
    • 通常我們認(rèn)為o1、o2是對(duì)象,即普通對(duì)象;f1、f2、f3為函數(shù)。
    • 但是其實(shí)函數(shù)也是對(duì)象,是由Function構(gòu)造的,
    • f3這種寫(xiě)法就跟對(duì)象的創(chuàng)建的寫(xiě)法一樣。f1、f2最終也都像f3一樣是有Function這個(gè)函數(shù)構(gòu)造出來(lái)的
    • f1、f2、f3為函數(shù)對(duì)象,F(xiàn)unction跟Object本身也是函數(shù)對(duì)象。
           Js中每個(gè)對(duì)象(null除外)都和另一個(gè)對(duì)象相關(guān)聯(lián),通過(guò)以下例子跟內(nèi)存效果圖來(lái)分析Function、Object、Prototype、__proto__對(duì)象間的關(guān)系。

        function Animal(){
            
        }
        var  anim = new Animal();
        
        console.log('***********Animal anim proto*****************');
        console.log('typeof Animal.prototype:' +typeof Animal.prototype);  //object 
        console.log('anim.__proto__===Animal.prototype:'+(anim.__proto__===Animal.prototype));  //true
        console.log('Animal.__proto__===Function.prototype:'+(Animal.__proto__===Function.prototype));  //true
        console.log('Animal.prototype.__proto__===Object.prototype:'+(Animal.prototype.__proto__===Object.prototype));  //true
        
        console.log('***********Function proto*****************');
        console.log('typeof Function.prototype:'+typeof Function.prototype);  //function
        console.log('typeof Function.__proto__:'+typeof Function.__proto__);  //function
        console.log('typeof Function.prototype.prototype:'+typeof Function.prototype.prototype); //undefined
        console.log('typeof Function.prototype.__proto__:'+typeof Function.prototype.__proto__);   //object
        console.log('Function.prototype===Function.__proto__:'+(Function.prototype===Function.__proto__)); //true

        console.log('***********Object proto*****************');
        console.log('typeof Object.prototype:'+typeof Object.prototype);  //object
        console.log('typeof Object.__proto__:'+typeof Object.__proto__);  //function
        console.log('Object.prototype.prototype:'+Object.prototype.prototype);  //undefied
        console.log('Object.prototype.__proto__===null:'+(Object.prototype.__proto__===null));  //null

        console.log('***********Function Object  proto關(guān)系*****************');
        console.log('Function.prototype===Object.__proto__:'+(Function.prototype===Object.__proto__));   //true
        console.log('Function.__proto__===Object.__proto__:'+(Function.__proto__===Object.__proto__));   //true
        console.log('Function.prototype.__proto__===Object.prototype:'+(Function.prototype.__proto__===Object.prototype));   //true

        /********************* 系統(tǒng)定義的對(duì)象Array、Date ****************************/
        console.log('**************test Array、Date****************');      
        var array = new Array();
        var date = new Date();
        console.log('array.__proto__===Array.prototype:'+(array.__proto__===Array.prototype));   //true
        console.log('Array.__proto__===Function.prototype:'+(Array.__proto__===Function.prototype));  //true
        console.log('date.__proto__===Date.prototype:'+(date.__proto__===Date.prototype));    //true
        console.log('Date.__proto__===Function.prototype:'+(Date.__proto__===Function.prototype));     //true

    Function、Object、Prototype、__proto__內(nèi)存關(guān)系圖


            上面的內(nèi)存圖跟堆棧結(jié)構(gòu)可以參照文章Javascript_01_理解內(nèi)存分配
            堆區(qū)圖說(shuō)明:
     
            Function.prototype函數(shù)對(duì)象圖內(nèi)部表示prototype屬性的紅色虛框,只是為了說(shuō)明這個(gè)屬性不存在。

            通過(guò)上圖Function、Object、Prototype關(guān)系圖中,可以得出一下幾點(diǎn):
    1. 所有對(duì)象所有對(duì)象,包括函數(shù)對(duì)象的原型鏈最終都指向了Object.prototype,而Object.prototype.__proto__===null,原型鏈至此結(jié)束。
    2. Animal.prototype是一個(gè)普通對(duì)象。
    3. Object是一個(gè)函數(shù)對(duì)象,也是Function構(gòu)造的,Object.prototype是一個(gè)普通對(duì)象。
    4. Object.prototype.__type__指向null。
    5. Function.prototype是一個(gè)函數(shù)對(duì)象,前面說(shuō)函數(shù)對(duì)象都有一個(gè)顯示的prototype屬性,但是Function.prototype卻沒(méi)有prototype屬性,即Function.prototype.prototype===undefined,所有Function.prototype函數(shù)對(duì)象是一個(gè)特例,沒(méi)有prototype屬性。
    6. Object雖是Function構(gòu)造的一個(gè)函數(shù)對(duì)象,但是Object.prototype沒(méi)有指向Function.prototype,即Object.prototype!==Function.prototype。

    二    Prototype跟Constructor關(guān)系
    介紹
             在 JavaScript 中,每個(gè)函數(shù)對(duì)象都有名為“prototype”的屬性(上面提到過(guò)Function.prototype函數(shù)對(duì)象是個(gè)例外,沒(méi)有prototype屬性),用于引用原型對(duì)象。此原型對(duì)象又有名為“constructor”的屬性,它反過(guò)來(lái)引用函數(shù)本身。這是一種循環(huán)引用(i.e. Animal.prototype.constructor===Animal)。
            通過(guò)以下例子跟內(nèi)存效果圖來(lái)分析Prototype、constructor間的關(guān)系。
        console.log('**************constructor****************'); 

        console.log('anim.constructor===Animal:'+(anim.constructor===Animal))    ;    //true
        console.log('Animal===Animal.prototype.constructor:'+(Animal===Animal.prototype.constructor))    ;    //true
        console.log('Animal.constructor===Function.prototype.constructor:'+(Animal.constructor===Function.prototype.constructor));   //true
        console.log('Function.prototype.constructor===Function:'+(Function.prototype.constructor===Function));    //true
        console.log('Function.constructor===Function.prototype.constructor:'+(Function.constructor===Function.prototype.constructor));    //true

        console.log('Object.prototype.constructor===Object:'+(Object.prototype.constructor===Object));    //true
        console.log('Object.constructor====Function:'+(Object.constructor===Function));    //true

     prototype、constructor內(nèi)存關(guān)系圖(在Function、Object、Prototype關(guān)系圖上加入constructor元素):


            上圖中,紅色箭頭表示函數(shù)對(duì)象的原型的constructor所指向的對(duì)象。
    1. 注意Object.constructor===Function;本身Object就是Function函數(shù)構(gòu)造出來(lái)的        
    2. 如何查找一個(gè)對(duì)象的constructor,就是在該對(duì)象的原型鏈上尋找碰到的第一個(gè)constructor屬性所指向的對(duì)象。
    參考:
    http://www.libuchao.com/2012/05/14/prototypes-in-javascript/ (JavaScript 的原型對(duì)象 Prototype)
    http://rockyuse.iteye.com/blog/1426510 (理解js中的原型鏈,prototype與__proto__的關(guān)系)



    posted @ 2013-10-20 23:47 heavensay 閱讀(32440) | 評(píng)論 (13)編輯 收藏

    主站蜘蛛池模板: 亚洲AV无码精品无码麻豆| 亚洲精品国产自在久久| 亚洲午夜无码久久久久软件| 无码不卡亚洲成?人片| 最近中文字幕2019高清免费| 亚洲一区二区三区国产精华液| 亚洲理论电影在线观看| 国产精品四虎在线观看免费| 日本免费网站视频www区| a成人毛片免费观看| 一级做a爰片性色毛片免费网站| 国产午夜亚洲精品国产| 亚洲综合在线成人一区| 亚洲视频免费在线观看| 亚洲AV无码成人精品区在线观看| 亚洲国产综合久久天堂| 亚洲精品国产精品国自产观看| 日韩在线a视频免费播放| 免费在线看v网址| 天天看免费高清影视| 永久免费AV无码网站在线观看| 最新中文字幕电影免费观看| 2019中文字幕在线电影免费| 日本zzzzwww大片免费| 狠狠久久永久免费观看| 免费一看一级毛片人| 亚洲伊人色欲综合网| 亚洲AV日韩AV永久无码下载| 亚洲白嫩在线观看| 日本系列1页亚洲系列| 色吊丝性永久免费看码 | 中文字幕无码精品亚洲资源网| 国产精品亚洲高清一区二区| 亚洲女久久久噜噜噜熟女| 亚洲成年人在线观看| 亚洲国产av玩弄放荡人妇| 久久久久久久久久久免费精品| 国产精品免费无遮挡无码永久视频 | 亚洲乱人伦精品图片| 一级做a免费视频观看网站| 精品免费人成视频app|