導航:首頁 > 編程語言 > php授權機制

php授權機制

發布時間:2022-10-06 13:50:48

㈠ MVC怎麼設置許可權

MVC模式是"Model-View-Controller"的縮寫,中文翻譯為"模式-視圖-控制器"。MVC應用程序總是由這三個部分組成。Event(事件)導致Controller改變Model或View,或者同時改變兩者。只要Controller改變了Models的數據或者屬性,所有依賴的View都會自動更新。類似的,只要Controller改變了View,View會從潛在的Model中獲取數據來刷新自己。MVC模式最早是smalltalk語言研究團提出的,應用於用戶交互應用程序中。smalltalk語言和java語言有很多相似性,都是面向對象語言,很自然的SUN在petstore(寵物店)事例應用程序中就推薦MVC模式作為開發Web應用的架構模式。MVC模式是一種架構模式,其實需要其他模式協作完成。在J2EE模式目錄中,通常採用service to worker模式實現,而service to worker模式可由集中控制器模式,派遣器模式和Page Helper模式組成。而Struts只實現了MVC的View和Controller兩個部分,Model部分需要開發者自己來實現,Struts提供了抽象類Action使開發者能將Model應用於Struts框架中。

MVC模式是一個復雜的架構模式,其實現也顯得非常復雜。但是,我們已經終結出了很多可靠的設計模式,多種設計模式結合在一起,使MVC模式的實現變得相對簡單易行。Views可以看作一棵樹,顯然可以用Composite Pattern來實現。Views和Models之間的關系可以用Observer Pattern體現。Controller控制Views的顯示,可以用Strategy Pattern實現。Model通常是一個調停者,可採用Mediator Pattern來實現。

現在讓我們來了解一下MVC三個部分在J2EE架構中處於什麼位置,這樣有助於我們理解MVC模式的實現。MVC與J2EE架構的對應關系是:View處於Web Tier或者說是Client Tier,通常是JSP/Servlet,即頁面顯示部分。Controller也處於Web Tier,通常用Servlet來實現,即頁面顯示的邏輯部分實現。Model處於Middle Tier,通常用服務端的javaBean或者EJB實現,即業務邏輯部分的實現。

一、MVC設計思想

MVC英文即Model-View-Controller,即把一個應用的輸入、處理、輸出流程按照Model、View、Controller的方式進行分離,這樣一個應用被分成三個層——模型層、視圖層、控制層。

視圖(View)代表用戶交互界面,對於Web應用來說,可以概括為HTML界面,但有可能為XHTML、XML和Applet。隨著應用的復雜性和規模性,界面的處理也變得具有挑戰性。一個應用可能有很多不同的視圖,MVC設計模式對於視圖的處理僅限於視圖上數據的採集和處理,以及用戶的請求,而不包括在視圖上的業務流程的處理。業務流程的處理交予模型(Model)處理。比如一個訂單的視圖只接受來自模型的數據並顯示給用戶,以及將用戶界面的輸入數據和請求傳遞給控制和模型。

模型(Model):就是業務流程/狀態的處理以及業務規則的制定。業務流程的處理過程對其它層來說是黑箱操作,模型接受視圖請求的數據,並返回最終的處理結果。業務模型的設計可以說是MVC最主要的核心。目前流行的EJB模型就是一個典型的應用例子,它從應用技術實現的角度對模型做了進一步的劃分,以便充分利用現有的組件,但它不能作為應用設計模型的框架。它僅僅告訴你按這種模型設計就可以利用某些技術組件,從而減少了技術上的困難。對一個開發者來說,就可以專注於業務模型的設計。MVC設計模式告訴我們,把應用的模型按一定的規則抽取出來,抽取的層次很重要,這也是判斷開發人員是否優秀的設計依據。抽象與具體不能隔得太遠,也不能太近。MVC並沒有提供模型的設計方法,而只告訴你應該組織管理這些模型,以便於模型的重構和提高重用性。我們可以用對象編程來做比喻,MVC定義了一個頂級類,告訴它的子類你只能做這些,但沒法限制你能做這些。這點對編程的開發人員非常重要。

業務模型還有一個很重要的模型那就是數據模型。數據模型主要指實體對象的數據 保存(持續化)。比如將一張訂單保存到資料庫,從資料庫獲取訂單。我們可以將這個模型單獨列出,所有有關資料庫的操作只限制在該模型中。

控制(Controller)可以理解為從用戶接收請求, 將模型與視圖匹配在一起,共同完成用戶的請求。劃分控制層的作用也很明顯,它清楚地告訴你,它就是一個分發器,選擇什麼樣的模型,選擇什麼樣的視圖,可以完成什麼樣的用戶請求。控制層並不做任何的數據處理。例如,用戶點擊一個連接,控制層接受請求後, 並不處理業務信息,它只把用戶的信息傳遞給模型,告訴模型做什麼,選擇符合要求的視圖返回給用戶。因此,一個模型可能對應多個視圖,一個視圖可能對應多個模型。

模型、視圖與控制器的分離,使得一個模型可以具有多個顯示視圖。如果用戶通過某個視圖的控制器改變了模型的數據,所有其它依賴於這些數據的視圖都應反映到這些變化。因此,無論何時發生了何種數據變化,控制器都會將變化通知所有的視圖,導致顯示的更新。這實際上是一種模型的變化-傳播機制。模型、視圖、控制器三者之間的關系和各自的主要功能,如圖1所示。

二、MVC設計模式的實現

ASP.NET提供了一個很好的實現這種經典設計模式的類似環境。開發者通過在ASPX頁面中開發用戶介面來實現視圖;控制器的功能在邏輯功能代碼(.cs)中實現;模型通常對應應用系統的業務部分。在ASP.NET中實現這種設計而提供的一個多層系統,較經典的ASP結構實現的系統來說有明顯的優點。將用戶顯示(視圖)從動作(控制器)中分離出來,提高了代碼的重用性。將數據(模型)從對其操作的動作(控制器)分離出來可以讓你設計一個與後台存儲數據無關的系統。就MVC結構的本質而言,它是一種解決耦合系統問題的方法。

2.1 視圖

視圖是模型的表示,它提供用戶交互界面。使用多個包含單顯示頁面的用戶部件,復雜的Web頁面可以展示來自多個數據源的內容,並且網頁人員,美工能獨自參與這些Web頁面的開發和維護。

在ASP.NET下,視圖的實現很簡單。可以像開發WINDOWS界面一樣直接在集成開發環境下通過拖動控制項來完成頁面開發本。本文中介紹每一個頁面都採用復合視圖的形式即:一個頁面由多個子視圖(用戶部件)組成;子視圖可以是最簡單HTML 控制項、伺服器控制項或多個控制項嵌套構而成的Web自定義控制項。頁面都由模板定義,模板定義了頁面的布局,用戶部件的標簽和數目,用戶指定一個模板,平台根據這些信息自動創建頁面。針對靜態的模板內容,如頁面上的站點導航,菜單,友好鏈接,這些使用預設的模板內容配置;針對動態的模板內容(主要是業務內容),由於用戶的請求不同,只能使用後期綁定,並且針對用戶的不同,用戶部件的顯示內容進行過濾。使用由用戶部件根據模板配置組成的組合頁面,它增強了可重用性,並原型化了站點的布局。

視圖部分大致處理流程如下:首先,頁面模板定義了頁面的布局;頁面配置文件定義視圖標簽的具體內容(用戶部件);然後,由頁面布局策略類初始化並載入頁面;每個用戶部件根據它自己的配置進行初始化,載入校驗器並設置參數,以及事件的委託等;用戶提交後,通過了表示層的校驗,用戶部件把數據自動提交給業務實體即模型。

這一部分主要定義了WEB頁面基類PageBase;頁面布局策略類PageLayout,完成頁面布局,用於載入用戶部件到頁面;用戶部件基類UserControlBase即用戶部件框架,用於動態載入檢驗部件,以及實現用戶部件的個性化。為了實現WEB應用的靈活性,視圖部分也用到了許多配置文件例如:置文件有模板配置、頁面配置、路徑配置、驗證配置等。

2.2 控制器

為了能夠控制和協調每個用戶跨越多個請求的處理,控制機制應該以集中的方式進行管理。因此,為了達到集中管理的目的引入了控制器。應用程序的控制器集中從客戶端接收請求(典型情況下是一個運行瀏覽器的用戶),決定執行什麼商業邏輯功能,然後將產生下一步用戶界面的責任委派給一個適當的視圖組件。

