青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Error

C++博客 首頁 新隨筆 聯(lián)系 聚合 管理
  217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks

#

If you define NOMINMAX, because you prefer the STL version, then you may get problems while including gdiplus.h, which uses the min/max macro. As solution you need to include the STL headers and use "using namespace std" before you include the gdiplus.h.

In example:

#define NOMINMAX 
// Include C++ headers
#include <algorithm>
using namespace std;

// Include Windows headers
#include <windows.h>
#include <gdiplus.h>

不能直接在工程中添加NOMINMAX,必須這么處理才能OK
posted @ 2015-05-18 11:55 Enic 閱讀(766) | 評論 (0)編輯 收藏

把WriteMiniDump的多線程保護去掉就正常了,太奇葩了把
posted @ 2015-05-15 04:55 Enic 閱讀(3215) | 評論 (2)編輯 收藏

// 本質上來說就是自己設置了UnhandleExceptionFilter后,C運行庫或者其他什么別的函數(shù)也調用了,所以自己設置的就無效了,解決方案就是HOOK SET函數(shù),讓別人無法取代自己

很多 C/C++ 程序會設置自己的 Unhandled Exception Filter 用于捕獲 Unhandled exceptions 并輸出一些信息(例如,創(chuàng)建 mini-dump 或者輸出調用棧到日志文件中)。

從 VC++2005 開始出于安全因素微軟改變了 CRT 的行為。在以下情況下 CRT 不會通知被注冊的 Unhandled Exception Filter:

  1. 調用了 abort() 并且設置 abort 的行為為 _CALL_REPORTFAULT(Release 版本默認使用此設置)
  2. Security Checks 失敗時,具體來說就是檢查到一些會引發(fā)安全問題的堆棧溢出時不會通知被注冊的 Unhandled Exception Filter,會引發(fā)安全問題的堆棧溢出包括:覆蓋了函數(shù)的返回值,覆蓋了 Exception handler 的地址,覆蓋了某些類型的參數(shù)。關于編譯器的 Security Checks 的內容,詳細參考:http://msdn.microsoft.com/en-us/library/Aa290051(注意,此文章談到的是 Visual Studio .NET 2003,其中 _set_security_error_handler 函數(shù)在 VC++2005 以及以上版本已經(jīng)無法使用)
  3. 如果沒有調用 _set_invalid_parameter_handler 設置 Invalid parameter handler 時,檢查到了非法的參數(shù)

CRT 是通過何種方式使得我們注冊的 Unhandled Exception Filter 不被調用的?答案在 CRT 的代碼中:

  1. /* 代碼來源于 gs_report.c */
  2. /* Make sure any filter already in place is deleted. */
  3. SetUnhandledExceptionFilter(NULL);
  4. UnhandledExceptionFilter(&ExceptionPointers);

