多線程編程 進階主題(一)

java實現非同步呼叫 在JAVA平台,實現非同步呼叫的角色有如下三個角色: 調用者 取貨憑證   真實資料 一個調用者在調用耗時操作,不能立即返回資料時,先返回一個取貨憑證.然後在過一斷時間後憑取貨憑證來擷取真正的資料. 所以連結調用者和真實資料之間的橋樑是取貨憑證.我們先來看它的實現: public class FutureTicket{ private Object data = null; private boolean completed = false;  public synchr

ssh 自動登入指令碼

#!/bin/shecho -n "Please input passowrd:"stty -echo #關閉回顯read READLINEstty echo #開啟回顯sshpass -p'staticpasswdpart'$READLINE ssh user@host  升級到Lion後,ssh_askpass不能用了,改成如下指令碼:#!/usr/bin/expectsend_user "Security Code:"stty -echoexpect_user -re "(.*)\n" {

一個值得記住的教訓啊

昨天下午實現一段代碼,如果一說的話非常簡單,非常低級的問題,但當時測試好幾次,包括兩個人review了,都沒有發現問題.結果集成到應用發布的時候出現BUG了,只好復原.好在我們的應用都有預發而機制,沒有影響線上的真實應用. 情境是這樣的: switch(x){    case 1:    case 2:    case 3: // nothing               break;    case 4:              dosomething;break;       case

NIO中幾個非常重要的技術點

這些都是在實踐中踩過雷的,今天某應用再次踩雷,把遇到的幾個雷都收集一下,給後來者參考。1.即使是accept事件,沒有真正的read和write,Channel也要關閉,否則unix domain socket會被泄漏(WINDOWS更可怕),因為NIO的每個Channel上都有兩個FD用來監聽事件(接收和發送走不同的FD)。2.cancel事件導致CPU佔用100%,http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6403933 

是否需要設定obj = null?

這個問題原貼發表在這兒:http://topic.csdn.net/u/20090408/13/89c22659-e194-488d-add1-23256b22465e.html?seed=2029607558 雖然是C#技術欄目,但對JAVA完全適用。但所以答案沒有一個是正確且完整的。下面是我的答案,我有足夠的自信說這是真正正確的答案,除非JVM和CLR規範重新修改了。 正常情況下產生一個對象後主動讓 obj = null;

身份證識別碼的驗證

這個是放在這裡備忘的,請路過者不要評論和回複. String src = "18位號碼";char[] cs = src.toCharArray();int x = (c2i(cs[0]) + c2i(cs[10])) * 7  + (c2i(cs[1]) + c2i(cs[11])) * 9  + (c2i(cs[2]) + c2i(cs[12])) * 10  + (c2i(cs[3]) + c2i(cs[13])) * 5 + (c2i(cs[4]) + c2i(cs[14])) * 8

JBOSS內容錯亂的分析過程

現象:    線上服務的應用在發布一個應用後突然出現使用者帳號串號現象,這個問題的嚴重性完全是重大事故級。對於商業網站簡直是致命的,線上在出現問題的時馬上進行了復原。對出現問題的使用者進行手工修正資料等善後工作。分析:    因為之前基本沒有這個情況(說基本沒有,是據說一年前出現過這樣的一次情況,因為只出現過一次而且是一年前的,當時懷疑有可能是網路接入層的資料緩衝)。就因為一個應用發布突然出現大量(對於商業網站,如果出現十幾個,幾十個使用者帳號錯誤,應該算是大量了),所以首先從新發布的應用查起。

跨域提交時首頁面擷取目標伺服器傳回值的方法.

在使用POST方式時,從A域向B提交表單,使用jsonp方式無法將結果返回給A域的首頁面。只能使用script引用方式,這種get請求有很大局限性。在非使用POST不可以時候,可以做以下方式解決:A域首頁面在提交前,動態產生一個隱含的iframe,同時準備好接收傳回值的頁面。FORM的action為B域的目標頁面,target為iframe.B域的目標頁面將傳回值作為參為再重新導向到A域的接收頁面,可是用JS或伺服器端直接發送跳轉碼,構造http://a.com/receive?msg=xxxx

動態非侵入攔截

動態非侵入攔截什麼叫無侵入攔截? 在JAVA中要攔截一個方法調用,有多種方式,最容易也是最流行的就是動態代理。動態代理方式實現起來簡單,你只要提供一個介面和攔截處理的handler並在invoke中提供要拉截的方法調用時的附件操作,然後所有對需要攔截的方法所在的對象都由代理來產生就可以在運行時動態地實現對方法調進行攔截。 事實上動態代理模式從描述上也看出了它的無奈。1. 所有需要攔截的方法所在的類必須要實現一個介面供代理來"製造"這個類的執行個體。2. 必須改變原有實現的調用方式。即原來inst

系統調用中與被調用的命令互動方式

系統調用中,如果要和系統命令進行多次互動,那麼system函數和popen都不能勝任,popen是單向管道.要麼從中擷取標準出,要麼向其寫入標準輸入.所以用fork子進程和父進程利用pipe來進行雙向通訊才能解決. 以修改使用者密碼為例,當然直接執行echo mypwd|passwd myname --stdin是可以的,但為了說明向被調用的子進程傳遞輸入,我讓子進程執行 passwd my name

多線程編程的設計模式 臨界區模式(一)

多線程編程的設計模式 臨界區模式(一)臨界區模式 Critical Section Pattern 是指在一個共用範圍中只讓一個線程執行的模式.它是所有其它多線程設計模式的基礎,所以我首先來介紹它.把著眼點放在範圍上,這個模式叫臨界區模式,如果把作眼點放在執行的線程上,這個模式就叫單線程執行模式.首先我們來玩一個鑽山洞的遊戲,我 Axman,朋友 Sager,同事 Pentium4.三個人在八角遊樂場迴圈鑽山洞(KAO,減肥訓練啊),每個人手裡有一個牌子,每鑽一次洞口的老頭會把當前的次序,姓名,

前幾天電面的一個實錄,不記下來實在可惜,如有虛構,天打雷劈。

?你們的某某項目多少人蔘與做的(本來下面接著問他你在其中承擔什麼角色)。!人多了去了。?那是多少人?!好幾十人。?好幾十是多少?!三十多個人。 ?使用者日訪問量大約多少?!訪問很大啊。?很大是多大?!有好幾十萬。?到底幾十萬?!具體我也不請楚,要問業務人員。 ?還做過什麼項目?!一個公司內部的系統。?幹什麼用的?!公司員工用的。?員工用這個系統幹什嗎?徵婚?訂車?!內部流程管理審批系統。 。。。。。。。。。。。。。。。電面完俺面試的人被弄的全身是汗啊。

What dose “%…D The time taken to serve the request, in microseconds.” mean?

apache log的%D到底包含什麼時間? 一.現象:apache + mod_jk + jboss環境,  jboss的處理時間和apache log中的處理時間總是相差很大,jboss的時間是用架構記錄從request進入到請求結束的時間,對於一個特定的URL,時間基本在 100ms以內,可是apache log出來的%D大都在200ms以上,有的竟然離奇的是幾百秒。 二.目的:找出jboss的業務處理和apache

利用ASM進行方法攔截中擷取相關資料的實現

方法攔截中擷取相關資料的實現 如果你看不懂我的上一篇文章,請你退回去一步一步根據例子運行起來,在你啟動並執行過程中你會加深對程式的理解。本篇文章主要是利用ASM來在攔截方法時擷取方法調用時的相關資料,如參數列表,本地變數列表,方法調用棧以及操作狀態代碼等重要資料,以及方法執行時間。結合當前系統的記憶體狀態,CPU佔用率等系統資訊可以為商務邏輯出現異常時提供最可靠的分析依據。本篇要求對ByteCode有一定瞭解,即使你因為某些原因不得不照抄這裡的實現,我也希望你能在先使用這些實現範例後再弄懂它。能

又遇img src=””的問題。

儘管這個問題有過n次教訓。但是監控開發這兩天再次被該問題折磨。他們不知道折騰了多久,找到了我。 一個協助頁面,瀏覽過後session就會丟失,需要重新登入。而其它頁面就沒有這個問題。首先這個頁面是一個靜態頁面,所以懷疑其中有js改寫成cookie引起session丟失,但是搜尋發現根本沒有js.然後考慮一定是某種資源載入引發異常,一種一種排查。當把img src都替換成img

終於成功將我的 SONY WAIO P27H 改裝成Ubuntu 10.4

使用時速度感覺: Ubuntu > MaxOS >>>>> Win7/XP >> Vista(注意>的個數表示程度)  原帶的系統Vista之爛不必提它了。後來改裝XP,WIN7,雖然驅動/功能都很完美,但使用起來的速度確實不敢恭維。其間雖然裝過Mac OS,但有些驅動不能工作,Ubuntu也裝過兩次,顯示和休眠工作不好。 Mac OS不能說不好,但在非Mac機器上裝Mac

OSSCE指令碼引發的重大問題,記在這裡以示警戒

今天發生的一件大事,早上9點多,線上服務的機器有一半不能訪問了。結果查看大多數的java進程被殺死,jboss伺服器停掉。也有的機器其它服務被停止。 最初懷疑是被入侵了。因為同時發生狀態一致的宕機,除非是時間BUG,否則如何那麼多機器都同時停止(已經排除人為操作原因)。 最後和安全部門聯絡,是否有統一的操作,結果他們反映地那個時間段統一停止了安全模組OSSCE,但它為什麼會導致JAVA應用和其它服務停止呢? 最後分析OSSCE的啟動指令碼,才發現問題的所在: 這個很爛的指令碼在啟動時開了一個lo

一次load飆高的故障分析過程

這個故障已經過去好多天了,但是還是要記在這裡以供別的兄弟參考。 現象:      應用伺服器正常服務期間,load突然飆高,但是看訪問日誌卻發現不了異常,應用支援的架構師說訪問量沒有任何異常。 分析:     

為什麼要org 07c00h?

 為什麼要org 07c00h?有很多人看了"自己動手寫作業系統"或其第二版這本書後對這一行提出疑問.這個問題在書中作者的解釋是:告訴編譯器,將來我們的這段程式要被載入到07c00處執行. 說實話"自己動手寫作業系統"這本書寫得確實不錯,我不是佩服作者的水平,而是作者的毅力,能把這麼枯橾的知識系統地一步一步地親身實踐並寫成書(難度比我們隨意地寫BLOG要難千百倍吧),而且作者盡自己的最大努力讓讀者能清楚明白.但是這幾句話,作者說得一點也不明白.當然我們相信作者自己肯定明白,但這樣的表述"顯示出"

這樣的錯誤竟然能得到正確的值,這個bug藏的夠深的。

為了統計方法執行時候,我用ASM在方法開始的時候插入一個變數startLocal記錄開始執行的時間,然後在結束的時間用目前時間去差這個開始時間,為了調試,我同時又插入了一個endLocal /** * Project: dragoon-common-2.5.3 * * File Created at 2011-5-5 * $Id$ * * Copyright 1999-2100 Alibaba.com Corporation Limited. * All rights reserved. * *

總頁數: 61357 1 .... 17891 17892 17893 17894 17895 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.