全球快資訊丨golang-java-serializer序列化算法解析
(資料圖片)
首先上github項目地址(基本可以直接將go struct直接與java class互轉,覺得可以的大家給顆星)https://github.com/qauzy/huskyhttps://github.com/qauzy/husky項目源于GitHub - davidwang2007/golang-java-serializer: golang library for handle java serialization/deserializationgolang library for handle java serialization/deserialization - GitHub - davidwang2007/golang-java-serializer: golang library for handle java serialization/deserializationhttps://github.com/davidwang2007/golang-java-serializer
Java序列化算法:
java的序列化算法看起來比較簡單,
1 首先是序列化文件頭,接著是類描述符,接著父類的描述符(如果存在),直至沒有父類。
2 接著是數據部分,從父類的成員數據開始,如果成員數據是Object類型還需要先寫入該Object類的描述符,接著才是數據
3 對于ArrayList,HashMap等類型自帶了序列化方法,需要執行特殊序列化
具體過程可以看下面github中例子的解析過程第一部分是序列化文件頭0xACED: magic 聲明使用了序列化協議. 0x05: version 序列化協議版本. 0x73: TC_OBJECT. 聲明這是一個新的對象.按順序獲取類描述,類數據塊信息,獲取第[0]塊信息 第二部分是序列化的類的描述[深度:0]0x72: TC_CLASSDESC. 聲明這里開始一個新Class 0x21: 類名字的長度[33] 0x636F6D2E6578616D706C652E64656D6F2E6D6F64656C2E55736572456E74697479: 嘗試讀取類名[com.example.demo.model.UserEntity] 0x48B027EB0BF53976: SerialVersionUID,序列化ID,如果沒有指定,則會由算法隨機生成一個8byte的ID. [添加] [引用] [0] 類型:TC_CLASSDESC[0x72], refVal:{"ClassName":"com.example.demo.model.UserEntity","ScFlag":0,"SerialVersionUID":5237730257103305078,"Fields":null,"RwDatas":null} 0x02: 標記號. 該值聲明該對象支持序列化 0x08: 該類[com.example.demo.model.UserEntity]所包含的域個數,有8個成員第三部分是類[com.example.demo.model.UserEntity]中各個屬性的描述 準備解析類[com.example.demo.model.UserEntity]第1個屬性0x4C: 成員類型[L] 0x05: 成員名字長度 0x6769667473: 成員名字[gifts] 0x74: TC_STRING.如果成員類型是對象,則后面跟著一個該對象的類名 0x15: 該TC_STRING的長度[21] 0x4C6A6176612F7574696C2F41727261794C6973743B: 字符串原文:Ljava/util/ArrayList; [添加] [引用] [1] 類型:TC_STRING[0x74], refVal:"Ljava/util/ArrayList;" 類[com.example.demo.model.UserEntity]第1個屬性 :type: 0x4C, name: gifts, flag: 0x2, class: Ljava/util/ArrayList;準備解析類[com.example.demo.model.UserEntity]第2個屬性0x5B: 成員類型[[] 0x06: 成員名字長度 0x676966747332: 成員名字[gifts2] 0x74: TC_STRING.如果成員類型是對象,則后面跟著一個該對象的類名 0x13: 該TC_STRING的長度[19] 0x5B4C6A6176612F6C616E672F537472696E673B: 字符串原文:[Ljava/lang/String; [添加] [引用] [2] 類型:TC_STRING[0x74], refVal:"[Ljava/lang/String;" 類[com.example.demo.model.UserEntity]第2個屬性 :type: 0x5B, name: gifts2, flag: 0x2, class: [Ljava/lang/String;準備解析類[com.example.demo.model.UserEntity]第3個屬性0x4C: 成員類型[L] 0x02: 成員名字長度 0x6964: 成員名字[id] 0x74: TC_STRING.如果成員類型是對象,則后面跟著一個該對象的類名 0x10: 該TC_STRING的長度[16] 0x4C6A6176612F6C616E672F4C6F6E673B: 字符串原文:Ljava/lang/Long; [添加] [引用] [3] 類型:TC_STRING[0x74], refVal:"Ljava/lang/Long;" 類[com.example.demo.model.UserEntity]第3個屬性 :type: 0x4C, name: id, flag: 0x2, class: Ljava/lang/Long;準備解析類[com.example.demo.model.UserEntity]第4個屬性0x4C: 成員類型[L] 0x06: 成員名字長度 0x6F7468657273: 成員名字[others] 0x74: TC_STRING.如果成員類型是對象,則后面跟著一個該對象的類名 0x13: 該TC_STRING的長度[19] 0x4C6A6176612F7574696C2F486173684D61703B: 字符串原文:Ljava/util/HashMap; [添加] [引用] [4] 類型:TC_STRING[0x74], refVal:"Ljava/util/HashMap;" 類[com.example.demo.model.UserEntity]第4個屬性 :type: 0x4C, name: others, flag: 0x2, class: Ljava/util/HashMap;準備解析類[com.example.demo.model.UserEntity]第5個屬性0x4C: 成員類型[L] 0x07: 成員名字長度 0x6F746865727332: 成員名字[others2] 0x71: TC_REFERENCE 標識引用 0x7E0004: TC_REFERENCE引用序號[4] 類[com.example.demo.model.UserEntity]第5個屬性 :type: 0x4C, name: others2, flag: 0x2, class: Ljava/util/HashMap;準備解析類[com.example.demo.model.UserEntity]第6個屬性0x4C: 成員類型[L] 0x03: 成員名字長度 0x736F6E: 成員名字[son] 0x74: TC_STRING.如果成員類型是對象,則后面跟著一個該對象的類名 0x22: 該TC_STRING的長度[34] 0x4C636F6D2F6578616D706C652F64656D6F2F6D6F64656C2F536F6E456E746974793B: 字符串原文:Lcom/example/demo/model/SonEntity; [添加] [引用] [5] 類型:TC_STRING[0x74], refVal:"Lcom/example/demo/model/SonEntity;" 類[com.example.demo.model.UserEntity]第6個屬性 :type: 0x4C, name: son, flag: 0x2, class: Lcom/example/demo/model/SonEntity;準備解析類[com.example.demo.model.UserEntity]第7個屬性0x4C: 成員類型[L] 0x08: 成員名字長度 0x757365724E616D65: 成員名字[userName] 0x74: TC_STRING.如果成員類型是對象,則后面跟著一個該對象的類名 0x12: 該TC_STRING的長度[18] 0x4C6A6176612F6C616E672F537472696E673B: 字符串原文:Ljava/lang/String; [添加] [引用] [6] 類型:TC_STRING[0x74], refVal:"Ljava/lang/String;" 類[com.example.demo.model.UserEntity]第7個屬性 :type: 0x4C, name: userName, flag: 0x2, class: Ljava/lang/String;準備解析類[com.example.demo.model.UserEntity]第8個屬性0x4C: 成員類型[L] 0x07: 成員名字長度 0x75736572536578: 成員名字[userSex] 0x71: TC_REFERENCE 標識引用 0x7E0006: TC_REFERENCE引用序號[6] 類[com.example.demo.model.UserEntity]第8個屬性 :type: 0x4C, name: userSex, flag: 0x2, class: Ljava/lang/String;0x78: TC_ENDBLOCKDATA,在readObject中,表明數據已經讀取完畢按順序獲取類描述,類數據塊信息,獲取第[1]塊信息 第四部分為對象的父類信息描述 第二部分是序列化的類的描述[深度:1]0x72: TC_CLASSDESC. 聲明這里開始一個新Class 0x21: 類名字的長度[33] 0x636F6D2E6578616D706C652E64656D6F2E6D6F64656C2E42617365456E74697479: 嘗試讀取類名[com.example.demo.model.BaseEntity] 0x01: SerialVersionUID,序列化ID,如果沒有指定,則會由算法隨機生成一個8byte的ID. [添加] [引用] [7] 類型:TC_CLASSDESC[0x72], refVal:{"ClassName":"com.example.demo.model.BaseEntity","ScFlag":0,"SerialVersionUID":1,"Fields":null,"RwDatas":null} 0x02: 標記號. 該值聲明該對象支持序列化 0x01: 該類[com.example.demo.model.BaseEntity]所包含的域個數,有1個成員第三部分是類[com.example.demo.model.BaseEntity]中各個屬性的描述 準備解析類[com.example.demo.model.BaseEntity]第1個屬性0x4C: 成員類型[L] 0x08: 成員名字長度 0x626173654E616D65: 成員名字[baseName] 0x71: TC_REFERENCE 標識引用 0x7E0006: TC_REFERENCE引用序號[6] 類[com.example.demo.model.BaseEntity]第1個屬性 :type: 0x4C, name: baseName, flag: 0x2, class: Ljava/lang/String; 0x78: TC_ENDBLOCKDATA,在readObject中,表明數據已經讀取完畢按順序獲取類描述,類數據塊信息,獲取第[2]塊信息 0x70: TC_NULL,標記后面的數據為空,説明已經沒有父類信息了[深度:2][添加] [引用] [8] 類型:TC_OBJECT[0x73], refVal:{"Classes":[{"ClassName":"com.example.demo.model.UserEntity","ScFlag":2,"SerialVersionUID":5237730257103305078,"Fields":[{"FieldType":76, "FieldName":"gifts","FieldOwnerScFlag":2,"FieldObjectClassName":"Ljava/util/ArrayList;","FieldValue":null},{"FieldType":91,"FieldName":"gifts2","FieldOwnerScFlag":2,"FieldObjectClassNa me":"[Ljava/lang/String;","FieldValue":null},{"FieldType":76,"FieldName":"id","FieldOwnerScFlag":2,"FieldObjectClassName":"Ljava/lang/Long;","FieldValue":null},{"FieldType":76,"FieldNa me":"others","FieldOwnerScFlag":2,"FieldObjectClassName":"Ljava/util/HashMap;","FieldValue":null},{"FieldType":76,"FieldName":"others2","FieldOwnerScFlag":2,"FieldObjectClassName":"Lja va/util/HashMap;","FieldValue":null},{"FieldType":76,"FieldName":"son","FieldOwnerScFlag":2,"FieldObjectClassName":"Lcom/example/demo/model/SonEntity;","FieldValue":null},{"FieldType": 76,"FieldName":"userName","FieldOwnerScFlag":2,"FieldObjectClassName":"Ljava/lang/String;","FieldValue":null},{"FieldType":76,"FieldName":"userSex","FieldOwnerScFlag":2,"FieldObjectCla ssName":"Ljava/lang/String;","FieldValue":null}],"RwDatas":null},{"ClassName":"com.example.demo.model.BaseEntity","ScFlag":2,"SerialVersionUID":1,"Fields":[{"FieldType":76,"FieldName": "baseName","FieldOwnerScFlag":2,"FieldObjectClassName":"Ljava/lang/String;","FieldValue":null}],"RwDatas":null}],"SerialVersionUID":0,"JsonData":null,"RawData":null}第五部分數據信息(類成員值),從父類的Field反序列化[com.example.demo.model.UserEntity] 第五部分數據信息(類成員值),從父類的Field反序列化[com.example.demo.model.BaseEntity]->分解動作 嘗試獲取第[1]個類(可序列化)[com.example.demo.model.BaseEntity]-->第[0]個成員[baseName]值************************BEGIN[baseName]************************解析對象類型類成員[baseName]0x74: TC_STRING.如果成員類型是對象,則后面跟著一個該對象的類名 0x04: 該TC_STRING的長度[4] 0x62617365: 字符串原文:base [添加] [引用] [9] 類型:TC_STRING[0x74], refVal:"base"************************END[baseName]************************ 第五部分數據信息(類成員值),從父類的Field反序列化[com.example.demo.model.UserEntity]->分解動作 嘗試獲取第[0]個類(可序列化)[com.example.demo.model.UserEntity]-->第[0]個成員[gifts]值 ************************BEGIN[gifts]************************解析對象類型類成員[gifts] [ReadTcObjFieldValue]解析類對象0x73: TC_OBJECT. 聲明這是一個新的對象(未被消費)按順序獲取類描述,類數據塊信息,獲取第[0]塊信息 第二部分是序列化的類的描述[深度:0]0x72: TC_CLASSDESC. 聲明這里開始一個新Class 0x13: 類名字的長度[19] 0x6A6176612E7574696C2E41727261794C697374: 嘗試讀取類名[java.util.ArrayList] 0x7881D21D99C7619D: SerialVersionUID,序列化ID,如果沒有指定,則會由算法隨機生成一個8byte的ID. [添加] [引用] [10] 類型:TC_CLASSDESC[0x72], refVal:{"ClassName":"java.util.ArrayList","ScFlag":0,"SerialVersionUID":8683452581122892189,"Fields":null,"RwDatas":null} 0x03: 標記號. 擁有自己的writeObject, readObject, for example: HashMap, 此種類型需要每一個定義一個相應的結構體 0x01: 該類[java.util.ArrayList]所包含的域個數,有1個成員第三部分是類[java.util.ArrayList]中各個屬性的描述 準備解析類[java.util.ArrayList]第1個屬性0x49: 成員類型[I] 0x04: 成員名字長度 0x73697A65: 成員名字[size] 類[java.util.ArrayList]第1個屬性 :type: 0x49, name: size, flag: 0x3, class: 0x78: TC_ENDBLOCKDATA,在readObject中,表明數據已經讀取完畢按順序獲取類描述,類數據塊信息,獲取第[1]塊信息0x70: TC_NULL,標記后面的數據為空,説明已經沒有父類信息了[深度:1] [添加] [引用] [11] 類型:TC_OBJECT[0x73], refVal:{"Classes":[{"ClassName":"java.util.ArrayList","ScFlag":3,"SerialVersionUID":8683452581122892189,"Fields":[{"FieldType":73,"FieldName":" size","FieldOwnerScFlag":3,"FieldObjectClassName":"","FieldValue":null}],"RwDatas":null}],"SerialVersionUID":0,"JsonData":null,"RawData":null}第五部分數據信息(類成員值),從父類的Field反序列化[java.util.ArrayList]第五部分數據信息(類成員值),從父類的Field反序列化[java.util.ArrayList]->分解動作 嘗試獲取第[0]個類(自定義序列化)[java.util.ArrayList] ************************BEGIN************************ [JavaArrayList] >> =================Blockdata數據塊起始位置=================0x04: Blockdata數據塊大小[4] 0x77: 在對象的WriteObject方法中,我們可以自定義的寫入數據,除了非Object數據,其他所有數據將會被寫在一起,也就是BlockData 0x04: 固定為0x04 0x04: 數組元素的個數======================讀取第1個數據塊====================== 0x74: TC_STRING.代表一個new String.用String來引用對象(ReadNextEle) [添加] [引用] [12] 類型:TC_STRING[0x74], refVal:"AAAAA" ======================讀取第2個數據塊====================== 0x71: TC_REFERENCE 0x7E000C: TC_REFERENCE引用序號[12] ======================讀取第3個數據塊====================== 0x74: TC_STRING.代表一個new String.用String來引用對象(ReadNextEle) [添加] [引用] [13] 類型:TC_STRING[0x74], refVal:"BBBBB" ======================讀取第4個數據塊====================== 0x71: TC_REFERENCE 0x7E000D: TC_REFERENCE引用序號[13] 0x78: TC_ENDBLOCKDATA,在readObject中,表明數據已經讀取完畢[JavaArrayList] << ************************END************************ ************************END[gifts]************************嘗試獲取第[0]個類(可序列化)[com.example.demo.model.UserEntity]-->第[1]個成員[gifts2]值 ************************BEGIN[gifts2]************************ 解析數組類型類成員[gifts2]0x13: 類名字的長度[19] 0x5B4C6A6176612E6C616E672E537472696E673B: 嘗試讀取類名[[Ljava.lang.String;] 0xADD256E7E91D7B47: SerialVersionUID,序列化ID,如果沒有指定,則會由算法隨機生成一個8byte的ID. [添加] [引用] [14] 類型:TC_CLASSDESC[0x72], refVal:{"ClassName":"[Ljava.lang.String;","ScFlag":0,"SerialVersionUID":12525169067719228231,"Fields":null,"RwDatas":null} 0x02: 標記號. 該值聲明該對象支持序列化 0x00: 該類[[Ljava.lang.String;]所包含的域個數,有0個成員第三部分是類[[Ljava.lang.String;]中各個屬性的描述0x78: TC_ENDBLOCKDATA,在readObject中,表明數據已經讀取完畢 [添加] [引用] [15] 類型:TC_ARRAY[0x75], refVal:{"ClassDesc":{"ClassName":"[Ljava.lang.String;","ScFlag":2,"SerialVersionUID":12525169067719228231,"Fields":[],"RwDatas":null},"SerialVer sionUID":12525169067719228231,"Values":null,"JsonData":null} 0x70: TC_NULL,標記后面的數據為空,對應java就是Null 0x74: TC_STRING.如果成員類型是對象,則后面跟著一個該對象的類名 0x06: 該TC_STRING的長度[6] 0x313131313131: 字符串原文:111111 [添加] [引用] [16] 類型:TC_STRING[0x74], refVal:"111111" 0x74: TC_STRING.如果成員類型是對象,則后面跟著一個該對象的類名 0x07: 該TC_STRING的長度[7] 0x33333333333333: 字符串原文:3333333 [添加] [引用] [17] 類型:TC_STRING[0x74], refVal:"3333333" 0x74: TC_STRING.如果成員類型是對象,則后面跟著一個該對象的類名 0x0A: 該TC_STRING的長度[10] 0x34343434343434343434: 字符串原文:4444444444 [添加] [引用] [18] 類型:TC_STRING[0x74], refVal:"4444444444"************************END[gifts2]************************ 嘗試獲取第[0]個類(可序列化)[com.example.demo.model.UserEntity]-->第[2]個成員[id]值 ************************BEGIN[id]************************ 解析對象類型類成員[id] [ReadTcObjFieldValue]解析類對象0x73: TC_OBJECT. 聲明這是一個新的對象(未被消費)按順序獲取類描述,類數據塊信息,獲取第[0]塊信息 第二部分是序列化的類的描述[深度:0]0x72: TC_CLASSDESC. 聲明這里開始一個新Class 0x0E: 類名字的長度[14] 0x6A6176612E6C616E672E4C6F6E67: 嘗試讀取類名[java.lang.Long] 0x3B8BE490CC8F23DF: SerialVersionUID,序列化ID,如果沒有指定,則會由算法隨機生成一個8byte的ID. [添加] [引用] [19] 類型:TC_CLASSDESC[0x72], refVal:{"ClassName":"java.lang.Long","ScFlag":0,"SerialVersionUID":4290774380558885855,"Fields":null,"RwDatas":null}0x02: 標記號. 該值聲明該對象支持序列化 0x01: 該類[java.lang.Long]所包含的域個數,有1個成員第三部分是類[java.lang.Long]中各個屬性的描述 準備解析類[java.lang.Long]第1個屬性0x4A: 成員類型[J] 0x05: 成員名字長度 0x76616C7565: 成員名字[value] 類[java.lang.Long]第1個屬性 :type: 0x4A, name: value, flag: 0x2, class: 0x78: TC_ENDBLOCKDATA,在readObject中,表明數據已經讀取完畢按順序獲取類描述,類數據塊信息,獲取第[1]塊信息 第四部分為對象的父類信息描述 第二部分是序列化的類的描述[深度:1]0x72: TC_CLASSDESC. 聲明這里開始一個新Class 0x10: 類名字的長度[16] 0x6A6176612E6C616E672E4E756D626572: 嘗試讀取類名[java.lang.Number] 0x86AC951D0B94E08B: SerialVersionUID,序列化ID,如果沒有指定,則會由算法隨機生成一個8byte的ID. [添加] [引用] [20] 類型:TC_CLASSDESC[0x72], refVal:{"ClassName":"java.lang.Number","ScFlag":0,"SerialVersionUID":9704295249057472651,"Fields":null,"RwDatas":null} 0x02: 標記號. 該值聲明該對象支持序列化 0x00: 該類[java.lang.Number]所包含的域個數,有0個成員 第三部分是類[java.lang.Number]中各個屬性的描述 0x78: TC_ENDBLOCKDATA,在readObject中,表明數據已經讀取完畢按順序獲取類描述,類數據塊信息,獲取第[2]塊信息0x70: TC_NULL,標記后面的數據為空,説明已經沒有父類信息了[深度:2] [添加] [引用] [21] 類型:TC_OBJECT[0x73], refVal:{"Classes":[{"ClassName":"java.lang.Long","ScFlag":2,"SerialVersionUID":4290774380558885855,"Fields":[{"FieldType":74,"FieldName":"value ","FieldOwnerScFlag":2,"FieldObjectClassName":"","FieldValue":null}],"RwDatas":null},{"ClassName":"java.lang.Number","ScFlag":2,"SerialVersionUID":9704295249057472651,"Fields":[],"RwDa tas":null}],"SerialVersionUID":0,"JsonData":null,"RawData":null}第五部分數據信息(類成員值),從父類的Field反序列化[java.lang.Long] 第五部分數據信息(類成員值),從父類的Field反序列化[java.lang.Number]->分解動作 第五部分數據信息(類成員值),從父類的Field反序列化[java.lang.Long]->分解動作 嘗試獲取第[0]個類(可序列化)[java.lang.Long]-->第[0]個成員[value]值 ************************BEGIN[value]************************0x01: 解析原生類型成員值 1************************END[value]************************ ************************END[id]************************ 嘗試獲取第[0]個類(可序列化)[com.example.demo.model.UserEntity]-->第[3]個成員[others]值 ************************BEGIN[others]************************ 解析對象類型類成員[others] [ReadTcObjFieldValue]解析類對象0x73: TC_OBJECT. 聲明這是一個新的對象(未被消費)按順序獲取類描述,類數據塊信息,獲取第[0]塊信息 第二部分是序列化的類的描述[深度:0]0x72: TC_CLASSDESC. 聲明這里開始一個新Class 0x11: 類名字的長度[17] 0x6A6176612E7574696C2E486173684D6170: 嘗試讀取類名[java.util.HashMap] 0x507DAC1C31660D1: SerialVersionUID,序列化ID,如果沒有指定,則會由算法隨機生成一個8byte的ID. [添加] [引用] [22] 類型:TC_CLASSDESC[0x72], refVal:{"ClassName":"java.util.HashMap","ScFlag":0,"SerialVersionUID":362498820763181265,"Fields":null,"RwDatas":null} 0x03: 標記號. 擁有自己的writeObject, readObject, for example: HashMap, 此種類型需要每一個定義一個相應的結構體 0x02: 該類[java.util.HashMap]所包含的域個數,有2個成員第三部分是類[java.util.HashMap]中各個屬性的描述準備解析類[java.util.HashMap]第1個屬性 0x46: 成員類型[F]0x0A: 成員名字長度 0x6C6F6164466163746F72: 成員名字[loadFactor] 類[java.util.HashMap]第1個屬性 :type: 0x46, name: loadFactor, flag: 0x3, class:準備解析類[java.util.HashMap]第2個屬性0x49: 成員類型[I] 0x09: 成員名字長度 0x7468726573686F6C64: 成員名字[threshold] 類[java.util.HashMap]第2個屬性 :type: 0x49, name: threshold, flag: 0x3, class: 0x78: TC_ENDBLOCKDATA,在readObject中,表明數據已經讀取完畢按順序獲取類描述,類數據塊信息,獲取第[1]塊信息0x70: TC_NULL,標記后面的數據為空,説明已經沒有父類信息了[深度:1] [添加] [引用] [23] 類型:TC_OBJECT[0x73], refVal:{"Classes":[{"ClassName":"java.util.HashMap","ScFlag":3,"SerialVersionUID":362498820763181265,"Fields":[{"FieldType":70,"FieldName":"loa dFactor","FieldOwnerScFlag":3,"FieldObjectClassName":"","FieldValue":null},{"FieldType":73,"FieldName":"threshold","FieldOwnerScFlag":3,"FieldObjectClassName":"","FieldValue":null}],"R wDatas":null}],"SerialVersionUID":0,"JsonData":null,"RawData":null}第五部分數據信息(類成員值),從父類的Field反序列化[java.util.HashMap] 第五部分數據信息(類成員值),從父類的Field反序列化[java.util.HashMap]->分解動作 嘗試獲取第[0]個類(自定義序列化)[java.util.HashMap] ************************BEGIN************************ [JavaHashMap] has 0.000000 buckest [JavaHashMap] has 0 mappings(size)0x74: TC_STRING.代表一個new String.用String來引用對象(ReadNextEle) [添加] [引用] [24] 類型:TC_STRING[0x74], refVal:"1qqqq" 0x71: TC_REFERENCE 0x7E0018: TC_REFERENCE引用序號[24] 0x74: TC_STRING.代表一個new String.用String來引用對象(ReadNextEle) [添加] [引用] [25] 類型:TC_STRING[0x74], refVal:"4rrrr" 0x71: TC_REFERENCE 0x7E0019: TC_REFERENCE引用序號[25] 0x74: TC_STRING.代表一個new String.用String來引用對象(ReadNextEle) [添加] [引用] [26] 類型:TC_STRING[0x74], refVal:"2wwww" 0x71: TC_REFERENCE 0x7E001A: TC_REFERENCE引用序號[26] 0x74: TC_STRING.代表一個new String.用String來引用對象(ReadNextEle) [添加] [引用] [27] 類型:TC_STRING[0x74], refVal:"3eeee" 0x71: TC_REFERENCE 0x7E001B: TC_REFERENCE引用序號[27] 0x78: TC_ENDBLOCKDATA,在readObject中,表明數據已經讀取完畢************************END************************ ************************END[others]************************ 嘗試獲取第[0]個類(可序列化)[com.example.demo.model.UserEntity]-->第[4]個成員[others2]值 ************************BEGIN[others2]************************ 解析對象類型類成員[others2] [ReadTcObjFieldValue]解析類對象0x73: TC_OBJECT. 聲明這是一個新的對象(未被消費)按順序獲取類描述,類數據塊信息,獲取第[0]塊信息0x71: TC_REFERENCE 標識引用 0x7E0016: TC_REFERENCE引用序號[22](OBJECT-->TC_CLASSDESC)--> java.util.HashMap [添加] [引用] [28] 類型:TC_OBJECT[0x73], refVal:{"Classes":[{"ClassName":"java.util.HashMap","ScFlag":3,"SerialVersionUID":362498820763181265,"Fields":[{"FieldType":70,"FieldName":"loa dFactor","FieldOwnerScFlag":3,"FieldObjectClassName":"","FieldValue":null},{"FieldType":73,"FieldName":"threshold","FieldOwnerScFlag":3,"FieldObjectClassName":"","FieldValue":null}],"R wDatas":[{"ClassDesc":null,"LoadFactor":0.75,"Thredshold":12,"Buckets":16,"Entries":{"1qqqq":"1qqqq","2wwww":"2wwww","3eeee":"3eeee","4rrrr":"4rrrr"}}]}],"SerialVersionUID":0,"JsonData ":null,"RawData":null}第五部分數據信息(類成員值),從父類的Field反序列化[java.util.HashMap] 第五部分數據信息(類成員值),從父類的Field反序列化[java.util.HashMap]->分解動作 嘗試獲取第[0]個類(自定義序列化)[java.util.HashMap] ************************BEGIN************************ [JavaHashMap] has 0.000000 buckest [JavaHashMap] has 0 mappings(size)0x74: TC_STRING.代表一個new String.用String來引用對象(ReadNextEle) [添加] [引用] [29] 類型:TC_STRING[0x74], refVal:"1tttt" 0x71: TC_REFERENCE 0x7E001D: TC_REFERENCE引用序號[29] 0x78: TC_ENDBLOCKDATA,在readObject中,表明數據已經讀取完畢************************END************************ ************************END[others2]************************ 嘗試獲取第[0]個類(可序列化)[com.example.demo.model.UserEntity]-->第[5]個成員[son]值 ************************BEGIN[son]************************ 解析對象類型類成員[son] [ReadTcObjFieldValue]解析類對象 0x73: TC_OBJECT. 聲明這是一個新的對象(未被消費) 按順序獲取類描述,類數據塊信息,獲取第[0]塊信息 第二部分是序列化的類的描述[深度:0]0x72: TC_CLASSDESC. 聲明這里開始一個新Class 0x20: 類名字的長度[32] 0x636F6D2E6578616D706C652E64656D6F2E6D6F64656C2E536F6E456E74697479: 嘗試讀取類名[com.example.demo.model.SonEntity] 0x01: SerialVersionUID,序列化ID,如果沒有指定,則會由算法隨機生成一個8byte的ID. [添加] [引用] [30] 類型:TC_CLASSDESC[0x72], refVal:{"ClassName":"com.example.demo.model.SonEntity","ScFlag":0,"SerialVersionUID":1,"Fields":null,"RwDatas":null} 0x02: 標記號. 該值聲明該對象支持序列化 0x01: 該類[com.example.demo.model.SonEntity]所包含的域個數,有1個成員第三部分是類[com.example.demo.model.SonEntity]中各個屬性的描述 準備解析類[com.example.demo.model.SonEntity]第1個屬性0x4C: 成員類型[L] 0x07: 成員名字長度 0x536F6E4E616D65: 成員名字[SonName] 0x71: TC_REFERENCE 標識引用 0x7E0006: TC_REFERENCE引用序號[6] 類[com.example.demo.model.SonEntity]第1個屬性 :type: 0x4C, name: SonName, flag: 0x2, class: Ljava/lang/String; 0x78: TC_ENDBLOCKDATA,在readObject中,表明數據已經讀取完畢按順序獲取類描述,類數據塊信息,獲取第[1]塊信息0x70: TC_NULL,標記后面的數據為空,説明已經沒有父類信息了[深度:1] [添加] [引用] [31] 類型:TC_OBJECT[0x73], refVal:{"Classes":[{"ClassName":"com.example.demo.model.SonEntity","ScFlag":2,"SerialVersionUID":1,"Fields":[{"FieldType":76,"FieldName":"SonNa me","FieldOwnerScFlag":2,"FieldObjectClassName":"Ljava/lang/String;","FieldValue":null}],"RwDatas":null}],"SerialVersionUID":0,"JsonData":null,"RawData":null}第五部分數據信息(類成員值),從父類的Field反序列化[com.example.demo.model.SonEntity] 第五部分數據信息(類成員值),從父類的Field反序列化[com.example.demo.model.SonEntity]->分解動作 嘗試獲取第[0]個類(可序列化)[com.example.demo.model.SonEntity]-->第[0]個成員[SonName]值 ************************BEGIN[SonName]************************ 解析對象類型類成員[SonName]0x74: TC_STRING.如果成員類型是對象,則后面跟著一個該對象的類名 0x13: 該TC_STRING的長度[19] 0x5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A: 字符串原文:ZZZZZZZZZZZZZZZZZZZ [添加] [引用] [32] 類型:TC_STRING[0x74], refVal:"ZZZZZZZZZZZZZZZZZZZ"************************END[SonName]************************ ************************END[son]************************ 嘗試獲取第[0]個類(可序列化)[com.example.demo.model.UserEntity]-->第[6]個成員[userName]值 ************************BEGIN[userName]************************ 解析對象類型類成員[userName]0x74: TC_STRING.如果成員類型是對象,則后面跟著一個該對象的類名 0x07: 該TC_STRING的長度[7] 0x31313131313131: 字符串原文:1111111 [添加] [引用] [33] 類型:TC_STRING[0x74], refVal:"1111111"************************END[userName]************************ 嘗試獲取第[0]個類(可序列化)[com.example.demo.model.UserEntity]-->第[7]個成員[userSex]值 ************************BEGIN[userSex]************************ 解析對象類型類成員[userSex]0x74: TC_STRING.如果成員類型是對象,則后面跟著一個該對象的類名 0x0E: 該TC_STRING的長度[14] 0x3232323232323232326461736464: 字符串原文:222222222dasdd [添加] [引用] [34] 類型:TC_STRING[0x74], refVal:"222222222dasdd"
標簽:
相關推薦:
精彩放送:
- []視焦點訊!方圓生活服務:2022年總收入約為人民幣5.11億元
- []太平洋保險的稅優識別碼,在保單右上方查找
- []天天報道:領悅服務集團:2022年收益為人民幣5.77億元
- []保險公司排名一覽表,十大公司排名
- []天天新消息丨養老保險種類
- []【天天聚看點】燕塘乳業2022年營收18.8億 新零售業務逆勢增長58%
- []統籌公司倒閉車險不能理賠怎么辦
- []天天動態:保利發展:2022年實現營業總收入2811.08億元
- []遠洋集團:2022年營業額為人民幣461.27億元
- []疫情隔離保險在哪買,有以下三種方法
- []環球熱推薦:“快遞一哥”順豐控股去年凈利增長45%,前十大股東中4位去年四季度在減持
- []環球今亮點!村民不認可孫國友被稱治沙英雄是什么情況
- []全球微頭條丨東勝智慧城市服務2022年收入2.27億港元 同比增加約77%
- []天天快資訊丨新華聯所持長沙銀行1.39億股司法拍賣已完成過戶手續
- []金茂投資:2022年實現營業收入771.64億元
- []移卡創始人稱數字生活正在加速由2.0進入3.0時代
- []熱點評!青島雙星: 您的提問涉及到公司與合作方的商業秘密不便透露,敬請諒解
- []助力鄉村振興 長安汽車幫扶酉陽茶油可持續發展
- []世界訊息:鄭州航空港區購房每平方米補貼300元 不限戶籍、不限區域
- []建發股份:2022年歸屬股東凈利潤62.82億元
- []首旅酒店:2022年歸屬股東凈虧損5.82億元
- []直真科技:3月29日公司高管彭琳明減持公司股份合計10000股
- []當前觀察:合肥今年首批集中供地攬金約89億元
- []亞朵集團上市首份成績單:2022年凈利潤同比增85.6%
- []美聯儲更擔心通脹年內至少加息一次,黃金騰飛
- []每日頭條!交通銀行副行長周萬阜:財富管理業務具有很大的發展空間
- []協會屬于什么性質企業
- []均勝電子:2022年凈利3.94億元 同比扭虧為盈
- []當前最新:發行股票的手續費計入什么科目
- []動態:配債100元一股要不要買
- []焦點熱訊:歸母利潤是什么意思
- []綠景中國地產:2022年歸屬股東凈虧損7.30億元
- []華僑城:2022年歸屬股東凈虧損109.05億元
- []最資訊丨兩部門:推動常態化開展“帶押過戶”服務,實現地域范圍、金融機構和不動產類型全覆蓋
- []焦點訊息:海爾智家2022年財報:業績雙增,利潤增速超營收
- []精選!英諾特2022年凈利1.51億同比增長25.31% 董事長葉逢光薪酬12萬
- []環球精選!財報金選丨萬科企業2022年度營收5038.4億元,同比增長11.3%
- []全球快看點丨萬科曬年報:行業震蕩中實現業績企穩,經營服務業務收入突破500億
- []【熱聞】金輝控股:2022年凈利潤約為人民幣20.8億元
- []焦點消息!中科金財:公司業務和回款一直以來均具有季節性特征,四季度回款量較大
- []安徽天堂寨在哪里_安徽天堂寨
- []粵海置地:2022年歸屬股東凈利潤3.93億港元
- []指南針:公司業務目前不涉及ChatGPT相關應用,也暫未有從事AI基礎研究計劃
- []焦點訊息:精研科技:隨著人工智能的發展,我們認為在以下幾個方面會有更多、更高效的散熱方案需求
- []富通信息:公司專業從事以光纖光纜制造為核心的光通信業務和以石英管材產品為輔助的石英制品業務
- []魯商發展:2022年歸屬股東凈利潤0.45億元
- []中國中鐵:2022年房地產業務新簽合同額751.9億元
- []當前熱議!中梁控股:2022年實現收入393.3億元
- []【世界熱聞】建發物業:2022年實現收入22.90億元
- []近期經濟運行亮點 | 甘肅省臨夏州重錘敲響項目建設起勢鑼 凝心聚力力保有效投資開門紅
- []魯商服務:2022年實現收入6.27億元
- []快資訊:陸家嘴:2022年實現營業收入117.62億元
- []當前關注:中駿商管:2022年實現收入11.82億元
- []水井坊:一季度業績詳見擬于4月份披露的公司一季度報告
- []環球關注:福星股份:2022年實現收入151.42億元
- []沿海家園:出售珠海沿海股權事項補充材料將延遲至5月31日寄發
- []每日視訊:微盟發布2022年報:總營收18億元 下半年虧損環比收窄0.8億
- []ST宏達:公司目前沒有對外引進資產的計劃,如有相關計劃將按規則及時披露
- []環球最資訊丨溢價近90%戰投榮盛石化,沙特阿美的野心不止于此
- []焦點速遞!斬獲儲能雙獎|華塑閃耀金磚儲能大會
- []每日熱點:跌無可跌,新能源板塊暴力反彈一觸即發!
- []兩款手機表現有何不同?選HUAWEI magic5,還是oppofindx6?
- []環球熱文:浙江海曙區2022年下半年非自然人家庭屋頂光伏項目補貼資金120198元
- []熱推薦:比亞迪年報發布!2022年平均日營收11.62億元!
- []環球速讀:450MWh!寧德時代海外儲能提速!
- []“雙碳目標”驅動箭牌家居綠色發展,以身作則引領行業綠色智造升級
- []實時焦點:在這里,孩子們感受家的溫暖(一線調研)
- []合肥第二批供地掛牌11宗地塊 總起始價98.44億元
- []全球動態:中國鐵建:2022年房地產開發業務實現收入622.53億元
- []沙河股份:2022年實現收入7.63億元
- []天天亮點!沙河股份2022年營業收入7.64億元 房地產銷售收入占98.45%
- []環球滾動:港發展局指交椅洲人工島每年平開支只占政府每年總開支不到5%
- []楚江新材:公司產品暫未應用于固態氫能發電領域
- []怎么野,你說了算!奇瑞首款輕越野TJ-1開啟全球征名
- []當前看點!九安醫療:持續血糖監測儀(CGMS)研發項目是公司募投項目之一,目前處于研發階段,還需要一段時間
- []世界速讀:通策醫療:公司不存在挪用資金情形,也不存在被ST的情形
- []支付寶出境游服務覆蓋超過70個國家和地區 最新去韓國可用支付寶買火車票
- []前沿熱點:21566人參觀!2023中國國際清潔能源博覽會暨中國氫能展圓滿落幕
- []環球熱資訊!身體抱恙是什么意思?抱恙出自哪里?
- []putup加動詞什么形式?putup是什么意思?
- []【全球聚看點】金地集團29.95億元公司債將付息 利率分別為3.91%及4.30%
- []今日精選:北京故宮的特點有哪些?北京故宮資料介紹?
- []幾套房要征收房產稅?房產稅怎么征收?
- []天天熱資訊!廈門象嶼完成發行23億中期票據 利率1.69%
- []天天視點!“創”字當頭“智”造為先 瀘州老窖榮獲2022年度四川省科學技術進步獎一等獎
- []當前時訊:斛珠的意思是什么?斛珠出自哪里?
- []12萬買寶馬? 營銷噱頭多于讓利,難助力寶馬電動化轉型
- []實時:金管局:港家庭負債占GDP比率升至95.5%
- []盤它是什么意思?盤它一詞的來源是什么?
- []全球看點:新地香港apm復活節生意額料增25%
- []每日訊息!吸附在鯊魚身上的魚是什么魚?吸附在鯊魚身上的魚有什么特征?
- []世界今日訊!華潤建筑有限公司是國企嗎?華潤建筑有限公司資料介紹?
- []當前滾動:公司社保怎么辦理?公司社保的辦理方式?
- []野風現代中心二期6.4億元ABS項目更新至“已受理”
- []要聞:張遼和張頜是什么關系?張遼的簡單介紹?
- []天天熱推薦:3月30日豪邁科技漲停分析:風電,輪胎概念熱股
- []全球即時:3月30日江波龍漲停分析:閃存,DRAM(內存),大基金概念概念熱股
- []世界最資訊丨如何自然疏通浴室水槽
- []關上燈,點亮希望——寧波阪急響應“地球一小時”活動
- []【全球時快訊】求生之路2怎么局域網聯機?局域網聯機方法詳解
- 華為光纖貓指示燈有什么用?華為光纖貓指示燈功能介紹
- 今日看點:bot短期密集訪問形成的流量高峰有哪些?如何解決?
- 全球快資訊丨golang-java-serializer序列化算法解析
- 全球訊息:上坤地產:楊占東辭任執行董事 繼續擔任執行總裁職務
- 焦點快播:【python】Python中最常用的數據類型
- 每日視訊:去年地產板塊收入降超四成 金隅集團今年要“下更大力度去庫存”
- TD早報 | 多方回應搭飛機坐高鐵是否需要佩戴口罩;國航:暫未接到下調機票燃油費相關通知
- 世界通訊!3月31日財經早餐:美元走軟和美債收益率下降推動黃金需求,關注美國通脹數據
- 觀熱點:二六三(002467)2022年年報財務簡析:增收不增利
- 弘陽地產:2022年實現收入200.13億元
- B站注冊資本增幅400%至5億 目前由陳睿全資持股
- 光源資本出任獨家財務顧問 沐曦集成電路10億元A輪融資宣告完成
- 巨輪智能2021年上半年營收11.24億元 期內研發費用投入增長19.05%
- 紅棗期貨尾盤拉升大漲近6% 目前紅棗市場總庫存約30萬噸
- 嘉銀金科發布2021年Q2財報 期內凈利潤達1.27億元同比增長208%
- 成都銀行2021上半年凈利33.89億元 期內實現營收同比增長17.27億元
- 汽車之家發布2021年第二季度業績 期內新能源汽車品牌收入增長238%
- 中信銀行上半年實現凈利潤290.31億元 期末不良貸款余額706.82億元
- 光伏概念掀起漲停潮交易價格創新高 全天成交額達1.29億元
- 上半年生物藥大增45% 關鍵財務指標好轉營收賬款持續下降
- 全球微動態丨聯想ThinkPad有哪些型號?聯想ThinkPad各系列型號介紹
- 華為HiLink是什么?華為路由器hilink怎么用?
- QQ網絡硬盤在哪?如何添加QQ界面?
- 世界今熱點:躲過15次GC之后 進入老年代系統有哪些規則?
- iPhone5怎么升級ios7?8款蘋果設備升級更新
- 克而瑞深度解讀百瑞紀首本《住房租賃輕資產運營白皮書》
- 每日快播:張坤隱形重倉股曝光 再談投資:每一次市場的大幅下跌 股票都是在“打折促銷”
- 網吧服務器維護工具怎么下載?網吧維護管理助手使用方法
- 攝像機的焦距是什么意思?攝像機焦距對應距離介紹
- 世界即時看!【劍靈力士】新版本力士職業天賦加點推薦 備戰不刪檔
- 每日頭條!如何打開pdg文件?手把手教你打開PDG文件
- 每日熱文:湖北長陽農商銀行被罰60萬元:因違規辦理展期業務等
- 福建莆田市住房公積金政策調整 最低首付款比例20%
- 當前時訊:湖北襄陽出臺購房新政 多孩家庭可獲4萬元補貼
- 微速訊:中建一局集團完成發行30億票據 利率2.20%
- 西藏:適當提高住房公積金貸款最高額度
- 當前視訊!拉芳家化:公司將在2023年4月份公布2022年度的經營情況,還請屆時關注
- 焦點要聞:眾信旅游:目前,公司核心團隊人員情況穩定,不存在專業人才流失的情況
- 全球熱資訊!越秀資本完成發行8億短期融資券 票面利率2.32%
- 來賓彩印手提無紡布袋定制,環保無紡布袋制作廠家
- 攜程集團CEO孫潔:出入境游年底會反彈至80%水平
- 世界微動態丨日本角川出版公司奧運項目負責人承認向東京奧組委官員行賄
- 合肥2023首場土拍落幕 13宗地塊成交總攬金約88.49億元
- 全球熱點評!東星醫療:公司若有股權激勵計劃,將根據相關規定及時履行信息披露義務
- 成都雙流板橋軌道公司100%股權掛牌將滿一年 目前尚未成功轉讓
- 天天快看:武漢城建開元森泊度假樂園項目簽約 投資總額達22億元
- 即時:合生創展2022年實現核心利潤10.81億港元 同比下降77.27%
- 【新視野】一張圖:黃金原油外匯股指"樞紐點+多空占比"一覽(2023/03/30周四)
- 歐盟就2030年可再生能源目標達成協議 成員國42.5%的能源將來自風能等可再生能源
- 碧桂園2022年股東應占核心凈利潤26.1億元
- 碧桂園:2022年股東應占核心凈利潤約26.1億元
- 【全球速看料】美日反彈若延續,將挑戰132.85和135阻力!
- 環球熱點!運城城建集團擬發行10億元中期票據 期限3年
- 世界微速訊:現貨黃金交易策略:多空陷入“拉鋸戰”,關注初請數據和美聯儲官員講話
- 蒙特利爾銀行上調貴金屬價格預期,預測黃金表現優于白銀!
- 合生創展集團:2022年股權持有人應占溢利為87.62億港元
- 【全球新要聞】雅居樂:2022年實現收入540.34億元
- 全球即時:你的員工在出差期間安全嗎?了解旅行風險管理標準來規避風險
- 天天百事通!財報金選丨合生創展2022年營業額272.52億港元 核心利潤10.81億港元
- 快資訊丨復星國際郭廣昌:艱難的2022年已經過去 要往前走
- 環球熱點評!西藏:適當提高住房公積金貸款最高額度 推行“公積金+商業”組合貸
- 融創近百億美元境外債重組方案公布
- 天天播報:【BT金融分析師】開市客會員業務大幅增長,分析師稱其可能會提高會員費
- 【BT金融分析師】中國玉柴營收大幅增長,分析師稱疫情好轉后基建帶動重卡爆發
- 當前速遞!一個月港元拆息升0.71點子至3.18202%
- 中兵紅箭:公司CVD法工業金剛石的下游應用領域目前只在消費領域有應用,沒有應用在其他領域
- 每日看點!中國汽車流通協會會長沈進軍:延長“國六A”車型銷售期的相關政策即將出臺
- 【天天速看料】萬達酒店發展去年收入8.17億港元,預計今年新增至少30家酒店
- 天天實時:春風十里,光儲綻放,天合儲能亮相CEEC 2023
- 天天微動態丨【威海福彩·開獎公告】賀17萬元雙色球二等獎喜降我市
- 嘉和美康:截至3月10日,公司的股東人數為7092戶
- 環球微頭條丨大和:阿里巴巴業務重組 菜鳥、本地服務業務分拆上市可能性增加
- 天天快資訊丨泡泡瑪特漲超10% 2022年海外市場收入同比增長147.1%
- 郭廣昌:2022年復星的確受到很大損失 好在穿過這場風暴
- 港發展局指環團對交椅洲人工島項目工程加劇政府財赤說法流于武斷
- 全球速遞!南昌經開區:凡購買商品住宅和非住宅即發放購房現金
- 世界熱資訊!東方電熱:謝謝您對公司的關心!公司多晶硅還原爐產品今年交貨期主要集中在5月至6月
- 全球速遞!新朋股份:目前公司尚無上述領域業務。請注意投資風險
- 天天看熱訊:理事是什么職位
- 全球熱消息:長三角旅游消費復蘇正當時:3月份旅游訂單量同比實現翻倍式增長
- 世界時訊:怠慢是什么意思?怠慢的出處是哪里?
- 鋰電池股票龍頭有哪些
- 當前熱議!陽光財產保險股份有限公司是國企嗎
- 環球快資訊丨coser是什意思?coser怎么理解?
- 【世界新要聞】退市整理期的股票可以買嗎
- 四川瀘州市古藺縣在哪里?四川瀘州市古藺縣資料介紹?
- 對比明顯!湖人首發包攬107分 替補僅由施羅德和八村得到14分
- 青云志周小環結局是什么?周小環是一個什么樣的角色?
- 商務局和外經貿局是一回事嗎?商務局和外經貿局有什么區別?
- 快消息!企業管理學基礎知識有哪些?企業管理學基礎知識體現于管理學的特點?
- 當前要聞:美國地理位置怎么樣?美國地理位置的優越性有哪些?
- 全球快看:什么播放器可以看港澳臺直播?可以看港澳臺直播的播放器有哪些?
- 天天速遞!給領導的祝福語怎么寫?寫給領導的祝福語有哪些?
- 進氣壓力傳感器的工作原理是什么?進氣壓力傳感器怎么工作?
- 每日消息!深圳控股盤初升約10% 2022年全年度虧轉盈賺20.85億元
- 銀城國際控股:2022年歸屬股東凈虧損9.99億元
- 華發物業:2022年實現收入15.99億元
- 中央氣象臺:華北中南部黃淮西部大氣擴散條件一般 西北部分地區將有沙塵天氣
- 全球速讀:達實智能:物聯網和工業互聯網都與企業數字化、信息化建設密切相關
- 天天短訊!金銀多頭福音來了!機構大幅上調均價預期
- 黃金市場分析:銀行危機情緒極大緩解 黃金繼續高位盤整
- 燁星集團:2022年凈虧損5187萬元
- 土坑酸菜事件后,康師傅的“順風順水”也被踩碎
- 順豐控股:1-2月累計達成國內速運物流業務量13%增速和收入10%增速
- 【環球快播報】粵桂股份:加大甘蔗產業發展符合我們的基本戰略,是否提煉乙醇需結合企業實際進行論證
- 天天微速訊:3月30日限售股解禁一覽(名單)
- 酒店規定引爭議,一家三口能不能住標間?
- 填權是什么意思
- 當前觀察:沈陽首套房利率降至3.8%,支持公寓類非住宅去庫存,前兩月個人按揭貸款下降45.9%
- 【世界新要聞】綠城中國業績會上剛提拿地目標,今日已收獲杭州兩宗地
- 雄安建設有序推進,榮盛發展穩增長行情日漸清晰
- 當前關注:遠洋集團完成共計2060萬美元次級永續美元債票息兌付
- 觀點:第一服務控股:2022年收益約為人民幣11.22億元
- 元道通信:世界人工智能技術已經出現了突破,將深刻改變人們的生產生活方式
- 環球微動態丨東南網架:公司將根據發展戰略,綜合對下屬子公司進行規劃
- 最新消息:德固特:公司未開展碳捕集相關領域的研究活動。謝謝您對公司的關心與支持!
- 每日熱聞!信德新材:截至目前,公司與榮盛石化沒有業務往來
- 天天速遞!東北證券:二季度A股震蕩依舊 政策導向的行業占優
- 簡訊:又見牛市長期起點!頂流劉格菘、傅鵬博、馮明遠最新判斷出爐 新進哪些股
- 看點:機構扎堆調研AI!中金公司、易方達基金、PAG等都出手了