2025年1月18日 星期六

JAVA 7 to 17 Stream

一、前言

一、前言

返回目錄

Java團隊規劃函數化Lambda操作,讓Java物件導向的語言更簡潔,操作起來很有函數的風格。可是在引入Lambda的概念前,Java可是純物件導向,那些根深蒂固的物件要如何改造才能相容以前的寫法,又可以重生使用函數化操作呢?

規劃流水線,使用建造者模式(Builder Design Pattern)的概念,一個函數,一個功能,慢慢完成最終的成品。

新建立函數化風格的套件- java.util.stream ,在這個套件內的所有Class都是支持函數化操作。

Classes to support functional-style operations on streams of elements, such as map-reduce transformations on collections.

目錄

JAVA 7 to 17 Lambda

一、前言

一、前言

返回目錄

Java 8 為了擺脫太囉嗦,匿名類別再進化,但其實是為了函數化(Functional),導入函數式程式設計(Functional programming, FP)理念。

數學與電腦科學中,Lambda的概念很早就提出過,直到解決邏輯一致性問題(簡單類型λ演算),才逐漸奠定λ演算在語言學和電腦科學學界擁有一席之地。

λ-演算結合了兩種簡化方式,使得這個語義變得簡單,變為可計算的函數,明確的計算模型。

第一種簡化是不給予函式一個確定名稱,而「匿名」地對待它們。例如,兩數的平方和函式

s q u a r e _ s u m ( x , y ) = x 2 + y 2 square\_sum(x, y)=x^2+y^2

可以用匿名的形式重新寫為:

( x , y ) x 2 + y 2 (x,y)\mapsto x^2+y^2

第二個簡化是λ演算只使用單一個參數輸入的函式。如果普通函式需要兩個參數,例如 s q u a r e _ s u m {\displaystyle square\_sum} 函式,可轉成接受單一參數,傳給另一個函式中介,而中介函式也只接受一個參數,最後輸出結果。例如,

( x , y ) x 2 + y 2 (x,y)\mapsto x^2+y^2

可以重新寫成:

x ( y x 2 + y 2 ) x\mapsto(y\mapsto x^2+y^2)

這是稱為柯里化的方法,對於柯里化轉換版的計算方式如下

( ( x , y ) x 2 + y 2 ) ( 3 , 2 ) = ( ( x ( y x 2 + y 2 ) ) ( 3 ) ) ( 2 ) = ( y 3 2 + y 2 ) ( 2 ) / / 在內層表達式中 x 的定義為 3 ,這就像 β 歸約一樣。 = 3 2 + 2 2 / / y 的定義為 2 ,再次如同 β 歸約。 = 13 \begin{split} \big((x,y)\mapsto x^2+y^2\big)(3,2)&=\Big(\big(x\mapsto(y\mapsto x^2+y^2)\big)(3)\Big)(2)\\ &=(y\mapsto 3^2+y^2)(2) \space //在內層表達式中{\displaystyle x}的定義為{\displaystyle 3},這就像β-歸約一樣。\\ &=3^2+2^2 \space //{\displaystyle y}的定義為{\displaystyle 2},再次如同β-歸約。\\ &=13 \end{split}

lambda演算中的所有函式都是匿名的,它們沒有名稱,它們只接受一個輸入變數,柯里化用於實現有多個輸入變數的函式。

目錄

2025年1月12日 星期日

Java 7 to 17 Overview New Features And Changes

一、前言

一、前言

返回目錄

很久沒有關注Java的更新,從學完Java7後,進入職場時Oracle釋出Java8,但工作上也沒有進行升級,也對Java升級的版本沒有過多的關注。

後來Oracle Java針對商業用途收費的消息鬧得沸沸揚揚,公司也暫緩對Java升級,轉向使用OpenJDK。2023 年 1 月 23 日 Oracle Java SE 調升訂閱制價格,其價格是按員工數來算,費用可不便宜。

“Your company has a total employee count of 28,000 as detailed in the Employee for Java SE Universal Subscription definition below. This includes 23,000 full-time, part-time and temporary employees plus 5,000 agents, contractors and consultants. Therefore, the price would be 28,000 X $USD 6.75/month X 12 months = $USD 2,268,000/year.”

為什麼會再繼續關注更新議題呢?
因為Spring框架 Spring boot 與資安議題,Spring修復弱點進行版本更新,Spring 6.x 和 Spring Boot 3.x 版本最低要求為Java17,不得已還是得要被迫更新(小腦袋瓜)。

目錄

VSCode-Extensions-Markdown

一、前言

一、前言

在現今的軟體開發、文件撰寫、筆記記錄等領域, Markdown 已經成為一種不可或缺的輕量級標記語言。它以其簡潔、易讀、易寫的特性,廣受歡迎。相較於傳統的富文本格式 (如 Word),Markdown 使用純文字來表示格式,能專注於內容創作,並減少排版上的干擾。

Visual Studio Code (VS Code) 作為一款強大的程式碼編輯器,通過豐富的擴充功能,對 Markdown 提供了極佳的支援。無論是撰寫技術文件、筆記,或是 README 檔案,VS Code 都能提供流暢、高效的 Markdown 編輯體驗。

本文件將介紹如何在 VS Code 中安裝和使用 Markdown 相關的插件,並示範如何透過這些工具來提升 Markdown 的編輯效率,讓您能更輕鬆地享受 Markdown 的便捷性。

為何選擇 Markdown?

  • 簡潔易學: Markdown 語法簡單直觀,容易上手,您不必花費太多時間學習。
  • 純文字格式: Markdown 文件是純文字格式,可以在任何文字編輯器中開啟,並且易於版本控制。
  • 專注內容: Markdown 讓您專注於內容的撰寫,而非複雜的排版。
  • 跨平台相容: Markdown 文件可以在各種平台和應用程式中無縫轉換和顯示。
  • 廣泛應用: Markdown 已廣泛應用於部落格、技術文件、筆記軟體、社群平台等,是一種通用的文件格式。

為何選擇 VS Code 編輯 Markdown?

  • 強大的編輯器: VS Code 是一款功能強大、可高度自訂的程式碼編輯器,提供了良好的 Markdown 編輯體驗。
  • 豐富的擴充功能: VS Code 的擴充功能生態系統非常活躍,有許多 Markdown 相關的插件可以提升編輯效率。
  • 即時預覽: VS Code 可以即時預覽 Markdown 文件,讓您隨時看到呈現效果。
  • 跨平台支援: VS Code 可以在 Windows、macOS 和 Linux 等多個平台上使用。

目錄

2025年1月5日 星期日

Markdown標記語言-全面解析

一、前言

一、前言

返回目錄

Markdown是一種羽量級標記語言,排版語法簡潔,讓人們更多地關注內容本身而非排版。 它使用易讀易寫的純文本格式編寫文檔,可與HTML混編,可匯出 HTML、PDF 以及本身的 .md 格式的檔。 因簡潔、高效、易讀、易寫,Markdown被大量使用,如Github、Wikipedia、簡書等。

千萬不要被「標記」、「語言」嚇到,Markdown的語法十分簡單,常用的標記符號不超過十個,用於日常寫作記錄綽綽有餘,不到半小時就能完全掌握。

就是這十個不到的標記符號,卻能讓人優雅地沉浸式記錄,專注內容而不是糾結排版,達到「心中無塵,碼字入神」的境界。

讓我們開始學習吧。

目錄

返回目錄