CacheFactorizer.java

書中添加了2個計數(shù)器
一個是命中計數(shù)器里伯,一個是緩存命中計數(shù)器(如果新的參數(shù)和上次一樣吓揪,則直接獲燃嘣鳌)

    private BigInteger lastNumber;//上次的因子
    private BigInteger[] lastFactors;//上次的因式分解的結(jié)果
    private long hits;//訪問次數(shù)
    private long cacheHits;//緩存命中次數(shù)
    private BigInteger N;//全局變量
    public synchronized long getHits(){ return hits; }
    public synchronized double getCacheHitRadio(){ return cacheHits / hits; }
    public void service(BigInteger x){
        BigInteger[] factors = null;
        synchronized(this){
            //可變的 共享變量(計數(shù)器)寫入      需要考慮并發(fā)
            //而且分解過程和記錄計數(shù)器過程不干擾  可以拆分
            ++hits;//記錄
            if(x.equals(lastNumber)){
                ++cacheHits;
                factors = lastFactors.clone();//緩存上次結(jié)果
            }
        }
        if(factors == null){
            //如果沒有本次 x 因式分解的記錄    factor即求解過程
            factors = factor(x);
            synchronized(this){
                lastNumber = x;
                lastFactors = factors.clone();
            }
        }
        for(BigInteger fac:factors){

            System.err.println(fac);
        }
    }


    BigInteger[] factor(BigInteger num) {
        //因數(shù)分解過程
        BigInteger[] factors = new BigInteger[3];
        BigInteger min = new BigInteger("2");
        int n = 0;
        while(num.compareTo(min) == 1){
            System.out.println("NUM"+num +" MIN: "+min+"MOD: "+num.mod(min));
            if(num.mod(min).compareTo(new BigInteger("0")) == 0){
                //num 不被整除且  num>0
                factors[n] = min;
                n++;
                num = num.divide(min);
                min = new BigInteger("2");
            }else{
                min = min.add(new BigInteger("1"));
            }
        }
        if(num.compareTo(min) == 0){
            factors[n] = min;
        }
        return factors;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末庆揩,一起剝皮案震驚了整個濱河市膳叨,隨后出現(xiàn)的幾起案子洽洁,更是在濱河造成了極大的恐慌,老刑警劉巖菲嘴,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饿自,死亡現(xiàn)場離奇詭異汰翠,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)昭雌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門复唤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人烛卧,你說我怎么就攤上這事佛纫。” “怎么了总放?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵呈宇,是天一觀的道長。 經(jīng)常有香客問我局雄,道長甥啄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任哎榴,我火速辦了婚禮型豁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘尚蝌。我一直安慰自己,他們只是感情好充尉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布飘言。 她就那樣靜靜地躺著,像睡著了一般驼侠。 火紅的嫁衣襯著肌膚如雪姿鸿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天倒源,我揣著相機(jī)與錄音苛预,去河邊找鬼。 笑死笋熬,一個胖子當(dāng)著我的面吹牛热某,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播胳螟,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼昔馋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了糖耸?” 一聲冷哼從身側(cè)響起秘遏,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嘉竟,沒想到半個月后邦危,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體洋侨,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年倦蚪,在試婚紗的時候發(fā)現(xiàn)自己被綠了希坚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡审丘,死狀恐怖吏够,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情滩报,我是刑警寧澤锅知,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站脓钾,受9級特大地震影響售睹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜可训,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一昌妹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧握截,春花似錦飞崖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至胯努,卻和暖如春牢裳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叶沛。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工蒲讯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人灰署。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓判帮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親氓侧。 傳聞我的和親對象是個殘疾皇子脊另,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)约巷,斷路器偎痛,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,144評論 25 707
  • 點(diǎn)擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個完善的 IM 系統(tǒng)...
    layjoy閱讀 13,764評論 0 15
  • 一般情況下每個虛擬主機(jī)就是一個網(wǎng)站踩麦,網(wǎng)站一般通過域名來進(jìn)行訪問枚赡。 LNMP1.3的網(wǎng)站添加過程和LNMP1.1的基...
    zhenxingdev閱讀 726評論 0 1
  • 以下是我聽的四大梨老師的寫作課課后復(fù)習(xí)總結(jié),是教寫作者如何寫好文章的對話的谓谦。如果你也想在這方面有所提升贫橙,可以看一看...
    素手調(diào)羹閱讀 2,162評論 6 11