當前位置:首頁 » 操作系統 » 源碼範例

源碼範例

發布時間: 2024-07-09 14:49:10

A. 求Linux下命令的源代碼,

1.ash
(1)簡介
ash --a shell
這是由Kenneth Almquist在1989年編寫的,ash是Linux下的許多命令解釋器中的一個,它的許多特性接近於SYSTEM V的shell。
(2)部分參數說明
ash [ -efIijnsxz ] [ +efIijnsxz ] [ -c命令] [ 參數 ]
-c 命令:若用-c參數,則ash從標准輸入中讀入命令(在執行完-c帶的命令之後)。
-s:若用-s參數,則ash從標准輸入中讀入命令(在執行完-c帶的命令之後)。
如果不跟-c -s參數則ash以所跟的第一個參數為文件名,從此文件中讀入命令。如無參數則ash預設設定-s參數,從標准輸入中讀入命令,直到輸入exit。
如果參數0的第一個字母是"-"則ash確定為login shell,ash將從/etc/profile或用戶的根目錄中的.profile讀入相應的設置和環境變數。
-e:若用-e參數,則ash執行命令後返回值為非零值時則退出ash。
-f:若用-f參數,則ash關閉自動產生文件名功能。
-j:打開伯克利UNIX風格的工作控制。
-n:讀入命令但是並不執行。
(3)範例
ash -c ls
ash執行ls這個命令後退回原先的目錄和shell。
ash -s
ash執行一個新的shell,現在可以在這個shell中工作,按(Ctrl-D)或輸入exit後,則退回原先的目錄和shell,所設定的環境變數返回原先的值。
2.at
(1)簡介
at,batch,atq,atrm:安排、檢查、刪除隊列中的工作。
由Thomas Koenig編寫。
(2)部分參數說明
at [-V] [-q隊列] [-f文件名] [-mldbv] 時間
at -c 作業 [作業…]
atq [-V] [-q隊列] [-v]
atrm [-V] 作業 [作業…]
batch [-V] [-q隊列] [-f文件名] [-mv] [時間]
at在設定的時間執行作業。
atq列出用戶排在隊列中的作業,如果是超級用戶,則列出隊列中的所有工作。
atrm刪除隊列中的作業。
batch用低優先順序運行作業,只要系統的loadavg(系統平均負載)<1.5(或者在atrun中設定的值)它就開始執行作業。
-V:若用-V參數,則顯示版本號到標准錯誤輸出。
-q隊列:若用-q參數,則指定可選隊列名稱,隊列名稱可以是a到z或A到Z之間的任意字母。at的預設隊列名是c,batch的預設隊列名是E,隊列的字母順序越高,則隊列的優先順序越低。如果是大寫字母的話則提交給batch,如果atq使用-q參數,則只顯示這個隊列中的作業。
-m:執行完作業後即使此作業並沒有輸也給提交作業的用戶發送提示mail。
-f文件名:從文件中讀取作業。
-l:等於atq。
-d:等於atrm。
-b:等於batch。
時間:這是用戶設定的作業開始執行的時間。時間的格式分成三個部分:時間、日期、偏移量。可接受的時間形式是HHMM或HH:MM,在一天中指定的時間運行,如果時間過去了就在第二天執行。可以在時間後加入AM或PM使其在上午或下午運行,也可以指定在哪一天執行,給出日期的格式應為MMDDYY或MM/DD/YY或MM.DD.YY,也可以給出偏移量:
時間+計數時間間隔
時間間隔可以是minutes,hours,days,weeks。
也可以指定today讓作業在今天執行,指定tommorow讓作業在明天執行。
(3)注意事項
如果沒有指定-f選項,是at從標准輸入讀入所有的命令,所以可以通過管道、重定向或交互輸入來輸入命令。
超級用戶可以在任何情況下使用at系列的命令。一般用戶使用at系列命令的權利由文件/etc/at.allow,/etc/at.deny控制。如果/etc/at.allow存在,則只有列在這個文件中的用戶才能使用at系列的命令。如果/etc/at.allow文件不存在,則檢查/etc/at.deny這個文件。只要不列在這個文件中的用戶都可以使用at系列的命令。預設的配置是/etc/at.deny,是一個空文件,這表明所有的用戶都可以使用at系列的命令。
(4)範例
at -f work 4pm + 3 days
在三天後下午4點執行文件work中的作業。
at -f work 10am Jul 31
在七月31日上午10點執行文件work中的作業。
3.banner
banner:列印大標題。
banner在標准輸出上列印高質量的標題,如果沒有輸入要列印的文字,則其等待從標准輸入輸入一行文字。其標題由"*"組成。由Mark Horton編寫。
(2)部分參數說明
/usr/bin/banner [ -wn ]信息
-w寬度 輸出寬度從131到n,n預設為80列。
(3)注意事項
不能列印字元:< ,>,[,],\,^,_,{,},|,-。信息長度為10個英文字元,如果用空格分開字元串,還是連續列印字元串,兩個字元串可以被括在引號(")中。這命名banner把這些字任串置於同一行中。
4.bash
(1)簡介
bash:GNU Bourne-Again Shell
自由軟體基金會(Free Software Foundation Inc)擁有bash版權。
bash是Linux下的許多命令解釋器中的一個,同sh兼容,並且包含了ksh和csh中一些有用的特性。遵從IEEE Posix Shell and Tools specification(IEEE Working Group 1003.2)。

B. 鍗佷釜緇忓吀鐨凜寮婧愰」鐩浠g爜

鎺㈢儲C璇璦鐨勭紪紼嬪疂搴擄細鍗佸ぇ緇忓吀寮婧愰」鐩浠g爜鎺ㄨ崘


鍦ㄥ紑婧愮殑涓栫晫閲岋紝C璇璦鐨勯瓍鍔涗笉璦鑰屽柣銆備綔涓哄簳灞傜紪紼嬭璦錛孋鐨勭伒媧繪у拰鏁堢巼涓哄紑鍙戣呬滑鎻愪緵浜嗘棤絀風殑鍙鑳姐備互涓嬫槸鍗佷釜綺懼績鎸戦夌殑錛屾棦杞婚噺綰у張緇忓吀鐨凜寮婧愰」鐩錛屽畠浠涓嶄粎鏄鎶鏈瀛︿範鐨勭懓瀹濓紝鏇存槸紼嬪簭鍛樻垚闀跨殑鍨鑴氱煶銆



  1. Webbench - 綆鍗曢珮鏁堢殑緗戠珯鍘嬪姏嫻嬭瘯宸ュ叿

    Webbench鏄涓嬈劇敤C璇璦緙栧啓鐨凩inux涓嬭交閲忕駭宸ュ叿錛屽畠浠ヤ笉鍒600琛岀殑浠g爜妯℃嫙澶ч噺騫跺彂榪炴帴錛屽府鍔╀綘嫻嬭瘯緗戠珯鐨勮礋杞借兘鍔涖傚叾婧愮爜綆媧佹槑浜嗭紝鏄鐞嗚В緗戠粶鍘嬪姏嫻嬭瘯鍩虹鐨勫ソ渚嬪瓙銆傛兂娣卞叆浜嗚В錛熻塊棶錛http://home.tiscali.cz/~cz210552/webbench.html



  2. Tinyhttpd - 鏋佺畝HTTP鏈嶅姟鍣

    浠502琛屼唬鐮侊紙鍚娉ㄩ噴錛夌殑Tinyhttpd錛屾槸鍏ラ棬HTTP鏈嶅姟鍣ㄧ紪紼嬬殑緇濅匠鏁欐潗銆傚畠璁╀綘涓紿ユ湇鍔″櫒鏍稿績錛屼唬鐮侀噺鉶藉皯錛屼絾鍔熻兘瀹炵敤銆備笅杞藉湴鍧錛http://sourceforge.net/projects/tinyhttpd/



  3. cJSON - JSON緙栬В鐮佸櫒鐨勮交閲忕駭閫夋嫨
    cJSON鏄疌璇璦涓鐨勮交閲忕駭JSON搴擄紝500澶氳屼唬鐮佹棦楂樻晥鍙堟槗鎳傘傝櫧鐒跺姛鑳芥湁闄愶紝浣嗗叾灝忓閥鍜岄熷害浣垮叾鎴愪負瀛︿範C欏圭洰鐨勭悊鎯寵寖渚嬨傞」鐩涓婚〉錛http://sourceforge.net/projects/cjson/

  4. CMockery - 鍗曞厓嫻嬭瘯杞婚獞鍏
    Google鍑哄搧鐨凜Mockery錛屼竴涓杞婚噺綰х殑C鍗曞厓嫻嬭瘯妗嗘灦錛3K琛屼唬鐮佸唴錛屼綘灝嗛嗕細鍒版祴璇曢┍鍔ㄥ紑鍙戠殑欖呭姏銆傚畠鐨勬槗鐢ㄦу拰鍏煎規т嬌鍏舵垚涓哄祵鍏ュ紡寮鍙戣呯殑鐞嗘兂閫夋嫨銆傛洿澶氳︽儏錛http://code.google.com/p/cmockery/downloads/list


緇х畫娣卞叆錛屼綘灝嗗彂鐜幫細



  1. Libev - 浜嬩歡椹卞姩緙栫▼鐨勯珮鏁堜箣閫
    Libev鏄涓涓鍩轟簬epoll鍜宬queue鐨勯珮鏁堜簨浠跺簱錛4.15鐗堟湰鍙鏈8000澶氳屼唬鐮侊紝鏄瀛︿範浜嬩歡椹卞姩緙栫▼鐨勭粷浣寵祫婧愩備簡瑙f洿澶氾細http://software.schmorp.de/pkg/libev.html

  2. Memcached - 緙撳瓨緋葷粺涓鐨勬ц兘鏄庢槦
    Memcached鏄涓涓鍒嗗竷寮忓唴瀛樼紦瀛樼郴緇燂紝鐢ㄤ簬鍑忚交鏁版嵁搴撳帇鍔涖1.4.7鐗堟湰浠g爜閲忛備腑錛屽ぇ綰10K琛岋紝蹇閫熸彁鍗囦綘鐨勬暟鎹搴撴ц兘鐞嗚В銆備笅杞藉湴鍧錛http://memcached.org/

  3. Lua - 璇璦綺劇畝鐨勭紪紼嬪吀鑼
    Lua浠g爜杞婚噺鍒頒護浜烘儕鍙癸紝1.5W琛岋紙鍘婚櫎絀虹櫧鍜屾敞閲婏級鐨100% ANSI C浠g爜錛岃╀綘棰嗙暐鏋佺畝璁捐$殑欖呭姏銆備簡瑙f洿澶氾細http://www.lua.org/


鏈鍚庯紝鎴戜滑鏈夛細



  1. sqlite - 綆鍗曢珮鏁堢殑宓屽叆寮忔暟鎹搴
    SQLite錛屼竴涓灝忓瀷鐨勩佽嚜鍖呭惈鐨勩侀浂閰嶇疆鐨凷QL鏁版嵁搴擄紝3涓囪孋浠g爜瀹炵幇寮哄ぇ鍔熻兘銆傚傛灉浣犺拷奼傝交閲忎笌楂樻晥錛屽畠涓嶅歸敊榪囥備笅杞藉湴鍧錛http://www.sqlite.org/

  2. UNIX V6 - 綆鍗曡屽己澶х殑鎿嶄綔緋葷粺鍐呮牳
    UNIX V6鍐呮牳婧愪唬鐮侊紝綰1涓囪屼唬鐮侊紝閫傚悎鍒濆﹁呯悊瑙e拰瀛︿範銆傚畠鉶界畝媧侊紝鍗磋兘璁╀綘浣撻獙鍒版搷浣滅郴緇熷紑鍙戠殑綺鵑珦銆備簡瑙f洿澶氾細http://minnie.tuhs.org/cgi-bin/utree.pl?file=V6

  3. NetBSD - 寮哄ぇ涓旂Щ妞嶇殑UNIX-like緋葷粺
    NetBSD浠ョ畝媧佸拰鍏堣繘鐗規ц岄椈鍚嶏紝瀹冨湪浼楀氬鉤鍙頒笂琛ㄧ幇鍑鴻壊錛屾簮浠g爜瀹屾暣涓旀槗浜庤幏鍙栥傚逛簬鎿嶄綔緋葷粺鐮旂┒鍜屽疄璺碉紝瀹冩槸涓涓鐞嗘兂鐨勯夋嫨銆傝塊棶錛http://www.netbsd.org/


榪欏嶮涓欏圭洰錛屾棤璁轟綘鏄疌璇璦鐨勬柊鎵嬭繕鏄璧勬繁寮鍙戣咃紝閮借兘浠庝腑鑾風泭鍖嫻咃紝璁〤璇璦鐨勭紪紼嬩箣鏃呮洿鍔犱赴瀵屾湁瓚c

C. SOFARPC源碼解析-服務調用

簡介摘要
SOFARPC服務調用創建服務引用配置ConsumerConfig,自定義設置介面名稱、調用協議、直連調用地址以及連接超時時間等基礎配置;通過服務消費者啟動類ConsumerBootstrap引用服務,客戶端集群Cluster調跡沒用消費端調用器ConsumerInvoker實現Client發送數據給Server調用過程。
SOFARPC以基於Netty實現的網路通信框架SOFABolt用作遠程通信框架,使用者不用關心如何實現私有協議的細節,直接使用內置RPC通信協議,啟動客戶端與服務端同時注冊用戶請求處理器即可完成遠程調用:
1.調用方式
SOFARPC服務調用提供同步Sync、非同步Future、回調Callback以及單向Oneway四種調用類型:

使用Future非同步調用SOFABoot配置服務引用需要設置sofa:global-attrs元素的type屬性聲明調用方式為future:

如上設置為非同步調用的方式。客戶端獲取響應結果有兩種方式:
(1)通過 SofaResponseFuture直接獲取結果。第一個參數是獲取結果的超時時間,第二個參數表示是否清除線程上下文中的結果。

(2)獲取原生Futrue,該種方姿基納式獲取JDK原生的Future,參數表示是否清除線程上下文中的結果。因為響應結果放在JDK原生的Future,需要通過JDK Future的get()方法獲取響應結果。

當前線程發起調用得到RpcResponseFuture對象,當前線程可以繼續執行下一次調用。在任意時刻使用RpcResponseFuture對象的get()方法來獲取結果,如果響應已經回來此時就馬上得到結果;如果響應沒有回來則阻塞鋒粗住當前線程直到響應回來或者超時時間到。
(3)Callback回調調用
客戶端提前設置回調實現類,在發起調用後不會等待結果,是真正的非同步調用,永遠不會阻塞線程,結果處理是在非同步線程里執行。SOFA-RPC在獲取到服務端的介面後會自動執行該回調實現,目前支持 bolt 協議。客戶端回調類需要實現com.alipay.sofa.rpc.core.invoke.SofaResponseCallback介面:

如上設置是服務級別的設置,也可以進行調用級別的設置:

使用Callback回調調用SOFABoot配置服務引用需要設置sofa:global-attrs元素的type屬性聲明調用方式為callback,通過callback-ref屬性聲明回調的實現類,使用該服務引用發起調用時結果返回時由SOFARPC自動執行該回調類:

當前線程發起調用則本次調用馬上結束執行下一次調用。發起調用時需要注冊回調,該回調需要分配非同步線程池以待響應回來後在回調的非同步線程池來執行回調邏輯。
(4)Oneway單向調用
客戶端發送請求後不會等待服務端返回的結果,並且會忽略服務端的處理結果,目前支持bolt協議:

使用Oneway單向調用SOFABoot配置服務引用需要設置sofa:global-attrs元素的type屬性聲明調用方式為oneway:

當前線程發起調用後,不關心調用結果不做超時控制,只要請求已經發出就完成本次調用。單向調用不關心響應結果,請求線程不會被阻塞,使用Oneway調用需要注意控制調用節奏防止壓垮接收方。注意Oneway調用不保證成功,而且發起方無法知道調用結果。因此通常用於可以重試,或者定時通知類的場景,調用過程是有可能因為網路問題、機器故障等原因導致請求失敗,業務場景需要能接受這樣的異常場景才能夠使用。
2.直連調用
SOFARPC支持指定地址進行調用的場景,設置直連地址即可:

3.泛化調用
SOFARPC泛化調用方式能夠在客戶端不需要依賴服務端的介面情況下發起調用,目前支持bolt協議。由於不知道服務端的介面,因此需要通過字元串的方式將服務端的介面,調用的方法,參數及結果類進行描述:

如上通過setGeneric設置該服務為泛化服務,設置服務方的介面名。以GenericService作為泛化服務,通過GenericService能夠發起泛化調用。發起調用時需要傳入方法名、方法類型、方法參數。如果參數或者返回結果在客戶端也需要泛化表示則通過GenericObject來實現獲取序列化結果等:

(1)介面描述:所有泛化調用都需要在服務引用的時候聲明interface為com.alipay.sofa.rpc.api.GenericService,這是SOFARPC提供的類。真正的服務介面通過sofa:global-attrs元素的generic-interface屬性聲明完成介面的描述。

(2)參數描述:由於客戶端沒有調用服務的參數類,因此通過GenericObject進行描述,GenericObject持有Map<String, Object>類型的變數,能夠通過GenericObject提供的對該變數的操作方法將參數類的屬性放到Map以此來描述參數類。

(3)發起泛化調用:介面描述通過XML配置聲明泛化引用的bean,通過該泛化引用能夠發起服務調用,發起泛化調用的第一個參數就是方法名,第二個參數就是參數類的全類名,第三個參數就是描述參數類的 GenericObject。

(4)獲取泛化結果:發起泛化調用如果客戶端同樣沒有泛化結果的類,那麼同樣以GenericObject對調用結果進行描述,通過GenericObject的getField方法能夠獲取結果類的屬性值,通過GenericObject的getType方法能夠獲取結果類的全類名。

(5)泛化調用示例:SOFARPC泛化調用完整的泛化調用方式:

源碼解析
1.調用方式
參考sofa-rpc-boot-projects範例模塊( com.alipay.sofa.rpc.samples.invoke ):

運行調用方式服務端範例類InvokeServerApplication查看調用方式服務端輸出日誌:

D. php的openssl_sign($data,$sign,$private_key)這個函數的源碼是什麼

這個是打開https的訪問所用的到的函數

E. 跪求一個:c語言密碼驗證程序的源代碼

#include<stdio.h>
#include<conio.h>
#include<string.h>
char password[10]="hunter";
typedef struct
{
char data[6];
int top;
}stacktype;
void initstack(stacktype *s)
{
s->top=-1;
}
void push(stacktype *s,char x)
{
if(s->top==6)
printf( "stack is full");
else
{
s->top++;
s->data[s->top]=x;
}
}
int pop(stacktype *s)
{
if(s->top==-1) return(0);
else s->top--;return(1);
}
char stacktop(stacktype *s)
{
char x;
if(s->top==-10) return(0);
else x=s->data[s->top];return(x);
}
void programme(stacktype *s)
{
char a;
char b[5];
int i,j,c;
printf( "請輸入一個六位數的密碼,你只有三次機賀晌會:\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=5;j++)
{
c=j;
a=getch();
if((int)a!=8)
{
printf( "*");
push(s,a);
}
else
{
printf("\b \b");
j=c-2;
pop(s);
}
}
for(j=5;j>=0;j--)
{
pop(s);
b[j]=stacktop(s);
}
b[6]='\0';
printf( "\n");
if(strcmp(password,b)==0)
{
printf( "密碼正確\n");
break;
}
else
{
printf("密碼錯誤,請再試一次!\n");
continue;
}
}
if(i==3)
printf("禪滲鋒密碼錯誤,即刻退出\喊型n");
}
void main()
{
stacktype s;
initstack(&s);
programme(&s);
}
這是個範例,你自己研究研究

熱點內容
密碼萬能鑰匙的密碼怎麼看密碼 發布:2024-11-26 03:46:12 瀏覽:998
wds橋接後副路由器如何改無線密碼 發布:2024-11-26 03:41:54 瀏覽:474
編程要求電腦什麼配置高 發布:2024-11-26 03:41:09 瀏覽:467
抗解壓模擬器軟體下載 發布:2024-11-26 03:27:33 瀏覽:933
python獲取文件列表 發布:2024-11-26 03:18:28 瀏覽:222
減刑演算法 發布:2024-11-26 03:18:27 瀏覽:182
微信登錄忘記密碼怎麼辦啊 發布:2024-11-26 03:15:31 瀏覽:108
編碼與加密 發布:2024-11-26 03:07:45 瀏覽:873
蘋果7照片怎麼加密碼 發布:2024-11-26 02:44:57 瀏覽:932
葯網源碼 發布:2024-11-26 02:39:28 瀏覽:876