用控制器提供一個控制和處理請求的集中入口點,它負責接收、截取並處理用戶請求;並將請求委託給分發者類,根據當前狀態和業務操作的結果決定向客戶呈現的視圖。在這一部分主要定義了HttpReqDispatcher(分發者類)、HttpCapture(請求捕獲者類)、Controller(控制器類)等,它們相互配合來完成控制器的功能。請求捕獲者類捕獲HTTP請求並轉發給控制器類。控制器類是系統中處理所有請求的最初入口點。控制器完成一些必要的處理後把請求委託給分發者類;分發者類分發者負責視圖的管理和導航,它管理將選擇哪個視圖提供給用戶,並提供給分發資源控制。在這一部分分別採用了分發者、策略、工廠方法、適配器等設計模式。

為了使請求捕獲者類自動捕獲用戶請求並進行處理,ASP.NET 提供低級別的請求/響應 API,使開發人員能夠使用 .NET 框架類為傳入的 HTTP 請求提供服務。為此,必須創作支持 System.Web.IHTTPHandler 介面和實現 ProcessRequest() 方法的類即:請求捕獲者類,並在web.config 的 <httphandlers> 節中添加類。ASP.NET 收到的每個傳入 HTTP 請求最終由實現 IHTTPHandler 的類的特定實例來處理。IHttpHandlerFactory 提供了處理 IHttpHandler 實例 URL 請求的實際解析的結構。HTTP 處理程序和工廠在 ASP.NET 配置中聲明為 web.config 文件的一部分。ASP.NET 定義了一個 <httphandlers> 配置節,在其中可以添加和移除處理程序和工廠。子目錄繼承 HttpHandlerFactory 和 HttpHandler 的設置。 HTTP 處理程序和工廠是 ASP.NET 頁框架的主體。工廠將每個請求分配給一個處理程序,後者處理該請求。 例如,在全局 machine.config 文件中,ASP.NET 將所有對 ASPx 文件的請求映射到 HttpCapture類:

<httphandlers>
...
...
</httphandlers>

2.3 模型

MVC系統中的模型從概念上可以分為兩類――系統的內部狀態和改變系統狀態的動作。模型是你所有的商業邏輯代碼片段所在。本文為模型提供了業務實體對象和業務處理對象:所有的業務處理對象都是從ProcessBase類派生的子類。業務處理對象封裝了具體的處理邏輯,調用業務邏輯模型,並且把響應提交到合適的視圖組件以產生響應。業務實體對象可以通過定義屬性描述客戶端表單數據。所有業務實體對象都EntityBase派生子類對象,業務處理對象可以直接對它進行讀寫,而不再需要和request、response對象進行數據交互。通過業務實體對象實現了對視圖和模型之間交互的支持。實現時把"做什麼"(業務處理)和"如何做"(業務實體)分離。這樣可以實現業務邏輯的重用。由於各個應用的具體業務是不同的,這里不再列舉其具體代碼實例。

三、MVC設計模式的擴展

通過在ASP.NET中的MVC模式編寫的,具有極其良好的可擴展性。它可以輕松實現以下功能:

①實現一個模型的多個視圖;

②採用多個控制器;

③當模型改變時,所有視圖將自動刷新;

④所有的控制器將相互獨立工作。

這就是MVC模式的好處,只需在以前的程序上稍作修改或增加新的類,即可輕松增加許多程序功能。以前開發的許多類可以重用,而程序結構根本不再需要改變,各類之間相互獨立,便於團體開發,提高開發效率。下面討論如何實現一個模型、兩個視圖和一個控制器的程序。其中模型類及視圖類根本不需要改變,與前面的完全一樣,這就是面向對象編程的好處。對於控制器中的類,只需要增加另一個視圖,並與模型發生關聯即可。該模式下視圖、控制器、模型三者之間的示意圖如圖2所示。

同樣也可以實現其它形式的MVC例如:一個模型、兩個視圖和兩個控制器。從上面可以看出,通過MVC模式實現的應用程序具有極其良好的可擴展性,是ASP.NET面向對象編程的未來方向。

四、MVC的優點

大部分用過程語言比如ASP、php開發出來的Web應用,初始的開發模板就是混合層的數據編程。例如,直接向資料庫發送請求並用HTML顯示,開發速度往往比較快,但由於數據頁面的分離不是很直接,因而很難體現出業務模型的樣子或者模型的重用性。產品設計彈性力度很小,很難滿足用戶的變化性需求。MVC要求對應用分層,雖然要花費額外的工作,但產品的結構清晰,產品的應用通過模型可以得到更好地體現。

首先,最重要的是應該有多個視圖對應一個模型的能力。在目前用戶需求的快速變化下,可能有多種方式訪問應用的要求。例如,訂單模型可能有本系統的訂單,也有網上訂單,或者其他系統的訂單,但對於訂單的處理都是一樣,也就是說訂單的處理是一致的。按MVC設計模式,一個訂單模型以及多個視圖即可解決問題。這樣減少了代碼的復制,即減少了代碼的維護量,一旦模型發生改變,也易於維護。 其次,由於模型返回的數據不帶任何顯示格式,因而這些模型也可直接應用於介面的使用。

再次,由於一個應用被分離為三層,因此有時改變其中的一層就能滿足應用的改變。一個應用的業務流程或者業務規則的改變只需改動MVC的模型層。

控制層的概念也很有效,由於它把不同的模型和不同的視圖組合在一起完成不同的請求,因此,控制層可以說是包含了用戶請求許可權的概念。

最後,它還有利於軟體工程化管理。由於不同的層各司其職,每一層不同的應用具有某些相同的特徵,有利於通過工程化、工具化產生管理程序代碼。

五、MVC的不足

MVC的不足體現在以下幾個方面:

(1)增加了系統結構和實現的復雜性。對於簡單的界面,嚴格遵循MVC,使模型、視圖與控制器分離,會增加結構的復雜性,並可能產生過多的更新操作,降低運行效率。

(2)視圖與控制器間的過於緊密的連接。視圖與控制器是相互分離,但確實聯系緊密的部件,視圖沒有控制器的存在,其應用是很有限的,反之亦然,這樣就妨礙了他們的獨立重用。

(3)視圖對模型數據的低效率訪問。依據模型操作介面的不同,視圖可能需要多次調用才能獲得足夠的顯示數據。對未變化數據的不必要的頻繁訪問,也將損害操作性能。

(4) 目前,一般高級的界面工具或構造器不支持MVC模式。改造這些工具以適應MVC需要和建立分離的部件的代價是很高的,從而造成使用MVC的困難。

㈡ 手機微信內置的瀏覽器緩存怎樣用php清除

邏輯理清:
1.
1.1如果用戶掃描帶參數的公眾號二維碼(這個微信提供有介面),未關注的用戶掃描之後如果則直接跳轉到公眾號詳情頁,詳情頁會有一個關注按鈕,關注過的用戶掃描之後會進入到公眾號的會話界面;
1.2如果用戶關注公眾號,會向你的開發者url推送一個關注消息(取關也會推送一個消息),你可以以此標記用戶的狀態(是關注,還是取關,或者只是網頁授權了一下),有了上面這個狀態,當一個微信用戶進入你開發的網頁(網頁是運行在微信內置瀏覽器里)你可以通過靜默授權的方式獲取用戶在資料庫中的狀態(即關注/取關/網頁授權)。
2.當然在開發者的網頁裡面是不能直接跳轉到公眾號的詳情頁的。
3.關注後也是不能跳轉url的

微信網頁授權

如果用戶在微信客戶端中訪問第三方網頁,公眾號可以通過微信網頁授權機制,來獲取用戶基本信息,進而實現業務邏輯。

網頁鏈接

㈢ 小米4主題能破解嗎

能。方法如下:

一、安裝前的准備

  1. ROOT手機

  2. 網路一下分別下載WSM工具箱_WSM_tools和Mi-Tools兩個軟體到電腦,然後將它們傳送到手機。

  3. 特別注意:文末下載的WSM是舊版本,小米更改了驗證機制,舊版本已失效。故:下載好舊版後,一定要在手機上先更新!

  4. 這兩個軟體都是apk格式的手機軟體,也就是說:這種方式是在手機上破解主題的,而之前的方法是在電腦上破解的。這是兩種方法的區別所在。

  5. 下載好後分別安裝他們,注意:此時不要運行這兩個程序,安裝好就行了!切記!

二、首先運行WSM工具箱

  1. 首先普及什麼是WSM工具箱

    WSM工具箱就是MIUI上的Xposed框架,基於它可以製作出許多功能強大的模塊,且在功能不沖突的情況下同時運作。對於此教程,使用WSM工具箱,就是為了集成另外那個程序Mi-Tools這個模塊的!

  2. 運行WSM工具箱,出現如下界面,然後單擊安裝。

    注意:兩個軟體一定要首先運行WSM工具箱

  3. 出現提示:DONE(安裝完成),請REBOOT(重啟)

    單擊:確定,即可重啟手機。

三、查看MI-TOOL模塊是否集成在WSM工具箱

重啟手機後,運行MI-TOOL,查看MI-TOOL主界面,MI-TOOL模塊已經集成在WSM工具箱。

