nginx在linux一般是用epoll, 它使用的是注冊回調(diào)函數(shù),數(shù)據(jù)準(zhǔn)備好自動調(diào)用。這個(gè)過程其實(shí)阻塞的。master分配某個(gè)連接給worker進(jìn)程,worker同一時(shí)間的阻塞的,只能處理一個(gè)請求。。還有nginx是多進(jìn)程模型的
其實(shí)這大部分是一個(gè)操作系統(tǒng)原理的問題。操作系統(tǒng)在讀取文件時(shí)會把文件內(nèi)容放到空閑內(nèi)存中,這樣下次再有程序嘗試讀取同樣的文件內(nèi)容的時(shí)候,就可以直接從內(nèi)存中給而不用讀磁盤,從而大幅度提高讀取速度。這個(gè)緩存就是文件系統(tǒng)緩存。
其實(shí)很容易理解:這些內(nèi)存如果沒有人用,空著也是浪費(fèi),為什么不緩存一點(diǎn)東西在里面呢?不管緩存什么,只要命中一次就賺到一次。至于怎么怎么賺更多,那就要看你怎么選擇在有限的內(nèi)存空間中緩存的什么內(nèi)容,怎么能讓緩存的內(nèi)容被更多地命中。這部分內(nèi)容跟問題無關(guān),不細(xì)說了,有興趣可以看看操作系統(tǒng)原理。
回到你的問題,當(dāng)你重啟了MongoDB實(shí)例時(shí),MongoDB占用的內(nèi)存當(dāng)然已經(jīng)都釋放掉了。但是無論是數(shù)據(jù)還是索引,其實(shí)都還緩存在文件系統(tǒng)緩存中,因?yàn)樗鼈兌紒碜杂跀?shù)據(jù)文件和索引文件(前提是沒有別人要使用這些內(nèi)存)。索引的使用是按需加載,這點(diǎn)基本上從邏輯推理就可以猜出來:假設(shè)你的10GB的索引,難道第一次讀取的時(shí)候就要等10GB索引加載到內(nèi)存中?假如索引容量比內(nèi)存要大呢?所以一次性加載全部索引顯然是不合理的。即使是一個(gè)索引,也是按需部分加載而不是全部。所以你需要用到的只是這1GB中的很小一部分。記住索引的時(shí)間復(fù)雜度是log2(n),要從1億數(shù)據(jù)中找出需要的一條,最壞的情況下只需要查詢27次比較,當(dāng)然是瞬間就出來了。
ci的 session 不在 $_SESSION 中,找它的文檔看 session 這一節(jié)。
安全組規(guī)則呢
mongodb是動態(tài)scheme,無所謂改表結(jié)構(gòu)。
es是全文檢索,也不需要改表結(jié)構(gòu)
1.[b.com]
在發(fā)現(xiàn)未登錄時(shí)跳轉(zhuǎn)至[a.com]
進(jìn)行登錄
2.[a.com]
在登錄完成后將登錄authcookie
與用戶信息記錄到服務(wù)器(session_id或者redis都可以)
3.同時(shí)[a.com]
創(chuàng)建一個(gè)令牌token
關(guān)聯(lián)上一步的authcookie
,并帶回[b.com]
的backUrl中
4.[b.com]
拿到[a.com]
發(fā)回來的令牌去調(diào)用[a.com]
的接口查詢是否令牌有效并且可以查到用戶信息,有的話則拿回?cái)?shù)據(jù)并做后續(xù)操作
以上是單點(diǎn)登錄的基本流程,PS:單點(diǎn)登錄與前后端分離沒有關(guān)系。
可以增量統(tǒng)計(jì)
除了第一次全量統(tǒng)計(jì),以后只統(tǒng)計(jì)新增的(根據(jù)數(shù)據(jù)添加時(shí)間)和新更新的(根據(jù)數(shù)據(jù)更新時(shí)間)。
刪除操作只做邏輯刪除,每張表都應(yīng)該有添加時(shí)間和更新時(shí)間并且更新時(shí)間最好設(shè)置為自動更新。
比如:
CREATE TABLE `table_name` (
`xx` varchar(50) NOT NULL DEFAULT '' COMMENT 'xx',
`del_flag` tinyint(1) NOT NULL DEFAULT '0' COMMENT '標(biāo)志,0為有效,-1為無效',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時(shí)間',
`add_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加時(shí)間'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='xxxxx';
redis 安裝成功后會得到 redis-server 和 redis-cli ;
redis-server 就是用來存儲數(shù)據(jù)的;
redis-cli 則是給人在命令行下用來連接 redis-server 然后進(jìn)行增刪改查的操作的客戶端;
php-redis.dll 則是給 PHP 用來連接 redis-server 然后進(jìn)行增刪改查的操作的擴(kuò)展;
這樣理解不?
因?yàn)槟闶褂玫氖?code>./public/****和./app/****
,它是根據(jù)你的url
中的http://localhost/index.php/index/index/index
拼接上/public/****
或者/app/****
`,可以改成/public/****
和/app/****
1 <?php
2 $newword = "
3 直達(dá):通往
4 小:大
5 ";
6 $str_txt = "這是一條直達(dá)美好殿堂的小道。";
7 $pairs = preg_split("/[:".PHP_EOL."]/", trim($newword));
8 $i = 0;
9 while($i < count($pairs)) {
10 list($ori[], $tar[]) = [$pairs[$i++], $pairs[$i++]];
11 }
12 var_dump(str_replace($ori, $tar, $str_txt));
輸出:
string(42) "這是一條通往美好殿堂的大道。"
str_replace是支持批量替換的。
在package.json中找到d3,然后把后面的版本號改成你需要的,然后npm install
題主是想把相關(guān)的數(shù)據(jù)庫配置信息通過表單存儲在一個(gè)數(shù)據(jù)庫中,然后通過讀取數(shù)據(jù)庫中數(shù)據(jù)配置信息,然后去實(shí)現(xiàn)訪問不同數(shù)據(jù)庫的功能,而不是把所有的數(shù)據(jù)庫配置信息預(yù)先配置在 config/database.php
中。
如果沒有理解錯(cuò)的話,再來解題:
數(shù)據(jù)庫配置信息存儲在數(shù)據(jù)庫中,只要按照 Laravel 的數(shù)據(jù)庫配置要求去存儲即可,這個(gè)隨意題主怎么存儲,在 config/database.php
中已經(jīng)有了各類數(shù)據(jù)庫配置的示例。
在官方文檔中有說明用法 $users = DB::connection('foo')->select(...);
看官方文檔即可。
ServiceProvider
ServiceProvider
boot
方法中添加如下代碼。 /**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//1. get your database config from database.
//Your code.
//2. set database info to laravel database config.
$this->app['config']->set('database.connections.testing', [
'driver' => 'mysql',
'database' => ...
]);
}
沒有親自去實(shí)戰(zhàn),提供一種思路,請題主自行實(shí)驗(yàn)。
這個(gè)方法 可以不用查詢數(shù)據(jù)庫。
在路由地方增加一個(gè)中間件,把需要驗(yàn)證的路由全部走這個(gè)中間件。
每次用戶登錄的時(shí)候生成一個(gè)比較長的hash碼(保證每個(gè)用戶不重復(fù)) session 保存這個(gè) hash
每次請求的時(shí)候驗(yàn)證這個(gè) hash 就好了。
每次登錄都不同,不純在泄漏問題
array_merge
lamp:服務(wù)器為apache,php作為apache的一個(gè)模塊被加載到apache進(jìn)程中,apache接受的動態(tài)請求通過SAPI與php進(jìn)行交互,即php的Apache 2.0 Handler模式
lnmp:web服務(wù)器為nginx,接受到動態(tài)請求通過socket轉(zhuǎn)發(fā)給后端php-fpm,進(jìn)行處理并返回給webserver,此時(shí)php的運(yùn)行模式為PHP-CGI,fpm為PHP fast-cgi的協(xié)議的實(shí)現(xiàn)
編碼問題
標(biāo)題欄右鍵,選擇options
store.subscribe()
接收的參數(shù)是一個(gè)函數(shù),每次 state
改變的時(shí)候會執(zhí)行一次這個(gè)函數(shù)。而不是組件。
如果你要在 React 中使用 Redux,應(yīng)該使用 react-redux,詳情請閱讀 Redux 官方文檔或者它的中文翻譯版
simplexml_load_string
很可能是在ps中用的字體,并沒有在電腦的操作系統(tǒng)中安裝過,所以網(wǎng)頁無法識別HiraginoSansGBW3
這個(gè)字體,就用了默認(rèn)字體。
要驗(yàn)證這一點(diǎn)也簡單,換個(gè)網(wǎng)頁常用的字體上去,看看是否一致,起碼證明了并非代碼寫錯(cuò)了。
如果一定要實(shí)現(xiàn)ps中的字體效果,需要想辦法實(shí)現(xiàn),當(dāng)一個(gè)用戶打開網(wǎng)站時(shí),自動給用戶的電腦安裝字體,讓網(wǎng)頁可以識別?;蛘?,讓ued妥協(xié),用常用的字體。再或者,這段效果只是一小部分的話,直接截圖吧。
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。