搜尋

搜尋結果

升級 Spring Boot WebClient SSL (Reactor Netty 1.2.6):重新配置 SSL 設定
科技新知
MacauYeah・2025-08-27

因為SSL provider 更新了的關係,好多 HttpClient WebClient 設定SSL的部份都要重寫以免出現 deprecated 問題 reactor.netty.http.client.HttpClient 在 1.0.x, 中可以這樣自行設定SSL逾時的部份,但當中的spec.sslContext.defaultConfiguration 在新版本,例如1.1.x後就會出現 deprecated。 deprecated version HttpClient.create .securespec gt; spec.sslContextSslContextBuilder.forClient .defaultConfigurationSslProvider.DefaultConfigurationType.TCP .handshakeTimeoutDuration.ofSeconds30 .closeNotifyFlushTimeoutDuration.ofSeconds10 .closeNotifyReadTimeoutDuration.ofSeconds10; 觀看各大網站,都未有更新,唯有自行研究官方說明。 筆者撰寫本文的時候,netty 發行版本為 1.2.6, 1.3.0 還里程碑M6的階段。所有參考皆來自1.2.6版本,實際上我們要使用新的後綴為ContextSpec類,看Class名應該有分http 1.1, 2, 3的版本,筆者就試用最基本的http 1.1。Http11SslContextSpec, 有條件的朋友可以試用Http2SslContextSpec, Http3SslContextSpec import reactor.netty.http.Http11SslContextSpec; import reactor.netty.http.client.HttpClient; import java.time.Duration; import org.springframework.web.reactive.function.client.WebClient; import org.springframework.http.client.reactive.ReactorClientHttpConnector; ... Http11SslContextSpec http11SslContextSpec = Http11SslContextSpec.forClient; HttpClient httpClient = HttpClient.create .securespec gt; spec.sslContexthttp11SslContextSpec .handshakeTimeoutDuration.ofSeconds30 .closeNotifyFlushTimeoutDuration.ofSeconds10 .closeNotifyReadTimeoutDuration.ofSeconds10; WebClient webClient = WebClient.builder.clientConnectornew ReactorClientHttpConnectorhttpClient .build; ... 雖然這個寫法來看netty 1.2.6,但似乎1.1.x 通用。大家有需要可以交互測試一下。 Reference netty 1.2.6 httpclienttimeout 的設定 netty 1.1.30 timeoutconfiguration 的設定 netty 1.2.6 java api doc netty release version 更多筆者的程式開發分享,見請 github

澳旅大開放日有獎抽!免費酒店房等你拎!
生活在我城
Cheers!・2025-12-27