四、再次運行WSM工具箱

此舉是為了打開WSM工具箱里集成好的MI-TOOLS模塊。

注意:此舉是成敗關鍵,默認是關閉的,只有打開了,才能破解主題。

重啟手機,重啟後,再把電腦上下載好的主題傳到手機上,就可以破解驗證了!再也不會說:該主題不是從官方市場下載!

五、到電腦上破解下載主題

  1. 把下載好的主題拷貝手機根目錄或SD卡中

  2. 打開「小米主題」軟體,然後選擇「我的主題」

  3. 按功能鍵,選擇從SD導入主題包就行了!

㈣ php怎麼處理高並發

以下內容轉載自徐漢彬大牛的博客億級Web系統搭建——單機到分布式集群

當一個Web系統從日訪問量10萬逐步增長到1000萬,甚至超過1億的過程中,Web系統承受的壓力會越來越大,在這個過程中,我們會遇到很多的問題。為了解決這些性能壓力帶來問題,我們需要在Web系統架構層面搭建多個層次的緩存機制。在不同的壓力階段,我們會遇到不同的問題,通過搭建不同的服務和架構來解決。

Web負載均衡

Web負載均衡(Load Balancing),簡單地說就是給我們的伺服器集群分配「工作任務」,而採用恰當的分配方式,對於保護處於後端的Web伺服器來說,非常重要。

負載均衡的策略有很多,我們從簡單的講起哈。

1.HTTP重定向

當用戶發來請求的時候,Web伺服器通過修改HTTP響應頭中的Location標記來返回一個新的url,然後瀏覽器再繼續請求這個新url,實際上就是頁面重定向。通過重定向,來達到「負載均衡」的目標。例如,我們在下載PHP源碼包的時候,點擊下載鏈接時,為了解決不同國家和地域下載速度的問題,它會返回一個離我們近的下載地址。重定向的HTTP返回碼是302

這個重定向非常容易實現,並且可以自定義各種策略。但是,它在大規模訪問量下,性能不佳。而且,給用戶的體驗也不好,實際請求發生重定向,增加了網路延時。

2. 反向代理負載均衡

反向代理服務的核心工作主要是轉發HTTP請求,扮演了瀏覽器端和後台Web伺服器中轉的角色。因為它工作在HTTP層(應用層),也就是網路七層結構中的第七層,因此也被稱為「七層負載均衡」。可以做反向代理的軟體很多,比較常見的一種是Nginx。

Nginx是一種非常靈活的反向代理軟體,可以自由定製化轉發策略,分配伺服器流量的權重等。反向代理中,常見的一個問題,就是Web伺服器存儲的session數據,因為一般負載均衡的策略都是隨機分配請求的。同一個登錄用戶的請求,無法保證一定分配到相同的Web機器上,會導致無法找到session的問題。

解決方案主要有兩種:

1.配置反向代理的轉發規則,讓同一個用戶的請求一定落到同一台機器上(通過分析cookie),復雜的轉發規則將會消耗更多的CPU,也增加了代理伺服器的負擔。

2.將session這類的信息,專門用某個獨立服務來存儲,例如redis/memchache,這個方案是比較推薦的。

反向代理服務,也是可以開啟緩存的,如果開啟了,會增加反向代理的負擔,需要謹慎使用。這種負載均衡策略實現和部署非常簡單,而且性能表現也比較好。但是,它有「單點故障」的問題,如果掛了,會帶來很多的麻煩。而且,到了後期Web伺服器繼續增加,它本身可能成為系統的瓶頸。

3. IP負載均衡

IP負載均衡服務是工作在網路層(修改IP)和傳輸層(修改埠,第四層),比起工作在應用層(第七層)性能要高出非常多。原理是,他是對IP層的數據包的IP地址和埠信息進行修改,達到負載均衡的目的。這種方式,也被稱為「四層負載均衡」。常見的負載均衡方式,是LVS(Linux Virtual Server,Linux虛擬服務),通過IPVS(IP Virtual Server,IP虛擬服務)來實現。

在負載均衡伺服器收到客戶端的IP包的時候,會修改IP包的目標IP地址或埠,然後原封不動地投遞到內部網路中,數據包會流入到實際Web伺服器。實際伺服器處理完成後,又會將數據包投遞回給負載均衡伺服器,它再修改目標IP地址為用戶IP地址,最終回到客戶端。

上述的方式叫LVS-NAT,除此之外,還有LVS-RD(直接路由),LVS-TUN(IP隧道),三者之間都屬於LVS的方式,但是有一定的區別,篇幅問題,不贅敘。

IP負載均衡的性能要高出Nginx的反向代理很多,它只處理到傳輸層為止的數據包,並不做進一步的組包,然後直接轉發給實際伺服器。不過,它的配置和搭建比較復雜。

4. DNS負載均衡

DNS(Domain Name System)負責域名解析的服務,域名url實際上是伺服器的別名,實際映射是一個IP地址,解析過程,就是DNS完成域名到IP的映射。而一個域名是可以配置成對應多個IP的。因此,DNS也就可以作為負載均衡服務。

這種負載均衡策略,配置簡單,性能極佳。但是,不能自由定義規則,而且,變更被映射的IP或者機器故障時很麻煩,還存在DNS生效延遲的問題。

5. DNS/GSLB負載均衡

我們常用的CDN(Content Delivery Network,內容分發網路)實現方式,其實就是在同一個域名映射為多IP的基礎上更進一步,通過GSLB(Global Server Load Balance,全局負載均衡)按照指定規則映射域名的IP。一般情況下都是按照地理位置,將離用戶近的IP返回給用戶,減少網路傳輸中的路由節點之間的跳躍消耗。

「向上尋找」,實際過程是LDNS(Local DNS)先向根域名服務(Root Name Server)獲取到頂級根的Name Server(例如.com的),然後得到指定域名的授權DNS,然後再獲得實際伺服器IP。

CDN在Web系統中,一般情況下是用來解決大小較大的靜態資源(html/Js/Css/圖片等)的載入問題,讓這些比較依賴網路下載的內容,盡可能離用戶更近,提升用戶體驗。

例如,我訪問了一張imgcache.gtimg.cn上的圖片(騰訊的自建CDN,不使用qq.com域名的原因是防止http請求的時候,帶上了多餘的cookie信息),我獲得的IP是183.60.217.90。

這種方式,和前面的DNS負載均衡一樣,不僅性能極佳,而且支持配置多種策略。但是,搭建和維護成本非常高。互聯網一線公司,會自建CDN服務,中小型公司一般使用第三方提供的CDN。

Web系統的緩存機制的建立和優化

剛剛我們講完了Web系統的外部網路環境,現在我們開始關注我們Web系統自身的性能問題。我們的Web站點隨著訪問量的上升,會遇到很多的挑戰,解決這些問題不僅僅是擴容機器這么簡單,建立和使用合適的緩存機制才是根本。

最開始,我們的Web系統架構可能是這樣的,每個環節,都可能只有1台機器。

我們從最根本的數據存儲開始看哈。

一、 MySQL資料庫內部緩存使用

MySQL的緩存機制,就從先從MySQL內部開始,下面的內容將以最常見的InnoDB存儲引擎為主。

1. 建立恰當的索引

最簡單的是建立索引,索引在表數據比較大的時候,起到快速檢索數據的作用,但是成本也是有的。首先,佔用了一定的磁碟空間,其中組合索引最突出,使用需要謹慎,它產生的索引甚至會比源數據更大。其次,建立索引之後的數據insert/update/delete等操作,因為需要更新原來的索引,耗時會增加。當然,實際上我們的系統從總體來說,是以select查詢操作居多,因此,索引的使用仍然對系統性能有大幅提升的作用。

2. 資料庫連接線程池緩存

如果,每一個資料庫操作請求都需要創建和銷毀連接的話,對資料庫來說,無疑也是一種巨大的開銷。為了減少這類型的開銷,可以在MySQL中配置thread_cache_size來表示保留多少線程用於復用。線程不夠的時候,再創建,空閑過多的時候,則銷毀。

其實,還有更為激進一點的做法,使用pconnect(資料庫長連接),線程一旦創建在很長時間內都保持著。但是,在訪問量比較大,機器比較多的情況下,這種用法很可能會導致「資料庫連接數耗盡」,因為建立連接並不回收,最終達到資料庫的max_connections(最大連接數)。因此,長連接的用法通常需要在CGI和MySQL之間實現一個「連接池」服務,控制CGI機器「盲目」創建連接數。

建立資料庫連接池服務,有很多實現的方式,PHP的話,我推薦使用swoole(PHP的一個網路通訊拓展)來實現。

3. Innodb緩存設置(innodb_buffer_pool_size)

innodb_buffer_pool_size這是個用來保存索引和數據的內存緩存區,如果機器是MySQL獨占的機器,一般推薦為機器物理內存的80%。在取表數據的場景中,它可以減少磁碟IO。一般來說,這個值設置越大,cache命中率會越高。

