原创 分佈式開發的幾點基礎知識

開發人員要多思考,才能把知識融會貫通。關於分佈式的一些概念雖然知道,但都比較零散,今天看《面向模式的軟件架構(卷4)》才清楚了一些,總結如下。 技術總是演進的,按照時間順序來說吧。 20世紀80年代後期和90年代初期,CORBA是典型的“

原创 設計模式學習筆記-Composite

Compoite表示的是“整體-部分”的關係,但不僅僅如此,否則簡單的組合就可以完成。這個模式主要是使得用戶對單個對象和組合對象的使用具有一致性。 《設計模式》書上舉的例子是Graphic-Picture,但我覺得這裏用“文件夾-文件”最

原创 我對C++ Traits編程技法的一點點理解

第一次聽說traits是在一次電話面試中,當時還沒有聽說過這個詞。之後查過資料,但也不是十分明白,直到今天重新看了一下《STL源碼剖析》,稍微有一些想法。 1. traits是模板編程裏面的一個編程技法。可能因爲不是面向對象的,所以算不上

原创 [LeetCode] Longest Substring Without Repeating Characters

在後面發現重複的字符後,就把前面的重複字符及之前的全部去掉,像毛毛蟲爬行一樣,同時統計最大的子序列長度。 class Solution { public: int lengthOfLongestSubstring(string

原创 [LeetCode] Reverse Integer

暫時不考慮溢出的問題。 class Solution { public: int reverse(int x) { int result = 0; while(x != 0) {

原创 [LeetCode] Roman to Integer

這道和部門內部競賽出的題目比較類似,而且不用判斷異常情況。 public class Solution { public int romanToInt(String s) { final String[] Roman = {

原创 設計模式學習筆記-Abstract Factory

這是23個設計模式的第一個,因此按照慣例,第一章第一節總會被看很多次。 但是我在實際工作中並沒有遇到這個模式,也許是因爲太麻煩的原因。 有“工廠”就有“產品”,所以這個模式裏面主要是Factory和Product兩種類,一般Factory

原创 C++ CLI 如何打開並讀取文件

相關鏈接: http://msdn.microsoft.com/en-us/library/61097ykx.aspx 環境:Microsoft Visual C++ 2010 Express 步驟: 1. 從Toolbox裏拖拽一個Op

原创 [LeetCode] Add Two Numbers

鏈表的操作,修改了好多次,進位等小問題比較多。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode

原创 [LeetCode] Longest Palindromic Substring

迴文問題,一開始搞了個遞歸算法,重複計算太多,結果超時了。 目前改成先把原來的字符串反轉,然後查找兩個字符串最大公共字串的問題,勉強通過吧,代碼也有重複,有點懶了... class Solution { public: stri

原创 [LeetCode] String to Integer (atoi)

沒有和標準的程序比較,主要難點是需求不明確,自己想得不充分,溢出的問題原先根本沒有考慮。 class Solution { public: int atoi(const char *str) { int result = 0;

原创 [LeetCode] Regular Expression Matching

這個問題比atoi還麻煩,開始自己造輪子了。首先是從左往右掃描還是從右往左掃描的問題,結果發現都不行,看來要兩邊都考慮,只能上遞歸了。然後遇到的問題是沒有考慮x*可以一個字符都不匹配的問題。最後是一些邊界上的問題,比如要匹配的字符串爲空或

原创 [LeetCode] Container With Most Water

這道題初看要遍歷所有可能就能求解,但是複雜度要O(n^2),系統肯定會判超時。大概這麼多年應試教育的結果吧,所以繼續思考:很明顯兩邊的情況是底最長,往中間縮的話有可能高度的變化會彌補底邊的縮小,所以只考慮高度變長的情況即可。當兩邊確定後,

原创 [LeetCode] ZigZag Conversion

索引找規律的問題,非首尾兩行的需要加一個mid元素,其他的步長都是2(n-1),需要例外的是nRows=1的情況。以前搞了一個非遞歸漢諾塔問題後,這種問題一般都比較有信心能做出來。 class Solution { public:

原创 [LeetCode] Palindrome Number

要是面試遇到這道題,估計要掛了,想了很久才做出來。 因爲不許使用多餘的空間,所以一開始想的是兩頭縮小,比如12321->232->3,最後認爲對稱。結果遇到1021就失敗了,02變成2,也認爲兩邊對稱。後來就想多了,覺得有什麼特殊的算法,