@data
class
a@data
class
b
// b物件集合轉換成a物件集合
list
blisttoalist
(list
blist)
;
如上**,是將b集合轉換成a集合,實際編譯完成的**如下,這裡可能疑惑,我們沒有宣告單個物件的轉換,它怎麼編譯後有此物件呢,這就是因為編譯時對**進行的增強,通過反射增加了單個物件的轉換。但也不是每次都會自動生成,它會先遍歷整個物件的方法,通過形參和返回值確定是否已經存在了所需要的單個物件轉換方法。如果存在了就直接使用了。
public a btoa
(b b)
else
}public list
blisttoalist
(list
blist)
else
return list;
}}
如果我們自定義了屬性對應關係
// b物件轉換成a物件()
a btoa
(b b)
;// b物件集合轉換成a物件集合
list
blisttoalist
(list
blist)
;
則編譯後的**如下:我們發現,它使用了我們自定義好的轉換規則
public a btoa
(b b)
else
}public list
blisttoalist
(list
blist)
else
return list;
}}
如果我們寫了兩個方法,這兩個方法名不一樣,但是形參和返回值一樣會出現什麼問題呢?
// b物件轉換成a物件()
a btoa
(b b)
;a btoanew
(b b)
;// b物件集合轉換成a物件集合
list
blisttoalist
(list
blist)
;
// b物件轉換成a物件()
@named
('btoa'
)a btoa
(b b)
;@named
('btoanew'
)a btoanew
(b b)
;// b物件集合轉換成a物件集合
(qualifiedbyname =
'btoanew')
list
blisttoalist
(list
blist)
;
此時編譯好的**如下:
public a btoa
(b b)
else
}public a btoanew
(b b)
else
}public list
blisttoalist
(list
blist)
else
return list;
}}
SpringMVC框架的一些底層
類結構圖 首先看一下這個結構圖,dispatcherservlet是springmvc的核心控制器,他遵循了servlet規範.雖然現在是乙個高大上的框架,但是這三個重要方法肯定是不能忽視的.第一步 初始化位於httpservletbean當中的init 方法,因為他是對接servlet容器體系中傳...
Tensorflow 框架的一些細節
其中常用的fetches和feed dict就是常用的傳入引數。fetches主要指從計算圖中取回計算結果進行放回的那些placeholder和變數,而feed dict則是將對應的資料傳入計算圖中佔位符,它是字典資料結構只在呼叫方法內有效。dien 的 在 model.train 和 model....
高併發的一些處理方法
最近一段時間一直在看一些高併發處理策略的文章,在此也稍微總結一下自己的心得 一.高併發 可以這麼理解高併發,在同一時間,有大量使用者同時訪問同乙個url,容易導致伺服器和資料庫資源被佔滿崩潰,資料庫的儲存和更新結果跟理想不一致,例如出現重複的資料記錄,多次新增記錄等資料錯亂問題。二.高併發的處理策略...