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

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

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

    于吉吉的技術博客

    建造高性能門戶網

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      65 隨筆 :: 6 文章 :: 149 評論 :: 0 Trackbacks

    #

         摘要: 一直以來似乎都有一個錯覺,認為map跟其他的集合類一樣繼承自Collection,其實不然,Map和Collection在結構層次上是沒有任何關系的,通過查看源碼可以發(fā)現map所有操作都是基于key-value對,而不是單獨的元素。

    下面以HashMap為例子,深入對Map的實現機制進行了解,在這個過程中,請打開jdk源碼。

    Hash算法

    HashMap使用Hash算法,所以在解剖HashMap之間,需要先簡單的了解Hash算法,Hash算法一般也成為散列算法,通過散列算法將任意的值轉化成固定的長度輸出,該輸出就是散列值,這是一種壓縮映射,也就是,散列值的空間遠遠小于輸入的值空間。
    簡單的說,hash算法的意義在于提供了一種快速存取數據的方法,它用一種算法建立鍵值與真實值之間的對應關系,(每一個真實值只能有一個鍵值,但是一個鍵值可以對應多個真實值),這樣可以快速在數組等里面存取數據。

    下面我們建立一個HashMap,然后往里面放入12對key-value,這個HashMap的默認數組長度為16,我們的key  閱讀全文
    posted @ 2011-02-15 19:18 陳于喆 閱讀(10174) | 評論 (6)編輯 收藏

         摘要: 以前的房產地圖一直都是使用有道地圖,雖然有道地圖是很好,但是為了更好,還是決定使用google地圖來重新開發(fā)^_^,下面是一個開發(fā)完畢的簡單應用http://xf.house.163.com/gz/map/000B.html

    1)整合Google Maps JavaScript API V3 與 Google Local Search API

    Google Maps JavaScript API V3
    地址 http://code.google.com/intl/zh-CN/apis/maps/documentation/javascript/

    Google Maps JavaScript API V3 文檔讀起來真的是很清晰,各種demo也很齊全,并且論壇的擁有巨大的論壇支持,對比了一下Google Maps JavaScript API V3 和 V2 的版本,雖然第3版的 Google Maps API 看上去跟第2版挺相識,但在內在機制上有了較大的變化,尤其在對移動瀏覽器的支持上,專門針對iphone和android  閱讀全文
    posted @ 2011-02-12 15:57 陳于喆 閱讀(4964) | 評論 (6)編輯 收藏

         摘要: 對于進程管理工具平時大多用的是ps,kill,top,sleep等等這些命令,平時linux的一些指令我都會做一些記錄,本著好記性不如爛博客的精神,也把進程管理的命令做一點系統(tǒng)性的記錄,參考資料基本是鳥哥還有網上的一些文章。

    ps
    ps命令主要是查看系統(tǒng)進程的狀態(tài),平時最常用的命令是ps aux,然后再使用管道導向到grep查找特定的進程,然后進此特定進程進行操作。
    要對進程進行操作必須先了解到當前進程的情況,ps命令體現了現實當前運行進程的快照,ps和top和相似,但ps提供了更多的信息,可以確定哪些進程正在運行,哪些進程被掛起,運行了多長時間,以及進行使用的資源和進程的優(yōu)先級,這些信息對我們都有很重要的作用,當我們使用ps aux可以獲得終端所有用戶的有關進程信息。  閱讀全文
    posted @ 2011-01-21 17:56 陳于喆 閱讀(1100) | 評論 (0)編輯 收藏

    posted @ 2011-01-21 12:34 陳于喆 閱讀(595) | 評論 (0)編輯 收藏

         摘要: 問題是這樣的,有個腳本需要10秒鐘執(zhí)行一次,腳本具體功能就不細說,定時任務自然選用crontab,但是crontab最小的執(zhí)行時間為分鐘,最后決定選用死循環(huán)進行實現。

    腳本
    vi hello.sh
    #!/bin/sh
    while :
    do
    echo `date` >> /home/chenyz/1 //這里是任務的實現
    sleep 10
    done

    這里的程序運行時間間隔是10s,小心咯,如果沒有加sleep 10,你的機器很快就會耗盡資源,負載會狂飆。

    接著需要把腳本用后臺守護進程來運行,避免用戶退出而導致腳本失效  閱讀全文
    posted @ 2011-01-19 17:47 陳于喆 閱讀(2554) | 評論 (0)編輯 收藏

         摘要: 對于用戶管理工具平時大多用的是groupadd,useradd,usermod等等這些命令,平時linux的一些指令我都會做一些記錄,本著好記性不如爛博客的精神,也把用戶管理的命令做一點系統(tǒng)性的記錄,參考資料基本是鳥哥還有網上的一些文章。

    用戶組的管理
    linux可以對一個用戶組中的所有用戶進行集中的管理,用戶組的管理包括用戶組添加,刪除修改,實際上這些操作就是對/etc/group文件作出修改。

    groupadd 新增一個用戶組
    groupadd [-g gid [-o]] [-r] [-f] group
    -g 其中gid是指定新用戶組的標識號,除非配合使用-o參數,不然該值必須是唯一的
    -o 標識新用戶組gid可以和系統(tǒng)中原有的用戶組的gid值相同
    實例:
    groupadd chenyuzhe1
    groupadd -g 789 chenyuzhe2

    groupdel 刪除用戶組
    實例:
    groupdel chenyuzhe1  閱讀全文
    posted @ 2011-01-19 15:36 陳于喆 閱讀(1459) | 評論 (0)編輯 收藏

         摘要: 對于磁盤管理工具平時大多用的是df,du這些命令,平時linux的一些指令我都會做一些記錄,本著好記性不如爛博客的精神,先把磁盤管理的命令做一點系統(tǒng)性的記錄。

    du
    du的英文為:disk usage,含義是磁盤空間使用情況,功能是逐級進入指定目錄的每一個子目錄并顯示該目錄占用文件系統(tǒng)數據塊的情況,如果沒有指定目錄,則對當前的目錄進行統(tǒng)計。
    du的命令各個選項含義如下:

    a:顯示全部目錄和其次目錄下的每個檔案所占的磁盤空間
    s:只顯示各檔案大小的總合
    b:大小用bytes來表示
    x:跳過在不同文件系統(tǒng)上的目錄不予統(tǒng)計
    a:遞歸地顯示指定目錄中各文件及子孫目錄中各文件占用的數據塊數  閱讀全文
    posted @ 2011-01-19 13:08 陳于喆 閱讀(510) | 評論 (0)編輯 收藏

         摘要: List在數據結構中表現為是線性表的方式,其元素以線性方式存儲,集合中允許存放重復的對象,List接口主要的實現類有
    ArrayList
    ArrayList 其實就是一組長度可變的數組,當實例化了一個ArrayList,該數據也被實例化了,當向集合中添加對象時,數組的大小也隨著改變,這樣它所帶來的有優(yōu)點是快速的隨機訪問,即使訪問每個元素所帶來的性能問題也是很小的,但缺點就是想其中添加或刪除對象速度慢,當你創(chuàng)建的數組是不確定其容量,所以當我們改變這個數組時就必須在內存中做很多的處理,如你想要數組中任意兩個元素中間添加對象,那么在內存中數組要移動所有后面的對象。

    LinkedList
    LinkedList 是通過節(jié)點的連接實現鏈表的數據結構,向linkedList中插入或刪除元素的速度是特別快,而隨機訪問的速度相對較慢,這個是由于鏈表本身的性質造成的,在鏈表中,每個節(jié)點都包含了前一個節(jié)點的引用,后一個節(jié)點的引用和節(jié)點存儲值,當一個新節(jié)點插入式,只需要修改其中相關的前后關系節(jié)點引用即可,刪除節(jié)點也是一樣。操作對象只需要改變節(jié)點的鏈接,新節(jié)點可以存放在  閱讀全文
    posted @ 2011-01-16 17:36 陳于喆 閱讀(11409) | 評論 (1)編輯 收藏

         摘要: 我們都知道Set是一種最簡單的集合,對象的排序無特定的規(guī)則,集合里面存放的是對象的引用,所以沒有重復的對象,在上面的代碼中,程序創(chuàng)建了a、b、 c、d、e五個變量,其中a和c,b和e所引用的字符串是一致的,然后向set添加了這5個變量。打印出來的size()只有3個,實際上向集合加入的只有3個對象,在執(zhí)行Set的add()方法時已經進行了判斷這個對象是否存在于集合,如果對象已經存在則不繼續(xù)執(zhí)行。
    Set的接口有兩個實現類,HashSet和TreeSet,HashSet是按照哈希算法來進行存取集合中的對象,存取速度比較快,TreeSet類顯示了SortedSet接口,具有排序功能

    HashSet
    HashSet是按照哈希算法來存取集合中的對象,具有很好的存取和查找性能,當向集合中加入一個對象時,HashSet會調用對象的hashCode()方法來獲取哈希碼,然后根據這個哈希嗎來計算對象在集合中的存放位置。
    在Object類中定義了hashCode()和equal(),equal()是按照內存地址比較對象是否相同,如果 object1.equal(  閱讀全文
    posted @ 2011-01-06 18:07 陳于喆 閱讀(8611) | 評論 (0)編輯 收藏

    posted @ 2011-01-04 14:10 陳于喆 閱讀(71443) | 評論 (6)編輯 收藏

         摘要: The minimum requirement for a POM are the following:

    project root
    modelVersion - should be set to 4.0.0
    groupId - the id of the project's group.
    artifactId - the id of the artifact (project)
    version - the version of the artifact under the specified group

    Here's an example:  閱讀全文
    posted @ 2010-12-29 17:50 陳于喆 閱讀(328) | 評論 (0)編輯 收藏

         摘要: 由于歷史原因,幾個項目都選用hessian作為web service的實現方式,hessian的確是非常輕量級,基于http協議進行傳輸,通過自定義的串行化機制將請求信息進行序列化,以二進制傳輸節(jié)省了不少的開銷,速度跟socket差不多.客戶端和服務器發(fā)起和接收請求都是通過spring提供的hessian api進行請求和接收,但是在服務端中并沒有記錄和控制遠端ip地址和主機的信息,所以需要對源碼進行一些重寫

    對org.springframework.remoting.caucho.HessianServiceExporter進行重寫

    /**
    * 重寫HessianServiceExporter.handleRequest(),攔截獲取遠端調用信息
    * @author chenyz
    *
    */
    public class HouseHessianServiceExporter extends HessianServiceExporter {

    private static S  閱讀全文
    posted @ 2010-12-21 16:05 陳于喆 閱讀(3027) | 評論 (0)編輯 收藏

         摘要: 目前幾套系統(tǒng)中主要使用的hessian進行遠程調用webservice服務的有hessian的 HessianProxyFactory(com.caucho.hessian.client.HessianProxyFactory)和 spring的 HessianProxyFactoryBean(org.springframework.remoting.caucho.HessianProxyFactoryBean).

    1.HessianProxyFactory
    查看HessianProxyFactory源碼后發(fā)現,hessian在創(chuàng)建http請求連接webservice服務并沒有對連接超時進行相關的參數設置,所以當網絡出現問題就會造成整個hessian處理的阻塞,進而阻塞整個線程后續(xù)的處理
    以下是HessianProxyFactory對連接處理的源碼

    protected URLConnection openConnection(URL url)
    throws IOException
    {
    URL  閱讀全文
    posted @ 2010-12-16 14:46 陳于喆 閱讀(12039) | 評論 (11)編輯 收藏

         摘要: 對很久以前的一個bug進行分析和總結

    function parsePost(data, action) {
    try {
    var postData = eval("(" + data + ")");

    // TO DO1
    } catch (e) {

    // TO DO2
    }
    }


    這是一段頁面的老代碼,data是數據庫body字段,既是用戶錄入并取出的數據,由于業(yè)務的關系,data是以json格式保存的,為了使數據能實現兼容,這里使用try...catch...方式處理,如果變量data能被轉換成對象,則執(zhí)行TO DO1,否則執(zhí)行TO DO2.

    我們知道eval的作用很簡單,就是把一段字符串傳遞給js解析器,由javascript解析器將這段字符串解釋成為  閱讀全文
    posted @ 2010-12-15 11:31 陳于喆 閱讀(4359) | 評論 (2)編輯 收藏

         摘要: 上次因工作的需求對一臺apache的log做了一次整體的分析,所以順便也對apache的日志分析做下簡單的介紹,主要參考apache官網的Log Files,手冊參照 http://httpd.apache.org/docs/2.2/logs.html

    一.日志分析
    如果apache的安裝時采用默認的配置,那么在/logs目錄下就會生成兩個文件,分別是access_log和error_log
    1.access_log
    access_log為訪問日志,記錄所有對apache服務器進行請求的訪問,它的位置和內容由CustomLog指令控制,LogFormat指令可以用來簡化該日志的內容和格式
    例如,我的其中一臺服務器配置如下

    CustomLog "| /usr/sbin/rotatelogs /var/log/apache2/%Y_%m_%d_other_vhosts_access.log 86400 480" vhost_combined

    -rw-r--r-- 1 root root 22310750   閱讀全文
    posted @ 2010-12-10 17:52 陳于喆 閱讀(12485) | 評論 (3)編輯 收藏

         摘要: 下載地址 http://awstats.sourceforge.net
    下載最新版本

    安裝
    cd /home/download
    wget http://awstats.sourceforge.net/files/awstats-7.0.tar.gz
    tar zxf awstats-7.0.tar.gz
    mv awstats-7.0 awstats
    perl awstats_configure.pl

    在[y/n]選擇時,輸入y
    接著輸入你要分析的域名,輸入tech163
    一路Enter

    配置
    vi /etc/awstats/awstats.tech163.com  閱讀全文
    posted @ 2010-12-10 17:28 陳于喆 閱讀(1231) | 評論 (0)編輯 收藏

         摘要: 下面一個伴隨了好幾個工程的時間操作的工具類,提供了一些常用的時間操作和計算的方法,每段時間都會進行一次整理,希望能去冗余和得到好的擴展

    package com.***.product.util;

    import java.text.ParsePosition;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    import java.util.regex.Pattern;

    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;


    public class DateUtil {
    protected static Log logger = LogFa  閱讀全文
    posted @ 2010-12-09 18:37 陳于喆 閱讀(456) | 評論 (0)編輯 收藏

         摘要: 大名鼎鼎的分布式緩存系統(tǒng)memcached,在開源社區(qū)中可謂是無人不知無人不曉,memcached支持分布式的橫向擴展,但memcached的服務端卻是單實例,并無"分布式"的功能,所謂的分布式只是客戶端在存儲的主鍵做分布的存儲;還有memcached組件緩存對象,如果組件無進行序列化必定無法正確取得數據;如何使用memcached的java組件來監(jiān)控memcached的運行狀態(tài);以上等等的問題是我在日常的工作中碰到并解決的,拿出來跟大家做個分享^_^

    對象的序列化
    首先memcached是獨立的服務器組件,獨立于應用系統(tǒng),從客戶端保存和讀取對象到memcached是必須通過網絡傳輸,因為網絡傳輸都是二進制的數據,所以所有的對象都必須經過序列化,否則無法存儲到memcahced的服務器端.
    正如我們以往在集群中應用的序列化一樣,memcached的序列化的性能也是往往讓大家頭疼,如果我們對我們的domain類進行對象的序列化,第一次序列化時間會比較長,但后續(xù)會優(yōu)化,也就是說序列化最大的消耗不是對象的序列化,而是類的序列化,如果存儲的只是一個String  閱讀全文
    posted @ 2010-12-08 15:00 陳于喆 閱讀(5619) | 評論 (4)編輯 收藏

         摘要: 很久以前就見過這本1000頁的書<代碼大全>,覺得應該是說些寫代碼的東西,沒怎么又興趣去讀它,一次偶然的機會,發(fā)現自己是誤解了它,<代碼大全>覺得應該叫軟件百科好像更合適一點,因為它里面涵蓋了架構,分析,設計,編程,測試,重構,面向對象,調試,規(guī)范,管理,軟件質量控制,協作,優(yōu)化,開發(fā)工具,注釋,甚至個性,開發(fā)藝術等等等,讓人感覺就是一本軟件百科全書.

    書讀的不多,不過剛開始讀了100多頁有一點感悟,所以做了一點記錄,叫讀<代碼大全>的一點記錄之1.

    利用隱喻
    隱喻通過把軟件開發(fā)與你所熟知的事情聯系在一起,從而使你對其更有深刻的理解,正是因為如此在計算機中的發(fā)展不過僅有數十年的歷史,卻擁有著所有科學最為豐富多彩的語言

    蓋房子的隱喻
    狗屋
    霹靂啪啦,木材加鐵釘,犯錯了怎么辦?無所謂,拆了再來過  閱讀全文
    posted @ 2010-12-07 17:59 陳于喆 閱讀(1251) | 評論 (0)編輯 收藏

         摘要: memcached需要依賴到以下的一系列包
    gcc
    libevent
    glibc-devel

    下載
    cd /home/download
    wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
    wget http://www.danga.com/memcached/dist/memcached-1.4.0.tar.gz

    安裝
    tar -zxvf libevent-1.4.13-stable.tar.gz
    cd libevent-1.4.13-stable
    ./configure --prefix=/usr/local/libevent
    make && make install

    tar -zxvf memcached-1.4.0.tar.gz  閱讀全文
    posted @ 2010-12-07 16:34 陳于喆 閱讀(347) | 評論 (0)編輯 收藏

    僅列出標題
    共4頁: 上一頁 1 2 3 4 下一頁 
    主站蜘蛛池模板: 最近中文字幕无免费| 免费又黄又爽又猛的毛片| 亚洲AV无码专区在线亚 | 国产免费av一区二区三区| fc2成年免费共享视频18| 久久久久久亚洲Av无码精品专口| 美女被免费喷白浆视频| v片免费在线观看| 亚洲国产精品人久久电影| 亚洲黄片毛片在线观看| 精品免费人成视频app| 五月天婷婷精品免费视频| 亚洲成AV人片久久| 国产国拍亚洲精品福利| 免费做爰猛烈吃奶摸视频在线观看 | 久久国产亚洲精品无码| 国产一区二区免费在线| 鲁大师在线影院免费观看| 日韩大片在线永久免费观看网站| 亚洲一区综合在线播放| 亚洲精品无码你懂的网站| 中文字幕人成无码免费视频| 成人无码区免费A∨直播| 亚洲午夜成人精品无码色欲| 久久噜噜噜久久亚洲va久| 国产免费无遮挡精品视频| 成人免费大片免费观看网站| h视频在线观看免费| 亚洲日本VA中文字幕久久道具| 国产精品亚洲аv无码播放| 国产伦一区二区三区免费| 精品香蕉在线观看免费| 免费在线看黄的网站| 九九久久精品国产免费看小说 | 91香蕉国产线在线观看免费| 九九九国产精品成人免费视频| 国产精品高清视亚洲精品| 亚洲综合视频在线| 亚洲欧洲日产国码av系列天堂| 亚洲A∨精品一区二区三区| 四虎影院免费在线播放|