ASP.NET Session 詳解

[ASP.NET] Session 詳解

開發者在線 Builder.com.cn?更新時間:2008-03-23作者:黑暗凝聚力量,墮落方能自由 來源:CSDN

本文關鍵詞:?Web開發?ASP?session?詳解

本文僅代表作者個人觀點,正確與否請讀者自行研究!
閱讀本文章之前的準備

閱讀本文章前,需要讀者對以下知識有所了解。否則,閱讀過程中會在相應的內容上遇到不同程度的問題。

懂得ASP/ASP.NET編程?
了解ASP/ASP.NET的Session模型?
了解ASP.NET?Web應用程序模型?
了解ASP.NET?Web應用程序配置文件Web.config的作用、意義及使用方法?
了解Internet?Information?Services(以下簡稱IIS)的基本使用方法?
了解如何在Microsoft?SQL?Server中創建一個數據庫。


Session模型簡介

Session是什么呢?簡單來說就是服務器給客戶端的一個編號。當一臺WWW服務器運行時,可能有若干個用戶瀏覽正在運正在這臺服務器上的網站。當每個用戶首次與這臺WWW服務器建立連接時,他就與這個服務器建立了一個Session,同時服務器會自動為其分配一個SessionID,用以標識這個用戶的唯一身份。這個SessionID是由WWW服務器隨機產生的一個由24個字符組成的字符串,我們會在下面的實驗中見到它的實際樣子。

這個唯一的SessionID是有很大的實際意義的。當一個用戶提交了表單時,瀏覽器會將用戶的SessionID自動附加在HTTP頭信息中,(這是瀏覽器的自動功能,用戶不會察覺到),當服務器處理完這個表單后,將結果返回給SessionID所對應的用戶。試想,如果沒有SessionID,當有兩個用戶同時進行注冊時,服務器怎樣才能知道到底是哪個用戶提交了哪個表單呢。當然,SessionID還有很多其他的作用,我們會在后面提及到。

除了SessionID,在每個Session中還包含很多其他信息。但是對于編寫ASP或ASP.NET的程序與來說,最有用的還是可以通過訪問ASP/ASP.NET的內置Session對象,為每個用戶存儲各自的信息。例如我們想了解一下訪問我們網站的用戶瀏覽了幾個頁面,我們可能在用戶可能訪問到每個的頁面中加入:

程序代碼:
<%
If?Session("PageViewed")?=?""Then
Session("PageViewed")?=?1
Else
Session("PageViewed")?=?Session("PageViewed")?+?1
End?If
%>
?

通過以下這句話可以讓用戶得知自己瀏覽了幾個頁面:

程序代碼:
<%
Response.Write("You?have?viewed?"?&?Session("PageViewed")?&?"?pages")
%>
?

可能有些有些讀者會問:這個看似像是數組的Session(“..”)是哪里來的?需要我定義嗎?實際上,這個Session對象是具有ASP解釋能力的的WWW服務器的內建對象。也就是說ASP的系統中已經給你定義好了這個對象,你只需要使用就行了。其中Session(“..”)中的..就好像變量名稱,Session(“..”)=$$中的$$就是變量的值了。你只需要寫上句話,在這個用戶的每個頁面中都可以訪問..變量中的值了。

其實ASP一共內建了7個對象,有Session、Application、Cookie、Response、Request、Server等。在其他的服務器端腳本語言如JSP、PHP等中也有其類似的對象,只是叫法或者使用方法上不太一樣。

ASP?Session的功能的缺陷

目前ASP的開發人員都正在使用Session這一強大的功能,但是在他們使用的過程中卻發現了ASP?Session有以下缺陷:

進程依賴性:ASP?Session狀態存于IIS的進程中,也就是inetinfo.exe這個程序。所以當inetinfo.exe進程崩潰時,這些信息也就丟失。另外,重起或者關閉IIS服務都會造成信息的丟失。?
Session狀態使用范圍的局限性:剛一個用戶從一個網站訪問到另外一個網站時,這些Session信息并不會隨之遷移過去。例如:新浪網站的WWW服務器可能不止一個,一個用戶登錄之后要去各個頻道瀏覽,但是每個頻道都在不同的服務器上,如果想在這些WWW服務器共享Session信息怎么辦呢??
Cookie的依賴性:實際上客戶端的Session信息是存儲與Cookie中的,如果客戶端完全禁用掉了Cookie功能,他也就不能享受到了Session提供的功能了。
鑒于ASP?Session的以上缺陷,微軟的設計者們在設計開發?ASP.NET?Session時進行了相應的改進,完全克服了以上缺陷,使得ASP.NET?Session成為了一個更加強大的功能。

