作者查詢 / ssccg

總覽項目: 發文 | 留言 | 暱稱
作者 ssccg 在 PTT [ java ] 看板的留言(推文), 共2140則
限定看板:java
看板排序:
[工具] 一堆*.JAVA 如何匯入專案中
[ java ]9 留言, 推噓總分: +2
作者: EijiHoba - 發表於 2023/03/23 13:06(2年前)
1Fssccg: 隨便開個專案,照package位置放進去不就好了03/23 13:09
[問題] Runnable 作為method的input
[ java ]11 留言, 推噓總分: +3
作者: ntpuisbest - 發表於 2022/10/27 00:09(3年前)
3Fssccg: 這邊的Runnable跟Thread一點關係都沒有10/29 12:44
4Fssccg: 題目寫了ThreadA是要呼叫fizz,不是要當fizz的參數10/29 12:46
5Fssccg: Runnable printFizz的功能單純是印出fizz,不是Thread10/29 12:46
6Fssccg: 你對Runnable的理解就是錯的,沒有通常是那樣用的10/29 12:47
7Fssccg: Runnable就是用來當一個無參數無回傳方法的物件,相當於10/29 12:50
8Fssccg: FunctionalInterface的 () -> void,而Thread只是剛好需要10/29 12:52
9Fssccg: 一個這種參數而已10/29 12:53
[問題] 如何使用intejjij打包war
[ java ]6 留言, 推噓總分: 0
作者: glwl40039 - 發表於 2022/09/01 13:20(3年前)
1Fssccg: 按那個+,選你要放進去的目錄啊09/01 14:47
[問題] java throw and throws例外的用途
[ java ]41 留言, 推噓總分: +3
作者: ntpuisbest - 發表於 2022/07/01 20:34(3年前)
11Fssccg: throws是標註會拋出的例外,要不要處理是看例外的類型07/02 13:26
12Fssccg: 繼承Exception但不是RuntimeException的才會編譯時強制處理07/02 13:26
13Fssccg: throw就是中斷執行拋出例外,如果throw的例外類型是必須處07/02 13:29
14Fssccg: 理且在method中沒有被catch,編譯時就會要求method標throws07/02 13:30
15Fssccg: 通常用throw是因為程式屬於較底層,不能「決定」要怎麼處理07/02 13:34
16Fssccg: 拋出例外 = 中止執行,把狀況回報給上層的呼叫者,由上層決07/02 13:35
17Fssccg: 定處理方式,像是重試、替代方案,或是通知更上層07/02 13:38
18Fssccg: 如果每層都不處理,最後就是跑這段程式的Thread會中止執行07/02 13:40
19Fssccg: 如果是Main Thread (從main方法throw出來)那就是JVM會異常07/02 13:41
20Fssccg: 中止,俗稱閃退07/02 13:41
21Fssccg: 所以如2樓所說,如果是有使用者的程式,通常最慢在UI層前會07/02 13:43
22Fssccg: 處理所有的例外,顯示成錯誤訊息。如果是非java函式庫的API07/02 13:46
23Fssccg: 如Web、RPC,會處理成該API規格定義的錯誤回應07/02 13:46
24Fssccg: 沒有無法處理,只有業務邏輯上你這層程式無權決定怎麼處理07/02 13:49
25Fssccg: 不處理就別catch而是要throws,單純catch+log也是一種處理07/02 13:51
39Fssccg: CheckedException也許立意是好的,但是JSE自己的分類原則就07/06 11:46
40Fssccg: 有問題才搞到人家不想用,一堆本質上是IllegalArgument、07/06 11:50
41Fssccg: IllegalState的checked exception07/06 11:51
[問題] 六年經驗的前輩寫了出了.equals(null)
[ java ]31 留言, 推噓總分: +8
作者: a88241050 - 發表於 2022/06/07 00:05(3年前)
7Fssccg: 原本那個null也許是個變數,在多次copy-paste和refactor後06/07 18:14
8Fssccg: 變成null吧....只能想到這種解釋06/07 18:16
9Fssccg: 這寫法不能的點在變數真的是null就直接NPE了,不是新手老手06/07 18:18
10Fssccg: 問題,是除了String不得不用外,怎麼會想用equals06/07 18:21
13Fssccg: 沒幾個語言無聊到像java要用equals吧...大多是override ==06/08 10:45
[問題]沒有autowired會要自己new一堆很深的建構?
[ java ]41 留言, 推噓總分: +1
作者: ntpuisbest - 發表於 2022/05/09 01:04(3年前)
1Fssccg: 你只用你自己寫的程式當然覺得都用無參數建構子就好05/09 04:46
2Fssccg: 假設你的Dao需要個一定得從外面傳進來的DataSource05/09 04:47
3Fssccg: 勢必要改成這一串相依類別的建構子都要有DataSource參數05/09 04:48
4Fssccg: 「所有類別都能用無參數建構子new出來」是你一廂情願的想法05/09 04:49
5Fssccg: 就算不用依賴注入,把Dao的new直接寫在Service的裡也不是好05/09 04:52
6Fssccg: 事,這代表Dao的建構子一改你所有new到他的Service都要改05/09 04:52
7Fssccg: 這就是直接依賴實作的問題,即使沒有特別抽出interface,只05/09 04:55
8Fssccg: 呼叫public method是只依賴於介面,呼叫到建構子是綁死實作05/09 04:56
10Fssccg: 你在你的Dao裡面是要怎麼呼叫getDatasource?05/09 21:17
11Fssccg: 那個getDatasource不是getter,是定義一個Bean (由spring的05/10 00:22
12Fssccg: ApplicationContext管理的物件),spring的@Autowired或其他05/10 00:23
13Fssccg: 注入方式並不是找任意類別,只會從ApplicationContext中註05/10 00:26
14Fssccg: 冊的Bean裡找名稱/類別/Qualifer符合的05/10 00:27
15Fssccg: 先不談spring怎麼做的,先集中在你一開始的問題,所以你把05/10 00:28
16Fssccg: 你的Service、Dao1、Dao11寫好了,現在Dao11裡面要這個05/10 00:29
17Fssccg: DataSource,你main裡只有Service1 service=new Service1()05/10 00:31
18Fssccg: 你要怎麼改?05/10 00:31
19Fssccg: 是說你問法很像只有在找範例讀、寫些只有sout的測試,建議05/10 00:34
20Fssccg: 先找個題目寫個會動的系統,真正用過這些功能再問05/10 00:35
21Fssccg: 工具是解決問題用的,你沒有問題要解決,拿著工具再怎麼問05/10 00:42
22Fssccg: 它哪裡好用,得到答案你的感覺還是這有什麼用?05/10 00:43
23Fssccg: 對你現在都在一個main就做完的需求,的確這些工具都沒用05/10 00:45
26Fssccg: 雖然你好像終於看出@Autowired的用處了,但是其實這只是05/12 02:42
27Fssccg: @Autowired能直接用在field得到的方便,不是IoC/DI的好處05/12 02:44
28Fssccg: 以你上面的code來說,其實硬要繼續用無參數ctor也不是不行05/12 02:51
29Fssccg: 開setter也行,甚至也可以手動reflection取代@Autowired05/12 02:53
30Fssccg: spring DI的重點是根本不用自己寫那段「組裝」的程式碼,只05/12 02:54
31Fssccg: 要依照spring的慣例定義好相依關係,啟動context就會自動組05/12 02:55
32Fssccg: 好,組裝方式可以用field/setter/ctor都支援,@Autowired不05/12 02:57
33Fssccg: 過是標示而已,有參數的ctor也不是問題05/12 02:59
34Fssccg: (題外話,如果只有一個ctor,不需要@Autowired標示spring也05/12 03:00
35Fssccg: 認得,我個人習慣盡可能用這種方式,可以做到immutable,也05/12 03:12
36Fssccg: 保證需要自己new的時候不會漏掉依賴,當pojo用也行)05/12 03:22
37Fssccg: 然後你說工作上沒碰過複雜的組裝,要不真的是micro service05/12 03:28
38Fssccg: 化/AOP用的很成功那沒話說,要不就是Service其實太肥了05/12 03:30
39Fssccg: 不是單純CRUD的系統,Service常常會需要多個Service或其他05/12 03:39
40Fssccg: handler、adapter...之類@Component組成的吧05/12 03:51
[問題] Spring Data JPA no Session問題
[ java ]17 留言, 推噓總分: +2
作者: jtorngl - 發表於 2022/05/06 12:54(3年前)
1Fssccg: transaction又不是spring data jpa才有的東西,lazy關聯不05/06 14:30
2Fssccg: 過就是個抽象化的query,不管是用jpa還是從底層driver自己05/06 14:31
3Fssccg: 寫,都一樣要自己決定這個query要在哪個transaction執行啊05/06 14:32
4Fssccg: 要像看起來一樣方便就open-in-view,從上到下都用entity05/06 14:35
5Fssccg: 不然總是要自己決定transaction要包到哪,在這之上就不去亂05/06 14:36
6Fssccg: 用entity關聯,而是明確重下一次query。而且包到哪應該是從05/06 14:38
7Fssccg: 資料是否需要transaction決定,不是api操作方不方便決定05/06 14:40
8Fssccg: 至於DTO,主要還是因為要用DTO才用,標誌transaction分界只05/06 14:48
9Fssccg: 是順便而已05/06 15:09
11Fssccg: 我個人DTO用mapstruct,transaction通常只開到我自己的05/06 19:03
12Fssccg: Repository層(在這裡面才再看情用jpa/jdbc),出了這層就是05/06 19:05
13Fssccg: DTO,會分有載入關聯和沒有的API05/06 19:07
14Fssccg: 不過基本上這問題還是看你做的系統需求,就像你說的本來就05/06 19:08
15Fssccg: 是個很淺的data service就沒差05/06 19:10
[問題] 使用stream 跟 for loop 印出來不一樣 ?
[ java ]26 留言, 推噓總分: +1
作者: ntpuisbest - 發表於 2022/04/28 00:10(3年前)
10Fssccg: nums = intList.stream().mapToInt(i -> i).toArray();04/28 12:33
11Fssccg: 是產生新的Array,將reference存到nums這個變數04/28 12:34
12Fssccg: 當然就不是原本nums指到的Array04/28 12:35
13Fssccg: 跟for相等的寫法是 IntStream.range(0, intList.size())04/28 12:40
14Fssccg: .forEach(i -> nums[i]=intList.get(i));04/28 12:45
15Fssccg: 另外你想做個移除元素的方法,但是陣列長度根本不能改,選04/28 12:47
16Fssccg: 用這個容器你從很基本的地方就錯了04/28 12:48
[問題] mock註解和autowired
[ java ]17 留言, 推噓總分: 0
作者: ntpuisbest - 發表於 2022/04/22 17:08(3年前)
9Fssccg: 不完全是,上面這圖的說法我覺得是錯的,那是較少數的情況04/23 07:51
10Fssccg: 如果依賴一樣是你要寫的,那你幹麻不寫完再測? → 因為你只04/23 07:52
11Fssccg: 要測想測的這個Class,沒有要測依賴的其他Class,這種情況04/23 07:52
12Fssccg: mock真正的意義是在限制測試範圍,這叫單元測試04/23 07:53
13Fssccg: 如果依賴不是你負責的是在別的模組,不管是還沒寫好還是沒04/23 07:55
14Fssccg: 提供,這種情況用mock還是在限制測試範圍在你自己的模組內04/23 07:55
15Fssccg: 在所有東西都要寫好一起測的整合測試,才有可能出現"暫時"04/23 07:58
16Fssccg: 代替沒寫好的東西的mock04/23 07:58
Fw: [請益] Spring boot的依賴注入降低耦合的例子
[ java ]8 留言, 推噓總分: 0
作者: ntpuisbest - 發表於 2022/03/31 22:12(3年前)
29Fssccg: field宣告可以用interface,不用實際的class,才有降低耦合04/01 10:17
30Fssccg: 通常實際class並沒有降低耦合,只是省掉自己初始化整個物件04/01 10:18
31Fssccg: 結構的工(spring bean預設的scope是application scope,也04/01 10:19
32Fssccg: 就是整個ApplicationContext裡只會new一次,在有很多bean的04/01 10:20
33Fssccg: app裡面要達到一樣的效果要多寫很多程式碼,可不只是在宣告04/01 10:21
34Fssccg: 處new就好),等哪天真的有需要降低耦合,用refactor工具04/01 10:22
35Fssccg: 把interface抽出就好04/01 10:23