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

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

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

    隨筆-295  評(píng)論-26  文章-1  trackbacks-0
     
    文檔流是文檔中可顯示對(duì)象在排列時(shí)所占用的位置。比如網(wǎng)頁(yè)的div標(biāo)簽它默認(rèn)占用的寬度位置是一整行,p標(biāo)簽?zāi)J(rèn)占用寬度也是一整行,因?yàn)閐iv標(biāo)簽和p標(biāo)簽是塊狀對(duì)象。 網(wǎng)頁(yè)中大部分對(duì)象默認(rèn)是占用文檔流,也有一些對(duì)象是不占文檔流的,比如表單中隱藏域。當(dāng)然我們也可以讓占用文檔流的元素轉(zhuǎn)換成不占文檔流,這就要用到CSS中屬性position來(lái)控制。 看看CSS 2.0對(duì)position的定義:檢索對(duì)象的定位方式。共有4種取值。 static:默認(rèn)值,無(wú)特殊(靜態(tài))定位。對(duì)象遵循HTML定位規(guī)則 。 absolute:絕對(duì)定位。將對(duì)象從文檔流中拖出,使用left,right,top,bottom等屬性相對(duì)于其最接近的一個(gè)最有定位設(shè)置的父對(duì)象進(jìn)行絕對(duì)定位。如果不存在這樣的父對(duì)象,則依據(jù)body對(duì)象。而其層疊通過(guò)z-index屬性定義 。當(dāng)對(duì)象定位在瀏覽器窗口以外,瀏覽器因此顯示滾動(dòng)條。 fixed:固定定位。對(duì)象定位遵從絕對(duì)(absolute)方式。但是要遵守一些規(guī)范。當(dāng)對(duì)象定位在瀏覽器窗口以外,瀏覽器不會(huì)因此顯示滾動(dòng)條,而當(dāng)滾動(dòng)條滾動(dòng)時(shí),對(duì)象始終固定在原來(lái)位置。 relative:相對(duì)定位。對(duì)象不可層疊,但將依據(jù)left,right,top,bottom等屬性在正常文檔流中偏移位置。當(dāng)對(duì)象定位在瀏覽器窗口以外,瀏覽器因此顯示滾動(dòng)條。 inherit:繼承值,對(duì)象將繼承其父對(duì)象相應(yīng)的值
    posted @ 2009-10-13 16:56 華夢(mèng)行 閱讀(904) | 評(píng)論 (0)編輯 收藏
    發(fā)現(xiàn)一個(gè)不錯(cuò)的養(yǎng)生網(wǎng)站 養(yǎng)生之道 www.yszd.org ,希望大家喜歡。
    posted @ 2009-09-25 22:25 華夢(mèng)行 閱讀(268) | 評(píng)論 (0)編輯 收藏
    hessian
    posted @ 2009-08-24 09:26 華夢(mèng)行 閱讀(229) | 評(píng)論 (0)編輯 收藏
    http://xstream.codehaus.org/json-tutorial.html
    posted @ 2009-08-12 08:55 華夢(mèng)行 閱讀(269) | 評(píng)論 (0)編輯 收藏
    /* CSS Reset for Taobao 注意:這里是 ONLY for Taobao 的 reset rules 維護(hù):玉伯(lifesinger@gmail.com), 正淳(ragecarrier@gmail.com) */ /* require(reset.css) */ html { color: #404040; /* 淘寶文字默認(rèn)色 */ background: #fff; /* 覆蓋掉用戶(hù)在不知情的情況下,設(shè)置的頁(yè)面背景 */ } /* 淘寶鏈接默認(rèn)色 */ a { color: #404040; } a:hover { color: #f60; } /* 重置 hr */ hr { color: #ccc; background-color: #ccc; } /* misc */ html { /* 讓非ie瀏覽器默認(rèn)也顯示垂直滾動(dòng)條,防止因滾動(dòng)條引起的閃爍 */ overflow-y: scroll; }
    posted @ 2009-07-29 18:09 華夢(mèng)行 閱讀(508) | 評(píng)論 (0)編輯 收藏
    javascript的繼承機(jī)制并不是明確規(guī)定的,而是通過(guò)模仿實(shí)現(xiàn)的,意味著繼承不是由解釋程序處理,開(kāi)發(fā)者有權(quán)決定最適合的繼承方式. 下面我給出幾種常用的方法: 1 .對(duì)象冒充 原理: 構(gòu)造函數(shù)使用this關(guān)鍵字給所有屬性和方法賦值, 因?yàn)闃?gòu)造函數(shù)只是一個(gè)函數(shù),所以可以使ClassA的構(gòu)造函數(shù)成為classB的方法,然后調(diào)用它.這樣classB就會(huì)收到classA的構(gòu)造函數(shù)中定義的屬性和方法.例子: function classA(name) { this.name=name; this.showName=function(){alert(this.name);} } function classB(name) { this.newMethod = classA; this.newMethod(name); } obj = new classA("hero"); objB = new classB("dby"); obj.showName(); // print hero objB.showName(); // print dby 說(shuō)明classB 繼承了classA的方法. 對(duì)象冒充可以實(shí)現(xiàn)多重繼承 例如 function classz(){ this.newMethod = classX; this.newMethod(); delete this.newMethod; this.newMethod=classY; this.newMethod(): delete this.newMethod; } 但是如果classX和classY有相同的屬性或者方法,classY具有高優(yōu)先級(jí). 2.call()方法 call方法使與經(jīng)典的對(duì)象冒充法就相近的方法,它的第一個(gè)參數(shù)用作this的對(duì)象,其他參數(shù)都直接傳遞給函數(shù)自身. function sayName(perfix) { alert(perfix+this.name); } obj= new Object(); obj.name="hero"; sayName.call(obj,"hello," ); function classA(name) { this.name=name; this.showName=function(){alert(this.name);}; } function classB(name) { classA.call(this,name); } objB = new classB("bing"); objB.showName();////說(shuō)明classB繼承classA的showName方法 3.apply()方法 aplly()方法有2個(gè)參數(shù),一個(gè)用作this對(duì)象,一個(gè)使傳遞給函數(shù)的參數(shù)數(shù)組. function sayName(perfix) { alert(perfix+this.name); } obj= new Object(); obj.name="hero"; sayName.aplly(obj,new Array("hello,") ); 4. 原型鏈 prototype對(duì)象的任何屬性和方法都會(huì)被傳遞給對(duì)應(yīng)類(lèi)的所有實(shí)例,原型鏈就是用這種方式來(lái)顯現(xiàn)繼承. function classA (){} classA.prototype.name="hero"; classA.prototype.showName=function(){alert(this.name)} function classB(){} classB.prototype=new classA(); objb = new classB() objb.showName();//print hero 說(shuō)明b繼承了a的方法 這里需要注意 調(diào)用classA的構(gòu)造函數(shù)時(shí),沒(méi)有給它傳遞參數(shù),這是原型鏈的標(biāo)準(zhǔn)做法,確保函數(shù)的構(gòu)造函數(shù)沒(méi)有任何參數(shù). 并且 子類(lèi)的所有屬性和方法,必須出現(xiàn)在prototype屬性被賦值后,應(yīng)為在它之前賦的值會(huì)被刪除.因?yàn)閷?duì)象的prototype屬性被替換成了新對(duì)象,添加了新方法的原始對(duì)象將被銷(xiāo)毀. 5 混和方式 就是用冒充方式 定義構(gòu)造函數(shù)屬性,用原型法定義對(duì)象方法. function classA(name) { this.name=name; } classA.prototype.showName=function(){alert(this.name)} function classB(name) { classA.call(this,name); } classB.prototype = new classA(); classB.prototype.showName1=function(){alert(this.name+"*****");}; obj = new classB("hero"); obj.showName(); obj.showName1(); 在classB的構(gòu)造函數(shù)中通過(guò)調(diào)用call方法 繼承classA中的name屬性,用原型鏈來(lái)繼承classA的showName方法.
    posted @ 2009-07-16 13:47 華夢(mèng)行 閱讀(117) | 評(píng)論 (0)編輯 收藏
    1)Sun的JVM在實(shí)現(xiàn)Selector上,在Linux和Windows平臺(tái)下的細(xì)節(jié)。 2)Selector類(lèi)的wakeup()方法如何喚醒阻塞在select()系統(tǒng)調(diào)用上的細(xì)節(jié)。 先給大家做一個(gè)簡(jiǎn)單的回顧,在Windows下,Sun的Java虛擬機(jī)在Selector.open()時(shí)會(huì)自己和自己建立loopback的TCP鏈接;在Linux下,Selector會(huì)創(chuàng)建pipe。這主要是為了Selector.wakeup()可以方便喚醒阻塞在select()系統(tǒng)調(diào)用上的線程(通過(guò)向自己所建立的TCP鏈接和管道上隨便寫(xiě)點(diǎn)什么就可以喚醒阻塞線程) 我們知道,無(wú)論是建立TCP鏈接還是建立管道都會(huì)消耗系統(tǒng)資源,而在Windows上,某些Windows上的防火墻設(shè)置還可能會(huì)導(dǎo)致Java的Selector因?yàn)榻⒉黄餷oopback的TCP鏈接而出現(xiàn)異常。 而在我的另一篇文章《用GDB調(diào)試Java程序》中介紹了另一個(gè)Java的解釋器——GNU的gij,以及編譯器gcj,不但可以比較高效地運(yùn)行Java程序,而且還可以把Java程序直接編譯成可執(zhí)行文件。 GNU的之所以要重做一個(gè)Java的編譯和解釋器,其一個(gè)重要原因就是想解釋Sun的JVM的效率和資源耗費(fèi)問(wèn)題。當(dāng)然,GNU的Java編譯/解釋器并不需要考慮太多復(fù)雜的平臺(tái),他們只需要專(zhuān)注于Linux和衍生自Unix System V的操作系統(tǒng),對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),離開(kāi)了Windows,一切都會(huì)變得簡(jiǎn)單起來(lái)。在這里,讓我們看看GNU的gij是如何解釋Selector.open()和Selector.wakeup()的。 同樣,我們需要一個(gè)測(cè)試程序。在這里,為了清晰,我不會(huì)例出所有的代碼,我只給出我所使用的這個(gè)程序的一些關(guān)鍵代碼。 我的這個(gè)測(cè)試程序中,和所有的Socket程序一樣,下面是一個(gè)比較標(biāo)準(zhǔn)的框架,當(dāng)然,這個(gè)框架應(yīng)該是在一個(gè)線程中,也就是一個(gè)需要繼承Runnable接口,并實(shí)現(xiàn)run()方法的一個(gè)類(lèi)。(注意:其中的s是一個(gè)成員變量,是Selector類(lèi)型,以便主線程序使用) //生成一個(gè)偵聽(tīng)端 ServerSocketChannel ssc = ServerSocketChannel.open(); //將偵聽(tīng)端設(shè)為異步方式 ssc.configureBlocking(false); //生成一個(gè)信號(hào)監(jiān)視器 s = Selector.open(); //偵聽(tīng)端綁定到一個(gè)端口 ssc.socket().bind(new InetSocketAddress(port)); //設(shè)置偵聽(tīng)端所選的異步信號(hào)OP_ACCEPT ssc.register(s,SelectionKey.OP_ACCEPT); System.out.println("echo server has been set up ......"); while(true){ int n = s.select(); if (n == 0) { //沒(méi)有指定的I/O事件發(fā)生 continue; } Iterator it = s.selectedKeys().iterator(); while (it.hasNext()) { SelectionKey key = (SelectionKey) it.next(); if (key.isAcceptable()) { //偵聽(tīng)端信號(hào)觸發(fā) …… …… …… …… …… …… } if (key.isReadable()) { //某socket可讀信號(hào) …… …… …… …… …… …… } it.remove(); } } 而在主線程中,我們可以通過(guò)Selector.wakeup()來(lái)喚醒這個(gè)阻塞在select()上的線程,下面是寫(xiě)在主線程中的喚醒程序: new Thread(this).start(); try{ //Sleep 30 seconds Thread.sleep(30000); System.out.println("wakeup the select"); s.wakeup(); }catch(Exception e){ e.printStackTrace(); } 這個(gè)程序在主線程中,先啟動(dòng)一個(gè)線程,也就是上面那個(gè)Socket線程,然后休息30秒,為的是讓上面的那個(gè)線程有阻塞在select(),然后打印出一條信息,這是為了我們用strace命令查看具體的系統(tǒng)調(diào)用時(shí)能夠快速定位。之后調(diào)用的是Selector的wakeup()方法來(lái)喚醒偵聽(tīng)線程。 接下來(lái),我們可以通過(guò)兩種方式來(lái)編譯這個(gè)程序: 1)使用gcj或是sun的javac編譯成class文件,然后使用gij解釋執(zhí)行。 2)使用gcj直接編譯成可執(zhí)行文件。 (無(wú)論你用那種方法,都是一樣的結(jié)果,本文使用第二種方法,關(guān)于gcj的編譯方法,請(qǐng)參看我的《用GDB調(diào)試Java程序》) 編譯成可執(zhí)行文件后,執(zhí)行程序時(shí),使用lsof命令,我們可以看到?jīng)]有任何pipe的建立。可見(jiàn)GNU的解釋更為的節(jié)省資源。而對(duì)于一個(gè)Unix的C程序員來(lái)說(shuō),這意味著如果要喚醒select()只能使用pthread_kill()來(lái)發(fā)送一個(gè)信號(hào)了。下面就讓我們使用strace命令來(lái)驗(yàn)證這個(gè)想法。 下圖是使用strace命令來(lái)跟蹤整個(gè)程序運(yùn)行時(shí)的系統(tǒng)調(diào)用,我們利用我們的輸出的“wakeup the select”字符串快速的找到了wakeup的實(shí)際系統(tǒng)調(diào)用。
    posted @ 2009-06-16 14:50 華夢(mèng)行 閱讀(565) | 評(píng)論 (0)編輯 收藏
    很早就聽(tīng)說(shuō)tomcat6使用nio了,這幾天突然想到一個(gè)問(wèn)題,使用nio代替?zhèn)鹘y(tǒng)的bio,ThreadLocal豈不是會(huì)存在沖突?   如果讀者有socket的編程基礎(chǔ),應(yīng)該會(huì)接觸過(guò)堵塞socket和非堵塞socket,堵塞socket就是在accept、read、write等IO操作的的時(shí)候,如果沒(méi)有可用符合條件的資源,不馬上返回,一直等待直到有資源為止。而非堵塞socket則是在執(zhí)行select的時(shí)候,當(dāng)沒(méi)有資源的時(shí)候堵塞,當(dāng)有符合資源的時(shí)候,返回一個(gè)信號(hào),然后程序就可以執(zhí)行accept、read、write等操作,這個(gè)時(shí)候,這些操作是馬上完成,并且馬上返回。而windows的winsock則有所不同,可以綁定到一個(gè)EventHandle里,也可以綁定到一個(gè)HWND里,當(dāng)有資源到達(dá)時(shí),發(fā)出事件,這時(shí)執(zhí)行的io操作也是馬上完成、馬上返回的。一般來(lái)說(shuō),如果使用堵塞socket,通常我們時(shí)開(kāi)一個(gè)線程accept socket,當(dāng)有socket鏈接的時(shí)候,開(kāi)一個(gè)單獨(dú)的線程處理這個(gè)socket;如果使用非堵塞socket,通常是只有一個(gè)線程,一開(kāi)始是select狀態(tài),當(dāng)有信號(hào)的時(shí)候馬上處理,然后繼續(xù)select狀態(tài)。  按照大多數(shù)人的說(shuō)法,堵塞socket比非堵塞socket的性能要好。不過(guò)也有小部分人并不是這樣認(rèn)為的,例如Indy項(xiàng)目(Delphi一個(gè)比較出色的網(wǎng)絡(luò)包),它就是使用多線程+堵塞socket模式的。另外,堵塞socket比非堵塞socket容易理解,符合一般人的思維,編程相對(duì)比較容易。     nio其實(shí)也是類(lèi)似上面的情況。在JDK1.4,sun公司大范圍提升Java的性能,其中NIO就是其中一項(xiàng)。Java的IO操作集中在java.io這個(gè)包中,是基于流的阻塞API(即BIO,Block IO)。對(duì)于大多數(shù)應(yīng)用來(lái)說(shuō),這樣的API使用很方便,然而,一些對(duì)性能要求較高的應(yīng)用,尤其是服務(wù)端應(yīng)用,往往需要一個(gè)更為有效的方式來(lái)處理IO。從JDK 1.4起,NIO API作為一個(gè)基于緩沖區(qū),并能提供非阻塞O操作的API(即NIO,non-blocking IO)被引入。  BIO與NIO一個(gè)比較重要的不同,是我們使用BIO的時(shí)候往往會(huì)引入多線程,每個(gè)連接一個(gè)單獨(dú)的線程;而NIO則是使用單線程或者只使用少量的多線程,每個(gè)連接共用一個(gè)線程。   這個(gè)時(shí)候,問(wèn)題就出來(lái)了:我們非常多的java應(yīng)用是使用ThreadLocal的,例如JSF的FaceContext、Hibernate的session管理、Struts2的Context的管理等等,幾乎所有框架都或多或少地應(yīng)用ThreadLocal。如果存在沖突,那豈不驚天動(dòng)地?    后來(lái)終于在Tomcat6的文檔(http://tomcat.apache.org/tomcat-6.0-doc/aio.html)找到答案。根據(jù)上面說(shuō)明,應(yīng)該Tomcat6應(yīng)用nio只是用在處理發(fā)送、接收信息的時(shí)候用到,也就是說(shuō),tomcat6還是傳統(tǒng)的多線程Servlet,我畫(huà)了下面兩個(gè)圖來(lái)列出區(qū)別:   tomcat5:客戶(hù)端連接到達(dá) -> 傳統(tǒng)的SeverSocket.accept接收連接 -> 從線程池取出一個(gè)線程 -> 在該線程讀取文本并且解析HTTP協(xié)議 -> 在該線程生成ServletRequest、ServletResponse,取出請(qǐng)求的Servlet -> 在該線程執(zhí)行這個(gè)Servlet -> 在該線程把ServletResponse的內(nèi)容發(fā)送到客戶(hù)端連接 -> 關(guān)閉連接。      我以前理解的使用nio后的tomcat6:客戶(hù)端連接到達(dá) -> nio接收連接 -> nio使用輪詢(xún)方式讀取文本并且解析HTTP協(xié)議(單線程) -> 生成ServletRequest、ServletResponse,取出請(qǐng)求的Servlet -> 直接在本線程執(zhí)行這個(gè)Servlet -> 把ServletResponse的內(nèi)容發(fā)送到客戶(hù)端連接 -> 關(guān)閉連接。 實(shí)際的tomcat6:客戶(hù)端連接到達(dá) -> nio接收連接 -> nio使用輪詢(xún)方式讀取文本并且解析HTTP協(xié)議(單線程) -> 生成ServletRequest、ServletResponse,取出請(qǐng)求的Servlet -> 從線程池取出線程,并在該線程執(zhí)行這個(gè)Servlet -> 把ServletResponse的內(nèi)容發(fā)送到客戶(hù)端連接 -> 關(guān)閉連接。    從上圖可以看出,BIO與NIO的不同,也導(dǎo)致進(jìn)入客戶(hù)端處理線程的時(shí)刻有所不同:tomcat5在接受連接后馬上進(jìn)入客戶(hù)端線程,在客戶(hù)端線程里解析HTTP協(xié)議,而tomcat6則是解析完HTTP協(xié)議后才進(jìn)入多線程,另外,tomcat6也比5早脫離客戶(hù)端線程的環(huán)境。   實(shí)際的tomcat6與我之前猜想的差別主要集中在如何處理servlet的問(wèn)題上。實(shí)際上即使拋開(kāi)ThreadLocal的問(wèn)題,我之前理解tomcat6只使用一個(gè)線程處理的想法其實(shí)是行不同的。大家都有經(jīng)驗(yàn):servlet是基于BIO的,執(zhí)行期間會(huì)存在堵塞的,例如讀取文件、數(shù)據(jù)庫(kù)操作等等。tomcat6使用了nio,但不可能要求servlet里面要使用nio,而一旦存在堵塞,效率自然會(huì)銳降。   所以,最終的結(jié)論當(dāng)然是tomcat6的servlet里面,ThreadLocal照樣可以使用,不存在沖突
    posted @ 2009-06-16 14:30 華夢(mèng)行 閱讀(211) | 評(píng)論 (0)編輯 收藏
    我就拿一個(gè)房子來(lái)做一個(gè)比方吧,服務(wù)器好比就是一幢房子,黑客最直接的方式就是帶著一些撬鎖的工具,去把房子的鎖給撬掉,然后奪門(mén)而入,這種方式被稱(chēng)為服務(wù)器入侵。還有一類(lèi)就是它直接撬大門(mén)鎖撬不開(kāi),它就把這個(gè)房子的窗打破,從窗子里面鉆進(jìn)去,來(lái)進(jìn)行破壞,這種方式叫做網(wǎng)站入侵。還有一類(lèi)就是黑客帶著一只訓(xùn)練有素的小猴子,讓小猴子爬到房子的房頂,從煙囪里面鉆進(jìn)去,然后把大門(mén)打開(kāi),這種方式叫做特洛伊木馬入侵。還有一類(lèi)就是我們前面講到那個(gè)事件的DDOS攻擊這個(gè)技術(shù),這個(gè)相當(dāng)于黑客帶著一大幫人過(guò)來(lái)把房子的大門(mén)給堵住了,讓房子里面的人出不來(lái),讓外面的人也進(jìn)不去,這就是DDOS攻擊。
    posted @ 2009-06-10 10:40 華夢(mèng)行 閱讀(142) | 評(píng)論 (0)編輯 收藏
    SELECT DATEADD(mm,DATEDIFF(mm,0,getdate()),0) //首先選出當(dāng)前月,然后把他轉(zhuǎn)換為日期 select (2009-1900)*12 select DATEDIFF(mm,0,getdate())
    posted @ 2009-06-08 14:39 華夢(mèng)行 閱讀(178) | 評(píng)論 (0)編輯 收藏
    ?#define ? WINVER ? 0x0050??
    #define ? WINVER ? 0x0500,這個(gè)表示是為Windows ? 2000編譯,不保證Windows ? 98/NT4可以正常運(yùn)行??

    Windows ? Server ? 2003 ?
    ? WINVER>=0x0502 ?
    ? ? ?
    ? Windows ? XP ? ?
    ? WINVER>=0x0501 ?
    ? ? ?
    ? Windows ? 2000 ?
    ? WINVER>=0x0500 ?
    ? ? ?
    ? Windows ? NT ? 4.0 ?
    ? WINVER>=0x0400 ?
    ? ? ?
    ? Windows ? Me ?
    ? WINVER>=0x0500 ?
    ? ? ?
    ? Windows ? 98 ?
    ? WINVER>=0x0410 ?
    ? ? ?
    ? Windows ? 95 ?
    ? WINVER>=0x0400???
    ?????
    posted @ 2009-03-26 22:15 華夢(mèng)行 閱讀(177) | 評(píng)論 (0)編輯 收藏

    ?// TODO: Add your message handler code here and/or call default
    ?/*HDC hdc;
    ?hdc=::GetDC(m_hWnd);
    ?MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
    ?LineTo(hdc,point.x,point.y);
    ?::ReleaseDC(m_hWnd,hdc);*/
    ?/*CDC *pDC=GetDC();
    ?pDC->MoveTo(m_ptOrigin);
    ?pDC->LineTo(point);
    ?ReleaseDC(pDC);*/

    ?//CClientDC dc(this);
    ?/*CClientDC dc(GetParent());
    ?dc.MoveTo(m_ptOrigin);
    ?dc.LineTo(point);*/

    ?//CWindowDC dc(this);
    ?//CWindowDC dc(GetParent());
    ?/*CWindowDC dc(GetDesktopWindow());
    ?dc.MoveTo(m_ptOrigin);
    ?dc.LineTo(point);*/
    ?/*CPen pen(PS_DOT,1,RGB(0,255,0));
    ?CClientDC dc(this);
    ?CPen *pOldPen=dc.SelectObject(&pen);
    ?dc.MoveTo(m_ptOrigin);
    ?dc.LineTo(point);
    ?dc.SelectObject(pOldPen);*/
    //?CBrush brush(RGB(255,0,0));

    ?/*CBitmap bitmap;
    ?bitmap.LoadBitmap(IDB_BITMAP1);
    ?CBrush brush(&bitmap);*/
    ?/*CClientDC dc(this);
    ?//dc.FillRect(CRect(m_ptOrigin,point),&brush);
    ?CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
    ?CBrush *pOldBrush=dc.SelectObject(pBrush);
    ?dc.Rectangle(CRect(m_ptOrigin,point));
    ?dc.SelectObject(pOldBrush);*/
    ?m_bDraw=FALSE;
    ?CView::OnLButtonUp(nFlags, point);

    posted @ 2009-03-24 16:25 華夢(mèng)行 閱讀(164) | 評(píng)論 (0)編輯 收藏

    #include <iostream.h>
    #include <string>
    char* strToBinary(int x);
    char* strToHex(int i);
    char* transToGKB(char *t);

    int main ()

    {
    char *p=strToBinary(233);
    //cout<<p;

    //cout<<strToHex(233);
    cout<<transToGKB("商");
    return 0;
    }
    char* transToGKB(char *t){
    ?int res=0;
    ?? int intlen;
    ?? intlen=strlen(t);
    ?? if(intlen>1){
    ??? char *result=new char[5];
    ?? int i=0;
    ?if(0>t[0]){
    ??? res=256+t[0];
    ? }
    ?char *p1=strToHex(res);
    ?if(0>t[1]){
    ??res=256+t[1];
    ?}
    ?char *p2=strToHex(res);
    ?result=p1;
    ?result[2]=p2[0];
    ?result[3]=p2[1];?
    ?result[4]='\0';?
    ?return result;
    ?}
    ?? else{
    ??? //if(t[0]>64)
    ??? char * p=new char[3];
    ??? p=strToHex(t[0]);
    ??? p[2]='\0';
    ??? return? p;
    ?? }

    }

    ?

    //數(shù)字轉(zhuǎn)為二進(jìn)制(255以?xún)?nèi)的正數(shù))
    char* strToBinary(int i){
    ?char *result=new?? char[9];
    ?int n=1;
    ?int m;
    ?int c=0;
    ?int j=8;
    ?for(c=0;c<8;c++){
    ??m=i%2;
    ??j=j-1;
    ??i=n=i/2;
    ??if(n>=0){
    ???if (m>0){
    ????result[j]='1';
    ???}else
    ???{
    ????result[j]='0';
    ???}?
    ??}
    ??
    ?}
    ?result[8]='\0';
    ?
    //?cout<<result;
    ?return result;
    }
    //數(shù)字轉(zhuǎn)為十六進(jìn)制(255以?xún)?nèi)的正數(shù))
    char* strToHex(int i){
    ?char *result=new?? char[3];
    ?int n=1;
    ?int m;
    ?int c=0;
    ?int j=2;
    ?for(c=0;c<2;c++){
    ??m=i%16;
    ??j=j-1;
    ??i=n=i/16;
    ??if(n>=0){
    ???if (m>0){
    ????if (m==1){
    ????????????????? result[j]='1';
    ????}
    ????else if (m==2){
    ?????result[j]='2';
    ????}
    ????else if (m==3){
    ?????result[j]='3';
    ????}
    ????else if (m==4){
    ?????result[j]='4';
    ????}
    ????else if (m==5){
    ?????result[j]='5';
    ????}
    ????else if (m==6){
    ?????result[j]='6';
    ????}
    ????else if (m==7){
    ?????result[j]='7';
    ????}
    ????else if (m==8){
    ?????result[j]='8';
    ????}
    ????else if (m==9){
    ?????result[j]='9';
    ????}
    ????else if (m==10){
    ?????result[j]='A';
    ????}
    ????else if (m==11){
    ?????result[j]='B';
    ????}
    ????else if (m==12){
    ?????result[j]='C';
    ????}
    ????else if (m==13){
    ?????result[j]='D';
    ????}
    ????else if (m==14){
    ?????result[j]='E';
    ????}
    ????else if (m==15){
    ?????result[j]='F';
    ????}
    ???}else
    ???{
    ????result[j]='0';
    ???}?
    ??}
    ?}
    ?result[2]='\0';
    ?return result;
    }

    posted @ 2009-03-19 16:37 華夢(mèng)行 閱讀(183) | 評(píng)論 (0)編輯 收藏

    #include <iostream.h>

    #include <string>
    void yihuo(char *t,int n, int m);
    void? myToBinary();
    void transToGKB(char *t);
    void? myToHex();
    int main(){
    //cout<<"GOOD";
    int i=122;
    int j=233;
    int m=j^i;
    ?char t[128]={0xC9,0xCC,0xC9,0xCC,0xC9,0xCC,'\0',0xC9,0xCC,0xC9,0xCC};
    yihuo(t,0, 2);
    //?transToGKB(t);
    //cout<<m;
    //yihuo(2, 3);
    //myToHex();
    // myToBinary();
    cout<<endl;
    return 0;
    }
    //進(jìn)制之間的轉(zhuǎn)換
    ? // 字符串傳為16進(jìn)制
    void? myToHex(){
    ?char c[] = "CC";
    ?unsigned long tt= strtoul(c, NULL, 16);
    cout<<strtol(c, NULL, 16);

    }

    // 字符串傳為16進(jìn)制
    void? myToBinary(){
    ?char c[] = "10000000";
    //?unsigned long tt= strtoul(c, NULL, 2);
    ?cout<<strtol(c, NULL, 2);
    ?
    ?
    }
    //漢字的轉(zhuǎn)換, 16進(jìn)制轉(zhuǎn)換為漢字
    void transToGKB(char *t){

    ?
    ?//?char *t="商戶(hù)";
    ?//?CharN
    ?//如果是負(fù)數(shù),則轉(zhuǎn)為正整數(shù)
    ?//?if(0>t[0]){
    ?//??? res=256+t[0];
    ?//?}
    ?int j=t[0];
    ?cout<<t<<endl;

    }


    void yihuo(char *t,int n, int m) {

    ?char *tt="商戶(hù)說(shuō)的算";
    ??? //轉(zhuǎn)成數(shù)字并且保存到數(shù)組,然后求異或

    ?//求的長(zhǎng)度
    const int mylen=strlen(tt)+1;
    char mysplit[1000];
    //循環(huán)對(duì)這個(gè)整形數(shù)組進(jìn)行賦值
    int i=0;
    for(i<0;i<mylen-1;i++){
    ?if (tt[i]<0){
    mysplit[i]=256+tt[i];
    ?}else
    ?{
    mysplit[i]=tt[i];
    ?}
    }
    int result=mysplit[n-1];
    int j;
    for(j=n;j<n+m;j++){
    ?result=result^mysplit[n];
    ?cout<<"L"<<endl;
    cout<<mysplit[n];
    ?cout<<"M"<<endl;

    }

    //進(jìn)行遍歷求異或
    mysplit[mylen-1]='\0';
    cout<<mysplit;

    cout<<"ee";
    if(result<0)
    result=256+result;
    cout<<result;
    ?//int j=t[0];
    //?cout<<t<<endl;

    ?}

    ?

    posted @ 2009-03-17 17:47 華夢(mèng)行 閱讀(453) | 評(píng)論 (0)編輯 收藏
    Integer.parseInt(String.valueOf(o));
    posted @ 2009-03-14 15:21 華夢(mèng)行 閱讀(272) | 評(píng)論 (0)編輯 收藏

    Private Sub UserControl_ReadProperties(PropBag As PropertyBag)


    ?Text1.Text = PropBag.ReadProperty("RecordSource", _
    ?????? m_def_recordSource)
    ? Text2.Text = PropBag.ReadProperty _
    ?? ("ConnectionString", m_def_connectionString)


    End Sub

    posted @ 2009-03-11 22:27 華夢(mèng)行 閱讀(130) | 評(píng)論 (0)編輯 收藏

    int main(void)
    {
    ?? int m=4;
    ?? int nn;
    ?? int? *n;
    ?? int *s;
    ?? int *p;
    ?? int *q;
    ?? n=&m;
    ??
    ? nn=n;
    ?? q=n;
    ? s=nn;
    ?? printf("%08x",*s);


    ?? return 0;
    }

    posted @ 2009-03-10 21:45 華夢(mèng)行 閱讀(135) | 評(píng)論 (0)編輯 收藏

    0xFFFFFF20? 數(shù)據(jù)輸入緩沖區(qū)
    0xFFFFFF24? 輸出數(shù)據(jù)緩沖區(qū)???
    0xFFFFFF28? 控制寄存器

    posted @ 2009-03-10 16:51 華夢(mèng)行 閱讀(234) | 評(píng)論 (0)編輯 收藏
    1.程序段:程序段為程序代碼在內(nèi)存中的映射.一個(gè)程序可以在內(nèi)存中多有個(gè)副本.
    2.初始化過(guò)的數(shù)據(jù):在程序運(yùn)行值初已經(jīng)對(duì)變量進(jìn)行初始化的
    3.未初始化過(guò)的數(shù)據(jù):在程序運(yùn)行初未對(duì)變量進(jìn)行初始化的數(shù)據(jù)
    4.堆(stack):存儲(chǔ)局部,臨時(shí)變量,在程序塊開(kāi)始時(shí)自動(dòng)分配內(nèi)存,結(jié)束時(shí)自動(dòng)釋放內(nèi)存.存儲(chǔ)函數(shù)的返回指針.
    5.棧(heap):存儲(chǔ)動(dòng)態(tài)內(nèi)存分配,需要程序員手工分配,手工釋放.
    ?

    # include <stdio.h>

    int g1=0, g2=0, g3=0;

    intmax(int i)
    {
    ????int m1=0,m2,m3=0,*p_max;
    ????static n1_max=0,n2_max,n3_max=0;
    ????p_max =(int*)malloc(10);
    ????printf("打印max程序地址\n");
    ????printf("in max: 0x%08x\n\n",max);
    ????printf("打印max傳入?yún)?shù)地址\n");
    ????printf("in max: 0x%08x\n\n",&i);
    ????printf("打印max函數(shù)中靜態(tài)變量地址\n");
    ????printf("0x%08x\n",&n1_max);//打印各本地變量的內(nèi)存地址
    ????printf("0x%08x\n",&n2_max);
    ????printf("0x%08x\n\n",&n3_max);
    ????printf("打印max函數(shù)中局部變量地址\n");
    ????printf("0x%08x\n",&m1);//打印各本地變量的內(nèi)存地址
    ????printf("0x%08x\n",&m2);
    ????printf("0x%08x\n\n",&m3);
    ????printf("打印max函數(shù)中malloc分配地址\n");
    ????printf("0x%08x\n\n",p_max);//打印各本地變量的內(nèi)存地址

    ????if(i)return 1;
    ????elsereturn 0;
    }

    int main(int argc,char**argv)
    {
    staticint s1=0, s2, s3=0;
    int v1=0, v2, v3=0;
    int*p;????
    p =(int*)malloc(10);

    printf("打印各全局變量(已初始化)的內(nèi)存地址\n");
    printf("0x%08x\n",&g1);//打印各全局變量的內(nèi)存地址
    printf("0x%08x\n",&g2);
    printf("0x%08x\n\n",&g3);
    printf("======================\n");
    printf("打印程序初始程序main地址\n");
    printf("main: 0x%08x\n\n", main);
    printf("打印主參地址\n");
    printf("argv: 0x%08x\n\n",argv);
    printf("打印各靜態(tài)變量的內(nèi)存地址\n");
    printf("0x%08x\n",&s1);//打印各靜態(tài)變量的內(nèi)存地址
    printf("0x%08x\n",&s2);
    printf("0x%08x\n\n",&s3);
    printf("打印各局部變量的內(nèi)存地址\n");
    printf("0x%08x\n",&v1);//打印各本地變量的內(nèi)存地址
    printf("0x%08x\n",&v2);
    printf("0x%08x\n\n",&v3);
    printf("打印malloc分配的堆地址\n");
    printf("malloc: 0x%08x\n\n",p);
    printf("======================\n");
    ????max(v1);
    printf("======================\n");
    printf("打印子函數(shù)起始地址\n");
    printf("max: 0x%08x\n\n",max);
    return 0;
    }

    ?

    這個(gè)程序可以大致查看整個(gè)程序在內(nèi)存中的分配情況:
    可以看出,傳入的參數(shù),局部變量,都是在棧頂分布,隨著子函數(shù)的增多而向下增長(zhǎng).
    函數(shù)的調(diào)用地址(函數(shù)運(yùn)行代碼),全局變量,靜態(tài)變量都是在分配內(nèi)存的低部存在,而malloc分配的堆則存在于這些內(nèi)存之上,并向上生長(zhǎng)

    posted @ 2009-03-10 15:40 華夢(mèng)行 閱讀(221) | 評(píng)論 (0)編輯 收藏

    #include <stdio.h>
    #include <string.h>
    hello(){
    char *hello="dddd大點(diǎn)的";
    int i;
    for(i=0;i<strlen(hello);i++){
    printf("%s\n",&hello[i]);
    }
    }
    void testStr(){
    int i=0;
    ?for(i=0;i<128;i++)
    ?{
    printf("%c",(char)i);
    ?}
    }
    void testmy(){
    ?char *hello="??大點(diǎn)的";

    ?char hellodd[]={hello};
    ?unsigned char test= hellodd[2];
    ?if(test>137){

    ?printf("大于%u",test);
    ?}else
    ?{
    ??printf("小于");
    ?}
    //putchar((char)hello[5]);
    printf("字符:%d \n",hellodd[2]);
    printf("%d",strlen( hellodd));

    }
    //相當(dāng)于substring
    teststrcopy(){
    char *s="到的得到";
    char d[]={"? "};
    //strncpy(d,s+0,2);
    strncpy(d,s,2);
    printf("%s\n",d);
    }
    int main(void){
    //testmy();
    ?//teststrcopy();
    ?return 0;
    }


    ?

    posted @ 2009-03-10 15:23 華夢(mèng)行 閱讀(83) | 評(píng)論 (0)編輯 收藏
    僅列出標(biāo)題
    共15頁(yè): 上一頁(yè) 1 2 3 4 5 6 7 8 9 下一頁(yè) Last 
    主站蜘蛛池模板: 成年女人午夜毛片免费看| 国产成人亚洲精品电影| 亚洲综合成人网在线观看| 国产亚洲成AV人片在线观黄桃| 久久久久亚洲AV成人网人人网站 | 久久受www免费人成_看片中文| 亚洲人精品午夜射精日韩| 亚洲日韩精品国产一区二区三区 | 午夜私人影院免费体验区| 香蕉视频亚洲一级| 亚洲国产精品综合久久网各| 国产情侣久久久久aⅴ免费| 中文字幕一精品亚洲无线一区| 啦啦啦中文在线观看电视剧免费版| 久久aa毛片免费播放嗯啊| 两个人看的www免费视频| 中文成人久久久久影院免费观看| 黄网站色视频免费在线观看的a站最新 | 五月亭亭免费高清在线| 免费毛片a在线观看67194| 性色av无码免费一区二区三区| 国产无遮挡吃胸膜奶免费看视频| 大胆亚洲人体视频| 久久亚洲高清综合| 亚洲天堂中文字幕| 2017亚洲男人天堂一| 色欲aⅴ亚洲情无码AV蜜桃| 在线播放国产不卡免费视频| 两个人看的www视频免费完整版| 波多野结衣免费一区视频 | 一个人看的免费观看日本视频www| 97在线免费观看视频| 7x7x7x免费在线观看| 久久综合AV免费观看| 亚洲国产成人久久一区久久| 亚洲成av人影院| 一本色道久久88亚洲精品综合| 国产亚洲男人的天堂在线观看| 成人免费777777被爆出| 免费观看国产网址你懂的| 日本高清免费中文字幕不卡|