2026年澳旅大開放日嚟喇!有得玩、有得睇,仲有機會抽中澳旅大住宿教學樓標準客房一晚 !名額一共10份,其中2份可以透過線上抽獎獲得,其餘8份就要親身嚟開放日現場先有機會拎到㗎~無論你喺中學生、家長定喺各界朋友,都歡迎一齊嚟感受澳旅大嘅熱鬧同魅力! 小編已經準備好帶大家玩轉校園,約定你啦~ 想參加線上抽獎?立即Click入以下連結,依照指定步驟參與! httpss.ctm.netk7LwY 開放日當日仲有超多精彩活動,包括學位課程資訊站、主題講座、校園導賞、攤位遊戲、工作坊、音樂表演等等!如果嚟唔到現場都唔使擔心,澳門旅遊大學小紅書官方帳號同埋CTM Buddy Facebook專頁同步直播,帶你即時感受現場熱鬧氣氛,一定唔好錯過! 活動日期:2026年1月4日(星期日) 時間:下午2點 地點:澳旅大氹仔校區 活動流程精選 開幕儀式(14:00 14:15) 地點:展望樓大禮堂 學位課程及招生資訊站(14:15 18:00) 地點:耀東樓地面層 JG12、JG13室 創意旅遊與智慧科技學院 學士學位課程攤位(14:15 18:00) 旅遊企業管理、文化與遺產管理 地點:耀東樓三樓 J302室 市場營銷與品牌管理、管理與數據科學 地點:耀東樓三樓J303室 國際商業及創新傳播 地點:耀東樓三樓J307室 創新款待管理學院 學士學位課程攤位(14:15 18:00) 酒店管理、旅遊會展及節目管理 地點:耀東樓負四樓 廚藝管理 地點:耀東樓負二樓JB204廚藝示範廚房 研究生課程攤位(14:15 18:00) 地點:耀東樓二樓J202、J203室 主題講座(每場均有抽獎環節!) 14:30 ndash; 15:00 amp; 15:30 ndash; 16:00 創意旅遊與智慧科技學院講座 地點:耀東樓三樓J314、J315室 15:00 ndash; 15:30 amp; 16:00 ndash; 16:30 創新款待管理學院講座 地點:耀東樓三樓J314、J315室 15:00 ndash; 16:00 研究生(碩士及博士)課程講座 ldquo;研"途澳秘 地點:耀東樓二樓J203室 每場講座均設大抽獎環節,另外到現場完成指定任務、集齊印章,亦可換領紀念品及參加終極大抽獎! 體驗活動專區(14:1518:00) 學生大使帶你遊校園、攤位遊戲、工作坊及表演。 廚藝學會活動、廚藝工作坊 餐桌服務體驗 烘焙、甜品工作坊 精品手沖及意式拿鐵咖啡工作坊 潮州工夫茶藝工作坊 財務策劃工作坊 音樂學會學生表演 音樂工作坊、彩繪體驗、外語遊戲、紙紮工作坊 康體工作坊(體脂測試,柔軟度測試,室內射籃) 大獎內容 澳旅大住宿教學樓 標準客房住宿一晚 (得獎名單將於1月內在澳門旅遊大學社交平台上公佈) 無論你喺想深入了解學科,還是想體驗大學校園生活,澳旅大開放日都不容錯過!我地1月4號見~

【開箱】真實測評:快充+多設備兼容!一條搞掂嘅 CyberCom 3合1 充電數據線
科技新知
Cheers!・2025-07-18

上次去旅行的時候,小編大頭蝦到漏帶咗 AirPods 條充電線,差啲成程冇歌聽! 好彩問朋友借到線救命,點知發現佢只係帶咗一條線,就叉到晒所有設備!咁方便,小編返到澳門即刻入手同款!今日就同大家開箱呢條 CyberCom 三合一充電數據線 設計實淨有質感 充電線包裝設計走簡約風,拆開上手,線身用尼龍編織,摸落比普通膠線硬淨好多,而且冇咁易打結纏埋一舊!接口位用 鋁合金外殼,手感好之餘,耐插耐用仲唔怕爆殼。三合一設計,轉接口好順手。 第一眼感覺:抵玩實用! 實測開始!睇下係咪真係咁神? 實測1:「一線多用」,兼容性大考驗! 買佢最大原因,就係想旅行出街唔使再帶幾條線!即刻拎身邊啲裝置試真啲: ✔︎ iPhone(Lightning) ✔︎ Samsung Galaxy(TypeC) ✔︎ 舊款Android手機(MicroUSB) ✔︎藍牙耳機、行動硬碟... 新舊裝置全部用到! 以後出街旅行,真係帶一條就夠,慳位又唔怕漏帶! 實測2:極速充能!60W 快充有幾快? 賣點話支援 QC 快充,仲有 60W 高功率輸出!小編實際使用過,無論係iPhone、android定平板,都可以穩定充電,食個晏、打鋪機嘅時間,部電話就已經叉得七七八八!對手機重度使用者嚟講,真係救星! 記住配合支援快充嘅插頭,咁就更加有感。 實測3:480Mbps 高速傳檔,快到飛起! 除咗叉電,佢仲支援 480Mbps 高速數據傳輸!即刻試下將手機啲相片、影片過落電腦 Backup! 比佢過一條2GB嘅旅行片...哇!大約40秒搞掂,比起普通 USB 線真係快成幾倍,以後過相過片唔使再慢慢等,效率大提升! CyberCom 三合一充電數據線解決曬小編平時帶線嘅煩惱 一線三用,兼容性強:新舊裝置、叉電傳檔都搞掂。 60W 快充夠快夠力:叉電速度救急必備。 傳檔超快 480Mbps:Backup 大檔案唔使再等。 一條線就集齊晒叉電、傳檔、兼容性同耐用性。呢家仲做緊特價,$79呢個價位(原價$99),性價比高,值得入手!以後出街,真係可以同「帶幾條線」講 Bye Bye 啦! 想知係邊度買? 澳門市場強勢上市,現在購買享特價 $79! 官方網站:www.cyberportcom.com 客服郵箱:info@cyberportcom.com

