#
ODS是一個面向主題的、集成的、可變的、當前的細節數據集合,用于支持企業對于即時性的、操作性的、集成的全體信息的需求。常常被作為數據倉庫的過渡,也是數據倉庫項目的可選項之一。
根據Bill.Inmon的定義,“數據倉庫是面向主題的、集成的、穩定的、隨時間變化的,主要用于決策支持的數據庫系統”
ODS是一個面向主題的、集成的、可變的、當前的細節數據集合,用于支持企業對于即時性的、操作性的、集成的全體信息的需 求。常常被作為數據倉庫的過渡,也是數據倉庫項目的可選項之一。
在Kimball的<<數據倉庫生命周期工具集The Data WareHouse Liftcycle Toolkit>>,他是這樣定義的:
1. 是操作型系統中的集成,用于當前,歷史以及其它細節查詢(業務系統的一部分)
2. 為決策支持提供當前細節數據(數據倉庫的一部分)
因此操作數據存儲(ODS) 是用于支持企業日常的全局應用的數據集合,ODS的數據具有面向主題、集成的、可變的和數據是當前的或是接近當前的4個基本特征。同樣也可以看出ODS是介于DB和DW 之間的一種數據存儲技術,和原來面向應用的分散的DB相比,ODS中的數據組織方式和數據倉庫(DW)一樣也是面向主題的和集成的,所以對進入ODS的數 據也象進入數據倉庫的數據一樣進行集成處理。另外ODS只是存放當前或接近當前的數據,如果需要的話還可以對ODS中的數據進行增、刪和更新等操 作,雖然DW中的數據也是面向主題和集成的,但這些數據一般不進行修改,所以ODS和DW的區別主要體現數據的可變性、當前性、穩定性、匯總度上。
由于ODS仍然存儲在普通的關系數據庫中,出于性能、存儲和備份恢復等數據庫的角度以及對源數據庫的性能影響角度,個人不建議ODS保存相當長周期的數據,同樣ODS中的數據也盡量不做轉換,而是原封不動地與業務數據庫保持一致。即ODS只是業務數據庫的一個備份或者映像,目的是為了使數據倉庫的處理和決策支持要求與OLTP系統相隔離,減少決策支持要求對OLTP系統的影響。
為什么需要有一個ODS系統呢?一般在帶有ODS的系統體系結構中,ODS都具備如下幾個作用:
1)在業務系統和數據倉庫之間形成一個隔離層。
一 般的數據倉庫應用系統都具有非常復雜的數據來源,這些數據存放在不同的地理位置、不同的數據庫、不同的應用之中,從這些業務系統對數據進行抽取并不是一件 容易的事。因此,ODS用于存放從業務系統直接抽取出來的數據,這些數據從數據結構、數據之間的邏輯關系上都與業務系統基本保持一致,因此在抽取過程中極 大降低了數據轉化的復雜性,而主要關注數據抽取的接口、數據量大小、抽取方式等方面的問題。
2)轉移一部分業務系統細節查詢的功能
在 數據倉庫建立之前,大量的報表、分析是由業務系統直接支持的,在一些比較復雜的報表生成過程中,對業務系統的運行產生相當大的壓力。ODS的數據從粒度、 組織方式等各個方面都保持了與業務系統的一致,那么原來由業務系統產生的報表、細節數據的查詢自然能夠從ODS中進行,從而降低業務系統的查詢壓力。
3)完成數據倉庫中不能完成的一些功能。
一般來說,帶有ODS的數據倉庫體系結構中,DW層所存儲的數據都是進行匯總過的數據和運營指標,并不存儲每筆交易產生的細節數據,但是在某些特殊的應用中,可能需要 對交易細節數據進行查詢,這時就需要把細節數據查詢的功能轉移到ODS來完成,而且ODS的數據模型按照面向主題的方式進行存儲,可以方便地支持多維分析 等查詢功能。即數據倉庫從宏觀角度滿足企業的決策支持要求,而ODS層則從微觀角度反映細節交易數據或者低粒度的數據查詢要求。
在一個沒有ODS層的數據倉庫應用系統體系結構中,數據倉庫中存儲的數據粒度是根據需要而確定的,但一般來說,最為細節的業務數據也是需要保留的,實際上 也就相當于ODS,但與ODS所不同的是,這時的細節數據不是“當前、不斷變化的”數據,而是“歷史的,不再變化的”數據。這樣的數據倉庫的存儲壓力和性能壓力都是比較大的,因此對數據倉庫的物理設計和邏輯設計提出了更高的要求。
哈哈!!!
面試官:熟悉哪種語言
應聘者:Java。
面試官:知道什么叫類么
應聘者:我這人實在,工作努力,不知道什么叫累
面試官:知道什么是包?
應聘者:我這人實在 平常不帶包 也不用公司準備了
面試官:知道什么是接口嗎?
應聘者:我這個人工作認真。從來不找借口偷懶
M:知道什么是繼承么
Y:我是孤兒沒什么可以繼承的
M:知道什么叫對象么?
M:知道,不過我工作努力,上進心強,暫時還沒有打算找對象。
M:知道多態么?
Y:知道,我很保守的。我認為讓心愛的女人為了自已一時的快樂去墮胎是不道德的行為!
請問這和Java有什么關系??
面試官:用過 apache 的東西嗎
應聘者:我修過車子
M:tomcat了解么
Y:小時看過。。現在也喜歡看
面試官:了解webwork嗎
應聘者:不了解。我一直專注于本職工作,對外部的沒有時間涉獵。
M:了解jakarta的哪些項目?
Y:不了解,我只去那兒旅游過。
M:用過bea的weblogic嗎?
Y:沒,只喝過蜂蜜。
M:了解SUN的創始人嗎?
Y:不知道,不過我爆喜歡隊中的納什
M:用過spring么?
Y:沒用過,發過。
M:知道Hibernate嗎
Y:知道,動物冬天經常Hibernate,但我從來不冬眠
M:知道css嗎?
Y:cs出加強版了?
M:OCR用作過沒?
Y:我從不玩魔獸
M:W3C標準常用什么地方
Y:Lost Tample
M:知道REST么?
Y:我很勤奮,只知道干活,不知道休息。
終于買了一個掌上電腦,我又開始關注Palm開發了。Palm上雖然可以安裝Java虛擬機,但據我所知絕大多數用戶受里的Palm并沒有安裝,讓他們為了用你的一個小軟件而裝虛擬機不太現實,因此只能用C/C++了。大學里學的C語言一直沒有實際應用過,所以經過這么多年也和沒學差不多,最近通過看wj給我的書,對C語言又有了重新的認識。不過C語言是面向過程的,我在Java里積累的經驗似乎幫不上什么忙,邊走邊看吧。我在“Palm開發”這個分類里記錄學習過程,這是第一篇,先介紹一下PODS的使用方法。
如果不熟悉Palm,可以先通過這篇文章了解一下Palm公司的歷史和產品。沒有掌上電腦也可以開發Palm應用,你可以在模擬器上運行和調試,但我相信把自己編寫的應用程序拿在手里的感覺一定不錯。
Palm OS Developer Suite(PODS)是PalmSource提供的基于Eclipse的Palm應用程序開發工具,它包含了編譯工具、調試工具、模擬器、資源編輯工具和Palm SDK等等,可以在這個地址下載。雖然很多人都使用CodeWarrier開發Palm應用程序,但PODS畢竟是PalmSource官方推出的開發工具,從最初的1.0到現在的1.2版本看來,支持得也不錯,加上它是基于我們熟悉的Eclipse平臺,更重要的一點它是免費的,所以我還是選擇了PODS。當然,用什么工具只能在一定程度上影響開發速度,熟練以后工具間的差別就不那么明顯了。
我目前收集到的Palm開發資料主要有這幾部分:首先是PalmSource網站上提供的不少pdf文檔,對入門者比較有用的是“Palm OS Companion”和“Palm OS Reference”這兩份,還有一個“UI Guideline”在設計窗體之前可以看看;另一個是PalmOS的開發者新聞組(news.palmos.com),比較活躍,到現在已經有超過10萬個post了;最后就是紙版的圖書,我找到的比較新的中文書籍是《PalmOS編程寶典(第二版)》,網上可以找到該書第一版的英文電子版,決定購買以前可以先看一下。
PODS的安裝很簡單:運行你下載的安裝文件就可以了(PODS沒有Linux的版本,它帶的模擬器也是運行在Windows里的,所以我暫時還是要用回Windows了),可能需要你的機器里事先裝有JRE。安裝以后在“開始”菜單里會出現PODS組,其中有兩個模擬器(Simulator,注意和Emulator的區別),開發OS5及以下應用程序用Garnet Simulator,開發OS6應用程序用Cobalt Simulator,所以我們一般用前者,它的樣子見圖1。

圖1 Garnet模擬器
如果你用過Eclipse,對PODS的界面也不會感到陌生,基本上PODS就是在Eclipse里加了個透視圖(Perspective)和一些向導,PODS 1.2版本帶的Eclipse是3.0.1版本,顯得有點過時了(也許可以把PODS那部分拿出來放在新版本Eclipse和CDT里,不知道能不能兼容),圖2是PODS的運行界面。

圖2 PODS的運行界面
環境看得差不多了,現在試著創建第一個Palm應用程序吧。在新建向導里創建“Managed Make 68K C/C++ Project”,如圖3。這種應用程序可以運行在各個版本的Palm上,具有最好的兼容性。

圖3 創建Palm應用程序
按下一步按鈕,給項目起個名字“hello”,見圖4。

圖4 給項目起名
按下一步按鈕,這里要指定你的應用程序的一些屬性,對普通應用程序來說,大部分可以不動,只有“Creator ID”這一項必須改為其他值。按正規的流程,我們首先要在palmos網站上注冊自己唯一的ID,然后把這個ID填在這里,目的是避免應用程序間的沖突。因為現在只是試驗,隨便改成“HELL”就可以了,見圖5。

圖5 修改Creator ID
按下一步按鈕,在這一步里PODS提供了一些代碼模板,這樣可以不用從零開始寫每個程序。我們選擇“Sample Application”這一項,見圖6,這樣在向導結束后我們會得到一個很簡單的應用程序。

圖6 選擇一個模板
現在直接按Finish按鈕結束向導,這時要稍等一會兒,PODS在生成必要的代碼和編譯它們。簡單來看一下生成的代碼,主要的程序文件是src目錄下的AppMain.c文件,注意它的入口方法不是main()而是PilotMain(),這個文件里的內容以后的帖子里會說明;在rsc目錄下生成了名為AppResources.xrd的文件,這是一個資源文件,如果你在PODS里雙擊它,會打開Palm OS資源編輯器,見圖7,在資源編輯器里你可以編輯窗體、定義菜單、定義圖標、定義字符串等等。