4. 分庫/分表/分區。

MySQL資料庫表一般承受數據量在百萬級別,再往上增長,各項性能將會出現大幅度下降,因此,當我們預見數據量會超過這個量級的時候,建議進行分庫/分表/分區等操作。最好的做法,是服務在搭建之初就設計為分庫分表的存儲模式,從根本上杜絕中後期的風險。不過,會犧牲一些便利性,例如列表式的查詢,同時,也增加了維護的復雜度。不過,到了數據量千萬級別或者以上的時候,我們會發現,它們都是值得的。

二、 MySQL資料庫多台服務搭建

1台MySQL機器,實際上是高風險的單點,因為如果它掛了,我們Web服務就不可用了。而且,隨著Web系統訪問量繼續增加,終於有一天,我們發現1台MySQL伺服器無法支撐下去,我們開始需要使用更多的MySQL機器。當引入多台MySQL機器的時候,很多新的問題又將產生。

1. 建立MySQL主從,從庫作為備份

這種做法純粹為了解決「單點故障」的問題,在主庫出故障的時候,切換到從庫。不過,這種做法實際上有點浪費資源,因為從庫實際上被閑著了。

2. MySQL讀寫分離,主庫寫,從庫讀。

兩台資料庫做讀寫分離,主庫負責寫入類的操作,從庫負責讀的操作。並且,如果主庫發生故障,仍然不影響讀的操作,同時也可以將全部讀寫都臨時切換到從庫中(需要注意流量,可能會因為流量過大,把從庫也拖垮)。

3. 主主互備。

兩台MySQL之間互為彼此的從庫,同時又是主庫。這種方案,既做到了訪問量的壓力分流,同時也解決了「單點故障」問題。任何一台故障,都還有另外一套可供使用的服務。

不過,這種方案,只能用在兩台機器的場景。如果業務拓展還是很快的話,可以選擇將業務分離,建立多個主主互備。

三、 MySQL資料庫機器之間的數據同步

每當我們解決一個問題,新的問題必然誕生在舊的解決方案上。當我們有多台MySQL,在業務高峰期,很可能出現兩個庫之間的數據有延遲的場景。並且,網路和機器負載等,也會影響數據同步的延遲。我們曾經遇到過,在日訪問量接近1億的特殊場景下,出現,從庫數據需要很多天才能同步追上主庫的數據。這種場景下,從庫基本失去效用了。

於是,解決同步問題,就是我們下一步需要關注的點。

1. MySQL自帶多線程同步

MySQL5.6開始支持主庫和從庫數據同步,走多線程。但是,限制也是比較明顯的,只能以庫為單位。MySQL數據同步是通過binlog日誌,主庫寫入到binlog日誌的操作,是具有順序的,尤其當SQL操作中含有對於表結構的修改等操作,對於後續的SQL語句操作是有影響的。因此,從庫同步數據,必須走單進程。

2. 自己實現解析binlog,多線程寫入。

以資料庫的表為單位,解析binlog多張表同時做數據同步。這樣做的話,的確能夠加快數據同步的效率,但是,如果表和表之間存在結構關系或者數據依賴的話,則同樣存在寫入順序的問題。這種方式,可用於一些比較穩定並且相對獨立的數據表。

國內一線互聯網公司,大部分都是通過這種方式,來加快數據同步效率。還有更為激進的做法,是直接解析binlog,忽略以表為單位,直接寫入。但是這種做法,實現復雜,使用范圍就更受到限制,只能用於一些場景特殊的資料庫中(沒有表結構變更,表和表之間沒有數據依賴等特殊表)。

四、 在Web伺服器和資料庫之間建立緩存

實際上,解決大訪問量的問題,不能僅僅著眼於資料庫層面。根據「二八定律」,80%的請求只關注在20%的熱點數據上。因此,我們應該建立Web伺服器和資料庫之間的緩存機制。這種機制,可以用磁碟作為緩存,也可以用內存緩存的方式。通過它們,將大部分的熱點數據查詢,阻擋在資料庫之前。

1. 頁面靜態化

用戶訪問網站的某個頁面,頁面上的大部分內容在很長一段時間內,可能都是沒有變化的。例如一篇新聞報道,一旦發布幾乎是不會修改內容的。這樣的話,通過CGI生成的靜態html頁面緩存到Web伺服器的磁碟本地。除了第一次,是通過動態CGI查詢資料庫獲取之外,之後都直接將本地磁碟文件返回給用戶。

在Web系統規模比較小的時候,這種做法看似完美。但是,一旦Web系統規模變大,例如當我有100台的Web伺服器的時候。那樣這些磁碟文件,將會有100份,這個是資源浪費,也不好維護。這個時候有人會想,可以集中一台伺服器存起來,呵呵,不如看看下面一種緩存方式吧,它就是這樣做的。

2. 單台內存緩存

通過頁面靜態化的例子中,我們可以知道將「緩存」搭建在Web機器本機是不好維護的,會帶來更多問題(實際上,通過PHP的apc拓展,可通過Key/value操作Web伺服器的本機內存)。因此,我們選擇搭建的內存緩存服務,也必須是一個獨立的服務。

內存緩存的選擇,主要有redis/memcache。從性能上說,兩者差別不大,從功能豐富程度上說,Redis更勝一籌。

3. 內存緩存集群

當我們搭建單台內存緩存完畢,我們又會面臨單點故障的問題,因此,我們必須將它變成一個集群。簡單的做法,是給他增加一個slave作為備份機器。但是,如果請求量真的很多,我們發現cache命中率不高,需要更多的機器內存呢?因此,我們更建議將它配置成一個集群。例如,類似redis cluster。

Redis cluster集群內的Redis互為多組主從,同時每個節點都可以接受請求,在拓展集群的時候比較方便。客戶端可以向任意一個節點發送請求,如果是它的「負責」的內容,則直接返回內容。否則,查找實際負責Redis節點,然後將地址告知客戶端,客戶端重新請求。

對於使用緩存服務的客戶端來說,這一切是透明的。

內存緩存服務在切換的時候,是有一定風險的。從A集群切換到B集群的過程中,必須保證B集群提前做好「預熱」(B集群的內存中的熱點數據,應該盡量與A集群相同,否則,切換的一瞬間大量請求內容,在B集群的內存緩存中查找不到,流量直接沖擊後端的資料庫服務,很可能導致資料庫宕機)。

4. 減少資料庫「寫」

上面的機制,都實現減少資料庫的「讀」的操作,但是,寫的操作也是一個大的壓力。寫的操作,雖然無法減少,但是可以通過合並請求,來起到減輕壓力的效果。這個時候,我們就需要在內存緩存集群和資料庫集群之間,建立一個修改同步機制。

先將修改請求生效在cache中,讓外界查詢顯示正常,然後將這些sql修改放入到一個隊列中存儲起來,隊列滿或者每隔一段時間,合並為一個請求到資料庫中更新資料庫。

除了上述通過改變系統架構的方式提升寫的性能外,MySQL本身也可以通過配置參數innodb_flush_log_at_trx_commit來調整寫入磁碟的策略。如果機器成本允許,從硬體層面解決問題,可以選擇老一點的RAID(Rendant Arrays of independent Disks,磁碟列陣)或者比較新的SSD(Solid State Drives,固態硬碟)。

5. NoSQL存儲

不管資料庫的讀還是寫,當流量再進一步上漲,終會達到「人力有窮時」的場景。繼續加機器的成本比較高,並且不一定可以真正解決問題的時候。這個時候,部分核心數據,就可以考慮使用NoSQL的資料庫。NoSQL存儲,大部分都是採用key-value的方式,這里比較推薦使用上面介紹過Redis,Redis本身是一個內存cache,同時也可以當做一個存儲來使用,讓它直接將數據落地到磁碟。

這樣的話,我們就將資料庫中某些被頻繁讀寫的數據,分離出來,放在我們新搭建的Redis存儲集群中,又進一步減輕原來MySQL資料庫的壓力,同時因為Redis本身是個內存級別的Cache,讀寫的性能都會大幅度提升。

國內一線互聯網公司,架構上採用的解決方案很多是類似於上述方案,不過,使用的cache服務卻不一定是Redis,他們會有更豐富的其他選擇,甚至根據自身業務特點開發出自己的NoSQL服務。

6. 空節點查詢問題

當我們搭建完前面所說的全部服務,認為Web系統已經很強的時候。我們還是那句話,新的問題還是會來的。空節點查詢,是指那些資料庫中根本不存在的數據請求。例如,我請求查詢一個不存在人員信息,系統會從各級緩存逐級查找,最後查到到資料庫本身,然後才得出查找不到的結論,返回給前端。因為各級cache對它無效,這個請求是非常消耗系統資源的,而如果大量的空節點查詢,是可以沖擊到系統服務的。

