linux 散知識點

2021-06-29 06:39:28 字數 3317 閱讀 8866

大端模式,是指資料的高位元組儲存在記憶體的低位址中,而資料的低位元組儲存在記憶體的高位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理:位址由小向大增加,而資料從高位往低位放;

小端模式,是指資料的高位元組儲存在記憶體的高

位址中,而資料的低位元組儲存在記憶體的低位址中,這種儲存模式將位址的高低和

資料位權有效地結合起來,高位址部分權值高,低位址部分權值低,和我們的邏輯方法一致。

例如乙個16bit的short型x,在記憶體中的位址為0x0010,x的值為0x1122,那麼0x11為高位元組,0x22為低位元組。對於 大端模式,就將0x11放在低位址中,即0x0010中,0x22放在高位址中,即0x0011中。小端模式,剛好相反。我們常用的x86結構是小端模式,而keil c51則為大端模式。很多的arm,dsp都為小端模式。有些arm處理器還可以由硬體來選擇是大端模式還是小端模式。 2

以下關於交叉編譯器概述正確的是(a)

a)交叉編譯器一般按照cpu型別分類,不同的cpu就有不同的交叉編譯器

b)交叉編譯器的速度比其他編譯器的速度要快

c)linux開發環境中的交叉編譯器不是gcc編譯器

d)交叉編譯器編譯出來的目標檔案一般也能在開發機(普通pc)上執行

traceroute是乙個正確理解ip網路並了解路由原理的重要工具

traceroute程式的設計是利用icmp及ip header的ttl(time to live)字段(field)。首先,traceroute送出乙個ttl是1的ip datagram(其實,每次送出的為3個40位元組的包,包括源位址,目的位址和包發出的時間標籤)到目的地,當路徑上的第乙個路由器(router)收到這個datagram時,它將ttl減1。此時,ttl變為0了,所以該路由器會將此datagram丟掉,並送回乙個「icmp time exceeded」訊息(包括發ip包的源位址,ip包的所有內容及路由器的ip位址),traceroute 收到這個訊息後,便知道這個路由器存在於這個路徑上,接著traceroute 再送出另乙個ttl是2 的datagram,發現第2 個路由器...... traceroute 每次將送出的datagram的ttl 加1來發現另乙個路由器,這個重複的動作一直持續到某個datagram 抵達目的地。當datagram到達目的地後,該主機並不會送回icmp time exceeded訊息,因為它已是目的地了,那麼traceroute如何得知目的地到達了呢?

traceroute在送出udp datagrams到目的地時,它所選擇送達的port number 是乙個一般應用程式都不會用的號碼(30000 以上),所以當此udp datagram 到達目的地後該主機會送回乙個「icmp port unreachable」的訊息,而當traceroute 收到這個訊息時,便知道目的地已經到達了。所以traceroute 在server端也是沒有所謂的daemon 程式。 4

char str = "hello";

char *p = str;

printf("sizeof(str) : %d\n", sizeof(str));

printf("sizeof(a) : %d\n", sizeof("a"));

printf("sizeof('a') : %d\n", sizeof('a'));

printf("strlen(str) : %d\n", strlen(str));

printf("sizeof(str) : %d\n", sizeof(p));

結果:sizeof(str) : 6

sizeof(a) : 2

sizeof('a') : 4

strlen(str) : 5

sizeof(str) : 8 5

find . -path "./dirname" -prune -o -name "*.dll" -print

不包含某個目錄, 去查詢檔案

find . -path "./mvconfigs" -prune -o -type  f -print | wc -l

不包含某個目錄, 統計所有的檔案

另外說幾個常用的引數:

-exec 是將查詢到的檔案執行命令(-exec command {} \;)

-ok    與-exec相同,只不過操作前要詢問使用者

-user   按檔案屬主查詢

-group 按檔案陣列查詢

-mtime 按檔案更改時間查詢

-atime  按檔案訪問時間查詢

-ctime  按檔案建立時間查詢 6

指標的概念

乙個變數在記憶體中所佔儲存單元的

位址號就是該

變數的指標。

如:int i;

i=20;

2.8.1.1 指標變數的定義

型別識別符號號  *指標變數名錶

如:  int i=50;

int *ip;

說明:(1)指標變數名前面的『*』表示該變數為指標變數,它不是變數名本身的一部分。

(2)此處的型別識別符號是該指標變數所要指向的變數的型別。

指標與函式

前面講過,函式的引數可以為整型、實型、字元型等普通變數。實參與形參間引數的傳遞是單向的「值傳遞」。

但函式的引數也可為指標,它的作用是將乙個變數的位址傳給被調函式的形參。此時主調函式的呼叫點上的實參必須是位址值(指標),而被調函式的形參一定要定義成指標變數的形式

此時,被調函式的形參得到的是實參的指標,因此,該形參變數就指向實參,在被調函式中對形參的操作就相當於對它所指向的實參的操作7

函式的指標

乙個函式在記憶體中的起始位址就是該函式的指標。

在c++中,函式的名稱就代表了該函式的指標。

指向函式的指標變數的一般定義形式為:

資料型別識別符號  (*指標變數名)( );

在c++語言中,指標變數可以指向普通變數,它也可以指向函式。

#include "iostream.h"

int max(int x, int y);   //宣告被調函式max

void main()

如果改用指向函式的指標變數的話,則main函式為:

void   main()

說明:

(1)int (*p)() 說明了乙個指向返回值為整型資料的函式的指標。

(2)p=max 表示把函式的入口位址賦給指標變數p,那麼*p就是函式max.因此c=(*p)(a,b);和c=max(a,b)等價。

注意:(1)函式的呼叫可以通過函式名呼叫,也可通過函式指標呼叫。

(2)int (*p)();只是表示定義了乙個指向函式的指標變數。

(3)在函式指標變數賦值時,只須給出函式名,不必給出引數: 如:p=max; 因為只是傳遞函式的位址。

(4)對指向函式的指標做象p+n,p++,p—等算數運算是無意義的。

零散知識點

魔術變數 echo 這是第 line 行 當前行號 echo 該檔案位於 file e wamp www test index.php 絕對路徑 echo 該檔案位於 dir e wamp www test 等價於 dirname file echo 命名空間為 namespace 當前命名空間的名...

零散知識點

一 sendmessage 和broadcastmessage 在了解專案結構的前提下,sendmessage 和broadcastmessage 方法使用起來非常靈活而且容易實現,但它使用了反射,而反射會造成更多的cpu開銷。在清楚要呼叫哪個元件的哪個方法時應該通過元件的引用直接呼叫方法 在不清楚...

零散知識點記錄

設定uiview的陰影效果 self.view layer setshadowoffset cgsizemake 2,2 self.view layer setshadowradius 6 self.view layer setshadowopacity 1 self.view layer sets...