CRT 通過調用 SetUnhandledExceptionFilter 并傳遞參數(shù) NULL 來清除用戶注冊的 Unhandled Exception Filter。如果期望用戶注冊的 Unhandled Exception Filter 總是被調用那么應該避免 CRT 中相關的清理代碼。做法之一就是修改 CRT 代碼并且編譯為靜態(tài)庫(微軟的 VC++ Libraries 開發(fā) Lead Martyn Lovell 在 https://connect.microsoft.com/feedback/ViewFeedback.aspx?FeedbackID=101337&SiteID=210 談到過有關的問題),這里并不建議使用此做法。另外一種做法則是改變 SetUnhandledExceptionFilter 的行為,使得 CRT 對 SetUnhandledExceptionFilter 的調用不起任何作用(更加詳細的論述可以參考《Windows 核心編程》相關章節(jié))。

  1. // 無法得知此代碼來源于
  2. #ifndef _M_IX86
  3. #error "The following code only works for x86!"
  4. #endif
  5.  
  6. // 此函數(shù)一旦成功調用,之后對 SetUnhandledExceptionFilter 的調用將無效
  7. void DisableSetUnhandledExceptionFilter()
  8. {
  9. void* addr = (void*)GetProcAddress(LoadLibrary("kernel32.dll"),
  10. "SetUnhandledExceptionFilter");
  11.  
  12. if (addr)
  13. {
  14. unsigned char code[16];
  15. int size = 0;
  16.  
  17. code[size++] = 0x33;
  18. code[size++] = 0xC0;
  19. code[size++] = 0xC2;
  20. code[size++] = 0x04;
  21. code[size++] = 0x00;
  22.  
  23. DWORD dwOldFlag, dwTempFlag;
  24. VirtualProtect(addr, size, PAGE_READWRITE, &dwOldFlag);
  25. WriteProcessMemory(GetCurrentProcess(), addr, code, size, NULL);
  26. VirtualProtect(addr, size, dwOldFlag, &dwTempFlag);
  27. }
  28. }

只需要在注冊 Unhandled Exception Filter 之后調用 DisableSetUnhandledExceptionFilter() 函數(shù),那么之后所有對 SetUnhandledExceptionFilter 的調用都將無效,自然 CRT 也無法通過調用 SetUnhandledExceptionFilter 來清除用戶注冊的 Unhandled Exception Filter。

posted @ 2015-05-15 02:17 Enic 閱讀(2683) | 評論 (0)編輯 收藏

之前自己設計Ref類型遇到new出來的地址,和Ref的this指針一致的情況,soui的這套做法一定程度避免了
如果有普通的單根繼承直接使用: public 
TObjRefImpl<IRef>
如果是多根繼承可以指定析構類型 :public TObjRefImpl2<TDeleteType>
但是多重繼承兩個Ref類還是沒有解決,原則上應該勁量不再非接口是上使用多重繼承


  1
 template<class T>
  2 class TObjRefImpl :  public T
  3 {
  4 public:
  5     TObjRefImpl():m_cRef(1)
  6     {
  7     }
  8 
  9     virtual ~TObjRefImpl(){
 10     }
 11 
 12     //!添加引用
 13     /*!
 14     */
 15     virtual long AddRef()
 16     {
 17         return InterlockedIncrement(&m_cRef);
 18     }
 19 
 20     //!釋放引用
 21     /*!
 22     */
 23     virtual long Release()
 24     {
 25         long lRet = InterlockedDecrement(&m_cRef);
 26         if(lRet==0)
 27         {
 28             OnFinalRelease();
 29         }
 30         return lRet;
 31     }
 32 
 33     //!釋放對象
 34     /*!
 35     */
 36     virtual void OnFinalRelease()
 37     {
 38         delete this;
 39     }
 40 protected:
 41     volatile LONG m_cRef;
 42 };
 43 
 44 template<class T,class T2>
 45 class TObjRefImpl2 :  public TObjRefImpl<T>
 46 {
 47 public:
 48     virtual void OnFinalRelease()
 49     {
 50         delete static_cast<T2*>(this);
 51     }
 52 };
 53 
 54 //CAutoRefPtr provides the basis for all other smart pointers
 55 template <class T>
 56 class CAutoRefPtr
 57 {
 58 public:
 59     CAutoRefPtr() throw()
 60     {
 61         p = NULL;
 62     }
 63     CAutoRefPtr(_In_ int nNull) throw()
 64     {
 65         (void)nNull;
 66         p = NULL;
 67     }
 68     CAutoRefPtr(_In_opt_ T* lp) throw()
 69     {
 70         p = lp;
 71         if (p != NULL)
 72         {
 73             p->AddRef();
 74         }
 75     }
 76 
 77     CAutoRefPtr(const CAutoRefPtr & src) throw()
 78     {
 79         p=src.p;
 80         if(p)
 81         {
 82             p->AddRef();
 83         }
 84     }
 85 
 86     ~CAutoRefPtr() throw()
 87     {
 88         if (p)
 89         {
 90             p->Release();
 91         }
 92     }
 93 
 94     T* operator->() const throw()
 95     {
 96         return p;
 97     }
 98 
 99     operator T*() const throw()
100     {
101         return p;
102     }
103     T& operator*() const
104     {
105         return *p;
106     }
107     //The assert on operator& usually indicates a bug.  If this is really
108     //what is needed, however, take the address of the p member explicitly.
109     T** operator&() throw()
110     {
111         SASSERT(p==NULL);
112         return &p;
113     }
114     bool operator!() const throw()
115     {
116         return (p == NULL);
117     }
118     bool operator<(_In_opt_ T* pT) const throw()
119     {
120         return p < pT;
121     }
122     bool operator!=(_In_opt_ T* pT) const
123     {
124         return !operator==(pT);
125     }
126     bool operator==(_In_opt_ T* pT) const throw()
127     {
128         return p == pT;
129     }
130 
131     T* operator=(_In_opt_ T* lp) throw()
132     {
133         if(*this!=lp)
134         {
135             if(p)
136             {
137                 p->Release();
138             }
139             p=lp;
140             if(p)
141             {
142                 p->AddRef();
143             }
144         }
145         return *this;
146     }
147 
148     T* operator=(_In_ const CAutoRefPtr<T>& lp) throw()
149     {
150         if(*this!=lp)
151         {
152             if(p)
153             {
154                 p->Release();
155             }
156             p=lp;
157             if(p)
158             {
159                 p->AddRef();
160             }
161         }
162         return *this;    
163     }
164 
165     // Release the interface and set to NULL
166     void Release() throw()
167     {
168         T* pTemp = p;
169         if (pTemp)
170         {
171             p = NULL;
172             pTemp->Release();
173         }
174     }
175 
176     // Attach to an existing interface (does not AddRef)
177     void Attach(_In_opt_ T* p2) throw()
178     {
179         if (p)
180         {
181             p->Release();
182         }
183         p = p2;
184     }
185     // Detach the interface (does not Release)
186     T* Detach() throw()
187     {
188         T* pt = p;
189         p = NULL;
190         return pt;
191     }
192     HRESULT CopyTo(_Deref_out_opt_ T** ppT) throw()
193     {
194         if (ppT == NULL)
195             return E_POINTER;
196         *ppT = p;
197         if (p)
198         {
199             p->AddRef();
200         }
201         return S_OK;
202     }
203 
204 protected:
205     T* p;
206 };
struct IObjRef
{
    virtual long AddRef() = 0;

    virtual long Release() = 0;
    
    virtual void OnFinalRelease() =0;
};


posted @ 2015-05-14 10:07 Enic 閱讀(361) | 評論 (0)編輯 收藏

使用ThinkPHP開發(fā)的過程中應該盡量遵循下列命名規(guī)范:

  • 類文件都是以.class.php為后綴(這里是指的ThinkPHP內部使用的類庫文件,不代表外部加載的類庫文件),使用駝峰法命名,并且首字母大寫,例如 DbMysql.class.php
  • 類的命名空間地址和所在的路徑地址一致,例如 Home\Controller\UserController類所在的路徑應該是 Application/Home/Controller/UserController.class.php
  • 確保文件的命名和調用大小寫一致,是由于在類Unix系統(tǒng)上面,對大小寫是敏感的(而ThinkPHP在調試模式下面,即使在Windows平臺也會嚴格檢查大小寫);
  • 類名和文件名一致(包括上面說的大小寫一致),例如 UserController類的文件命名是UserController.class.php, InfoModel類的文件名是InfoModel.class.php, 并且不同的類庫的類命名有一定的規(guī)范;
  • 函數(shù)、配置文件等其他類庫文件之外的一般是以.php為后綴(第三方引入的不做要求);
  • 函數(shù)的命名使用小寫字母和下劃線的方式,例如 get_client_ip
  • 方法的命名使用駝峰法,并且首字母小寫或者使用下劃線“_”,例如 getUserName_parseType,通常下劃線開頭的方法屬于私有方法;
  • 屬性的命名使用駝峰法,并且首字母小寫或者使用下劃線“_”,例如 tableName_instance,通常下劃線開頭的屬性屬于私有屬性;
  • 以雙下劃線“__”打頭的函數(shù)或方法作為魔法方法,例如 __call 和 __autoload
  • 常量以大寫字母和下劃線命名,例如 HAS_ONE和 MANY_TO_MANY
  • 配置參數(shù)以大寫字母和下劃線命名,例如HTML_CACHE_ON
  • 語言變量以大寫字母和下劃線命名,例如MY_LANG,以下劃線打頭的語言變量通常用于系統(tǒng)語言變量,例如 _CLASS_NOT_EXIST_
  • 對變量的命名沒有強制的規(guī)范,可以根據(jù)團隊規(guī)范來進行;
  • ThinkPHP的模板文件默認是以.html 為后綴(可以通過配置修改);
  • 數(shù)據(jù)表和字段采用小寫加下劃線方式命名,并注意字段名不要以下劃線開頭,例如 think_user 表和 user_name字段是正確寫法,類似 _username 這樣的數(shù)據(jù)表字段可能會被過濾。

特例:在ThinkPHP里面,有一個函數(shù)命名的特例,就是單字母大寫函數(shù),這類函數(shù)通常是某些操作的快捷定義,或者有特殊的作用。例如:A、D、S、L 方法等等,他們有著特殊的含義,后面會有所了解。

由于ThinkPHP默認全部使用UTF-8編碼,所以請確保你的程序文件采用UTF-8編碼格式保存,并且去掉BOM信息頭(去掉BOM頭信息有很多方式,不同的編輯器都有設置方法,也可以用工具進行統(tǒng)一檢測和處理),否則可能導致很多意想不到的問題。

開發(fā)建議

在使用ThinkPHP進行開發(fā)的過程中,我們給出如下建議,會讓你的開發(fā)變得更輕松:

  • 遵循框架的命名規(guī)范和目錄規(guī)范;
  • 開發(fā)過程中盡量開啟調試模式,及早發(fā)現(xiàn)問題;
  • 多看看日志文件,查找隱患問題;
  • 養(yǎng)成使用I函數(shù)獲取輸入變量的好習慣;
  • 更新或者環(huán)境改變后遇到問題首要問題是清空Runtime目錄;
posted @ 2015-04-25 18:59 Enic 閱讀(221) | 評論 (0)編輯 收藏

所有路徑常量都必須以“/”結尾
THINK_PATH 框架目錄
APP_PATH 應用目錄
RUNTIME_PATH 應用運行時目錄(可寫)
APP_DEBUG 應用調試模式 (默認為false)
STORAGE_TYPE 存儲類型(默認為File)
APP_MODE 應用模式(默認為common)
一般部署目錄如下:
www  WEB部署目錄(或者子目錄)
├─index.php       應用入口文件
├─Apps            應用目錄
├─Public          資源文件目錄
├─Runtime         運行時目錄
└─Think           框架目錄
Application
├─Common         應用公共模塊
│  ├─Common      應用公共函數(shù)目錄
│  └─Conf        應用公共配置文件目錄
├─Home           默認生成的Home模塊
│  ├─Conf        模塊配置文件目錄
│  ├─Common      模塊函數(shù)公共目錄
│  ├─Controller  模塊控制器目錄
│  ├─Model       模塊模型目錄
│  └─View        模塊視圖文件目錄
├─Runtime        運行時目錄
│  ├─Cache       模版緩存目錄
│  ├─Data        數(shù)據(jù)目錄
│  ├─Logs        日志目錄
│  └─Temp        緩存目錄
├─Module         模塊目錄
│  ├─Conf        配置文件目錄
│  ├─Common      公共函數(shù)目錄
│  ├─Controller  控制器目錄
│  ├─Model       模型目錄
│  ├─Logic       邏輯目錄(可選)
│  ├─Service     Service目錄(可選)
│  ... 更多分層目錄可選
│  └─View        視圖目錄
控制器類的命名方式是:控制器名(駝峰法,首字母大寫)+Controller
控制器文件的命名方式是:類名+class.php(類文件后綴)
默認的歡迎頁面其實就是訪問的Home模塊下面的Index控制器類的index操作方法 我們修改默認的index操作方法如下:
posted @ 2015-04-25 18:57 Enic 閱讀(128) | 評論 (0)編輯 收藏

httpd.cfg末尾添加這樣一行:
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
然后在這個文件中配置vhosts信息:
監(jiān)聽端口:
Listen 81
文件權限:
<Directory "E:/PHP/LeanThinkPHP/">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
服務器文檔地址:
DocumentRoot "E:/PHP/LeanThinkPHP/"
這樣可以跑起來了,其他的東西以后再去具體看文檔
http://httpd.apache.org/docs/2.4/vhosts/


目前理解添加一個新的網(wǎng)站需要的事情:
1.打開監(jiān)聽端口
2.使用<Directory/>設置目錄權限
3.使用<VirtualHost/>設置網(wǎng)站相關信息
posted @ 2015-04-25 18:34 Enic 閱讀(338) | 評論 (0)編輯 收藏

Apache服務器的安裝與配置

文檔:http://httpd.apache.org/docs/2.4/

指令:http://httpd.apache.org/docs/2.4/mod/core.html

一、配置文件

語法

* 主配置文件httpd.conf,更改只有重啟服務才會生效
* 配置中一行一個命令,如果要多行一個命令,則最后以\結束,且與該行最后個字符無其它字符或者空白
* 每行注釋以#開頭,會被忽略,一行命令符后不能再接注釋
* 空行空白字符在配置文件中被忽略
* 配置文件錯誤檢測可以通過 Test Configuration來完成(httpd.exe -w -t -f "D:\Software\GreenSoft\Apache\conf\httpd.conf" -d "D:\Software\GreenSoft\Apache\.")


模塊

Related Modules Related Directives
--------------------------------------------
mod_so <IfModule>
LoadModule

* httpd基于模塊化,編譯配置時,默認會把基本的功能模塊加載到服務器內核。
* 對于動態(tài)加載的模塊可以通過LoadModule指令在任何時候完成。
* <IfModule>可用于條件加載
* Dos命令 httpd.exe -l 可以查看已經(jīng)加載的模塊

* httpd.exe支持的參數(shù)指令

-D name : define a name for use in <IfDefine name> directives
-d directory : specify an alternate initial ServerRoot
-f file : specify an alternate ServerConfigFile
-C "directive" : process directive before reading config files
-c "directive" : process directive after reading config files
-n name : set service name and use its ServerConfigFile
-k start : tell Apache to start
-k restart : tell running Apache to do a graceful restart
-k stop|shutdown : tell running Apache to shutdown
-k install : install an Apache service
-k config : change startup Options of an Apache service
-k uninstall : uninstall an Apache service
-w : hold open the console window on error
-e level : show startup errors of level (see LogLevel)
-E file : log startup errors to file
-v : show version number
-V : show compile settings
-h : list available command line options (this page)
-l : list compiled in modules
-L : list available configuration directives
-t -D DUMP_VHOSTS : show parsed settings (currently only vhost settings)
-S : a synonym for -t -D DUMP_VHOSTS
-t -D DUMP_MODULES : show all loaded modules
-M : a synonym for -t -D DUMP_MODULES
-t : run syntax check for config files
-T : start without DocumentRoot(s) check

 

指令作用范圍


Related Modules Related Directives
-----------------------------------------
<Directory>
<DirectoryMatch>
<Files>
<FilesMatch>
<Location>
<LocationMatch>
<VirtualHost>

* 指令范圍標簽可以指定指令生效的范圍,其可以嵌套
* 可以通過在<VirtualHost>標簽中放置多個指令以同時支持多個虛擬主機站點
* 節(jié)點配置參見:http://httpd.apache.org/docs/2.4/sections.html

 

.htaccess文件

* httpd通過在站點目錄里面放置.htaccess文件允許配置分散
* .htaccess的語法與主配置文件一致,對于該配置文件的變更只要請求過來會立即生效
* 可以在.htaccess中放置的指令見:http://httpd.apache.org/docs/2.4/mod/directive-dict.html#Context
* 如果有權限配置主配置,則應避免使用.htaccess文件方式來配置,這種方式影響服務器性能
1)配置.htaccess文件后,httpd會查找每個目錄的.htaccess文件,不管你實際有沒有使用
2)文檔被請求的時候,.htaccess文件每次都會被加載

