note2

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;
}

 

 
限制input 只能輸入數字 
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 規範

PSR-0 (Autoloading Standard) 自動加載標準 

PSR-1 (Basic Coding Standard) 基礎編碼標準 

PSR-2 (Coding Style Guide) 編碼風格嚮導 

PSR-3 (Logger Interface) 日誌接口 

PSR-4 (Improved Autoloading) 自動加載的加強版,能夠替換掉PSR-0了。

 

 

mysql事務鎖

redis性能優化拓展

 

 

我的以爲沒有 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 是如何保存的- 什麼是引用計數

相關文章
相關標籤/搜索