圖7 Palm OS資源編輯器
怎樣在模擬器里運行這個應用程序呢?首先確認你已經啟動了Garnet模擬器;然后在PODS里選擇菜單“Run->Run...”,這將彈出一個對話框。在對話框左邊選中“Palm OS Application”,然后按下面的New按鈕,在“Palm OS Application”下面會出現一個新的節點(運行項);選中這個節點,在對話框右半部分把它的名稱改為和項目名一樣的“hello”,并確認“Files to install”框里只勾選了hello項目;點擊Target屬性頁,在Device下拉列表里選擇“Palm OS Garnet Simulator 5.4”,這個設置很重要,不要忽略。
現在運行項已經配置好了,見圖8,按下對話框右下方的Run按鈕即可運行程序。注意,以上這個過程對一個項目只需要配置一次就夠了,再需要運行可以在PODS的工具欄里直接按Run下拉按鈕。

圖8 為hello項目配置運行項
我們第一個應用程序在模擬器上運行的界面如圖9所示。

圖9 第一個應用程序
你可能已經注意到了,在項目的Debug目錄下已經生成了hello.prc文件,這個文件可以直接在Palm設備上運行(方法和安裝其他軟件一樣,通過同步,或者復制到擴展卡上,等等),圖10是我們的hello項目在真正的Palm上運行的樣子。

