久久国产av,国产激情欧美有码,亚洲国产综合精品2020,国产无套粉嫩白浆内精

中國vodafone pay and go(云服務(wù)器用windows還是linux系統(tǒng)比較好?)

2023-02-20 08:46:07 數(shù)碼極客 9173次閱讀 投稿:離人淚

今天給各位分享xfree的知識(shí),其中也會(huì)對(duì)中國vodafone pay and go進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!

我的電腦音箱牌子是XFree MF0175,沒音的時(shí)候要插拔后面的音頻輸入線,有時(shí)又不行。請(qǐng)各位大哥解決。謝謝

應(yīng)該是線壞了 你去朋友家借他的試試

是的話就 換了 10多元

創(chuàng)新音響系列怎么區(qū)分哪個(gè)好

創(chuàng)新音響系列有XFREE,SBS,PCWorks,I-Trigue,GigaWorks系列,GigaWorks系列好。根據(jù)查詢相關(guān)資料信息,XFREE,SBS系列屬低檔,中檔PCWorks系列,中高檔I-Trigue系列,高檔系列GigaWorks,高檔系列最好。

xfree是什么牌子旗下的產(chǎn)品

應(yīng)該是線壞了 你去朋友家借他的試試

是的話就 換了 10多元

在我的博客有你想要的

云服務(wù)器用windows還是linux系統(tǒng)比較好?

現(xiàn)在服務(wù)器廠商的系統(tǒng)都是用的Linux,如果選擇建網(wǎng)站,無論是LAMP, linux +appach+mysql+php,還是LNMP, linux+nginx+mysql+php都是以linux為基礎(chǔ)的,基本上現(xiàn)在云服務(wù)器還是用Linux最多吧

現(xiàn)在很多站長(zhǎng)都會(huì)選擇云服務(wù)器來搭建網(wǎng)站,不過租用時(shí)很多朋友都會(huì)糾結(jié)是選擇Linux還是Windows操作系統(tǒng)。

那么對(duì)于云服務(wù)器來說,是Linux系統(tǒng)好還是Windows系統(tǒng)好?

其實(shí),對(duì)于操作系統(tǒng)來說,大家接觸最多的就是Windows系統(tǒng),畢竟咱們經(jīng)常用的電腦就是Windows。由于Windows系統(tǒng)具有界面化的操作優(yōu)勢(shì),很容易上手。但是服務(wù)器來說,還有個(gè)常用的操作系統(tǒng),那就是Linux,它也是主流的服務(wù)器操作系統(tǒng),應(yīng)用非常廣泛。

Windows系統(tǒng)是微軟開發(fā)的,是正版收費(fèi)的,而Linux操作系統(tǒng)是開源的,用戶群體較大,免費(fèi)而且安全性也更高。其實(shí)兩個(gè)系統(tǒng)都有各自的優(yōu)勢(shì),不過具體選擇哪個(gè)好還要看自己的實(shí)際使用需求。

第一、根據(jù)建站程序選擇

如果想選擇Linux操作系統(tǒng)云服務(wù)器,但網(wǎng)站建站程序是APS的話,那么肯定就不行了,Linux系統(tǒng)是不支持ASP語言的。同樣的,對(duì)于使用access數(shù)據(jù)庫,Linux系統(tǒng)也是不兼容。因此需要根據(jù)企業(yè)實(shí)際需求考慮,到底選擇什么樣的操作系統(tǒng)。

第二、系統(tǒng)穩(wěn)定性情況

租用云服務(wù)器,系統(tǒng)的穩(wěn)定性是我們必須要考慮的。眾所周知,云服務(wù)器的配置整體還是比較高的,而且采用的是國際帶寬,用戶訪問基本不會(huì)存在線路問題,國內(nèi)訪問速度都比較快,所以重點(diǎn)就要考慮它的穩(wěn)定性。

云服務(wù)器的穩(wěn)定性受到配置、線路以及操作系統(tǒng)等多方面因素影響。但從操作系統(tǒng)來看,Windows系統(tǒng)是閉源的,整體穩(wěn)定性比Linux要差一些。此外Linux系統(tǒng)漏洞較少,用戶使用起來會(huì)更好些,穩(wěn)定性高。

第三、從安全角度考慮

正如上面所說,Linux系統(tǒng)是開源的,出現(xiàn)漏洞的概率要小很多,所以從整體的安全性方面來看,Linux系統(tǒng)要比Windows系統(tǒng)高一些。于此同時(shí),Linux操作系統(tǒng)能夠?qū)?quán)限的分配更細(xì)致化,每個(gè)用戶之間是相互獨(dú)立,互不影響,這對(duì)安全性也有一定提高。