Web.config文件簡介

有的ASP.NET程序員說:Web.config文件?我從來沒有聽說過啊,可是我寫的程序不是也能很正常的運轉嗎?是的,你說得沒錯,沒有Web.config文件程序是可以正常運行的。但是,如果你做了一個大型的網站,需要對整個網站做一些整體配置,例如整個網站的頁面使用何種語言編寫的、網站的安全認證模式、Session信息存儲方式等,這時你就需要使用Web.config文件了。雖然Web.config文件中的某些選項是可以通過IIS配置的,但是如果在Web.config中也有相應的設置就會覆蓋掉IIS中的配置。而且,Web.config文件的最大的便利之處就是可以在ASP.NET頁面中通過調用System.web名字空間訪問Web.config中的設置。

Web.config有兩種,分別是服務器配置文件和Web應用程序配置文件,他們都名為Web.config。在這個配置文件中會保存當前IIS服務器中網頁的使用哪種語言編寫的、應用程序安全認證模式、Session信息存儲方式的一系列信息。這些信息是使用XML語法保存的,如果想對其編輯,使用文本編輯器就行了。

其中服務器配置文件會對IIS服務器下所有的站點中的所有應用程序起作用。在.NET?Framework?1.0中,服務器的Web.config文件是存在:WinNTMicrosoft.NETFrameworkv1.0.3705中的。

而Web應用程序配置文件Web.config則保存在各個Web應用程序中。例如:當前網站的根目錄Inetpubwwwroot,而當前的Web應用程序為MyApplication,則Web應用程序根目錄就應為:InetpubwwwrootMyApplication。如果你的網站有且只有一個Web應用程序,一般說來應用程序的根目錄就是Inetpubwwwroot。如果想添加一個Web應用程序,在IIS中添加一個具有應用程序起始點的虛擬目錄就行了。這個目錄下的文件及目錄將被視為一個Web應用程序。但是,這樣通過IIS添加Web應用程序是不會為你生成Web.config文件的。如果想創建一個帶有Web.config文件的Web應用程序,需要使用Visual?Studio.NET,新建一個Web應用程序項目。

Web應用程序的配置文件Web.config是可選的,可有可無。如果沒有,每個Web應用程序會使用服務器的Web.config配置文件。如果有,則會覆蓋服務器Web.config配置文件中相應的值。

在ASP.NET中,Web.config修改保存后會自動立刻成效,不用再像ASP中的配置文件修改后需要重新啟動Web應用程序才能生效了。

Web.config文件中的Session配置信息

打開某個應用程序的配置文件Web.config后,我們會發現以下這段:

程序代碼:
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data?source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"?
/>?


這一段就是配置應用程序是如何存儲Session信息的了。我們以下的各種操作主要是針對這一段配置展開。讓我們先看看這一段配置中所包含的內容的意思。sessionState節點的語法是這樣的:

程序代碼:
<sessionState?mode="Off|InProc|StateServer|SQLServer"
??????????????cookieless="true|false"
??????????????timeout="number?of?minutes"
??????????????stateConnectionString="tcpip=server:port"
??????????????sqlConnectionString="sql?connection?string"
??????????????stateNetworkTimeout="number?of?seconds"
/>


必須有的屬性是

屬性??????選項?????????????描述?
mode???????????????????????設置將Session信息存儲到哪里?
????????????Off??????????????設置為不使用Session功能?
????????????InProc??????????設置為將Session存儲在進程內,就是ASP中的存儲方式,這是默認值。?
????????????StateServer??設置為將Session存儲在獨立的狀態服務中。?
????????????SQLServer????設置將Session存儲在SQL?Server中。?

可選的屬性是:

屬性?????????????選項?????????????????????????????描述?
cookieless????????????????????????????????????????設置客戶端的Session信息存儲到哪里?
???????????????????ture?????????????????????????????使用Cookieless模式?
???????????????????false?????????????????????????????使用Cookie模式,這是默認值。?
???????????????????timeout????????????????????????設置經過多少分鐘后服務器自動放棄Session信息。默認為20分鐘?
???????????????????stateConnectionString????設置將Session信息存儲在狀態服務中時使用的服務器名稱和端口號,例如:"tcpip=127.0.0.1:42424”。當mode的值是StateServer是,這個屬性是必需的。?
???????????????????sqlConnectionString????????設置與SQL?Server連接時的連接字符串。例如"data?source=localhost;Integrated?Security=SSPI;Initial?Catalog=northwind"。當mode的值是SQLServer時,這個屬性是必需的。?
????????????????????stateNetworkTimeout????設置當使用StateServer模式存儲Session狀態時,經過多少秒空閑后,斷開Web服務器與存儲狀態信息的服務器的TCP/IP連接的。默認值是10秒鐘。?

ASP.NET中客戶端Session狀態的存儲
在我們上面的Session模型簡介中,大家可以發現Session狀態應該存儲在兩個地方,分別是客戶端和服務器端。客戶端只負責保存相應網站的SessionID,而其他的Session信息則保存在服務器端。在ASP中,客戶端的SessionID實際是以Cookie的形式存儲的。如果用戶在瀏覽器的設置中選擇了禁用Cookie,那末他也就無法享受Session的便利之處了,甚至造成不能訪問某些網站。為了解決以上問題,在ASP.NET中客戶端的Session信息存儲方式分為:Cookie和Cookieless兩種。

ASP.NET中,默認狀態下,在客戶端還是使用Cookie存儲Session信息的。如果我們想在客戶端使用Cookieless的方式存儲Session信息的方法如下:

找到當前Web應用程序的根目錄,打開Web.Config文件,找到如下段落:

程序代碼:
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data?source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"?
/>?


這段話中的cookieless="false"改為:cookieless="true",這樣,客戶端的Session信息就不再使用Cookie存儲了,而是將其通過URL存儲。關閉當前的IE,打開一個新IE,重新訪問剛才的Web應用程序,就會看到類似下面的樣子:



其中,黑體標出的就是客戶端的Session?ID。注意,這段信息是由IIS自動加上的,不會影響以前正常的連接。

ASP.NET中服務器端Session狀態的存儲

準備工作

為了您能更好的體驗到實驗現象,您可以建立一個叫做SessionState.aspx的頁面,然后把以下這些代碼添加到<body></body>中。

程序代碼:
<scriptrunat="server">
Sub?Session_Add(sender?As?Object,?e?As?EventArgs)
??Session("MySession")?=?text1.Value
??span1.InnerHtml?=?"Session?data?updated!?<P>Your?session?contains:?<font?color=red>"?&?
??Session("MySession").ToString()?&?"</font>"
End?Sub

Sub?CheckSession(sender?As?Object,?eAs?EventArgs)
??If?(Session("MySession")Is?Nothing)?Then
?span1.InnerHtml?=?"NOTHING,?SESSION?DATA?LOST!"
??Else
?span1.InnerHtml?=?"Your?session?contains:?<font?color=red>"?&?
?Session("MySession").ToString()?&?"</font>"
End?If
End?Sub
</script>
<formrunat="server"id="Form2">
??<inputid="text1"type="text"runat="server"name="text1">
??<inputtype="submit"runat="server"OnServerClick="Session_Add"
?value="Add?to?Session?State"?id="Submit1"name="Submit1">
??<inputtype="submit"runat="server"OnServerClick="CheckSession"
?value="View?Session?State"?id="Submit2"name="Submit2">
</form>
<hrsize="1">
<fontsize="6"><spanid="span1"runat="server"?/></font>?


這個SessionState.aspx的頁面可以用來測試在當前的服務器上是否丟失了Session信息。

將服務器Session信息存儲在進程中

讓我們來回到Web.config文件的剛才那段段落中:

程序代碼:
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data?source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"?
/>?


當mode的值是InProc時,說明服務器正在使用這種模式。

這種方式和以前ASP中的模式一樣,就是服務器將Session信息存儲在IIS進程中。當IIS關閉、重起后,這些信息都會丟失。但是這種模式也有自己最大好處,就是性能最高。應為所有的Session信息都存儲在了IIS的進程中,所以IIS能夠很快的訪問到這些信息,這種模式的性能比進程外存儲Session信息或是在SQL?Server中存儲Session信息都要快上很多。這種模式也是ASP.NET的默認方式。