Spring Boot 04 - 進入http json api 世代
科技新知
MacauYeah・2024-05-23

本節,我們將會建立一個http服務,提供json api讓程式訪問。 下戴模版 我們跟上節一樣,使用Spring Initializr Maven 下載模版,但細節筆者就不再講啦。Dependency主要選擇 Spring Web Spring Boot DevTools 下載後,可以直接運行測試,可以用指令 mvn test 或經IDE運行。Spring會至少測試下能不能成功取用預設的8080端口。 Controller 我們若要實作 http json api,需要在 spring 中加入一個類,附註為 @RestController ,那方便起見,類名我們也命名為 XXXController 吧。作為示範,我們弄一個 HomeController.java ,裏面有最常見的 http GET, POST功能。 srcmainjavaiogithubmacauyeahspringboottutorialspringbootwebapibasiccontrollerHomeController.java import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; ... other import @RestController @RequestMappingquot;apiquot; public class HomeController @GetMappingquot;someRecorduuidquot; public Map readSomeRecord@PathVariable String uuid return Map.ofquot;retquot;, quot;your uuidquot; uuid; @PostMappingquot;someRecordquot; public Map createSomeRecord@RequestBody Map requestBody HashMap ret = new HashMaprequestBody; ret.putquot;retquot;, quot;got your requestquot;; return ret; HomeController裏,完整的URL 其實為 GET httplocalhost8080apisomeRecorduuid POST httplocalhost8080apisomeRecord URL中的api之後的路徑,都是定義在 HomeController 中,而前半的8080及context path,是使用預設值。在正式環境下,可能隨時會被重新定義。但我們做本地測試,只需要驗證預設值就可以了。 我們真的運行起程式mvn clean compile springbootrun,再使用最簡測試工具進行測試。Windows的朋友,可以選擇Postman作為測試,它有圖形介面。而linux的朋友,請用curl,預設安裝都會有。下列為方便表示測試參數,筆者選用curl。 測試GET,其中1234會自動對應到spring裏的uuid。 curl httplocalhost8080apisomeRecord1234 # return quot;retquot;quot;your uuid1234quot; 測試 POST,其中的 d 參數,會對應 spring裏的 @RequestBody, H 參數則是設定 http header 的意思,我們就使用約定俗成的 json 作為 header 。 curl X POST httplocalhost8080apisomeRecord H quot;ContentType applicationjsonquot; d 'quot;requstquot;quot;did you get itquot;' # return quot;requstquot;quot;did you get itquot;,quot;retquot;quot;got your requestquot; 上面的兩個操作,都回傳了我們輸入的資訊,這代表了我們成功用spring架起了http json api,而且正常讀入資訊。 Test Case 雖然我們可以正常地架起 api,但每次開發都要 postman curl這種工具額外試一次,其實也有一些成本。而且 api 數量變大,或經多次修改後,就重複人手執行,就變得相當討厭。 面對這個問題,筆者會建議寫測試用例,即是Test Case,而且用Spring內置的@SpringBootTest來寫。 產生一個空的Test類,vscode中,最簡單可以Source Action =gt; Generate Test,然後加入這次要測試的參數。 srctestjavaiogithubmacauyeahspringboottutorialspringbootwebapibasiccontrollerHomeControllerTest.java import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.RequestBuilder; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultHandlers; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; @SpringBootTest @AutoConfigureMockMvc public class HomeControllerTest @Autowired private MockMvc mockMvc; @Test void testGetSomeRecord throws Exception RequestBuilder requestBuilder = MockMvcRequestBuilders.getquot;apisomeRecord1234quot; .contentTypeMediaType.APPLICATION_JSON; this.mockMvc.performrequestBuilder .andExpectMockMvcResultMatchers.jsonPathquot;$.retquot;.valuequot;your uuid1234quot; .andDoMockMvcResultHandlers.print; @Test void testPostSomeRecord throws Exception String request = quot;quot;quot; quot;requstquot;quot;did you get itquot; quot;quot;quot;; RequestBuilder requestBuilder = MockMvcRequestBuilders.postquot;apisomeRecordquot; .contentTypeMediaType.APPLICATION_JSON .contentrequest; this.mockMvc.performrequestBuilder .andExpectMockMvcResultMatchers.jsonPathquot;$.requstquot;.valuequot;did you get itquot; .andExpectMockMvcResultMatchers.jsonPathquot;$.retquot;.valuequot;got your requestquot; .andDoMockMvcResultHandlers.print; 最後就是執行 mvn test 或經IDE運行,應該都會得到所有測試都通過的結果。 mvn test # other test result ... INFO Tests run 2, Failures 0, Errors 0, Skipped 0, Time elapsed 0.368 s in io.github.macauyeah.springboot.tutorial.springbootwebapibasic.controller.HomeControllerTest # other test result ... 上面的程式碼很多,我們逐一來。 @SpringBootTest 寫在類的外面,代表執行這個測試類時,需要運行起整個Spring程序,當然也包括http的部份。 @AutoConfigureMockMvc 寫在類的外面,代表執行這個測試類時,可以模擬一些發向自己的 http 請求。 @Autowired private MockMvc mockMvc 寫在類的裏面,因為之前有定義了可以模擬 http 的請求,Spring在運行時為大家提供了那個所謂的模擬http client的實例。 MockMvcRequestBuilders,則是建造要測試的URL及Header參數。 MockMvcResultMatchers,則是檢查回傳的結果是否如遇期的一樣。 為何這個http client叫模擬 Mock 因為在測試用例中,可能連Controller 內部依賴組件也需要進一步模擬,這樣才能把測試目標集中在Controller裏,這也是單元測試的原意。只是本次的例子看不出模擬與否的差別。 MockMvcResultMatchers.jsonPath,這是用來檢測json的結構是否跟預期一樣。有些網路上的其他例子會簡寫成 jsonPath ,但因為vscode IDE的自動import功能比較差,筆者還是保留傳統的寫法。 如果大家覺得@SpringBootTest很難,想折衷地把其他測試方法,那麼把 postman curl好好管理起來,每次修改完程式,都完整地執行一次 postman curl ,也可以達到測試的效果。只不過大家還是要好好學會整合 postman curl,知道如何檢測json結構,什麼時候有錯,什麼時候叫測試通過,所以也要花一樣功夫來實現。 最後,大家千萬不要因為測試難寫而逃課,因為寫測試絕對地可以減輕日後重執行的工作量。除非你的程式碼即用即棄,否則都建議寫測試。測試跟寫文檔不一樣,有了測試也不能沒有文檔。好消息的是,文檔現在越來越多自動生成的工具,我們日後再找機會介紹。 Source Code spring boot web api basic