對(duì)于云服務(wù)器租用來說,安全性還是很重要的,它直接影響網(wǎng)站數(shù)據(jù)的安全,所以作為站長(zhǎng)來說務(wù)必要重視這第一點(diǎn),選擇安全性較高的云服務(wù)器。

第四、操作設(shè)置難易程度

在操作設(shè)置方面,Windows系統(tǒng)要好于Linux系統(tǒng),畢竟界面化的操作系統(tǒng)對(duì)用戶更容易上手。而命令的操作對(duì)于大多用戶來說,更多的是技術(shù)的支撐,如果不了解的話使用起來比較費(fèi)勁。

不過需要注意的是,如果一定要用Linux系統(tǒng)的云服務(wù)器,對(duì)于Linux系統(tǒng)不熟悉的話也沒關(guān)系,畢竟現(xiàn)在很多Linux云服務(wù)器都支持控制面板設(shè)置,也能達(dá)到界面化操作的效果,只不過要多費(fèi)一些費(fèi)用罷了。

從以上幾點(diǎn)分析不難看出,至于說選擇Windows還是Linux操作系統(tǒng)云服務(wù)器好,這個(gè)還是要根據(jù)用戶的實(shí)際使用需求來考慮,只有適合自己的才是最好的。

感謝閱讀!

其實(shí)這個(gè)問題不用糾結(jié),應(yīng)用是基于什么平臺(tái)開發(fā)的,那么就用什么操作系統(tǒng)。

下面我從幾個(gè)方面談?wù)勎覍?duì)這個(gè)問題的看法:

一、類型方面

我們常見的服務(wù)器應(yīng)用大體可以分兩種類型,網(wǎng)站類型和應(yīng)用系統(tǒng)類型

網(wǎng)站類型部分

目前大多數(shù)官網(wǎng)類型的網(wǎng)站,一般用的都是LAMP,即Linux + Apache + MySQL/MariaDB/Percona + PHP。從上面可以看到用的操作系統(tǒng)是基于linux操作系統(tǒng),目前windows系統(tǒng)也有,但比較少。

應(yīng)用系統(tǒng)部分

這個(gè)就要看應(yīng)用的開發(fā)環(huán)境,一般為使用企業(yè)的不同情況,大多數(shù)情況windows、linux平臺(tái)都支持,從穩(wěn)定性而言,linux平臺(tái)相對(duì)穩(wěn)定,從維護(hù)而言,windows平臺(tái)更容易,更普及些。

二、穩(wěn)定性方面

linux平臺(tái)的穩(wěn)定性在業(yè)內(nèi)是比較公認(rèn)的,這也就是windows平臺(tái)自己不爭(zhēng)氣,大好的江山讓linux蠶食了,現(xiàn)在互聯(lián)網(wǎng)公司一致向linux平臺(tái)靠攏。

三、價(jià)格方面

就云服務(wù)器而言,linux系統(tǒng)要比windows系統(tǒng)便宜,而且linux開銷比windows平臺(tái)要小很多,所以linux平臺(tái)實(shí)際配置需求相對(duì)于windows平臺(tái)要低一些,小網(wǎng)站可能體現(xiàn)不出來,開銷越大的應(yīng)用linux平臺(tái)越能體現(xiàn)優(yōu)勢(shì)。

就操作系統(tǒng)而言,我個(gè)人認(rèn)為linux還是優(yōu)于windows平臺(tái)的,但選取平臺(tái)的時(shí)候看看IT部門是否能夠運(yùn)維linux系統(tǒng),一點(diǎn)點(diǎn)建議僅供參考。

作為服務(wù)器來說,絕大部分情況下,都以選擇Linux為優(yōu)。

肯定Linux系列OS了。

看各大云提供的服務(wù)器系統(tǒng)鏡像,大都是CENTOS,Linux有眾多發(fā)行版,但CentOS還是最穩(wěn)定最流行。

當(dāng)然,WindowsSERVER系統(tǒng)不在考慮之列。除非你的原有資產(chǎn)都在Windows上。

你網(wǎng)上搜索一下,有很多資料介紹原因。

對(duì)于操作系統(tǒng)來說,大家接觸最多的就是Windows系統(tǒng),畢竟咱們經(jīng)常用的電腦就是Windows。由于Windows系統(tǒng)具有界面化的操作優(yōu)勢(shì),很容易上手。但是服務(wù)器來說,還有個(gè)常用的操作系統(tǒng),那就是Linux,它也是主流的服務(wù)器操作系統(tǒng),應(yīng)用非常廣泛。

