知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
您當(dāng)前位置>首頁 » 新聞資訊 » 網(wǎng)站建設(shè) >
Java 學(xué)習(xí)筆記15:關(guān)于web開發(fā)中,全局變量的一點想法
發(fā)表時間:2012-12-5
發(fā)布人:葵宇科技
瀏覽次數(shù):29
在PHP開發(fā)中,我們經(jīng)常習(xí)慣于在php類中定義很多變量。這是因為php是解析型的語言,在做web開發(fā)的時候,一次解析就釋放內(nèi)存。但是Java可能就有些不同,Java是編譯型的語言,web容器運行后,類的對象就會常駐在內(nèi)存中,這個時候如果類的對象中有定義公用變量,那么就會不同的人訪問web程序?qū)е逻@個變量造成沖突。
可以看一個簡單的例子:
public int i = 0; //定義一個初始化變量 /** * 列表 * @return */ @RequestMapping(value="/list") public ModelAndView list() { ModelAndView modelAndView = new ModelAndView(); List<GuestbookDo> lists = guestbookService.findGuestbooks(); modelAndView.setViewName("test/list"); modelAndView.addObject("userList", lists); this.i++; //i自增 System.out.print(i); //控制臺輸出i return modelAndView; }
我們定義了一個i的變量。常規(guī)模式下PHP中,我們在瀏覽器中請求一下http://127.0.0.1:8090/test/list/地址,則控制臺會輸出1,然后再請求一次還是1。但是在Java中,我們可以看到結(jié)果:
所以,對于Java來說,i的變量是在內(nèi)存中常駐的,如果定義在類中,那么就會變成共享變量,如果你的程序中需要用到這個共享變量,那么可能就會造成另外一個人的訪問覆蓋你這個人的i變量的結(jié)果。
那么如果,這個i在方法內(nèi)呢?方法內(nèi)是局部變量,方法調(diào)用結(jié)束就會釋放內(nèi)存,我們還是看下實例:
/** * 列表 * @return */ @RequestMapping(value="/list") public ModelAndView list() { ModelAndView modelAndView = new ModelAndView(); List<GuestbookDo> lists = guestbookService.findGuestbooks(); modelAndView.setViewName("test/list"); modelAndView.addObject("userList", lists); int i = 0; //局部變量 i++; //i自增 System.out.print(i + "\r\n"); //控制臺輸出i return modelAndView; }
結(jié)果:
結(jié)果顯而易見,每次請求,局部變量都會自動釋放內(nèi)存。
我們再做web開發(fā),都會定義一些數(shù)據(jù)結(jié)構(gòu)的對象用于存儲傳遞進來的數(shù)據(jù)或者要經(jīng)常使用的數(shù)據(jù),例如:
/** * guest_book 數(shù)據(jù)結(jié)構(gòu) * @author zhuli */ public class GuestbookDo { private String title; private String content; private String username; private int id; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getDtime() { return dtime; } public void setDtime(int dtime) { this.dtime = dtime; } private int dtime; }
其實這個類不能做成像Service一樣的單例,一旦單例了,數(shù)據(jù)就變成共享數(shù)據(jù),不同的數(shù)據(jù)進來都會互相覆蓋。所以都是需要的地方new一個數(shù)據(jù)結(jié)構(gòu)對象,反正也是局部變量,運行完畢就釋放了。
相關(guān)案例查看更多
相關(guān)閱讀
- 網(wǎng)站建設(shè)招商
- 云南網(wǎng)站建設(shè)方法
- 支付寶小程序被騙
- 小程序分銷商城
- 網(wǎng)站建設(shè)開發(fā)
- 海報插件
- 用戶登錄
- 云南做軟件
- 小程序用戶登錄
- 昆明小程序公司
- 搜索排名
- 云南網(wǎng)站制作
- 小程序開發(fā)平臺前十名
- 模版信息
- painter
- 云南網(wǎng)站建設(shè)首選
- 排名
- 云南網(wǎng)絡(luò)公司
- 昆明小程序開發(fā)聯(lián)系方式
- 汽車報廢回收軟件
- 網(wǎng)站建設(shè)首選公司
- 昆明小程序設(shè)計
- 網(wǎng)站建設(shè)
- .net網(wǎng)站
- 云南網(wǎng)絡(luò)營銷
- 大理網(wǎng)站建設(shè)公司
- 網(wǎng)站小程序
- 昆明網(wǎng)站制作
- 模版消息
- 小程序定制