2012-10-20 46 views
1

我在採訪中被問到這個問題,如果一個應用程序正在傳輸一些文本,例如,一個客戶端發起了一個http調用,並且在帖子正文中有一個文本消息,那麼服務器端知道它何時從開始到結束收到完整的消息。換句話說,如果你想計算這個文本流中的單詞數量,你怎麼做到這一點?正常的字計數是通過一種狀態機類型的方法來完成的,在這種方式中,您可以跟蹤空格,並且只會爲2個字之間的空格增加一次。計算流中的單詞是否有不同?怎麼樣 ?計數流中的單詞

+2

爲什麼會有所不同?狀態機一次只需要一個字符;一個流完全能夠爲你的算法提供一個一個的字符,所以你的狀態機算法應該沒有問題。 – dasblinkenlight

回答

3

那麼服務器端如何知道它何時從開始到結束收到完整的消息。

EOF字符指示消息的結束,並且一旦完成,客戶端通常也會刷新並關閉流。這就是服務器如何知道客戶端的傳輸已經結束。

計數流中的單詞是否有不同?

無論文本的來源(無論是來自String變量還是來自流),確定單詞數的邏輯將保持不變,除了字符串輸入一旦循環結束計數器達到字符串的長度,而在流中,它是停止循環的EOF字符。

+2

完美答案! – Jayy

+0

Vikdor,Java中的EOF字符是什麼樣的? – Phoenix