Windows系統(tǒng)是微軟開發(fā)的,是正版收費(fèi)的,而Linux操作系統(tǒng)是開源的,用戶群體較大,免費(fèi)而且安全性也更高。其實(shí)兩個(gè)系統(tǒng)都有各自的優(yōu)勢(shì),不過具體選擇哪個(gè)好還要看自己的實(shí)際使用需求。

第一、根據(jù)建站程序選擇

如果想選擇Linux操作系統(tǒng)云服務(wù)器,但網(wǎng)站建站程序是APS的話,那么肯定就不行了,Linux系統(tǒng)是不支持ASP語言的。同樣的,對(duì)于使用access數(shù)據(jù)庫,Linux系統(tǒng)也是不兼容。因此需要根據(jù)企業(yè)實(shí)際需求考慮,到底選擇什么樣的操作系統(tǒng)。

第二、系統(tǒng)穩(wěn)定性情況

租用云服務(wù)器,系統(tǒng)的穩(wěn)定性是我們必須要考慮的。眾所周知,云服務(wù)器的配置整體還是比較高的,而且采用的是國際帶寬,用戶訪問基本不會(huì)存在線路問題,國內(nèi)訪問速度都比較快,所以重點(diǎn)就要考慮它的穩(wěn)定性。

云服務(wù)器的穩(wěn)定性受到配置、線路以及操作系統(tǒng)等多方面因素影響。但從操作系統(tǒng)來看,Windows系統(tǒng)是閉源的,整體穩(wěn)定性比Linux要差一些。此外Linux系統(tǒng)漏洞較少,用戶使用起來會(huì)更好些,穩(wěn)定性高。

第三、從安全角度考慮

正如上面所說,Linux系統(tǒng)是開源的,出現(xiàn)漏洞的概率要小很多,所以從整體的安全性方面來看,Linux系統(tǒng)要比Windows系統(tǒng)高一些。于此同時(shí),Linux操作系統(tǒng)能夠?qū)?quán)限的分配更細(xì)致化,每個(gè)用戶之間是相互獨(dú)立,互不影響,這對(duì)安全性也有一定提高。

對(duì)于云服務(wù)器租用來說,安全性還是很重要的,它直接影響網(wǎng)站數(shù)據(jù)的安全,所以作為站長(zhǎng)來說務(wù)必要重視這第一點(diǎn),選擇安全性較高的云服務(wù)器。

第四、操作設(shè)置難易程度

在操作設(shè)置方面,Windows系統(tǒng)要好于Linux系統(tǒng),畢竟界面化的操作系統(tǒng)對(duì)用戶更容易上手。而命令的操作對(duì)于大多用戶來說,更多的是技術(shù)的支撐,如果不了解的話使用起來比較費(fèi)勁。

不過需要注意的是,如果一定要用Linux系統(tǒng)的云服務(wù)器,對(duì)于Linux系統(tǒng)不熟悉的話也沒關(guān)系,畢竟現(xiàn)在很多Linux云服務(wù)器都支持控制面板設(shè)置,也能達(dá)到界面化操作的效果,只不過要多費(fèi)一些費(fèi)用罷了。

從以上幾點(diǎn)分析不難看出,至于說選擇Windows還是Linux操作系統(tǒng)云服務(wù)器好,這個(gè)還是要根據(jù)用戶的實(shí)際使用需求來考慮,只有適合自己的才是最好的。

別以為GUI是選擇系統(tǒng)的標(biāo)準(zhǔn)。

微軟也有出不帶GUI的Windows Core版本,使用Powershell CLI。

Linux也有KDE/GNOME/Xfree DM GUI行Xwindow/RDP/VNC的。

在Linux及Windows上行GUI,內(nèi)存耗用差不多,Windows效能更好些。一般Linux用戶會(huì)選用ubuntu作工作站,開發(fā)用。

在Linux及Windows Core 上行CLI,Linux效能更好些。多選用CentOS建服務(wù)器。

要快速建立網(wǎng)站服務(wù)器,可選用LAMP。

建立API服務(wù)器,可選用Linux+Mysql+NodeJS。

Linux 更好一點(diǎn)。

Linux比較好,在人才,資源上都有很大的優(yōu)勢(shì)

有的計(jì)算機(jī)的運(yùn)行都離不開操作系統(tǒng),服務(wù)器是提供計(jì)算服務(wù)的高級(jí)計(jì)算機(jī),當(dāng)然也離不開操作系統(tǒng),目前在購買用服務(wù)器時(shí),主機(jī)提供商一般會(huì)提供操作系統(tǒng)預(yù)裝選項(xiàng),通常會(huì)有windows和linux操作系統(tǒng)供用戶選擇,那么,云服務(wù)器應(yīng)該如何選擇操作系統(tǒng)?下面就和我們智云優(yōu)創(chuàng)一起來了解一下吧。

