HDC調(diào)試需求開(kāi)發(fā)(15萬(wàn)預(yù)算),能者速來(lái)!>>> 1,剛開(kāi)始學(xué)習(xí)使用CGAL,主要用到了Boost庫(kù),使用VS2012建了一個(gè)MFC項(xiàng)目,添加include如下:#include
#include #include // #include #include #include #include #include //#include #include #include #include #include
運(yùn)行時(shí)出現(xiàn)如下錯(cuò)誤: 錯(cuò)誤 2 error C2064: 項(xiàng)不會(huì)計(jì)算為接受 2 個(gè)參數(shù)的函數(shù) d:\boost\boost_1_54_0\boost\type_traits\has_new_operator.hpp 33 1 app2 錯(cuò)誤 3 error C2064: 項(xiàng)不會(huì)計(jì)算為接受 2 個(gè)參數(shù)的函數(shù) d:\boost\boost_1_54_0\boost\type_traits\has_new_operator.hpp 44 1 app2 錯(cuò)誤 4 error C2064: 項(xiàng)不會(huì)計(jì)算為接受 2 個(gè)參數(shù)的函數(shù) d:\boost\boost_1_54_0\boost\type_traits\has_new_operator.hpp 55 1 app2 錯(cuò)誤 5 error C2064: 項(xiàng)不會(huì)計(jì)算為接受 2 個(gè)參數(shù)的函數(shù) d:\boost\boost_1_54_0\boost\type_traits\has_new_operator.hpp 67 1 app2 錯(cuò)誤 7 error C2059: 語(yǔ)法錯(cuò)誤:“]” d:\boost\boost_1_54_0\boost\type_traits\has_new_operator.hpp 67 1 app2 錯(cuò)誤 8 error C2059: 語(yǔ)法錯(cuò)誤:“)” d:\boost\boost_1_54_0\boost\type_traits\has_new_operator.hpp 69 1 app2 錯(cuò)誤 9 error C2649: “typename”: 不是“class” d:\boost\boost_1_54_0\boost\type_traits\has_new_operator.hpp 70 1 app2 錯(cuò)誤 10 error C2649: “typename”: 不是“class” d:\boost\boost_1_54_0\boost\type_traits\has_new_operator.hpp 73 1 app2 //has_new_operator.hpp namespace detail { template struct test; template struct has_new_operator_impl { template static type_traits::yes_type check_sig1( U*, test< void *(*)(std::size_t), &U::operator new //項(xiàng)不能計(jì)算為接受兩個(gè)參數(shù)的函數(shù) >* = NULL );
但是當(dāng)我把把關(guān)于Surface_mesh_simplification的include注釋掉之后就不會(huì)報(bào)錯(cuò)了,如下:
#include #include #include // //#include //#include //#include //#include //#include //#include #include #include #include #include
求解?
2,CGAL讀的是OFF格式的文件(ASCII或者Binary),但是為什么我用Maya生成的obj文件轉(zhuǎn)化成off格式的文件之后為什么CGAL不能計(jì)算?
參考代碼如下(obj-->off): using namespace std; // TODO: 在此添加命令處理程序代碼 //::MessageBox(NULL,_T("讀取成功"),_T("標(biāo)題"),MB_OK); CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,(LPCTSTR)_T("obj files|*.obj||")); CString filePathAll; CString filePath; long int countPoint; long int countFace; countPoint = 0; countFace = 0; if(dlg.DoModal()==IDOK) { filePathAll = dlg.GetPathName(); int pos = filePathAll.ReverseFind('\\'); filePath = filePathAll.Mid(0,pos); filePath += "\\"; CString fileTitle = dlg.GetFileTitle(); char *cfilePathAllCopy = (LPSTR)(LPCTSTR)filePathAll; //memset(cfilePathAllCopy,0,sizeof(cfilePathAllCopy)); char *cfilePathAll = cfilePathAllCopy; CStdioFile sFile; CString *pointALLCopy = new CString[300000]; CString *faceALLCopy = new CString[300000]; //memset(pointALLCopy,0,300000); //memset(faceALLCopy,0,300000); CString *pointALL = pointALLCopy; CString *faceALL = faceALLCopy; int positionPre = 0; int positionPos; if(sFile.Open((LPCTSTR)cfilePathAll,CFile::modeReadWrite | CFile::typeText )) { CString filePart = (CString)(" "); CString sSpace =_T( " "); //CString men; while(sFile.ReadString(filePart)) { if(filePart != "") { if(filePart.GetAt(0) == 'v' && filePart.GetAt(1) == ' ') { pointALL[countPoint] = filePart.Mid(2); countPoint ++ ; } if(filePart.GetAt(0) == 'f' && filePart.GetAt(1) == ' ') { //if(i != 0) i=0; //if(j%31 == 0) //{ CString bufferFace; positionPre = 0; for(int i = 0;i < 3;i++) { positionPre = filePart.Find(' ',positionPre) + 1; positionPos = filePart.Find('/',positionPre); bufferFace = filePart.Mid(positionPre , positionPos - positionPre); bufferFace.TrimLeft(); bufferFace.TrimRight(); char *cFace = new char[bufferFace.GetLength()]; for(int j = 0;j來(lái)源:開(kāi)源中國(guó)
發(fā)布時(shí)間:2014-07-27 09:19:00
HDC調(diào)試需求開(kāi)發(fā)(15萬(wàn)預(yù)算),能者速來(lái)!>>> 在用async_read接收客戶端消息的時(shí)候,用tcpdum可以看到ACK顯示服務(wù)端全部接收,為何打印的時(shí)候發(fā)現(xiàn)丟掉了,比如說(shuō)一條消息重復(fù)連續(xù)發(fā)5次只能收到一次,async_read_some卻不會(huì),請(qǐng)告訴解答
來(lái)源:開(kāi)源中國(guó)
發(fā)布時(shí)間:2014-08-06 21:04:00
我是做 java 開(kāi)發(fā)的,回來(lái)之后面試了很多公司...有聯(lián)信,京普,凱亞....最后落腳在了一家小公司...早八點(diǎn)半,晚五點(diǎn)半,雙休不加班。想先穩(wěn)定下來(lái),再慢慢看。前幾天海爾集團(tuán)總部的 hr 聯(lián)系到了我,面了一波。 想問(wèn)一下大佬們,海爾總部怎么樣...確為二監(jiān)?
來(lái)源:V2EX
發(fā)布時(shí)間:2020-08-27 17:10:14
HDC調(diào)試需求開(kāi)發(fā)(15萬(wàn)預(yù)算),能者速來(lái)!>>> 請(qǐng)問(wèn)如何用vs2013或eclipse構(gòu)建一個(gè)c++,boost項(xiàng)目,
來(lái)源:開(kāi)源中國(guó)
發(fā)布時(shí)間:2014-07-05 17:30:00
HDC調(diào)試需求開(kāi)發(fā)(15萬(wàn)預(yù)算),能者速來(lái)!>>>
1、47 error LNK2019: 無(wú)法解析的外部符號(hào) __InterlockedDecrement ,該符號(hào)在函數(shù) "public: void __thiscall boost::detail::sp_counted_base::release(void)" ( ?release@sp_counted_base @detail @boost@@QAEXXZ) 中被引用
2、47 fatal error LNK1104: 無(wú)法打開(kāi)文件“l(fā)ibboost_thread-vc71-mt-sgd-1_55.lib”
出現(xiàn)的問(wèn)題分別如上所示......請(qǐng)大神回答則個(gè)
來(lái)源:開(kāi)源中國(guó)
發(fā)布時(shí)間:2014-06-18 15:21:00
今年大四了,去年準(zhǔn)備考研也沒(méi)秋招,現(xiàn)在考研分?jǐn)?shù)還沒(méi)出來(lái)但是感覺(jué)有點(diǎn)懸,尋思著考不上有合適的工作的話,就不二戰(zhàn)了。最近看不少公司開(kāi)始春招了,老哥們推薦一哈?投下簡(jiǎn)歷試試
來(lái)源:V2EX
發(fā)布時(shí)間:2020-08-27 17:09:58
HDC調(diào)試需求開(kāi)發(fā)(15萬(wàn)預(yù)算),能者速來(lái)!>>>
很多很多時(shí)候, 我們都需要用到http協(xié)議, 而在c/c++中, 好用的開(kāi)源http開(kāi)發(fā)庫(kù)大概沒(méi)幾個(gè), 比較全面的就 屬curl了, 我相信這個(gè)庫(kù)很多人都使用過(guò), 不過(guò)它的api接口在我看來(lái)并不友好, 繁瑣和難以理解的選項(xiàng)非常之多, 并且關(guān)鍵一點(diǎn), 不支持異步!
所以, 要 使用curl 只能開(kāi)線程! 不用我說(shuō), 線程顯然是一種昂貴的資源, 過(guò)多的線程會(huì)導(dǎo)致cpu頻繁的切換線程上下文而不是干實(shí)事, 這個(gè)代價(jià)是很大的. 這也正是異步的好處之一, 可以避免過(guò)多的線程.
異步在當(dāng)前很多應(yīng)用的需求當(dāng)中, 異步幾乎必備的特性了, 好吧, 終于有一個(gè) 叫node.js的家伙出現(xiàn)了, 并且可 以很好的支持異步, 但畢竟在c++開(kāi)發(fā)環(huán)境下, 若為了http這樣的功能而引 入它的話, 似乎有點(diǎn)小題大作了, 而且node.js是通過(guò)腳本來(lái)執(zhí)行的, 這必將使得效率下降.
這真是太糟糕了!
我是一個(gè)有代碼潔癖的人, 顯然最看不得到處飛線程這種事, 由其是僅僅為了下載一點(diǎn)點(diǎn)數(shù)據(jù), 就飛一個(gè)線 程, 我 是最接受不了的. 在許多群友的鼓勵(lì)下, 我終于開(kāi)始了avhttp項(xiàng)目的開(kāi)發(fā), 并設(shè)定了最初的一個(gè)目標(biāo),那就是:
一. 開(kāi)源!!! 并使用boost授權(quán)( http://www.boost.org/LICENSE_1_0.txt )作為開(kāi)源協(xié)議.
二. 支持http/1.0協(xié)議.
三. 支持http/1.1協(xié)議, 其中包括chunked支持, gzi壓縮等支持.
四. 支持代理, 包括socks4/socks5/http代理( 天朝必備 ).
五. 異步支持, 基于asio, 可以獲得良好的異步支持.
六. 并發(fā)下載, 斷點(diǎn)續(xù)傳, 這一塊是在基于上面5點(diǎn)的基礎(chǔ)上的.
七. 簡(jiǎn)單易用的接口.
經(jīng)過(guò)持續(xù)的開(kāi)發(fā)一直到今天, 總算把這個(gè)目標(biāo)實(shí)現(xiàn)了.
詳細(xì)見(jiàn): http://www.oschina.net/p/avhttp 或直接 https://github.com/avplayer/avhttp
當(dāng)前編譯測(cè)試狀態(tài)
感嘆: 開(kāi)源真是累啊! 沒(méi)啥好處活受罪! 所以, 拋磚還請(qǐng)輕點(diǎn).
來(lái)源:開(kāi)源中國(guó)
發(fā)布時(shí)間:2013-05-12 00:04:00
大部分公司今天復(fù)工
本地或者過(guò)年期間未離開(kāi)青島的可以正常到公司辦公,但是不開(kāi)空調(diào),開(kāi)窗通風(fēng),全天戴口罩
路上交通比較通暢,幾個(gè)市區(qū)主要路口,本地牌照大部分放行,針對(duì)外地牌照攔下測(cè)體溫放行
公交車車次開(kāi)始增多,但是乘客稀疏,推測(cè)是外地返青在家辦公,能坐私家車都坐私家車了
來(lái)源:V2EX
發(fā)布時(shí)間:2020-08-27 17:09:49
HDC調(diào)試需求開(kāi)發(fā)(15萬(wàn)預(yù)算),能者速來(lái)!>>>
描述:
我用的 boost::regex_match()來(lái)比較傳入字符串,我傳入要查找的字符串是“中”,然后要和“手心手背”字符串比較,結(jié)果匹配成功。
原因:
中文字符占2個(gè)字節(jié),匹配時(shí),把前個(gè)字符的后半部分與前個(gè)字符的前半部分,組成了查找字符的16進(jìn)制代碼,如:“手心”字符在內(nèi)存中的16進(jìn)制為“ca d6 d0 c4”,而“中”字符在內(nèi)存中的16進(jìn)制為“d6 d0”,所以用 boost::regex_match()來(lái)比較“手心手背”里面是否包含“中”返回true。
請(qǐng)問(wèn),怎樣解決這個(gè)問(wèn)題呢?
剛接觸boost,問(wèn)的問(wèn)題,比較幼稚,希望大俠不惜賜教,謝謝??!
來(lái)源:開(kāi)源中國(guó)
發(fā)布時(shí)間:2014-05-10 17:27:00
看了前面的人發(fā)的群,后來(lái)都沒(méi)有更新了,也不知道加了多少人,怎么再加,我只好自己也建個(gè)群,拉些青島的小伙伴們了
來(lái)源:V2EX
發(fā)布時(shí)間:2020-08-27 17:09:34
HDC調(diào)試需求開(kāi)發(fā)(15萬(wàn)預(yù)算),能者速來(lái)!>>>
Ubuntu 14.04 Server上有Squid 代理和Web服務(wù),網(wǎng)絡(luò)連接數(shù)一上來(lái)Web服務(wù)和Squid就開(kāi)始各種timeout和connection refused。但服務(wù)器內(nèi)存、CPU、帶寬等資源都很充足,這是啥原因呢?
附:
netstat -n | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}'
LAST_ACK 310
SYN_RECV 56
CLOSE_WAIT 69
ESTABLISHED 2143
FIN_WAIT1 1202
FIN_WAIT2 59
CLOSING 555
SYN_SENT 1557
TIME_WAIT 2942
來(lái)源:開(kāi)源中國(guó)
發(fā)布時(shí)間:2016-01-08 09:27:00
HDC調(diào)試需求開(kāi)發(fā)(15萬(wàn)預(yù)算),能者速來(lái)!>>>
官方文檔 http://www.squid-cache.org/Versions/v3/3.1/cfgman/acl.html
acl aclname maxconn number # This will be matched when the client's IP address has # more than TCP connections established. [fast] # NOTE: This only measures direct TCP links so X-Forwarded-For # indirect clients are not counted. 這里是對(duì)單一ip限制總連接數(shù)
acl conn_limit maxconn 10
acl limit_ip 192.168.3.0/24
http_access deny limit_ip conn_limit
請(qǐng)問(wèn):
上面寫(xiě)法 是限制192.168.3.0/24中 每個(gè)ip 最大連接10,還是192.168.3.0/24 所有ip 最大連接數(shù)10
來(lái)源:開(kāi)源中國(guó)
發(fā)布時(shí)間:2015-08-14 18:14:00
想窮游一下青島,請(qǐng)問(wèn)有哪些免費(fèi) /便宜的游樂(lè)場(chǎng) /景區(qū)?還有哪些好吃的?
來(lái)源:V2EX
發(fā)布時(shí)間:2020-08-27 17:09:08
HDC調(diào)試需求開(kāi)發(fā)(15萬(wàn)預(yù)算),能者速來(lái)!>>>
現(xiàn)狀
現(xiàn)在我們集團(tuán)利用squid為多個(gè)網(wǎng)站做反向代理,如:a.com和b.com,現(xiàn)在我們想將集體的多個(gè)網(wǎng)站實(shí)現(xiàn)HTTPS
問(wèn)題:
現(xiàn)在我的配置如下:
https_port 443 cert=/etc/squid/server/ssl/server.crt key=/etc/squid/server/ssl/server.key defaultsite=a.com
現(xiàn)在只能實(shí)現(xiàn) https://a.com ,即使輸入 https://b.com 也會(huì)跳轉(zhuǎn)到 https://a.com 的網(wǎng)頁(yè)
需求:
請(qǐng)教一下能不能實(shí)現(xiàn)squid為多個(gè)網(wǎng)站做HTTPS反向代理?
來(lái)源:開(kāi)源中國(guó)
發(fā)布時(shí)間:2017-03-17 13:34:00
單位的一管理平臺(tái)是委托海信開(kāi)發(fā)的,分 PC 網(wǎng)頁(yè)平臺(tái)和 app 端,APP 前段時(shí)間更新升級(jí)初始密碼,三四天還沒(méi)完成,理由是數(shù)據(jù)量較大。。。,其實(shí)總共用戶也就幾千而已;網(wǎng)頁(yè)頁(yè)面端問(wèn)題重生,很多問(wèn)題反復(fù)提始終得不到解決,某些輸入框經(jīng)常反應(yīng)遲緩,輸入 A 輸入框內(nèi)顯示 B,點(diǎn)擊搜索得到的搜索結(jié)果好在是 A ;讓其更新個(gè)回車即進(jìn)入搜索,遲遲解決不了。。。 想問(wèn)下海信軟件部門的水平,能達(dá)到是青島地區(qū)程序員水平平均水平嗎? 這水平還建設(shè)智慧城市,LOW 爆了,簡(jiǎn)直!
來(lái)源:V2EX
發(fā)布時(shí)間:2020-08-27 17:08:48
HDC調(diào)試需求開(kāi)發(fā)(15萬(wàn)預(yù)算),能者速來(lái)!>>>
請(qǐng)問(wèn)高手:
我配置的squid2.7+radius認(rèn)證
出錯(cuò);錯(cuò)誤如下:
[root@proxy etc]# /usr/local/squid/libexec/squid_radius_auth -f squid_radius_auth.conf
test @test
ERR
為什么會(huì)無(wú)法通過(guò)radius服務(wù)器測(cè)試
來(lái)源:開(kāi)源中國(guó)
發(fā)布時(shí)間:2012-11-10 10:21:00
HDC調(diào)試需求開(kāi)發(fā)(15萬(wàn)預(yù)算),能者速來(lái)!>>>
在此,我們要配置一個(gè)只對(duì)內(nèi)部網(wǎng)絡(luò)提供代理服務(wù)的Proxy?Server。它將用戶分為高級(jí)用戶和普通用戶兩種,對(duì)高級(jí)用戶采用網(wǎng)卡物理地址識(shí)別的方法,普通用戶則需要輸入用戶名和口令才能正常使用。高級(jí)用戶沒(méi)有訪問(wèn)時(shí)間和文件類型的限制,而普通用戶只在上班時(shí)可以訪問(wèn)以及一些其它的限制。?
安裝?
可以從Squid站點(diǎn)www.squid-cache.org獲取該軟件的源代碼安裝包,包括gz和bz2兩種壓縮方式。也可以使用Linux的發(fā)行版,如Red?Hat提供的RPM包。?
RPM方式安裝很簡(jiǎn)單,命令如下:?
$?rpm?-ivh?Squid-2.x.STALBx.i386.rpm?
不過(guò)筆者認(rèn)為,即便是系統(tǒng)中已經(jīng)默認(rèn)安裝了Squid,也應(yīng)當(dāng)先刪掉然后安裝最新的源代碼包。因?yàn)殚_(kāi)源軟件會(huì)不斷修正問(wèn)題、提供更新的功能,使用最新版本可以保證最高的性能及安全,而且源代碼方式可以完全定制系統(tǒng)。不過(guò)STABLE穩(wěn)定版、DEVEL版通常是提供給開(kāi)發(fā)人員測(cè)試程序的,假定下載了最新的穩(wěn)定版squid-2.5.STABLE2.tar.gz,用以下命令解開(kāi)壓縮包:?
$?tar?xvfz?squid-2.5.STABLE.tar.gz?
用bz2方式壓縮的包可能體積更小,相應(yīng)的命令是:?
$?tar?xvfj?squid-2.5.STABLE.tar.bz2?
然后,進(jìn)入相應(yīng)目錄對(duì)源代碼進(jìn)行配置和編譯,命令如下:?
$?cd?squid-2.5.STABLE2?
配置命令configure有很多選項(xiàng),如果不清楚可先用“-help”查看。通常情況下,用到的選項(xiàng)有以下幾個(gè):?
--prefix=/web/squid?
#指定Squid的安裝位置,如果只指定這一選項(xiàng),那么該目錄下會(huì)有bin、sbin、man、conf等目錄,而主要的配置文件此時(shí)在conf子目錄中。為便于管理,最好用參數(shù)--sysconfdir=/etc把這個(gè)文件位置配置為/etc。?
--enable-storeio=ufs,null?
#使用的文件系統(tǒng)通常是默認(rèn)的ufs,不過(guò)如果想要做一個(gè)不緩存任何文件的代理服?
務(wù)器,就需要加上null文件系統(tǒng)。?
--enable-arp-acl?
#這樣可以在規(guī)則設(shè)置中直接通過(guò)客戶端的MAC地址進(jìn)行管理,防止客戶使用IP欺騙。?
--enable-err-languages="Simplify_Chinese"?
--enable-default-err-languages="Simplify_Chinese"?
#上面兩個(gè)選項(xiàng)告訴Squid編入并使用簡(jiǎn)體中文錯(cuò)誤信息。?
--enable-linux-netfilter?
#允許使用Linux的透明代理功能。?
--enable-underscore?
#允許解析的URL中出現(xiàn)下劃線,因?yàn)槟J(rèn)情況下Squid會(huì)認(rèn)為帶下劃線的URL是?
非法的,并拒絕訪問(wèn)該地址。?
整個(gè)配置編譯過(guò)程如下:?
./configure?--prefix=/var/squid?
--sysconfdir=/etc?
--enable-arp-acl?
--enable-linux-netfilter?
--enable-pthreads?
--enable-err-language="Simplify_Chinese"?
--enable-storeio=ufs,null?
--enable-default-err-language="Simplify_Chinese"?
--enable-auth="basic"?
--enable-baisc-auth-helpers="NCSA"?
--enable-underscore?
其中一些選項(xiàng)有特殊作用,將在下面介紹它們。?
最后執(zhí)行make和make?install兩條命令,將源代碼編譯為可執(zhí)行文件,并拷貝到指定位置。?
基本配置?
安裝完成后,接下來(lái)要對(duì)Squid的運(yùn)行進(jìn)行配置(不是前面安裝時(shí)的配置)。所有項(xiàng)目都在squid.conf中完成。Squid自帶的squid.conf包括非常詳盡的說(shuō)明,相當(dāng)于一篇用戶手冊(cè),對(duì)配置有任何疑問(wèn)都可以參照解決。?
在這個(gè)例子中,代理服務(wù)器同時(shí)也是網(wǎng)關(guān),內(nèi)部網(wǎng)絡(luò)接口eth0的IP地址為192.168.0.1,外部網(wǎng)絡(luò)接口eth1的IP地址為202.103.x.x。下面是一個(gè)基本的代理所需要配置選項(xiàng):?
http_port?192.168.0.1:3128?
默認(rèn)端口是3128,當(dāng)然也可以是任何其它端口,只要不與其它服務(wù)發(fā)生沖突即可。為了安全起見(jiàn),在前面加上IP地址,Squid就不會(huì)監(jiān)聽(tīng)外部的網(wǎng)絡(luò)接口。?
下面的配置選項(xiàng)是服務(wù)器管理者的電子郵件,當(dāng)錯(cuò)誤發(fā)生時(shí),該地址會(huì)顯示在錯(cuò)誤頁(yè)面上,便于用戶聯(lián)系:?
cache_mgr?start@soocol.com?
以下這些參數(shù)告訴Squid緩存的文件系統(tǒng)、位置和緩存策略:?
cache_dir?ufs?/var/squid?
cache_mem?32MB?
cache_swap_low?90?
cache_swap_high?95?
在這里,Squid會(huì)將/var/squid目錄作為保存緩存數(shù)據(jù)的目錄,每次處理的緩存大小是32兆字節(jié),當(dāng)緩存空間使用達(dá)到95%時(shí),新的內(nèi)容將取代舊的而不直接添加到目錄中,直到空間又下降到90%才停止這一活動(dòng)。如果不想Squid緩存任何文件,如某些存儲(chǔ)空間有限的專有系統(tǒng),可以使用null文件系統(tǒng)(這樣不需要那些緩存策略):?
cache_dir?null?/tmp?
下面的幾個(gè)關(guān)于緩存的策略配置中,較主要的是第一行,即用戶的訪問(wèn)記錄,可以通過(guò)分析它來(lái)了解所有用戶訪問(wèn)的詳盡地址:?
cache_access_log?/var/squid/access.log?
cache_log?/var/squid/cache.log?
cache_store_log?/var/squid/store.log?
下面這行配置是在較新版本中出現(xiàn)的參數(shù),告訴Squid在錯(cuò)誤頁(yè)面中顯示的服務(wù)器名稱:?
visible_hostname?No1.proxy?
以下配置告訴Squid如何處理用戶,對(duì)每個(gè)請(qǐng)求的IP地址作為單獨(dú)地址處理:?
client_mask?255.255.255.255?
如果是普通代理服務(wù)器,以上的配置已經(jīng)足夠。但是很多Squid都被用來(lái)做透明代理。所謂透明代理,就是客戶端不知道有代理服務(wù)器的存在,當(dāng)然也不需要進(jìn)行任何與代理有關(guān)的設(shè)置,從而大大方便了系統(tǒng)管理員。相關(guān)的選項(xiàng)有以下幾個(gè):?
httpd_accel_host?virtual?
httpd_accel_port?80?
httpd_accel_with_proxy?on?
httpd_accel_user_host_header?on?
在Linux上,可以用iptables/ipchains直接將對(duì)Web端口80的請(qǐng)求直接轉(zhuǎn)發(fā)到Squid端口3128,由Squid接手,而用戶瀏覽器仍然認(rèn)為它訪問(wèn)的是對(duì)方的80端口。例如以下這條命令:?
iptables?-t?nat?-A?PREROUTING?-s?192.168.0.200/32?-p?tcp?--dport?80?-j?REDIRECT?3128?
就是將192.168.0.200的所有針對(duì)80端口的訪問(wèn)重定向到3128端口。?
所有設(shè)置完成后,關(guān)鍵且重要的任務(wù)是訪問(wèn)控制。Squid支持的管理方式很多,使用起來(lái)也非常簡(jiǎn)單(這也是有人寧愿使用不做任何緩存的Squid,也不愿意單獨(dú)使用iptables的原因)。Squid可以通過(guò)IP地址、主機(jī)名、MAC地址、用戶/密碼認(rèn)證等識(shí)別用戶,也可以通過(guò)域名、域后綴、文件類型、IP地址、端口、URL匹配等控制用戶的訪問(wèn),還可以使用時(shí)間區(qū)間對(duì)用戶進(jìn)行管理,所以訪問(wèn)控制是Squid配置中的重點(diǎn)。Squid用ACL(Access?Control?List,訪問(wèn)控制列表)對(duì)訪問(wèn)類型進(jìn)行劃分,用http_access?deny?或allow進(jìn)行控制。根據(jù)需求首先定義兩組用戶advance和normal,還有代表所有未指明的用戶組all及不允許上網(wǎng)的baduser,配置代碼如下:?
acl?advance?192.168.0.2-192.168.0.10/32?
acl?normal?src?192.168.0.11-192.168.0.200/32?
acl?baduser?src?192.168.0.100/32?
acl?baddst?dst?www.soocol.com?
acl?all?src?0.0.0.0/0?
http_access?deny?baduser?
http_access?allow?advance?
http_access?allow?normal?
可以看出,ACL的基本格式如下:?
acl?列表名稱?控制方式?控制目標(biāo)?
比如acl?all?src?0.0.0.0/0,其名稱是all,控制方式是src源IP地址,控制目標(biāo)是0.0.0.0/0的IP地址,即所有未定義的用戶。出于安全考慮,總是在最后禁止這個(gè)列表。?
下面這個(gè)列表代表高級(jí)用戶,包括IP地址從192.168.0.2到192.168.0.10的所有計(jì)算機(jī):?
acl?advance?192.168.0.2-192.168.0.20/32?
下面這個(gè)baduser列表只包含一臺(tái)計(jì)算機(jī),其IP地址是192.168.0.100:?
acl?baduser?192.168.0.100/32?
ACL寫(xiě)完后,接下來(lái)要對(duì)它們分別進(jìn)行管理,代碼如下:?
http_access?deny?baduser?
http_access?allow?advance?
http_access?allow?normal?
上面幾行代碼告訴Squid不允許baduser組訪問(wèn)Internet,但advance、normal組允許(此時(shí)還沒(méi)有指定詳細(xì)的權(quán)限)。由于Squid是按照順序讀取規(guī)則,會(huì)首先禁止baduser,然后允許normal。如果將兩條規(guī)則順序顛倒,由于baduser在normal范圍中,Squid先允許了所有的normal,那么再禁止baduser就不會(huì)起作用。?
特別要注意的是,Squid將使用allow-deny-allow-deny……這樣的順序套用規(guī)則。例如,當(dāng)一個(gè)用戶訪問(wèn)代理服務(wù)器時(shí),Squid會(huì)順序測(cè)試Squid中定義的所有規(guī)則列表,當(dāng)所有規(guī)則都不匹配時(shí),Squid會(huì)使用與最后一條相反的規(guī)則。就像上面這個(gè)例子,假設(shè)有一個(gè)用戶的IP地址是192.168.0.201,他試圖通過(guò)這臺(tái)代理服務(wù)器訪問(wèn)Internet,會(huì)發(fā)生什么情況呢?我們會(huì)發(fā)現(xiàn),他能夠正常訪問(wèn),因?yàn)镾quid找遍所有訪問(wèn)列表也沒(méi)有和192.168.0.201有關(guān)的定義,便開(kāi)始應(yīng)用規(guī)則,而最后一條是deny,那么Squid默認(rèn)的下一條處理規(guī)則是allow,所以192.168.0.201反而能夠訪問(wèn)Internet了,這顯然不是我們希望的。所以在所有squid.conf中,最后一條規(guī)則永遠(yuǎn)是http_access?deny?all,而all就是前面定義的“src?0.0.0.0”。?
高級(jí)控制?
前面說(shuō)過(guò),Squid的控制功能非常強(qiáng)大,只要理解Squid的行為方式,基本上就能夠滿足所有的控制要求。下面就一步一步來(lái)了解Squid是如何進(jìn)行控制管理的。?
通過(guò)IP地址來(lái)識(shí)別用戶很不可靠,比IP地址更好的是網(wǎng)卡的MAC物理地址。要在Squid中使用MAC地址識(shí)別,必須在編譯時(shí)加上“--enable-arp-acl”選項(xiàng),然后可以通過(guò)以下的語(yǔ)句來(lái)識(shí)別用戶:?
acl?advance?arp?00:01:02:1f:2c:3e?00:01:02:3c:1a:8b?...?
它直接使用用戶的MAC地址,而MAC地址一般是不易修改的,即使有普通用戶將自己的IP地址改為高級(jí)用戶也無(wú)法通過(guò),所以這種方式比IP地址可靠得多。?
假如不想讓用戶訪問(wèn)某個(gè)網(wǎng)站應(yīng)該怎么做呢?可以分為兩種情況:一種是不允許訪問(wèn)某個(gè)站點(diǎn)的某個(gè)主機(jī),比如ok的主機(jī)是ok.sina.com.cn,而其它的新浪資源卻是允許訪問(wèn)的,那么ACL可以這樣寫(xiě):?
acl?sinapage?dstdomain?ok.sina.com.cn?
...?...?
http_access?deny?ok?
...?...?
由此可以看到,除了ok,其它如www.sina.com.cn、news.sina.com.cn都可以正常訪問(wèn)。?
另一種情況是整個(gè)網(wǎng)站都不許訪問(wèn),那么只需要寫(xiě)出這個(gè)網(wǎng)站共有的域名即可,配置如下:?
acl?qq?dstdomain?.tcccent.com.cn?
注意tcccent前面的“.”,正是它指出以此域名結(jié)尾的所有主機(jī)都不可訪問(wèn),否則就只有tcccent.com.cn這一臺(tái)主機(jī)不能訪問(wèn)。?
如果想禁止對(duì)某個(gè)IP地址的訪問(wèn),如202.118.2.182,可以用dst來(lái)控制,代碼如下:?
acl?badaddr?dst?202.118.2.182?
當(dāng)然,這個(gè)dst也可以是域名,由Squid查詢DNS服務(wù)器將其轉(zhuǎn)換為IP。?
還有一種比較廣泛的控制是文件類型。如果不希望普通用戶通過(guò)代理服務(wù)器下載MP3、AVI等文件,完全可以對(duì)他們進(jìn)行限制,代碼如下:?
acl?mmxfile?urlpath_regex?\.mp3$?\.avi$?\.exe$?
http_access?deny?mmxfile?
看到regex,很多讀者應(yīng)該心領(lǐng)神會(huì),因?yàn)檫@條語(yǔ)句使用了標(biāo)準(zhǔn)的規(guī)則表達(dá)式(又叫正則表達(dá)式)。它將匹配所有以.mp3、.avi等結(jié)尾的URL請(qǐng)求,還可以用-i參數(shù)忽略大小寫(xiě),例如以下代碼:?
acl?mmxfile?urlpath_regex?-i?\.mp3$?
這樣,無(wú)論是.mp3還是.MP3都會(huì)被拒絕。當(dāng)然,-i參數(shù)適用于任何可能需要區(qū)分大小寫(xiě)的地方,如前面的域名控制。?
如果想讓普通用戶只在上班時(shí)間可以上網(wǎng),而且是每周的工作日,用Squid應(yīng)當(dāng)如何處理呢?看看下面的ACL定義:?
acl?worktime?time?MTWHF?8:30-12:00?14:00-18:00?
http_access?deny?!worktime?
首先定義允許上網(wǎng)的時(shí)間是每周工作日(星期一至星期五)的上午和下午的固定時(shí)段,然后用http_access?定義所有不在這個(gè)時(shí)間段內(nèi)的請(qǐng)求都是不允許的。?
或者為了保證高級(jí)用戶的帶寬,希望每個(gè)用戶的并發(fā)連接不能太多,以免影響他人,也可以通過(guò)Squid控制,代碼如下:?
acl?conncount?maxconn?3?
http_access?deny?conncount?normal?
http_access?allow?normal?
這樣,普通用戶在某個(gè)固定時(shí)刻只能同時(shí)發(fā)起三個(gè)連接,從第四個(gè)開(kāi)始,連接將被拒絕。?
總之,Squid的ACL配置非常靈活、強(qiáng)大,更多的控制方式可以參考squid.conf.default。?
認(rèn)證?
用戶/密碼認(rèn)證為Squid管理提供了更多便利,最常用的認(rèn)證方式是NCSA。從Squid?2.5版本開(kāi)始,NCSA認(rèn)證包含在了basic中,而非以前單獨(dú)的認(rèn)證模塊。下面來(lái)看看實(shí)現(xiàn)認(rèn)證的具體操作。?
首先在編譯時(shí)配置選項(xiàng)應(yīng)包括以下配置:?
--enable-auth="basic"?--enable-basic-auth-helpers="NCSA"?
“make?install”以后,需要將“helpers/basic_auth/NCSA/ncsa_auth”拷貝到用戶可執(zhí)行目錄中,如/usr/bin(如果在該目錄中找不到這個(gè)執(zhí)行文件,在編譯時(shí)請(qǐng)使用make?all而不是make,或者直接在該目錄中執(zhí)行make),然后需要借助Apache的密碼管理程序htpasswd來(lái)生成用戶名/密碼對(duì)應(yīng)的文件,就像下面這行代碼:?
htpasswd?-c?/var/squid/etc/password?guest?
在輸入兩遍guest用戶的密碼后,一個(gè)guest用戶就生成了。如果以后需要添加用戶,把上面的命令去掉-c參數(shù)再運(yùn)行即可。?
Squid?2.5在認(rèn)證處理上有了較大的改變,這里就只討論2.5版本的處理方法,2.4及以下版本請(qǐng)參考squid.conf.default。在2.5版的squid.conf中,包括以下幾個(gè)相關(guān)選項(xiàng):?
#該選項(xiàng)指出了認(rèn)證方式(basic)、需要的程序(ncsa_auth)和?
對(duì)應(yīng)的密碼文件(password)?
auth_param?basic?program?/usr/bin/ncsa_auth?/var/squid/etc/password?
#?指定認(rèn)證程序的進(jìn)程數(shù)?
auth_param?basic?children?5?
#?瀏覽器顯示輸入用戶/密碼對(duì)話框時(shí)的領(lǐng)域內(nèi)容?
auth_param?basic?realm?My?Proxy?Caching?Domain?
#?基本的認(rèn)證有效時(shí)間?
auth_param?basic?credentialsttl?2?hours?
#?普通用戶需要通過(guò)認(rèn)證才能訪問(wèn)Internet?
acl?normal?proxy_auth?REQUIRED?
http_access?allow?normal?
通過(guò)以上的配置即可完成認(rèn)證工作。有的讀者可能要問(wèn):認(rèn)證只針對(duì)普通用戶,而高級(jí)用戶是直接上網(wǎng)的,該怎么處理呢?其實(shí),這兩種用戶是可以共存的。如前所述,Squid是順序處理http_access的,所以在http_access處理過(guò)程中,如果先處理normal用戶,那么當(dāng)前用戶無(wú)論是否屬于高級(jí)用戶,都會(huì)被要求進(jìn)行認(rèn)證;相反如果先處理高級(jí)用戶,剩下的就只有需要認(rèn)證的普通用戶了。例如以下配置代碼:?
...?
http_access?allow?normal?(需要認(rèn)證)?
http_access?allow?advance?(不需要認(rèn)證)?
...?
不管是否為noauth用戶,都要求進(jìn)行用戶名/密碼驗(yàn)證。正確的方法是將二者位置交換,代碼如下:?
...?
http_access?allow?advance?
http_access?allow?normal?
...?
這時(shí),高級(jí)用戶不會(huì)受到任何影響。?
總結(jié)?
下面把整個(gè)squid.conf總結(jié)一下:?
#?服務(wù)器配置?
http_port?192.168.0.1:3128?
cache_mgr?start@soocol.com?
cache_dir?null?/tmp?
cache_access_log?/var/squid/access.log?
cache_log?/var/squid/cache.log?
cache_store_log?/var/squid/store.log?
visible_hostname?No1.proxy?
client_mask?255.255.255.255?
httpd_accel_host?virtual?
httpd_accel_port?80?
httpd_accel_with_proxy?on?
httpd_accel_user_host_header?on?
#?用戶分類?
acl?advance?arp?00:01:02:1f:2c:3e?00:01:02:3c:1a:8b?...?
acl?normal?proxy_auth?REQUIED?
acl?all?src?0.0.0.0?
#?行為分類?
acl?mmxfile?urlpath_regex?\.mp3$?\.avi$?\.exe$?
acl?conncount?maxconn?3?
acl?worktime?time?MTWHF?8:30-12:00?14:00-18:00?
acl?sinapage?dstdomain?ok.sina.com.cn?
acl?qq?dstdomain?.tcccent.com.cn?
#?處理?
http_access?allow?advance?
http_access?deny?conncount?normal?
http_access?deny?!worktime?
http_access?deny?mmxfile?
http_access?deny?sinapage?
http_access?deny?qq?
http_access?allow?normal?
配置后的狀況是,advance組可以不受任何限制地訪問(wèn)Internet,而normal組則只能在工作時(shí)間上網(wǎng),而且不能下載多媒體文件,不能訪問(wèn)某些特定的站點(diǎn),而且發(fā)送請(qǐng)求不能超過(guò)3個(gè)。?
通過(guò)本文的介紹,它可以了解Squid的基本能力。當(dāng)然,它的能力遠(yuǎn)不止此,可以建立強(qiáng)大的代理服務(wù)器陣列,可以幫助本地的Web服務(wù)器提高性能,可以提高本地網(wǎng)絡(luò)的安全性等。要想發(fā)揮它的功效,還需要進(jìn)一步控制。
來(lái)源:開(kāi)源中國(guó)
發(fā)布時(shí)間:2009-05-05 17:38:00
打算入一個(gè) 10 寸的電子書(shū), 想看一下實(shí)際效果所以不想網(wǎng)購(gòu), 有誰(shuí)知道青島哪里有實(shí)體店賣這個(gè)。
來(lái)源:V2EX
發(fā)布時(shí)間:2020-08-27 17:08:38
HDC調(diào)試需求開(kāi)發(fā)(15萬(wàn)預(yù)算),能者速來(lái)!>>> 我這里設(shè)置的是Web服務(wù)器和Squid服務(wù)器在同一天機(jī)器上,這臺(tái)機(jī)器配置一個(gè)透明Proxy,假如本地Web地址為*.haha.com這個(gè)網(wǎng)站,當(dāng)用戶訪問(wèn)我這個(gè)網(wǎng)站的時(shí)候不經(jīng)過(guò)代理直接訪問(wèn),訪問(wèn)其他的網(wǎng)站如:www.oschina.net就需要代理這個(gè)怎么配置呢?
來(lái)源:開(kāi)源中國(guó)
發(fā)布時(shí)間:2016-02-19 20:12:00
之前回青島待過(guò)半年,問(wèn)我待在哪兒。那我告訴你:世界五百?gòu)?qiáng)-青島二監(jiān)-海爾。我覺(jué)得我在海爾的所見(jiàn)所聞可以寫(xiě)本小說(shuō)了。不提這個(gè)了。
北京回去的現(xiàn)在怎么樣了?哪兒高就呢。還習(xí)慣不
來(lái)源:V2EX
發(fā)布時(shí)間:2020-08-27 17:08:30
在北京呆了三年。。 房租是越來(lái)越貴。有回家的打算了。 山東臨沂人。首選青島。 不知道 Java 最近行情怎么樣。。 有沒(méi)有靠譜的公司
來(lái)源:V2EX
發(fā)布時(shí)間:2020-08-27 17:08:21
HDC調(diào)試需求開(kāi)發(fā)(15萬(wàn)預(yù)算),能者速來(lái)!>>> 服務(wù)器配置:2臺(tái)獨(dú)立IP的5M寬帶的Linux 服務(wù)器(A和B)需求:對(duì)外只提供一個(gè)IP供資源請(qǐng)求(A),如何做到當(dāng)在A請(qǐng)求資源時(shí)寬帶占用超過(guò)80%(假設(shè)80%),會(huì)被重定向到B服務(wù)器去請(qǐng)求資源,而不再占用A服務(wù)器的帶寬?(此操作是動(dòng)態(tài)進(jìn)行的) 有什么工具或者方法?
來(lái)源:開(kāi)源中國(guó)
發(fā)布時(shí)間:2016-01-08 11:04:00
HDC調(diào)試需求開(kāi)發(fā)(15萬(wàn)預(yù)算),能者速來(lái)!>>>
倒在這個(gè)面試題上,郁悶。。。。
有3個(gè)類,class A, class B(線程類), class C(線程類)
大概是這樣的。
class B : public Thread
{
int i = 0;
while(i < 1000)
{
i++;
//這里需要把 i 傳到A類去,不能用new A的方式,因?yàn)椴荒苤貜?fù)執(zhí)行A類的構(gòu)造函數(shù)。
}
}
class C : public Thread
{
int i = 0;
while(i < 1000)
{
i++;
//這里需要把 i 傳到A類去,不能用new A的方式,因?yàn)椴荒苤貜?fù)執(zhí)行A類的構(gòu)造函數(shù)。
}
}
class A
{
public:
int fromB(int _bi);
int fromC(int _ci);
int Add(int bi, int _ci);
}
B類線程和C類線程同時(shí)執(zhí)行,假定一種環(huán)境,B類里while循環(huán)是i為1的時(shí)候,傳給A類,C類里while循環(huán)是i為1的時(shí)候,傳給A類,那么這個(gè)時(shí)候A類里執(zhí)行Add,就是把B類傳過(guò)來(lái)的i和C類傳過(guò)來(lái)的i相加,也就是等于2。
請(qǐng)問(wèn)該如何實(shí)現(xiàn)?
來(lái)源:開(kāi)源中國(guó)
發(fā)布時(shí)間:2013-12-18 23:59:00
CPU AMD R5 3500X主板 微星 B450M MOTOR MAX 迫擊炮 顯卡 銘瑄 GTX1660 Super iCraft 6G 顯示器 華碩 TUF Gaming VG249Q 23.8 內(nèi)存 金士頓 DDR4 3200 8G*2 SSD 三星 970 EVO 512G 硬盤(pán) 希捷 2T 電源 航嘉 金牌 500W WD500K 機(jī)箱 酷冷至尊 Q300L 自己不玩游戲, 已經(jīng)好多年沒(méi)關(guān)心過(guò)電腦配置了. 親戚小孩用來(lái)玩游戲. 請(qǐng)各位看看配置, 搭配有什么不合理的地方嗎? 預(yù)算 6K 上下.
來(lái)源:V2EX
發(fā)布時(shí)間:2020-08-27 17:08:08
HDC調(diào)試需求開(kāi)發(fā)(15萬(wàn)預(yù)算),能者速來(lái)!>>>
如題.
另外,有沒(méi)有這種界面庫(kù):
界面布局使用xml等語(yǔ)言進(jìn)行設(shè)計(jì),
程序?qū)懞煤笳{(diào)用界面庫(kù)按照設(shè)計(jì)好的界面布局進(jìn)行加載皮膚.
來(lái)源:開(kāi)源中國(guó)
發(fā)布時(shí)間:2013-12-11 12:57:00
HDC調(diào)試需求開(kāi)發(fā)(15萬(wàn)預(yù)算),能者速來(lái)!>>>
目前有編譯器支持C++17的特性嗎
來(lái)源:開(kāi)源中國(guó)
發(fā)布時(shí)間:2017-02-12 08:18:00
家里一臺(tái) Tp-Link wrd9661, 今天打雷跳閘之后就用不了,提示 WAN 無(wú)網(wǎng)絡(luò),應(yīng)該是雷打壞了,據(jù)說(shuō)可以刷固件將 LAN 口改成 WAN 口,但是看 openwrt 沒(méi)有支持這個(gè)版本的固件,不知道還有沒(méi)有其他方法??
來(lái)源:V2EX
發(fā)布時(shí)間:2020-08-27 17:07:52
作用:日常寫(xiě)代碼,看下電影,游戲的話偶爾回味下 war3,上半年白嫖了 GTA 和文明,玩的不多。預(yù)算:2000 元以內(nèi)。 要求:質(zhì)量好點(diǎn)的,能戰(zhàn)個(gè)幾年,不喜歡那種小問(wèn)題比較多的。 去年下半年組裝的家用主機(jī)(在 v2 上問(wèn)過(guò)一圈 https://v2ex.com/t/610967 顯示器用的舊的,顯卡最后找鄰居拿的普通顯卡,RX580 2304sp 。 最近顯示器壞了,需要換臺(tái)新的。 本來(lái)聽(tīng)說(shuō) 2k 已經(jīng)夠高端了,結(jié)果看了一圈想整 4k 。不知道我這顯卡能不能帶的動(dòng)。 60hz 和 144hz 的話,我好像沒(méi)玩 FPS 游戲要求。 我這顯卡,搭配買什么顯示器合適。 品牌的( Dell/三星 /LG 等)和那些不知名品牌的,差別大嗎。 有沒(méi)有性價(jià)比高一點(diǎn)的,謝謝!
來(lái)源:V2EX
發(fā)布時(shí)間:2020-08-27 17:07:43