在我曾經的工作經歷中,曾深受其害。因此,為了維護Web系統的穩定性,設計適當的空節點過濾機制,非常有必要。

我們當時採用的方式,就是設計一張簡單的記錄映射表。將存在的記錄存儲起來,放入到一台內存cache中,這樣的話,如果還有空節點查詢,則在緩存這一層就被阻擋了。

異地部署(地理分布式)

完成了上述架構建設之後,我們的系統是否就已經足夠強大了呢?答案當然是否定的哈,優化是無極限的。Web系統雖然表面上看,似乎比較強大了,但是給予用戶的體驗卻不一定是最好的。因為東北的同學,訪問深圳的一個網站服務,他還是會感到一些網路距離上的慢。這個時候,我們就需要做異地部署,讓Web系統離用戶更近。

一、 核心集中與節點分散

有玩過大型網游的同學都會知道,網游是有很多個區的,一般都是按照地域來分,例如廣東專區,北京專區。如果一個在廣東的玩家,去北京專區玩,那麼他會感覺明顯比在廣東專區卡。實際上,這些大區的名稱就已經說明了,它的伺服器所在地,所以,廣東的玩家去連接地處北京的伺服器,網路當然會比較慢。

當一個系統和服務足夠大的時候,就必須開始考慮異地部署的問題了。讓你的服務,盡可能離用戶更近。我們前面已經提到了Web的靜態資源,可以存放在CDN上,然後通過DNS/GSLB的方式,讓靜態資源的分散「全國各地」。但是,CDN只解決的靜態資源的問題,沒有解決後端龐大的系統服務還只集中在某個固定城市的問題。

這個時候,異地部署就開始了。異地部署一般遵循:核心集中,節點分散。

·核心集中:實際部署過程中,總有一部分的數據和服務存在不可部署多套,或者部署多套成本巨大。而對於這些服務和數據,就仍然維持一套,而部署地點選擇一個地域比較中心的地方,通過網路內部專線來和各個節點通訊。

·節點分散:將一些服務部署為多套,分布在各個城市節點,讓用戶請求盡可能選擇近的節點訪問服務。

例如,我們選擇在上海部署為核心節點,北京,深圳,武漢,上海為分散節點(上海自己本身也是一個分散節點)。我們的服務架構如圖:

需要補充一下的是,上圖中上海節點和核心節點是同處於一個機房的,其他分散節點各自獨立機房。
國內有很多大型網游,都是大致遵循上述架構。它們會把數據量不大的用戶核心賬號等放在核心節點,而大部分的網游數據,例如裝備、任務等數據和服務放在地區節點里。當然,核心節點和地域節點之間,也有緩存機制。

二、 節點容災和過載保護

節點容災是指,某個節點如果發生故障時,我們需要建立一個機制去保證服務仍然可用。毫無疑問,這里比較常見的容災方式,是切換到附近城市節點。假如系統的天津節點發生故障,那麼我們就將網路流量切換到附近的北京節點上。考慮到負載均衡,可能需要同時將流量切換到附近的幾個地域節點。另一方面,核心節點自身也是需要自己做好容災和備份的,核心節點一旦故障,就會影響全國服務。

過載保護,指的是一個節點已經達到最大容量,無法繼續接接受更多請求了,系統必須有一個保護的機制。一個服務已經滿負載,還繼續接受新的請求,結果很可能就是宕機,影響整個節點的服務,為了至少保障大部分用戶的正常使用,過載保護是必要的。

解決過載保護,一般2個方向:

·拒絕服務,檢測到滿負載之後,就不再接受新的連接請求。例如網游登入中的排隊。

·分流到其他節點。這種的話,系統實現更為復雜,又涉及到負載均衡的問題。

小結

Web系統會隨著訪問規模的增長,漸漸地從1台伺服器可以滿足需求,一直成長為「龐然大物」的大集群。而這個Web系統變大的過程,實際上就是我們解決問題的過程。在不同的階段,解決不同的問題,而新的問題又誕生在舊的解決方案之上。

系統的優化是沒有極限的,軟體和系統架構也一直在快速發展,新的方案解決了老的問題,同時也帶來新的挑戰。

㈤ 新買的小米為什麼主題換不了

客服說是系統的問題 會在下次升級的時候優化 如果更換主題確實沒用 請選擇設置-系統-關於手機-恢復出廠設置-清空所有數據,重啟後就好了,我剛剛問了客服回來,清了之後我的主題和字體都可以配置了。

㈥ 金和通的金和通的優勢