好了,現在讓我們做個試驗。打開剛才的SessionState.aspx頁面,隨便輸入一些字符,使其存儲在Session中。然后,讓我們讓IIS重起。注意,并不是使當前的站點停止再開始,而是在IIS中本機的機器名的節點上點擊鼠標右鍵,選擇重新啟動IIS。(想當初使用NT4時,重新啟動IIS必須要重新啟動計算機才行,微軟真是@#$%^&)返回到SessionState.aspx頁面中,檢查剛才的Session信息,發現信息已經丟失了。

將服務器Session信息存儲在進程外

首先,讓我們來打開管理工具->服務,找到名為:ASP.NET?State?Service的服務,啟動它。實際上,這個服務就是啟動一個要保存Session信息的進程。啟動這個服務后,你可以從Windows任務管理器->進程中看到一個名為aspnet_state.exe的進程,這個就是我們保存Session信息的進程。

然后,回到Web.config文件中上述的段落中,將mode的值改為StateServer。保存文件后的重新打開一個IE,打開SessionState.aspx頁面,保存一些信息到Session中。這時,讓我們重起IIS,再回到SessionState.aspx頁面中查看剛才的Session信息,發現沒有丟失。

實際上,這種將Session信息存儲在進程外的方式不光指可以將信息存儲在本機的進程外,還可以將Session信息存儲在其他的服務器的進程中。這時,不光需要將mode的值改為StateServer,還需要在stateConnectionString中配置相應的參數。例如你的計算你是192.168.0.1,你想把Session存儲在IP為192.168.0.2的計算機的進程中,就需要設置成這樣:stateConnectionString="tcpip=192.168.0.2:42424"。當然,不要忘記在192.168.0.2的計算機中裝上.NET?Framework,并且啟動ASP.NET?State?Services服務。

將服務器Session信息存儲在SQL?Server中

首先,還是讓我們來做一些準備工作。啟動SQL?Server和SQL?Server代理服務。在SQL?Server中執行一個叫做InstallSqlState.sql的腳本文件。這個腳本文件將在SQL?Server中創建一個用來專門存儲Session信息的數據庫,及一個維護Session信息數據庫的SQL?Server代理作業。我們可以在以下路徑中找到那個文件:

程序代碼:
[system?drive]winntMicrosoft.NETFramework[version]?


然后打開查詢分析器,連接到SQL?Server服務器,打開剛才的那個文件并且執行。稍等片刻,數據庫及作業就建立好了。這時,你可以打開企業管理器,看到新增了一個叫ASPState的數據庫。但是這個數據庫中只是些存儲過程,沒有用戶表。實際上Session信息是存儲在了tempdb數據庫的ASPStateTempSessions表中的,另外一個ASPStateTempApplications表存儲了ASP中Application對象信息。這兩個表也是剛才的那個腳本建立的。另外查看管理->SQL?Server代理->作業,發現也多了一個叫做ASPState_Job_DeleteExpiredSessions的作業,這個作業實際上就是每分鐘去ASPStateTempSessions表中刪除過期的Session信息的。

接著,我們返回到Web.config文件,修改mode的值改為SQLServer。注意,還要同時修改sqlConnectionString的值,格式為:

程序代碼:
sqlConnectionString="data?source=localhost;?Integrated?Security=SSPI;"


其中data?source是指SQL?Server服務器的IP地址,如果SQL?Server與IIS是一臺機子,寫127.0.0.1就行了。Integrated?Security=SSPI的意思是使用Windows集成身份驗證,這樣,訪問數據庫將以ASP.NET的身份進行,通過如此配置,能夠獲得比使用userid=sa;password=口令的SQL?Server驗證方式更好的安全性。當然,如果SQL?Server運行于另一臺計算機上,你可能會需要通過Active?Directory域的方式來維護兩邊驗證的一致性。

同樣,讓我們做個試驗。向SessionState.aspx中添加Session信息,這時發現Session信息已經存在SQL?Server中了,即使你重起計算機,剛才的Session信息也不會丟失。現在,你已經完全看見了Session信息到底是什么樣子的了,而且又是存儲在SQL?Server中的,能干什么就看你的發揮了,哈哈。

總結

通過這篇文章,你可以看到在Session的管理和維護上,ASP.NET比ASP有了很大的進步,我們可以更加隨意的挑選適合的方法了。對于企業級的應用來說,這無疑對于服務器的同步、服務器的穩定性、可靠性都是有利的。相信在強大的微軟支持下,新一代的電子商務平臺將會搭建的更好!

同時,大家也會發現,在這個整個技術中包括了操作系統、Web服務及數據庫多種技術的整合。我相信,也許Windows沒有Unix穩定,IIS沒有Apache穩定,SQL?Server也沒有Oracle強大,但是,誰可以將他們如此完美的聯動到一起呢?所以說,雖然微軟每一方面都不是太強,但是如果把微軟的東西都整合到一起,誰敢說他不強大呢?微軟就是微軟!
歡迎加群互相學習,共同進步。QQ群:iOS: 58099570 | Android: 572064792 | Nodejs:329118122 做人要厚道,轉載請注明出處!

















本文轉自張昺華-sky博客園博客,原文鏈接:http://www.cnblogs.com/sunshine-anycall/archive/2009/01/19/1378421.html,如需轉載請自行聯系原作者


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540311.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540311.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540311.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[轉載] java給對象中的包裝類設置默認值

參考鏈接&#xff1a; Java中的對象類Object 處理方法如下 主要適用于&#xff0c;對象中使用了包裝類&#xff0c;但是不能給null需要有默認值的情況 /** * 處理對象中包裝類&#xff0c;因為快捷簽沒有用包裝類 * * param object 對象 */ public static void handlePara…

hadoop namenode管理元數據機制

一、簡要namenode管理元數據機制&#xff1a; 二、詳細namenode管理元數據機制&#xff1a; 三、secondary namenode 合并edits和fsimage&#xff1a; 四、namenode存儲元數據細節&#xff1a; 五、checkpoint觸發點&#xff1a; 本文轉自lzf0530377451CTO博客&#xff0c;原文…

[轉載] 多線程詳解java.util.concurrent

參考鏈接&#xff1a; java.lang.Object的靈活性 一、多線程 1、操作系統有兩個容易混淆的概念&#xff0c;進程和線程。 進程&#xff1a;一個計算機程序的運行實例&#xff0c;包含了需要執行的指令&#xff1b;有自己的獨立地址空間&#xff0c;包含程序內容和數據&#…

BABOK - 企業分析(Enterprise Analysis)概要

描述 企業分析描述我們如何捕捉、提煉并明晰業務需要&#xff0c;并定義一個可能實現這些業務需要的一個方案范圍&#xff0c;它包括問題定義和分析&#xff0c;業務案例開發&#xff0c;可行性研究和方案范圍定義 目的 明確業務戰略需要和目標&#xff0c;并建議方案范圍 任務…

6、EIGRP配置實驗之負載均衡

1、實驗拓撲 2、負載均衡原理 等價負載均衡&#xff1a;默認情況下EIGRP只支持等價負載均衡&#xff0c;默認支持4條線路的等價負載均衡&#xff0c;可以通過show ip protocols 查看&#xff0c;最大可以支持16條線路的等價負載均衡&#xff0c;可以在EIGRP路由進程下通過maxim…

[轉載] 詳解Java中靜態方法

參考鏈接&#xff1a; Java中的靜態類 定義&#xff1a; 在類中使用static修飾的靜態方法會隨著類的定義而被分配和裝載入內存中&#xff1b;而非靜態方法屬于對象的具體實例&#xff0c;只有在類的對象創建時在對象的內存中才有這個方法的代碼段。 注意&#xff1a; 非靜態…

[轉載] 向集合中添加自定義類型--建議在自定義類型的時候要重寫equals方法

參考鏈接&#xff1a; Java重寫equals方法 package com.bjpowernode.t01list; import java.util.ArrayList; /* * 向集合中添加自定義類型 */public class TestList04 { public static void main(String[] args) { ArrayList list new ArrayList(); Student s1 new Stude…

[轉載] java重寫toString()方法

參考鏈接&#xff1a; 在Java中重寫toString() 前言&#xff1a; 在你興高采烈的寫完一個類&#xff0c;創建測試類時&#xff0c;創建對象&#xff0c;傳入參數&#xff0c;調用對象&#xff0c;以為會得到參數值&#xff0c;但突然發現輸出的是“ 類名什么東東&#xff1f;&…

haproxy+keepalived實現負載均衡及高可用

HAProxy是一個使用C語言編寫的自由及開放源代碼軟件&#xff0c;其提供高性能性、負載均衡&#xff0c;以及基于TCP和HTTP的應用程序代理。相較與 Nginx&#xff0c;HAProxy 更專注與反向代理&#xff0c;因此它可以支持更多的選項&#xff0c;更精細的控制&#xff0c;更多的健…

[轉載] Java中變量與常量

參考鏈接&#xff1a; Java中的實例變量隱藏 1、變量的定義&#xff1a;定義變量就是要告訴編譯器這個變量的數據類型&#xff0c;這樣編譯器才知道需要分配多少空間給它&#xff0c;以及它能存放什么樣的數據。在程序運行過程中空間的值是變化的&#xff0c;這個內存空間就成…

Linux-實用快捷鍵操作

博文說明【前言】&#xff1a; 本文將通過個人口吻介紹Linux下一些常用的實用快捷鍵&#xff0c;在目前時間點【2017年6月14號】下&#xff0c;所掌握的技術水平有限&#xff0c;可能會存在不少知識理解不夠深入或全面&#xff0c;望大家指出問題共同交流&#xff0c;在后續工作…

iOS技術博客:App備案指南

&#x1f4dd; 摘要 本文介紹了移動應用程序&#xff08;App&#xff09;備案的重要性和流程。備案是規范App開發和運營的必要手段&#xff0c;有助于保護用戶權益、維護網絡安全和社會秩序。為了幫助開發者更好地了解備案流程&#xff0c;本文提供了一份最新、最全、最詳的備…

[轉載] Java中靜態成員變量,靜態代碼塊,靜態內部類何時被初始化?

參考鏈接&#xff1a; Java中的初始化程序塊Initializer Block 關于這個問題&#xff0c;本文不扯理論&#xff0c;直接上代碼&#xff0c;通過結果來驗證結論&#xff0c;廢話少說&#xff0c;測試代碼如下&#xff1a; public class StaticTest { public static StaticMem…

mikrotik dhcp server

操作路徑: /ip dhcp-server 關聯操作: /ip pool屬性 述 dhcp server interface (名稱) – 選擇 DHCP 服務的網絡接口 dhcp address space (IP 地址/掩碼; 默認: 192.168.0.0/24) – DHCP 服務器將出租給客戶端的網絡地 址段 gateway (IP 地址; 默認: 0.0.0.0) – 分配給客戶端的…

[轉載] Java static關鍵字與static{}語句塊

參考鏈接&#xff1a; Java中的靜態塊static block 目錄直通車 一、 類的加載特性與時機 1、 類加載的特性 2、 類加載的時機 二、 static的三個常用 1、 修飾成員變量 2、 修飾成員方法 3、 靜態塊&#xff08;static{}&#xff09; 一、 類的加載特性與時機 …

Perl文件讀寫操作

本文轉自 tiger506 51CTO博客&#xff0c;原文鏈接&#xff1a;http://blog.51cto.com/tiger506/830771&#xff0c;如需轉載請自行聯系原作者

[轉載] Java 語言中的實例初始化塊 ( IIB) 詳解

參考鏈接&#xff1a; Java中的實例初始化塊(IIB) 在 Java 語言中的類初始化塊 文章中我們簡單的介紹了下 Java 中的實例初始化塊 ( IIB )。不過我覺得介紹的有點簡單了&#xff0c;于是&#xff0c;再寫一篇文章詳細介紹下吧。 Java 語言中&#xff0c;存在三種操作&#x…

不用正則表達式,用javascript從零寫一個模板引擎(一)

前言 模板引擎的作用就是將模板渲染成html&#xff0c;html render(template,data)&#xff0c;常見的js模板引擎有Pug,Nunjucks,Mustache等。網上一些制作模板引擎的文章大部分是用正則表達式做一些hack工作&#xff0c;看完能收獲的東西很少。本文將使用編譯原理那套理論來打…

[轉載] Java靜態綁定與動態綁定

參考鏈接&#xff1a; Java中的靜態綁定與動態綁定 程序綁定的概念&#xff1a; 綁定指的是一個方法的調用與方法所在的類(方法主體)關聯起來。對java來說&#xff0c;綁定分為靜態綁定和動態綁定&#xff1b;或者叫做前期綁定和后期綁定. 靜態綁定&#xff1a; 在程序執行前方…

關于批量插入數據之我見(100萬級別的數據,mysql)

2019獨角獸企業重金招聘Python工程師標準>>> 因前段時間去面試&#xff0c;問到如何高效向數據庫插入10萬條記錄&#xff0c;之前沒處理過類似問題&#xff0c;也沒看過相關資料&#xff0c;結果沒答上來&#xff0c;今天就查了些資料&#xff0c;總結出三種方法&am…