https://www.gravatar.com/avatar/1b2e937d26fa273fd402e042f2139949?s=240&d=mp

Huang Po-Hsun

LeetCode 題庫 - Two Sum (兩數之和)

前言 最近刷到的簡單題庫題。 題目 Two Sum (兩數之和) 題目描述 Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target. You may assume that each input would have exactly one solution, and you may not use the same element twice. You can return the answer in any order. 給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,並返回他們的數組下標。 你可以假設每種輸入只會對應一個答案。但是,數組中同一個元素不能使用兩遍。 測資 Example 1: 1 2 3 Input: nums = [2,7,11,15], target = 9 Output: [0,1] Output: Because nums[0] + nums[1] == 9, we return [0, 1].

SSH 免密訪問服務器端

前言 有些新手不知道怎麼使用 SSH 連接服務器時不需要輸密碼,特此寫一下。 SSH 前置工作 為了避免麻煩每次用 SSH 連的時候都要輸入 IP,可以在各自域名解析中添加服務器的 IP 給予命名映射。 兩台服務器都編輯 /etc/hosts 文件,添加以下內容,假設各自的公網 IP 是 10.10.15.xx1、10.10.15.xx2。 1 2 10.10.15.xx1 Server1 10.10.15.xx2 Server2 這樣子我們在服務器上連接另一個服務器時只需要輸入 ssh Server1、ssh Server2。 生成密鑰 我們假設有兩台服務器需要互相無密連接,這裡需要生成公鑰和私鑰,然後主機使用者之間共享公鑰。 如果是自己的本地電腦不需要輸入密碼連上服務器端,作法大同小異,把自己的電腦當作一台服務器即可。 先在本地生成密鑰,兩台服務器上都各自輸入下面指令,過程中如果有需要你輸入什麼,只需要一直輸入 Enter 就好了。 1 ssh-keygen -t rsa # 當前使用者生成密鑰 如果你當前是普通使用者就會在 /home/user/.ssh/ 目錄下找到 id_rsa.pub 公鑰。如果是 root 使用者,會在 /root/.ssh/ 目錄裡找到。 互相共享公鑰 我們先將服務器一的公鑰文件傳給服務器二。 1 scp /root/.ssh/id_rsa.pub root@Server2:/root/.ssh/id_rsa.pub.Server1 接著在服務器二上面將雙方公鑰合成一個授權驗證文件。 註:關於 chmod 的權限設置數字計算,可以參考菜鳥教學的文章。

部署 SpringBoot、Flask 與 Vue 前端與雙後端完全分離 Web 項目

前言 由於這學期我選修了軟件測試的課程,我們以十人小組為單位,對我在暑假實訓所參與的 MD-Blog 個人空間系統項目進行 Web 測試,過程中我將那個項目部署到了阿里雲的雲服務器上。這篇文章我紀錄一下我部署 Web 的過程。 購買服務器 因為我是用學生優惠等方式白嫖到了半年的阿里雲雲服務器,所以這方面其實沒怎麼出錢,幸好在軟件測試項目結題才到期,不過用學生優惠購買最低配的雲服務器,三個月也只需要 28 元人民幣,騰訊雲我因為過不了實名認證就算了(…這裡我要吐嘈一下連雲服務器都要實名認證)。 總之購買好雲服務器後新增好實例,通常我是建議使用 CentOS7 作為服務器的操作系統,進入雲服務器的控制台,你會看到服務器的公網 IP、私網 IP 和密碼,密碼可以重新修改。 這裡我們假設我們服務器的公網 IP 是 1.2.3.4。 部署項目前的工作 安裝環境 在配置之前我們需要將我們的 JDK、Python、MySQL、Nginx 在服務器端配置完畢。 JDK 注意:服務器安裝的 JDK 環境必須跟你的打包時使用的 JDK 版本一致,不然在運行後端 JAR 包時會報版本錯誤及不兼容的問題,要選擇 JDK1.8 以上的版本。 這裡是建議自己在本地下載好 JDK 然後 SCP 上傳至服務器端,選擇 Linux x64 Compressed Archive 下載,不要下錯成 Linux ARM 架構的(因為我下錯過,沒仔細看名稱),壓縮包名大致為 jdk-8u271-linux-x64.tar.gz。 在用 SCP 上傳前要先進入服務器新增好資料夾,如果 SCP 上傳時指定到不存在的資料夾時,不會自動幫你新建一個新的資料夾。 1 2 3 4 5 6 7 8 9 10 11 12 ssh root@1.

C++ - 關於多態中的虛函數與純虛函數

前言 大一自己寫 C++ 時碰到的問題,一直沒發表文章,現在趁有空寫一下。 多態與虛函數 P.S. 大陸叫對象,台灣叫物件。 我的理解是多態就是一個類(class)演伸出多種物件(Object),父類相當於模板藍圖的功能。虛函數是用來子類繼承後能夠複寫的函數。 我們先看一下虛函數嘴臉長怎樣: 在下面的例子中是一個 Base Class(基類、父類),如果函數前面宣告有添加 virtual 就是虛函數。 1 2 3 4 5 6 class Shape { public: virtual string toString() const; virtual double getArea() const; } 下面是一個 Circle 子類(superclass)(超生類、派生類),引入 Circle 的 getArea() 和 toString() 是虛函數,我們現在是在子類中重寫(重定義)類的虛構函數(此時你可以將父類的虛構函數想像成模板)。 1 2 3 4 5 6 7 8 9 10 11 12 class Circle : public Shape { private: double radius; public: Circle(); Circle(double); double getRadius() const; void setRadius(double); double getArea() const; string toString() const; } 實際當我們在使用虛構函數時,是把它當作跳板,去自動便是哪個函式是哪個函式,e.

