<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    middlegen生成pojo

    http://blog.csdn.net/itcareerist/article/details/5896143

    posted @ 2016-07-05 14:24 youngturk 閱讀(189) | 評論 (0)編輯 收藏

    MyBatis 需要研究

    http://www.cnblogs.com/xdp-gacl/p/4261895.html

    posted @ 2016-06-27 13:47 youngturk 閱讀(139) | 評論 (0)編輯 收藏

    ftp socket

    http://www.ibm.com/developerworks/cn/linux/l-cn-socketftp/

    posted @ 2016-06-27 12:45 youngturk 閱讀(123) | 評論 (0)編輯 收藏

    XML面試題

    http://blog.csdn.net/sweetsnow24/article/details/7447110 http://jingyan.baidu.com/article/b7001fe1738d9a0e7282dda6.html http://wenku.baidu.com/link?url=YjPcc8q-E9jnAEqsEJQZ7juMw8TICa0q9ppU3ICqEyQJBl4JGQynegQT03DQA0oyA-CxGAtDKJ_pvuvo3prfVeLEsxzC7VUWjWMsQVAxht_ 問題1:XML是什么?   答:XML即可擴展標記語言(Extensible Markup language),你可以根據自己的需要擴展XML。XML中可以輕松定義, 等自定義標簽,而在HTML等其他標記語言中必須使用預定義的標簽,比如

    ,而不能使用用戶定義的標簽。使用DTD和XML Schema標準化XML結構。XML主要用于從一個系統到另一系統的數據傳輸,比如企業級應用的客戶端與服務端。   問題2:DTD與XML Schema有什么區別?   答:DTD與XML Schema有以下區別:DTD不使用XML編寫而XML Schema本身就是xml文件,這意味著XML解析器等已有的XML工具可以用來處理XML Schema。而且XML Schema 是設計于DTD之后的,它提供了更多的類型來映射xml文件不同的數據類型。DTD即文檔類型描述(Document Type definition)是定義XML文件結構的傳統方式。   問題3:XPath是什么?   答:XPath是用于從XML文檔檢索元素的XML技術。XML文檔是結構化的,因此XPath可以從XML文件定位和檢索元素、屬性或值。從數據檢索方面來說,XPath與SQL很相似,但是它有自己的語法和規則。   問題4:XSLT是什么?   答:XSLT也是常用的XML技術,用于將一個XML文件轉換為另一種XML,HTML或者其他的格式。XSLT為轉換XML文件詳細定義了自己的語法,函數和操作符。通常由XSLT引擎完成轉換,XSLT引擎讀取XSLT語法編寫的XML樣式表或者XSL文件的指令。XSLT大量使用遞歸來執行轉換。一個常見XSLT使用就是將XML文件中的數據作為HTML頁面顯示。XSLT也可以很方便地把一種XML文件轉換為另一種XML文檔。   問題5:什么是XML元素和屬性   答:最好舉個例子來解釋。下面是簡單的XML片斷。   Xml代碼         6758.T   2300         例子中id是元素的一個屬性,其他元素都沒有屬性。   問題6:什么是格式良好的XML   答:這個問題經常在電話面試中出現。一個格式良好的XML意味著該XML文檔語法上是正確的,比如它有一個根元素,所有的開放標簽合適地閉合,屬性值必須加引號等等。如果一個XML不是格式良好的,那么它可能不能被各種XML解析器正確地處理和解析。   問題7:XML命名空間是什么?它為什么很重要?   答:XML命名空間與Java的package類似,用來避免不同來源名稱相同的標簽發生沖突。XML命名空間在XML文檔頂部使用xmlns屬性定義,語法為xmlns:prefix=’URI’。prefix與XML文檔中實際標簽一起使用。下面例子為XML命名空間的使用。   Xml代碼      837363223         問題8:DOM和SAX解析器有什么區別   答:這又是一道常見面試題,不僅出現在XML面試題中,在Java面試中也會問到。DOM和SAX解析器的主要區別在于它們解析XML文檔的方式。使用DOM解析時,XML文檔以樹形結構的形式加載到內存中,而SAX是事件驅動的解析器。   問題9:XML CDATA是什么   答:這道題很簡單也很重要,但很多編程人員對它的了解并不深。CDATA是指字符數據,它有特殊的指令被XML解析器解析。XML解析器解析XML文檔中所有的文本,比如This is name of person,標簽的值也會被解析,因為標簽值也可能包含XML標簽,比如First Name。CDATA部分不會被XML解析器解析。   問題10:Java的XML數據綁定是什么   答:Java的XML綁定指從XML文件中創建類和對象,使用Java編程語言修改XML文檔。XML綁定的Java API,JAXB提供了綁定XML文檔和Java對象的便利方式。另一個可選的XML綁定方法是使用開源庫,比如XML Beans。Java中XML綁定的一個最大的優勢就是利用Java編程能力創建和修改XML文檔。   以上的XML面試問答題收集自很多編程人員,但它們對于使用XML技術的每個人都是有用的。由于XML具有平臺獨立的特性,XPath,XSLT,XQuery等XML技術越來越重要。盡管XML有冗余和文檔體積大等缺點,但它在web服務以及帶寬、速率作為次要考慮因素的系統間數據傳輸起很大作用,被廣泛用于跨平臺數據傳輸。

    posted @ 2016-06-24 16:41 youngturk 閱讀(170) | 評論 (0)編輯 收藏

    SQL SERVER 的用戶數,連接,連接池 license

    http://www.cnblogs.com/qanholas/p/3904833.html SQL SERVER 理論上有32767個邏輯連接,SQL SERVER根據系統自行調配連接池。 首先 ,操作系統的用戶數:即同時通過網絡連接到這臺電腦上面的用戶限制,以5用戶操作系統,搭建的文件服務器為例,去同時訪問這個文件服務器的網絡用戶為5個。 下面說說SQL server,購買數據庫有兩種方式,1、根據用戶數購買。2、根據cpu個數購買。 根據用戶數購買,假如你購買了一個50用戶的數據庫,那么可以通過網絡訪問數據庫的人數限制為50。 根據cpu個數購買的數據庫訪問人數不受限制,服務器上面有幾顆cpu就要買幾個授權的SQL server,但是如果你只買一個授權的話數據庫也可以正常運行,但是微軟認為你的數據庫不合法。就如同盜版系統。 一個連接不等于一個用戶,單獨一個用戶可以有超過一個的連接,單獨一個連接可以有超過一個用戶。 你可以運行里面輸入perfmon,然后加入下面兩個計數器進行對比 SQLServer: General Statistics — Logical Connections:與系統建立的邏輯連接數。SQLServer: General Statistics — User Connections:連接到系統的用戶數。 打個比喻 sql server是你家的房子 用戶數 是你家房子鑰匙 連接數 是你家房子能進去的人 不是很恰當,但是基本能說明問題 一個房子有多少個鑰匙是明確的,但是每個鑰匙是可以讓多個人進去 也就是說,sql server的用戶是可以登陸sql server進行操作的,而連接數指的是使用某個用戶名登陸的為了執行某個具體操作的一個連接。 通常一個SQL SERVER 查詢器,一個ADOCONNECTION是一個連接。 在SQL Server里查看當前連接的在線用戶數 use master select loginame,count(0) from sysprocesses group by loginame order by count(0) desc select nt_username,count(0) from sysprocesses group by nt_username order by count(0) desc 如果某個SQL Server用戶名test連接比較多,查看它來自的主機名: select hostname,count(0) from sysprocesses where loginame='test' group by hostname order by count(0) desc 如果某個SQL Server用戶名test連接比較多,查看它最后一次操作的時間范圍分組: select convert(varchar,last_batch,111),count(0) from sysprocesses where loginame='test' group by convert(varchar,last_batch,111) order by count(0) desc 如果從主機(www)來的連接比較多,可以查看它的進程詳細情況 select * from??sysprocesses where hostname='www' 如果www機器主要提供網頁服務,可能是asp程序處理連接時出了問題, 生成殺這些進程的SQL語句: select 'kill '+convert(varchar,spid) from sysprocesses where hostname='www' 如果這樣的問題頻繁出現,可以寫一個存儲過程sp_KillIdleSpids.sql, 寫一個作業, 執行它, 來自動殺掉從主機(www)來但已經一天沒有響應的用戶連接. ? ? ? -------------------------------- SQL Server的用戶及權限? ?sysadmin 可以在 SQL Server 中執行任何活動? serveradmin 可以設置服務器范圍的配置選項 關閉服務器? setupadmin 可以管理鏈接服務器和啟動過程? securityadmin 可以管理登錄和 CREATE DATABASE 權限 還可以讀取錯誤日志和更改密碼? processadmin 可以管理在 SQL Server 中運行的進程? dbcreator 可以創建 更改和除去數據庫? diskadmin 可以管理磁盤文件? bulkadmin 可以執行 BULK INSERT 語句? ...... 最大連接數是指數據庫能承受的最大并發訪問數量 SQL Server的并發用戶數或者license怎么理解? 華軟論壇 2005-12-06 13:38:55 在 MS-SQL Server / 基礎類 提問 盜版的有并發用戶數的限制嗎?正版好像有10用戶,50用戶的版本,如果用C/S架構的話,每個客戶端連接算不算一個用戶? 后來有段時間好像改到 只按CPU購買License了。現在又好像見到購買連接數的license. 講了這么一堆,想告訴你的是,如果你只有10用戶的License,其實也是沒有限制的。這是微軟的市場人員親口告訴我的。 [華 軟 網] 歡迎轉載,但請保留出處,本文章轉自[華軟網] 原文鏈接:http://www.huarw.com/db/dbbbs/MSSQLServer/200512/735120.html 你指的是購買許可吧? SQL 提供3種購買方式 1) Processor license. (按CPU購買) 要求為運行SQL Server 2000的操作系統上的每個CPU購買許可. 這種方式不需要購買客戶端訪問許可. 2) Server plus device CALs. (服務器許可加每設備客戶端訪問許可) 運行SQL Server 2000的服務器需要一個許可, 每個訪問SQL Server 2000的設備需要一個客戶端訪問許可. 3) Server plus user CALs. (服務器許可加每用戶客戶端訪問許可) 運行SQL Server 2000的服務器需要一個許可, 每個訪問SQL Server 2000的用戶需要一個客戶端訪問許可 2、每客戶 每客戶授權模式要求每個將訪問 SQL Server 2000 服務器的設備都具有一個客戶端訪問許可證。對于客戶端連接到不止一個服務器的網絡,每客戶模式通常更劃算。 在編輯框中,選擇要授權的設備數。 選擇授權模式: 使用該對話框設置授權模式,以使客戶端可以訪問 Microsoft? SQL Server? 的該實例。SQL Server 2000 支持兩種客戶端訪問授權模式,一個用于設備,另一個用于處理器。 設備可以是工作站、終端或運行連接到 SQL Server 實例的 SQL Server 應用程序的任何其它設備。 處理器指的是安裝在運行 SQL Server 2000 實例的計算機上的中央處理器 (CPU)。一個計算機上可以安裝多個處理器,從而需要多個處理器許可證。 一旦設置了授權模式便無法再更改。可以在安裝 SQL Server 之后添加設備或處理器許可證,這使用 "控制面板 "中的 SQL Server 2000 授權安裝實用工具來進行。 1、授權模式 當從 "控制面板 "訪問該對話框時,安裝過程中選擇的模式在默認情況下為選中,同時顯示以前選擇的設備數或處理器數。 2、每客戶 每客戶授權模式要求每個將訪問 SQL Server 2000 服務器的設備都具有一個客戶端訪問許可證。對于客戶端連接到不止一個服務器的網絡,每客戶模式通常更劃算。 在編輯框中,選擇要授權的設備數。 3、處理器許可證 使用處理器許可,安裝在運行 SQL Server 的計算機上的每個處理器都需要一個許可證。處理器許可證允許任意數目的設備訪問服務器,無論它們是通過 Intranet 還是 Internet。 使用處理器許可,SQL Server 2000 可以利用每個安裝的處理器,并支持不限數目的客戶端設備。通過 Internet 提供對 SQL Server 數據庫的訪問的客戶或擁有大量用戶的客戶通常選擇處理器許可證。 在編輯框中選擇要授權的處理器數。 SQL Server安裝成功后,重起計算機后SQL Server自動啟動服務。 10用戶不是指的連接用戶 在創建自定義控制臺時,可以給控制臺指派兩種常用訪問選項中的一種:作者模式或用戶模式。依次有三個級別的用戶模式,因此共有四種默認訪問控制臺的選項: 作者模式 用戶模式-完全訪問 用戶模式-受限訪問,多窗口 用戶模式-受限訪問,單窗口 你安裝的是企業版,10個客戶端是指你能夠在別的機子上只能安裝10個Sql客戶端同它連接

    posted @ 2016-06-24 15:00 youngturk 閱讀(510) | 評論 (0)編輯 收藏

    三分鐘讓你看懂java網絡通信

    http://i-lolo.iteye.com/blog/1611562 在進入網絡通信之前,讓我們來普及一點網絡基礎概念。如果你是有一定的計算機網絡基礎,請直接跳到第五點之后開始閱讀。 第一、 什么是計算機網絡? 書本上那些文縐縐的概念我們可以不去理,我告訴你,我們兩臺電腦連在一起就組成了一個計算機網絡。其實我們的電腦甚至是全世界的電腦都是連著的,只要你的電腦連著網,你就在這個巨大的計算機網絡里,你也許會問為什么我和他們是連著的啊?大家知道自己是怎么上的網?ADSL是吧,撥號上網。換個比方說吧,我們在公司我們的電腦通過網線,雙絞線,然后是Hub(集線器),連接到胡哥的電腦,然后胡哥的機子通過撥號,ADSL,連到電信的網關那兒,然后中國電信通過海底光纜和美國電信網關連接,然后再像剛剛我們連接中國電信一樣,逆推過去,連接到美國每一臺聯網的計算機。所以說只要你連著網,你就是和全世界的在線用戶連著。這是一個巨大的計算機網絡。非常巨大。 第二、 計算機網絡的主要功能? 資源共享、信息傳輸與集中處理、均衡負荷與分布處理、綜合信息服務(www/綜合數字網絡 ISDN)。這些個功能,不多說。這些你不平時都在用么?你的資源能夠上傳共享給其他人,有的人平時還很喜歡聊QQ,是吧,所以上面說的這四個也許還有更多的什么功能都是些冠冕堂皇的話,稍微看下就好。用了自然就曉得了。 第三、 什么是網絡通信協議? 我來問你,為什么你說話身邊的人能夠聽的懂,別人說的話你為什么也能夠聽懂,而為什么如果你去對一個外國人說話或者一個外國人來和你說話你們卻互相聽不懂呢?你會說廢話嘛因為我說的是中文,是漢語,中國人說的都是漢語,而外國人說的是另一種語言,是外語。就是這樣,網絡通信協議就像我們的中文一樣,她就是我們之間的共同語言,他規定了我們之間怎么說話,我先說什么你再說什么,你怎么說,而我應該怎么聽。而網絡通信得先規定約定一些俗成的網絡通信協議,先說好,兩臺計算機之間什么收發信息,信息格式是什么,信息怎么發,怎么接收,而萬一出錯怎么辦怎么處理。沒有了這個協議,兩臺電腦就不知道互相之間怎么說話,就像你對一頭大母豬說完愛你,而人家根本就不知道你在說什么。 在這兒和大家提一下網絡協議的分層思想。學過計算機網絡的同學都知道有兩種基本的國際標準分層模型,一個是OSI參考模型,一個是TCP/IP參考模型。OSI參考模型,是國際標準化組織搞出來的開放互聯傳統模型,一共有七層:物理/數據鏈路/網絡/傳輸/會話/表示/應用。學網絡和硬件的一般都要熟悉這七層標準,至于這七層都是干嘛的,大家自己問度娘或者自己看關于網絡的書去。(中南大學高陽教授主編了一本叫《計算機網絡原理與實用技術》的書,里邊很詳盡的介紹了這個OSI參考模型,沒記錯的話應該是在第一章1.4.5里,是放在TCP/IP協議之后的……)這里就不多說了,因為對于咱們編程的軟件人員來說,實際當中的應用,是分為四層,也就是TCP/IP參考模型。最底層物理+數據鏈路層/網絡層/傳輸層/應用層。我們編的程序是位于應用層,所以說,我們一直是在和哪一層打交道?TCP/IP層。我們編寫一個程序發送一些數據,發給傳輸層,TCP/IP層,在這一層對數據進行封裝,按照先前約定的協議,然后走向下一層,通過網線,再走到物理數據鏈路層,這時候數據就變成了一連串的01010101,到達對面之后逆推上面的過程,進行解封,ok,信息發送完畢。這兒涉及到比較多的網絡底層,目前我們不需要過多了解,因為我們要做的工作不需要了解牽扯到到這么底層的東西,如果你想深入了解或者今后你想做殺毒軟件什么的,去讀《TCP/IP詳解》。 第四、 IP——(Internet Protocol網絡之間互連的協議)? 你不用管其他的,你只需要知道IP這個東西給我們做出的最大貢獻,就是給我們每一臺電腦提供了一個獨一無二的IP地址。你想我的機器要和你的機器交流說話,我得知道你的機器叫什么,你的機器得有一個獨一無二的區別標識,否則的話我就不知道傳的信息有沒有傳到你那兒,也不知道這信息到底傳給誰。IP地址這東西我們都知道吧?像我的本機IP: 113.240.187.242 這是湖南省長沙市的IP。他是由四個字節組成的(也就是說每一個值不能超過255)。(這個是IPV4,能夠組成將近四億多地址,現在已經出來了IPV6,高檔貨,八個字節,地址數是IPV4的幾何倍數)IPV4的IP地址按照其網絡IP段和主機IP段占的字節數分ABC三類網。這個這里不說,大家自己去了解,好吧?拿高陽教授的那本書翻翻。順帶看看子網掩碼啊網關啊什么的。自己去了解。在這兒我就累得給你敲了。 第五、 TCP協議和UDP協議? 好了,上一步里我們通過獨一無二的IP地址找到了對方連在了一起。我們可以通話了,關于通話我們有兩種方式: 第一、 TCP協議,什么叫TCP協議?Transmission Control Protocol 傳輸控制協議TCP是一種面向連接(連接導向)的、可靠的、基于字節流的運輸層(Transport layer)通信協議。什么叫可靠的?打個比方,我們打電話,上一步通過IP找到對方就相當于撥號打通了你的電話,你拿起電話接了,我說一句“喂?”,如果你這邊不回應,我就會杵這兒一直“喂”下去,是不?因為不知道你那邊到底接到了聽到了我的話沒有,所以你這邊一定要告訴我你聽到了你收到了我剛剛的那句信息,我才會接著給你說下面的話給你發下面的數據。我每發一次信息我要你給我確認收到了,然后我再給你發接下來的東西,這個就叫可靠。在TCP/IP協議里邊這叫“三次握手”機制。怎么握手,握手是怎么回事,問度娘,好吧? 第二、 UDP協議。User Datagram Protocol的簡稱, 中文名是用戶數據報協議,是 OSI 參考模型中一種無連接的傳輸層協議。UDP這種方式相對于TCP來說更加簡單。UDP說話就是,我給你說一句話,你聽沒聽到我不管。就像發電報,“黃河黃河我是長江!”哐當一下就發出去了。不管黃河收到沒有。兩種方式一種安全可靠但是慢,一種簡單快捷但是不可靠。根據不同的需求選擇。像我們平時聊QQ開視頻啊什么的,用的就是UDP,因為我們傳輸的這些個數據丟個一兩個包什么的無所謂,頂多就是視頻多了幾個馬賽克,是吧。那么平時我們玩的網絡游戲,像CF啊魔獸世界啊,是哪一種呢?自己想,好吧? 第三、 中南-馬志丹 http://java-mzd.javaeye.com 驚喜看得到! 基礎普及完了,接下來我們來看看為什么要去做網絡通信。這一段我就簡單點說。在計算機剛出來那會兒 ,那時候的人們都覺得計算機這東西就是主要為計算而存在的就是一個計算工具,但是自從1983年起,TCP\IP協議的出現,讓計算機從此轉變為了人們的一個交流工具。自那以后,只要你有一臺電腦,不管你是開網頁看電影,還是上人人找朋友,不管你是登郵箱收發郵件,還是登QQ聊天,你的生活的方方面面都離不開那電腦屏幕后邊的網絡技術。換句話說,如果沒有了網絡通信技術,電腦以及大多數軟件將會失去他們原有的生命力。就像一棵大樹沒有根。沒有網絡通信就沒有如今繁榮的QQ世界,沒有了網絡通信,世界上那些個IT巨頭諸如IBM諸如谷歌,將會如斷線風箏落日殘陽。我想說,如果你不懂網絡通信技術,你就不是一個合格的程序員,如果你不精通網絡通信技術,你就無法開發出一款真正優秀的營運軟件!除非你想永遠停留在枯燥的單機時代,你想讓自己的技術永遠留在表層。 現在,讓我們來考慮如何實現。 在做實現之前,我想先讓大家明白幾個概念: 1) Socket A. 兩個Java應用程序可通過一個雙向的網絡通信連接實現數據交換,這個雙向鏈路的一端稱為一個Socket B. Socket通常用來實現client-server連接 C. Java.net包中定義的兩個類Socket和ServerSocket,分別用來實現雙向連接的client和server端 D. 建立連接時所需要的尋址信息為遠程計算機的IP地址和端口號(Port number) 上面我們提到了IP地址,那是每一臺電腦獨一無二的一個地址標識,是為了對方計算機能夠找得到你給你發信息。建立連接我們很顯然需要這個信息才能夠完成。那么這個端口號又是用來干什么的呢?舉個例子,假如說我電腦上現在上著人人和QQ,你的電腦上也是上著人人和QQ,如果我用QQ給你發一條消息他怎么知道就發到你的QQ上而不會在你的人人上呢?是吧?所以說光用IP地址是無法區分到不同的應用程序的。所以需要端口號來達到這個作用。端口號在計算機內部是用兩個字節來表示,也就是說總共有65536個端口。在這兒需要注意下面兩個點: ?1.1024之前的端口我們自己編的程序不要征用它,因為這些端口是給系統用的。比如說80端口,胡哥給咱們講過的。干嘛的?負責處理HTTP上網訪問網頁等等的端口。還有就是21端口,FTP的,是吧?還有其他的一些著名端口,想知道問度娘去,好吧?在這里就不羅嗦了。 ?2.TCP端口和UDP端口是分開的,比如說TCP有個8888端口,他和你的UDP8888端口是不一樣的。 ?3.上述每一類有65536個端口。也就是說我們的計算機能夠運行131072個程序,只要你電腦吃得消。 既然要實現通信,那我們肯定要確定兩個通信對象,一個是服務器對象server,一個是客戶端對象client。我們需要知道,這兩個對象是兩個應用程序,他們的對話,是兩個不同的程序之間的對話。你會說我只有兩個對象也還沒法實現他們之間的交互啊,不用急,我也知道他們兩個不是神仙會心有靈犀。兩個對象之間想要實現互相之間的信息交互,就必須要有一個通道。這個通道就像是一根管子,一頭扎在服務器端,一頭插在客戶端。信息就在這根管子里來來往往。這根管子怎么插呢,插在哪兒呢?這個時候就需要用到剛剛提到的Socket了。 Socket的意思呢就是一個插座,服務器和客戶端各有一個插座,安插在各自的一個端口上,管子插在這兩個插座上,然后在他們這兩個端口上接入數據流。Socket通常用來實現server-client連接。Java里面有一個包java.net,他下邊有定義了兩個類,Socket和ServerSocket,分別用來實現雙向連接的server端和client端。 接下來我們來建立TCP服務器端和客戶端。 服務器端:我們用的是ServerSocket,新建一個server插座,并且交給他一個端口號,這個插座他有一個非常方便的構造方法ServerSocket(int port),讓他知道自己監聽哪一個端口,然后新建一個socket對象,開機,并用.accept語句讓他處在待機狀態,等待接受client的接入。一旦有客戶端接入就將它賦給新建的Socket對象,并且用.getInputStream以及.getOutputStream命令獲得他的輸入輸出流。這個流,就是一根管子,信息都在這根管子里流通。這樣說東西不怎么好說,那么我們就在這個流上面再包一層,將這個流封裝成DataOutputStream(),DataInputStream。然后就可以利用輸出流(這個是相對于服務器來說,這個輸出流到了客戶端就成了輸入流了)來.write信息,利用輸入流來.read()獲取客戶端發來的信息。Ok,接收完了,.close關閉輸入輸出流,以及關閉socket,關機。 客戶端:寫法和服務器端有點類似,新建一個插座,這兒需要留意的是,客戶端需要用到的插座是Socket而不是ServerSocket,新建一個Socket牌插座,同樣用他的Socket(String host,int port)構造方法方法給他一個IP地址和端口號,讓它撥打區號以及具體電話號,這個和服務器端的IP地址以及端口號要一致,ok,這個時候server就相當于申請連接到服務器的某一個端口上了。兩個程序就等于是連接上了。但是有些人就會問了啊,這只是客戶端申請連接,人家服務器接不接受呢。好,前面我們的服務器不是提到了.accept么,這個方法就是用來接受客戶端的,這個時候就是:你申請連接,我接受連接,接下來,照著上面服務器一樣,客戶端也獲取到自己的輸入輸出流,封裝,用輸出流寫出信息。咱們之間就可以互相通信了。還有一個問題啊,要是如果有另一個客戶端接入了呢?簡單,那就再.accept一下。如果有N多客戶端接入,那就不斷的.accept,不斷循環它。這個問題大家都知道可以用while語句。 具體的敲法,請看我給大家附上的代碼實現。下面給大家看下Socket通信模型。看著這個模型,再回頭看看上面給大家嘮叨的那些個點,我想大家都知道服務器和客戶端該怎么去寫怎么去實現通信了吧? 好了,這一段“三分鐘讓你看懂”到此就結束了,想來大家對網絡通信也該有了一個相對清晰的認識。如果你還想了解學習更多的網絡通信方面的知識,如果你還想知道如何去實現一些更多的通信功能,比如建立公共聊天室實現群聊,又比如建立一個以互聯網為基礎的以網絡畫板為主體的協助平臺,又比如,你想做一個自己的軟件來實現像QQ一樣MSN一樣或者像人人桌面一樣的各種功能……請繼續關注我們的隨后更新。請記住,我們是ZCL,我們是一群簡單快樂的牧碼人! 后記:第一篇正兒八經的技術日志,4K多全手打,這樣說起來應該蠻自豪的感覺。但是說實話還是覺得自己寫的有些亂。自己只是把課堂上老師們講的一些知識點,根據自己敲的代碼以及做了的一些課堂筆記,羅列了出來。也查了一些在線資料和書籍,像度娘,像學校發的那本我都沒怎么動過的《計算機網絡原理和實用技術》。在前面花了好些篇幅來講計算機網絡基礎知識,是因為我給自己定下的目標就是讓任何一個人甚至你是沒怎么學過接觸過java或者計算機網絡這一塊,看了我的博客之后,都能夠對網絡通信有一個比較清晰的認識,而讓接觸過java的人知道怎么樣初步的去實現兩個軟件或者說程序之間的通信,知道他們之間是怎么回事兒并且自己動手實現它。這確實是一個有點難度的過程。但是你如果把這個都搞定了,那么,你的java網絡通信就基本可以說入了一個門了。我似乎聽見了胡哥用他那一慣的口吻在我身后說,這種程度,要說入門還早的很呢!當然咯,就算我現在做到網絡畫圖板做到網絡文件傳輸,也感覺自己只是進了一個門,門后的世界無比之大,等待我們不斷的去探索,去創新,去創造它。生命有限,學海無涯;人有老時,學無止境嘛。發現的問題蠻多。但獲得的收獲也不少。果然檢驗自己是否學會掌握一個東西的最好辦法就是嘗試著去教給別人。只有你能夠很清晰的把事兒給別人說清楚了教會了,你才能說自己懂了。寫完這篇博客,感覺自己對網絡通信的理解又加深了一些,對其中的一些知識點的掌握也更加牢靠了一些。只言片語薄聞淺見,希望大家多多批評不吝賜教! 最后的最后:用胡哥的一句話來與君共勉吧! 標準即平庸,合格即廢物。 (附)服務器端代碼: Java代碼 收藏代碼 package con120722; import java.net.*; import java.io.*; public class Server { private ServerSocket ss; private Socket socket; private BufferedReader in; private PrintWriter out; public Server() { try { ss = new ServerSocket(10000); while (true) { socket = ss.accept(); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new PrintWriter(socket.getOutputStream(),true); String line = in.readLine(); out.println("you input is :" + line); out.close(); in.close(); socket.close(); } } catch (IOException e) {} } public static void main(String[] args) { new Server(); } } 客戶端代碼: Java代碼 收藏代碼 package con120722; Java代碼 收藏代碼 import java.io.*; import java.net.*; public class Client { Socket socket; BufferedReader in; PrintWriter out; public Client() { try { socket = new Socket("localhost", 10000); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new PrintWriter(socket.getOutputStream(),true); BufferedReader line = new BufferedReader(new InputStreamReader(System.in)); out.println(line.readLine()); line.close(); out.close(); in.close(); socket.close(); } catch (IOException e) {} } public static void main(String[] args) { new Client(); } }

    posted @ 2016-06-23 10:02 youngturk 閱讀(245) | 評論 (0)編輯 收藏

    Xms Xmx PermSize MaxPermSize 區別 java 內存

    http://www.cnblogs.com/mingforyou/archive/2012/03/03/2378143.html http://www.educity.cn/wenda/450855.html Eclipse崩潰,錯誤提示: MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) space remains. It is strongly recommended that you exit and restart MyEclipse with new virtual machine memory paramters to increase this memory. Failure to do so can result in data loss. The recommended Eclipse memory parameters are: eclipse.exe -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M 1.參數的含義 -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M -vmargs 說明后面是VM的參數,所以后面的其實都是JVM的參數了 -Xms128m JVM初始分配的堆內存 -Xmx512m JVM最大允許分配的堆內存,按需分配 -XX:PermSize=64M JVM初始分配的非堆內存 -XX:MaxPermSize=128M JVM最大允許分配的非堆內存,按需分配 我們首先了解一下JVM內存管理的機制,然后再解釋每個參數代表的含義。 1)堆(Heap)和非堆(Non-heap)內存 按照官方的說法:“Java 虛擬機具有一個堆,堆是運行時數據區域,所有類實例和數組的內存均從此處分配。堆是在 Java 虛擬機啟動時創建的。”“在JVM中堆之外的內存稱為非堆內存(Non-heap memory)”。 可以看出JVM主要管理兩種類型的內存:堆和非堆。簡單來說堆就是Java代碼可及的內存,是留給開發人員使用的;非堆就是JVM留給自己用的, 所以方法區、JVM內部處理或優化所需的內存(如JIT編譯后的代碼緩存)、每個類結構(如運行時常數池、字段和方法數據)以及方法和構造方法的代碼都在非堆內存中。 堆內存分配 JVM初始分配的堆內存由-Xms指定,默認是物理內存的1/64;JVM最大分配的堆內存由-Xmx指定,默認是物理內存的1/4。默認空余堆內存小于40%時,JVM就會增大堆直到-Xmx的最大限制; 空余堆內存大于70%時,JVM會減少堆直到-Xms的最小限制。因此服務器一般設置-Xms、-Xmx 相等以避免在每次GC 后調整堆的大小。 說明:如果-Xmx 不指定或者指定偏小,應用可能會導致java.lang.OutOfMemory錯誤,此錯誤來自JVM,不是Throwable的,無法用try...catch捕捉。 非堆內存分配 JVM使用-XX:PermSize設置非堆內存初始值,默認是物理內存的1/64;由XX:MaxPermSize設置最大非堆內存的大小,默認是物理內存的1/4。(還有一說:MaxPermSize缺省值和-server -client選項相關, -server選項下默認MaxPermSize為64m,-client選項下默認MaxPermSize為32m。這個我沒有實驗。) 上面錯誤信息中的PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域。還沒有弄明白PermGen space是屬于非堆內存,還是就是非堆內存,但至少是屬于了。 XX:MaxPermSize設置過小會導致java.lang.OutOfMemoryError: PermGen space 就是內存益出。 說說為什么會內存益出: (1)這一部分內存用于存放Class和Meta的信息,Class在被 Load的時候被放入PermGen space區域,它和存放Instance的Heap區域不同。 (2)GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的APP會LOAD很多CLASS 的話,就很可能出現PermGen space錯誤。 這種錯誤常見在web服務器對JSP進行pre compile的時候。 2)JVM內存限制(最大值) 首先JVM內存限制于實際的最大物理內存,假設物理內存無限大的話,JVM內存的最大值跟操作系統有很大的關系。簡單的說就32位處理器雖然可控內存空間有4GB,但是具體的操作系統會給一個限制, 這個限制一般是2GB-3GB(一般來說Windows系統下為1.5G-2G,Linux系統下為2G-3G),而64bit以上的處理器就不會有限制了。 2. 為什么有的機器我將-Xmx和-XX:MaxPermSize都設置為512M之后Eclipse可以啟動,而有些機器無法啟動? 通過上面對JVM內存管理的介紹我們已經了解到JVM內存包含兩種:堆內存和非堆內存,另外JVM最大內存首先取決于實際的物理內存和操作系統。所以說設置VM參數導致程序無法啟動主要有以下幾種原因: 1) 參數中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize; 2) -Xmx的值和-XX:MaxPermSize的總和超過了JVM內存的最大限制,比如當前操作系統最大內存限制,或者實際的物理內存等等。說到實際物理內存這里需要說明一點的是, 如果你的內存是1024MB,但實際系統中用到的并不可能是1024MB,因為有一部分被硬件占用了。 3. 為何將上面的參數寫入到eclipse.ini文件Eclipse沒有執行對應的設置? 那為什么同樣的參數在快捷方式或者命令行中有效而在eclipse.ini文件中是無效的呢?這是因為我們沒有遵守eclipse.ini文件的設置規則: 參數形如“項 值”這種形式,中間有空格的需要換行書寫,如果值中有空格的需要用雙引號包括起來。比如我們使用-vm C:/Java/jre1.6.0/bin/javaw.exe參數設置虛擬機, 在eclipse.ini文件中要寫成這樣: -vm C:/Java/jre1.6.0/bin/javaw.exe -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M 實際運行的結果可以通過Eclipse中“Help”-“About Eclipse SDK”窗口里面的“Configuration Details”按鈕進行查看。 另外需要說明的是,Eclipse壓縮包中自帶的eclipse.ini文件內容是這樣的: -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256m -vmargs -Xms40m -Xmx256m 其中–launcher.XXMaxPermSize(注意最前面是兩個連接線)跟-XX:MaxPermSize參數的含義基本是一樣的,我覺得唯一的區別就是前者是eclipse.exe啟動的時候設置的參數, 而后者是eclipse所使用的JVM中的參數。其實二者設置一個就可以了,所以這里可以把–launcher.XXMaxPermSize和下一行使用#注釋掉。 4. 其他的啟動參數。 如果你有一個雙核的CPU,也許可以嘗試這個參數: -XX:+UseParallelGC 讓GC可以更快的執行。(只是JDK 5里對GC新增加的參數) 補充:   如果你的WEB APP下都用了大量的第三方jar,其大小超過了服務器jvm默認的大小,那么就會產生內存益出問題了。 解決方法: 設置MaxPermSize大小 可以在myelipse里選中相應的服務器比如tomcat5,展開里面的JDK子項頁面,來增加服務器啟動的JVM參數設置: -Xms128m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m 或者手動設置MaxPermSize大小,比如tomcat, 修改TOMCAT_HOME/bin/catalina.bat,在echo "Using CATALINA_BASE: $CATALINA_BASE"上面加入以下行: JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m 建議:將相同的第三方jar文件移置到tomcat/shared/lib目錄下,這樣可以減少jar 文檔重復占用內存 1.JVM內存管理的機制   內存空間劃分為:Sun JDK在實現時遵照JVM規范,將內存空間劃分為堆、JVM方法棧、方法區、本地方法棧、PC寄存器。 堆: 堆用于存儲對象實例及數組值,可以認為Java中所有通過new創建的對象的內存都在此分配,Heap中對象所占用的內存由GC進行回收,在32位操作系統上最大為2GB,在64位操作系統上則沒有限制,其大小可通過-Xms和-Xmx來控制,-Xms為JVM啟動時申請的最小Heap內存,默認為物理內存的1/64但小于1GB;-Xmx為JVM可申請的最大Heap內存,默認為物理內存的1/4但小于1GB,默認當空余堆內存小于40%時,JVM會增大Heap到-Xmx指定的大小,可通過-XX:MinHeapFreeRatio=來指定這個比例;當空余堆內存大于70%時,JVM會減小Heap的大小到-Xms指定的大小,可通過-XX:MaxHeapFreeRatio=來指定這個比例,對于運行系統而言,為避免在運行時頻繁調整Heap 的大小,通常將-Xms和-Xmx的值設成一樣。 JVM方法棧: 為線程私有,其在內存分配上非常高效。當方法運行完畢時,其對應的棧幀所占用的內存也會自動釋放。當JVM方法棧空間不足時,會拋出StackOverflowError的錯誤,在Sun JDK中可以通過-Xss來指定其大小。 方法區: 要加載的類的信息(名稱、修飾符等)、類中的靜態變量、類中定義為final類型的常量、類中的Field信息、類中的方法信息。方法區域也是全局共享的,在一定條件下它也會被GC,當方法區域要使用的內存超過其允許的大小時,會拋出OutOfMemory的錯誤信息。在Sun JDK中這塊區域對應Permanet Generation,又稱為持久代,默認最小值為16MB,最大值為64MB,可通過-XX:PermSize及-XX:MaxPermSize來指定最小值和最大值。 本地方法棧: 用于支持native方法的執行,存儲了每個native方法調用的狀態。在Sun JDK的實現中,和JVM方法棧是同一個。 PC寄存器: 占用的可能為CPU寄存器或操作系統內存。 2.Java堆和棧的區別   Java把內存劃分成兩種:一種是棧內存,一種是堆內存。   在函數中定義的一些基本類型的變量和對象的引用變量都在函數的棧內存中分配。當在一段代碼塊定義一個變量時,Java就在棧中為這個變量分配內存空間,當超過變量的作用域后,Java會自動釋放掉為該變量所分配的內存空間,該內存空間可以立即被另作他用。   堆內存用來存放由new創建的對象和數組。在堆中分配的內存,由Java虛擬機的自動垃圾回收器來管理。在堆中產生了一個數組或對象后,還可以在棧中定義一個特殊的變量,讓棧中這個變量的取值等于數組或對象在堆內存中的首地址,在棧中的這個特殊的變量就變成了數組或者對象的引用變量,以后就可以在程序中使用棧內存中的引用變量來訪問堆中的數組或者對象,引用變量相當于為數組或者對象起的一個別名,或者代號。   引用變量是普通變量,定義時在棧中分配內存,引用變量在程序運行到作用域外釋放。而數組&對象本身在堆中分配,即使程序運行到使用new產生數組和對象的語句所在地代碼塊之外,數組和對象本身占用的堆內存也不會被釋放,數組和對象在沒有引用變量指向它的時候,才變成垃圾,不能再被使用,但是仍然占著內存,在隨后的一個不確定的時間被垃圾回收器釋放掉。這個也是java比較占內存的主要原因。但是在寫程序的時候,可以人為的控制。 3.Java內存泄露和內存溢出   內存泄漏:分配出去的內存回收不了   內存溢出:指系統內存不夠用了

    posted @ 2016-06-21 21:58 youngturk 閱讀(334) | 評論 (0)編輯 收藏

    java面試題:如何解決內存溢出

    http://zhidao.baidu.com/link?url=gQ4IAoIl07v0sxITrvasf8LwMwmFELou2d-6w11tqNHsNNdxQvDTg5f-EMlS0HSrAOG0mqw0DoBocICbuSfTvK 第一對所有的代碼包括頁面中的java代碼都進行一遍徹底的回顧檢查, 1.對那些靜態(static)的對象要特別留神,特別是類型為Map,List,Set的,靜態的變量會一直駐存在內存中,生命周期比較長,不會被垃圾器回收。 2.對于代碼,要審查是否生成了大量的冗余的對象,還有一些邏輯業務處理的類, 算法是否過于復雜,調整算法,對于代碼認真審查,再仔細重構一遍代碼,能提高代碼質量,提高程序運行穩定性。 3.Java中的內存溢出大都是因為棧中的變量太多了。其實內存有的是。建議不用的盡量設成null以便回收,多用局部變量,少用成員變量。 1),變量所包含的對象體積較大,占用內存較多。 2),變量所包含的對象生命周期較長。 3),變量所包含的對象數據穩定。 4),該類的對象實例有對該變量所包含的對象的共享需求。 4.在我的程序中對靜態變量的優化后,使程序占用內存量至少提升了5k-10k。所以也不容忽視。 第二還有就是String類相關的東西: 1.字符串累加的時候一定要用StringBuffer的append方法,不要使用+操作符連接兩個字符串。差別很大。而且在循環或某些重復執行的動作中不要去創建String對象,因為String對象是要用StringBuffer對象來處理的,一個String對象應該是產生了 3個對象(大概是這樣:))。 2.字符串length()方法來取得字符串長度的時候不要把length放到循環中,可以在循環外面對其取值。(包括vector的size方法)。特別是循環次數多的時候,盡量把length放到循環外面。 int size = xmlVector.size(); for (int i = 2; i < size; i++) { ... } 3 .寫代碼的時候處理內存溢出 try{ //do sth .... }catch (outofmemoryerror e){//可以用一個共通函數來執行. system.out.print (“no memory! ”); system.gc(); //do sth again .... }   4.對于頻繁申請內存和釋放內存的操作,還是自己控制一下比較好,但是System.gc()的方法不一定適用,最好使用finallize強制執行或者寫自己的finallize方法。 Java 中并不保證每次調用該方法就一定能夠啟動垃圾收集,它只不過會向JVM發出這樣一個申請,到底是否真正執行垃圾收集,一切都是個未知數。 1.優化程序2.改進算法3.增加jvm內存分配

    posted @ 2016-06-21 21:37 youngturk 閱讀(315) | 評論 (0)編輯 收藏

    jquery中ajax處理跨域的三大方式 ,jQuery學習之jQuery Ajax用法詳解

    http://www.jb51.net/article/77470.htm http://www.php100.com/html/program/jquery/2013/0905/6004.html

    posted @ 2016-06-20 23:10 youngturk 閱讀(154) | 評論 (0)編輯 收藏

    我的理解--關于jmx

    http://bhsc-happy.iteye.com/blog/678163
    http://www.cnblogs.com/Javame/p/3881187.html
    JMX Java Management Extensions,Java管理擴展,初步看了些資料,以為是專門管理,監控jvm的一些信息的,特別是visual VM這個監控jvm的東西,還有一個添加JMX連接的時候(我自己想錯了,那樣的話應該叫jvm Management Extensions),其實他能使得基于java語言開發的程序能被管理,并且是可擴展的。 Jdk以前是通過JVMPI之類來監測Java程序運行中的jvm和系統的一系列情況,現在通過jmx就可以做到,這是通過java.lang.management 包來實現的,這個包是 JMX 在 JDK方面 的一個應用,并不是表示jmx就是一個監控jvm的東西。 我們可以用jmx來監控我們的系統,通過公布API的方式,但是,這里采用監控這個詞,也是受了前面的例子的影響,實際上,個人覺得,就可以用jmx來開發我們的系統。 現在的jboss,hibernate,tomcat各種應用都號稱實現了JMX規范,將可管理,可調用的MBean注冊到MBeanServer中,通過一種類似“web服務”的方式公布出去,并且伴有一個名字,可以通過該名字找到該MBean。并且,這里的MBean是可以被管理的,說到這里又想到了OSGI。 JMX與Web Service 個人認為,我們實現JMX規范,將東西發布出去,和通過web Service的方式是很類似的,也是可以遠程調用的,只是相對的web Service的方式更加SOA一些,不過JMX號稱也要提供對非java客戶端的支持,也就是跨語言了吧。。。 現在的JMX連接方式: JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/server"); JMXConnector jmxc = JMXConnectorFactory.connect(url, null); 看了下源碼,貌似還是通過RMI來實現的,不知道它要怎么實現非java客戶端支持。 從這里,我覺得JMX可以實現的,我們也都可以通過web Service實現,只是看在它有個“M”上,以后如果有什么系統管理,監控方面的,可以考慮使用它,也許開發,個人覺得還是使用web service好一些。 說到這里,感覺OSGI與JMX也好像,在看到JMX能夠對MBean進行管理的時候,我就覺得跟OSGI很像,OSGI管理的是Bundle,找了找資源,原來早就有人考慮過了: http://teamojiao.iteye.com/blog/438334 順便,在查資料的時候,發現一個東西, if your question means, how to manage an OSGi runtime with JMX, you should have a look at MAEXO (http://code.google.com/p/maexo/). With MAEXO bundles up and running you will transparently get MBeans for a fair amount of services of the OSGi runtime as well as MBeans for your own services and bundles. Just have a look at the screencast. 摘一些話:僅做參考 <網友回復> 一個大系統中,各內部模塊系統之間的基于接口方式的互相調用和治理,使用jmx是最佳方案. 帶來的好處是 1.面向接口,遠程調用對于開發人員是透明的,模塊在調用jmx接口時,與調用本地方法幾乎相同. 2.可視化的治理界面, 通過 Jconsole等jmx客戶端,可以實時監控系統,并且可實時調用方法進行某些操作. 典型應用場景:  某聊天系統,一臺服務器作為 在線用戶列表服務器 A1, n臺服務器為用戶提供聊天業務處理 N1 ,N2,N3..., 一臺服務器作為后臺治理系統A2.  系統治理員現在進行下面這樣一個操作,察看某用戶是否在線,找到該用戶,發現其在線,則將該用戶加入黑名單,并踢下線. 對應的jmx接口可以由以下幾個:  A1為A2提供查詢在線用戶jmx接口,加入黑名單接口,kickout接口, A1為N1..等服務器提供以下接口: 注冊業務服務器,添加在線用戶.查找黑名單用戶 N1...到N3為A1提供kickout接口. 因此在上面的踢下線操作,則由用戶在A2的web界面發出,交由A1執行,A1記錄黑名單之后,再找到用戶所在業務服務器調用N1提供的接口讓用戶下線. 以上情形是在生產環境下的部署,而在開發工作,則可以將A1,A2,N...N3等功能合并在一個應用中調試. 由于使用的是jmx接口,在本地調試合并之后,可以直接調用應用內部接口方法. 這樣借助jmx實現的應用模塊的靈活組裝與拆分,使得系統的可以根據負載需要,根據性能情況,靈活的拆分和整合部署分布式的應用. 替代方案,選擇webservice,xmlrpc等,但是這些都需要手工編寫或用工具生成大量的代碼來輔助完成接口間的java對象序列化 。 經典jmx案例: 1.Jboss.使用jmx治理內部的各個service。 2. 基于java的開源網管軟件 Hyperic HQ ,通過jmx與各被治理資源進行通訊和信息采集. <網友回復>JMX是一個治理的框架。 當我們想使用JMX的時候,就要問,我們的系統當中有需要監控治理的資源或者對象嗎?實事求是一點,我們不能為了想使用一個高端的技術,就歪曲系統的本來面目。 假如第一個問題是肯定的,接下來就是看這些資源是否有生命周期。 經典案例:jboss就是將所有可部署的組件作為資源來治理,這些組建都有其生命周期。這個理念甚至延伸到了其系統內部,將其內部的服務作為組件納入到 JMX中來,成就了jboss基于jmx的微內核系統。

    posted @ 2016-06-20 09:40 youngturk 閱讀(155) | 評論 (0)編輯 收藏

    僅列出標題
    共33頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    公告

    this year :
    1 jQuery
    2 freemarker
    3 框架結構
    4 口語英語

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    EJB學習

    Flex學習

    learn English

    oracle

    spring MVC web service

    SQL

    Struts

    生活保健

    解析文件

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲xxxxxx| 中文字幕免费观看视频| 日本免费电影一区| 一级做a爱过程免费视频高清| 亚洲乱码无码永久不卡在线| 57pao一国产成视频永久免费 | 亚洲天堂一区在线| 国产青草视频在线观看免费影院| 国产日韩AV免费无码一区二区三区| 亚洲国产精品yw在线观看| 亚洲国产精品碰碰| 97在线观免费视频观看| 国产精品免费久久久久影院| 亚洲一区二区三区播放在线| 亚洲人成网站在线观看青青| 免费成人福利视频| 人人爽人人爽人人片A免费| 亚洲综合图片小说区热久久| 亚洲男人在线无码视频| 国产h视频在线观看免费| 美女无遮挡拍拍拍免费视频| 2019亚洲午夜无码天堂| 亚洲爆乳无码一区二区三区| 免费国产不卡午夜福在线| 最近中文字幕免费2019| 一级一级一级毛片免费毛片| 亚洲不卡在线观看| 亚洲AV人无码综合在线观看| 免费va在线观看| 国产在线国偷精品产拍免费| 免费成人在线电影| 一级毛片成人免费看a| 亚洲国产视频久久| 亚洲美女免费视频| 精品国产综合成人亚洲区| 免费a级黄色毛片| 久久久久免费看黄A片APP | 亚洲视频在线免费| 国产三级免费电影| 成人毛片视频免费网站观看| 最近免费2019中文字幕大全|