原创 《Thinking in Java》Fourth Edition中文版筆記

第5章 初始化與清理 在Java(和C++)裏,構造器是強制重載方法名的另一個原因。既然構造器的名字已經由類名所決定,就只能有一個構造器名。 如果傳入的數據類型(實際參數類型)小於方法中聲明的形式參數類型,實際參數類型就會被提升

原创 Leetcode: Word Frequency (shell , awk)

單詞統計。仍然先貼代碼,再講我的思路: # Read from the file words.txt and output the word frequency list to stdout. #!/bin/bash awk

原创 《The Django Book 2.0》中文版筆記

第1章 介紹Django 本質上來說,Django只不過是用python編寫的一組類庫。用Django開發站點就是使用這些類庫編寫python代碼。學習Django的關鍵就是學習如何進行python編程並理解Django類庫的運

原创 Leetcode: Find Minimum in Rotated Sorted Array I & II (Java)

兩道題,一道是無重複元素的有序數組,另一道是有重複元素的有序數組。雖然經過旋轉,但是有序數組仍然應該使用二分查找。二分查找仍然是簡單的遞歸思想。 第一題: public class Solution { public in

原创 Leetcode: Rotate Array (Java)

Java中數組複製不能直接使用賦值操作,賦值操作僅使同一個數組對象多了一個名稱,對新名稱的操作仍然在原數組對象上操作,容易出錯。爲了產生新的數組對象,可以使用Arrays類的copyOfRange方法。題目是這個。 貼代碼: im

原创 對第14章類型信息中RegisteredFactories.java的理解

先摘錄Factory.java和RegisteredFactories.java的部分代碼(虛線分隔): package typeinfo.factory; public interface Factory<T> { T

原创 使用BlockingQueue進行線程間通信(java)

我們可以使用管道進行線程間通信,Java IO中提供了PipedWriter類和PipedReader類讓線程間通信,《Java編程思想》在21.5.5節提供了例子。但是,Java提供了更健壯和容易的方式,即阻塞隊列Blockin

原创 Leetcode: Add and Search Word - Data structure design (Java)

最近嘗試完全脫離C++,轉而只用java刷題。這是我用java做出的第一道樹。題目在這裏。說幾點做題思路。 1. 暴力用Hashtable存單詞,顯然浪費空間,每個字母每個位次應該只存一次。暴力用Regex匹配,只適用於Hash

原创 Ubuntu上git push到GitHub可能會遇到的問題

SSH端口22被防火牆block 起初按照Generating SSH Keys配置我的Ubuntu主機到GitHub間的SSH,但是在測試連接 $ ssh -vT [email protected] 時,出錯: OpenSSH_5.9

原创 適配器(Adapter)設計模式和接口實現完全解耦

這個例子來自《Java編程思想》第9章接口的第3節完全解耦。 假設我們有一個接口Processor和一個類Apply: public interface Processor { ... } public class Apply {

原创 Leetcode: Evaluate Reverse Polish Notation (Java)

考察棧的基本操作。之所以還要寫這一篇,是因爲Java中Stack類是繼承Vector的,這是不合理的,棧當然不應該有按index取值的功能!在Stack類文檔裏有這句話: A more complete and consiste

原创 Django 1.7使用Migrations將模型應用到數據庫

Django 1.7用Migrations替換了更早Django版本的將模型應用到數據庫的方式(syncdb),原因是syncdb只能用來向數據庫裏添加新的模型,但不能修改或刪除數據庫裏已有的模型。由於djangobook這個優質

原创 Leetcode: Transpose File (shell, awk)

考察awk。先貼代碼(我把我內存超限的算法註釋掉了): # Read from the file file.txt and print its transposed content to stdout. #!/bin/bash

原创 Java命令行

Ubuntu下。我在 /home/sen/JavaProgram 下寫了 CommandLine.java public class CommandLine { public static void main(Strin

原创 Leetcode: Sort List (Java)

要求時間複雜度是O(nlogn),空間是constant space。想一下,平均時間複雜度滿足這個的只有快速排序,歸併排序和堆排序。因爲是單鏈表,排除快速排序。堆需要建樹,我也排除。因而我選擇歸併排序。 1. 首先要講鏈表在中