1、更方便
①只需安裝一次
從網站下載金和通安裝包或獲得金和通安裝光碟後,在伺服器端安裝一次,做好相應部署,貴企業所有用戶就可以在企業網路環境(區域網或廣域網)中使用金和通。
②完全基於Web
依靠金和通,用戶即可通過桌面瀏覽器和WAP瀏覽器與身邊的同事,異地的客戶,跨國供應商等實現愉快的溝通。
③無需培訓即可使用
在用戶體驗上,金和通取個人常用即時通信工具與郵件系統之長。清晰的幫助條目和在線的幫助渠道能讓用戶在使用過程中倍感輕松。2、更高效
①組織結構完全展現
對於有一定規模的企業,金和通可以醒目且詳細的顯示組織結構,輔以關聯下級,多條件查詢等功能,從而使您能夠快捷地找到溝通對象。
②發送明細及時提醒
當發送相對復雜的尋呼(發送人多,附件多),在發送之前,可以先仔細檢查一下發送狀態,從而有效避免錯誤,疏漏,重復現象。
③與其他業務系統無縫集成
金和通有開放的訪問介面與二次開發介面,可與企業其他業務系統(OA、CRM、ERP等)實現實時協同。
3、更精確
①主送、抄送、密送功能
當發送尋呼時,可設置相應的接受人類別,使責任更明確,精確的尋呼發送方式和接受情況有效避免了扯皮和責任推諉現象。
②尋呼的串聯
具有相關性的尋呼可以自動串聯在一起,溝通的來龍去脈一目瞭然。此外,尋呼列表中,附件、時間、內容等精確陳列,呈現更趨合理。 更大、更全面的展示視圖,清晰地展現企業內部多層次組織架構,便於每個員工迅速融入企業中。即使在彼此不認識的情況下,根據部門屬性找到相關人員進行溝通協作,可極大提高內部溝通效率。如組織機構變換,只需在伺服器端快捷的做配置。
①支持一人多職,更符合中國企業組織實際情況,解決了多數同類軟體不能有效解決兼職的問題。
②支持虛擬組織,企業還可將生意夥伴(供應商和客戶)加入組織機構形成虛擬組織機構,讓企業的溝通范圍更加廣泛,並且絲毫不增加生意夥伴的負擔。
5、得心應手的實現個人設定根據實際工作的需要,你可以按項目、業務、職務等自建多個團組以加速你的溝通協作。用戶可預設不同時間段的狀態(如離開,會議等,可隨意編輯)。這樣,別人與你進行溝通前就可准確獲知你的狀態,並根據你的狀態決定與你溝通的最佳時機。改良了多數溝通工具需要主動設置「消息回執」的功能,系統中每個尋呼都有詳細的尋呼回執,可看到對方是否已接受以及精確的接收時間。
6、零成本擁有
信息化成本=軟體+硬體+培訓+維護等。金和通完全免費(200用戶內),其使用的MySQL資料庫和Apache Web伺服器也是完全免費且性能穩定高效,並無需額外硬體投入。
使用簡單便捷,無須培訓,全員即可輕松上手。
■ 支持WAP訪問方式,隨時隨地進行溝通安裝包內置WAP應用,支持手機上網的用戶收發尋呼更方便。
■ 獨享金和產品用戶專屬的金和社區服務金和社區服務平台是面向金和客戶開放的增值服務系統,是金和產品應用的有效延伸。該平檯面向廣大客戶的白領階層,將協同管理軟體產品與服務提供方式便捷、有機的整合在一起,客戶通過點擊產品中的「在線服務」,即可訪問金和社區。
社區除了提供標准支持服務外,還增設了自助服務、案例技巧分享、成果展示、白領個性化空間、服務提醒、互動課堂、金融資訊、健康養生等一系列增值服務功能,面向客戶完全開放許可權,不設置「門檻」。讓廣大的金和產品用戶(個人/企業)在享受金和「精確服務」的同時,獲得更多便捷和超乎想像的收益和體驗。
■ 您值得信賴的技術架構體系金和通基於成熟穩定、性價比高的AMP(Apach+MySQL+PHP)技術開發,採用三層架構體系,應用MVC設計模式,運用了大量先進的諸如Ajax、Ext等web2.0的技術,增強了系統的柔性和開放性,是一套高度封裝、簡單易用、方便推廣的企業即時溝通平台。平台體系架構採用三層架構體系,分別是表示層、中間層、數據層,實現了「高內聚,低耦合」的設計思想。 金和,中國協同信息化領域第一品牌。十餘年來,一直致力於將精確管理理論融入中國企業管理,金和的C6,IOA等協同軟體產品線已經累積了上萬家企業用戶。
經過這些用戶的實踐,金和發現,在使用過程中,有一個模塊擁有100%的使用率。這就是金和協同軟體產品的核心模塊-網路尋呼,這說明在各種企業內部,都有穩定的即時交流需求,這也是企業日常工作和運營的關鍵需求。
經過深思熟慮之後,金和決定以網路尋呼模塊,結合精確管理理論與中國企業實際需求,開發出一款能讓中國企業都能永久免費使用的即時通信軟體,降低企業溝通成本,實現企業高效精確溝通,從而給企業實現協同管理奠定基礎。
讓更多的企業享受精確管理,這就是金和作為公眾公司的義務。全心全意為人民服務,是金和不斷推陳出新,完善產品的最終目標。 ■ 組織結構及人員管理系統提供最多五級組織結構,支持部門顯示順序的調整。
■ 系統支持用戶兼職、面向用戶進行授權、用戶許可權查看、密碼有效期設置等。
■ 組織結構及人員導入導出系統支持Excel格式部門和人員的數據文件的導入導出,並提供導入模板下載。通過方便的導入導出,讓你高效快速部署金和通。
■ 發送內部通知授權用戶可通過全選人員發送網路尋呼,相當於一個方便的公司內部通知。
■ 伺服器管理:啟動、停止、重啟、軟體升級管理員可方便地管理金和通相關服務:啟動、停止、重啟;軟體升級方式同樣採用一鍵式安裝升級包。
■ 許可權管理金和通許可權管理採用標準的按角色授權機制並支持對許可權范圍進行控制,可對角色綁定多個用戶也可對用戶綁定多個角色。
■ 系統設置通過系統設置,可以集中配置系統可使用的郵箱伺服器,使系統內部用戶只能使用系統配置的郵箱服務,配置更方便,發送接收郵件更安全。 ■ 發送尋呼
① 離線發送尋呼:發送尋呼不用關心對方是否在線,在線用戶將立即收到尋呼,離線用戶登錄上線後也將獲取到尋呼提醒通知。
②消息回執 拋棄了傳統溝通工具需要主動設置「消息回執」的功能,系統中每個尋呼都有詳細的尋呼回執,可看到對方是否已接受以及准確的接收時間。
③ 按織結構方式尋呼:系統默認提供按組織結構方式發送尋呼,組織結構方式為金和獨創的大視圖組織結構展現方式。
④ 按團組發送尋呼:你根據工作和項目的需要可以創建自己的多個團組,通過團組方式發送尋呼更方便、更快捷。
⑤ 尋呼優先順序:系統將尋呼分為普通尋呼和緊急尋呼,在發送前可以設置,緊急尋呼位於用戶的未閱尋呼列表的靠前位置,同時緊急尋呼有「!」標示。
⑥ 快速發送:通過使用自定義短語和尋呼快捷發送鍵「Ctrl+Enter」讓你發送尋呼更方便快捷。
⑦集中統一消息發送入口:用戶通過集中入口可同時亦可單獨發送內部網路尋呼、郵件。
■ 多方式未閱尋呼提醒
用戶收到新尋呼後,系統將在右下腳以彈出窗口方式提醒用戶,同時有聲音提醒。
如果你不在機器旁回來後系統將通過導航菜單的未閱尋呼菜單項和系統右下腳的閃爍圖標提示你有新的未閱尋呼及未閱條數。
■ 回復尋呼和轉發尋呼用戶根據需要可以對已發尋呼、已收尋呼、保留尋呼進行回復和轉發。
■ 保留尋呼系統的「保留尋呼」功能相當與「尋呼收藏夾」,用戶可以將重點關注的尋呼進行保留。
■ 查詢尋呼用戶可以方便的查詢自己的已發尋呼和已收尋呼,尋呼查詢條件包括尋呼起止日期、發送人、接受人、尋呼內容、附件等。
■ 管理尋呼部門領導或授權用戶可以通過「管理尋呼」查看其許可權范圍內用戶的尋呼溝通記錄,包括已發尋呼和已收尋呼,並可根據需要通過回復進行指點,通過轉發讓更多人進行關注和了解;同時可以根據工作需要對相關尋呼進行刪除。
■ 狀態管理除了提供多數溝通工具提供的即時切換系統提供的狀態外,金和通提供了強大的自定義狀態管理功能,通過該功能,你可以預先定好不同時間段的狀態(狀態可以自己隨意編輯),系統會定時調整你的狀態為你預設的狀態,同時自定義狀態也可以作為自己每天的備忘錄和定時器,別人與你進行溝通前可准確獲知你的狀態,會根據你的狀態決定與你溝通的最佳時機。
■ 個人設置系統提供的個人設置可以設置個人基本信息、聯系信息、個性簽名,也可以上傳多種格式的形象照片。
■ 團組管理在工作中,你與部分同事可能會因為項目的原因溝通的頻率比較高,但你們可能來自不同的部門,在龐大的組織結構中,每次溝通前找人都是比較痛苦和低效的。通過團組管理,你可以根據項目和工作需要,將經常需要溝通的同事加入自定義團組,這樣每次溝通時通過「我的團組」就可以實現快速高效溝通。
■ 企業通訊錄發送尋呼中的組織結構列表同時也是一個高效的「企業通訊錄」,通過該功能你可以快速定位到你要找的人,並可以快速獲取目標用戶的概要信息和詳細信息。
■ 通訊錄查詢發送尋呼提供了強大的用戶查詢功能,你可以通過姓名、用戶ID號、手機號、拼音碼快速地模糊匹配查詢到目標用戶。 伺服器端環境: 在線用戶數 CPU/內核
(主頻1.6GHZ) 內存 操作系統 50 1 1G Windows XP 以上 100 2 2G Windows 2000以上 150 3 2G Windows 2000以上 200 4 2G以上 Windows 2000以上 其他:
金和通安裝包內置:
APACHE2,MYSQL5 ,PHP5,ZEND Optimizer-3.3.0
客戶端使用環境:
1) Windows 系列操作系統,IE6,IE7。
2) 支持WAP1.2以上可上網手機

㈦ 怎樣將訪問URL變成REST風格

我覺得問題很好:REST -- REpresentational State Transfer 直接翻譯:表現層狀態轉移。這個中文直譯經常出現在很多博客中。尼瑪誰聽得懂「表現層狀態轉移」?這是人話嗎?我自己也困惑了很久,查詢了很多資料,花了差不多一年有個還算清晰的理解。分享如下:

@Ivony
老師的一句話概括很精闢:
URL定位資源,用HTTP動詞(GET,POST,DELETE,DETC)描述操作。

--- 簡潔版 ---

0. REST不是"rest"這個單詞,而是幾個單詞縮寫。但即使那幾個單詞說出來,也無法理解在說什麼 -_-!! (不是要貶低人,是我自己也理解困難);
1. REST描述的是在網路中client和server的一種交互形式;REST本身不實用,實用的是如何設計 RESTful API(REST風格的網路介面);
2. Server提供的RESTful API中,URL中只使用名詞來指定資源,原則上不使用動詞。「資源」是REST架構或者說整個網路處理的核心。比如:
http://api.qc.com/v1/newsfeed: 獲取某人的新鮮;
http://api.qc.com/v1/friends: 獲取某人的好友列表;
http://api.qc.com/v1/profile: 獲取某人的詳細信息;3. 用HTTP協議里的動詞來實現資源的添加,修改,刪除等操作。即通過HTTP動詞來實現資源的狀態扭轉:
GET 用來獲取資源,
POST 用來新建資源(也可以用於更新資源),
PUT 用來更新資源,
DELETE 用來刪除資源。比如:
DELETE http://api.qc.com/v1/friends: 刪除某人的好友 (在http parameter指定好友id)
POST http://api.qc.com/v1/friends: 添加好友
UPDATE http://api.qc.com/v1/profile: 更新個人資料
禁止使用: GET http://api.qc.com/v1/deleteFriend 圖例:
<img src="https://pic1.mg.com/_b.jpg" data-rawwidth="1328" data-rawheight="702" class="origin_image zh-lightbox-thumb" width="1328" data-original="https://pic1.mg.com/_r.jpg">

