石建 | Fat Mind


          現象與思路 :

          1.業務變化快,導致需要不斷溝通 ?
              a、開始1、2功能一起,后來拆分開,先上1;再到1功能,各團隊不一致上線  (答:難解,要更有產品意識,幫助產品進行分析)
          2.開發:
              a、原代碼不優雅,總有想重構的沖動 (答:想是白想,一定要有結果)
              b、相互等待,接口定義不明確,如:接口jar無法提供,注釋不明確  (答:時間點&白紙黑字,先溝通再找主管)
              c、聯調準備不充分,如:hsf 因為IP發布失敗,主站頁面配置被修改 (答:前提明確要求,不能有邏輯問題)
          3.上線
              a、涉及面太廣,信息溝通丟失,如:只是暫停審核,演繹成 '停止所有crm操作'  (答:一定要直接周知到所有相關人)
              b、風險點評估的不全面,未全盤考慮,如:simbacall->bp參數對象不一致,是否會導致失敗未聯調 (答:不要遺漏或輕視任何風險點)


          2011.11.18 晚 19:30
          posted @ 2011-11-18 19:39 石建 | Fat Mind 閱讀(178) | 評論 (0)編輯 收藏

          Annotation

           

          題記:建議關于spring問題,請記得查看spring reference。

           

          一、annotation前生后世

          Annotations do not directly affect program semantics, but they do affect the way programs are treated by tools and libraries, which can in turn affect the semantics of the running program. Annotations can be read from source files, class files, or reflectively at run time.

          譯:annotation不會直接影響程序的語義,xxx。Annotation可以從源文件、class文件、通過反射在運行時讀取。

           

          參考:http://www.developer.com/print.php/3556176

          1.       定義

          Annotation type declarations are similar to normal interface declarations. An at-sign (@) precedes the interface keyword. Each method declaration defines an element of the annotation type. Method declarations must not have any parameters or a throws clause. Return types are restricted to primitives, StringClassenums, annotations, and arrays of the preceding types. Methods can have default values.

          Annotation聲明與普通的interface非常相似,在關鍵字interface前加@。每一個方法的聲明定義一個annotation的元素。方法不能有任何的參數或throws異常。返回類型被限制為:原始類型、String、Classenum、annotation、前面描述的類型組成的數組。method定義允許有默認值。

           

          2.       Java annotation

          There are two types of annotations available with JDK5:

          1) Simple annotations: These are the basic types supplied with Tiger, which you can use to annotate your code only; you cannot use those to create a custom annotation type.

          三個基本的annotation,如:Override、DeprecatedSuppresswarnings,不能使用它去定義新的annotation。

          2) Meta annotations: These are the annotation types designed for annotating annotation-type declarations. Simply speaking, these are called the annotations-of-annotations.

          annotation,定義annotation的類型。如:Target、Retention、DocumentedInherited。

          A.      Target:聲明annotation注解的目標類型。如@Target(ElementType.TYPE)、@Target(ElementType.METHOD)

          B.      Retention:聲明annotation被保留的長度。如:RetentionPolicy.SOURCE、RetentionPolicy.CLASSRetentionPolicy.RUNTIME

          C.      Documented:聲明被注解的target生成doc是否需要顯示annotation信息。

          D.      Inheritedxxx

           

          3.       annotation作用

          a. 不影響程序原本語義的情況下,增加信息+工具=聲明式編程。如:spring aop

          b. 編譯檢查 ?

           

           

          二、利用annotation實現aop

          1. 思路

          A.自定義注解定義規則(何時執行)

          B.標記行為(執行什么)

          C.通過反射生成代理,在對象執行任何方法時,進行攔截判斷是否符合規則;若符合,執行對應的行為。

          2. 例子

          場景:一個表演家,表演節目后,觀眾拍手鼓掌

          原始:表演家擁有所有觀眾的引用,在自己表演完后,通知觀眾鼓掌

          問題:表演家應該關注表演自身的事情,有哪些觀眾、觀眾是否鼓掌,不是其所關注的

          改進:AOP方式,表演家僅關注表演,觀眾鼓掌由其它人負責

          總結:

          面向切面編程 (AOP) 提供從另一個角度來考慮程序結構以完善面向對象編程(OOP)。 面向對象將應用程序分解成各個層次的對象,而AOP將程序分解成各個切面或者說關注點。這使得可以模塊化諸如事務管理等這些橫切多個對象的關注點。

           

          三、spring aop如何使用annotation

          1. 基本方式,通過ProxyFactoryBean

          a.通知

          b.切入點

          b.通知+切入點 à 切面

          c.實際對象+接口+切面 à 接口代理()

          2. 自動代理方式:

          基本方式的問題是,xml配置文件繁瑣。

          1)基于spring上下文的通知者Bean的自動代理(利用PostBeanProcessor ?)

          BeanNameAutoProxyCreator,有屬性:beanNames(被代理對象)、interceptorNames(通知)。自動代理beanNames指定的bean,此時interceptorNames指定通知,但interceptor需要實現特定的接口,如:MethodBeforeAdvice

          2) 基于aspectJ注解驅動

          使用aspectJ風格的注解。原理:生成代理,僅方法級別。使用AspectJ 提供的一個庫來做切點(pointcut)解析和匹配。

          4.       <aop:config>,優點:任何類都能轉化為切面,不需要特殊接口或注解,原始pojo對象

          5.       aop參數傳遞,見:spring reference 6.3.3.6 通知參數

          a. around切點,必須傳遞ProceedingJoinPoint參數,通過ProceedingJoinPoint取得方法的所有信息。

          b. 其它切點,利用JoinPoint取得方法的所有參數。

          c. 通過參數名綁定傳遞參數,未理解

           

           

          四、annotation相關技術

          1. cglib

          它的原理就是用Enhancer生成一個原有類的子類,并且設置好callbackproxy, 則原有類的每個方法調用都會轉為調用實現了MethodInterceptor接口的proxyintercept() 函數。

          2.  asm

          ASM is an all purpose Java bytecode manipulation and analysis framework. It can be used to modify existing classes or dynamically generate classes, directly in binary form. Provided common transformations and analysis algorithms allow to easily assemble custom complex transformations and code analysis tools.

          ASM offer similar functionality as other bytecode frameworks, but it is focused on simplicity of use and performance. 

          簡單理解asm是比cglib更高級的code generate lib。

           

          五、others問題

          1. Generics 

          Generics - This long-awaited enhancement to the type system allows a type or method to operate on objects of various types while providing compile-time type safety. It adds compile-time type safety to the Collections Framework and eliminates the drudgery of casting. See theGenerics Tutorial. (JSR 14)

          泛型提供了編譯時類型檢查安全。這點很重要嗎

           

          2. 為什么spring aop aspectJ anonotationpointcut聲明,必須注解在方法上 ?通過方法唯一標識一個pointcut

          猜測:@PointcutTarget屬性指定僅為method。方法簽名成為pointcutid。

            

           

          posted @ 2011-06-25 20:09 石建 | Fat Mind 閱讀(339) | 評論 (0)編輯 收藏
          參照:http://www.quora.com/What-are-some-interesting-and-innovative-startups-in-China

          2011年的中國互聯網還有什新奇的事發生嗎 ?

          1.團購:美團、拉手等(燒錢階段,搶用戶、流量,用戶體驗必須提升,如:退款等服務;預測:再有1年時間,團購巨頭就會形成)
          2.在線租書 : booksfly(有創意,但目前的運營方式很難有大的成長)
          3.圖片搜索 : taotaosou (有創意和前途,目前:用戶體驗差、效果差)

          4.微?。盒吕?、騰訊(蒸蒸日上,新浪占據主導地位)
          5.垂直化社交網站:Mtime、果殼(新方向,垂直化的社交會去慢慢蠶食)
          6.rss服務:鮮果(無自己特點)

          7.網頁游戲 : 忍者村、三國殺(賺錢的行業,但游戲生命周期短的特點值得考慮)
          8.在線音樂 : 豆瓣電臺、酷狗(推崇豆瓣的簡約,做到了極致)

          9.在線存儲 : 微盤、DBBank

          10.手機應用:豌豆莢、VivaMe(閱讀器\傳媒)、街旁(lbs)
          11.UC樂園(UC社交平臺,盡管UCWeb是入口,有著先天優勢)



           PS:以下純屬個人YY,隨手記錄

          1.親子、育兒教育社區 + 電商,如何做 ?淘寶http://t.cn/blAkG 全是tms靜態頁面[囧] 專業親子網站排名 http://t.cn/SwZSXr


          posted @ 2011-04-16 13:08 石建 | Fat Mind 閱讀(202) | 評論 (0)編輯 收藏

          主要參考:構建高性能web站點


          一、網卡

          網卡使用一個特定的物理層數據鏈路層標準,例如以太網來實現通訊所需要的電路系統。這為一個完整的網絡協議棧提供了基礎,使得在同一局域網中的小型計算機組以及通過路由協議連接的廣域網,例如IP,都能夠進行通訊。

          1.       作用:

          a)         唯一的mac地址,定位機器(局域網/以太網mac尋址)

          b)        數據接收和發送。擁有物理緩存區。

                                   i.              接收:接收物理層數據,通過DMA方式訪問內存。

                                 ii.              發送:接收上層數據,分解為適當大小的數據包發送。

          轉載:

          數據的封裝與解封:發送時將上一層交下來的數據加上首部和尾部,成為以太網的幀。接收時將以太網的幀剝去首部和尾部,然后送交上一層。
          鏈路管理:主要是CSMA/CDCarrier Sense Multiple Access with Collision Detection ,帶沖突檢測的載波監聽多路訪問)協議的實現。
          編碼與譯碼:即曼徹斯特編碼與譯碼。

          2. 協議

          以太網Ethernet)是一種計算機局域網組網技術。

          ARP協議Address Resolution Protocol),或稱地址解析協議ARP協議的基本功能就是通過目標設備的IP地址,查詢目標設備的MAC地址。

          http://zh.wikipedia.org/zh/%E5%9C%B0%E5%9D%80%E8%A7%A3%E6%9E%90%E5%8D%8F%E8%AE%AE

          3. 傳輸速率

          網卡速率是指網卡每秒鐘接收或發送數據的能力,單位是Mbps(兆位/秒)。由于存在多種規范的以太網,所以網卡也存在多種傳輸速率,以適應它所兼容的以太網。目前網卡在標準以太網中速度為10Mbps,在快速以太網中速度為100Mbps,在千兆以太網中速度為1000Mbps等。

          主流的網卡主要有10Mbps網卡、100Mbps以太網卡、10Mbps/100Mbps自適應網卡、1000Mbps千兆以太網卡以及最新出現的萬兆網卡五種。對于一般家庭用戶選購10M或者10Mbps/100Mbps自適應網卡即可,對于企業用戶建議購買100Mbps以太網卡或者1000Mbps千兆以太網卡或者萬兆網卡。

          以太網卡和交換設備都支持多速率,設備之間通過自動協商設置最佳的連接速度和雙工方式。如果協商失敗,多速率設備就會探測另一方使用的速率但是默認為半雙工方式。10/100以太網端口支持10BASE-T100BASE-TX

          2.       特點

          a)         全雙工

          b)        傳輸速率

          c)        總線類型:PCI總線架構日益成為網卡的首選總線

          d)        MAC地址

          二、數據如何發送

          1.       將數據寫入用戶進程的內存地址空間,其實實際的開發過程只需對運行時變量賦值即可

          2.       應用程度調用系統函數,將數據從用戶態內存區復制到由內核維護的一段稱為內核緩沖區的內存地址空間。

          a)         內核緩存區大小有限,要發送的數據以隊列的形式進入

          b)        每次復制一定的數據大小,這個大小取決于網絡數據包的大小以及內核緩存區的承載能力

          3.       當數據寫入內核緩存區,內核會通知網卡控制器來讀取數據,cpu轉而處理其它任務

          a)         網卡將發送的數據從內核緩存區復制到網卡緩存區

          b)        數據的復制始終按照內部總線的寬度復制(如32位總線,每次復制32bit信息)

          4.       網卡發送數據到物理線路

          a)         需要對數據進行字節到位的轉換(即將數據按照位的順序發出)

          b)        網卡內部使用特定的物理裝置,來生成可以傳播的各種信息,如銅線,網卡會根據位信息“0/1的變化產生不同的電信號;光線,網卡會生成光信號。

          三、電磁波速度

                 不管是電信號,還是光信號,進入物理介質后,其傳輸速度僅依賴其傳播介質,銅線中電信號的傳輸速度大約2.3*108m/s,光纖中光信號的傳播速度大約是2.0*108m/s。光在真空中的傳播速度是3.0*108m/s,為什么光纖中的傳播速度要慢呢 ?因為光在光纖中的傳播利用全反射原理,所以傳播距離要大于光纖長度。

                 由此看見,不同的傳播介質中信號的傳播速度幾乎是常量。也就是說,不論數據發送裝置以多快的發送速度讓數據以信號的形式進入路線,在線路中信號的傳播速度幾乎可以認為是一樣快的。

                 光纖與銅線相比?光纖采用全反射原理,因此光信號衰減底,因此傳播距離遠。

          四、帶寬概念

                 從上面分析來看,數據的傳輸包括:發送端發送數據進入線路 + 線路傳輸,線路傳輸的速度在各種傳輸介質幾乎是相同的。

                 帶寬定義:每秒傳播bit數,bit/s。

                 這樣看,影響帶寬的因素僅為“發送端發送數據進入線路”,如何提升:a、提升發送速度 b、數據傳輸的并行度

          1.       發送速度

          數據發送裝置將二進制信號傳送至線路的能力。關鍵是,如果接收能力跟不上,發送能力不可能提高。原理:接收速度決定發送速度。

                 也就是“流控機制”,保證接收方能夠接收數據,不會丟失數據。如Tcp滑動窗口(滑動窗口協議的基本原理,任意時刻發送方、接收方都保持一個連續的允許發送、接收的幀的序號http://blog.csdn.net/yujun00/archive/2006/03/23/636495.aspx)。

          2.    并行度,等價于計算機總線的概念。比如:32位,任意同一時刻能傳輸32位數據。

          總結:顯然,網卡影響性能結果。

           

          posted @ 2011-04-04 00:17 石建 | Fat Mind 閱讀(346) | 評論 (0)編輯 收藏

          題記:在淘寶廣告技術部工作快1年,寫點自己對廣告的認識

          目前在淘寶主要存在這樣幾種形式廣告 CPT、CPCCPS

          1.CPT
          cost per time
          按時長計費。大部分屬于品牌廣告,主要著重于品牌形象的宣傳。比如:淘寶中屏滾動廣告,如“dell、九牧王。特點:a、價格非常貴 b、位置少。
          CPM
          Cost Per ThousandImpression)按千次展現次數計費。能夠為廣告主帶來穩定的廣告展現,但效果是未知數,具體要看投放的媒體,以及場景的相關性。能為有流量的站點帶來穩定的收入。

          2.CPC
          cost per click
          按點擊計費。如:google ads、淘寶直通車,都是根據詞的競價排名,決定展示那個廣告主的廣告。
          目前淘寶大部分收入來自于直通車。
          如:在淘寶,搜諾基亞 N73”,首先做搜索詞歸一化,匹配為與競價詞相關的詞,再根據競價詞去搜索。誰出價高,并根據用戶的信譽度等因素,決定出誰的廣告。
          站在長遠的發展,淘寶直通車的目的:1.增加淘寶收入 2.促進成交。如果僅僅是點擊最大化,增加淘寶的收入,但并沒有為賣家帶來成交,則賣家的出價必然會降低,對于雙方來說都是雙輸的局面。所以必須站在促進成交的前提下,通過直通車不斷提升淘寶自身的收入增加。

          3.CPS
          cost per Sales
          按成交計費。據說:某淘寶廣告去日本時在一家書店看到的營銷模式,回到淘寶后,決定做"淘寶客"。

          cps模式更加關注的是“長尾流量”,因為長尾publisher,流量質量一般來說不是很高,如果按照前面說到的3種方式計費,對廣告主來說是不公平的。但根據成交,分成給長尾publisher,既能保證廣告主的利益,也滿足廣告主營銷、推廣的目的。同時也能夠給publisher帶來收入。


          小思考:

              目前淘寶有
          8億商品,僅淘寶自身的廣告位置,完全不能滿足賣家推廣、營銷的目的。所以淘寶會去買外部廣告位(如優酷),或者與外部網站以“分成”的模式合作(google)。

              其實,淘寶也在建立自己的廣告聯盟,類似于“圈地運動”,去累積足夠多的流量、渠道,到時怎么玩,都是由自己決定。

          其實目前的淘寶廣告外投,對于客戶來說是不透明的,賣家不知道自己的廣告是否被外投,與淘寶站內的廣告相比,站外的廣告效果還是要差很多(會基于成交效果給予廣告主打折),準確的說“淘寶的廣告主是被外投”。

              其實,目前淘寶聯盟,對于廣告主與網站主自主選擇僅有CPT計費模式,當廣告位無廣告時淘寶聯盟會自動推送CPS模式廣告。CPC模式廣告,在淘寶聯盟目前的網站主管理模式下,無法推廣CPC廣告。原因是,目前網站主沒有明確的層級結構,對于CPC廣告,流量好壞決定最后的成交率,相比CPT模式CPC更加賺錢,大量流量差的投放CPC廣告,會導致cpc(單次點擊消耗)降低,肯定對淘寶廣告的收入會有非常大的影響。淘寶如果要開放CPC模式給外部網站主,必須有明確的層級結構、站內&站外競價區分。

              外投每天能為淘寶帶來大約300萬收入,但對于主動獲取廣告的publisher來說沒有智能匹配模式、沒有靈活的定制化界面、多樣的創意。當站內CPC趨于飽和時,如何開拓好外投,對于淘寶直通車則是必然的趨勢。而CPS自然去占據長尾流量,CPC如何占據主外部中型網站,則是至關重要的。


          posted @ 2011-03-20 20:01 石建 | Fat Mind 閱讀(509) | 評論 (0)編輯 收藏
               摘要:  一、Java數據類型   數據類型就是對內存位置的抽象表達 (很多編程語言都依賴于特定的計算機類型和對數據類型屬性的具體編譯實現,比如word和integer數據類型的大小等;Java通過JVM保證數據所占存儲空間的大小不會隨硬件的改變發生變化)。 1.   Primitive data type :A primiti...  閱讀全文
          posted @ 2010-12-18 16:52 石建 | Fat Mind 閱讀(291) | 評論 (0)編輯 收藏
          題記:很長都沒有學到這個時間啦,懷念大三。

          一、摘要

          1.       什么是“代理”

          2.       代理模式與適配器模式、裝飾者模式的區別,適用場景

          3.       手工代理

          4.       動態代理的原理

           

          二、什么是“代理”

                 如:一個CEO,會有一個助理,任何需要CEO處理的事情,都會經過助理過濾、整理后交給CEO。助理就是CEO的代理。

                 自己理解,代理就是為幫實際的執行者,做數據的過濾和控制,為實際執行者屏蔽掉外部其它因素的影響,專心去做應該做的事情。

           

          三、代理模式與適配器模式、裝飾者模式的區別,適用場景

          1、代理模式

          HeadFirst 定義:為另一個對象提供一個替身或占位符以控制對這個對象的訪問。


          如上圖,代理模式的結構。

          適用的場景,如:遠程訪問、訪問權限控制、日志記錄等。

          裝飾者模式,IO類圖結構如下:



          可以從OutputStream à FileOutputStream à BufferedOutputStream,功能依次增強,為對象增加更多的行為。

          自己理解:目的不一樣,代理是為控制對被代理對象的訪問;裝飾者,是對被裝飾者功能的增強,避免過度使用繼承實現不同的功能。

           

          適配器模式,其區別從類圖即可分辨出來,如下



          Client請求ExecuteClass,但ExecuteClass暴露的接口不符合client的要求,在雙方系統都不修改的情況下,利用適配器模式解決此問題。

          三、手工代理



          場景:根據id,獲取Item;代理檢查用戶的權限是否有權限查看Item,已經記錄log日志。具體代碼很容易實現。

          四、動態代理

          對上面的場景,如果使用動態代理,步驟:

          1. 根據interface,通過loader,生成Class對象

          Class clazz = Proxy.getProxyClass(ItemService.class.getClassLoader(), ItemService.class);

          2. 通過反射,獲取Class對象的Construct對象(注意:Construct對象需要的參數類型)

          Constructor c = clazz.getConstructor(InvocationHandler.class);

          3. 調用Construct對象 newInstance()生成實例對象

          proxy = (ItemService)c.newInstance(this); //thisInvocationHandler實例

           

          思考問題:實現原理是什么 ?



           

          對于上面場景,實際動態生成的代理的類圖。對代理的任何調用都會,super.handle.invoke(),用戶實現InvocationHandler,覆寫invoke方法,實現基于方法的控制。

          從類圖,也解釋了為什么只能實現“接口”的動態代理,因為代理本身需要繼承Proxy,如果實現“類”的代理,意味著要同時繼承兩個類,與Java不支持多繼承相違背。

          附代碼是從網上摘抄過來的,代理的源碼:

          import java.lang.reflect.InvocationHandler;
          import java.lang.reflect.Method;
          import java.lang.reflect.Proxy;
          import java.lang.reflect.UndeclaredThrowableException;
          public final class $Proxy0 extends Proxy implements Manager {
          private static Method m1;
          private static Method m0;
          private static Method m3;
          private static Method m2;

          static {
             
          try {
              m1 = Class.forName("java.lang.Object").getMethod("equals",
                
          new Class[] { Class.forName("java.lang.Object") });
              m0 = Class.forName("java.lang.Object").getMethod("hashCode",
                
          new Class[0]);
              m3 = Class.forName("com.ml.test.Manager").getMethod("modify",
                
          new Class[0]);
              m2 = Class.forName("java.lang.Object").getMethod("toString",
                
          new Class[0]);
             } catch (NoSuchMethodException nosuchmethodexception) {
              
          throw new NoSuchMethodError(nosuchmethodexception.getMessage());
             } catch (ClassNotFoundException classnotfoundexception) {
              
          throw new NoClassDefFoundError(classnotfoundexception.getMessage());
             }
          }

          public $Proxy0(InvocationHandler invocationhandler) {
             
          super(invocationhandler);
          }
          @Override
          public final boolean equals(Object obj) {
             
          try {
              
          return ((Boolean) super.h.invoke(this, m1, new Object[] { obj }))
                .booleanValue();
             } catch (Throwable throwable) {
              
          throw new UndeclaredThrowableException(throwable);
             }
          }
          @Override
          public final int hashCode() {
             
          try {
              
          return ((Integer) super.h.invoke(this, m0, null)).intValue();
             } catch (Throwable throwable) {
              
          throw new UndeclaredThrowableException(throwable);
             }
          }
          }


          posted @ 2010-12-12 02:24 石建 | Fat Mind 閱讀(241) | 評論 (0)編輯 收藏

          題記:一直對ThreadLocal疑惑,聽完facebook大牛演講后,總結點東西。

          一、ThreadLocal的作用,整體結構

          二、源代碼簡單分析
            1.set方法
            2.get方法

          三、使用場景實例 ibatis SqlMapClientImp

          后記:折騰半天,文章的樣式也調整不好,打包上傳。但愿能幫到別人。
          http://www.aygfsteel.com/Files/shijian/ThreadLocal.rar [請用“web版式視圖”閱讀]


          遺留問題:

                1.ThreadThreadLocalMap threadLocals 屬性什么時候實例化 線程實例化時嗎 ?
          答:第一次set時,會判斷是否為null,若為null,初始化。

          2.
          ThreadLocalMap replaceStaleEntry(key, value, i); 做了什么
          答:全清洗stale對象;存放當前對象在發現的第一個stale位置。因為Entry是繼承WeakRerfence,任何一次的垃圾收集,都會導致其引用的對象被回收。

          4.與Map方式的一些區別
          Map策略:a、相同hash&key,覆蓋value; b、相同hash,key不同,當前元素做為單向鏈的第一個元素,原來第一個元素做為當前元素的下一個。
          ThreadLocalMap策略:a相同,是不存在b情況;以ThreadLocal作為key,ThreadLocalthreadLocalHashCode由原子AtomicInteger計算getAndAdd(0x61c88647)得到;在Entry[]數組的位置,通過threadLocalHashCode & (length-1)計算;對于b情況,繼續查找Entry[]數組的下一個位置,是否可存放(key相同或null);當size>=threshold(len*2/3)做resize=oldLen*2. 


          3.
          ThreadLocalMap  getEntryAfterMiss(ThreadLocal key, int i, Entry e)
          答:作用,查找沒有存放在hash計算出index位置的元素。為什么出現此情況?見4,由ThreadLocalMap策略決定.

          posted @ 2010-12-11 18:50 石建 | Fat Mind 閱讀(332) | 評論 (0)編輯 收藏
            對自己、對環境題記:這樣的環境,我是很不滿意的,但是“有想法的人是不會被環境所束縛的,盡管不滿的環境會帶給他阻礙”

             2010年的最好一個月開始啦,很快這個月就會結束的,就像轉眼間來淘寶已經半年啦!之前,興奮的選擇廣告,覺得這是一個新鮮的從未接觸的事物,環境的確是這樣的;但自己團隊負責的業務,更多的是“重復的溝通和勞動”,技術在這樣的環境被淡化。其實根本的原因,在于"團隊的職責與自己的發展方向不匹配",這是讓自己很痛苦的事情。帶給自己的是煎熬!幸好有老婆可以說說,和安慰我;不然,或許我已經離開(當然現在也給自己的是一個期限,不會一直在這樣的環境待下去)。在2010年結束的時候,希望自己可以高興的對自己說,我成長啦!在這最后的一個月,讓我沖刺一下吧!

            想要的是:Jvm理知識補充、讀書(圍繞Jvm)、冷靜(我想要冷靜去平復內心的煎熬,用自己的行動去改善,去滿意的度過每天)

            后記:買個籃球,明天早上去打球,肚子越來越大啦,真的不能再胖啦



              隨手翻翻,10年寫的一點感想。前天師兄有天在討論,對一個公司、個人,什么到底是"技術" ?一致同意解決問題的能力,才是最關鍵。問題是"解決問題的能力,如何培養呢?"一致同意"最有效的方式,解決有挑戰性的問題"。問題是"日常工作中,挑戰性的問題,并不是隨時都有?"老毛說的好,"有條件上,沒有條件也要上",去深入理解團隊、系統定位,去規劃、去解決不合理的代碼、不要重復勞動 ...
             同時一個人的軟技能也是至關重要,擎天柱的培訓還是很有收獲,一定要嘗試去運用學到的理論知識到實際的環境中,如跨團隊配合。
             現在的心態是:先全心全意做好事情,再回頭看,
          對自己、對環境有不滿意的,去改變,改變不了則學會放棄。

          posted @ 2010-12-03 23:28 石建 | Fat Mind 閱讀(247) | 評論 (0)編輯 收藏
          題記:周五同學們討論這個問題,聽了很多"過來人"的感受,其實里面的道理還是要自己去慢慢揣摩,成為自己的東西,此會用幫助。

          回想自己的學習:

          自己最開始接觸計算機的時候,是高中;現在還清楚的記得,第一節課,老師告訴怎么開機、關機等,自己心里全是興奮和一些自卑。真正去學習計算機,還是大學專業的緣故(遺憾的是基礎知識不牢);第一次接觸編程是C,大一過年的時候,在家一個寒假都在看,感覺“這是一本天書”。
          剛開始,主要是看書和老師上課講,學的比較少;然后,自己去找資料,用baidu和論壇(csdn),嘗試去寫;慢慢有點自己的想法,去學習課外的知識(很感謝電驢,很多資料都來自于它),google和javaeye,看別人的博客;寫過一點小東西之后,嘗試著去理解背后的原理,去debug看源碼,學習新知識時首先看官方tutorial&運行小例子,關注行業動態和新技術(reader訂閱),會有意識去總結理解的內容,做事更加嚴謹和職業點 ... 這基本也是自己現在的狀態。

          討論時,記下認為對自己有幫助的點:

          1.學會使用,了解原理,與同類產品比較,提升認知的高度 
          注:了解原理(理解的深度不夠);與同類產品比較(尚未有這個意識)(重要性:高)

          2.點到面,融合,形成自己的知識體系
          注:這點,自己慢慢的有點意識(重要性:高

          3.信息爆炸,學會篩選;看過的東西要記筆記
          注:篩選(做的很不好,必須有選擇性的看,工具reader);記筆記(部分閱讀有筆記,認為重要的必須寫下自己的理解)(重要性:高)

          4.學習“相關性”知識
          注:比如工作負責廣告前段應用開發,有意識的去了解引擎和算法的相關內容(不要求細節,但是對整體必須有理解) (重要性:高)

          5.幫助別人、分享,其實是提升自己的一個好辦法
          注:在精力允許的情況下,一定要善于幫助別人解決問題(原因:自己遇到的問題始終是有限的,同時增強影響力)

          6.Java開發應該擴展的知識
          注:a、數學(算法)相關   b、如何自己去實現一個框架,必須有質疑的態度   c、運行環境(linux、jboss等知識)

          7.閱讀別人代碼,有新認識的時候去重構自己的代碼或嘗試去應用
          注:

          8.理論的總結
          注:在廣度、深度達到一定程度時,要注意理論的總結,站在更高的抽象層面去理解和解決問題


          提醒自己:this is most important  is to do it 




          posted @ 2010-11-20 23:34 石建 | Fat Mind 閱讀(187) | 評論 (0)編輯 收藏
          僅列出標題
          共4頁: 上一頁 1 2 3 4 下一頁 

          導航

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          What 、How、Why,從細節中尋找不斷的成長點
          主站蜘蛛池模板: 临朐县| 金塔县| 博白县| 宝应县| 栖霞市| 安龙县| 北宁市| 百色市| 玛多县| 永靖县| 靖安县| 德州市| 神农架林区| 松桃| 沙河市| 垦利县| 栖霞市| 阜阳市| 合肥市| 喀喇沁旗| 邮箱| 吴旗县| 海阳市| 平罗县| 聊城市| 嘉义县| 化州市| 林甸县| 永兴县| 海林市| 县级市| 山西省| 井冈山市| 甘孜县| 房山区| 临西县| 如皋市| 九江市| 双鸭山市| 连江县| 大田县|