欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

Java 學(xué)習(xí)筆記15:關(guān)于web開(kāi)發(fā)中,全局變量的一點(diǎn)想法 - 新聞資訊 - 云南小程序開(kāi)發(fā)|云南軟件開(kāi)發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開(kāi)發(fā)/軟件開(kāi)發(fā)

知識(shí)

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X(jué)表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷(xiāo)的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷(xiāo)工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!

您當(dāng)前位置>首頁(yè) » 新聞資訊 » 網(wǎng)站建設(shè) >

Java 學(xué)習(xí)筆記15:關(guān)于web開(kāi)發(fā)中,全局變量的一點(diǎn)想法

發(fā)表時(shí)間:2012-12-5

發(fā)布人:葵宇科技

瀏覽次數(shù):29

在PHP開(kāi)發(fā)中,我們經(jīng)常習(xí)慣于在php類(lèi)中定義很多變量。這是因?yàn)閜hp是解析型的語(yǔ)言,在做web開(kāi)發(fā)的時(shí)候,一次解析就釋放內(nèi)存。但是Java可能就有些不同,Java是編譯型的語(yǔ)言,web容器運(yùn)行后,類(lèi)的對(duì)象就會(huì)常駐在內(nèi)存中,這個(gè)時(shí)候如果類(lèi)的對(duì)象中有定義公用變量,那么就會(huì)不同的人訪問(wèn)web程序?qū)е逻@個(gè)變量造成沖突。


可以看一個(gè)簡(jiǎn)單的例子:

	public int i = 0; //定義一個(gè)初始化變量
	
	/**
	 * 列表
	 * @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); //控制臺(tái)輸出i
		return modelAndView;
	}

我們定義了一個(gè)i的變量。常規(guī)模式下PHP中,我們?cè)跒g覽器中請(qǐng)求一下http://127.0.0.1:8090/test/list/地址,則控制臺(tái)會(huì)輸出1,然后再請(qǐng)求一次還是1。

但是在Java中,我們可以看到結(jié)果:

所以,對(duì)于Java來(lái)說(shuō),i的變量是在內(nèi)存中常駐的,如果定義在類(lèi)中,那么就會(huì)變成共享變量,如果你的程序中需要用到這個(gè)共享變量,那么可能就會(huì)造成另外一個(gè)人的訪問(wèn)覆蓋你這個(gè)人的i變量的結(jié)果。

那么如果,這個(gè)i在方法內(nèi)呢?方法內(nèi)是局部變量,方法調(diào)用結(jié)束就會(huì)釋放內(nèi)存,我們還是看下實(shí)例:

	/**
	 * 列表
	 * @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"); //控制臺(tái)輸出i
		return modelAndView;
	}

結(jié)果:

結(jié)果顯而易見(jiàn),每次請(qǐng)求,局部變量都會(huì)自動(dòng)釋放內(nèi)存。

我們?cè)僮鰓eb開(kāi)發(fā),都會(huì)定義一些數(shù)據(jù)結(jié)構(gòu)的對(duì)象用于存儲(chǔ)傳遞進(jìn)來(lái)的數(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;
}

其實(shí)這個(gè)類(lèi)不能做成像Service一樣的單例,一旦單例了,數(shù)據(jù)就變成共享數(shù)據(jù),不同的數(shù)據(jù)進(jìn)來(lái)都會(huì)互相覆蓋。

所以都是需要的地方new一個(gè)數(shù)據(jù)結(jié)構(gòu)對(duì)象,反正也是局部變量,運(yùn)行完畢就釋放了。


相關(guān)案例查看更多