4. Server和Client之間傳遞某資源的一個表現形式,比如用JSON,XML傳輸文本,或者用JPG,WebP傳輸圖片等。當然還可以壓縮HTTP傳輸時的數據(on-wire data compression)。
5. 用 HTTP Status Code傳遞Server的狀態信息。比如最常用的 200 表示成功,500 表示Server內部錯誤等。
主要信息就這么點。最後是要解放思想,Web端不再用之前典型的PHP或JSP架構,而是改為前段渲染和附帶處理簡單的商務邏輯(比如AngularJS或者BackBone的一些樣例)。Web端和Server只使用上述定義的API來傳遞數據和改變數據狀態。格式一般是JSON。iOS和android同理可得。由此可見,Web,iOS,Android和第三方開發者變為平等的角色通過一套API來共同消費Server提供的服務。

--- 詳細版 ---
先說REST名稱
REST -- REpresentational State Transfer
首先,之所以晦澀是因為前面主語被去掉了,全稱是 Resource Representational State Transfer:通俗來講就是:資源在網路中以某種表現形式進行狀態轉移。分解開來:
Resource:資源,即數據(前面說過網路的核心)。比如 newsfeed,friends等;
Representational:某種表現形式,比如用JSON,XML,JPEG等;
State Transfer:狀態變化。通過HTTP動詞實現。
REST的出處
Roy Fielding的畢業論文。這哥們參與設計HTTP協議,也是Apache Web Server項目(可惜現在已經是 nginx 的天下)的co-founder。PhD的畢業學校是 UC Irvine,Irvine在加州,有著充裕的陽光和美麗的海灘,是著名的富人區。Oculus VR 的總部就坐落於此(虛擬現實眼鏡,被FB收購,CTO為Quake和Doom的作者 John Carmack)。
眾說周知,論文都是晦澀難懂的。當年在CMU讀書的時候,很多課程都會安排每周兩篇的Paper review。現在回想起來每次寫Paper review都是我最為痛苦的時候。REST這篇博士論文毫無疑問更甚。
論文地址:Architectural Styles and the Design of Network-based Software Architectures
REST章節:Fielding Dissertation: CHAPTER 5: Representational State Transfer (REST)
REST那章我初讀了,整個論文沒有讀完 =_=
<img src="https://pic3.mg.com/_b.jpg" data-rawwidth="500" data-rawheight="375" class="origin_image zh-lightbox-thumb" width="500" data-original="https://pic3.mg.com/_r.jpg">

RESTful API
實用的是如何正確地理解 RESTful架構和設計好RESTful API。
首先為什麼要用RESTful結構呢?
大家都知道"古代"網頁是前端後端融在一起的,比如之前的PHP,JSP等。在之前的桌面時代問題不大,但是近年來移動互聯網的發展,各種類型的Client層出不窮,RESTful可以通過一套統一的介面為 Web,iOS和Android提供服務。另外對於廣大平台來說,比如Facebook platform,微博開放平台,微信公共平台等,它們不需要有顯式的前端,只需要一套提供服務的介面,於是RESTful更是它們最好的選擇。在RESTful架構下:
<img src="https://pic2.mg.com/_b.jpg" data-rawwidth="550" data-rawheight="250" class="origin_image zh-lightbox-thumb" width="550" data-original="https://pic2.mg.com/_r.jpg">
Server的API如何設計才滿足RESTful要求?
首先是簡潔版裡面的那幾點。外加一些附帶的 best practices:
1. URL root:
https://example.org/api/v1/*
https://api.example.com/v1/*2. API versioning:
可以放在URL裡面,也可以用HTTP的header:
/api/v1/
3. URI使用名詞而不是動詞,且推薦用復數。
BAD

/getProcts
/listOrders
/retrieveClientByOrder?orderId=1
GOOD

GET /procts : will return the list of all procts
POST /procts : will add a proct to the collection
GET /procts/4 : will retrieve proct #4
PATCH/PUT /procts/4 : will update proct #4
4. 保證 HEAD 和 GET 方法是安全的,不會對資源狀態有所改變(污染)。比如嚴格杜絕如下情況:
GET /deleteProct?id=1
5. 資源的地址推薦用嵌套結構。比如:
GET /friends/10375923/profile
UPDATE /profile/primaryAddress/city6. 警惕返回結果的大小。如果過大,及時進行分頁(pagination)或者加入限制(limit)。HTTP協議支持分頁(Pagination)操作,在Header中使用 Link 即可。
7. 使用正確的HTTP Status Code表示訪問狀態:HTTP/1.1: Status Code Definitions
8. 在返回結果用明確易懂的文本(String。注意返回的錯誤是要給人看的,避免用 1001 這種錯誤信息),而且適當地加入注釋。
9. 關於安全:自己的介面就用https,加上一個key做一次hash放在最後即可。考慮到國情,HTTPS在無線網路里不穩定,可以使用Application Level的加密手段把整個HTTP的payload加密。有興趣的朋友可以用手機連上電腦的共享Wi-Fi,然後用Charles監聽微信的網路請求(發照片或者刷朋友圈)。
如果是平台的API,可以用成熟但是復雜的OAuth2,新浪微博這篇:授權機制說明
各端的具體實現
如上面的圖所示,Server統一提供一套RESTful API,web+ios+android作為同等公民調用API。各端發展到現在,都有一套比較成熟的框架來幫開發者事半功倍。
-- Server --
推薦: Spring MVC 或者 Jersey 或者 Play Framework
教程:
Getting Started · Building a RESTful Web Service
-- Android --
推薦: RetroFit ( Retrofit ) 或者 Volley ( mcxiaoke/android-volley · GitHub Google官方的被block,就不貼了 )
教程:
Retrofit โ€” Getting Started and Create an Android Client
快速Android開發系列網路篇之Retrofit
-- iOS --
推薦:RestKit ( RestKit/RestKit · GitHub )
教程:
Developing RESTful iOS Apps with RestKit
-- Web --
推薦隨便搞!可以用重量級的AngularJS,也可以用輕量級 Backbone + jQuery 等。
教程:http://blog.javachen.com/2015/01/06/build-app-with-spring-boot-and-gradle/
參考:
[1]: Some REST best practices
[2]: GitHub API v3
[3]: tlhunter/consumer-centric-api-design · GitHub

㈧ 微博api開放了哪些功能用過的簡單介紹一下,謝謝!

微博開放平台是一個基於新浪微博客系統的開放的信息訂閱、分享與交流平台。微博開放平台為您提供了海量的微博信息、粉絲關系、以及隨時隨地發生的信息裂變式傳播渠道。您可以登錄平台並創建應用,使用微博平台提供的介面,創建有趣的應用或者讓您的網站具有更強的社交特性。 用微博賬號登錄經過簡單的代碼整合,並在您的網站上放置微博登錄按鈕,您的網站用戶就能夠使用微博賬號進行登錄。網站可以獲取當前用戶的用戶名、頭像圖片、當前用戶的粉絲和關注對象列表。您可以整合現有的用戶賬戶系統或者直接替換成微博的賬戶系統,幫助您提升網站的用戶注冊量和提升網站訪問數據。 使用OAuth的授權機制進行開發,在網站的顯著位置添加「與新浪微博連接」的功能,讓用戶與能夠直接點擊並登錄。 參考開發介紹:連接微博分享與動態新浪微博現有的用戶傳播體系非常完整,好友之間通過大量的信息分享帶來病毒式的傳播。平台提供了分享按鈕和動態展現插件,讓你僅僅通過幾行HTML代碼就能夠在你的網站上加入社交特性。分享的內容也會在微博網站上展現,用戶點擊鏈接後可直接進入相關內容。我們也提供了大量的 API介面幫你實現更多的特性。 內容分享:添加分享到微博的按鈕:點擊後彈出分享窗口分享內容: 獲取微博動態信息:在網站上顯示當前網站的微博信息 內容發布與綁定微博平台也提供了發布微博信息的介面,在網站上綁定微博賬戶後,您可以在網站上整合發布微博信息的功能,讓用戶在您的網站上發布的信息能夠及時的同步到微博網站上。用戶的關注者能夠及時看到微博內容,可以通過內容的鏈接或來源鏈接點擊進入網站。用戶不僅可以發布文字內容,也可以添加圖片。 可以通過賬號綁定來實時同步微博信息,讓用戶的關注者也能夠及時了解用戶的動態。 在網站上發布信息後,可以直接顯示在微博上,微博信息中會顯示來源網站,用戶可以直接點擊進入網站。 參考開發介紹: API介面其他開發環境平台上也可以開發出優秀的桌面客戶端應用和手機客戶端應用,讓用戶能夠更加方便的發布微博信息和分享內容。相關開發SDK可參見: SDK下載成功案例微博平台上已經發布了多款Web應用、網站、桌面客戶端、手機客戶端,您可以在這里查看我們的成功案例。取自" http://open.t.sina.com.cn/wiki/index.php/%E5%B9%B3%E5%8F%B0%E6%A6%82%E8%BF%B0"

㈨ 最近雲幫手升級之後更新了哪些功能啊

雲幫手在6月19日的升級中,優化和修復了以下內容:

1、開放泛解析功能;

2、新增PHP7.2版本及其擴展;