3)httpd會在多層目錄中查找.htaccess文件,以應用完整的指令。
4).htaccess中地址重寫指令中的正則表達式在每次請求的時候重新編譯。
5)安全問題,用戶在修改.htaccess使管理員對配置的管理失控。只有設置AllowOverride指令才可以使用戶使用指定的指令。

 


* 在.htaccess中配置指令與在主配置中配置Dirctory塊可以達到相同效果,但是后者有更好的性能。

Contents of .htaccess file in /www/htdocs/example
AddType text/example .exm

等價于:

Section from your httpd.conf file

<Directory /www/htdocs/example>
AddType text/example .exm
</Directory>


* 禁用.htaccess可以用指令 AllowOverride None

 

二、Apache目錄結構

根目錄
|-- bin 程序命令目錄
|-- build
|-- cgi-bin
|-- conf 配置文件目錄
|-- error
|-- htdocs 編譯安裝時站點目錄
|-- icons
|-- include
|-- lib 
|-- logs 默認日志文件存放包括錯誤日志(error_log)和訪問日志(access_log) tail -f access_log可以隨時看訪問記錄, 里面httpd.pid還會記錄主進程號
|-- man
|-- manual
|-- modules 模塊目錄 例如PHP MEMCACHE編譯后的模塊在這里面

 

