❶ java怎麼實現網路數
heritrix抓取網頁
網頁解析的有很多就不說了,不過最好自己寫
lucene索引
首先爬蟲是需要一個處理器鏈的,網頁的抓取並非幾十行代碼就能實現的,因為有很多問題出
現。
1.獲取網頁:判斷網頁編碼,計算網頁正文位置,獲取頁面內url(url的過濾、緩存、存儲這部分還需要線程池的優化),url的分配、及線程池的啟動。
2.網頁持久化。網頁解析,網頁中樣式表、圖片等下載以及網頁的保存(xml和html)網頁快照的生成。
3.網頁的消重去噪:去掉沒用的網頁,如果是垂直搜索引擎則需要更多的判斷,可以利用內容模板和空間向量的演算法實現。
4.索引的建立及優化,主要是簡歷倒排索引。
你的分類基本上可以用內容模板和空間向量計算實現。
還有其他很多東西,一時間不能說細了。你想做到什麼程度。(比如:空間向量的演算法及結果的參考值、網頁內容模板的建立。)
❷ java為什麼適合網路開發
Java
JAVA 是 Sun 公司推出的新一代面向對象的程序設計語言, 由於它與生俱來的一些特性, 比如: 平台無關, 多線程, 內置 URL 操作, 高度安全性等等, 使得它特別適合於網路應用程序的開發. 經過多年的發展, JAVA 已經成為這方面的主流編程語言. 而且, 隨著 Internet 的崛起, JAVA 將會有更大的發展.
在 JAVA 流行之前, C++ 已經流行很久了, 幾乎在第三代編程語言中起統治地位, 初學 JAVA 的人會覺得兩者很像. 事實上, 可以說 JAVA 就是脫胎與 C++, 但同時又做了相當大的改變, 使其更加符合網路編程的需要.
JAVA幾個重要的特性:
Easy :Java的語法比C++的相對簡單,另一個方面就是Java能使軟體在很小的機器上運行,基礎解釋其和類庫的支持的大小約為40kb,增加基本的標准庫和線程支持的內存需要增加125kb。
分布式 :Java帶有很強大的TCP/IP協議族的常式庫,Java應用程序能夠通過URL來穿過網路來訪問遠程對象,由於servlet機制的出現,使Java編程非常的高效,現在許多的大的web server都支持servlet。
OO :面向對象設計是把重點放在對象及對象的介面上的一個編程技術.其面向對象和C++有很多不同,在與多重繼承的處理及Java的原類模型。
健壯特性 :Java採取了一個安全指針模型,能減小重寫內存和數據崩潰的可能型。
安全 :Java用來設計網路和分布系統,這帶來了新的安全問題,Java可以用來構建防病毒和防攻擊的System.事實證明Java在防毒這一方面做的比較好。
中立體系結構 :Java編譯其生成體系結構中立的目標文件格式可以在很多處理器上執行,編譯器產生的指令位元組碼(Javabytecode)實現此特性,此位元組碼可以在任何機器上解釋 執行。
所以它較慢。
可移植性 :Java中對基本數據結構類型的大小和演算法都有嚴格的規定所以可移植性很好。
多線程 :Java處理多線程的過程很簡單,Java把多線程實現交給底下操作系統或線程程序完成.所以多線程是Java作為伺服器端開發語言的流行原因之一 。
Applet和servlet :能夠在網頁上執行的程序叫Applet,需要支持Java的瀏覽器很多,而applet支持動態的網頁,這是很多其他語言所不能做到的。
引自不同網路
❸ java網路編程包含些什麼
java網路編程通常包括三部分TCP/IP , UDP ,URL ;socket只是其中的一個套接字。web,jsp與上面一點關系也沒有,上面是j2se的內容。下面則是j2ee內容。web是一個服務,而jsp是一種技術。實在找關系的話,web包括了jsp.
❹ 請問java中的網路通信有那些方式,有什麼區別
分別是TCP和UDPTCD是一種面向連接的保證可靠傳輸的協議。通過TCP實現的傳輸,得到的是一個順序的無差錯的數據流。發送方和接收方成對的兩個socket之間必須建立連接,以便在TCP的基礎上進行通信,當一server socket)等個socket(通常都是等待建立連接時。 而UDP是一種無連接的協議,每個數據都是一個獨立的信息,包括完整的源地址和目的地址 ,UDP是不可靠的。
❺ Java編程連接網路需要什麼類
應該說需要一個包:java.net.*包
對於TCP,用到
java.net.Socket作為客戶端套接字包裝類,用java.net.ServerSocket服務端套接字包裝類
UDP用到
java.net.DatagramPacket吧貌似忘記了
不過這些都是同步套接字,一步套接字的話就要涉及到java.nio包了,稍微找個教程看看就差不多了,java在這方麵包裝的比較好,程序員學習起來比較簡單
❻ java網路環境如何設置
JDK安裝完成以後,如果你沒有設置好環境變數,那就必須切換到BIN目錄才能執行javac java等命令.
如果想在任意路徑下都可以執行JAVAC等命令,那就必須配置一下系統環境變數.如圖
我的是WIN7,你的系統不一樣,就自己找吧
在"計算機"上右鍵,屬性,左側有一個高級系統設置,點開.
❼ java網路
給軟體開發初學者
在論壇上呆久了,發現很大一部分有關開發的帖子都是有關心懷夢想,立志成為一個軟體英雄或者響當當的黑客人物;或者是狂熱的游戲玩家,突然想邁入游戲開發的殿堂,自己打造一個完美的游戲;或者被以前IT行業的「錢」途無量所吸引,為了經濟因素希望成為一個程序員的,而尋求進入軟體開發領域之門的求助帖子。
這些諸如「你好,我想做程序員,應該怎麼做?」,「初學C++,請問看什麼書好」,「請高手幫我看看這個程序」,「我想轉行,請高手指點」……的帖子佔了各大軟體開發論壇帖子總量的很大一部分,而且內容是長年不變,重復來重復去 :P
自從做了epubcn的C++板塊的版主,經常收到不相識網友的消息或Email,基本上還是問這些問題。看到這些帖子和Email,不禁想起自己剛剛邁入軟體開發的領域,茫茫然不知何去何從,興奮而又彷徨不安的過去,這樣的經歷一次又一次,在不同的地點、不同的時間仍然在不斷的重復。今天終於坐下來,寫下一點文字,希望能夠對彷徨的朋友們有點幫助。
確認你真的要邁入軟體開發領域
軟體開發是一項純智力活動(現在人們都意識到長時間超負荷的連續寫程序並不會提高軟體生產率,反而會對軟體品質造成很大負面影響,所以盡管很多程序員仍然長時間加班,但這種現象正在逐步減少並最終會消失,所以體力要求並不會比其他行業高),如果你不是一個智力高於平均水平的人,說實話,軟體開發並不適合你,你基本不可能在軟體開發領域取得很高的成就和地位,而且不久就會因為年齡的增長而被淘汰。
如果你以那些開發出共享軟體的軟體英雄和著名黑客為榜樣,立志也要成為他們的一員,像武俠小說中的大俠一樣仗劍江湖。我要先給你潑上大大一盆冷水,把你從幻想拉到現實中來。首先,現在的軟體其復雜度和規模都遠遠超過以前,想一個人獨力完成一個規模稍大的軟體,基本沒有可能(雖然還是有些特例, but trust me,那些僅僅是特例,請不要把自己想像成獨一無二的超人、幸運兒);其次,無論是軟體英雄還是仗劍江湖的頂尖黑客,他們的軟體開發功底和智力都遠遠超過軟體行業從業者的平均水平,沒有多年的積累和堅韌超常人的毅力,是不可能,換句話說,想成為他們的一員,可以,但請首先成為一個合格的軟體開發人員。
如果你是因為傳說中程序員的所謂「高薪」,對自己現在從事的工作不滿意,而萌生轉行的念頭,我勸你還是再慎重考慮一下。程序員的待遇一般來說,是要比平均水平高一些,但遠遠談不上高薪,而且以現在程序員的工作量來算,其實同樣的付出,程序員所得到的能和平均水平看齊就不錯了,程序員的競爭和淘汰也是異常殘酷的。技術的更新速度更是其他行業所罕見,每個程序員都要不停的跑步跟上,不使自己落伍,所以在這個層面上來說,沒有誰可以停下來休息,唯一能夠積累下來的就是你的經驗,但經驗中能夠為你的競爭力增添籌碼的並不多。
說了這么多,並不是我故意貶低,而是希望告訴你我所知道的軟體開發行業的真實情況,基於此請再慎重考慮你是不是真的要邁入軟體開發領域。
檢驗一下你是否適合當個程序員
在我看來,要做一個合格的程序員,你需要具備下面幾個條件:
1. 強烈的好奇心和求知慾
2. 追求完美的精神
3. 良好的邏輯分析能力
其他方面的條件幾乎所有類似的帖子都有提及:如果你不是准備單打獨斗,那麼團隊合作能力必不可少;英語我就懶得說了,沒有基本的閱讀英文資料的能力,我勸你還是打消做個程序員的想法,沒有為什麼;數學能力也是必不可少的,如果不是做演算法,高中水平的數學能力就足夠了,但一定要成績很好才行。
那麼為什麼我要強調上面列的三點呢?
具有強烈的好奇心和求知慾,能夠讓你跟上技術發展的步伐,僅僅靠危機感和責任感,你對技術的學習會有很強的功利性質,導致你的技術體系不能構成一個完整自包容的整體,而且很難對技術有高層次的認識和掌握。
我認識的一個資深系統設計師跟我說過:做軟體,「做出來」和「做的好」完全是兩個概念,所要求的投入和技術水平是天壤之別。現在國內很多程序員僅僅把軟體開發當作養家糊口的謀生手段,國內計劃經濟時代湊合、馬馬虎虎幹活的思想也滲透到了軟體業,很多程序員僅僅是把功能做出來,根本不會去考慮提高重用性、可維護性,也不會去考慮提高穩定性、運行速度,甚至連代碼也是亂七八糟,基本的編碼規范都不遵守(在我看來,這樣的人不配「程序員」這個稱號),在我們大聲譴責國內軟體業環境不好,拉項目靠關系,沒有質量保證體系,老闆不重視程序員,瘋狂剝削程序員的時候,我們是不是該問問自己,你是不是只把眼睛盯著別人?
現在各種軟體開發包應有盡有,包羅萬象,編程工具也異常強大方便,對於國內佔主流的MIS系統來說,要完成一個功能實在不是很難的事情,但是如果把系統做為一個整體,則大多數都是運行緩慢、佔用資源過大、兼容性差、可維護性差、不穩定的系統,你可曾嘗試過開發一個優秀的系統,如果有,你就會發現開發優秀軟體是多麼困難,對技術的要求是多麼高,而你在努力做到完美的過程中水平的提升是多麼快。沒有追求完美的精神,無論外部環境如何好,你也是不會開發出優秀軟體的,等待你的是無休止的修改和維護~,你的技術水平也永遠停留在簡單的編碼階段,最終只有被迫轉行。
好了,我真的適合當個程序員,那我該如何開始?
首先選擇一門編程語言和操作系統平台。
操作系統平台國內比較流行的基本有Windows、Linux(Unix)、Mac OS。一般來說大家都選擇的是Windows平台,因為此平台是國內處於壟斷地位的操作系統,而且有很多優秀的開發工具可供選擇,缺點就是Windows 平台的開放性不高,往底層探究比較困難(但我對於言必稱底層的觀點比較反感,不是所有搞開發的都要對底層非常了解,做出用戶滿意的系統才是我們追求的根本,玩些底層的trick只是一種自我滿足罷了。當然我們需要有一些掌握底層技術的高手,但這個是個人選擇的問題),而且用慣Windows的程序員在配置、腳本等方面比較弱。Linux是開源平台,當然從理論上你可以操縱Linux的一切,但是有幾個人能夠達到這一水平?剛剛開始學習開發的程序員,在 Linux上也僅僅能夠開發一些應用軟體罷了。Linux下的開發工具不夠人性化,但這種情況正在逐步得到緩解,Eclipse就是非常出色的開發平台。在Linux下開發,你可以得到大量優秀的源代碼,並且一切都是透明的(只要你想),但你必須學習很多命令行指令,掌握各種系統和參數配置以及腳本方面的知識。
編程語言的選擇更是令人頭痛,我涉獵不多,對於有些語言,我無法給出任何建議,只好等這方面的高手來給大家補充了。我僅僅對C++和Java進行一些說明,當然這個也僅僅是基於個人體會,絕對不是權威觀點 :P
C++仍然是目前佔主流的開發語言(詳細的可以閱讀TCPL中的相關論述),而且一種語言的發展或消亡都是一個漸進的過程,在可以預見的將來,C ++仍然是一門舉足輕重的開發語言,但其所針對的領域和方向可能會有所調整,我認為最主要的變化是C++會逐步從商業MIS系統市場上退出。選擇C++的理由是關於C++的優秀開發書籍和開發工具最多,相關的資源也異常豐富,待對於一般應用程序的開發掌握之後,無需過渡,就可以深入學習各種技術,因為現階段講述系統底層奧秘和高級技術的書籍,基本都是選用C\C++做為示例語言。加上微軟精心打造的開發平台Visual Studio或Borland的C++ Builder系列,學習起來更是如虎添翼。但C++現在的缺點也是比較明顯的,我最深的感觸就是對於XP和Agile Development的支持不好。
Java簡化了C++的語法,學習起來比較容易(但隨著Java的日益普及和發展,是否能夠繼續保持這一優勢,我不敢斷言),Eclipse 是非常優秀的Java開發平台,支持XP的整個過程:設計、測試、編碼、重構……現階段敏捷軟體開發的主要語言就是Java。而且Java的跨平台特性更是非常大的優勢。
實際上,選擇哪門語言都沒有關系,根據你的發展規劃和目前身邊的環境選擇就可以,沒有必要跟風,其後的堅持才是難點。
好,假設你選擇了C++做為開發語言,在Windows平台上開發,那麼我給你如下的學習建議(其他的選擇請各位積極補充……):
C++語言的學習當然是基礎,這個階段由於沒有任何在特定平台上的開發經驗,我們只能按照書中的例子一個一個輸入運行,暫時告別熟悉的圖形界面,回到古老的DOS了。參考書的選擇是這個階段很多朋友關心的,Stan Lippman的《Essential C++》和《C++ Primer》是我優先推薦的,而《Essential C++》因為篇幅較小,講解內容適當,而且對C++ STL的運用有不少描述,顯得相當實用,我認為最適合初學者使用。無論選擇了那本書做為入門教材,都應該逐個例子逐個例子的消化,不要貪快,但同時要對重點內容有所側重。我們學習任何東西都是為了解決實際問題,所以請把重點放在我們實際中最常用的部分,而不要過多的追究一些細節和艱深晦澀的不常用技術。
此刻我們會碰到很多過後看來非常簡單幼稚的問題,比如為什麼編譯出錯,為什麼按照書中的例子輸進去卻無法通過編譯,找不到頭文件等等,大體上這是因為剛剛接觸程序開發,對程序理解還很初級,以及對於所使用的開發環境不夠了解,特定編譯器對標准C++的支持程度不一導致。請多閱讀關於所使用開發環境的各種文檔,以及查閱幫助文檔。以我最經常使用的Visual C++配合MSDN來說,當出現一個我不能理解的編譯錯誤時,按F4鍵編輯器就會自動跳到當前錯誤地點,下面的輸出窗口也會給出錯誤代碼(比如C××× ×),把錯誤代碼記下,打開MSDN,在索引一欄輸入錯誤代碼,就能夠查到詳細的關於此錯誤的說明,當然,是英文的(不要問你不會英文怎麼辦,這是基本要求)。現在的開發工具查錯排錯非常方便。當然,有時很多錯誤原因並不是編譯器所提示的地方,而是往前或往後一些地方,長期的編程經驗可以提高查錯速度。此時也請多練習練習Debug技術。
此階段只要能夠掌握C++的基本語言要素,對結構化程序設計和基於對象的設計有一定理解,能夠完成一些簡單的小程序就可以結束了,畢竟DOS 程序現在很難勾起我們學習的慾望了 :P 在此之後可以視自己的情況決定是否學習數據結構,數據結構是程序員的必修課,不可或缺,地位非常重要,即使你現在希望馬上進入圖形界面程序開發的世界,這一課我也提醒你記著早點補上。
終於可以邁入圖形世界,我們要從SDK編程開始,不要擔心,這不會花費你太長時間,但卻是對Windows程序運行機制進行深入了解的好時機,在此的努力都不會白費(trust me),此時的參考書沒有什麼好考慮的,基礎的有Charles Petzold的《Windows程序設計》,進階的有《Windows核心編程》。請從《Windows程序設計》開始,Charles Petzold的書通俗易懂,學習起來非常輕松,而且對你的語言要求不高,只要懂C就可以了。
此時容易碰到的問題大多與項目設置有關,如果使用Visual C++,請按Alt+F7調出項目設置對話框仔細檢查,並閱讀相關文檔,熟悉各項配置的意義。
此階段請重點掌握Windows SDK程序的編寫方法,Windows程序的運行機制和Windows消息機制,和常用的Windows API。我們還可以更進一步:嘗試用前一階段學到的C++知識對過程化的SDK程序進行初步的改造,將我們敲入計算機的程序變得可重用,按照自己對基於對象思想和面向對象思想的理解來重新編寫例子程序。
OK,現在你已經初步入門了,掌握了C++的基本用法,對面向對象有了一點模糊而自以為是的認識,也能夠寫出Windows程序了,雖然還有點簡單,還有點醜陋,不過,總歸是圖形界面啊。開始有點感覺了,是嗎? :P 別急著往前沖,停一停,將C++和Windows SDK的基礎打牢,貪多嚼不爛嗎。此時有很多經典書籍等待你去掌握,也有幾乎無限的題材供你練習,請盡量多閱讀接觸下面的資源:
《C++ Primer》
《Windows核心編程》
《應用程序調試技術》
面向對象開發設計方面的書籍
MSDN的Platform SDK部分,Periodicals部分(包含了大量有價值C++、SDK方面的技術文章)
CodeProject里相關的源代碼是很好的補充學習資料
現在繼續往前走吧,利用SDK開發畢竟有時太過於費時費力,還是使用更高級的應用程序開發框架的好,主要的有MFC和VCL,關於這些框架誰好誰壞的爭論我已經聽煩了,一句話,能幫助我們完成任務就行,它們無非都是工具,你自己隨便選擇吧。不過選擇好之後,你應該明白,對於你的工具,了解越深,越能發揮它的威力。如果你選擇了MFC,我建議學習下面的書籍:
《深入淺出MFC》:關於此書毋庸多說,盡管有人不停的貶低,但它的地位是無可置疑的,而且也是對我最有幫助的書籍之一。
《MFC程序設計》
《Visual C++技術內幕》
然後就停止找書吧,網上開發站點的數不勝數的源代碼就是最好的老師了……
學習過程中碰到問題我該怎麼辦?
我始終認為學習軟體開發過程中遇到的問題只有自己盡最大的努力去解決,才能收到最大的成效,對於那些動不動就把問題發到網上指望高手幫你解決的做法我非常不贊同,因為這樣你並不能從中學到多少。我建議的做法是,首先嘗試自己獨力解決問題,花幾個小時解決一個問題,是很正常的,不要幾分鍾解決不了就放棄了;實在無法解決的時候,請嘗試盡量減小涉及范圍,將問題歸結一下,初步形成自己的結論;然後利用搜索引擎或者開發論壇中的搜索功能來搜索是否有對於自己問題的解答;實在沒有的時候,再發帖子求助。請了解一點:你遇到的問題都是別人遇到過的,網上肯定有現成的解決方法(因為你還沒有到開發研究前所未有的問題的水平:P),只看你找不找得到了,請盡力去利用現有的資源而不是麻煩別人。
CSDN的論壇、MSDN在線文檔都是非常好的資源,基本上我們遇到的問題在這里都能找到解答。
(寫的有點亂,大家湊合看吧B))
註:上面的內容還不夠全面,非常歡迎各位充實。有什麼不對之處,也歡迎大家指出討論。
❽ java網路編程 和 java web有什麼區別
web前端分為網頁設計師、網頁美工、web前端開發工程師
首先網頁設計師是對網頁的架構、色彩以及網站的整體頁面代碼負責
網頁美工只針對UI這塊兒的東西,比如網站是否做的漂亮
web前端開發工程師是負責交互設計的,需要和程序猿進行交互設計的配合。
web前端需要掌握的有腳本技術javascript DIV+CSS現下最流行的頁面搭建技術,ajax和jquery以及簡單的後端程序等。 後端的話可供開發的語言有 asp、php、jsp、.NET 這些後端開發語言的話搭建環境都不一樣,具體如果你想學的話看是想從事前端部分還是後端程序部分。後端開發如果有一定的條件的話可以轉為軟體開發。不過要有一定的語言基礎,類似java語言。C#等。關鍵是看你的興趣愛好。。
這個到後期不會區分這么細,做前端到後期也會懂一些後端的技術,反之,後端也是。
在我們實際的開發過程中,我們當前這樣定位前端、後端開發人員。
1)前端開發人員:精通JS,能熟練應用JQuery,懂CSS,能熟練運用這些知識,進行交互效果的開發。
2)後端開發人員:會寫Java代碼,會寫SQL語句,能做簡單的資料庫設計,會Spring和iBatis,懂一些設計模式等。
現在來看,我們對前後端的要求還是蠻低的,尤其是後端,新員工經過培訓之後都是可以參與到後端開發的,沒有太高的技術門檻,唯一需要做的就是先變成熟練工種,這個階段沒有涉及到設計模式、架構、效率等一些列問題。
還是先google一下,看看網上對Web前端開發、Web後端開發分別是什麼?
Web前端: 顧名思義是來做Web的前端的。我們這里所說的前端泛指Web前端,也就是在Web應用中用戶可以看得見碰得著的東西。包括Web頁面的結構、Web的外觀視覺表現以及Web層面的交互實現。
Web後端:後端更多的是與資料庫進行交互以處理相應的業務邏輯。需要考慮的是如何實現功能、數據的存取、平台的穩定性與性能等。
❾ java網路流的問題
問題出在這里buf=str.getBytes();
這一句把getBytes() 返回的引用賦給了buf所以buf 指向的已經不是原來的new byte[100];的內存空間了,那麼這個byte 數組的長度和內容都不是原來的那樣了。
--JAVA 中除了基本類型 (int double char ... 是值傳遞之外,其它的都是引用傳遞,了解C或C++的朋友都很容易理解,java 里所有的對象的實例都是放在它預先申請的堆內存裡面的--方面它管理內存)
**************************補充********************************
你的程序結運行結果應是這樣的
1,有server端On Server... I am client□□□□□□□□□□□□□□□□□□□□□□□□□□□□
2 在client端 On client... message form server...□□□□□□□□□□□□□□□□□□□□□□□□□□□□
運行的時候,要先運行server端的,不然server 和client都會處於阻塞狀態。
至於為什麼怎麼會有這么多的小格子,是這樣的,你讀數據的時候應加一個記錄讀入長度的標記int len =in.read(bufR);
String str=new String(bufR,len);這樣空格就會沒有了。因為java 和C或C++不一樣,C和C++string 都是一個以\0結尾 char 數組,程序從數組頭讀到\0就結束不管這個char 數組還有多大。java 的String 對象設計得不一樣,它用兩個byte 儲存一個char 所以你長度為100的byte數組只能存50個字;。。。。
任何疑問
[email protected]
blog.csdn.net/shmilyhe
❿ java的網路編程有哪些方面
Java網路編程的基礎知識、 套接字編程、非阻塞通信、創建HTTP伺服器與客戶程序、數據報通信、對象的序列化與反序列化、Java反射機制、RMI框架、JDBCAPI、JavaMail API、MVC設計模式、安全網路通信、CORBA和Web服務。