在選擇云服務(wù)器的操作系統(tǒng)時(shí),首先要遵循使用便利的原則,即自己對(duì)什么操作系統(tǒng)熟悉,會(huì)操作哪種系統(tǒng)就選擇哪種系統(tǒng),這樣有利于快速配置服務(wù)器環(huán)境和建設(shè)網(wǎng)站。

WindowsServer系統(tǒng)

一般來說Windows系統(tǒng)更占內(nèi)存,對(duì)配置要求更高,不過由于是圖形化界面,使用起來比較方便,在程序支持方面,ASP等語言的程序軟件需要使用windows系統(tǒng)。

當(dāng)然Windowsserver系統(tǒng)也有自己的優(yōu)點(diǎn),windows在PC時(shí)代已經(jīng)家喻戶曉,在易用性方面,沒有人比Windows做的更好,相比其他云服務(wù)器系統(tǒng)來說,極大的降低了使用者的學(xué)習(xí)成本,這也是WindowsServer系統(tǒng)經(jīng)久不衰的原因之一。

Linux系統(tǒng)

它的最大的特點(diǎn)就是開源,開源就是所有人,包括相關(guān)企業(yè),政什么的,開發(fā)人員共同監(jiān)督,在這樣的監(jiān)督之下,一套成熟的方案幾乎很少出現(xiàn)漏洞。另外,linux還有一套完整的權(quán)限機(jī)制,沒有相關(guān)權(quán)限,想要對(duì)系統(tǒng)造成破壞根本無從下手,安全性和穩(wěn)定性相對(duì)較高,受到中、高級(jí)開發(fā)人員的青睞,在程序支持方面,Linux系統(tǒng)對(duì)PHP支持較好,適合市面上大多數(shù)的開源軟件。

如何做遠(yuǎn)程進(jìn)程管理器,懸賞50

根窗口,父窗口和子窗口

每一個(gè)屏幕上都有一個(gè)根窗口。根窗口總是占據(jù)整個(gè)屏幕尺寸。這個(gè)窗口無法被銷毀,改變尺寸或者圖標(biāo)化。當(dāng)一個(gè)應(yīng)用程序創(chuàng)建了一些窗口,它先創(chuàng)建至少一個(gè)頂層窗口。在被映射到屏幕上后,這個(gè)窗口成為一個(gè)根窗口的直接子窗口。這個(gè)窗口在被映射到屏幕上之前,窗口管理器被告知什么發(fā)生了,然后,窗口管理器獲得特權(quán)成為新頂層窗口的"父親"。這通常被用來增加一個(gè)會(huì)包含新窗口的窗口和繪制框架,標(biāo)題欄,系統(tǒng)菜單等。

一旦一個(gè)頂層窗口(當(dāng)然它實(shí)際上不是一個(gè)頂層窗口,因?yàn)榇翱诠芾砥饕呀?jīng)成為它的父窗口了)被創(chuàng)建了,應(yīng)用程序可以在它里面創(chuàng)建它的子窗口。一個(gè)子窗口只能在它的父窗口里顯示 - 如果試圖把它移動(dòng)到外面,出去的部分將被父窗口的邊框給切掉。任何窗口都可以包含一個(gè)以上的子窗口,在這種情況下,這些子窗口將被放置在應(yīng)用的內(nèi)部棧上。當(dāng)一個(gè)頂層窗口被打開 - 它的所有子窗口也將隨著它被打開。

以下例子演示如何在一個(gè)給定的叫"win"的窗口里打開一個(gè)子窗口。

Lets see how to create a child window inside a given window 'win'.

/* this variable will store the handle of the newly created child window. */

Window child_win;

/* these variables will store the window's width and height. */

int child_win_width = 50;

int child_win_height = 30;

/* these variables will store the window's location. */

/* position of the child window is top-left corner of the */

/* parent window. - 0,0. */

int child_win_x = 0;

int child_win_y = 0;

/* create the window, as specified earlier. */

child_win = XCreateSimpleWindow(display,

win,

child_win_x, child_win_y,

child_win_width, child_win_height,

child_win_border_width,

BlackPixel(display, screen_num),

WhitePixel(display, screen_num));

--------------------------------------------------------------------------------

事件傳遞

先前我們已經(jīng)討論了事件傳遞 - 如果一個(gè)窗口收到了一個(gè)它不處理的事件 - 它就把該事件發(fā)到它的父窗口去。如果那個(gè)父窗口也不處理該事件 - 那個(gè)父窗口就把該事件發(fā)到它的父窗口上去,接下來依此類推。這種行為對(duì)一個(gè)簡(jiǎn)單的Xlib程序是沒什么用的,但對(duì)于抽象級(jí)更高的繪圖庫是有用的。這些抽象級(jí)更高的繪圖庫通常把某個(gè)特定窗口的事件聯(lián)系到一個(gè)函數(shù)上去。在這種情況下,發(fā)送事件到特定的窗口并用適當(dāng)?shù)暮瘮?shù)來處理就非常有用。