Bin目錄
|-- ab apache http服務器性能壓力測試工具,類似的jmeter loadrunner webbench
|-- apachectl apache的啟動命令
|-- apr-1-config
|-- apu-1-config
|-- apxs apache服務器編譯和安裝擴展的工具,在進行DSO方式模塊編譯時會用到例如編譯PHP時就用到:--with-apxs2=/usr/local/apache/bin/apxs
|-- checkgid
|-- dbmmanage
|-- envvars
|-- envvars-std
|-- htcacheclean 清理磁盤緩存區(qū)的命令,一般少用
|-- htdbm
|-- htdigest
|-- htpasswd 建立更新基本認證文件 例如配置nagio監(jiān)控時候會用到
|-- httpd 為apache的控制命令程序,apachectl執(zhí)行的時候會調用到httpd
|-- httxt2dbm
|-- logresolve


Conf目錄
|-- extra 輔助apache配置文件
| |-- httpd-autoindex.conf
| |-- httpd-dav.conf dav支持配置
| |-- httpd-default.conf apache相關服務配置 如超時時間 保持連接時間
| |-- httpd-info.conf
| |-- httpd-languages.conf 語言支持
| |-- httpd-manual.conf
| |-- httpd-mpm.conf 服務器池管理,如apache模式配置 連接等
| |-- httpd-multilang-errordoc.conf
| |-- httpd-ssl.conf 支持SSL加密配置
| |-- httpd-userdir.conf
| |-- httpd-vhosts.conf 虛擬機配置文件
|-- httpd.conf 主配置文件
|-- magic
|-- mime.types
|-- original

 

