2017年4月22日 星期六

C++ char存入字串

  在C++裡面
如果你想要不停地將char塞入string中
可以用以下方式:

  char output1[64] = "54725875678378";
  char output2[64] = ", @@@@@@@@@@@@@@@@@@@@@@@@@";
  printf("%s\n",output1);
  printf("%s\n",output2);
  std::string tmp1 = "";
  tmp1 = tmp1 + output1;
  printf("%s\n",tmp1.c_str());
  tmp1 = tmp1 + output2;
  printf("%s\n",tmp1.c_str());

2017年1月19日 星期四

如何用C語言去獲得程式執行的時間?!

如何用C語言去獲得程式執行的時間?!

----------------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <time.h>
int main()
{
    const int MOD = 1000000;
    int n,i,j,sum=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        int fact = 1;
        for(j=1;j<=i;j++)
        {
            fact =fact * j % MOD;
        }
        sum = (sum +fact) % MOD;
    }
    printf("%d\n",sum);
    printf("Time used = %.2f\n",(double)clock()/CLOCKS_PER_SEC);

}

----------------------------------------------------------------------------------------------------------------------
我們使用clock()函數來簡單的計時,該函數會返回程式目前為止的時間記錄,在程式結尾呼叫此函數,便可以獲得整個程式的執行時間,CLOCKS_PER_SEC是表示說得到的值我們以秒為單位。



無線隨意網路

無線隨意網路

3-1 無線隨意網路簡介:

無線隨意網路 (Wireless Ad Hoc Network) 是一種特殊的網路,沒有固定的基礎架構,不需要事先規劃及佈置,而是依靠成員之間自我溝通,隨時隨地自 動組織建立而成,對某一特定應用提供服務,無線隨意網路特色為成員可隨意移動,即使在高移 動性的情況,依舊能維持一定的服務水準,無線隨意網路的應用包含有地震、火場、海嘯等基 礎通訊設施毀壞時緊急救災的通訊;另外當基礎通 訊設施無法架設或成本過高時,如山難搜救、空中 機群、水中船隊及汽車間之通訊亦可藉由該網路完成,在無線隨意網路的各種應用中,除了可利用單播 (Unicast)外,必要時也可使用群播 (Multicast)的方式 來傳送一般數據或即時的資料。

在IEEE802.11中定義了兩種基本服務集 (Basic Service Set, BSS) 
中控型基本服務集 (Infrastructure BSS) :主要由基地台 (Access Point, AP) 負責同一服務區中所有的傳輸。
 獨立型基本服務集 (Independent BSS, IBSS): 工作站 (Station, STA) 之間能彼此直接通訊,而不須透過基地台 的協助。

在較大型的無線隨意網路中,採用IBSS要交換資訊 的雙方可能不在彼此的通訊範圍之內,需要其他工 作站中繼 (Relay)封包。 封包的傳送需要多點跳躍 (Multihop)才能送到目的 地,因此如何尋找路由路徑 (Routing path),使中繼 節點能把封包快速有效的傳往目的地,是相當基本 且關鍵的任務。
尋找路由路徑的過程,稱為路由探索 (Route discovery)。 在路由探索的過程中,節點利用廣播 (Broadcast) 路由請求 (Route request, RREQ) 來獲得路由路徑。
節點散佈的區域廣泛,廣播的訊息需要一些中繼節點重播 (Rebroadcast),才能使所有節點得知,但因 節點位置可能改變,造成多次重播,進而出現廣播 風暴問題。 由於節點的電力透過電池來提供,如何省電因而成 為了一項重要的議題。在本節中也將介紹省電協定 及電力控制的方法,使節點能夠使用較長的時間。

3-2 媒體存取層:

單一通道:


固定式:

傳送端要傳送資料時,需要以特地決定的順序來存取, 例如FDMA、TDMA、CDMA、polling等方式。

分頻多重存取 :

FDMA (Frequency Division Multiple Access) 的機制是將頻 寬直接切割成數個等寬的通道,而每一個通道供一個使 用者使用,因此在同一時間能有多個人使用這個傳輸媒 介。

分時多重存取 :

 TDMA (Time Division Multiple Access) 的技術則是允許多 個使用者使用相同頻率來存取媒介,TDMA會在時間軸上 平等的劃分許多等長的訊框 (Frame),而每個訊框再細分 為許多相等的時槽 (Timeslot),每個時槽使用一個通道, 每一通道供一位使用者使用,因此不同使用者用的通道 並不相同,彼此的訊號不會重疊。

Hybrid FDMA/TDMA:

組合式FDMA/TDMA存取是將上述的方法合併使用,目 的是使傳輸效率較佳或是讓節點更省電等。

分碼多重存取 :

CDMA (Code Division Multiple Access) [1]是為了更有效的 使用頻寬與時間,除了切割時間之外,每一組傳輸都會 給予一組特定的編碼 (Code) ,要傳送的位元會先經過編 碼再傳送出去,如果彼此的編碼是正交 (Orthogonal) ,即 使使用相同的頻率也不會互相干擾。

正交編碼:假設有四個編碼A、B、C、D ,編碼若彼此正 交,內積會等於0,因此不會互相產生干擾。而內積後獲 得+1表示送出的位元為1,獲得-1則送出的位元為0。

輪詢Polling: 

主節點依次邀請從屬節點來傳送資料。
缺點為主節點故障時,則無法運作,以及查詢從屬節點 時造成的延遲。

CSMA:


載波偵測多重存取機制 (Carrier Sense Multiple Access), Carrier Sense是指傳送者必須先監聽目前傳輸媒介是否有 人在使用,而Multiple Access則是指有多個節點共用這個 傳輸媒介。 

CSMA的傳輸方式是在要傳輸之前會先偵測傳輸媒介,觀 察是否有其他節點正在傳輸資料,若無正在傳輸的資料 則直接傳送;因為會觀察媒介的情況,避免碰撞,效率 較Aloha好。

CSMA偵測的機制分為

non-persistent CSMA: 當偵測到傳輸媒介 (Medium) 忙碌或 發生衝突時,則停止偵測傳輸媒介,等一段時間後再偵 測媒介。 
persistent CSMA: 當偵測到傳輸媒介忙碌或發生衝突時, 會持續偵測並等待;若發現傳輸媒介閒置時則立即傳送 資料。

CSMA/CA:

載波偵測多重存取/碰撞避免機制 (Carrier Sense Multiple Access with Collision Avoidance)。
此機制當要傳輸之前會先偵測傳輸媒介是否有其他節點 正在傳輸資料,若無其他節點在傳輸資料,則直接傳輸 資料;若有其他節點在傳輸資料,則延遲一段隨機時間 在重新偵測是否有其他節點在傳輸資料。
因為各裝置之間的等待時間是隨機產生的,會因此而產 生區別,從而降低碰撞的可能性。

無盡

你要搞清楚自己人生的劇本——不是你父母的續集,不是你子女的前傳,更不是你朋友的外篇。對待生命你不妨大膽冒險一點。如果這世界上真有奇蹟,那只是努力的另一個名字。生命中最難的階段不是沒有人懂你,而是你不懂你自己。