Time of Update: 2018-12-04
結合前面的例子,來寫一個條件運算式。如果第一個參數沒有,則輸出no parameter,否則輸出第一個參數。#!/bin/bashif [ -n "$1" ]then echo "1st parameter: $1"else echo "no parameter"fi輸入帶參數命令:$ ./test.sh 'this is a test'1st parameter: this is a test輸入無參數命令:$ ./test.shno parameter先解釋一下條件陳述式:if
Time of Update: 2018-12-04
`符號包含的命令執行完後,可以講其輸出結果儲存到變數中#!/bin/bash v=`java -version`echo $v執行結果:$ ./install.shjava version "1.6.0_34"Java(TM) SE Runtime Environment (build 1.6.0_34-b04)Java HotSpot(TM) 64-Bit Server VM (build 20.9-b04, mixed
Time of Update: 2018-12-04
先看一下shared_ptr的正確用法:class A {public: A() { cout << "A::A()" << endl; } ~A() { cout << "A::~A()" << endl; } shared_ptr<B> b;};class B {public: B() { cout << "B::B()"
Time of Update: 2018-12-04
這個類很有意思,讓一個被shared_ptr管理生命週期的類能夠在自己的成員函數內部訪問shared_ptr。有點繞。舉個例子,下面的代碼在函數f內部通過this構造了shared_ptr對象,然後列印x_的值。class B {public: B(): x_(4) { cout << "B::B()" << endl; } ~B() { cout << "B::~B()" << endl;
Time of Update: 2018-12-04
CppCMS是以色列人Artyom寫的一個用於開發Web application和web service的C++開源庫。據說效能很高,我正在試用。這裡記錄下UBuntu 11.04如何編譯和安裝。確保依賴庫已經安裝:sudo apt-get install build-essential libpcre3-dev libicu-dev libgcrypt11-dev zlib1g-dev
Time of Update: 2018-12-04
為什麼需要NginxCppCMS自己已經支援Http訪問,為什麼還需要Nginx.一些原因是我們需要動態Server Load Balancer,還有原因是安全問題。下面的文字來自於CppCMS網站。CppCMS provides basic implementation of HTTP protocol and thus it can run behind reverse HTTP Proxy. But this option is not recommended for use in
Time of Update: 2018-12-04
當輸入java -version的時候,如果安裝了jdk,會輸出類似下面的資訊:$ java -versionjava version "1.6.0_34"Java(TM) SE Runtime Environment (build 1.6.0_34-b04)Java HotSpot(TM) 64-Bit Server VM (build 20.9-b04, mixed mode)可以用expr match對輸出結果進行尋找,如果找到子字串"java version",就認為Java可用。#!/
Time of Update: 2018-12-04
將前面的檢查java代碼封裝為函數,然後再調用之,指令碼修改如下:#!/bin/bash #check java is available in this sessionfunction hasJava { v=`java -version 2>&1` echo 'check java platform...' pos=`expr match "$v" 'java'` if [ $pos -gt 0 ] thenreturn 1
Time of Update: 2018-12-04
現在將檢查java的函數放在另一個檔案check.sh中#!/bin/bash #check java is available in this sessionfunction hasJava { v=`java -version 2>&1` echo 'check java platform...' pos=`expr match "$v" 'java'` if [ $pos -gt 0 ] thenreturn 1 elsereturn 0
Time of Update: 2018-12-04
為了在一台伺服器上虛擬出多個Ubuntu server,用於叢集。考慮了幾個方案,Vmware因為價格被排除,VirtualBox不錯,不過KVM由於是Linux核心層的,效能更好。優先考慮使用。首先在一台實驗機器上安裝Ubuntu 12.04 amd64 server。升級系統補丁以及核心。hostname是kvmhost. IP是10.112.18.177. 主板上已經開啟了虛擬化功能。好。現在開始安裝kvm。sudo -s
Time of Update: 2018-12-04
將函數指標封裝成function object在前面介紹了function object是STL演算法的主要使用方式。如果能將現有的函數指標,函數,成員函數等等都封裝成function object,就可以獲得STL演算法的支援,而且可以減少專門編寫function object的工作量。基本思路仍然是構造一個function object,內部能夠轉調函數指標。bool foo(int x){ return x>=2;}typedef bool
Time of Update: 2018-12-04
巧妙的檢測預留位置boost提供了從_1到_9的預留位置,它們是9個變數。這些變數本質上都是一個模板類的執行個體化對象,特殊之處在於這個模板類arg<> 只接收1-9 的整數作為模板參數。下面詳細介紹如何檢測模板參數,並且當模板參數不符合要求時如何做到編譯報錯。具體定義如下:boost::arg<1> _1;boost::arg<2> _2;boost::arg<3> _3;boost::arg<4> _4;boost::arg<
Time of Update: 2018-12-04
接上一篇文章:http://blog.csdn.net/sheismylife/article/details/8010040上一篇我的文章完成後,會有一些奇怪的現象:1.其他機器ssh登入上host後,過一會兒就不能串連了,然後ssh無法登入,直到重新啟動host機器的網路服務。(經查明,公司網路中和另一台機器IP衝突)2.host機器無法連外網3.路由表中缺少這一行:ip route listdefault via 10.112.18.254 dev
Time of Update: 2018-12-04
支援傳回型別目前的function_object_ref版本只能支援void傳回型別。我希望能夠讓它支援多種傳回型別,最簡單的方法是添加一個模板參數。請看下面的代碼:template<typename function_object_type,typename element_type,typename return_type>class function_object_ref{public: explicit
Time of Update: 2018-12-04
template<class F> struct unwrapper{ static inline F & unwrap( F & f, long ) { return f; } template<class F2> static inline F2 & unwrap( reference_wrapper<F2> rf, int ) { return rf.get(); }
Time of Update: 2018-12-04
文章目錄 2.1 首先編譯源檔案產生對象(obj)檔案(main.o, hello_fn.o):2.2 然後從對象檔案編譯動態庫檔案(libhello.so)和靜態庫(libhello.a)3.1 如果不連結庫的情況下編譯一個主程式是:3.2 連結到動態庫libhello.so3.3 連結到靜態庫libhello.a Linux C 編程入門之一:gcc 編譯動態庫和靜態庫cheungmine20121
Time of Update: 2018-12-04
首先看一下bind.hpp中的list0模板定義:class list0{public: list0() {} template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); } template<class T> T const & operator[] (_bi::value<T> const & v)
Time of Update: 2018-12-04
boost提供了一個安全的用於delete模板函數,在檔案checked_delete.hpp中:template<class T> inline void checked_delete(T * x){ // intentionally complex - simplification causes regressions typedef char type_must_be_complete[ sizeof(T)? 1: -1 ]; (void)
Time of Update: 2018-12-04
來看看boost::detail::addr_impl_ref模板,在addressof.hpp檔案中:template<class T> struct addr_impl_ref{ T & v_; inline addr_impl_ref( T & v ): v_( v ) {} inline operator T& () const { return v_; }private: addr_impl_ref &
Time of Update: 2018-12-04
list2 通過繼承storage2來包含兩個成員a1_和a2_struct logical_and;struct logical_or;template< class A1, class A2 > class list2: private storage2< A1, A2 >{private: typedef storage2< A1, A2 > base_type;public: list2( A1 a1, A2 a2 ):