三、httpd.conf主配置文件常見配置


ServerRoot "/usr/local/apache2.2.22" apache安裝目錄
Listen 80 apache端口 
<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
User daemon apache運行用戶
Group daemon apache運行組
</IfModule>
</IfModule>
ServerAdmin you@example.com 管理員郵箱
DocumentRoot "/usr/local/apache2.2.22/htdocs" 站點目錄,注意最后不要加/線

<Directory /> 根目錄權限
Options FollowSymLinks 可以使用符號鏈接
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory "/usr/local/apache2.2.22/htdocs"> 目錄權限 注意Indexes的作用是允許瀏覽目錄
Options Indexes FollowSymLinks
AllowOverride None 禁止用戶對目錄配置文件.htaccess修改,一般為none
Order allow,deny
Allow from all 
</Directory>

<IfModule dir_module>
DirectoryIndex index.html 站點目錄首頁文件多個文件用空格隔開
</IfModule>

<FilesMatch "^\.ht"> 防止WEB用戶查看以.ht開頭的隱藏文件
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>

ErrorLog "logs/error_log" 錯誤日志
LogLevel warn 警告級別
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 復合日志格式
LogFormat "%h %l %u %t \"%r\" %>s %b" common 常規(guī)日志格式
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio 復合日志格式
</IfModule>
CustomLog "logs/access_log" common 默認訪問日志格式
</IfModule>

<IfModule alias_module>
ScriptAlias /cgi-bin/ "/usr/local/apache2.2.22/cgi-bin/" CGI別名配置
</IfModule>
<IfModule cgid_module>
</IfModule>

<Directory "/usr/local/apache2.2.22/cgi-bin"> CGI權限訪問路徑
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
DefaultType text/plain 定義不能確定MIME類型時候使用默認MIME類型,如果服務主要包含text或HTML ,text/plain是一個好選擇

<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z 允許信息在傳輸中使用mosaic/x 2.1+解壓信息 但不是所有瀏覽器都支持
AddType application/x-gzip .gz .tgz
</IfModule>

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

 

四、虛擬主機http_vhost.conf配置文件