--------------------------------------------------------------------------------

與窗口管理器進(jìn)行交互

在我們察看了如何創(chuàng)建和繪制窗口之后,我們回過頭來看一下我們的窗口是如何與它們的環(huán)境 - 整個(gè)屏幕和其它窗口進(jìn)行交互的。首先,我們的程序需要與窗口管理器進(jìn)行交互。窗口管理器有責(zé)任裝飾被繪制的窗口(例如增加框架,一個(gè)圖標(biāo)化的按鈕,一個(gè)系統(tǒng)菜單,一個(gè)標(biāo)題欄),同時(shí)在窗口被圖標(biāo)化時(shí)繪制圖標(biāo)。它還管理屏幕里的窗口排列順序以及其它可管理的任務(wù)。我們需要給它各種提示以讓它以我們需要的方式來對(duì)待我們的窗口。

--------------------------------------------------------------------------------

窗口屬性

許多與窗口管理器交流的參數(shù)都通過叫"properties"的數(shù)據(jù)來傳遞。X服務(wù)器把這些屬性貼到各種窗口上,同時(shí)把它們存儲(chǔ)成一種可以被各種架構(gòu)的系統(tǒng)所能讀取的格式(記住,一個(gè)X客戶程序可能運(yùn)行在一臺(tái)遠(yuǎn)程主機(jī)上)。屬性可以是各種類型 - 數(shù)字,字符串,等等。大部分的窗口管理器提示函數(shù)使用文本屬性。一個(gè)叫XStringListToTextProperty()的函數(shù)可以把C語言的字符串轉(zhuǎn)換成X文本屬性,轉(zhuǎn)換后的結(jié)果就可以傳給各色Xlib函數(shù)。以下是一個(gè)例子:

/* This variable will store the newly created property. */

XTextProperty window_title_property;

/* This is the string to be translated into a property. */

char* window_title = "hello, world";

/* translate the given string into an X property. */

int rc = XStringListToTextProperty(window_title,

1,

window_title_property);

/* check the success of the translation. */

if (rc == 0) {

fprintf(stderr, "XStringListToTextProperty - out of memory\n");

exit(1);

}

函數(shù)XStringListToTextProperty()接收一個(gè)C字符串矩陣(在我們的例子里只有一個(gè))和一個(gè)指向XTextProperty型變量的指針為參數(shù),合并C字符串里的屬性把值傳到XTextProperty型變量里。成功時(shí)它返回一個(gè)非0值,失敗時(shí)返回0(例如,沒有足夠的內(nèi)存來完成操作)。

--------------------------------------------------------------------------------

設(shè)置窗口名字和圖標(biāo)名字

我們需要做的第一件事就是給我們的窗口設(shè)置名字。使用函數(shù)XSetWMName()。窗口管理器也許會(huì)把這個(gè)名字顯示在窗口標(biāo)題欄或是在任務(wù)欄上。該函數(shù)接受3個(gè)參數(shù):一個(gè)指向顯示的指針,一個(gè)窗口句柄,和一個(gè)包含有我們?cè)O(shè)置的名字的XTextProperty變量。下面是我們?nèi)绾巫龅模?

/* assume that window_title_property is our XTextProperty, and is */

/* defined to contain the desired window title. */

XSetWMName(display, win, window_title_property);

為了設(shè)置我們的窗口的圖標(biāo)化名字,我們將用相同的方式使用函數(shù)XSetWMIconName()。

/* this time we assume that icon_name_property is an initialized */

/* XTextProperty variable containing the desired icon name. */

XSetWMIconName(display, win, icon_name_property);

--------------------------------------------------------------------------------

設(shè)置滿意的窗口尺寸

在各種情況下,我們希望讓窗口管理器知道我們指定的窗口尺寸以及只允許用戶在我們的限定下改變窗口尺寸。例如,一個(gè)終端窗口(像xterm),我們總是要求我們的窗口可以包含全部的行和列,因此我們就不能從中間截?cái)辔覀兊娘@示。在其它情況下,我們不希望我們的窗口可以被改變尺寸(像絕大部分的對(duì)話框窗口),等等。我們可以依賴窗口管理器的這個(gè)尺寸信息,雖然它可能被簡(jiǎn)單的忽視掉。我們首先需要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)結(jié)構(gòu)來包含該信息,填充必要的數(shù)據(jù),然后使用函數(shù)XSetWMNormalHints()。下面是如何操作:

