Time of Update: 2018-12-03
一、概述 相信大家在聽到術語“事件處理”時就會想到GUI:點擊一下某個按鈕,相關聯的功能就會被執行。點擊本身就是事件,而功能就是相對應的事件處理器。 當然這一模式的使用當然不僅限於GUI。一般情況下,任意對象都可以調用基於特定事件的專門函數。本章所介紹的Boost.Signals庫提供了一個簡單的方法在 C++ 中應用這一模式。 嚴格來說,上次講到的Boost.Function庫也可以用於事件處理,不過,Boost.Function
Time of Update: 2018-12-03
1、定義一個變數i,使得迴圈while(i==i){}結束。 2、在不用迴圈和if語句的情況下,輸出1到1000的所有整數。 3、在下面代碼*號處加一段代碼,使程式顯示出"hello,world". #include "stdio.h"void print(){ *}void main(){}這三道題,咋的一看,貌似不難,都是簡單的C應用,但是經得起揣摩啊!!送上解題思路如下:1、可以讓i!=i嗎?
Time of Update: 2018-12-03
這段時間要弄下PCI Express的相關調試和驅動開發工作,老規矩,先在網上找找資料,這類的東西還蠻少的,已經買了本書,打算邊學邊自己總結吧,這篇文章是PowerPc下對PCI匯流排的配置方法。 powerpc使用稱為FDT 扁平裝置描述樹的機制傳遞給核心硬體設定參數,從而引導核心。 這樣的優勢是PowerPC在Linux上的移植基本上都是對dts檔案的修改,而升級核心的工作量遠遠小於其他cpu體繫結構。 只是目前介紹FDT或者OPEN
Time of Update: 2018-12-03
這次主要介紹的是函數對象,可能稱為“高階函數”更為適合。它實際上是指那些可以被傳入到其它函數或是從其它函數返回的一類函數,在C++中高階函數是被實現為函數對象的。本文將會介紹幾個用於處理函數對象的Boost C++庫。 其中,Boost.Bind可替換來自C++標準的著名的 std::bind1st() 和 std::bind2nd() 函數,而 Boost.Function則提供了一個用於封裝函數指標的類。 最後,Boost.Lambda則引入了一種建立匿名函數的方法。一、Boost.
Time of Update: 2018-12-03
在網路編程中對於一個網路控制代碼會遇到阻塞IO 和非阻塞IO 的概念, 這裡對於這兩種socket 先做一下說明:阻塞IO:socket 的阻塞模式意味著必須要做完IO 操作(包括錯誤)才會返回。 非阻塞IO:非阻塞模式下無論操作是否完成都會立刻返回,需要通過其他方式來判斷具體操作是否成功。(對於connect,accpet操作,通過select判斷,對於recv,recvfrom,send,sendto通過傳回值+錯誤碼來判斷)。 對於一個socket
Time of Update: 2018-12-03
經過一段時間的折騰,工作的事終於解決了,新工作一上來的第一件事就要熟悉RAID卡儲存機制,先簡單瞭解下RAID卡吧。 提到RAID卡就不得不提什麼是RAID,RAID是英文Redundant Array of Independent
Time of Update: 2018-12-03
最近被mmslite的移植弄得頭大,由於之前接觸的較少,把多線程的一塊用POSIX的pthread搞定就看了好多的資料才完成,又發現BSD中沒有擷取MAC地址的介面(類似ioctl(..,SIOGIFHWADDR,..)的),弄著弄著,發現這個CLNP挺不錯,像IP,這裡先轉個clnp的介紹,後面再補具體在BSD下實現的文章。CLNP (ConnectionLess Network Protocol) 無串連網路通訊協定,是一種 ISO
Time of Update: 2018-12-03
最近移植在弄網路通訊協定棧的移植,找了不少關於協議棧的資料,這個是一些專業詞彙的總結,特此記錄,以備查閱。1.幾種資料交換方式、特點 線路交換:概念來源電話系統,硬體開關接通輸入輸出訊號。延遲小,獨享物理線路。需要建立線路,資料傳送,釋放線路三個步驟完成。 報文交換:不需建立連接線路,一種儲存轉寄技術,但對傳輸資料區塊不加以限制 封包交換:嚴格限制資料區塊大小上限,吞吐率高,但存在擁塞、報文分區與重組、分組損失與失序 2.封包交換的傳送方式有虛電路(連線導向)和資料報(無串連)兩種
Time of Update: 2018-12-03
對PowerPC的交叉編譯工具的介紹確實不像ARM那麼多,之前用ELDK費了好大的力氣,但是它太大了,使用不方便。所以轉載下這篇文章,使用的東西較小,留著以後學習。 如果有需要轉載,請在使用的地方,隨手附上我的空間地址,謝謝。http://blog.csdn.net/pro_or_gram/article/details/6642079 基於Newlib庫的PowerPC交叉編譯器的製作第一階段:準備工作
Time of Update: 2018-12-03
3、初始化CPU相關 下面為初始化CPU的代碼,實現的功能依次為屏蔽watchdog、初始化中斷控制寄存器、清空Cache、關閉MMU等。.globlinit_e300_coreinit_e300_core: /* time t 10 *//* Initialize machine status; enable machine check interrupt */lir3, MSR_KERNEL/*設定MSR,允許資料\指令複製以及Machine check*/rlwimir3, r5,
Time of Update: 2018-12-03
合成器是一個重載了 operator()() 操作符的類。這個操作符會被自動調用,傳入兩個迭代器,指向某個特定訊號的所有傳回值。以上例子使用了標準 C++ 演算法 std::min_element() 來確定並返回最小的值。 不幸的是,我們不可能把象 std::min_element() 這樣的一個演算法直接傳給 boost::signal 作為一個模板參數。 boost::signal 要求這個合成器定義一個名為 result_type 的類型,用於說明 operator()()
Time of Update: 2018-12-03
雖然boost::mutex 提供了lock和try_lock兩個方法,但是 boost::timed_mutex 只支援 timed_lock,這就是上面樣本那麼使用的原因。如果不用timed_lock的話,也可以像以前的例子那樣用 boost::mutex。 就像 boost::lock_guard 一樣, boost::unique_lock 的解構函式也會相應地釋放互斥量。此外,可以手動地用 unlock() 釋放互斥量。也可以像上面的例子那樣,通過調用 release()
Time of Update: 2018-12-03
四、Boost.Lambda 匿名函數 - 又稱為lambda函數 - 已經在多種程式設計語言中存在,但 C++ 除外。 不過在Boost.Lambda庫的協助下,現在在 C++ 應用中也可以使用它們了。 匿名函式的目標是令原始碼更為緊湊,從而也更容易理解。 以本章第一節中的代碼例子為例。#include <iostream> #include <vector> #include <algorithm> void print(int i) {
Time of Update: 2018-12-03
最近在弄PowerPC平台上的spi flash的驅動程式,總體比較簡單,在借鑒了U-Boot中的相關源碼後,花了兩周左右的時間搞定了,對於spi匯流排之前一直都有瞭解,但未能實際接觸,這次在vxWorks上嘗試了一下,確實有不小的收穫。由於網上關於vxWorks平台的資料稀少,就寫下此文,以備查閱。
Time of Update: 2018-12-03
一、概述 最近工作又開始忙了,額外學習boost的機會也變少了很多,再加上在使用Boost時出現了很多編譯錯誤的問題,讓寫文章的過程變得不可預測了。但我還是很期待這一部分,這是在平時應用中最常見的,也是boost的看家本領了,將會著重介紹。在標準 C++ 中,用於處理字串的是std::string 類,它提供很多字串操作,包括尋找指定字元或子串的函數。儘管std::string囊括了百餘函數,是標準C++中最為臃腫的類之一,但卻仍不能滿足很多開發人員在日常工作中的需要。例如,
Time of Update: 2018-12-03
最近似乎某些裝B指南比較火,剛好周五的晚上閑著沒事,於是我也隨便寫一個《程式員裝B指南》,話說裝B是一種能延年益壽的好習慣,大家隨便看看,開心就好……一、準備工作“工欲善其事必先利其器。”1.電腦不一定要配置高,但是雙屏是必須的,越大越好,能一個橫屏一個豎屏更好。一個用來查資料,一個用來寫代碼。總之要顯得資訊量很大,效率很高。2.椅子不一定要舒服,但是一定要可以半躺著。3.大量的便簽,各種的顏色的,用來記錄每天要完成的事務,多多益善。沿著電腦螢幕的邊框,盡量貼滿,顯出有很多事情的樣子。4.工具
Time of Update: 2018-12-03
之前用過兩個版本u-boot,分析過它的Start.S檔案(PowerPC、ARM)原始碼,也移植過內部的各部分硬體驅動及組件(串口、I2C、SPI、Flash檔案系統、USB、DMA等)源碼,自我感覺比較熟悉了。但最近逛CSDN論壇發現有不少人在問U-Boot中的Makefile的一些參數含義及配置方法,這才覺得忽視了U-Boot源碼中最重要的召集人。正好,又在ChinaUnix上看見了一篇http://blog.chinaunix.net/u3/90973/showart_18159
Time of Update: 2018-12-03
四、Regex庫 Boost.Regex Boost C++的Regex庫Boost.Regex可以應用Regex於C++。Regex大大減輕了搜尋特定模式字串的負擔,在很多語言中都是強大的功能。雖然現在C++仍然需要以 Boost C++庫的形式提供這一功能,但是在將來Regex將進入C++標準庫。 Boost Regex庫有望包括在下一版的 C++ 標準中。 Boost.Regex庫中兩個最重要的類是boost::regex和boost::smatch,它們都在
Time of Update: 2018-12-03
在搜尋方塊上輸入:“"index of /"cnki” 再按搜尋你就可以找到許多圖書館的CNKI、VIP、超星等入口! 在搜尋方塊上輸入:“"index of /" ppt” 再按搜尋你就可以突破網站入口下載powerpint作品! 在搜尋方塊上輸入:“"index of /"mp3” 再按搜尋你就可以突破網站入口下載mp3、rm等影視作品! 在搜尋方塊上輸入:“"index of /"swf ” 再按搜尋你就可以突破網站入口下載flash作品!
Time of Update: 2018-12-03
一、概述 線程是在同一程式同一時間內允許執行不同函數的離散處理隊列,這使得在一個長時間進行某種特殊運算的函數在執行時不阻礙其他的函數時變得十分重要。線程實際上允許同時執行兩種函數,而這兩者不必相互等待。 一旦一個應用程式啟動,它僅包含一個預設線程。此線程執行main()函數。在main()中被調用的函數則按這個線程的上下文順序地執行,這樣的程式稱為單線程程式。