3、windows探針PHP7系列版本新增32位、64位安裝及使用;

4、windows探針新增SQL Server 2012版本安裝及使用;

5、windows探針新增IIS下強制https功能。

6、探針端優化curl超時問題;

7、優化系統管理計劃任務;

8、優化環境管理軟體安裝流程;

9、優化授權機制;

10、優化站點管理多個站點共享同一個根目錄問題;

11、優化安全防護IP黑白名單;

12、優化環境管理MySQL配置;

13、優化遠程連接功能。

14、修復已知BUG

歡迎點此體驗雲幫手

㈩ 有誰用過ecstore啊,復雜不,和ecshop有什麼區別

Ecstore是上海商派(da265)推出的是基於新一代的「電子商務解決方案驅動引擎」ECOS開發的企業級開源網上商店系統,系統是基於PHP語言及MYSQL資料庫構架開發的跨平台開源程序。目前版本分為:標准版與授權版。

主要運用於幫助企業輕松拓展網上生意;從促銷推廣到會員引入,從購物流程到訂單生成,從訂單收訂到庫房發貨,Ecstore 基礎版讓電子商務各個環節舉重若輕。

1、開源不同

Ecstore是商業程序,有開源版本,但是費用相對比較高,但是Ecstore的開發機制是很靈活的,Ecstore 基礎版採用SOA(面向服務)架構,採用模塊化開發,同時內置完善的API介面,可無縫對接第三方應用插件。

並且Ecstore 標准版引入應用程序接入機制(APP),用戶可自主選擇、添加、維護或刪除應用程序,如通過安裝APP,可便捷實現信任登錄功能。

Ecshop:是一款開源免費的通用電子商務平台構建軟體,用戶可以根據自己的商務特徵對ECSHOP進行定製,增加自己商城的特色功能。

但是無論對於開源系統的開發,還是對於不開源系統的開發,都要准尋一個問題,就是不能隨意開發。開源和不開源只是相對而說。對於不會代碼的人,開源等於不開源。對於會代碼的人,不開源,也無任何影響。

2、周邊程序不同

Ecstore:只是商派的一個平台,現在商派還基於Ecstore推出了一系列的產品,比如CRM、ERP以及saas部署的易開店等等。一步步完善了電商的生態圈。ecshop:就一個版本。

3、投入方面不同

ECSHOP前期系統投入成本較低,但開發擴展投入成本隨著業務量增長,業務復雜度變化,開發成本成倍上升。

ECStore因大量研發資源投入,固前期系統投入成本具備一定門檻,但開發擴展投入成本隨著業務量增長,業務復雜度變化,開發成本可控,且外圍專業技術服務資源可選性較為廣泛。

4、模板設計不同

Ecstore:具有強大的模板自由定製功能,內置多套模板,您可隨時更換調整,更可對每個模板進行個性化編輯,不再千人一面;清風設計也可以為您量身定製個性化模板,Ecstore免費開放模板介面,您也可以自行設計、使用全新模板。並且Ecstore的模板支持可視化編輯,很方便用戶操作。

ECSHOP:對Dreamweaver模板機制提供完美支持。可使用Dreamweaver製作和查看自己的模板。同時程序提供對模板顯示內容控制。

如可以在頁面上靈活添加指定分類的商品,或指定品牌的商品等。可隨意調整廣告的顯示,而無需手動修改模板。

5、搜索優化

Ecstore:標准版針對搜索引擎進行優化,結合用戶自定義URL等手段,在基本描述內容外,根據系統頁面分布,

針對性增加nofollow、noindex等SEO標簽,引導搜索引擎蜘蛛爬行,避免商品分類等內容重復度較高頁面出現重復,極大提升SEO效果。

ECShop:在SEO(搜索引擎優化)上,獨家支持兩種 URL 重寫方式,並且是同類軟體中第一家支持 google / yahoo / microsoft 三家共同發布的 sitemaps 0.9 網站索引規范,能夠為站點被搜索引擎收錄做到最大限度的支持和幫助。

6、數據承載

Ecstore:支持日常2500萬PV/日,峰值5000萬PV/日,強大的負載能力。

Ecshop:支持日常2500PV/日,峰值5000PV/日。

7、促銷模式

ECstore:擁有業內領先的促銷引擎,可結合商品、訂單屬性,實現千變萬化的促銷規則,默認可支持近200種促銷規則實例,更可支持訂單重量、商品類型、商品數量等等數百種條件組合。

ECSHOP:提供了積分、紅包、贈品,奪寶奇兵等7種促銷方法。

8、常規功能

Ecstore:控制面板立足於「系統配置、數據管理、地區管理、支付管理和配送設置」 等,做到准確到位,全局管控;訂單系統Ecstore擁有先進訂單管理系統,從「訂單確認、訂單指派、單據管理,到售後服務管理」,結構清晰、邏輯規范,用戶輕松上手。

Ecshop:針對常規功能尤其是後台管理和購物流程,ECShop進行了更簡潔的設計,實現更好的用戶體驗。

9、多接觸點用戶移動觸屏體驗管理

ECstore:移動觸屏組件採用最新的HTML5技術,能夠根據手機終端的不同型號進行應用的自動適配,完全各種電子銷售渠道的自動延伸和擴展,在不同的終端帶給用戶一致的用戶體驗;

微信商城基於微信平台,讓微信5億用戶更了解企業品牌,減少宣傳成本,建立企業與消費者、客戶的一對一互動和溝通,提供更好的促銷、推廣、宣傳、售後等服務,打造更具影響力的品牌形象。

Ecshop:無

10、性能方面

Ecstore:基於ShopEx自主研發的新一代電子商務引擎ECOS,提供更加安全穩定的底層架構,全方位優化系統架構,同時引入HTML靜態生成技術和多級緩存技術,減輕伺服器負擔,使得前台響應速度和系統負載能力得到極大的提升。

通過大量的測試表明,即使有較大的訪問量和數據處理時,Ecstore依然能流暢的提供各項日程服務,即使因營銷推廣如秒殺等活動造成瞬時大流量,配合ShopEx救援服務依然能確保電商平台的有序運作。

Ecshop:通過優化代碼與資料庫結構,配合ecshop獨家設計的緩存機制,在不考慮網速的情況下,網店動態頁面與純靜態頁面訪問速度相當。

11、價格

Ecstore:是商業的電子商務軟體,必須要購買他們的授權才能使用,最低的一個版本是快速啟動版,授權費是6.8W,其他更高階的版本,幾萬到幾十萬不等。

Ecshop:可以免費下載使用,但是不能用於商業,如果需要用於商業的話,需要購買他們的授權,授權費是5000元。

shopex和ecshop是目前國內流行的兩款電商軟體。

(10)php授權機制擴展閱讀:

Ecstore秉承了ShopEx產品一貫技術領先的理念,融合了ShopEx在電子商務領域多年的行業經驗,採用模塊化開發,內置完善的API介面,無縫對接第三方應用插件,提供安全、穩定的底層架構,可為企業提供快速搭建品牌旗艦在線零售平台,以及擴充多渠道銷售的解決方案。

Ecstore採用Object-ResourceMap設計,獨立的認證授權機制,嚴格安全的角色訪問控制,對核心代碼進行多級加密,對數據提供全方位、高級別的防範保護,真正確保數據安全、登錄安全、支付安全、資金安全、管理安全。

同時採用雲主機集群化的伺服器部署,以及提供全程主機運維服務,更有增值運維服務提供應用安全掃描、配置性能優化、安全加固以及營銷推廣活動造成的大流量救援服務。

Ecstore基於ShopEx自主研發的新一代電子商務引擎ECOS,提供更加安全穩定的底層架構,全方位優化系統架構,同時引入HTML靜態生成技術和多級緩存技術,減輕伺服器負擔,使得前台響應速度和系統負載能力得到極大的提升。

閱讀全文

與php授權機制相關的資料

熱點內容
php獲取文件地址 瀏覽:575
linuxsed替換字元 瀏覽:413
如何填寫國家反詐中心app注冊使用 瀏覽:789
日本影視網站 瀏覽:932
伺服器點亮埠以後有什麼特徵 瀏覽:980
51單片機定時器pwm 瀏覽:685
民國修真 瀏覽:386
php數組作為參數傳遞 瀏覽:991
運行命令查ip 瀏覽:202
漲奶吃奶小說 瀏覽:340
股票十大戰法主圖指標源碼 瀏覽:702
查看網路的命令是什麼意思 瀏覽:589
《鬼吹燈》1-8全本txt 瀏覽:336
python繪圖兩個圓代碼 瀏覽:607
python中end的用法 瀏覽:682
大概率30選股源碼 瀏覽:206
阿里雲伺服器如何鏡像 瀏覽:161
能看的 瀏覽:403
京東伺服器為什麼會崩 瀏覽:836
php超類 瀏覽:822