/* pointer to the size hints structure. */

XSizeHints* win_size_hints = XAllocSizeHints();

if (!win_size_hints) {

fprintf(stderr, "XAllocSizeHints - out of memory\n");

exit(1);

}

/* initialize the structure appropriately. */

/* first, specify which size hints we want to fill in. */

/* in our case - setting the minimal size as well as the initial size. */

win_size_hints-flags = PSize | PMinSize;

/* next, specify the desired limits. */

/* in our case - make the window's size at least 300x200 pixels. */

/* and make its initial size 400x250. */

win_size_hints-min_width = 300;

win_size_hints-min_height = 200;

win_size_hints-base_width = 400;

win_size_hints-base_height = 250;

/* pass the size hints to the window manager. */

XSetWMNormalHints(display, win, win_size_hints);

/* finally, we can free the size hints structure. */

XFree(win_size_hints);

請(qǐng)查看你的手冊(cè)來獲取尺寸提示的完整信息。

--------------------------------------------------------------------------------

設(shè)置各種窗口管理器提示

使用函數(shù)XSetWMHints()還可以設(shè)置許多其它的窗口管理器提示。該函數(shù)使用一個(gè)XWMHints結(jié)構(gòu)來傳遞參數(shù)給窗口管理器。下面是例子:

/* pointer to the WM hints structure. */

XWMHints* win_hints = XAllocWMHints();

if (!win_hints) {

fprintf(stderr, "XAllocWMHints - out of memory\n");

exit(1);

}

/* initialize the structure appropriately. */

/* first, specify which hints we want to fill in. */

/* in our case - setting the state hint as well as the icon position hint. */

win_hints-flags = StateHint | IconPositionHint;

/* next, specify the desired hints data. */

/* in our case - make the window's initial state be iconized, */

/* and set the icon position to the top-left part of the screen. */

win_hints-initial_state = IconicState;

win_hints-icon_x = 0;

win_hints-icon_y = 0;

/* pass the hints to the window manager. */

XSetWMHints(display, win, win_hints);

/* finally, we can free the WM hints structure. */

XFree(win_hints);

請(qǐng)查閱手冊(cè)以獲取全部選項(xiàng)的詳細(xì)信息。

--------------------------------------------------------------------------------

設(shè)置一個(gè)程序的圖標(biāo)

在用戶圖標(biāo)化了我們的程序的時(shí)候,為了讓窗口管理器能為我們的程序設(shè)置一個(gè)圖標(biāo),我們使用上面提到的函數(shù)XSetWMHints。但是,首先我們需要?jiǎng)?chuàng)建一個(gè)包含有圖標(biāo)數(shù)據(jù)的像素圖。X服務(wù)器使用像素圖來操作圖片,將在后面介紹它的詳細(xì)使用。在這里,我們只是向你展示如何為你的程序設(shè)置圖標(biāo)。我們假設(shè)你已經(jīng)得到了一個(gè)X bitmap格式的圖標(biāo)文件。教程為了方便提供了一個(gè)圖標(biāo)文件"icon.bmp" ,下面是代碼:

/* include the definition of the bitmap in our program. */

#include "icon.bmp";

/* pointer to the WM hints structure. */

XWMHints* win_hints;

/* load the given bitmap data and create an X pixmap containing it. */

Pixmap icon_pixmap = XCreateBitmapFromData(display,

win,

icon_bitmap_bits,

icon_bitmap_width,

icon_bitmap_height);

if (!icon_pixmap) {

fprintf(stderr, "XCreateBitmapFromData - error creating pixmap\n");

exit(1);

}

/* allocate a WM hints structure. */

win_hints = XAllocWMHints();

if (!win_hints) {

fprintf(stderr, "XAllocWMHints - out of memory\n");

exit(1);

}

/* initialize the structure appropriately. */

/* first, specify which size hints we want to fill in. */

/* in our case - setting the icon's pixmap. */

win_hints-flags = IconPixmapHint;

/* next, specify the desired hints data. */

/* in our case - supply the icon's desired pixmap. */

win_hints-icon_pixmap = icon_pixmap;

/* pass the hints to the window manager. */

XSetWMHints(display, win, win_hints);

/* finally, we can free the WM hints structure. */

XFree(win_hints);

你可以使用程序例如"xpaint"來創(chuàng)建使用X bitmap格式的文件。

我們提供文件simple-wm-hints.c來總結(jié)這一節(jié),這段程序包括創(chuàng)建一個(gè)窗口,設(shè)置窗口管理器提示為在上面顯示,以及一個(gè)簡(jiǎn)單的事件循環(huán)。它允許用戶調(diào)整參數(shù)以察看提示是如何影響程序的行為的。這可以幫助你了解X程序的可移植性。