“人間精品起來嗨”大張偉巡迴演唱會澳門站
音樂聯合國
LifeMag Editor・2017-03-17

中國最具代表性的流行音樂歌手及媒體人之一大張偉將於4月30日(星期日)在澳門威尼斯人reg;金光綜藝館舉行ldquo;人間精品起來嗨rdquo;大張偉巡迴演唱會澳門站,保證為歌迷帶來別開生面、充滿互動的演出。門票價格由澳門幣280元起,並由即日起透過各大金光票務售票處公開發售。 是次巡迴演唱會將在北京、武漢、廣州及上海等多個城市進行巡演,大張偉將帶來一連串的勁歌熱舞,更擔當DJ、相聲演員以及導演等多個角色,力求為觀眾打造一場獨特創新的演唱會。 來自北京的大張偉年少時已赫赫有名,他在年僅15歲時成立了紅極一時的花兒樂隊,擔當主唱及結他手。這次ldquo;人間精品起來嗨rdquo;大張偉巡迴演唱會澳門站相信是其歷年單飛音樂生涯中最重要的演出,他將以多樣及有趣的音樂風格向樂迷證明。 演唱會不僅帶來花兒樂隊的《嘻唰唰》及《倍兒爽》等結合龐克、hip hop及高科技舞曲的首本名曲外,更將會展示大張偉單飛轉戰EDM風格後在微博大熱的歌曲。 演唱會門票由即日起透過各大金光票務售票處、香港快達票以及澳門廣星傳訊公開發售。歌迷萬勿錯過是次良機,與中國最火紅的偶像會面並欣賞ldquo;人間精品起來嗨rdquo;大張偉巡迴演唱會澳門站精彩的演出。 演唱會詳情: 票價 澳門幣 港幣 1,280元 VIP 區 澳門幣 港幣 980元 A 區 澳門幣 港幣 680元 B 區 澳門幣 港幣 480元 C 區 澳門幣 港幣 280元 D 區 船票套票 觀眾可另加澳門幣港幣108元購買包括金光飛航往返港澳雙程船票的套票 售票處 金光票務 網上訂購:cotaiticketing.com 售票處: 澳門巴黎人 ndash; 一樓正門大堂售票處 澳門威尼斯人 ndash; 金光綜藝館及酒店正門大堂售票處 澳門四季酒店 ndash; 百利宮trade;售票處 澳門金沙reg; ndash; 一樓售票處 金沙城中心 ndash; 喜來登酒店正門及假日酒店正門售票處 電話訂購: 澳門熱線:853 2882 8818 香港熱線:852 6333 6660 中國內地免費熱線:4001 206 618 香港快達票(將額外收取每張門票的顧客服務費) 網上訂購:HKTicketing.com 電話訂購:852 3128 8288 澳門廣星傳訊 網上訂購:macauticket.com 門市據點資料請瀏覽:macauticket.comTicketWebServiceStations.aspx 電話訂購:853 2855 5555