圖10 運行在Palm T|X上的hello項目
-----------------------------------------------------------------------------------------------------------------------
本文轉自
http://www.cnblogs.com/bjzhanghao/archive/2006/06/09/421821.html
討論與Blog相關的技術,不可不談的就是RSS,這個縮寫在英文中可以有幾個源頭,并被不同的技術團體做不同的解釋。既可以是“Rich Site Summary”,或“RDF Site Summary”,也可以是“Really Simple Syndication”。為什么有這么多含義呢?這還要從RSS的一段今天也沒有理清的關系說起。
今天肯定有人還記得IE 4剛剛推出來的時候有一個有趣的功能,那就是新聞頻道。這個新聞頻道的功能與Netscape推出的新聞頻道是很相似的(當時Netscape還是市場上領先的瀏覽器)。為此Netscape 定義了一套描述新聞頻道的語言,這就是RSS,只不過Netscape自當時起每況愈下,所以最終也沒有發布一個正式的RSS規范(只發布了一個0.9版本)。而微軟也在當時推出了支持自己IE的CDF(Channel Definition Format)數據規格,與RSS非常接近。微軟試圖用新聞頻道的功能把“推”(Push)技術變成一個應用主流,并與Netscape抗衡。不過出乎預測的是,“推”技術自始至終沒有找到合適的商業模型,而且伴隨著其他各類網絡特性的出現,也日益無法顯現自身的優勢。新聞頻道在瀏覽器中的地位最終日暮西山,最后也在IE的后續版本中消失了。
新聞頻道的確進入了低谷,但是RSS并沒有被業界人士所拋棄。過去兩年,Blog從一個專業群體開始,逐步成為了網絡上最熱門的新話題。而RSS成為了描述Blog主題和更新信息的最基本方法。于是RSS這項技術被著名Blogger/Geek戴夫·溫那(Dave Winner)的公司UserLand所接手,繼續開發新的版本,以適應新的網絡應用需要。新的網絡應用就是Blog,因為戴夫·溫那的努力,RSS升級到了0.91版,然后達到了0.92版,隨后在各種Blog工具中得到了應用,并被眾多的專業新聞站點所支持。在廣泛的應用過程中,眾多的專業人士認識到需要組織起來,把RSS發展成為一個通用的規范,并進一步標準化。一個聯合小組根據W3C新一代的語義網技術RDF對RSS進行了重新定義,發布了RSS 1.0,并把RSS定義為“RDF Site Summary”。這項工作并沒有與戴夫·溫那進行有效的溝通,而戴夫則堅持在自己設想的方向上進一步開發RSS的后續版本,也并不承認RSS 1.0的有效性。RSS由此開始分化形成了RSS 0.9x/2.0和RSS 1.0兩個陣營,也由此引起了在專業人群中的廣泛爭論。
因為爭論的存在,一直到今天,RSS 1.0還沒有成為標準化組織的真正標準。而戴夫·溫那卻在2002年9月獨自把RSS升級到了2.0版本,其中的定義完全是全新的模式,并沒有任何RSS 1.0的影子。這引發了網絡上進一步爭議,究竟讓一個越來越普及的數據格式成為一個開放的標準,還是被一家公司所定義和控制,成為了爭議的焦點。戴夫·溫那并沒有為自己辯解,他的觀點是RSS還需要進一步發展,需要專業人士更明確的定義,不過恐怕這種輕描淡寫不能消除人們對RSS“被一家商業公司獨占”的擔心。
前面的鋪墊對用戶來說也許沒有什么太大的意義,可能更多人關心如何在自己的Blog增加RSS輸出,這樣可以讓很多新聞聚合工具(例如CNBlog剛剛推薦的NewzCrawler)很容易找到你并自動獲得你在Blog中的更新內容。
它是什么:站點用來和其他站點之間共享內容的簡易方式(也叫聚合內容)。 RSS使肵ML作為彼此共享內容的標準方式。
它代表什么:Really Simple Syndication (或RDF Site Summary,RDF站點摘要)
例如:一些免費的軟件能夠讓你閱讀那些RSS使能的站點,比如 NewsIsFree 和 Amphetadesk。
它有什么用處:讓別人容易的發現你已經更新了你的站點,讓人們很容易的追蹤他們閱讀的所有weblogs。
原文出處:博客中國
這幾天架設了一個電影服務器,研究了很久,現在把一些網頁播放器的參數含義整理出來,你別說,就這些參數還折騰了我好長時間,現在終于解決了,感謝各位網友,把它整理處理,也是為了以后好用!
網頁播放器的參數含義 Windows Media Player 網頁播放器 參數含義
(默認0為否,-1或1為是)
<object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" id="MediaPlayer1" width="286" height="225">
????<param name="AudioStream" value="-1">
????<param name="AutoSize" value="-1">
????<!--是否自動調整播放大小-->
????<param name="AutoStart" value="-1">
????<!--是否自動播放-->
????<param name="AnimationAtStart" value="-1">
????<param name="AllowScan" value="-1">
????<param name="AllowChangeDisplaySize" value="-1">
????<param name="AutoRewind" value="0">
????<param name="Balance" value="0">
????<!--左右聲道平衡,最左-9640,最右9640-->
????<param name="BaseURL" value>
????<param name="BufferingTime" value="15">
????<!--緩沖時間-->
????<param name="CaptioningID" value>
????<param name="ClickToPlay" value="-1">
????<param name="CursorType" value="0">
????<param name="CurrentPosition" value="0">
????<!--當前播放進度 -1 表示不變,0表示開頭 單位是秒,比如10表示從第10秒處開始播放,值必須是-1.0或大于等于0-->
????<param name="CurrentMarker" value="0">
????<param name="DefaultFrame" value>
????<param name="DisplayBackColor" value="0">
????<param name="DisplayForeColor" value="16777215">
????<param name="DisplayMode" value="0">
????<param name="DisplaySize" value="0">
????<!--視頻1-50%, 0-100%, 2-200%,3-全屏 其它的值作0處理,小數則采用四舍五入然后按前的處理-->
????<param name="Enabled" value="-1">
????<param name="EnableContextMenu" value="-1">
????<!-是否用右鍵彈出菜單控制-->
????<param name="EnablePositionControls" value="-1">
????<param name="EnableFullScreenControls" value="-1">
????<param name="EnableTracker" value="-1">
????<!--是否允許拉動播放進度條到任意地方播放-->
????<param name="Filename" value="/blog/01.wma" valuetype="ref">
????<!--播放的文件地址-->
????<param name="InvokeURLs" value="-1">
????<param name="Language" value="-1">
????<param name="Mute" value="0">
????<!--是否靜音-->
????<param name="PlayCount" value="10">
????<!--重復播放次數,0為始終重復-->
????<param name="PreviewMode" value="-1">
????<param name="Rate" value="1">
????<!--播放速率控制,1為正常,允許小數-->
????<param name="SAMIStyle" value>
????<!--SAMI樣式-->
????<param name="SAMILang" value>
????<!--SAMI語言-->
????<param name="SAMIFilename" value>
????<!--字幕ID-->
????<param name="SelectionStart" value="-1">
????<param name="SelectionEnd" value="-1">
????<param name="SendOpenStateChangeEvents" value="-1">
????<param name="SendWarningEvents" value="-1">
????<param name="SendErrorEvents" value="-1">
????<param name="SendKeyboardEvents" value="0">
????<param name="SendMouseClickEvents" value="0">
????<param name="SendMouseMoveEvents" value="0">
????<param name="SendPlayStateChangeEvents" value="-1">
????<param name="ShowCaptioning" value="0">
????<!--是否顯示字幕,為一塊黑色,下面會有一大塊黑色,一般不顯示-->
????<param name="ShowControls" value="-1">
????<!--是否顯示控制,比如播放,停止,暫停-->
????<param name="ShowAudioControls" value="-1">
????<!--是否顯示音量控制-->
????<param name="ShowDisplay" value="0">
????<!--顯示節目信息,比如版權等-->
????<param name="ShowGotoBar" value="0">
????<!--是否啟用上下文菜單-->
????<param name="ShowPositionControls" value="-1">
????<!--是否顯示往前往后及列表,如果顯示一般也都是灰色不可控制-->
????<param name="ShowStatusBar" value="-1">
????<!--當前播放信息,顯示是否正在播放,及總播放時間和當前播放到的時間-->
????<param name="ShowTracker" value="-1">
????<!--是否顯示當前播放跟蹤條,即當前的播放進度條-->
????<param name="TransparentAtStart" value="-1">
????<param name="VideoBorderWidth" value="0">
????<!--顯示部的寬部,如果小于視頻寬,則最小為視頻寬,或者加大到指定值,并自動加大高度.此改變只改變四周的黑框大小,不改變視頻大小-->
????<param name="VideoBorderColor" value="0">
????<!--顯示黑色框的顏色, 為RGB值,比如ffff00為黃色-->
????<param name="VideoBorder3D" value="0">
????<param name="Volume" value="0">
????<!--音量大小,負值表示是當前音量的減值,值自動會取絕對值,最大為0,最小為-9640-->
????<param name="WindowlessVideo" value="0">
????<!--如果是0可以允許全屏,否則只能在窗口中查看-->
</object>
上面的這個播放器是老式的那種,6.4版本!新式播放器是在MediaPlayer9.0以后出現的,也就是說只有裝了9.0或9.0以上的播放器才能正常使用的。
-------------------------------------------------------------------------------
下面是新式播放器代碼,相對以前的來說要簡單很多:
<object id="player" height="64" width="260" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">
????<param NAME="AutoStart" VALUE="-1">
????<!--是否自動播放-->
????<param NAME="Balance" VALUE="0">
????<!--調整左右聲道平衡,同上面舊播放器代碼-->
????<param name="enabled" value="-1">
????<!--播放器是否可人為控制-->
????<param NAME="EnableContextMenu" VALUE="-1">
????<!--是否啟用上下文菜單-->
????<param NAME="url" value="/blog/1.wma">
????<!--播放的文件地址-->
????<param NAME="PlayCount" VALUE="1">
????<!--播放次數控制,為整數-->
????<param name="rate" value="1">
????<!--播放速率控制,1為正常,允許小數,1.0-2.0-->
????<param name="currentPosition" value="0">
????<!--控件設置:當前位置-->
????<param name="currentMarker" value="0">
????<!--控件設置:當前標記-->
????<param name="defaultFrame" value="">
????<!--顯示默認框架-->
????<param name="invokeURLs" value="0">
????<!--腳本命令設置:是否調用URL-->
????<param name="baseURL" value="">
????<!--腳本命令設置:被調用的URL-->
????<param name="stretchToFit" value="0">
????<!--是否按比例伸展-->
????<param name="volume" value="50">
????<!--默認聲音大小0%-100%,50則為50%-->
????<param name="mute" value="0">
????<!--是否靜音-->
????<param name="uiMode" value="mini">
????<!--播放器顯示模式:Full顯示全部;mini最簡化;None不顯示播放控制,只顯示視頻窗口;invisible全部不顯示-->
????<param name="windowlessVideo" value="0">
????<!--如果是0可以允許全屏,否則只能在窗口中查看-->
????<param name="fullScreen" value="0">
????<!--開始播放是否自動全屏-->
????<param name="enableErrorDialogs" value="-1">
????<!--是否啟用錯誤提示報告-->
????<param name="SAMIStyle" value>
????<!--SAMI樣式-->
????<param name="SAMILang" value>
????<!--SAMI語言-->
????<param name="SAMIFilename" value>
????<!--字幕ID-->
</object>
Real Player 網頁播放器 參數含義
參數:autostart 屬性:True或是False 作用:指定是否自動播放指定的源文件
參數:backgroundcolor 屬性:任何用符號“#”開頭的16進制數值或是任何預定義的顏色作用:指定圖像窗口的背景顏色
參數:center 屬性:True或是False 作用:指定片斷使用初始編碼大小播放,并且在圖像窗口的中央。
參數:classid 屬性:"clsid:CFCDAA03-8BE4-1lcf-B84B0020AFBBCCFA:** 作用:用于指定ActiveX控件的唯一的字符串標示,可以認出嵌入的RealPalyer播放器。
參數:console 屬性:任何字符串作用:可以將各種不同的RealPlayer控制聚集在網頁上,這樣它們可以交互使用或是保持獨立,而且互相不影響
參數:controls 屬性:ImageWindow,All,ControlPanel,PlavButton,PlayOnlyButton, PauseButton,StopButton,FFCtrl,RWCtrl,MuteCtrl,MuteVolume,VolumeSlider,PositionSlider,TACCtrl,HomeCtrl,InfoVolumePanel,InfoPanel,StatusBar,StatusField,PositionField 作用:可以讓你指定那些控制是可見的。
參數:height 屬性:任何整數值作用:指定RealPlayer元素的高度,單位:像素
參數:id 屬性:任何字符串作用:為標簽中的RealPlayer元素指定名字。
參數:imagestatus 屬性:True或是False 作用:指定是否在圖像窗口中顯示狀態信息,默認值是true
參數:loop 屬性:True或是False 作用:可以讓你指定片斷是否無限循環
參數:maintainaspect 屬性:True或是False 作用:默認RealPlayer拉伸所有的片斷來充滿整個圖像窗口。
參數:name 屬性:任何字符串作用:為標簽中的RealPlayer元素指定名字(在標簽中使用id)
參數:nojava 屬性:True或是False 作用:避免啟動Java虛擬機
參數:nolabels 屬性:True或是False 作用:可以禁止顯示標題或是版權信息(realplayer5.0以上時,它是垃圾...)
參數:nologo 屬性:True或是False 作用:避免RealPlayer啟動時在圖像窗口中顯示
參數:numloop 屬性:任何整數值作用:讓你能夠指定文件片循環的次數,不需要參數loop
參數:prefetch 屬性:True或是False 作用:指定在播放前,RealPlayer是否可以獲得流描述信息,默認值是False
參數:region 屬性:任何字符串作用:同SMIL一起使用。允許你指定使用HTML代替SMIL
參數:scriptcallbacks 屬性:用逗號分割的列表作用:指定瀏覽器的回調監控(好高級的東東!)
參數:shuffle 屬性:True或是False 作用:同多文件片的ram文件或是SMIL文件一起使用。可以讓RealPlayer隨機播放列表中的文件
參數:src 屬性:任何合法的相對或是完整的URL 作用:指定播放的文件或是源文件的地址
參數:type 屬性:字符串作用:為嵌入插件指定MIME類型
參數:width 屬性:任何整數值作用:指定RealPlayer元素的寬度
controls的屬性含義...
組件:imagewindow
作用:視頻顯示區域
組件:All
作用:嵌入RealPlaver的所有按鈕、滑動條和信息面板
組件:ControlPanel
作用:顯示所有的控制按鈕,以及位置滑動條和揚聲器圖標,和調節聲音大小的滑動條
組件:PlayButton
作用:顯示播放(play)按鈕和暫停(pause)按鈕
組件:PlayOnlyButton
作用:僅顯示播放按鈕
組件:PauseButton
作用:僅顯示暫停按鈕
組件:StopButton
作用:僅顯示停止(stop)按鈕
組件:FFCtrl
作用:僅顯示快進(fastforward)按鈕
組件:RWCtrl
作用:僅顯示回放(rewind)按鈕
組件:MuteCtrl
作用:僅顯示揚聲器圖標,用作靜音按鈕
組件:MuteVolume
作用:顯示小的揚聲器圖標(用于靜音)和其上的用于調節音量的滑動條
組件:VolumeSlider
作用:僅顯示豎直的音量滑動條
組件:PositionSlider
作用:顯示水平的位置滑動條
組件:tacctrl
作用:顯示水平的消息框,輪流顯示標題、作者以及版權信息
組件:HomeCtrl
作用:顯示小的Real標識
組件:infoVolumePanel
作用:顯示黑的消息框,用綠色顯示標題、作者以及版權信息,在右手方有揚聲器圖標和聲音調節滑動條
組件:infoPanel
作用:同上面一樣,但是沒有靜音按鈕和聲音調節滑動條
組件:StatusBar
作用:顯示水平的消息框,顯示片斷信息,比如片斷的時間,網絡狀況等等
組件:StatusField
作用:同StatusBar類似,但是只顯示消息區域,顯示網絡消息,比如顯示“Re-buffenng...”
組件:PositionField
作用:小的黑的消息框,顯示整個文件片斷長度以及當前幀在片內的位置
嵌入RealOne播放器
<object ID="rPlayer" CLASSID="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" HEIGHT="100%" WIDTH="100%">
<param name="_ExtentX" value="23627">
<param name="_ExtentY" value="15187">
<param name="AUTOSTART" value="-1">
<param name="SHUFFLE" value="0">
<param name="PREFETCH" value="0">
<param name="NOLABELS" value="0">
<param name="SRC" value="http://www.blogerhome.com/address.asp?num=24009987&id=10019">
<param name="CONTROLS" value="ImageWindow">
<param name="CONSOLE" value="Clip1">
<param name="LOOP" value="0">
<param name="NUMLOOP" value="0">
<param name="CENTER" value="0">
<param name="MAINTAINASPECT" value="0">
<param name="BACKGROUNDCOLOR" value="#000000">
</object>
嵌入MediaPlayer播放器
<object id="MediaPlayer" width="478" height="300" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.
cab#Version=6,1,5,217" type="application/x-oleobject" standby="Loading Microsoft Windows Media Player components..." classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" VIEWASTEXT>
<param name="DisplayBackColor" value="0">
<param name="DisplayForeColor" value="16777215">
<param name="DisplayMode" value="0">
<param name="DisplaySize" value="-1">
<param name="Filename" value="mms://www.webjx.com/視頻文件.wmv">
<!-- 此處設置播放的視頻連接 -->
<param name="ShowControls" value="0">
</object>
RealPlayer的一些函數、方法和過程
這是 Real Player ActiveX Control Library (Version 1.0) 的所有函數與方法,有興趣可以研究一下。
function GetSource: WideString;
procedure SetSource(const lpszNewValue: WideString);
function GetConsole: WideString;
procedure SetConsole(const lpszNewValue: WideString);
function GetControls: WideString;
procedure SetControls(const lpszNewValue: WideString);
function GetNoLabels: WordBool;
procedure SetNoLabels(bNewValue: WordBool);
function GetAutoStart: WordBool;
procedure SetAutoStart(bNewValue: WordBool);
function GetAutoGotoURL: WordBool;
procedure SetAutoGotoURL(bNewValue: WordBool);
function GetVolume: Smallint;
procedure SetVolume(nVol: Smallint);
function GetMute: WordBool;
procedure SetMute(bMute: WordBool);
function GetLoop: WordBool;
procedure SetLoop(bVal: WordBool);
function GetImageStatus: WordBool;
procedure SetImageStatus(bEnable: WordBool);
function GetPacketsTotal: Integer;
function GetPacketsReceived: Integer;
function GetPacketsOutOfOrder: Integer;
function GetPacketsMissing: Integer;
function GetPacketsEarly: Integer;
function GetPacketsLate: Integer;
function GetBandwidthAverage: Integer;
function GetBandwidthCurrent: Integer;
procedure DoPlayPause;
procedure DoStop;
procedure DoNextItem;
procedure DoPrevItem;
function CanPlayPause: WordBool;
function CanStop: WordBool;
function HasNextItem: WordBool;
function HasPrevItem: WordBool;
function HasNextEntry: WordBool;
function HasPrevEntry: WordBool;
procedure DoNextEntry;
procedure DoPrevEntry;
procedure AboutBox;
procedure EditPreferences;
procedure HideShowStatistics;
function IsStatisticsVisible: WordBool;
procedure DoGotoURL(const url: WideString; const target: WideString);
procedure DoPlay;
procedure DoPause;
function GetPosition: Integer;
function GetPlayState: Integer;
function GetLength: Integer;
function GetTitle: WideString;
function GetAuthor: WideString;
function GetCopyright: WideString;
function GetClipWidth: Integer;
function GetClipHeight: Integer;
function CanPlay: WordBool;
function CanPause: WordBool;
procedure SetPosition(lPosition: Integer);
function GetNumLoop: Integer;
procedure SetNumLoop(lVal: Integer);
function GetCenter: WordBool;
procedure SetCenter(bVal: WordBool);
function GetNoLogo: WordBool;
procedure SetNoLogo(bVal: WordBool);
function GetMaintainAspect: WordBool;
procedure SetMaintainAspect(bVal: WordBool);
function GetBackgroundColor: WideString;
procedure SetBackgroundColor(const pVal: WideString);
function GetStereoState: WordBool;
function GetLiveState: WordBool;
function GetShowStatistics: WordBool;
procedure SetShowStatistics(bVal: WordBool);
function GetShowPreferences: WordBool;
procedure SetShowPreferences(bVal: WordBool);
function GetShowAbout: WordBool;
procedure SetShowAbout(bVal: WordBool);
function GetOriginalSize: WordBool;
procedure SetOriginalSize;
function GetDoubleSize: WordBool;
procedure SetDoubleSize;
function GetFullScreen: WordBool;
procedure SetFullScreen;
function GetEnableContextMenu: WordBool;
procedure SetEnableContextMenu(bVal: WordBool);
function GetEnableOriginalSize: WordBool;
procedure SetEnableOriginalSize(bVal: WordBool);
function GetEnableDoubleSize: WordBool;
procedure SetEnableDoubleSize(bVal: WordBool);
function GetEnableFullScreen: WordBool;
procedure SetEnableFullScreen(bVal: WordBool);
function GetEnableMessageBox: WordBool;
procedure SetEnableMessageBox(bVal: WordBool);
procedure SetTitle(const pVal: WideString);
procedure SetAuthor(const pVal: WideString);
procedure SetCopyright(const pVal: WideString);
function GetWantKeyboardEvents: WordBool;
procedure SetWantKeyboardEvents(bWantsEvents: WordBool);
function GetWantMouseEvents: WordBool;
procedure SetWantMouseEvents(bWantsEvents: WordBool);
function GetNumEntries: Smallint;
function GetCurrentEntry: Smallint;
function GetEntryTitle(uEntryIndex: Smallint): WideString;
function GetEntryAuthor(uEntryIndex: Smallint): WideString;
function GetEntryCopyright(uEntryIndex: Smallint): WideString;
function GetEntryAbstract(uEntryIndex: Smallint): WideString;
procedure SetCanSeek(bCanSeek: WordBool);
function GetCanSeek: WordBool;
function GetBufferingTimeElapsed: Integer;
function GetBufferingTimeRemaining: Integer;
function GetConnectionBandwidth: Integer;
function GetPreferedLanguageString: WideString;
function GetPreferedLanguageID: Integer;
function GetUserCountryID: Integer;
function GetNumSources: Smallint;
function GetSourceTransport(nSourceNum: Smallint): WideString;
function GetWantErrors: WordBool;
procedure SetWantErrors(bVal: WordBool);
function GetShuffle: WordBool;
procedure SetShuffle(bVal: WordBool);
function GetVersionInfo: WideString;
function GetLastMessage: WideString;
function GetLastErrorSeverity: Integer;
function GetLastErrorRMACode: Integer;
function GetLastErrorUserCode: Integer;
function GetLastErrorUserString: WideString;
function GetLastErrorMoreInfoURL: WideString;
procedure SetPreFetch(bVal: WordBool);
function GetPreFetch: WordBool;
procedure SetRegion(const pVal: WideString);
function GetRegion: WideString;
function GetIsPlus: WordBool;
function GetConsoleEvents: WordBool;
procedure SetConsoleEvents(bVal: WordBool);
function GetDRMInfo(const pVal: WideString): WideString;
property ControlInterface: IRealAudio read GetControlInterface;
property DefaultInterface: IRealAudio read GetControlInterface;
??????? 轉眼一載已逝,回想去年剛踏進公司的那個新的起點,到一年后的今天,是一個積累美好回憶的過程,也是一個自我成長的過程。
??????? 這種積累是從◎◎的新員工培訓開始。大家富有個性的自我介紹、課堂上踴躍和富有建設性的提問和發言,無不給人深深留下一種朝氣蓬勃、青春飛揚的記憶。公司領導耐心細致的回答、針對各種問題的討論、對公司過去的輝煌以及未來的暢想也給我留下了深刻的印象,在我的心中形成了一幅令人振奮的美好愿景。
??????? 拓展訓練中各種有趣的、賦有挑戰性的游戲,讓我們在放松、歡笑的背后了解到了團隊的力量,并增進了彼此的了解。在快樂安靜下來之后,我深深的感受到公司對我們的愛護和為培養我們所付出的良苦用心。我暗自慶幸,當初的選擇是正確的。我想我是幸運的,而且每個和我一同進入公司的人也都是幸運的。
??????? 為期近3個月的入職實習和培訓后,我們各自回到了自己的崗位投入了緊張的工作中,由于我所在的◎◎◎◎◎◎成立時間不長,很多方面的工作都處在起步階段,在剛到◎◎◎◎沒多久,領導就提出了建設一個自有◎◎◎◎平臺的設想,出于自己的興趣和領導的信任,我有幸參與了該平臺的建設工作,從平臺的設計、選型、建設施工到開始加載第一個◎◎,我一路陪伴著平臺從設計文檔變成推向市場的一個個◎◎。期間雖然經歷過一些坎坷,碰到過一些困難,但是在領導的耐心指導和大家的群策群力下(非常感謝各位領導、本部門以及外部門的同事們),最終還是取得了很多成績。目前,該平臺已承載了多項個人◎◎◎◎◎◎的運行,并對◎◎◎◎的營銷支撐做出了貢獻。
??????? 在今年三月,我的工作職責由產品開發調整到了產品營銷支撐和執行。崗位的調整帶來了很多的挑戰,因為新的崗位有著很多未知;崗位的調整也帶來很多機遇,因為我獲得了新的鍛煉和成長的機會。在新的崗位上,時間是最重要的關鍵詞,營銷工作尤其是營銷支撐和執行工作是在與時間賽跑,支撐主動化、執行模式化等舉措都是為了提高工作效率、提高反應速度。
??????? 在緊張工作的同時,公司對我們的培養也是從不間斷的。學分制的素質培訓、3◎培訓、項目管理培訓以及各種與本職工作相關的技能培訓,使我們在經驗積累的同時能及時得到理論的提高,理論知識在工作中又能立即得以應用,這種理論聯系實際的學習方式使我受益匪淺。
??????? 過去的一年已經過去,新的一年還會繼續。我有一個夢想,希望每一天都在成長,希望每一天都青春飛揚,因為人生會因此而絢麗。想起一位同是05級同事說過的話,◎◎◎◎是我們放飛夢想的地方。
?
可以運行在本地windows版本的MySQL數據庫程序自從3.21版以后已經可以從MySQL AB公司獲得,而且 MYSQL每日的下載百分比非常大.這部分描述在windows上安裝MySQL的過程. 安裝程序是針對windows版本的MySQL 5.0,結合了圖形安裝向導,自動的安裝MySQL,創建 一個配置文件,啟動服務器,和保護默認的用戶帳戶. 如果你是升級安裝現有的MySQL 4.1.5版本.你必須完成下列步驟:
1. 獲得和安裝
2. 如果有必要安裝配置文件
3. 選擇一個想要使用的服務器.
4. 啟動服務器
5. 為MYSQL帳戶設置密碼.
這個過程在沒有安裝配置的myslq安裝程序里完成.
MySQL 5.0 for Windows 可用的種格式: · 包含二進制的安裝程序可以安裝所有你需要的依次你可以立即啟動服務器.
· 原始類包括所有代碼和支持文件建造執行使用Visual Studio 2003編譯系統.
一般來講,你應該使用二進制形式.較其他比較簡單,和你不需要額外的工具讓mysql使用 和運行. 本文主要描述怎樣在windows上安裝使用二進制格式的MYSQL.
一、要在WINDOWS上運行MYSQL,你要具備下列條件:
· 一個32位WINDOWS操作系統,9x,ME,NT,2000,XP,或者 windows server2003.基于 WINDOWS NT操作系統(NT,2000,XP,2003)允許你運行MYSQL 服務器為一個服務.使用基于 WINDOWS NT操作系統是我們強烈推薦的.
· TCP/IP協議支持. · 二進制版本的MYSQL for windows,可以從 http://dev.mysql.com/downloads/下 載。注意: 如果你通過FTP下載.我們推薦使用適當的FTP軟件很重要.避免在現在過程中文件 損壞..
· 一個可以打開.zip 文件的工具,用來打開安裝文件
· 硬盤的空間推薦最小200M. 如果準備通過ODBC連接MYSQL,你也需要ODBC連接驅動
· 你過你需要的表大于4GB,安裝MYSQL在NTFS或者新的文件系統上.當你創建表的時不 要忘記使用 MAX-ROWS和AVG_ROW_LENGTH.
二、選擇一個安裝組件
對于MYSQL 5.0,有三個組件用來選擇安裝MYSQL在WINDOWS上.下列是組件:
· 基本組件:這個組件有一個類似于mysql-essential-5.0.13-rc-win32.msi和包含最 小需求文件組件不包含可選組件與內含的服務器和基準組件
· 全部組件:這個組件有一個文件名類似 mysql-5.0.13-rc-win32.zip和包含所有可需 文件來完成WINDOWS安裝.包括配置向導.這個組件包括可選組件與內含的服務器和基準 組件
· 無安裝存檔:. 這個組件有一個類似于mysql-noinstall-5.0.13-rc-win32.zip的文 件名和包含建立完成安裝組件的文件.配置向導除外.這個組件不包含自動安裝,必須手 動安裝和配置.大多數擁護推薦使用基本組件.
三、使用配置向導
MySQL配置向導可以幫助您實現WINDOWS系統下的服務器自動配置。MySQL配置向導首先會根據一一系列的問題創 建一個定制好的my.ini文件,然后根據填寫內容并將其應用到模板中從而產生一個跟安裝相適應的my.ini文件 。配置向導包含在MySQL 5.0服務器中,現在只適合WINDOWS用戶。配置向導很大程度上來源于用戶近幾年在My SQL AB上的反饋信息。如果你覺得向導內容缺少你所需要的重要內 容,或者,你發現有錯誤,請通過MySQL 錯誤報告系統要求添加新特性或報告錯誤信息。
安裝完畢后可以直接進入配置向導或通過點擊WINDOWS開始程序中的MySQL服務器實例向導進入MySQL配置向導。 另外,也可以找到MySQL安裝目錄下的bin目錄下的MySQLInstanceConfig.exe文件并直接運行它。
如果你的MySQL配置向導發現了一個已經存在的my.ini文件,你可以重新配置已經存在的服務器,或者通過刪除 my.ini文件、停止并移除MySQL服務的方法移除服務器實例。重新配置已經存在的服務器,選擇“重新配置實例”選項并且選擇“下一步”按鈕。已經存在的my.ini文件被 重新命名為mytimestamp.ini.bak,時間戳是已經存在的my.ini創建時的日期和時間。移除已經存在的數據庫實 例,選擇“移除實例”選項并選擇“下一步”按鈕。如果選擇了“移除實例”選項,進入到確認界面。單擊“運行”按鈕:MySQL配置向導停止并開始移除MySQL服 務,并刪除my.ini文件。但服務器安裝目錄并沒有移除。如果選擇了“重新配置實例”選項,進入到“配置類型”界面,可以選擇安裝想要配置的安裝類型。
選擇了MySQL配置向導的 “安裝MySQL”,或“重新配置實例”,都將進入到“配置類型”界面有兩個配置類型可供選擇:詳細配置和標準配置。標準配置選項是為那些不需要考慮復雜服務器配置的新手而 設計的。詳細配置選項是給那些能更高好的操作服務器的高級用戶使用的。如果您剛開始使用MySQL,并且把它做為一個單一用戶的開發機器使用的話,標準配置能滿足您的需求。選擇標 準配置后,除了服務選項和安全選項外配置向導對其他部分都做了自動配置。如果你的機器中有已經安裝了MySQL,標準配置可能不太適合你的系統。如果愿意進一步配置的話,“詳細配置 ”選項是推薦的。
然后進入服務器類型頁面,有三種不同的服務器類型可供選擇,選擇服務器類型后配置向導將會根據選擇的不同確定內存、磁盤、處理器 的使用。
? 開發版:這個選項是典型的桌面工作站,是MySQL為個人使用而設計的。有很多其他的桌面應用程序也 可以在此上運行。MySQL服務器使用了最小的系統資源。
? 服務器版:選擇此選項MySQL可以和其他一些服務器應用程序如FTP,email,Web服務同時運行。MySQL 服務器配置使用了中等程度的系統資源。
? MySQL服務器專業版:這個選項是只能運行MySQL服務器,其他應用程序不可以運行。MySQL服務器配置 將使用所有可用資源。
“數據庫使用”界面允許在創建MySQL表時可以指示想使用的表操作。選擇項將決定InnoDB存儲引擎是否可用, InnoDB所能使用系統資源的百分比。多功能的數據庫:此選項InnoDB 和 MyISAM存儲引擎可用,并且在兩者之間平均分配資源。推薦在通常情況下 會使用這兩個存儲引擎的的用戶使用。事務型數據庫:此選項InnoDB 和 MyISAM存儲引擎均可用,但更傾向于系統大部門資源為InnoDB存儲引擎所使 用。推薦經常使用InnoDB而很少使用MyISAM的用戶使用。
? 非事務型數據庫:此選項完全禁止InnoDB存儲引擎,完全專注于MyISAM存儲引擎。推薦不使用InnoDB 的用戶使用。
InnoDB表空間界面
有些用戶更愿意將InnoDB表空間文件放在不同的位置而不是MySQL服務器數據目錄。如果系統有更高的存儲能力 或更高性能的存儲設備可用,比如RAID存儲系統,可以把表空間文件放置在不同的位置。可以修改InnoDB表空間文件的默認位置,從下拉列表框的盤符列表中選擇一個并選擇一個新的路徑。創建定制 的路徑,單擊“...”。 如果修改已經存在的服務器配置,在修改路徑之前必須單擊“修改”按鈕。在啟動服務器之前必須先手工把已 經存在的表空間文件移到新的位置。
并發連接界面
控制連接到MySQL服務器的并發連接數目能有效的防止耗進系統資源。并發連接界面允許選擇服務器按所需選擇 服務器的使用情況, 并同時設置并發連接限制。也可以手工設定并發連接數。
? 決策支持(DSS)/聯機分析處理(OLAP):服務器不要求大數目的并發連接時選擇此項。最大連接數 目的連接可達100,但平均會有20個并發連接。
? 在線事務處理(OLTP):服務器要求大數量的并發連接時選擇此項。最大連接數可達500。
? 手工設置:選擇此項可以手工設置并發訪問服務器的最大樹木。從下拉列表框中選擇最大可連接數, 如果下拉列表框中列出的數目沒有可選擇的。可手工輸入最大連接數目。
網絡配置選項對話框
可以使用網絡配置對話框來激活或者禁止TCP/IP網絡服務同時配置和MySQL服務器連接的端口號。TCP/IP網絡服 務是默認激活的。Windows可以通過不選擇TCP/IP網絡選項的選項框禁止TCP/IP網絡服務。通常默認使用的端口 是3306。如果需要改變訪問MySQL的端口,可以從下拉選項框中選取新的端口號或者在選項框中直接輸入新的端 口號。如果你選定的端口號已經被使用,系統將會提示你去確認對端口號的選擇。
字體設置對話框
MySQL服務器支持多字體設置,同時可以為服務器設置默認服務字體,該字體可以應用于所有的數據表、列和未 被超級控制的數據庫。可以使用字體設置對話框來改變MySQL服務器的默認字體設置。
1 標準的字體設置:該選項用于將Latin1作為默認的服務字體. Latin1可以用于英文和眾多西文字體。
2 對于多語言字體的最佳支持:該選項用于UTF8作為默認的服務字體。在單一的字體設置中,UTF8可以存儲來自 很多不同語言的字體。
3 手動選擇默認字符設置/排序:該選項用于手動設置默認字體。你可以從下拉選擇框所提供的字體中選擇所需 要的字符。
服務選擇對話框
在基于Windows NT的平臺上,MySQL服務器可以被作為Windows的一項服務被安裝。當作為一項服務安裝時, MySQL服務器可以隨著系統的啟動而自啟動,并且在服務失敗時,MySQL服務器可以自動重起。在MySQL的默認配置中,將MySQL服務器作為服務安裝,同時該服務的名稱為MySQL。如果你不希望安裝該項服務 ,不選擇作為Windows服務的選擇框即可。你可以從所提供的下拉選擇框中選取一個新的服務名稱或者直接在下 拉選擇框中輸入新的服務名稱。如果需要將MySQL服務器作為一項服務來安裝,同時使MySQL不隨著系統啟動而自啟動,則不選擇自啟動Mysql服 務選擇框。
安全選擇對話框
強烈推薦你為你的MySQL服務器設置一個相應的根用戶密碼,同時MySQL配置向導需要你設置一個默認的根用戶 密碼。如果你不希望設置根用戶密碼,則不要選擇修改安全設置選項。為了設置根用戶密碼,需要將設定的根 用戶密碼同時輸入新根密碼和確認選擇框里。如果你需要重新配置一個已存在的服務器,你需要將其的根用戶 密碼輸入到當前的根密碼選擇框里。為了防止通過網絡的根用戶登錄,可以在Root的選擇框中設置為只允許從本地連接。這將增強你的根用戶的安 全性。為了生成一個匿名用戶帳戶,選擇生成匿名帳戶的選擇框。生成一個匿名用戶帳號可能會降低服務器的安全性 ,同時造成登陸和認證的困難。出于這種原因,該選項一般不被推薦。
確認對話框
MySQL配置向導中的最后的對話框是確認對話框。可以點擊“執行”按鈕來啟動配置操作。為了返回到前一個對 話框,可以點擊“返回”按鈕。可以點擊“取消”按鈕退出MySQL配置向導而無需配置服務器。當你點擊“執行”按鈕后而無需配置服務器,MySQL配置向導執行一系列任務,該任務在被執行時,執行進度將 會被顯示在屏幕上。 MySQL配置向導首先使用由MySQL AB開發者和工程師所準備的模版配置文件來決定基于你的選擇的配置文件選項 。該模版被命名為my-template.ini,同時位于你的服務期安裝目錄下。MySQL配置向導將這些選擇項寫入至 my.ini文件中。my.ini文件的最終位置將會被顯示在寫配置文件任務中。如果你選擇為MySQL服務器生成一項服務,MySQL配置向導將會生成并啟動該服務。如果你正在重新配置一個已 存在的服務,MySQL服務向導將會重起服務以重新應用改變的配置。如果你選擇設置一個根密碼,MySQL配置向導將會和服務器連接,設置你的新的根用戶密碼同時應用你已經選擇 的其他安全設置。在MySQL配置向導完成其的任務后,一個摘要將會被顯示出來。點擊“結束”按鈕退出MySQL配置向導。
配置文件my.ini的位置
MySQL配置向導將my.ini文件放置在MySQL服務器的安裝目錄中。這將有助于將配置文件和具體的服務器實例相 關聯。為了保證MySQL服務器知道到哪里查找my.ini文件,和下面內容類似的參數將會被作為服務安裝的一部分 傳遞給MySQL服務器:--defaults-file="C:\Program Files\MySQL\MySQL Server 5.0\my.ini C:\Program Files\MySQL\MySQL Server 5.0可以被指向MySQL服務器的安裝路徑所代替。
編輯my.ini文件
可以使用文本編輯器打開該文件同時做出必要的編輯和修改。你也可以以MySQL Administrator的應用程序來修 改服務器配置。 MySQL客戶端和應用程序,例如mysql命令行客戶端和mysqldump并不能確定位于服務器安裝目錄中的my.ini文件 的位置。為了配置客戶端和應用程序,根據你的Windows版本的不同,在C:\Windows下或者在C:\WINNT目錄下生 成新的文件my.ini 文件
四、從Noinstall Zip Archive中安裝MySQL
正在從Noinstall軟件包安裝MySQL的用戶可以使用這個說明來手動安裝MySQL。從Zip archive 中安裝MySQL的 步驟如下:
1 在指定的安裝目錄下解壓軟件包。
2 制造選擇文件。
3 選擇MySQL服務類型。
4 開始MySQL服務。
5 保護默認賬戶。
解壓安裝軟件包
為了手工安裝MySQL,需要按以下步驟進行:
1 如果你需要對以前的版本更新,請參考在更新步驟剛開始時的文章 “Upgrading MySQL on Windows”。
2 如果你正在使用基于Windows NT的操作系統例如Windows NT, Windows 2000, Windows XP或者Windows Server 2003,必須保證你作為擁有管理員特權的用戶登錄該系統。
3 選擇一個安裝位置。傳統的MySQL服務器安裝在 C:\mysql,而MySQL安裝向導將 MySQL 安裝到 C:\Program Files\MySQL。如果不將 MySQL 安裝到 C:\mysql下,你必須在啟動或者在選擇文件中具體指出安裝路徑。
4 選用壓縮工具將安裝壓縮軟件解壓縮至選擇安裝的位置上。有些壓縮工具有可能將其解壓到你的被選擇的安 裝位置的子目錄中。如果是這種情況,你可以將該子目錄的內容從子目錄移至安裝路徑下。
生成選擇文件
如果你需要在運行服務器時,具體化啟動選項,你可以在命令行標志出他們或者在一個選擇文件中設置他們。 對于每次服務器啟動時所使用的服務,你將會發現使用選擇文件來具體化你的MySQL配置是非常便利的。尤其是 在以下情況中:當MySQL服務在Windows上啟動時,其在兩個文件中尋找選項:在Windows目錄下的 my.ini 文件以及C:\my.cnf 文件。Windows目錄典型的命名如下:C:\WINDOWS or C:\WINNT。你可以通過下面的命令來決定WINDIR環境變量 的值: C:\> echo %WINDIR% MySQL首先在my.ini 文件中尋找選項,然后是在my.cnf 文件中。然而,為了避免混淆,最好是只用一個文件。 如果你的PC使用加載的啟動裝備同時C:不是啟動區,那你只能通過my.ini文件來進配置。不管你使用哪種選擇 文件,該文件必須是文本格式。你同時也可以充分利用包含在你的MySQL發布版的樣本文件。在你的安裝目錄下 尋找諸如 my-small.cnf, my-medium.cnf, my-large.cnf和my-huge.cnf的文件,這些文件可以被重新命名同時 拷貝到合適的位置作為一個基本的配置文件來使用。一個選擇文件可以被任何文本編輯器生成和修改,諸如 Notepad等。例如,如果MySQL被安裝在E:\mysql 目錄下,而數據目錄是在E:\mydata\data下,你可以生成一個 包含 [mysqld] 部分的選擇文件來具體化基本目錄和數據目錄的參數值: [mysqld]
# set basedir to your installation path
basedir=E:/mysql
# set datadir to the location of your data directory
datadir=E:/mydata/data
在這里需要注意Windows路徑名在事先使用的斜線而不是反斜線選擇文件中被具體化。因此當你使用反斜線時, 你必須使用雙斜線。 [mysqld]
# set basedir to your installation path
basedir=E:\\mysql
# set datadir to the location of your data directory
datadir=E:\\mydata\\data
在Windows中,MySQL安裝程序直接將數據目錄安裝在你安裝MySQL的目錄下。如果你需要在另外不同的位置使用 數據目錄,你需要將整個數據目錄的內容拷貝至新的位置。例如,如果MySQL安裝在C:\Program Files\MySQL\MySQL Server 5.0 目錄下,則數據目錄的位置默認是在 C:\Program Files\MySQL\MySQL Server 5.0\data下。如果你需要將E:\mydata 作為你的數據目錄,你需要做以下兩件事情:
1 將整個數據目錄和它的所有內容從C:\Program Files\MySQL\MySQL Server 5.0\data 移至E:\mydata.。
2 每次啟動服務時,使用a--datadir選項來確認新的數據目錄位置。
選擇MySQL服務類型
以下顯示了MySQL5.0Windows版本提供的服務類型:mysqld-debug帶有完全調試和自動內存分配檢查的編譯,該編譯對象也包括 InnoDB和BDB數據表。
mysqld 優化InnoDB支持的二進制數據。
mysqld-nt優化命名管道支持的二進制數據。
mysqld-max優化InnoDB 和 BDB數據表所支持的二進制數據
mysqld-max-nt同mysqld-max功能一樣,但是編譯時支持命名管道
上述優化選項都是針對Intel 處理器的,但是應該可以工作在任何Intel i386-class 或者更高的處理器。在MySQL 5.0中,所有的Windows版本服務器都提供了對數據庫目錄的符號鏈接。 MySQL提供了對Windows平臺上的TCP/IP 的支持。mysqld-nt和 mysql-max-nt 服務器則提供了對Windows NT,2000,XP和2003下的命名管道的支持。然而,不管在何種平臺下,默認使用的都是TCP/IP。(在很多Windows 配置下,命名管道要比TCP/IP服務要慢)
命名管道的使用受以下條件的制約:
? 命名管道只有當你啟動服務時選擇 --enable-named-pipe才會被激活。非常有必要的顯式使用該選項 ,因為有些用戶在命名管道正在使用時關掉MySQL服務器遇到過故障問題。 ? 命名管道只有在mysqld-nt 或mysqld-max-nt 服務器下并且僅當該服務器運行在支持命名管道的 Windows版本的平臺下才能使用。? 在Windows 98 or Me系統下,只有當其安裝了TCP/IP后,這些服務才能夠運行。命名管道的連接不能 使用。? 上述服務在Windows 95下不能夠運行。注意:在參考手冊中的大部分例子都使用mysqld作為服務名。如果你使用另外一個服務器,例如mysqld-nt,則 需對上述例子作合理的替代。
首次開啟服務
這部分的信息主要應用在使用Noinstall版本安裝MySQL時,或者希望手動而不是使用GUI工具配置和檢測MySQL 的情況下。在Windows 95, 98, or Me下,MySQL客戶端經常和使用TCP/IP的服務器相連接。(這允許在你網絡上的任意機器 可以和MySQL服務器連接)。基于這一點,你必須保證在啟動MySQL前,TCP/IP 支持安裝在你的機器上。你可以 到在你Windows CD-ROM中找到TCP/IP服務。 在這里需要注意的是如果你正在使用老的Windows 95發布版本(例如OSR2),那很有可能你在使用一個舊的 Winsock軟件包;MySQL需要的是Winsock 2。你可以從http://www.microsoft.com/.下載最新的Winsock軟件包 。Windows 98具有新的Winsock 2庫,所以無需更新庫。在基于NT的系統例如 Windows NT, 2000, XP, or 2003上,客戶可以有兩個選擇。他們可以使用TCP/IP或者當 服務器支持命名管道的連接時使用命名管道。為了得到在TCP/IP下工作的Mysql版本,你必須安裝service pack 3(或者更新的版本) 如果在啟動時,選擇 --shared-memory, Windows版本的MySQL 5.0同樣也支持共享內存的連接。客戶端可以選 擇 --protocol=memory 選項來進行共享內存的連接。
以上對啟動MySQL服務進行了總體概述,下面的內容提供了從命令行或者作為Windwos服務來啟動MySQL服務器更 加具體的信息:
假設MySQL安裝在默認位置C:\Program Files\MySQL\MySQL Server 5.0下。如果你把MySQL安裝在不同的位置上 ,則需調整相應的路徑名。測試工作可以從控制臺窗體(或者通過“DOS window”)通過一個即時命令來完成。 這樣你就可以會在窗體中比較容易的看到服務器狀態信息。如果你的配置有誤時,這些信息將有助于你識別和 修復任何故障。為了開啟服務,輸入以下命令: C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld --console
對于InnoDB支持的服務器,在服務啟動時你可以看到下列信息:
InnoDB: The first specified datafile c:\ibdata\ibdata1 did not exist:
InnoDB: a new database to be created!
InnoDB: Setting file c:\ibdata\ibdata1 size to 209715200
InnoDB: Database physically writes the file full: wait...
InnoDB: Log file c:\iblogs\ib_logfile0 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile0 size to 31457280
InnoDB: Log file c:\iblogs\ib_logfile1 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile1 size to 31457280
InnoDB: Log file c:\iblogs\ib_logfile2 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile2 size to 31457280
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: creating foreign key constraint system tables
InnoDB: foreign key constraint system tables created
011024 10:58:25 InnoDB: Started
當服務器完成啟動序列后,你可以看到如下信息,這些信息表明服務器已經開始服務客戶端連接: mysqld: ready for connections
Version: '5.0.13-rc' socket: '' port: 3306
服務器將會繼續將其所產成的判斷信息輸入到控制臺上。而你則可以打開一個新的控制臺來運行客戶端程序。如果你省略了 --console 選項,服務器將會把診斷信息輸出到 數據目錄下的錯誤日志中(默認是C:\Program Files\MySQL\MySQL Server 5.0\data )。錯誤日志以.err為擴展名。注意:在MySQL授權數據表的帳號初始化是沒有密碼的。
在Windows命令行下開啟MySQL服務
MySQL服務器可以手動從命令行啟動。該項操作可以在Windows的任何版本下完成。為了從命令行啟動mysqld服 務,你應該啟動一個控制臺窗體(或者"DOS 窗體")同時輸入以下命令:
C:\> C:\Program Files\MySQL\MySQL Server 4.1\bin\mysqld
在上述例子中使用的路徑可以根據你的系統安裝MySQL的路徑不同而改變。在非NT版本的Windows版本上, mysqld是在后臺啟動的。這也就意味著在服務啟動之后,你查看另外的即時命令。基于這一點,你應該在服務 運行時打開另外一個控制窗體來運行客戶端程序。
你可以通過執行以下命令停止MySQL服務:
C:\> C:\Program Files\MySQL\MySQL Server 4.1\bin\mysqladmin -u root shutdown
該命令激活MySQL管理程序和服務器連接同時告訴他關閉服務。該名令是作為MySQL根用戶連接的,在Mysql權限 系統中,根用戶默認是管理員帳戶。注意在MySQL授權系統中的用戶和任意在Windows下登陸的用戶是完全獨立 的。如果mysqld沒有啟動,檢查錯誤日志文件查看是否服務器向其中寫入了信息,該信息說明問題產生的原因。錯 誤日志位于C:\Program Files\MySQL\MySQL Server 5.0\data 目錄下。該日志是以擴展名為.err的文件。你也 可以試著重新開啟mysqld 控制臺服務,這樣你就有可能獲取一些有助于解決問題的信息。最后一個選項是開啟mysqld時選擇--standalone --debug。在這種情況下,mysqld 將會寫一個 C:\mysqld.trace的日志文件,該日志文件將會包含mysqld為何沒有啟動的原因。
使用mysqld --verbose --help 可以看到mysqld所提供的所有選項的幫助信息。
作為一項Windows服務開啟MySQL
在NT系列的Windows版本(Windows NT, 2000, XP, 2003)中,推薦運行MySQL服務的方法是將其作為Windows服務 進行安裝,在這種情況下MySQL隨著Windows開始和結束自動開始和結束。一個作為服務被安裝的MySQL服務器能 夠被從命令行上使用NET命令或者使用圖形界面服務程序所控制。服務程序(Windows 服務控制管理器)可以被在 Windows控制面板中找到(在Windows 2000, XP, and Server 2003的管理工具下)。建議在執行服務器安裝程序 時或者在命令行中執行刪除操作時關閉服務應用程序。這將會防止很多錯誤。在將MySQL作為Windows服務安裝之前,如果當前服務器正在運行,應該首先使用下述命令停止其的運行:
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqladmin -u root shutdown
注意:如果MySQL根用戶有密碼,那么你需要這樣激活命令:
C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqladmin -u root -p shutdown ,同時必須根據提示輸入 用戶密碼。
這調用了MySQL的管理功能mysqladmin,mysqladmin可以連接到服務器,讓服務器關閉。這個命令是作為MySQL 的 root用戶而和服務器建立連接的,MySQL的 root用戶在MySQL授權系統中是默認管理帳戶。需要注意的是在 MySQL授權系統中的用戶是完全獨立于Windows上登錄用戶。
用下列命令可將服務器作用一項服務安裝:
C:\> mysqld –install
如果你用server名字在將服務器安裝成一項服務的過程中遇到問題, 那就試試用全稱路徑名。舉例來說:
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld --install
你也可以將到mysql bin目錄的路徑加入到Windows 系統PATH 環境變量:
? 在Windows桌面上,右擊“我的電腦”,選擇“屬性” ? 出現系統屬性菜單,選擇“高級”,然后單擊“環境變量”按鈕。? 在“系統變量”列表中選擇“路徑”,然后單擊“編輯”按鈕。這時會出現編輯系統變量對話框。 ? 將光標放在“變量值”對應的文字的末尾(請使用 End key,以確保光標在最后的位置) 。然后輸入 MySQL bin 目錄的全稱路徑, (舉個例子, C:\Program Files\MySQL\MySQL Server 5.0\bin), 注意應該用分 號將這個路徑與其它值分開。 點擊“確定”逐個關閉所有打開的對話框。現在你就可以在DOS系統下從系統的 任意目錄中,通過輸入任意可執行的 MySQL 程序的名字而找到該程序,不必再輸入路徑。這包括服務器、 mysql 客戶和所有 MySQL 命令行比如 mysqladmin 和 mysqldump。 ? 注意如果你在同一臺機器上運行多個MySQL 服務器的話,就不要將MySQL bin 目錄加入到 Windows 路 徑中。
警告: 在手工編輯系統路徑的時候一定要特別小心,如果不小心刪除或改變了系統路徑中的任何部分都將導致 誤操作甚至導致系統不穩定。服務安裝命令并不啟動服務器,關于這點后面將詳細介紹。
MySQL 5.0 在安裝服務的過程中對附加參數提供的支持有限:? 你可以在安裝選項之后立即為服務命名,否則默認的服務名字是 MySQL。
? 如果設置了一個服務名字,就可以用使用單一選項。通常按照約定,這應當是--defaults- file=file_name 來設置選項文件的名字,服務器在啟動時會從選項文件中讀取選項。可以使用單一選項而不用--defaults-file,但不推薦這樣做。因為,--defaults-file 更加靈活,你可以 通過將多個選項放到指定的選項文件中而為服務器設置多個啟動選項。同樣,在MySQL 5.0中我們也不支持使用 不同于--defaults-file的選項,但5.0.3版本就可以這樣做了。
? 對于MySQL 5.0.1,你也可以在服務名字下設置一個 --local-service(本地服務)選項。這會使服務 器用LocalService Windows帳戶運行。這種帳戶只在Windows XP或更新的系統上才有。如果服務名字下既有-- defaults-file 也有 --local-service,那么它們之間不論次序。 對于安裝成Windows服務的MySQL服務器來說,由下面的規則決定服務名字和服務器使用的選項文件: ? 如果服務安裝命令沒有指定服務名字,那么安裝選項將默認服務名字為MySQL, 服務器將使用 MySQL服 務,并從標準選項文件中的 [mysqld]群中讀取選擇。 ? 如果服務安裝命令沒有指定了一個服務名字,服務器將使用指定的服務名字并從從標準選項文件中與 服務名字相同的群中讀取選項。 服務器也從標準文件選項文件中的[mysqld]群中讀取選項。這保證可以從[mysqld]群中讀取所有MySQL服務都 用的選項,而用指定服務名字按照的服務器使用和與指定服務名字相同的選項群。 ? 如果安裝命令在服務名字之后指定一個 --defaults-file 選項,那么服務器只從指定文件的 [mysqld] 群中讀取選項而忽略標準選項文件。
下面的命令是一個復雜的例子:
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld --install MySQL --defaults-file=C:\my- opts.cnf
在這里,由安裝選項給出了默認服務名字MySQL。如果沒有給出--defaults-file選項,那么這個命令將使服務 器從標準選項文件中的[mysqld]群中讀取。然而在這里給出了--defaults-file選項,所以服務器只從指定文件 的[mysqld] 選項群讀取。
你也可以在啟動MySQL服務之前,在Windows Services 工具欄中將選項定義為啟動參數。一旦MySQL服務器被安裝成一項服務,Windows就會在啟動時自動啟動該服務。也可以在Services 工具欄中直接 啟動MySQL服務器,或使用NET START MySQL命令也可。NET 命令不區分大小寫。
作為服務運行時,mysqld無權使用控制窗口,因此在這里看不到消息。如果mysqld不能啟動,就查錯誤記錄看 看服務器是不是寫下了什么說明問題原因的消息。錯誤記錄在MySQL數據目錄下(比如: C:\Program Files\MySQL\MySQL Server 5.0\data)。錯誤記錄的后綴名是 .err。
MySQL作為服務安裝的情況下,如果服務正在運行,Windows關閉的時候會自動停止服務。 如果你不想在boot 進程中自動啟動服務,你可以將服務器作為手動服務安裝。手動服務的安裝需要選擇“手動 安裝” 選項而不是 “安裝”選項:
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld --install-manual
要刪除作為服務安裝的服務器時,首先要通過NET STOP MYSQL關閉正在運行的MYSQL,然后用“刪除”選項刪除 它:
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld --remove 如果mysqld不是作為服務運行,可以用命令行啟動它。
五、測試 MySQL安裝
你可以通過執行下列任何一個命令來測試MySQL 服務器是否安裝:
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqlshow
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqlshow -u root mysql
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqladmin version status proc
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysql test
如果mysqld對來自客戶程序的TCP/IP 連接反應很慢,那么說明你的DNS可能有問題。在這種情況下,用--skip -name-resolve選項啟動mysqld,而且在MySQL 授權列表的Host欄中只使用本地Host和IP。 你可以強迫 MySQL客戶運用管理連接,而不用TCP/IP。方法是選定--pipe 或--protocol=PIPE 按鈕,或指定 . (period)作為主機名。運行--socket 選項來規定管道名。
九、排除在Windows下安裝MySQL的故障
如果是初次安裝MySQL,你可能會遇到一些阻止MySQL啟動的錯誤,這一部分的目的就是幫助你診斷和排除某些 故障。 在排查故障時,可用的第一項資源就是錯誤記錄。MySQL 服務器的錯誤記錄會記下阻止服務器啟動的相關錯誤 。錯誤記錄在數據目錄下,my.ini文件中記載了數據目錄的地址。默認的文件目錄位置是C:\Program Files\MySQL\MySQL Server 5.0\data。 另外在MySQL服務運行過程中的控制信息也可能會記載一些相關的錯誤。在mysqld作為服務安裝之后,從命令行 中執行NET START mysql命令查看是否有關于作為服務啟動MySQL服務器的錯誤信息。
下面的例子是一些首次安裝MySQL和啟動服務器的過程中,可能遇到的常見錯誤信息:?System error 1067 has occurred.
?Fatal error: Can't open privilege tables: Table 'mysql.host' doesn't exist
? 當 MySQL 服務器找不到 mysql privileges database 或其它關鍵文件時,就會產生這樣的信息。當 MySQL的原始數據或數據目錄安裝在不同于默認位置(分別是C:\mysql 和 C:\Program Files\MySQL\MySQL Server 5.0\data )時,常常遇到這個問題。 一種情況是MySQL已升級并安裝到新的位置,但配置文件并沒有反映新的安裝位置。另外 ,可能會產生相互沖 突的新、舊配置文件。因此,在升級MySQL時,應確保刪除舊的配置文件或重命名。 如果你將MySQL安裝到了C:\Program Files\MySQL\MySQL Server 5.0以外的其它位置,你必須確保MySQL服務器 通過一個配置文件(my.ini) 知道安裝的位置。my.ini文件必須在Windows目錄下,通常是C:\WINNT 或 C:\WINDOWS。你可以從WINDIR環境變量的值來確定其具體位置,需要從命令提示符發出下列命令:
C:\> echo %WINDIR%
生成一個選項文件,并且可以用任何文本編輯程序修改,比如Notepad。舉例來說,如果MySQL安裝在E:\mysql 、數據目錄是D:\MySQLdata,你可以創建一個選項文件,在其中創建一個[mysqld]部分來定義basedir 和 datadir參數:[mysqld]
# set basedir to your installation path
basedir=E:/mysql
# set datadir to the location of your data directory
datadir=D:/MySQLdata
注意在選項文件中,Windows 路徑名是用(forward) slashes 定義的,而不是用 backslashes。如果你使用的 是 backslashes,你就需要將它們加倍:[mysqld]
# set basedir to your installation path
basedir=C:\\Program Files\\MySQL\\MySQL Server 5.0
# set datadir to the location of your data directory
datadir=D:\\MySQLdata
如果你在MySQL配置文件改變了datadir值,那么你在重新啟動MySQL服務器之前就必須將已有的MySQL數據目錄 轉移到相應的位置。
? Error: Cannot create Windows service for MySql. Error: 0
? 如果你不先停止并刪除現有的MySQL而重新安裝或升級時,或用MySQL Configuration Wizard安裝 MySQL時,就會產生這樣的錯誤。因為當Configuration Wizard試圖安裝服務時,就會發現已經有一個同名的服 務。 對這個問題的一個解決方法是,在使用configuration wizard時選擇一個服務名稱,而不用默認的mysql 。這 可以使新的服務正確地安裝,但舊的還放在那里。建議最好還是把不用的刪掉。 要永久刪除舊的mysql服務,需要用戶以管理權限在命令行上執行下列命令:
C:\>sc delete mysql
[SC] DeleteService SUCCESS
如果你的Windows版本上沒有sc工具欄,就從下面的網址上下載delsrv工具欄: http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/delsrv-o.asp 然后運用delsrv mysql syntax。
六、在Windows上升級MySQL
這部分介紹一些在Windows上升級MySQL的必需步驟。 1. 在升級之前,你應當一直支持目前的MySQL安裝。 “Database Backups”
2. 在http://dev.mysql.com/downloads可以下載在Windows上安裝MySQL 的最新內容。
3. 在升級MySQL之前,必須停止服務器。
如果服務器是作為服務安裝的,要從命令提示符通過下列命令停止服務:
C:\> NET STOP MYSQL
如果不是作為服務安裝的,就用下列命令停止MySQL服務器:
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqladmin -u root shutdown
當將4.1.5以前的版本升級到 MySQL5.0時,或將用Zip壓縮文件安裝的MySQL升級到用MySQL Installation Wizard安裝的MySQL版本時,必須手動刪除以前的安裝和MySQL服務(如果服務器有作為服務安裝的話). 用下列命令刪除原來的MySQL服務:
C:\> C:\mysql\bin\mysqld --remove
如果不刪除原有服務,MySQL Installation Wizard可能無法安裝新的MySQL服務。
如果你從Zip 壓縮文檔安裝MySQL,要么覆蓋原有的MySQL安裝(通常在C:\mysql),要么在不同的目錄下安裝 ,比如C:\mysql4。建議覆蓋原有安裝。
重啟服務器。如果MySQL是作為服務運行的話,用NET START MySQL,或者直接調用mysqld。
Windows 和 Unix兩種系統下的MySQL比較
MySQL在Windows上已經相當穩定。Windows版本的MySQL和相應的Unix版本的MySQL具有相同的特性,但存在以下 幾點不同:
? Windows 95和線程
Windows 95分出約200字節的主內存給每一個線程。MySQL的每個連接創建一個新的線程,所以如果服務器處理 多個連接時,不應該在Windows 95下運行 mysqld。其他版本的Windows不存在這個bug。
? 限制端口數量
Windows系統下大概有4,000個可用端口,當一個端口的連接關閉時,需要2-4分鐘才能重新啟用該端口。當處 于代理連接和斷開連接的高峰期時,可能使所有的端口在重新啟用之前都處于關閉狀態。如果發生這種情況, MySQL服務器將停止相應,盡管它還處于運行狀態下。需要注意的是,機器上運行的其它應用程序也可能使用端 口,這也會使可用端口的數量下降。更多的信息請參看下面鏈接: http://support.microsoft.com/default.aspx?scid=kb;en-us;196271.
? 同時讀取
MySQL依賴于調用pread()和pwrite()系統來使INSERT和SELECT可用。目前,我們使用mutexes來代替pread()和 pwrite()。我們打算用虛擬的界面來替代文件水平界面,這樣我們就可以在NT,2000和XP系統上使用readfile ()/writefile()界面并獲得較高的速度。目前MySQL 5.0只能執行2,048個文件,這就意味著不能在Windows NT ,2000,XP和2003以及Unix下運行多個同時運行的線程。
? 封閉讀取
MySQL對每一個連接使用封閉讀取,如果指定的通道連接可用,這就意味著以下幾點:o一個連接不會在8小時后自動斷開,這發生于Unix版本的MySQL。
o如果連接懸掛,只有關閉MySQL才能斷開該連接。
omysqladmin kill 對睡眠狀態的連接無效。
o只要存在睡眠連接,mysqladmin shutdown不會異常終止。
? ALTER TABLE
當你正在執行一個ALTER TABLE語句時,在被其他線程使用前表格將被鎖定。在Windows系統下可發生該情況, 你不能刪除被另外一個線程使用的文件。將來我們可能找到解決該問題的方法。
? DROP TABLE
因為MERGE 處理器處理隱藏于MySQL上一層的表格,這可使Windows下的被MERGE表格使用的DROP TABLE不工作。 因為Windows不允許dropping文件開啟,你就必須轉儲清除所有的MERGE表格(使用FLUSH TABLES)或者在 dropping文件前先撤銷MERGE表格。
? 數據目錄和索引目錄
Windows系統忽略了CREATE TABLE的數據目錄和索引目錄選項,這是由于Windows不支持符號連接造成的。在擁 有無功能realpath()調用的系統上也會忽略這些選項。
? 撤銷數據庫
你不能夠撤銷正在被某個線程使用的數據庫。
? 從任務管理器內關閉MySQL
你不能夠在任務管理器內關閉MySQL,也不能依靠Windows 95的關機操作關閉MySQL。你必須使用mysqladmin shutdown來關閉MySQL。
? 名稱的大小寫
在Windows下的文件名不區分大小寫,所以Windows同樣不區分MySQL數據庫和表格的名稱的大小寫。唯一的限制 就是數據庫和表格名稱必須在給定的語句內全部使用相同的case來指定。
? ‘\’路徑名分離字符
在Windows下使用‘\’來分離路徑名,‘\’同樣是MySQL里的換碼符。如果你使用LOAD DATA INFILE 或者 SELECT ... INTO OUTFILE,使用Unix格式的文件名內出現‘/’字符:mysql> LOAD DATA INFILE 'C:/tmp/skr.txt' INTO TABLE skr;
mysql> SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;
換句話說, 你必須使用兩個‘\’字符。
mysql> LOAD DATA INFILE 'C:\\tmp\\skr.txt' INTO TABLE skr;
mysql> SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr;
? 進程管道的問題
進程管道不會按照Windows命令行的提示可靠的工作。如果進程管道包含有字符^Z / CHAR(24),Windows便為認 為達到文件尾并終止程序。當你應用下面的一個二進制日志時便會出現問題:
C:\> mysqlbinlog binary-log-name | mysql --user=root 如果你需要應用該日志并遇到問題,你可以懷疑這是由于^Z / CHAR(24)字符導致的,可使用下面的工作區來解 決: C:\> mysqlbinlog binary-log-file --result-file=/tmp/bin.sql C:\> mysql --user=root --execute "source /tmp/bin.sql" 這樣,后面的命令也可以可靠的讀取含有二進制數據的SQL文件。
? 用戶錯誤所導致的拒絕訪問
如果你嘗試運行MySQL代理程序來連接服務器,同時該服務器又在同一臺機子上運行著,你就被當作'some- user'@'unknown'用戶而被拒絕訪問'mysql'數據庫,這表明MySQL不能夠恰當的解析主機名。要解決該問題,你必須創建一個名為\windows\hosts的文件,并包含下面的信息:127.0.0.1 localhost
這個問題最近很熱,之前我們都是先開發了產品然后在營銷時分析市場,細分客戶,找到這類產品的用戶對其進行重點營銷。但最近有一個新的提法,即在開發產品前就應該對市場進行調研,然后根據市場需求再開發產品。
理論上講,后一種方法是好的,確實應該這么做,因為如果按照前者來做,則開發產品的時候不能對市場反應和收益做出準確的預估。但是不可否認,我們之前確實是按照前一種方法做了很久。
那么問題來了,到底是應該用哪種方法呢?有人會毫不猶豫的說當然用后者。不錯我也同意,是“應該”用后者。其實我想之前也肯定有很多人同意用后者,或者想計劃著用后者。那么問題又來了,既然大家都說后者好,那為什么還一直用前者呢?
給出答案前,我們先看看計算機通信中的兩種技術:Ethernet和ATM。
學過通信的都知道:ATM的標準無論在QOS、安全、控制、計費方面都比Ethernet標準更好,那么現在電信運營商用的主流標準是什么?答案是Ethernet。
其實,我們在定選用哪個標準或方法時,不應該只看標準或方法本身是否優秀和完善,還應該看哪個標準更易實施和執行,哪個標準或方法有更簡單更實用更低成本的技術去支撐。ATM標準很完善,但因為其太復雜,執行投入成本過高而最終輸給了Ethernet。
那么回到一開始提出的問題,回顧我們現在所有的一些調研方法,其在調研開始時始終都是有一個具體的目的的而且調研時均是選取一定特定用戶群的,即調研某產品市場反應如何,調研某產品收益如何,調研某產品或某服務用戶滿意度如何。因為這樣做很容易對調研結果進行評估、有目的性、簡單易行、節約成本。從方法論的角度來看,如果沒有調研的目標群體、調研的針對產品、調研的期望,調研如何進行?沒有期望,怎么可能知道是否完成了期望。也許使用后者,期望就是從未知的未知中發現新的產品需求,難道要對所有的目標群體(全中國的人)進行可能是長大幾十頁的問卷調查?(想想在沒有具體目標產品的前提下,這些問題會是什么?家里有幾個孩子?男的女的?結婚沒?結婚了生子沒?生的男的女的?在哪上學?學什么的?。。。。會不會嫌煩呢?會不會告訴你呢?))。
結論是:想用后者,卻使用了這么長時間的前者,不是偶然的,不能一味的強調要用后者。
當然,我也不是說根據用戶需求找產品一定不可行,在強勢要求使用時,應先從有無具體可行的執行方法上考慮。
開始Blog的第一天記錄一下最近開始玩魔獸爭霸-冰封王座。個人比較鐘愛即時戰略游戲,從大學開始玩的紅警,到研究生玩的星級爭霸,再到前段時間玩的命令與征服-將軍。都還玩的可以,現在開始玩魔獸了,發現魔獸與一般的即時戰略不一樣,還是比較難玩,主要是各種魔法的應用增加了游戲的難度。專家建議新手開始玩精靈族,但是我還是從人族開始玩,感覺比較像人,農民、武士的面孔分的比較清楚。