--------------------------------------------------------------------------------

簡(jiǎn)單窗口操作

對(duì)我們的窗口,我們可以做更多的一些事情。例如,改變它們的尺寸,打開或關(guān)閉它們,圖標(biāo)化它們等。Xlib提供了一系列函數(shù)來完成上面提到的功能。

--------------------------------------------------------------------------------

映射和解除一個(gè)窗口的映射

首先我們對(duì)窗口作的一對(duì)操作是映射它到屏幕上去和解除它的映射。映射一個(gè)窗口的操作將會(huì)使一個(gè)窗口顯示在屏幕上,如我們?cè)诤?jiǎn)單窗口程序例子里所看到的。解除映射操作將會(huì)把窗口從屏幕里移除出去(雖然作為一個(gè)邏輯結(jié)點(diǎn)它仍然在X服務(wù)器里)。這個(gè)可以提供产生窗口被隱藏(映射解除)和再顯示(映射)的效果。例如,我們的程序里有一個(gè)對(duì)話框,我們不需要每次在需要它顯示的時(shí)候都重新創(chuàng)建一個(gè)窗口,我們只是以映射解除的狀態(tài)創(chuàng)建一次,在用戶需要的時(shí)候簡(jiǎn)單的把它映射到屏幕上去就行了。這比每一次都創(chuàng)建它和銷毀它要快多了,當(dāng)然,這需要在客戶端和服務(wù)器端同時(shí)使用更多的內(nèi)存。

你應(yīng)該還記得映射操作是使用函數(shù)XMapWindow()。映射解除操作是使用函數(shù)XUnmapWindow(),下面是如何使用它們:

/* make the window actually appear on the screen. */

XMapWindow(display, win);

/* make the window hidden. */

XUnmapWindow(display, win);

除非整個(gè)窗口被其它窗口給覆蓋了,一個(gè)暴露事件將在映射操作后發(fā)給應(yīng)用程序。

--------------------------------------------------------------------------------

在屏幕移動(dòng)一個(gè)窗口

我們想做的另一個(gè)操作是在屏幕里移動(dòng)窗口。使用函數(shù)XMoveWindow()可以完成這個(gè)操作。它接受窗口的新坐標(biāo),使用的方法和函數(shù)XCreateSimpleWindow()是一樣的。一下是調(diào)用的例子:

/* move the window to coordinates x=400 and y=100. */

XMoveWindow(display, win, 400, 100);

注意當(dāng)窗口移動(dòng)的時(shí)候,窗口的部分可能后被遮住或被重新暴露,這樣我們就可能會(huì)收到暴露事件。

--------------------------------------------------------------------------------

改變窗口尺寸

接下來我們要做的是改變一個(gè)窗口的尺寸。使用函數(shù)XResizeWindow()可以完成這個(gè)操作:

/* resize the window to width=200 and height=300 pixels. */

XResizeWindow(display, win, 200, 300);

我們可以合并移動(dòng)和改變尺寸操作為一個(gè)操作,使用函數(shù)XMoveResizeWindow():

/* move the window to location x=20 y=30, and change its size */

/* to width=100 and height=150 pixels. */

XMoveResizeWindow(display, win, 20, 30, 100, 150);

--------------------------------------------------------------------------------

改變窗口們的棧順序 - 提升和降低

到目前為止我們已經(jīng)改變了一個(gè)單獨(dú)窗口的許多屬性。接下來我們將看看窗口之間的屬性。其中一個(gè)就是它們的棧屬性。也就是說,窗口是如何在屏幕上排列的。最前面的窗口我們說它是在棧頂,最后面的窗口我們說它是在棧底。下面演示我們?nèi)绾胃淖兇翱诘臈m樞颍?

/* move the given window to the top of the stack. */

XRaiseWindow(display, win1);

/* move the given window to the bottom of the stack. */

XLowerWindow(display, win1);

--------------------------------------------------------------------------------

圖標(biāo)化和恢復(fù)一個(gè)窗口

在這里我們將要講解的最后一個(gè)操作就是如何把一個(gè)窗口變換成圖標(biāo)狀態(tài)和恢復(fù)它。使用函數(shù)XIconifyWindow()來把一個(gè)窗口變換成圖標(biāo)狀態(tài),使用函數(shù)XMapWindow()來恢復(fù)它。為了幫助理解為什么圖標(biāo)化函數(shù)沒有一個(gè)對(duì)應(yīng)的反函數(shù),我們必須理解當(dāng)一個(gè)窗口被圖標(biāo)化時(shí),實(shí)際發(fā)生的事情是那個(gè)窗口被解除映射了,而它的圖表被映射了。結(jié)果,如果想使哪個(gè)窗口在出現(xiàn),我們只需要簡(jiǎn)單的映射它一下就行了。圖標(biāo)實(shí)際上是另一個(gè)窗口,只不過它與我們的窗口有非常強(qiáng)的聯(lián)系關(guān)系。下面演示如何圖標(biāo)化一個(gè)窗口并恢復(fù)它:

/* iconify our window. Make its icon window appear on the same */

/* screen as our window (assuming we created our window on the */

/* default screen). */

XIconifyWindow(display, win, DefaultScreen(display));

/* de-iconify our window. the icon window will be automatically */

/* unmapped by this operation. */

XMapWindow(display, win);

--------------------------------------------------------------------------------

獲得一個(gè)窗口的信息

與可以為窗口設(shè)置許多屬性相同,我們也可以要求X服務(wù)器提供這些屬性的值。例如,我們可以檢查窗口現(xiàn)在在屏幕里什么位置,當(dāng)前尺寸,是否被映射了等等。函數(shù)XGetWindowAttributes()可以幫助我們獲取那些信息:

/* this variable will contain the attributes of the window. */

XWindowAttributes win_attr;

/* query the window's attributes. */

Status rc = XGetWindowAttributes(display, win, win_attr);

結(jié)構(gòu)體XWindowAttributes包含了很多數(shù)據(jù)域,下面是它的一部分:

int x, y;

窗口的位置,相對(duì)于它的父窗口。

int width, height;

窗口的寬和高(單位,像素)。

int border_width

窗口的邊框?qū)挾?

Window root;

根窗口,也就是我們的窗口在那個(gè)窗口里被顯示了。

這個(gè)函數(shù)有些問題,就是它返回的是相對(duì)于父窗口的位置。這對(duì)一些窗口的操作(例如XMoveWindow)是沒有什么意義的。為了解決這個(gè)問題,我們需要使用兩步的操作。首先,我們找出窗口的父窗口的ID。然后我們?cè)谑褂盟鼇泶_定窗口相對(duì)于屏幕的坐標(biāo)。我們使用兩個(gè)前面沒有介紹的函數(shù)來完成這個(gè)計(jì)算,XQueryTree()和XTranslateCoordinates()。這兩個(gè)函數(shù)的功能超出了我們的需要,所以我們只關(guān)注我們需要的:

/* these variables will eventually hold the translated coordinates. */

int screen_x, screen_y;

/* this variable is here simply because it's needed by the */

/* XTranslateCoordinates function below. For its purpose, see the */

/* manual page. */

Window child_win;

/* this variable will store the ID of the parent window of our window. */

Window parent_win;

/* this variable will store the ID of the root window of the screen */

/* our window is mapped on. */

Window root_win;

/* this variable will store an array of IDs of the child windows of */

/* our window. */

Window* child_windows;

/* and this one will store the number of child windows our window has. */

int num_child_windows;

/* finally, make the query for the above values. */

XQueryTree(display, win,

root_win,

parent_win,

child_windows, num_child_windows);

/* we need to free the list of child IDs, as it was dynamically allocated */

/* by the XQueryTree function. */

XFree(child_windows);

/* next, we make the coordinates translation, from the coordinates system */

/* of the parent window, to the coordinates system of the root window, */

/* which happens to be the same as that of the screen, since the root */

/* window always spans the entire screen size. */

/* the 'x' and 'y' values are those previously returned by the */

/* XGetWindowAttributes function. */

XTranslateCoordinates(display, parent_win, root_win,

win_attr.x, win_attr.y, screen_x, screen_y,

child_win);

/* at this point, screen_x and screen_y contain the location of our original */

/* window, using screen coordinates. */

你可以看到Xlib有時(shí)候會(huì)讓我們處理問題時(shí)變得很麻煩。

以上的內(nèi)容可以參考例子window-operations.c 程序。

--------------------------------------------------------------------------------

logstash收集日志,多臺(tái)機(jī)器,必須要多臺(tái)機(jī)器安裝部署嗎

不是的,logstash有兩種模式,一種是server,另一種是client,client就是把當(dāng)前主機(jī)當(dāng)做日志輸入,需要每臺(tái)都裝,而server模式不需要,它是請(qǐng)求遠(yuǎn)程主機(jī)輸入日志,也就是當(dāng)java程序發(fā)現(xiàn)有l(wèi)ogstash連接上時(shí),就會(huì)把日志輸進(jìn)logstash

聲明:各百科所有作品(圖文、音視頻)均由用戶自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流。若您的權(quán)利被侵害,請(qǐng)聯(lián)系: [email protected]