NameVirtuaHost *:80 表示基于名稱的虛擬主機 *:80表示監(jiān)聽本機所有IP的80端口上提供HTTP服務,*可以設置為具體IP
<VirtualHost *:80>
serveradmin 管理員郵箱
servername 域名
serveralias 別名 可以設置多個域名指向同一個站點
errorlog 錯誤日志
customlog 訪問日志
</VirtualHost>


虛擬主機的配置是局部優(yōu)先原則,也就是http_vhost.conf配置了,那么就不會從主配置文件http.conf中讀取了


五、修改Apache默認站點目錄

1、文檔路徑更改 
DocumentRoot "D:/Software/GreenSoft/Apache/htdocs" 
改成
DocumentRoot "E:/wwwroot/Apache"

2、目錄更改
<Directory "D:/Software/GreenSoft/Apache/htdocs">
改成
<Directory "E:/wwwroot/Apache">

 


六、配置多站點方式

方式一 拷貝配置文件,安裝新服務
1、將httpd.conf復制一個新的文件httpdNew.conf
2、將httpdNew.conf中的偵聽端口改成未使用的自定義的端口。 Listen:8111
3、將httpdNew.conf中的網(wǎng)站目錄 DocumentRoot "原絕對路徑" 改成 DocumentRoot "新絕對路徑"
4、將httpdNew.conf中的權限設置 <Directory "原絕對路徑" > 改成 <Directory "新絕對路徑" >
5、安裝新服務。Dos下進到Apache安裝目錄下的Bin目錄,輸入命令 httpd.exe -k install -n "服務名" -f "X:\Apache安裝目錄根目錄\conf\httpdNew.conf"
6、啟動新服務。輸入命令 httpd -k start


方式二 添加新端口,新虛擬目錄的方式
1、httpd.conf在之前偵聽端口的基礎上,加上新偵聽端口 Listen 8333.這樣Apache有多個偵聽端口
2、httpd.conf中加入虛擬主機支持。加入指令:NameVirtualHost *
3、找到<VirtualHost> definition注釋所在位置。加入指令:
<VirtualHost localhost:8333>
ServerName localhost
DocumentRoot "虛擬站點新絕對路徑"
</VirtualHost>

 

方式三 建立虛擬主機方式
1、修改虛擬主機配置文件 X:\Apache安裝目錄根目錄\conf\extra\httpd-vhosts.conf文件.加入配置:
<VirtualHost 127.0.1.1:8222>
DocumentRoot "虛擬站點新絕對路徑"
ServerName url.com
ErrorLog "虛擬站點新絕對路徑/error.log"
</VirtualHost>

2、修改主配置文件X:\Apache安裝目錄根目錄\conf\httpd.conf。去掉#Include conf/extra/httpd-vhosts.conf前面的#號
3、修改主配置文件X:\Apache安裝目錄根目錄\conf\httpd.conf。加目錄權限:
<Directory "虛擬站點新絕對路徑">
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
4、重啟對應的Apache服務

 

七、配置Apache支持Url重寫

1、加載重寫模塊。httpd.conf中找到#LoadModule rewrite_module modules/mod_rewrite.so,去掉#號
2、httpd.conf中找到AllowOverride None,改成 AllowOverride All (All表示整臺服務器上都支持URL規(guī)則重寫)
3、httpd.conf加入
<Directory "站點絕對路徑">
Options FollowSymLinks
AllowOverride All
</Directory>
4、重啟Apache服務器并啟動服務
5、在URL重寫的網(wǎng)站目錄下放一個.htaccess文件,文件名是.htaccess。如無此文件或此文件中沒定義任何關于URL重寫的規(guī)則,則重寫不會生效。
6、在.htaccess中通過正則表達式映射需要偽靜態(tài)的頁面。URL正則表達式如下:
RewriteEngine on
RewriteRule index.html index.php
RewriteRule (\d+).htmlinfo\.php\?infoid=1
效果為:www.abc.cn/info/info.php?infoid=100 映射為 www.abc.cn/info/100.html


可用于以下用途:
1、http錯誤的自定義頁。格式 ErrorDocument 錯誤代碼 /目錄名/名.擴展名
ErrorDocument 404 /errors/notfound.html
ErrorDocument 401 "你權限訪問該頁面!"

2、拒絕某IP的訪問
order allow,deny 
deny from 210.10.56.32 
deny from 219.5.45. 
deny from www.baidu.com
allow from all

3、保護.htaccess文檔
4、Url轉向(文檔遷移,目錄更改,顯示友好易記的url)。格式:
Redirect /舊目錄/舊文檔名 新文檔名
Redirect 舊目錄 新目錄

5、更改默認主頁
DirectoryIndex 新的缺省名
DirectoryIndex filename.html index.cgi index.pl default.htm

6、反盜鏈
RewriteEngine on 
RewriteCond %{ HTTP_REFERER } !^RewriteCond [NC] 
RewriteRule .(gif&line;jpg)- [F]  RewriteRule .(gif&line;jpg) http://www.mydomain.com/替代名 [R,L]

 

八、配置反盜鏈
1、參見 配置Apache支持Url重寫 節(jié),配置Apache支持url重寫
2、在站點的.htaccess文件中加入
RewriteEngine on
#允許空“HTTP_REFERER”的訪問
RewriteCond %{HTTP_REFERER} !^[NC]RewriteCond http://nobing.cn/no.png [R,NC,L]

