php中的全部變量都是頁面級的, 即任何一個頁面, 最多 都只能在一個文件 : 當前頁面內使用, 不存在跨 文件/ 跨頁面的 做用域的變量!
所以, 即便是 $GLOBALS 這個變量, 雖然叫全局 變量, 可是它也是頁面級的, 在一個頁面內保存的 "全局變量 , " 並不能 帶到 其餘頁面內使用
!!! 這一點 跟java, C ++ 等語言是不一樣的javascript
local: 有兩個含義: 一個是 "本地的, 當地的", 另外一個還有: "局部的, 只在本函數內使用的, 不能出函數的"php
頁面級的 全局變量:html
注意 $GLOBALS的寫法: 不是$_GLOBALS , 沒有 下劃線, 並且必須有sjava
================================python
你能夠經過 php的 gettype(foo);
gettype 函數 來 查看 任何結果的 類型! 好比: echo gettype(foo>1);
此時返回的是一個 boolean.mysql
因此, 若是在 寫變量的時候, 若是保持java, c, c++, js等語言的習慣, 忘了寫$, 那麼這個時候, php不會報錯! 並且會把它做爲一個 "字面"字符串來對待! 而這時候, 若是偏偏又在 循環語句中, 用來 控制 循環結束條件時, 好比寫成 for(i=0; i<count($ret); i++)
, 那麼在該循環條件中, 因爲 i是 一個"字面字符串", 並且是合法的,不報錯! i<count($ret) 將被 做爲: "字符串和數字比較" , 參考下面的內容, 其結果 將是一個始終爲true的 條件, 這樣 將會陷入 "死循環"linux
http://www.cnblogs.com/youxin/p/3873397.html
========================================c++
===================ajax
php的底層C是由一個聯合體union來存儲變量,這個聯合體裏面有各類變量類型,php都以long類型來存儲整型,用hashtable哈西表來存儲數組,由於union能夠存儲各類變量,而且解釋器會自動斷定變量類型,因此php不用聲明變量類型,弱類型
php是弱類型,也即動態語言,在運行時才肯定變量的類型。sql
參考: http://www.cnblogs.com/leokou/archive/2011/06/01/2067144.html
========================================
= dialog的內容content/href並非必須的選項 其內容能夠在 dialog調用 顯示方法以前, 調用其餘方法來生成, 填充dialog的內容(好比: $('#dialog').html(..), .append(...)等方法.
== 若是是 使用conent: iframe的話, 這個 iframe標籤中, 是不能直接寫html代碼的, 只能 用src屬性 來指定 內容源.只是要設置 一些其餘屬性,好比 frameborder等:
content: "<iframe scrolling='auto' frameborder='0' src='foo.html' style='width: 100%; height: 100% ;display:block;' ></iframe>"
上面的這個 content: iframe是最經常使用的, 也是 適用於絕大多數狀況下的寫法.
而後再用 $("#diag").dialog('open');
=== 使用 這種iframe的方式時, 在html代碼的div 中, 必須給 div 寫上 easyui-dialog的類屬性, 不然會出不少報錯. 也就是說 在 iframe鎖指定的 源 html/php文件中 , 其div必須是一個 easyui的dialog, 即 div必須有 class="easy-dialog"這個類屬性.
== 回調函數: callback: 簡寫成cb, 是說 發起異步請求時, cb函數 處理的時間 是不肯定的!
關於 異步操做, 最直接的感覺是: 你不知道異步操做何時完成, 也沒有辦法直接獲取到異步操做的結果. 由於 當函數A 在 "異步" 調用 函數B 的時候, 函數A 不等B 返回結果 , 當即順序執行 後面的語句, 直至函數A 退出結束. 也就是說, 若是 你用 js調試跟蹤函數A 的執行時, 調試器是 不會進到 函數 B 的內部去的!!
=== $.ajax 的{..., "async": false,....} 操做默認的是 異步的 , async的屬性老是true, 可是 若是你要 後續操做 要等到 請求完成後才能進行, 即須要鎖死瀏覽器, 就能夠設置 : async: false, 此時, 全部的操做就變成 同步的了. 可是要注意 瀏覽器 鎖死的問題
因而可知, 計算機中的所謂 "同步" , "異步"操做, 實際上就是 一個 "串行,並行"的問題, 同步是指 在一系列的操做步驟a -> b -> c ...中, 操做是依次進行的, 只有當a步驟完成後, 才能執行 b步驟... , 至關於 串行, 電流的串聯電路同樣.... 同步操做中, 就存在 所謂的 "等待/延遲/ 鎖死" 問題. 而 異步就是所謂的 "並行" , 相似於 " 並聯電路" , 電流能夠分多個支路同時進行. 在一些列操做中 a, b, c,d... 步驟b 能夠在執行 a的 或 同時/ 或 以後 或以前 進行, 步驟b跟步驟a的執行 前後時間/順序 關係不大.
===============================
vim自動補全的插件有不少, 包括: youcompleteme(ycm), autoComplete, omniCppComplete, snipmate, completor, omni-complete, omnifunctionComplete.等等
可是 從 vim7.1後, vim就自帶了 自動補全和提示了, 因此能夠直接使用其原生的 提示和補全, 而不用安裝其餘外來的插件了。
自動補全的原理就是:
將起始字符(或多個起始字符) 相同的單詞, 搜索查找出來, 放在xml或text 臨時緩存起來, 而後將這些內容再顯示在 提示框中。
不少都 依賴於python組件。
vim自帶的補全和提示:
提示待選框 的位置, 可能在當前提示行的上方, 也可能在當前位置的下方
提示待選框中的內容,上一次被選擇的 內容項老是出如今 待選框的 最下面那一個, 而後你能夠用 ctrl+p向上移動, 用 ctrl+N向下移動,所有完了以後就顯示 「回到起點」
vim的狀態欄上, 還有 待選模式/ 待選項目 當前待選項的 各類完整的提示
待選項能夠 直接上屏, 當獲得待選項後, (如何知道當前是哪一個待選項? 直接看上屏的是哪一個內容的選項? )能夠直接 寫後面接着的 各類代碼內容。
若是 只是直接補全 單詞, 能夠直接使用 (在insert模式下) ctrl+p, 或 ctrl+N (注意n是next, 既然是next向下, 因此它初始化選中的就是第一個待選項, 若是是ctrl+p是向上,因此默認初始化選中的就是最後一個)
可是 若是要補全 其餘 內容, 好比要補全 整行, 就要使用 ctrl+x( 而後有不少子模式), 好比:^]: 表示tag標籤, ^D 表示define常量, ^L表示補全整行。。。
1. 單詞自動補全: CTRL+n :當你輸入第一個字母的時候,再CTRL+n,自動出現下拉菜單,單詞默認選中第一個,繼續CTRL+n,CTRL+p能夠上下切換,或者用方向鍵(太慢) CTRL+p :同上,只是默認的選中的是列表中最後一個單詞 行自動補全: CTRL+x CTRL+l (l指小寫的L ):兩個命令組合使用。在插入模式下輸入已經存在行的第一個單詞,再按這兩個鍵,就會列出該整行出來 文件名自動補全: CTRL+x CTRL+f :插入模式下,按這兩個組合鍵,能夠插入當前目錄下的文件名。處用在哪裏呢,固然是有時候咱們要指定默認執行文件的路徑,這樣就方便啦。 字典補全: 首先在~/.vimrc加入以下代碼,注意這是在Linux,windows下應該是C:\Users\$username(用戶名) set dictionary-=$VIM/dic.txt dictionary+=$VIM/dic.txt dic.txt中的單詞一每行一個單詞來分割的 CTRL+x CTRL+k 就能看到dic.txt中定義的單詞的,若是你還麻煩,想直接CTRL+n就顯示其中的列表的話,再配置一下.vimrc文件: set complete-=k complete+=k
======
install details:
omni: 全, 所有, omni-Complete: 全能補全,
參考: https://segmentfault.com/q/1010000004713445
插件地址:https://www.vim.org/scripts/script.php?script_id=1643 下載後,把它放到.vim/plugin目錄就能夠了。 能夠對下面兩個選項進行配置,以調整SuperTab的缺省行爲: g:SuperTabRetainCompletionType的值缺省爲1,意爲記住你上次的補全方式,直到使用其它的補全命令改變它;若是把它設成2,意味着記住上次的補全方式,直到按ESC退出插入模式爲止;若是設爲0,意味着不記錄上次的補全方式。 g:SuperTabDefaultCompletionType的值設置缺省的補全方式,缺省爲CTRL-P。 你能夠在vimrc中設置這兩個變量,例如: let g:SuperTabRetainCompletionType = 2 let g:SuperTabDefaultCompletionType = "<C-X><C-O>"
參考: https://www.cnblogs.com/zhangshuli-1989/p/hq_15_12_18_00_10.html
其中有: ctrl+ y, e, h, l, +字符的含義。
ctrl+n 或ctrl+x ctrl+o是 表示 全能補全 : omni - 補全。
============
================
mysql的配置文件中, /etc/my.cnf 要單獨的 另外建立一個 節 配置auto-rehash: [mysql] auto-rehash 也能夠實現 mysql的自動補全和auto-completion.
可是 , mysql 的自動補全沒有 語法 高亮, 也不能 對 關鍵字進行提示和自動補全.
要實現 完整的/全面的功能, 仍是要使用 mycli. 在 ~/.myclirc 配置文件中, 設置...
mycli是以 回車結束語句的, 而mysql是以分號 結束語句的. 因此mycli 要用 exit來退出, 而不能用 exit; 來退出~ 除非設置多行模式: multi_line=True.