刷題必備神器 | 雜湊表 (Hash Table) | LeetCode 筆記
基本介紹雜湊表是一種 Key Value Mapping 的結構,可以用快速查找資料,相較於一般搜尋演算法的時間複查度 $O(Log n)$ 他時間複雜度會是 $O(1)$ 主要神速的原因是因為 Hash Function,如果先把 n 個數字儲存在 Hash Table 裡面,那如果要判斷這個數字 A 是不是已經被存在 Hash Table 裡面,只要先把這個數字丟進 hash function,就可以直接知道 A 對應到 Hash Table 中哪一格。 Hash Table 不適合使用的時機 資料有處理上的時間優先順序,這種比較適合 Queue (FIFO)的結構 如果資料想要被排序,那也不適合用 Hash Table https://www.reddit.com/r/learnprogramming/comments/29t4s4/when_is_it_bad_to_use_a_hash_table/ Hash Table 適合的使用條件 題目要求使用時間複雜度 $O(1)$ 的演算法來存取元素 最糟的狀況也有 $O(n)$ 時間複雜度 Hash Functio...
二元搜尋法 | Easy | LeetCode#704 Binary Search
題目敘述 題目中有一個整數陣列 nums, 這個陣列是以排序的陣列,並且在這當中想要找到 target 這個元素的 index, 如果沒找到就回傳 -1。並且要求所實現的演算法其實時間複雜度為 $O(Log n)$ 解法我的作法123456789101112131415161718192021222324252627282930int search(int* nums, int numsSize, int target) { // init int i,mid=0,low=0, high=numsSize-1; // Binary search // 1. find lower index and high index according to the length of array // 2 calculate middle value // 3. update low and high value // 4. again calcuate the new middle value until derive the ...
建立 Lambda 函數 URL 的步驟
甚麼是 Lambda URL ? 官方定義: 函數 URL 是 Lambda 函數專用的 HTTP(S) 端點。您可以透過 Lambda 主控台或 Lambda API 建立及設定函數 URL。當您建立函數 URL 時,Lambda 會自動為您產生不重複的 URL 端點。函數 URL 一旦建立,其 URL 端點便永遠不會變更。 函數 URL 端點的格式如下: 1https://<url-id>.lambda-url.<region>.on.aws 要特別注意的是,某些region並不支援使用 function URL,這時可能就要用老方法: API Gateway + Lambda Integration 存取控制在建立 function URL 的時候可以透過 AuthType 參數,來決定 Lambda 如何對 funcion URL 的請求執行身分驗證或授權 AuthType 選項: AWS_IAM : 如果想讓已完成身分驗證的使用者或Role透過function URL 呼叫你的函數,就要選 AWS_IAM NONE: Lambda 不...
橫向擴展ActiveMQ
Amazon MQAmzon MQ 上有託管 Active MQ 這個訊息佇列的服務,近期有碰到問題是問說,要怎麼樣在 Amazon MQ 上做 Horizontal Scaling, 首先簡單解釋一下 Vertical Scaling 跟 Horizontal Scaling 的差異。 Scaling意味著擴展,Vertical Scaling著重於單一實體的運算能力增強,所以Vertical Scaling可能會是更好的 CPU/GPU,更大的記憶體容量等等, 以 AWS 服務來說,可能會是更換實例,MQ的話就會是從 t3.Micro 換成 m5.large [+] 執行個體類型 - https://docs.aws.amazon.com/zh_tw/amazon-mq/latest/developer-guide/broker-instance-types.html 而若要水平擴展,通常代表架構會接收到更多消息,所以會需要根據流量/訊息量來去擴展並且分擔單一實例的負擔。 ActiveMQ 代理網路(Network of brokers)這是一個 Ac...
【學習筆記】OTA Update -1
什麼是 OTA Update (Over The Air Updtae)?透過無線通訊去對設備進行軟體/韌體更新 OTA 的流程 Notify 設備會被通知有擱置的OTA更新 設備可以選擇忽略更新或者接受更新以觸發下載 Download 設備通過各種支援的協定進行更新下載 更新包會下載到預先設定好的儲存區域 Ex. S3 Bucket 更新可能是全新的韌體映像或現有韌體的補丁 Verify 驗證更新包的有效性 Install 設備通過更新包開始更新(通常是通過 bootloader)成最新的韌體 安裝後可以執行檢查以驗證功能 設備將向 OTA 更新提供者報告韌體更新成功 主要分成這四個步驟 模組化 OTA 更新 模組化 OTA 由幾個小型函式庫和一個協調器(Orchestrator)組成。 每個 Lib 負責特定的子任務,例如通知待處理的 OTA 更新或透過 MQTT 下載檔案 編排器將所有小型程式庫與bootloader 和 Memory Pool 同步以執行 OTA 更新。 模組化 OTA 方法可讓您根據需求的變化更換或更改 OTA 的不同部...
【爬山紀錄】七星山主峰 + 東峰
簡介由於生長在台北多年還沒去七星山主峰的三角點,趁著難得的好天氣出遊踩點 這次爬七星山的主要路線是從 小油坑登山口 -> 七星山主峰 -> 七星山東峰,接著原路返回到 小油坑停車場 七星山是台北市內最高的山,海拔達到 1120 公尺 小油坑地熱口地熱口附近硫磺味很重,但天氣冷其實靠近挺暖的 湧出的硫磺泉會沸騰冒泡 七星山主峰通往主峰的路上幾乎都是石頭階梯,但階梯路途中挺多陡上,建議攜帶登山杖 現在是11月的芒草季,但這裡風大,芒草都被吹得彎曲,但景色還是挺美 假日會很多登山客要來跟這根拍照,就自行考量要不要留個紀念了 七星山東峰主峰往東峰的路段只需再走 0.3K,可以選擇一次蒐集兩個峰頂。但從七星主峰到七星東峰的部分路段較為濕滑,建議穿有防滑的登山鞋來。 草叢順帶一提,一路上都有很多像是下面這樣,人可以通過的樹叢,如果透過離線地圖看是可以發現路的,而且也能發現有綁繩子,舊友進去稍微探險一下,但由於後面泥濘太多,就沒有深入往下探下去了 東峰的景色個人覺得還好,但也是多人跟著合照。 之後就原路返回停車場,結束今天的旅程了 其實大多數人都會從小油坑上去到主峰再到...
機群佈建(Fleet Provisioning) - 預先佈建裝置到 AWS IoT
簡介什麼是機群佈建(Fleet Provisioning)?機群佈建當中也有分成 要求佈建 (Provisioning by Claim) 還有 透過信任的使用者佈建 (Provisioning by Trusted User) 要求佈建裝置可以使用內嵌的佈建宣告憑證(Claim Certificate)(這是特殊用途的憑證) 和私有金鑰 來製造。如果這些憑證已向 AWS IoT 註冊,該服務可以將它們交換為裝置可用於一般操作的唯一裝置憑證。 透過信任的使用者佈建在許多情況下,如終端使用者或安裝技術人員等信任的使用者初次使用行動應用程式在其部署的位置設定裝置時,裝置會連線至 AWS IoT 在本篇文章中,主要會介紹透過 要求佈建 的方式來去進行機群佈建 要求佈建的流程 設置 - AWS IoT Core建立憑證以及公私鑰對產生用於佈建的憑證。 可以在 AWS IoT Console 上的 Secure >> Certificates >> Add Certificates >> Create Certificates 接著會跳出對...
Hands-On Practice: AWS IoT Device Shadow
Intro - What is AWS IoT Device Shadow?In real world, sometime it is difficult to get the actual device state in real time in such IoT scenarios. A device shadow can overcome this challenge, Device Shadow can consider a virtual virtual representation of a device which managed by the IoT Things resource created in AWS IoT Core. The Shadow document is a JSON or a JavaScript notation doc that is used to store and retrieve the current state information for a device. You can use the shadow to get...
Hands-On Practice: Amazon SNS Fan out to Amazon SQS
IntroductionAmazon SNS offen works well with Amazon SQS, by subscribing SQS to SNS, the SNS service can push messages to SQS. This may eliminating the need to periodically check or “poll” for updates. What is Amazon SQS?By official definition Amazon SQS is a message queue service used by distributed applications to exchange messages through a polling model, and can be used to decouple sending and receiving components—without requiring each component to be concurrently available. Scenario T...
Hands-On Practice: S3 Gateway Endpoints
What is S3 Gateway Endpoints? Let’s consider a scenario How could your Lambda function access the content in the S3 bucket? If you want a service to access the content in the S3 bucket, it usually go through VPC endpoint. S3 supports two types of VPC endpoint,each of which is Gateway endpoint and Interface endpoint The diffeences between two types of VPC endpoints are listed below S3 Gateway Endpoints S3 Interface Endpoints Use S3 Public IP Address Use Private IP Address in VPC to a...