說明:
R 就是轉向的意思
NC 指的是不區(qū)分大小寫
L 的作用是指明本次轉向到此結束,后續(xù)的轉向不受先前判斷語句的影響

多個擴展名用|分隔

 


九、配置緩存

LoadModule cache_module modules/mod_cache.so 
LoadModule mem_cache_module modules/mod_mem_cache.so 
<IfModule mod_cache.c> 
#默認緩存有效期(秒)
CacheDefaultExpire 3600 
CacheMaxExpire 86400 
CacheLastModifiedFactor 0.1 

#禁止緩存某些特定的URL 
CacheDisable /local_files 
#使用特定的存儲類型緩存某些特定的URL 
CacheEnable mem /manual 
CacheEnable fd /images 
CacheEnable disk / 
<IfModule mod_mem_cache.c> 
CacheEnable mem / 
MCacheSize 8192 
MCacheMaxObjectCount 10000 
MCacheMinObjectSize 1 
MCacheMaxObjectSize 51200 
#MCacheRemovalAlgorithm LRU 
</IfModule> 
</IfModule>

 

posted @ 2015-04-25 18:10 Enic 閱讀(166) | 評論 (0)編輯 收藏

<iomapi>

o<<setfill('0')<<"sssss"<<setw(4)<<a;
     cerr<<o.str().c_str();
posted @ 2015-04-08 16:35 Enic 閱讀(132) | 評論 (0)編輯 收藏

1.定義一個類:
local MyApp = class("MyApp", cc.mvc.AppBase)

2.構造函數(shù):
ctor: 構造方法

3.調用基類構造函數(shù):
MyApp.super.ctor(self)

4.enterScene場景跳轉:
1)函數(shù)原型在AppBase中: enterScene(sceneName, args, transitionType, time, move)
  函數(shù)可以接收四個參數(shù),lua語法允許少寫參數(shù),默認為nil
  sceneName是要跳轉的場景名
  args是傳給該場景的構造參數(shù),args需要是一個table
  transitionType是場景切換的過度動畫類型
  time是過度時間
  more是過度效果附加參數(shù)
2)實際調用會執(zhí)行到如下代碼:
  // 在Lua中字符串連接操作符是兩個點 (`..´)
  // lua的require將會把.轉義成路徑分割符?轉義成模塊名
  local scenePackageName = self.packageRoot .. ".scenes." .. sceneName
  local sceneClass = require(scenePackageName)
  local scene = sceneClass.new(unpack(checktable(args)))
3)可以通過enterScene將指定的參數(shù)傳遞到指定場景的構造函數(shù)
  self:endterScene("MainScene", {“你好”, “cocos”})
  MainScene:ctor(arg1, arg2)
 
5.不一樣的類定義?
local MainScene = class("MainScene", function()    
 return display.newScene("MainScene")
end)
這片代碼是定義一個名為MainScene的場景類,并且賦值給local變量
1.display.newScene("MainScene")實際會調用底層代碼創(chuàng)建一個沒有名字的場景
2.NodeEvent可以控制一組事件是否開啟監(jiān)聽
3.MainScene的最后一行是return MainScene,所以需要引用這個場景的時候值需要:
  local MainScene = require("app.scenes.MainScene");

 
 
 
Q1.“類定義”的兩種寫法具體的意義和區(qū)別是什么?

Q2.require會不會讓被require的腳本重新執(zhí)行一次,如果是return了模塊中的lcoal變量,是不是每次返回的都將是同一個值?

posted @ 2015-04-06 16:56 Enic 閱讀(323) | 評論 (1)編輯 收藏