長榮航空澳門出發,經台北飛關島來回連稅HKD4,213!
激安優惠
OHChance 旅遊誌・2016-02-02

之前同大家介紹過菲律賓航空2600銀飛關島,有版友問唔想係菲律賓轉機有無選擇?答案係有ge!其實長榮都有飛關島架,之前亦同大家介紹過,小燦之前去也是坐長榮。 最近發現在Expedia 上面買長榮澳門出發經台北飛關島,來回連稅最低HKD4,213! 搵過今年回歸、12月17日出發、21日回,都有呢口價!真心OK! 長榮轉機時間短,飛關島又係Hello Kitty 機,雖然比菲律賓貴千幾蚊,但真心覺得值。 呢個價錢上Expedia 或攜程上面先有,長榮官網買會貴近800元。不過由於唔係日日都有航班,各位可以先上長榮官網搵下邊日有航班的,再上返expedia search 價錢。 最後提提大家,由於澳門航空將於3月1日起取消燃油附加費,依經驗是長榮燃油policy 都係睇住澳航,所以是有可能(可能咋)到了3月會再平d,各位可以自行考量購買時機。 簽證方面,澳門特區護照前往關島需要辦理美國簽證,香港特區護照以及葡國護照則只需上網申請ESTA即可。 【促銷公司】長榮航空(Eva Air)【搭乘日期】2月15日至12月21日【開賣時間】已開賣,至機位售完為止【最長停留】1個月【航班限制】沒有【預訂網址】httpohchance.inforefexpediahk 價錢 Sample ndash; 澳門經台北飛關島來回連稅HKD4,213