彙整medium上面 演算法學習之-Leetcode-破關總指南
前言
看到 演算法學習之-Leetcode-破關總指南我覺得整理的非常好,準備開始作為之後刷LeetCode的指南。
本篇的所有內容非出自於我手,而是整理自 演算法學習之-Leetcode-破關總指南 的文章,我只是將他們的文章整理成一篇,方便之後查閱。
正確心態
不要硬去挑戰難題然後又硬要自己想出來才肯罷休,這樣的學習效率會很差,甚至學不到重點反而歪掉。好好把握你能抓得住的那一部分就好,吃不下去的就先放寬心不要著急。你的大腦仍然會或多或少的在背景運作吸收,並在未來的某一天有需要的時候,讓你想起來好像曾經聽過那個什麼,跟現在這件事有點關聯,但記不清楚了,只要這時候再重新好好補上就很完美了。
自己挑題目最重要原則:寧可太簡單,不要太難,太簡單還可以緩步提升難度,太難有可能一下把自己的正循環打斷,拖延症就容易趁機發作而不想學習,得不償失。
也不用太強求要把每個資料結構理解到最底層去,有大致理解他們各種操作的時間複雜度特性後,就可以先往下一關邁進了。
刷題順序
挑一個關鍵字找教材、影片或上課直到完全弄懂做法與時間複雜度的分析
去 Leetcode 找相同關鍵字的 Easy 題或簡單的 M ...
LeetCode 課前預習 - 掌握 Hash Table 指南
如果你喜歡的我文章,希望你可以到我的 github 給我一個 star ⭐️ Blog Repo
1. 基本介紹
Hash Table 的日常應用
Hash Table(哈希表)是一種高效的數據結構,用於在平均時間複雜度 O(1) 的情況下進行查找、插入和刪除操作。這使得 Hash Table 在許多日常應用中得到了廣泛使用,最長薦的就是密碼的存儲在安全應用中,Hash Table 可以用來存儲密碼的哈希值,從而保護用戶密碼的安全。其他狀況還有:
緩存(Cache):在網頁瀏覽器或數據庫中,Hash Table 用於實現緩存機制,快速檢索和存儲最近使用或最常用的數據。
數據庫索引:許多數據庫使用 Hash Table 來實現索引結構,以提高查詢速度。
Hash 的重要基本特性
不可逆(Irreversible):這是密碼學中的一個重要特性,Hash 函數是一種單向函數,無法通過哈希值反推原始密碼,儲存在資料庫的密碼通常是已經hash過後,使得沒有人知道原本的密碼長什麼樣子,除非用暴力破解,找到一組字串經過hash得到與原始密碼hash過後相同的值,通常是發生碰撞或是真的猜到密碼 ...
Pytest - Python 單元測試 教學
TL;DR
Test-Driven Design的作者 Kent-Beck說過 “Write tests until fear is transformed into boredom.”
在進行重構時,每次最害怕的莫過於改了一個地方,其他地方就壞掉了。這時候,單元測試就是你的好幫手。你可以透過點擊一下按鈕,就能知道你的程式碼是否有問題。以前都寫java的單元測試,現在開始學習機器學習的相關領域,覺得也要培養寫測試的習慣。
Pytest vs Unittest
Ref: 熱門 Python 測試框架: Pytest & Unittest 的差異
Ref: Pytest vs. Unittest: Which Is Better?
以 Python 後端來說,眾多測試框架裡最熱門的當屬下面兩者:
第三方 Pytest
Pytest 不需要把測試的 function 封裝在類別(class)之中,你可以更加自由地定義你的測試案例
e.g. 不需要放unittest.TestCase class TestAddition(unittest.TestCase)
僅僅需要在 ...
Windows - Tensorflow GPU Setup 手把手教你於Tensorflow上啟用GPU
Introduction
這邊主要是教如何在Tensorflow上使用GPU,網路上有很多安裝教學,但是當你按照官方教學依序安裝,最終發現還是沒有成功,但霧沙沙的安裝了以下內容:
CUDA 11.2 或是更高的版本
CUDA Toolkit 11.2 或是更高的版本
TensorFlow 直接安裝最新版本(沒選版本號)
你發現執行以下程式碼時卻列印出0,那麼這篇文章就是你需要的。
12import tensorflow as tfprint("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU'))) # Num GPUs Available: 0
通常遇到這個問題的主要原因是:
安裝的CUDA版本不對,一定要去看官方指定的版本確認當前使用Tensorflow的版本所對應的Python版本、CUDA版本和cuDNN版本
若安裝的Tensorflow版本不對,也會導致GPU無法使用
Prerequisite
Anoconda 在開始前先確保安裝好Anocon ...
Python 的 Clean Code 實踐
參考連結: https://github.com/zedr/clean-code-python
Clean Code
Variables
相同型態的變數名稱命名要一致12345678910111213141516171819202122232425262728## Bad: user, clilent, customer但都是userdef get_user_info(): passdef get_client_data(): passdef get_customer_record(): pass## Good: 一致的使用userdef get_user_info(): passdef get_user_data(): passdef get_user_record(): pass## Even Better: 使用class# - 添加property定義的方法可以像訪問屬性一樣訪問 User().data# - 使用Union[Record, None]表示回傳值可能是Record or None# - 使用Dict[str, str]表示回傳值是key, value都是st ...
Amazon Textract 如何處理多欄位(Multi-Column)的文字排序
前言
AWS Textract 是用於從 pdf(或圖片)中擷取文字的 AWS 工具。最好的情況是您的原始文件只有一欄,例如一本書。當您有多個專欄(例如報紙文章)時,事情處理起來會更加複雜。所以這次來分享一下如何使用 Amazon Textract 來處理多欄位的文字排序。有參考這篇AWS Textract: how to detect and sort text from a multi-column document做一些改良。
我的來源是一篇報紙文章,版面如下:
Textract Response format
Textract 輸出是由各種 BlockType 分層排列形成的 JSON。一個BlockType的「Page」由多個「Line」組成,而「Line」又由多個「Word」組成。在這些回應中,您看不到任何結構資訊,無法將多列文字僅排序為一列。但是可以知道的是,Textract在解析文字時,是由上到下,且一排排的解析,可以參考下圖中的編號的第27~48,您可以發現儘管是在不同的Column,但是Textract解析的順序是由左到右依序往下解析。
Solution
我們所 ...
Amazon Textract 極簡Python教學 - 快速上手Textract的同步與非同步處理
建議閱讀網站
DetectDocumentText關於Line和Word的相關介紹,包含關係圖:https://docs.aws.amazon.com/zh_tw/textract/latest/dg/how-it-works-lines-words.html
文檔上的目標位置怎麼看?:https://docs.aws.amazon.com/zh_tw/textract/latest/dg/text-location.html
請求的格式說明:start_document_text_detection - Boto3 1.34.68 documentation (amazonaws.com)
安裝包
ref: Textract/Quickstart
123456# 習慣建立一個獨立的環境conda create -n textract python=3.12 conda activate textract# 安裝 boto3 為了可以使用aws的服務pip install boto3
本地權限設置
根據官方說法,要先設定以下:
先建立一個IAM使用者,該使用者必須擁有4個權限 ...
冰島自由行2024冬天旅遊指南: 行程規劃/保險/自駕注意
前言
在德國讀雙聯終於考完期末考時,那時是二月初。我們想著要怎麼規劃一個月的寒假,剛好小夥伴們在我家討論想去的國家時,大家都有相同的願望就是去冰島看極光,剛好極光最適合觀賞的月份是10月~3月,因此我們就開啟了Flyscanner搜尋哪一天的機票最便宜,看了看發現2/26的去程跟3/7回程最便宜,二話不說就訂機票了,訂完機票我們就會有動力來開始計劃11天10夜的行程!
那這篇文章主要記錄了當時我們的行程規劃、預算規劃、自駕注意事項、保險、意外事件等等,希望對大家有幫助!
因為文章很長,建議根據旁邊的目錄來找你想要了解的章節…跳過去直接看比較快。
如果你滿足以下情境,那麼這篇文章對你來說就是一個很好的參考:
我想要環島,但是不知道該怎麼規劃行程? 查看:01-行程安排
必須下載的App和網站有哪些? 查看:02-必備App和網站
我是來歐洲交換的窮學生,希望可以省錢又可以玩得開心(預算在5萬內含機票)查看:03-開銷花費
雪地自駕跟租車有什麼需要注意的? 查看:04-自駕注意事項
汽車的保險該怎麼買? 查看:05-保險
如果自駕發生意外該怎麼辦? 查看:06-意外事件
冰川健行和藍冰 ...
IT Project Management 重點整理
前言
這是為了準備IT Project Management的期末考而整理的重點。
Agile vs Waterfall
Agile Methodology
Ref: 敏捷式開發(Agile)、瀑布式開發(Waterfall) 、敏捷式UX、Lean UX。兜幾?
敏捷的原則:減少浪費、快速產出、不斷循環、快速學習
敏捷是目前在軟體開發的趨勢,因為軟體開發的需求會隨著時間改變,所以需要一個可以快速產出並且可以快速改變的開發方法。
Positive Side of Agile
客戶會需要與團隊緊密合作,客戶獲得了strong sense of ownership。
如果有上市時間更重要,敏捷可以更快的上市產出基本版本。
Negative Side of Agile
有時候會因為衝刺到後面跟一開始的目標偏離,讓產品缺乏一致性,硬體產品也較不適用於此方法,畢竟硬體做出來就不能一直更改。
客戶可能沒這麼多時間
因為Agile專注在time-boxes交付和頻繁的重新確定優先順序,某些準備交付的項目可能無法在規定的時間內完成。可能需要額外的衝刺Spring(超出最初計劃的衝刺),從而 ...
Spark UI 觀察日誌
Job, Stage, Task
Ref: [看图说话] 基于Spark UI性能优化与调试——初级篇
Ref: 理解spark中的job、stage、task
本篇主要會記錄使用Spark的一些觀察日誌,希望可以了解以下問題:
Q: stage, task, job, partition 之間的關係?
Q: 何時會需要 Shuffle? Shuffle 是如何運作的?
簡單來說,一個 Spark Application 被提交之後,會根據 Action 的觸發產生 Job,每個 Job 根據 Shuffle 的分界點,又會被分成多個 Stage,而每個 Stage 預設會根據核心大小、資料大小,包含多個 Partition,也就是Task,以加快運算。大概是以下這種感覺:
Job
首先,Spark 中的數據都是由 RDD 組成的,而 RDD 是由 partition 組成的,每個 partition 代表一個數據塊。RDD 支援兩種操作分別是 Transformation 和 Action,Transformation 並不會讓程式馬上執行,而是會返回一個新的 RDD,而 ...