僅列出標題
共22頁: First 2 3 4 5 6 7 8 9 10 Last 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久热成人在线视频| 免费91麻豆精品国产自产在线观看| 亚洲精品一品区二品区三品区| 欧美日韩亚洲综合一区| 亚洲女同精品视频| 日韩网站免费观看| 亚洲免费大片| 亚洲视频免费| 亚洲午夜精品久久| 欧美一区二区免费视频| 欧美综合国产| 免费观看在线综合| 欧美激情一区二区三区成人| 亚洲国产免费看| 亚洲免费av电影| 久久成人资源| 欧美久久一级| 国产欧美一区二区三区视频| 韩国v欧美v日本v亚洲v| 一区二区av在线| 一区二区三区国产精华| 欧美一区二区三区久久精品茉莉花| 午夜精品久久久99热福利| 欧美有码视频| 日韩视频在线一区二区三区| 亚洲精品视频在线| 亚洲免费在线视频一区 二区| 久久精品国产在热久久 | 亚洲在线第一页| 久久精品国产欧美激情| 国产精品二区在线| 亚洲激情国产精品| 麻豆精品在线视频| 亚洲欧美国产精品va在线观看| 久久精品99国产精品日本| 亚洲品质自拍| 欧美一级黄色录像| 亚洲日韩成人| 欧美丰满高潮xxxx喷水动漫| 欧美在线观看视频在线| 国产精品美女久久久| 亚洲天堂男人| 亚洲视频一区| 欧美三区美女| 欧美一区影院| 久久精品电影| 亚洲黄页一区| 一本一本a久久| 国产欧美日韩一区二区三区在线 | 久久福利影视| 亚洲国产第一页| 亚洲第一福利在线观看| 欧美日韩ab| 性欧美暴力猛交另类hd| 久久成人精品无人区| 亚洲国产日韩欧美在线图片| 亚洲国产视频a| 国产午夜精品美女视频明星a级| 久久综合中文字幕| 欧美日韩在线免费观看| 久久激情五月婷婷| 欧美精品 日韩| 美女性感视频久久久| 欧美午夜精品电影| 欧美激情在线免费观看| 国产精品视频一二三| 亚洲电影av在线| 国内精品久久久久久久果冻传媒| 欧美激情片在线观看| 一区二区三区鲁丝不卡| 国产专区综合网| 亚洲午夜精品17c| 亚洲最新色图| 欧美韩国在线| 亚洲国产精品国自产拍av秋霞| 国产伦精品一区二区三区| 亚洲娇小video精品| 亚洲国产日韩一区二区| 久久久久久网址| 中文日韩在线| 亚洲影院在线| 亚洲视频一区在线观看| 玖玖国产精品视频| 免费一级欧美片在线播放| 国产一区二区三区免费不卡| 欧美亚洲综合网| 久久视频在线免费观看| 国产精品av久久久久久麻豆网| 欧美日韩在线播放三区| 亚洲一卡久久| 国产精品久久久久久久久| 亚洲一区二区三区影院| 欧美在线观看天堂一区二区三区| 欧美特黄一区| 久久精品免费电影| 亚洲日本无吗高清不卡| 一区二区三区www| 国产欧美不卡| 欧美国产欧美亚洲国产日韩mv天天看完整 | 制服诱惑一区二区| 国产一区二区精品久久91| 久久久高清一区二区三区| 最新亚洲电影| 久久久久国产精品人| 亚洲精品人人| 好吊视频一区二区三区四区| 欧美精品在线观看播放| 久久久久久久久久久久久久一区 | 国产精品xxxav免费视频| 久久精品免费播放| 亚洲欧美清纯在线制服| 亚洲人成高清| 91久久久在线| 亚洲免费播放| 日韩午夜激情电影| 亚洲日本激情| 99香蕉国产精品偷在线观看| 亚洲大片在线| 欧美激情第8页| 欧美不卡视频一区发布| 久久综合九色九九| 久久久天天操| 欧美激情bt| 日韩性生活视频| 亚洲一区二区3| 欧美一区二区三区四区视频| 欧美有码在线视频| 美女精品在线观看| 欧美美女视频| 国产欧美日韩在线播放| 激情综合久久| 中国成人亚色综合网站| 欧美中文字幕第一页| 另类春色校园亚洲| 亚洲高清久久久| 亚洲久久一区二区| 午夜精品一区二区三区电影天堂| 久久er精品视频| 亚洲激情午夜| 蜜乳av另类精品一区二区| 亚洲国产高潮在线观看| 亚洲综合视频一区| 久久国内精品视频| 国产欧美一区二区三区久久人妖| 国产亚洲福利| 亚洲欧美激情四射在线日| 欧美粗暴jizz性欧美20| 亚洲影视综合| 国产精品久久久久久久久| 亚洲伦理在线免费看| 欧美夫妇交换俱乐部在线观看| 亚洲视频国产视频| 国产精品人人爽人人做我的可爱| 亚洲国产精品一区二区久| 久久久久国产免费免费| 欧美亚洲网站| 国语自产精品视频在线看抢先版结局 | 亚洲国产精品成人| 久久视频在线视频| 亚洲国产高清在线| 欧美激情视频网站| 欧美激情在线| 亚洲一区二区精品在线观看| 在线亚洲欧美视频| 国产精品高清在线观看| 欧美一区二区三区四区在线观看| 亚洲深夜av| 国产亚洲欧美日韩美女| 女人色偷偷aa久久天堂| 欧美日本一道本| 久久成人精品视频| 亚洲一二三级电影| 欧美一激情一区二区三区| 黄色国产精品| 亚洲乱码国产乱码精品精天堂| 国产精品v欧美精品v日韩| 久久精品国产99精品国产亚洲性色| 久久资源在线| 欧美一区二区大片| 欧美大片免费久久精品三p| 午夜精品在线看| 欧美国产精品久久| 久久午夜精品一区二区| 欧美三级日本三级少妇99| 免费成人在线观看视频| 国产精品资源在线观看| 亚洲啪啪91| 亚洲日本中文字幕区 | 久久伊人一区二区| 欧美日韩国产精品成人| 毛片av中文字幕一区二区| 国产日韩欧美精品一区| 亚洲视频在线一区观看| 亚洲网站视频| 欧美日韩午夜视频在线观看| 亚洲国产日韩欧美在线动漫| 极品尤物av久久免费看| 欧美在线一二三| 久久久久久一区| 亚洲大胆在线|