<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ù)加載中……

    2012年11月27日

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

        正好2016年的春假結(jié)束了,趁這個(gè)時(shí)間總結(jié)一下前面兩年的工作情況。
        2014年之前一直做的是java后臺(tái)開(kāi)發(fā),工作的內(nèi)容整體感覺(jué)是不難的,平常也都有自我學(xué)習(xí)源碼、框架之類的。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ī)。我們部門是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ò)幾次銷售讓出差說(shuō)是給客戶技術(shù)解答,最后發(fā)現(xiàn)一句話都不用說(shuō);后面出差的時(shí)候我都會(huì)再三確認(rèn)出差的具體事由。總體來(lái)說(shuō)去外面出差還是挺不錯(cuò)的,跟客戶了解項(xiàng)目需求、技術(shù)解答等也是挺有意思、挺鍛煉人的,如有時(shí)間多,還可以順便在當(dāng)?shù)赝嫱妗?br />     兩年下來(lái),可惜的是對(duì)于android的了解,只是個(gè)皮毛。2014兼顧開(kāi)發(fā)和管理,對(duì)于andorid技術(shù)的專研不深也就算了;2015年其實(shí)有很多時(shí)間可以加深android的了解,可惜由于種種原因都沒(méi)能花時(shí)間進(jìn)去。這兩年的收獲也是不小,由一個(gè)純粹的開(kāi)發(fā),到項(xiàng)目管理、團(tuán)隊(duì)管理的職責(zé)轉(zhuǎn)變,也使自己的眼界開(kāi)闊了不少;對(duì)于熱門的移動(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和$變量給用戶使用。
    (function( window, undefined ) {

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

            2、 jQuery功能擴(kuò)展函數(shù)Extend
    jQuery.extend = jQuery.fn.extend = function() {
        
    }
            jQuery提供了2個(gè)供用戶擴(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中名稱為_(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這種寫法就跟對(duì)象的創(chuàng)建的寫法一樣。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)編輯 收藏

    JMX分析3-MXBean及OpenMBean

         摘要:        MXBean跟標(biāo)準(zhǔn)MBean很像,標(biāo)準(zhǔn)MBean需要實(shí)現(xiàn)XXXXMBean這樣命名的接口,而MXBean則需要實(shí)現(xiàn)XXXXMXBean這樣命名的接口,也可以在接口上使用注解@MXBean,而不用強(qiáng)制使用XXXMXBean這樣的命名格式。但是MXBean有點(diǎn)在于它可以供任何的client,包括remote client訪問(wèn)相關(guān)屬性和執(zhí)行相關(guān)操作。...  閱讀全文

    posted @ 2012-11-27 00:39 heavensay 閱讀(3781) | 評(píng)論 (0)編輯 收藏

    主站蜘蛛池模板: 四虎影视永久免费观看| 亚洲精品国产免费| 亚在线观看免费视频入口| 亚洲第一香蕉视频| 国产91在线免费| 久久国产色AV免费看| 亚洲久热无码av中文字幕| 亚洲热妇无码AV在线播放| 精品久久久久成人码免费动漫| 日韩大片免费观看视频播放 | 一区二区无码免费视频网站| 疯狂做受xxxx高潮视频免费| 久久综合九九亚洲一区| 妞干网在线免费观看| 最近2019中文免费字幕在线观看 | 成人无码视频97免费| 国产成人精品日本亚洲专区6| 亚洲爽爽一区二区三区| 成年免费大片黄在线观看岛国| 一级一看免费完整版毛片| 波多野结衣亚洲一级| 亚洲日韩小电影在线观看| 四虎免费在线观看| 最近中文字幕大全中文字幕免费| 羞羞视频在线免费观看| 91亚洲性爱在线视频| 亚洲人成人77777网站| 免费国产a国产片高清网站| 黄瓜视频影院在线观看免费| 99久久免费国产特黄| 特级毛片A级毛片免费播放| 亚洲二区在线视频| 亚洲av日韩av激情亚洲| 亚洲午夜爱爱香蕉片| 午夜寂寞在线一级观看免费| 久久国产免费观看精品3| 免费在线看黄网站| 一级毛片大全免费播放下载| 精品亚洲福利一区二区| 亚洲性色精品一区二区在线| 亚洲成a人片毛片在线|