在 ArchLinux 上搭建 LaTeX 環境並使用 VScode 編寫

前言 紀錄一下我在 ArchLinux 上配置 LaTeX 的過程。 安裝環境 你可以直接安裝集合包,texlive-most 包含很多 Tex Live 應用,但是這樣很佔空間,要安裝 2GB 的硬碟空間,所以你也可以選擇自己想要裝的部份,其中 texlive-core 是必裝的。texlive-langchinese 是中文宏包 CTeX,讓 LaTeX 支持中文。 1 2 3 4 5 sudo pacman -S texlive-most # 安裝約 12 個包 sudo pacman -S texlive-core # 只裝核心 sudo pacman -S texlive-langchinese # 安裝中文支持 測試安裝 進入特定資料夾,輸入下面兩行指令測試是否安裝成功, tex '\empty Hello world!\bye' 會生成 texput.dvi 和 texput.log。 pdftex '\empty Hello world!\bye' 會生成 texput.pdf。 1 2 tex '\empty Hello world!

Markdown 學習筆記 - 基礎語法

前言 Markdown 我認為是非常好的語言,我每次寫 Blog 或是寫項目、作筆記,Markdown 是首選,LaTeX 比較適合拿來寫報告或是論文。我就在這篇寫一下 Markdown 基礎語法,也就是平常經常用到的語法,其實當初學 Markdown 只花了一小時,後面慢慢寫多就習慣了。 寫 Markdown 的工具: 我推薦下面幾個: Typora:跨平台的 Markdown 編輯器,簡直是利器。 Visual Studio Code:使用 VScode 也可以寫 Markdown,安裝 Markdown All in One 和 Markdown Preview Enhanced 延伸模組,就能夠舒服地寫筆記或文章。 HackMD:線上共筆平台,使用 Markdown,大家在共同寫文檔時可以使用這平台 文本編寫標準 中文文案排版指北 [简体中文 ][繁体中文 ] 區塊元素 標題 h1 - h6,h1 有兩種寫法。第一種是下一行添加 ===,第二種就是加上 #。 1 2 3 4 5 6 7 8 9 h1 標題 === # h1 標題 ## h2 標題 ### h3 標題 #### h4 標題 ##### h5 標題 ###### h6 標題 註解 跟 HTML 一樣的用法使用 <!

JS - Object Array 賦值問題

關於我遇到的問題 這是我在寫小 DEMO 發現的,關於 JS 的賦值問題,這裡涉及到了 Pointer。 下面是我用簡單的 Code 描述我遇到的問題,object 是一個 Object Array,然後傳入函數進行局域變量賦值。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 let object = [ { name: "John", age: 18 }, { name: "Amy", age: 20 }, ] function Test(object) { let newOne = object; for (let i = 0; i < newOne.length; i++) { newOne[i].name = "Rose"; } } Test(object) console.

JS - forEach()、map()、filter()、reduce()、循環遍歷

前言 在這篇文章筆記紀錄一下 JS 的 Array 屬性。 forEach() forEach 是對每一項的操作,會影響原來的 array,不會有回傳值,即使強制寫 return,也會是空值,例子如下。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 // JS forEach 與 map // forEach 是對每一項的操作,會影響原來的 array let arr = [1, 2, 3, 4, 5, 6] // 對數組直接進行循環,相當於 for,沒有返回值 // result 不會有返回值 即使寫了 return 也是 undefined let result = arr.forEach((item, index, arr) => { console.log(item) console.log(index) console.log(arr) return item }) console.log(result) map() map 則是不會影響原來的 array 值,而是生成新的值返回給新的數組。對 Array 每一項進行加工,加工完成之後返回一個新的數組。

React 學習筆記 - JSX、組件、渲染、路由、Redux

前言 因為我前段時間學了 React,我會在這邊文章紀錄我學到的內容。 建立一個 Hello World 在終端機輸入下面的指令,會在該目錄下生成一個名為 my-app 的 React 應用目錄。 註:npx 是 npm 5.2+ 或更高版本附帶的包運行器工具。 npx 1 npx create-react-app my-app npm 1 npm init react-app my-app Yarn Yarn 0.25+ 才能使用 yarn create <starter-kit-package> 1 yarn create react-app my-app Project 結構 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 my-app ├── README.

Flask 跨域設置

前言 關於 Flask 跨域接收請求的設置真的蠻好配置的,我想並不難,但我還是稍微寫一下,避免新手不知道怎麼做。 安裝 跨域有 flask_cors 這個工具。 1 pip install flask_cors 配置 1 2 3 4 5 6 7 8 9 from flask import Flask, jsonify, request from flask_cors import CORS app = Flask(__name__) # enable CORS CORS(app) if __name__ == "__main__": app.run(debug=True)