国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - 如何通過JVM角度談談Java的clone操作

如何通過JVM角度談談Java的clone操作

2021-05-10 11:06占小狼 Java教程

java中僅有的創建對象的兩種方式:①.使用new操作符創建對象;②.使用clone方法復制對象。下面這篇文章主要通過JVM角度給大家詳細談談Java的clone操作的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

前言

最近在給熔斷器組件增加一個降級策略(hystrix好像沒有這個配置),我們提供了如下幾種策略:

1、默認策略

2、返回常量值

3、拋出指定異常

4、執行一段groovy腳本

當然了,這些配置都是可以在平臺上配置,并立即生效的。

目前返回常量值的實現如下:

如何通過JVM角度談談Java的clone操作

今天發現,如果每次都返回同一個對象,而且這個邏輯對業務來說是黑盒(業務不知道每次拿到的對象是同一個),如果對這個對象進行了操作,那肯定會影響到其它的請求,為了避免背鍋,我們需要每次返回一個新的對象,第一反應是通過clone是否可行(因為每次json的序列化也會損耗性能),但是jdk自帶的clone方法只是淺克隆,如果對象中包含了另一個復雜對象,clone出來的對象還是存在被修改的風險。

詳細介紹:

大家可以看下面一個例子:

?
1
2
3
4
5
6
class master {
 string name;
 public master(string name) {
  this.name = name;
 }
}

初始化一個master類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class dog implements cloneable {
 string name;
 int age;
 master master;
 
 public dog(string name, int age, master master) {
 this.name = name;
 this.age = age;
 this.master = master;
 }
 
 @override
 protected object clone() throws clonenotsupportedexception {
 return super.clone();
 }
 
 @override
 public string tostring() {
 return "{name:" + name + ", age: " + age + ", master: "+ master.name + "}";
 }
}

再初始化一條狗

?
1
2
3
4
5
6
7
8
public static void main(string[] args) throws exception {
 master master = new master("zj0");
 dog dog1 = new dog("旺財", 1, master);
 dog dog2 = (dog)dog1.clone();
 dog1.name = "比利";
 dog1.master.name = "zj1";
 system.out.println(dog2);
}

最后運行一下,結果如下:

?
1
{name:旺財, age: 1, master: zj1}

dog1是原始狗,dog2是克隆出來的,但是我修改dog1的master的name時,克隆的master也跟著變化了,這顯然不行。

雖然一直都知道object的clone方法是淺克隆,也一直沒繼續探索一下,今天碰到了就順手看下jvm的實現,好像很簡單,在jvm.cpp文件中,搜索"jvm_clone"

如何通過JVM角度談談Java的clone操作

以前一直沒用過clone這個方法,通過源碼發現在運行的時候會檢查類是否實現cloneable接口,編譯的時候不檢查,想啥呢?

根據對象或者數據的大小,從堆中開辟一塊同等大小的內存,然后把原始對象的數據都復制到新的內存地址,對于基本類型,可以把原始值復制過來,但是對于內部對象來說,其保存的只是一個地址,復制時也是對地址的復制,最終還是指向同一個對象,所以就造成了上述的問題。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:https://www.jianshu.com/p/309f80f33190

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 成人在线免费看视频 | 国产伦精品一区二区三区四区视频_ | av免费观看网站 | 欧美成人精品一区二区男人看 | 亚洲精品1区2区 | 国内激情自拍 | 成人影院在线 | 一本大道久久a久久精二百 国产欧美视频一区二区 | 狠狠干天天爱 | 国产日韩欧美 | 成人免费视频网站在线观看 | 亚洲字幕网 | 欧美精品一区二区三区在线播放 | 国产一级久久久久 | 另类久久| 久久av资源网 | 日韩美女在线 | 亚洲精品一区在线观看 | 欧美一区二区三区不卡 | 国产在线中文字幕 | 日韩中文字幕一区 | 国产成人免费在线 | 粉嫩一区二区三区 | 成年人免费观看网站 | 国产高清精品一区二区三区 | 欧美国产高清 | 亚洲视频在线观看 | 国产一区视频在线 | 国产精品视频久久 | 一级毛片免费播放 | 艹逼逼视频| 性做久久久久久久免费看 | 国产欧美日韩在线 | 亚洲精品电影在线观看 | 色黄视频 | www.青青草原 | 日韩视频在线观看一区 | 国产97色在线 | 亚洲 | 欧美精品不卡 | 久草在线 | 欧美视频第一页 |