隨筆 - 32, 文章 - 1, 評論 - 5, 引用 - 0
          數據加載中……

          2011年5月18日

          利用反射打印測試JavaBean

          /**
            * 測試方法
            *
            * @param obj
            * @return
            */
           public static StringBuffer testPOJO(Object obj) {
            Class cls = obj.getClass();
            Field[] fields = cls.getDeclaredFields();
            StringBuffer resultBuf = new StringBuffer();
            try {
             for (int i = 0; i < fields.length; i++) {
              String fieldName = fields[i].getName();
              Class fieldType = fields[i].getType();
              Method method;
              if (fieldType.equals(boolean.class)) {
               method = cls.getMethod("is" + genMethodName(fieldName));
              } else {
               method = cls.getMethod("get" + genMethodName(fieldName));
              }
              Object res;
              if ((res = method.invoke(obj)) != null) {
               String result = res.toString();
               resultBuf.append("[" + fieldName + "] = " + result + "\n");
              } else {
               resultBuf.append("[" + fieldName + "] = NULL \n");
              }
             }
            } catch (Exception e) {
             e.printStackTrace();
            }
            return resultBuf;
           }
           
           public static String genMethodName(String fieldName) {
            String firstWord = fieldName.substring(0, 1);
            String others = fieldName.substring(1, fieldName.length());
            return firstWord.toUpperCase() + others;
           }

          posted @ 2011-10-12 16:34 colorfire 閱讀(396) | 評論 (0)編輯 收藏

          轉 淘寶2011.9.21校園招聘會筆試題

          原鏈接 http://blog.csdn.net/hackbuteer1/article/details/6823329

          一、單選題
          1、我們有很多瓶無色的液體,其中有一瓶是毒藥,其它都是蒸餾水,實驗的小白鼠喝了以后會在5分鐘后死亡,而喝到蒸餾水的小白鼠則一切正常。現在有5只小白鼠,請問一下,我們用這五只小白鼠,5分鐘的時間,能夠檢測多少瓶液體的成分(C)
          A、5瓶                     B、6瓶                           C、31瓶                               D、32瓶

          2、若某鏈表最常用的操作是在最后一個結點之后插入一個結點和刪除最后一個結點,則采用()存儲方式最節省時間?
          A、單鏈表                   B、帶頭結點的非循環雙鏈表                       C、帶頭節點的雙循環鏈表                D、循環鏈表

          3、如果需要對磁盤上的1000W條記錄構建索引,你認為下面哪種數據結構來存儲索引最合適?()
          A、Hash Table                      B、AVL-Tree                      C、B-Tree                 D、List

          4、可用來檢測一個web服務器是否正常工作的命令是()

          A、ping                      B、tracert                          C、telnet                           D、ftp

          只有C可以測試Web主機的網頁服務器是否工作正常,假設該服務器的網頁服務器使用的是默認端口,則可以使用命令telnet hostname 80 來測試其是否工作。

          5、下面哪個操作是Windows獨有的I/O技術()
          A、Select                           B、Poll                               C、IOCP                               D、Epoll

          6、IPV6地址包含了()位
          A、16                               B、32                                C、64                              D、128

          7、數據庫里建索引常用的數據結構是()
          A、鏈表                         B、隊列                       C、樹                             D、哈希表

          8、在公司局域網上ping www.taobao.com沒有涉及到的網絡協議是()

          A、ARP                          B、DNS                               C、TCP                         D、ICMP

          DNS是將域名www.taobao.com映射成主機的IP地址,ARP是將IP地址映射成物理地址,ICMP是報文控制協議,由路由器發送給執行ping命令的主機,而一個ping命令并不會建立一條TCP連接,故沒有涉及TCP協議。

          二、填空題
          1、http屬于(應用層)協議,ICMP屬于(網絡層)協議。
          2、深度為k的完全二叉樹至少有(2^(k-1))個結點,至多有(2^k-1)個結點。
          3、字節為6位的二進制有符號整數,其最小值是(-32)。

          4、設有28盞燈,擬公用一個電源,則至少需有4插頭的接線板數(9)個。

          第一個板4個口,此后每增加1個板會消耗1個原來的口,總的只增加3個口,故N個接線板能提供 1+3*N個電源口

          三、綜合題
          1、有一顆結構如下的樹,對其做鏡像反轉后如下,請寫出能實現該功能的代碼。注意:請勿對該樹做任何假設,它不一定是平衡樹,也不一定有序。
            1 1
            / | \ / | \
            2 3 4 4 3 2
            /|\ /\ | | / \ / | \
            6 5 7 8 9 10 10 9 8 7 5 6

            答:以孩子、兄弟的存儲結構來存儲這棵樹,使之成為一顆二叉樹,然后對二叉樹進行鏈表的轉換。

           

          1. typedef struct TreeNode  
          2. {  
          3.     int data;  
          4.     struct TreeNode *firstchild;  
          5.     struct TreeNode *nextsibling;  
          6. }TreeNode,*Tree;  
          7.   
          8. void MirrorTree(Tree root)  
          9. {  
          10.     if(!root)  
          11.         return ;  
          12.     if(root->firstchild)  
          13.     {  
          14.         Tree p=root->firstchild;  
          15.         Tree cur=p->nextsibling;  
          16.         p->nextsibling=NULL;  
          17.         while(cur)  
          18.         {  
          19.             Tree curnext=cur->nextsibling;  
          20.             cur->nextsibling=p;  
          21.             if(p->firstchild)  
          22.                 MirrorTree(p);  
          23.             p=cur;  
          24.             cur=curnext;  
          25.         }  
          26.         root->firstchild=p;  
          27.     }  
          28. }  
          29.   
          30. int main(void)  
          31. {  
          32.     TreeNode *root=(TreeNode *)malloc(sizeof(TreeNode));  
          33.     Init();  
          34.     MirrorTree(root);  
          35.     OutPut();  
          36. }  
          2、假設某個網站每天有超過10億次的頁面訪問量,出于安全考慮,網站會記錄訪問客戶端訪問的ip地址和對應的時間,如果現在已經記錄了1000億條數據,想統計一個指定時間段內的區域ip地址訪問量,那么這些數據應該按照何種方式來組織,才能盡快滿足上面的統計需求呢,設計完方案后,并指出該方案的優缺點,比如在什么情況下,可能會非常慢?

           

          答:用B+樹來組織,非葉子節點存儲(某個時間點,頁面訪問量),葉子節點是訪問的IP地址。這個方案的優點是查詢某個時間段內的IP訪問量很快,但是要統計某個IP的訪問次數或是上次訪問時間就不得不遍歷整個樹的葉子節點。答:

          或者可以建立二級索引,分別是時間和地點來建立索引。

          四、附加題
          1、寫出C語言的地址對齊宏ALIGN(PALGNBYTES),其中P是要對齊的地址,ALIGNBYTES是要對齊的字節數(2的N次方),比如說:ALIGN(13,16)=16
          1. ALIGN(P,ALIGNBYTES) ( (void*)( ((unsigned long)P+ALIGNBYTES-1)&~(ALIGNBYTES-1) ) )  
          2、在高性能服務器的代碼中經常會看到類似這樣的代碼:
          typedef union
          {
            erts_smp_rwmtx_t rwmtx;
            byte cache_line_align_[ERTS_ALC_CACHE_LINE_ALIGN_SIZE(sizeof(erts_smp_rwmtx_t))];
          }erts_meta_main_tab_lock_t;

          erts_meta_main_tab_lock_t main_tab_lock[16];

          請問其中用來填充的cache_line_align的作用是?

          3、在現代web服務系統的設計中,為了減輕源站的壓力,通常采用分布式緩存技術,其原理如下圖所示,前端的分配器將針對不同內容的用戶請求分配給不同的緩存服務器向用戶提供服務。
            分配器
            / | \
            緩存 緩存 ...緩存
            服務器1 服務器2 ...服務器n

          1)請問如何設置分配策略,可以保證充分利用每個緩存服務器的存儲空間(每個內容只在一個緩存服務器有副本)

          2)當部分緩存服務器故障,或是因為系統擴容,導致緩存服務器的數量動態減少或增加時,你的分配策略是否可以保證較小的緩存文件重分配的開銷,如果不能,如何改進?

          3)當各個緩存服務器的存儲空間存在差異時(如有4個緩存服務器,存儲空間比為4:9:15:7),如何改進你的策略,按照如上的比例將內容調度到緩存服務器?

          posted @ 2011-10-10 10:19 colorfire 閱讀(314) | 評論 (0)編輯 收藏

          safari 地址欄中url兩遍

          環境:mac os 10.6.6,safari 5.0.5

          現象:
          在地址欄中輸入url提交后,地址欄中地址竟然又被復制一次。 e.g 輸入http://www.baidu.com/回車提交變為http://www.baidu.comwww.baidu.com,而以數字結尾的例如http://sparklet.net/?p=207則訪問正常。

          問題解決:
          該問題實際是由于代理導致,之前使用web代理上網,后來web服務器我給關掉了,但代理忘記改回來,結果導致這種奇怪現象。不知道是不是safari的bug。
          總結:blogjava的文檔輸入太難用了,分類也不方便。

          posted @ 2011-05-18 22:36 colorfire 閱讀(282) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 武穴市| 高要市| 和田县| 台山市| 开封县| 南安市| 彩票| 惠水县| 盘山县| 疏附县| 淳安县| 桂平市| 安宁市| 嘉义县| 河曲县| 漳平市| 盐城市| 临朐县| 龙游县| 泰州市| 新乡县| 汝州市| 左权县| 关岭| 石门县| 巴林左旗| 太仓市| 麟游县| 海安县| 丰台区| 甘洛县| 含山县| 会泽县| 肃宁县| 绥江县| 夏河县| 方正县| 大邑县| 五峰| 兴和县| 庆云县|