如何使HTML網頁在斷字時斷在我們想要的位置上? 2019 年 6 月 21 日 Magic Len 研究分享、 HTML 在使用HTML編寫網頁的時候,如果是使用英文撰寫,一旦單詞很長,當能夠顯示單詞的寬度不夠時,就會衍生出斷字的問題。要如何讓HTML把字斷在我們想要的位置上呢? 繼續閱讀
如何使Rust程式語言的starts_with和ends_with方法忽略大小寫? 2019 年 6 月 13 日 Magic Len Rust 在開發程式的時候我們時常會需要判斷某個字串的開頭或結尾是否符合某個字串,例如判斷網址是否以「http」或是「https」開頭時,或是判斷檔案名稱是否以「.jpg」或是「.png」結尾時。然而在上述提到的例子中,通訊協定或是檔案副檔名都是可忽略大小寫的,Rust程式語言雖然有提供eq_ignore_ascii_case方法,卻沒有提供starts_with_ignore_ascii_case和end... 繼續閱讀
如何使用Rust程式語言進行快速的字串或是任意資料的搜尋? 2019 年 6 月 11 日 Magic Len Rust 在一篇很長的文章或是一大串文字中找出自己想看到的段落是我們時常會需要做的事情,但是要如何有效率地讓電腦尋找文字中的文字是一件需要思考的事情,甚至有許多針對這個議題所提出的研究論文。字串搜尋演算法的好壞,在複雜的文件內容下,對搜尋時間的影響是非常深遠的。字串搜尋除了能夠正確搜尋一段文字內的特定字串外,還可以用來搜尋龐大的任意資料,因為任何的資料都可以藉由數位編碼轉成只有數字的字串,如一段原始的聲音,... 繼續閱讀
如何使用Rust程式語言來處理CIDR? 2019 年 6 月 8 日 Magic Len Rust CIDR(Classless Inter-Domain Routing, 無類別域間路由)是用來區分IP網段十分好用的方法,之所以會被稱為「無類別」,是相對於過去將IPv4分為Class A~E這五類的方式,CIDR則是直接以IP位址的前綴來分類網路,要多長有多長、要多短有多短,十分自由。Rust程式語言的標準函式庫雖然有內建IPv4和IPv6的結構體,但充其量也只能拿來表示IP位址與進行類型的判... 繼續閱讀
基數排序(Radix Sort)演算法,可以依據多個鍵值來排序的演算法 2019 年 5 月 30 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 基數排序(Radix Sort)演算法是可以利用多個鍵值來排序資料的演算法。排序還需要多個鍵值?有時候當然會需要啦!像是要排序檔案時,可以先依照檔案名稱排序後,再依照檔案大小來排,如此一來,整體上來看這些檔案,會是以檔案大小來排序,而相同檔案大小的檔案則是會依照檔案名稱來排序。基數排序法可以將整數的各個位數當作是鍵值,來進行線性時間的排序,比起會依照k(要排序的資料可能的值的數量)愈大而愈吃空間的... 繼續閱讀
桶排序(Bucket Sort)演算法,利用運算式將資料分類、排序後,再合併起來的排序演算法 2019 年 5 月 26 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 桶排序(Bucket Sort)演算法是先將大量資料分類成少量資料後,再進行排序的演算法。可以透過簡單的運算式來完成資料的分類,在最好的情況之下,資料可以被完全打散,此時的時間複雜度就會是一個線性時間。 繼續閱讀
寫程式的基本功:搜尋演算法(Search Algorithm) 2019 年 5 月 22 日 Magic Len 研究分享、 演算法 這裡所稱的搜尋(Search),是指在一個已排序好或是尚未排序好的集合中,將指定元素的鍵值(key)或是索引值(index)搜尋出來,或者是給定某個條件,在集合中搜索出符合該條件的資料。在集合內搜尋元素的方法當然不會只有一種,而不同方法搜尋資料的難易度、速度和其它特性自然也會有所不同。搜尋演算法(Search Algorithm)就是搜尋資料的方法,目前已知的方法有很多,在這篇文章中將會整理本站所... 繼續閱讀
暴力字串搜尋(Brute-force Substring Search)演算法,簡單粗暴地在一個字串中尋找子字串 2019 年 5 月 20 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 暴力字串搜尋(Brute-force Substring Search)演算法是最基本的字串搜尋演算法。它可以按照原文中字元的順序,逐一與搜尋樣本(pattern)進行比對,判斷目前的搜尋位置是否就是搜尋樣本存在的位置。 繼續閱讀
插補搜尋(Interpolation Search)演算法,運用資料近似線來輔助搜尋的演算法 2019 年 5 月 18 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 插補搜尋(Interpolation Search)演算法又稱為內插搜尋演算法,是二元搜尋(Binary Search)演算法的變體。這套演算法可以在已排序好的序列中根據資料的預測線或近似線來進行高效率的搜尋,近似線愈精準,搜尋的效率就愈高。 繼續閱讀
指數搜尋(Exponential Search)演算法,搜尋目標在序列愈前面就愈快的演算法 2019 年 5 月 16 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 指數搜尋(Exponential Search)演算法又稱為雙倍搜尋(Doubling Search)演算法或是蔓延搜尋(Galloping Search)演算法,是二元搜尋(Binary Search)演算法的變體。這套演算法可以在已排序好的序列中進行高效率的搜尋,要搜尋的元素在序列中愈前面的話,搜尋效能愈好。 繼續閱讀