原创 每天一個被拒小技巧——BigInt

LeetCode 67題題解。 想必經典的模擬加法大家都會,所以看到這題的時候,我就知道一定會有人用BigInt;果然如此。但是那位並沒有解釋BigInt的相關內容,只是給出了答案,所以這裏主要是介紹一下BigInt的內容。先

原创 在VuePress中添加Gitalk評論

本來博客是沒有評論功能的,後來經imwxz提醒,覺得還是搞個評論區比較好,就花了幾個小時弄了一下。中間遇到一些小問題,就稍微記錄一下。 在此之前,要先創建一個GitHub Application。裏面Homepage URL和Au

原创 讓我重新看看漢諾塔問題

漢諾塔可以說是一個非常經典的遞歸問題了,在很多書上也會把它作爲遞歸的入門題,用來介紹遞歸的基本概念。 故事的背景和問題的具體內容就不在這裏介紹了,我覺得我並沒有搞明白遞歸是怎麼一回事,比起迭代,遞歸從頭到腳都透露着一種神祕;雖然我

原创 C++使用greater報錯‘this‘ argument has type ‘const xxx‘, but method is not marked const的解決方案

使用STL的時候難免遇到需要自己定義排序函數的時候,這時候greater和less就能起到很大作用。但之前排序的對象都是基本類型(或者基本類型的容器),這次要給自定義類型排序,就遇到了問題。 比如,我有這麼一個場景,我想要給二維空

原创 [LeetCode 41] 用原數組保存信息

首先這題一個很明顯的性質:缺少的那個整數一定在[1, n + 1](n爲nums的長度)之間。爲什麼?假設這個數組是從1開始,然後依次遞增並且不重複,全部填充時數組正好是[1, n],此時缺少的整數就是n + 1;然後前面替換掉哪

原创 在JavaScript / TypeScript中使用棧——幾種棧的使用方法

這裏主要介紹幾種棧本身的使用方法,不包括一些作爲容器其他用法,比如進行DFS,用來保存中間結點等等;也不包括遞歸棧,雖然有時候也可以把使用遞歸方法看做使用了棧,但摳字眼沒什麼意思。 此外,本文不會詳細介紹語法,請讀者擔待。 用數組

原创 使用mockito配置spring-data-jpa業務邏輯層的測試

如果要對service層進行mock測試,首先需要解決的就是autowired的問題,因爲在使用的時候,框架會幫我們解決對象創建的問題,所以我們一般不會預留構造函數,這就給我們mock帶來了一點麻煩。還好,mockito提供瞭解決

原创 使用node-canvas在服務端渲染echarts圖表

踩了很長時間的坑,總算是能跑起來了。但是如果要我給echarts的SSR一個評價,那就是不好用……可能是我太菜了。而且,因爲我是Windows用戶,這個過程對Windows極其不友好。友情提示:入坑請慎重。 在服務端渲染圖表,繞

原创 將數組分成和相等的三個部分,以及maven報錯“找不到或無法加載主類”

這兩個確實是風馬牛不相及的東西,但是在等待SQL腳本運行的時候做一道算法題,似乎也沒什麼問題(笑)。 先說maven的事情。因爲是前端,平時不寫Java,遇到這個熟悉的報錯居然有點不知所措……用的是IDEA,檢查project s

原创 等式方程的可滿足性——TypeScript並查集實現

總的來說,思路還是很清晰的。 一看到這個題就想到了圖,==構成的是連通關係,只要有連通關係,就可以構造圖來解決問題。而解決圖的問題,比較常見的思路的就是BFS(或者DFS)和並查集,這個題感覺用BFS和BFS有點麻煩,那就用並查集

原创 百度AI Studio配置並運行pytorch項目的體驗

總之,體驗我給7分(滿分10分)。 優點: GPU挺快的,當然這一點沒有比較過,直觀感受上還挺快的 算力卡(GPU可用時長)給得跟不要錢似的,完全就是那種屠龍寶刀來就送的感覺,而且我這算力卡怎麼越用越多…… 缺點:

原创 Ubuntu 16.04 + MySQL 8.0-由The driver has not received any packets from the server引發的一系列錯誤,以及最後的解決方案

按照慣例,遇到Linux相關的問題先說系統版本,我用的是Ubuntu 16.04。 事情的起因是這樣的,把打了個jar包扔上服務器,然後nohup java -jar運行,本來一切正常(之前一直都很正常),但這次報了個沒見過的錯:

原创 從爬樓梯簡單談談執行性能

爬樓梯這個問題,其實思路是很明確的:爬到當前樓梯的方法數 = 爬到上一級樓梯(然後再爬一級,只有這一種選擇)的方法數 + 爬到上兩級樓梯(然後再爬兩級,只有這一種選擇)的方法數,也就是: f(x)=f(x−1)+f(x−2) f(

原创 Vue 2.x 子組件刪除時使用setTimeout導致splice數組元素後視圖沒有正確更新的解決方案

在實際業務中,經常會有這樣的場景:一堆消息卡片。比如: 對於這種情況,在Vue裏,我們一般都會封裝一個Card組件,然後在父組件中用v-for進行渲染。以下是一個隨手寫的例子(也可以在https://codesandbox.io

原创 計算N叉樹的最大深度,搞點陽間的寫法

其實題目是很簡單的。但這就是函數式編程🐎?👴❤了。 var maxDepth = function (root) { function traverse(root, depth) { return Math.max(