- 博客(87)
- 资源 (2)
- 收藏
- 关注
原创 同前綴的路由在Radix樹中的存儲方法
我們都知道路由表通常使用Radix樹來存儲,可是你又沒有想過如下路由怎麼處理呢:(這裡拿127.0.0.0作為前綴只是個例子,無實際意義)Destination/Mask Proto Pre Cost Flags NextHop Interface 127.0.0.0/8 Static 60 0 RD 10.0
2012-04-17 17:44:52
962
原创 C語言你沒搞清的東西——移位
今天我們討論一下移位的問題,這個操作是如此簡單,可又有多少人真正搞明白了呢?問題:printf("0x%X\n", (0x80 > 31);結果是多少?如果你不能很肯定的得出正確結論,並且加以解釋,建議你閱讀本文。答案:0xFFFFFFFF C語言你沒搞清的東西——移位【c_bg44】轉載請注明出處 C語言中,有左移和右移操作,分別是>。
2012-04-14 22:47:01
4417
原创 【數據結構】IP地址配置存儲探究
單純的IPv4地址是個32位的整數,正好用一個ULONG存放,子網掩碼也是如此,這沒問題。可是存在大小端的情況,很多時候我們還需要使用點分十進制的格式,子網掩碼還有進行長度轉換的需求,如255.255.0.0 -> 16,這樣一來就複雜了。不論如何,我們還是想使用較簡單的辦法,使用一個ULONG,在這裡我們寫作VOS_U32,於是乎我們似乎可以這樣:typedef VOS_U32 IPAD
2012-03-17 16:24:24
993
原创 Linux v.s. Windows
Linux這些年火的不行。。。它是一種免費的、開放的系統,什麽人都可以去“參合”兩下,這是個不錯的選擇,固然也是所有新技術的試驗床,這種精神值得稱道。然而是不是它就一定適合你呢?不然。我們看到,一個封閉、強大的Windows仍然是我們桌面的主宰。即便對於程序員,我相信所有用過Linux的人都用過、並且絕大多數還在同時使用Windows,反之則不然,這就足夠說明問題了。Linux的問題出
2012-03-05 23:56:11
899
Linux v.s. Windows
Linux這些年火的不行。。。它是一種免費的、開放的系統,什麽人都可以去“參合”兩下,這是個不錯的選擇,固然也是所有新技術的試驗床,這種精神值得稱道。然而是不是它就一定適合你呢?不然。我們看到,一個封閉、強大的Windows仍然是我們桌面的主宰。即便對於程序員,我相信所有用過Linux的人都用過、並且絕大多數還在同時使用Windows,反之則不然,這就足夠說明問題了。Linux的問題出在哪
2012-03-05 23:31:55
164
原创 以太网的組播地址映射方法
乙太網的 組播IP地址映射到MAC地址方法都被講爛了,我簡要的說明下,5步。1、MAC地址是48位的,IP地址是32位的,所以要把32位的IP地址映射到48位的MAC上原則上沒問題,MAC還多出 48 - 32 = 16位來;2、然而48位的MAC如果作為組播使用,其高24位固定為 0000 0001, 0000 0000, 0101 1110 == 01 - 00 - 5e,這是規定的。
2012-03-02 14:50:09
2002
原创 華為VRP MPLS RSVP-TE隧道配置實例
R0打一條隧道到R1,使能了組播。拓撲很簡單,一看配置就知道了。WVRP調試通過。R0# sysname Quidway# multicast routing-enable# mpls lsr-id 1.1.1.1 mpls mpls te mpls rsvp-te mpls te cspf#interface Ethernet0/0/0
2012-02-14 11:14:41
974
原创 Linux下的並發網路服務器模型
openSUSE 11.4 - 2.6.37.1-1.2@x64編譯通過 #include #include #include #include #include #include void str_ser(int sockfd);int main(void){ int sockfd = 0; int con_fd = 0;
2012-01-27 18:58:23
1458
原创 offer糾結的正解
經常看見有人在網上發帖,或是朋友議論,來了兩個offer,hw vs XX外企或國企。然後他們很糾結,無非就是華為錢多但是壓力大云云。作為一個過來人,我覺得這種糾結很可笑。我的建議是:這樣的人就不要去hw了。年輕人怕苦怕累,面對這樣的挑戰猶豫不決者,又何必跳入那“苦海”呢?去了也沒好下場,遲早出來,盆不滿缽不滿。不如找個輕鬆工作,老婆孩子熱炕頭,小富即安更現實。要不就靠爹靠娘,也能混
2011-11-11 12:46:02
928
2
原创 在VC中使用STL的紅黑樹
最近考慮做個路由表,眾所周知這東西都是用Radix樹或者AVL樹(紅黑樹)造的。俺們是做工程的人,不搞學術,不打算研究這東西。網上找了半天,終於有位兄弟告訴我們怎麼在VC的STL裡使用其自帶的紅黑樹(原文 http://woshao.com/article/7b4c844029c311dfa592000c295b2b8d/),good,來段例子。 #include "stdafx
2011-11-05 11:58:41
1022
原创 宏的另一種用法
這裡要說的不是用宏來防止頭文件重複包含。在結構中定義一個宏,以前在公司的軟件里,他們經常這樣用,還是比較巧妙的。 比如一個接口結構://邏輯接口typedef struct tag_stRM_IM_LogicIntf{ VOS_U32 u32IfnetIndex; VOS_U32 u32PhyIndex; //VOS_U32 u32Logic
2011-11-01 09:33:47
654
原创 一個printf函數引發的死機
今天同事解決了一個問題,頗有啓發,拿出來共賞之。大家都熟知printf函數,有%s、%d、%p、%u等等參數,當然你也可以直接printf("某某字符串"),或者:char str[] = "xxxxxx";printf(str);如果這樣寫,會編譯不過:pr
2011-09-16 16:12:39
1764
原创 段位、字節序在協議棧上的處理
如果你打算在小端字節序的機器上編寫協議棧,你就需要注意字節序的問題了。昨天在寫IP報頭處理的時候遇到了這個問題。x86是小端字節序,網絡是大端字節序。IP報頭前4位是版本號,後4位是報頭長度,那麼就是version = 0x4(IPv4),length = 0x5(報頭長
2011-08-31 00:33:38
553
原创 字節對齊在網路中需要注意的事項
以前在單片機上寫一個PPPoE的協議棧,發送的幀中總是多出一個字節,導致協商失敗。抓包發現該字節還是變化的。。。後看來走讀代碼、查看結構,忽然想起,該單片機是16位的,默認按量字節對齊,結構中出現了一個1字節的空洞,發包時把這個空洞也發出去了,後來改成按1字節對齊問題解決。這
2011-08-31 00:03:13
625
原创 【Windows下多線程實現(命令行)】
命令行程序也可以多線程。網上查了很多文章都是講視窗界面的,這裡我寫個命令行的,框架很簡單,如下: // VRP.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "windows.h"#include
2011-07-25 11:59:01
953
原创 Linksys(Cisco) VOIP設備語音接口一覽表
RT41P2 2fxs 4ethRT31p2 2fxs 3ethRTP300 2fxs 4+1ethPAP2T 2fxs 1eth 10MbpsPAP2T-NA 2fxs 1ethPAP2-NAPAP2 V2 2fxs本产品支持T38协议高速传真对于在国内需要传真的用户,真是太好了。在V2之前的产品,PAP2-NA,PAP2T都不支持T38协议 (PAP2-NA,PAP2T 只支持SIP协议的传真。在国内使用还是没有办法收发传真。) 支持
2011-05-21 23:24:00
1071
原创 【專題】路由器軟件的設計與實現(一)(未完待續)
<br />以前在公司做了多年的路由器。。。現在自己沒事兒,也寫一個玩,主要是複習一下。<br /> <br />一個建一個路由器,至少要能實現報文的三層轉發。按照控制、轉發平面分離的思想,模塊大致如下:<br /> <br /> <br />+--------------------------+<br />| |<br />| 路由協議 (RPAs) | +--------+<br />|
2011-05-03 01:05:00
563
原创 寫命令行程序的一點技巧
<br />最近在寫命令行程序,類似windows下的netsh。總結了點技巧。<br /> <br />想做一個不返回的命令行程序,等待用戶輸入,就得用死循環。<br />一般的處理方法如下:<br />while(1)<br />{<br /> ...<br /> cCh = _getch();<br /> _putch(cCh);<br /> ...<br />}<br />一次接受一個字符,自己處理。<br /> <br />每次都有提示符,類似windows的C:/>,就在
2011-04-26 13:27:00
647
原创 調用內聯函數之問題
<br />一個類的成員函數調用另一個類的公有成員函數應該沒問題,見如下代碼:<br /> //CMDTREE_RETCODE CCmdTree::Insert(const CString * const m_postrCMD, const VOS_VOID * const pfCmdProc){ ... //生成一个新節點 CCmdTreeNode * poCmdTreeNode = new CCmdTreeNode; ... poCmdTreeN
2011-04-24 22:42:00
872
转载 关于char, wchar_t, TCHAR, _T(),L,宏 _T、TEXT,_TEXT、L
关于char, wchar_t, TCHAR, _T(),L,宏 _T、TEXT,_TEXT、L以strcpy函数为例子,总结一下://如果你想使用ANSI字符串,那么请使用这一套写法:char szString[100]; strcpy(szString,"test"); //如果你想使用Unicode字符串,那么请使用这一套:wchar_t szString[100];wcscpy(szString,L"test");//如果你想通过定义_UNICODE宏,而编译ANSI或者Unicode字符串代码:
2011-04-23 12:35:00
460
原创 數據結構與算法複習
二叉樹 A / / B C / / /D E F先序遍歷(前序遍歷,先根便利)如果非空,先訪問根節點,再先序遍歷左子樹,最後先序遍歷右子樹,即NLR。A->B->D->C->E->F中序遍歷(中根便利)如果非空,先中序遍歷左子樹,再訪問根節點,最後中序遍歷右子樹,即LNR。D->B->A->E->C->F後序遍歷(後根便利)如果非空,先後序遍歷左子樹,再後序遍歷右子樹,最後訪問根節點,即LRN。D->B->E->F->C->AC代碼:typedef struct tag_stBiTre
2011-04-15 17:41:00
252
原创 VC如何使用STL
<br />以棧為例<br />在文件頭加上<br /> <br />#include<stack> <br />using namespace std;<br /> <br />然後在代碼裡這樣用:<br /> <br />stack<char> mystack; <br />然後就可以<br />mystack.push(5);<br />mystack.pop();<br />了,很爽。。。
2011-04-11 17:45:00
291
原创 占空比、電平觸發、邊沿觸發
來自百度 占空比的图例 占空比(Duty Cycle)在电信领域中有如下含义: 在一串理想的脉冲序列中(如方波),正脉冲的持续时间与脉冲总周期的比值。 例如:脉冲宽度1μs,信号周期4μs的脉冲序列占空比为0.25。 在一段连续工作时间内脉冲占用的时间与总时间的比值。 在CVSD调制(continuously variable slope delta mo
2009-06-06 01:22:00
1232
原创 漢字簡體轉正體類及測試程式
做了一個將簡體漢字轉化成正體漢字的類ChnTrans,轉化賴字典文件。其中用Open函式打開字典文件(有FILE *版本和CFile版本);用TransChar轉化一個漢字;用Trans轉化一個字符串。 ChnTrans.h文件內容:#pragma once #define UNICODE_FILE_FLAG 0xFEFF #define MAX_UNI
2008-09-18 22:11:00
477
原创 sizeof運算符需要注意的問題
sizeof運算符用于取得“東西”的大小,以字節為單位。比如sizeof(char)就返回1,表明char數據類型占一個字節。又如:char str[] = "12345";printf("%d ", sizeof(str));//等于6字符串str占六個字節,這樣做是可行的。如果strlen(str)一把,則等于5,因為strlen返回的是字符串的字符數,不包含結尾的/0。可是
2007-11-07 17:29:00
694
转载 什麽是射頻
(轉自http://www.afzhan.com/article/show/3240.html)射頻簡稱RF射頻就是射頻電流,它是一種高頻交流變化電磁波的簡稱。每秒變化小於1000次的交流電稱為低頻電流,大於10000次的稱為高頻電流,而射頻就是這樣一種高頻電流。有線電視系統就是採用射頻傳輸方式的。 在電子學理論中,電流流過導體,導體周圍會形成磁場;交變電流通過導體,導體周圍
2007-10-26 09:00:00
521
原创 專題:連連看-戊-核心算法(三)
經過前面兩篇的討論,理論的東西也差不多了,如果你还不明其中机理,可参看專題:連連看-戊-核心算法(一)及專題:連連看-戊-核心算法(二) 。本篇關注程序實現,基本上就直接放代碼了。先看看定義的頭文件把。LKK.h //連連看(遊戲本身)全域性的頭文件#ifndef __LLK_H__#define __LLK_H__#define __DEBUG__#include stdi
2007-10-25 17:01:00
561
原创 專題:連連看-戊-核心算法(二)
接前文(專題:連連看-戊-核心算法(一)),開始動手寫代碼后就會發現實際上上面一篇的偽碼還是有很多問題的,我們一步步的來。先來個圖。 看圖一中甲元素要消元的情況。甲的出路有兩條,向右或向下,也就是說如果甲是發起方它可以發起向右或向下的探路。再看乙丙,乙有三條出路,丙四個方向都可以走,不過要注意,以上說的都是對發起方來講的,想想,如果是接收方情況還如此嗎?不是。比如對丙
2007-10-25 15:55:00
700
原创 關于調試循環、遞歸的一點技巧
前幾天在網上看到一篇文章,一位老兄說他有一次調試程序,一個循環跟蹤到七十多趟(循環了七十多趟)才找到問題,累得他要死。今天我調試自己的遞歸同樣遇到了這樣的問題,大概在反復調用自己n多次時出現了問題,可VC 只能一步步的來,怎么辦?我想了幾個辦法,可以解決這個“調試難”的問題。(會用__DEBUG__宏的同志可以不看第一步)1、在你要調試的函數的文件的適當位置加入宏:#ifdef
2007-10-19 17:53:00
609
原创 專題:連連看-戊-核心算法(一)
隔了這麼久終於有時間來研究以前連連看的算法問題了,說來也慚愧。(前文請參看《專題:連連看-甲-乙-概述-建模》及《專題-連連看-丙-丁-算法(一)-矩陣梳理(一) 》) 我們來考慮連連看自動找牌自動找路的問題,先看看下圖。棋盤中卡片1與卡片2可以消元,相鄰的兩個同種元素可以消元。現在就有個問題:給定一個元素甲,我們先從哪個方向“探路”呢?這裡必須有個約定,比如從右方向起
2007-10-19 11:50:00
1067
原创 對絕對地址的操作
嵌入式系統中往往需要讓程序跳到內存的某個地址去執行,比如想讓程序跳轉到絕對地址是0x100000去執行,應該怎麼做?這樣:*((void (*)(void))0x100000)();即可。解釋一下,想讓程序跳到某個絕對地址去執行得用函數指針,這或許也是函數指針的一個妙用吧!語句void(*)(void)聲明了一個返回值是void、無參數的函數的函數指針,這個指針沒有名字
2007-10-15 15:20:00
1899
原创 堆棧上的緩衝區溢出一
溢出是個很有意思的話題,緩衝區溢出又是當中最常見的一種情況。如果把緩衝區放在堆棧上,造成溢出,那麽有可能情況就變得很妙,比如程序就執行了你的ShellCode,gogo!先來講將基本原理。堆棧大家都很熟悉了,這裡就不說了,我們來復習一下程序的函數/過程調用。函數/過程是通過堆棧完成的,之所以這麽說是因爲程序通過堆棧向被調用的函數傳遞參數,當然沒有參數就不傳,同時使用堆棧來保存現場,待被
2007-10-15 11:14:00
1125
原创 VC的MySQL編程
在你的程式中使用數據庫是個不錯的注意。如果已經有可用的MySQL服務器,在VC中可以按照如下方法實現與數據庫的駁接。1、找來MySQL(Win32)安裝目錄下的include文件夾, 將其添加到VC頭文件目錄列表中;(VC6 -> Options -> Directories -> 加入此目錄)(VC2005 -> 工具 -> 選項 -> 項目和解決方案 -> VC++目錄 -> 顯示
2007-10-11 14:23:00
1148
1
原创 OpenURL(Get Web)
// SS.cpp : 定義主控台應用程式的進入點。//#include "stdafx.h"#include stdio.h>#include WINSOCK2.H>#include Windows.h>#include "winsock.h" #include "wininet.h" #pragma comment(lib,"wsock32.lib")#pragma comm
2007-10-08 00:41:00
472
原创 ag.c
#include "ag.h"BOOL preprocess(char * inArray, char xx, char yy){ char x, y, m, n, i, j, k, forM = 0; char Array[4][5] = {{1, 2, 3, 0, 1}, {0},
2007-09-20 22:46:00
190
原创 μCOS-II實踐
這是一件很有意義的事情,實踐μCOS-II感覺還是很好的。手頭有塊周立功EasyARM2200(LPC2210)的開發板,今天研究了一下,把μCOS-II條通了,比較高興,拿出來說說。基本上都是按照書上做的。實驗是這樣的:板子上的JP1控制蜂鳴器電平,μCOS-II移植成功運行后每短接一下JP1,蜂鳴器就叫喚兩聲兒。先把JP1跳開,把JP6設置為BANK0-FLASH、BANK1-RA
2007-09-10 23:13:00
1130
4
原创 談談(int *)與(int &)
今天在網上看到了有關(int &)的討論,覺得很有意思,就此我們也來研究研究。&a、(int &)a、(int)&a、(int)(&a)、(int)(&)a以及*a、(int *)a、(int)*a、(int)(*a)、(int)(*)a、*(int *)a大家都知道*是指針運算符,一個地址前面加上*就是這個地址中的內容;&是地址運算符,一個變量前面加上&就是取這個變量在內存中的地址。這
2007-08-30 17:05:00
315
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人