linux複製指定目錄下的所有文件到另外一個目錄中 :cp -r dir1/. dir2 php
篩選文件批量修改權限(此處爲去掉可執行權限) find . -name '*.php' | awk '{print "chmod -x " $0}' |sh前端
批量殺死進程 ps -ef | grep string | awk '{print "kill -9 " $2}' |shmysql
查看跳轉到文件某字符位置的10行 cat 26.log | grep -A10 'string'linux
PHP開啓重寫模塊 sudo a2enmod rewritegit
端口查看 netstat -aptn面試
tar 壓縮解壓 tar.gz 壓縮: tar -zcvf xxx.tar.gz xxx 解壓 : tar -zxvf xxx.tar.gzredis
git查看某次commit內容sql
獲取commit-id :git log 複製截取commit-id ---> git show commit-id數據庫
git查看進幾回commit的內容vim
git log -p -n
指定n爲1則能夠查看最近一次修改的內容
js
獲取字符串長度 中英區別 中文兩個字符長度
function strlen(str){ var len = 0; for (var i=0; i<str.length; i++) { var c = str.charCodeAt(i); //單字節加1 if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) { len++; } else { len+=2; } } return len; }
onkeyup="(this.v=function(){this.value=this.value.replace(/[^\d{1,}\.\d{1,}|\d{1,}]/g,'');}).call(this)" onblur="this.v();"
保存圖片
//imagejpeg($im, $filename);
ob_start(); imagejpeg($im); $img = ob_get_contents(); ob_end_clean(); $size = strlen($img); fwrite($fp2,$img); fclose($fp2);
input 輸入框不保存歷史輸入值:autocomplete="off"
<input name="test" type="text" id="test" autocomplete="off"/>
比較兩個文件夾 diff -urNa dir1 dir2
mysql 索引在哪些狀況下失效?
1.若是條件中有or,即便其中有條件帶索引也不會使用(這也是爲何儘可能少用or的緣由)
注意:要想使用or,又想讓索引生效,只能將or條件中的每一個列都加上索引
2.對於多列索引,不是使用的第一部分,則不會使用索引
3.like查詢是以%開頭
4.若是列類型是字符串,那必定要在條件中將數據使用引號引用起來,不然不使用索引
5.若是mysql估計使用全表掃描要比使用索引快,則不使用索引
vim 跳轉到最後一行命令
G
當用戶進行購物時他有多是本商電的會員或遊客(非會員);所以得出兩種方案:
方案一:(會員)
用戶進行購物時他是咱們本商店的會員(數據庫中存在該用戶的數據),當用戶添加商品到購物車的時候咱們能夠分爲兩種方法;
方法一,
當用戶購買商品添加到購物車時沒有進行登錄,若是咱們用session來保存用戶的數據那麼咱們就要考慮到這種狀況,一旦用戶關閉瀏覽器那麼以前所保存的數據就會丟失,所以採用cookie來保存數據。當用戶點擊結帳時,對用戶進行登錄驗證,而後判斷cookie是否存在購買商品的信息。若是存在,就將cookie中的數據保存到mysql中,而後清空cookie信息,最後結帳成功。
方法二
用戶添加商品到購物車的時候必須進行登錄驗證,而後才能將購買的商品直接保存在數據庫,可是你有沒有想過用戶添加到購物車的商品,他不必定購買,所以咱們額外增長了維護成本,但好處是用戶能在什麼時候何地均可以看到本身的購物信息。記住方式作任何電商網站,都要從用戶的角度考慮。
對比發現,第一種方法比較人性化,用戶體驗比較好,所以大多數主流電商網站都是採用第一種方法。
方案二:(非會員)
就是說你購物的時候你有可能不是本網站的會員,但你又想購買商品,那麼咱們會給你提供一個特殊的賬號(遊客)具體實現思路以下:當用戶購買經過cookie保存,結帳的時候用戶又不想註冊,咱們經過獲取他的手機號碼和地址,而後後臺自動生成一個普通用戶,將數據保存在數據庫中並清除cookie。
PSR-0 (Autoloading Standard) 自動加載標準
PSR-1 (Basic Coding Standard) 基礎編碼標準
PSR-2 (Coding Style Guide) 編碼風格嚮導
PSR-3 (Logger Interface) 日誌接口
PSR-4 (Improved Autoloading) 自動加載的加強版,能夠替換掉PSR-0了。
我的以爲沒有 PHP 工程師這一說法,PHP 工程師意味着知識面必定是要比較廣的。
技術線(偏深度):
1. 基礎知識,好比數據結構,面向對象,設計模式,I/O,Http 協議等
2. 語言深度,好比 PHP 的運行機制,自動加載,性能優化,APC/OPcache (以及其原理等),異常處理,安全
3. 源碼閱讀,好比看過哪些框架,其中的機制是怎麼樣的,往細了問(如自動加載、依賴注入、Laravel 的 Facades 門面模式、路由)
4. 知識寬度,靜態語言,好比 C、Java 等,順便看學習積極性
5. 項目經驗,作過什麼,是否複雜,負責什麼,作了什麼
6. 設計,這一點和第五點比較相似
業務線(偏能力):
1. 業務能力,也就是以前作過的項目(擔任的角色,負責的部分),能夠舉例本身以爲作得不錯的項目;
2. 溝通能力,這一點能從溝通中就看出來
3. 主動性,以前主動推進的事物等等,哪怕是一個小的點也能夠
4. 抗壓能力,以前作過的項目中去挖掘細節
5. 技術寬度,瞭解不必定要深刻,我通常會問一些比較泛的,好比多語言,Linux 操做,HTTP 協議等
6. 解決問題能力,如何調試錯誤,如何分析問題,如何調優
偶爾會問:
1. 有 GitHub 或者 Blog (技術熱情),最近看過什麼書 /開源項目
2. 離職緣由和同事相處(你懂的)
3. 業餘時間利用(技術熱情)
我通常的面試流程:
一、先自我介紹一下,禮貌~;
二、讓對方介紹項目(看對方表達能力和對項目的瞭解);
三、php 基礎:面向對象、設計模式(結合實際例子來講);
四、http 協議相關: http 協議,可能會問到 cookie、session 之類的、4xx/5xx 報錯如何捕獲;
五、業務:用戶很是多的網站,開發抽獎 /秒殺系統系統,可能有哪些問題,怎麼解決?(看分析問題能力,包括併發、緩存、安全);
六、優化:5 的系統開發好了,頁面很慢,從哪些方面分析?(先後端都有可能,看他有沒有實際解決問題的經驗和能力),可能會問到前端的優化、php 的分析和優化、redis 的設計、mysql 的性能分析和優化;
七、遇到以上問題解決不了的,怎麼辦?平時會看哪些網站 /書學習?最近看過的開源項目 /書是?
(不少人口頭上本身熱情積極學習,其實一問就知道)
八、有些人會說我看 Laravel 什麼什麼的,就繼續問,composer 怎麼實現自動加載的?框架的流程大體是什麼樣的?路由怎麼實現的?怎麼作單元測試?依賴注入?等等
九、其餘:有什麼優缺點?有什麼問個人?等等
- PHP
- PHP 7 新特性
- 隨意列舉幾個 array 相關函數
in_array() array_reverse() array_merge() array_push() array_replace() array_unique() array_splice() array_walk()
- 反轉一個數組 array_reverse()
- Composer
- 自動加載原理 (spl_autoload_register)
- PSR
- 對代碼質量的態度
- 引用傳遞
- 引用和指針的區別
- 浮點數
- __invoke
- 編輯器 / IDE
- 標準庫
- ArrayList
- Iterator 迭代器
- 反射
- 反射的做用
- 調試手段
- SAPI
- PHP-FPM 的運行方式
- CGI 是什麼 Fastcgi?
fastcgi與php-fpm的關係一句話解讀:fastcgi只是通訊應用協議,php-fpm就是實現了fastcig協議,並嵌入了一個 PHP 解釋器.
CGI即通用網關接口(common gatewag interface),它是一段程序,通俗的講CGI就象是一座橋,把網頁和WEB服務器中的執行程序鏈接起來,它把HTML接收的指令傳遞給服務器的執 行程序,再把服務器執行程序的結果返還給HTML頁。CGI 的跨平臺性能極佳,幾乎能夠在任何操做系統上實現。
CGI方式在遇到鏈接請求(用戶 請求)先要建立cgi的子進程,激活一個CGI進程,而後處理請求,處理完後結束這個子進程。這就是fork-and-execute模式。因此用cgi 方式的服務器有多少鏈接請求就會有多少cgi子進程,子進程反覆加載是cgi性能低下的主要緣由。都會當用戶請求數量很是多時,會大量擠佔系統的資源如內 存,CPU時間等,形成效能低下。
fast-cgi 是cgi的升級版本,FastCGI像是一個常駐(long-live)型的CGI,它能夠一直執行着,只要激活後,不會每次都要花費時間去fork一 次。PHP使用PHP-FPM(FastCGI Process Manager),全稱PHP FastCGI進程管理器進行管理。
Web Server啓動時載入FastCGI進程管理器(IIS ISAPI或Apache Module)。FastCGI進程管理器自身初始化,啓動多個CGI解釋器進程(可見多個php-cgi)並等待來自Web Server的鏈接。
當客戶端請求到達Web Server時,FastCGI進程管理器選擇並鏈接到一個CGI解釋器。Web server將CGI環境變量和標準輸入發送到FastCGI子進程php-cgi。
FastCGI子進程完成處理後將標準輸出和錯誤信息從同一鏈接返回Web Server。當FastCGI子進程關閉鏈接時,請求便告處理完成。FastCGI子進程接着等待並處理來自FastCGI進程管理器(運行在Web Server中)的下一個鏈接。 在CGI模式中,php-cgi在此便退出了。
在上述狀況中,你能夠想象CGI一般有多慢。每個Web 請求PHP都必須從新解析php.ini、從新載入所有擴展並重初始化所有數據結構。使用FastCGI,全部這些都只在進程啓動時發生一次。一個額外的 好處是,持續數據庫鏈接(Persistent database connection)能夠工做。
- 如何優化 - 底層- php-src 是如何保存變量的- $a = 1; $b=$a 是如何保存的- 什麼是引用計數