锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲人色婷婷成人网站在线观看,水蜜桃亚洲一二三四在线,亚洲综合成人婷婷五月网址http://m.tkk7.com/Blake/category/1582.htmlJava Toxication!zh-cnWed, 07 Mar 2007 11:38:43 GMTWed, 07 Mar 2007 11:38:43 GMT60Language Oriented Programming 闈㈠悜璇█緙栫▼http://m.tkk7.com/Blake/archive/2005/06/17/6285.htmlBlake HANBlake HANFri, 17 Jun 2005 05:31:00 GMThttp://m.tkk7.com/Blake/archive/2005/06/17/6285.htmlhttp://m.tkk7.com/Blake/comments/6285.htmlhttp://m.tkk7.com/Blake/archive/2005/06/17/6285.html#Feedback0http://m.tkk7.com/Blake/comments/commentRss/6285.htmlhttp://m.tkk7.com/Blake/services/trackbacks/6285.html浣犺繕鍦ㄤ嬌鐢↗ava鍚楋紵榪樺湪鐮旂┒.Net鍚楋紵鍦ㄤ綘蹇欎簬姝ょ殑鏃跺欙紝涓縐嶆柊鐨勬妧鏈張璇炵敓浜?jiǎn)锛屽畬鍏ㄦ墦鐮翠簡(jiǎn)浼牼l熺紪紼嬬殑鏍煎眬銆傝繖灝辨槸LOP(Language Oriented Programming)銆傝繖欏規(guī)妧鏈槸鐢?A >JetBrains鐨凜EO Sergey Dmitive鎻愬嚭鐨勩備粬璁や負(fù)鐜板湪鐨勭紪紼嬫ā寮忚繕鍋滅暀鍦ㄧ煶鍣ㄦ椂浠o紝OO鍙槸鎴戜滑鐨勭煶鏂э紝鎻愪緵緇欐垜浠凍澶熺殑甯姪錛屼絾鏄粬灝嗕細(xì)鍦ㄦ渶鍥伴毦鐨勯棶棰橀潰鍓嶅湡宕╃摝瑙c備簬鏄紝浠栦究鎻愬嚭浜?jiǎn)浼熷ぇ鐨凩OP銆?BR>LOP鏀懼純浜?jiǎn)浼牼l熺殑鍩轟簬鏂囨湰鐨勮璦錛岀敤鍒涢犳柊鐨勮璦鏉ヤ唬鏇跨被搴擄紝鍙互鍜岀紪杈戝櫒鎵鏁村悎錛屽茍涓旀瘡涓▼搴忓憳閮藉彲浠ュ垱閫犺嚜宸辯殑璇█銆?BR>涔熻浣犲LOP騫朵笉灞戜竴欏撅紝浣嗚憲鍚嶇殑Martin Flower鍗村姝らザ鏈夊叴瓚o紝騫跺啓浜?A >Language Workbenches鍜?A >A Language Workbench in Action - MPS涓ら儴钁椾綔銆?BR>浠婂ぉ錛孞etBrain緇堜簬鍙戝竷浜?jiǎn)鏀寔LOP鐨?A >IDEA鎻掍歡MPS(Meta Programming System) download銆傝櫧鐒惰繖鍙槸涓涓師褰紝浣嗙粰浜虹殑鎰熻鍗存槸闈炲父闇囨捈鐨勩?A >榪欓噷鏄竴涓狧ello World鐨勬暀紼嬨?BR>浠婂悗杞歡琛屼笟灝嗕細(xì)濡備綍錛熶粈涔堟墠鏄湭鏉ョ殑瓚嬪娍錛熷湪鏈潵鐨?騫撮噷鎴戜滑浼?xì)鐢╨anguage workbenches緙栫▼鍚楋紵
Let's go and see.

Technorati Tags: Ping Technorati



Blake HAN 2005-06-17 13:31 鍙戣〃璇勮
]]>
AjaxFaces 1.0 releasedhttp://m.tkk7.com/Blake/archive/2005/06/06/5634.htmlBlake HANBlake HANMon, 06 Jun 2005 13:59:00 GMThttp://m.tkk7.com/Blake/archive/2005/06/06/5634.htmlhttp://m.tkk7.com/Blake/comments/5634.htmlhttp://m.tkk7.com/Blake/archive/2005/06/06/5634.html#Feedback0http://m.tkk7.com/Blake/comments/commentRss/5634.htmlhttp://m.tkk7.com/Blake/services/trackbacks/5634.htmlCyberXP.NET has released AjaxFaces, an easy, general and complete integration solution for JavaServer Faces and Ajax. This solution makes any JavaServer Faces UI component Ajaxable: either trigger Ajax process or change user interface using the output from Ajax process.

The CyberXP.NET AjaxFaces Components also provide various user-interface components with built-in functionality - such as trees, and calendars - that can be customized and re-used in your application. Some of these components have built-in Ajax functionality.

A fully functional evaluation version of AjaxFaces 1.0 is available for
download.

Technorati Tags: | Ping Technorati



Blake HAN 2005-06-06 21:59 鍙戣〃璇勮
]]>
Core Java Interview Questionshttp://m.tkk7.com/Blake/archive/2005/06/06/5629.htmlBlake HANBlake HANMon, 06 Jun 2005 12:06:00 GMThttp://m.tkk7.com/Blake/archive/2005/06/06/5629.htmlhttp://m.tkk7.com/Blake/comments/5629.htmlhttp://m.tkk7.com/Blake/archive/2005/06/06/5629.html#Feedback1http://m.tkk7.com/Blake/comments/commentRss/5629.htmlhttp://m.tkk7.com/Blake/services/trackbacks/5629.html30 Java Interview Questions

*Q1. How could Java classes direct program messages to the system console, but error messages, say to a file? (鎬庢牱鏀瑰彉Java紼嬪簭鐨勬爣鍑嗚緭鍑?guó)櫨撳嚭鍒颁竴涓枃浠訛紝鑰屼笉鏄痗onsole)

A. The class System has a variable out that represents the standard output, and the variable err that represents the standard error device. By default, they both point at the system console. This how the standard output could be re-directed:
Stream st = new Stream(new FileOutputStream("output.txt")); System.setErr(st); System.setOut(st);
 

*Q2. What's the difference between an interface and an abstract class?(Interface鍜屾娊璞$被鐨勫尯鍒傝佺敓甯歌皥鐨勯棶棰樹簡(jiǎn)鈥︹?IMG height=19 src="http://m.tkk7.com/Emoticons/77_77.gif" width=19 border=0>)

A. An abstract class may contain code in method bodies, which is not allowed in an interface. With abstract classes, you have to inherit your class from it and Java does not allow multiple inheritance. On the other hand, you can implement multiple interfaces in your class.
 

*Q3. Why would you use a synchronized block vs. synchronized method?(浠涔堟椂鍊欎綘浼?xì)鐢╯ynchronized 鏂規(guī)硶錛熶粈涔堟椂鍊欎細(xì)鐢╯ynchronized 鍧?IMG height=19 src="http://m.tkk7.com/Emoticons/77_77.gif" width=19 border=0>)

A. Synchronized blocks place locks for shorter periods than synchronized methods.
 

*Q4. Explain the usage of the keyword transient?(璋堜竴涓嬪叧閿瓧transient鐨勪綔鐢?IMG height=19 src="http://m.tkk7.com/Emoticons/77_77.gif" width=19 border=0>)

A. This keyword indicates that the value of this member variable does not have to be serialized with the object. When the class will be de-serialized, this variable will be initialized with a default value of its data type (i.e. zero for integers).


*Q5. How can you force garbage collection?(浣犺兘寮哄埗鎵ц鍨冨溇鍥炴敹鍚楋紵)

A. You can't force GC, but could request it by calling System.gc(). JVM does not guarantee that GC will be started immediately.
 

*Q6. How do you know if an explicit object casting is needed?(浠涔堟椂鍊欒鍋氬己鍒剁被鍨嬭漿鎹紵)

A. If you assign a superclass object to a variable of a subclass's data type, you need to do explicit casting. For example:
Object a; Customer b; b = (Customer) a;

When you assign a subclass to a variable having a supeclass type, the casting is performed automatically.
 

*Q7. What's the difference between the methods sleep() and wait() (sleep() 鍜?wait() 鐨勫尯鍒?IMG height=19 src="http://m.tkk7.com/Emoticons/77_77.gif" width=19 border=0>)

A. The code sleep(1000); puts thread aside for exactly one second. The code wait(1000), causes a wait of up to one second. A thread could stop waiting earlier if it receives the notify() or notifyAll() call. The method wait() is defined in the class Object and the method sleep() is defined in the class Thread.
 

*Q8. Can you write a Java class that could be used both as an applet as well as an application? (浣犺兘鍐欎竴涓▼搴忓嵆浣滀負(fù)Applet鍙堜綔涓篈pplication鍚楋紵 鈥斺旂粡甯稿共鐨?IMG height=19 src="http://m.tkk7.com/Emoticons/QQ/22.gif" width=19 border=0>)

A. Yes. Add a main() method to the applet.
 

*Q9. What's the difference between constructors and other methods? (鏋勯犲嚱鏁板拰鍏朵粬鐨勬柟娉曟湁浠涔堝尯鍒?IMG height=19 src="http://m.tkk7.com/Emoticons/77_77.gif" width=19 border=0>)

A. Constructors must have the same name as the class and can not return a value. They are only called once while regular methods could be called many times.
 

*Q10. Can you call one constructor from another if a class has multiple constructors (鍦ㄥ彟澶栦竴涓瀯閫犲嚱鏁伴噷鎬庝箞璋冨叾浠栫殑鏋勯犲嚱鏁?IMG height=19 src="http://m.tkk7.com/Emoticons/77_77.gif" width=19 border=0>)

A. Yes. Use this() syntax.
 

*Q11. Explain the usage of Java packages.(璇磋Package鐨勭敤澶?IMG height=19 src="http://m.tkk7.com/Emoticons/77_77.gif" width=19 border=0>)

A. This is a way to organize files when a project consists of multiple modules. It also helps resolve naming conflicts when different packages have classes with the same names. Packages access level also allows you to protect data from being used by the non-authorized classes.
 

*Q12. If a class is located in a package, what do you need to change in the OS environment to be able to use it?

A. You need to add a directory or a jar file that contains the package directories to the CLASSPATH environment variable. Let's say a class Employee belongs to a package com.xyz.hr; and is located in the file c:\dev\com\xyz\hr\Employee.java. In this case, you'd need to add c:\dev to the variable CLASSPATH. If this class contains the method main(), you could test it from a command prompt window as follows:
c:\>java com.xyz.hr.Employee
 

*Q13. What's the difference between J2SDK 1.5 and J2SDK 5.0? (J2SDK 1.5 鍜?J2SDK 5.0 鏈変粈涔堝尯鍒?IMG height=19 src="http://m.tkk7.com/Emoticons/75_75.gif" width=19 border=0>)

A.There's no difference, Sun Microsystems just re-branded this version.


*Q14. What would you use to compare two String variables - the operator == or the method equals()? (姣旇緝涓や釜String鐨勬椂鍊欑敤==榪樻槸equals()鏂規(guī)硶)
 

A. I'd use the method equals() to compare the values of the Strings and the == to check if two variables point at the same instance of a String object.


*Q15. Does it matter in what order catch statements for FileNotFoundException and IOExceptipon are written?(濡傛灉鍚屾椂鎹曟崏FileNotFoundException 鍜孖OExceptipon catch鍐欑殑欏哄簭闇瑕佹敞鎰忓悧)

A. Yes, it does. The FileNoFoundException is inherited from the IOException. Exception's subclasses have to be caught first.
 

*Q16. Can an inner class declared inside of a method access local variables of this method?

A. It's possible if these variables are final.
 

*Q17. What can go wrong if you replace && with & in the following code: (濡傛灉涓嶅皬蹇?jī)鐢?amp;浠f浛浜?amp;&涓嬮潰榪欏彞璇濅細(xì)鎬庝箞鏍?IMG height=20 src="http://m.tkk7.com/Emoticons/QQ/25.gif" width=20 border=0>)
String a=null; if (a!=null && a.length()>10) {...}
A. A single ampersand here would lead to a NullPointerException.
 

*Q18. What's the main difference between a Vector and an ArrayList (Vector鍜孉rrayList鐨勪富瑕佸尯鍒?IMG height=19 src="http://m.tkk7.com/Emoticons/77_77.gif" width=19 border=0>)

A. Java Vector class is internally synchronized and ArrayList is not.
 


*Q19. When should the method invokeLater()be used? (invokeLater()浠涔堟儏鍐典笅浼?xì)琚敤鍒板Q?IMG height=20 src="http://m.tkk7.com/Emoticons/QQ/21.gif" width=20 border=0>閲嶆潵娌℃湁鐢ㄥ埌榪団︹?

A. This method is used to ensure that Swing components are updated through the event-dispatching thread.


*Q20. How can a subclass call a method or a constructor defined in a superclass? (瀛愮被鎬庝箞璋冪敤鐖剁被鐨勬柟娉?IMG height=19 src="http://m.tkk7.com/Emoticons/77_77.gif" width=19 border=0>)

A. Use the following syntax: super.myMethod(); To call a constructor of the superclass, just write super(); in the first line of the subclass's constructor.
 

For senior-level developers:


**Q21. What's the difference between a queue and a stack? (闃熷垪鍜屽爢鏍堟湁浠涔堝尯鍒?IMG height=19 src="http://m.tkk7.com/Emoticons/77_77.gif" width=19 border=0>瀛﹁繃鏁版嵁緇撴瀯鐨勯兘搴旇鐭ラ亾鈥︹?

A. Stacks works by last-in-first-out rule (LIFO), while queues use the FIFO rule
 

**Q22. You can create an abstract class that contains only abstract methods. On the other hand, you can create an interface that declares the same methods. So can you use abstract classes instead of interfaces? (鍙堟槸鎶借薄綾誨拰Interface鐨勯棶棰?IMG height=19 src="http://m.tkk7.com/Emoticons/77_77.gif" width=19 border=0>)

A. Sometimes. But your class may be a descendent of another class and in this case the interface is your only option.
 

**Q23. What comes to mind when you hear about a young generation in Java? (榪欑闂涔熸嬁鏉ラ潰璇?IMG height=20 src="http://m.tkk7.com/Emoticons/QQ/20.gif" width=20 border=0>)

A. Garbage collection.
 

**Q24. What comes to mind when someone mentions a shallow copy in Java? (褰撴彁鍒版祬鎷瘋礉鐨勬椂鍊欙紝浣犱細(xì)鎯沖埌浠涔?IMG height=19 src="http://m.tkk7.com/Emoticons/77_77.gif" width=19 border=0>)

A. Object cloning.
 

**Q25. If you're overriding the method equals() of an object, which other method you might also consider? (鍦ㄤ綘閲嶅啓equals鏂規(guī)硶鐨勬椂鍊欙紝浣犺繕浼?xì)鎯冲埌閲嶅啓浠涔堟柟娉?IMG height=19 src="http://m.tkk7.com/Emoticons/77_77.gif" width=19 border=0>)

A. hashCode()
 

**Q26. You are planning to do an indexed search in a list of objects. Which of the two Java collections should you use:
ArrayList or LinkedList? (浣犳墦綆楀涓浜汷bject榪涜绱㈠紩鎼滅儲(chǔ)錛屼綘浼?xì)鐢ˋrrayList榪樻槸LinkedList)

A. ArrayList
 

**Q27. How would you make a copy of an entire Java object with its state? (鎬庢牱鎵嶈兘鍏嬮殕涓涓狫ava瀵硅薄)

A. Have this class implement Cloneable interface and call its method clone().
 

**Q28. How can you minimize the need of garbage collection and make the memory use more effective? (鎬庢牱鎵嶈兘闇瑕佹渶灝戠殑GC浠ュ強(qiáng)鏈澶ф晥鐜囩殑浣跨敤鍐呭瓨)

A. Use object pooling and weak object references.
 
 
**Q29. There are two classes: A and B. The class B need to inform a class A when some important event has happened. What Java technique would you use to implement it? (class A 瑕侀氱煡 class B錛?浣犲簲璇ユ庝箞鍋氾紵)

A. If these classes are threads I'd consider notify() or notifyAll(). For regular classes you can use the Observer interface.
 

*Q30. What access level do you need to specify in the class declaration to ensure that only classes from the same directory can access it? (鎬庢牱瀹氫箟default鐨勮闂駭鍒?IMG height=19 src="http://m.tkk7.com/Emoticons/77_77.gif" width=19 border=0>)

A. You do not need to specify any access level, and Java will use a default package access level.

鎬葷殑鏉ヨ鑰佸鐨凧ava闈㈣瘯浣撳お綆鍗曚簡(jiǎn)鈥︹﹁浜烘槒鏄忔鐫″晩鈥︹?IMG height=19 src="http://m.tkk7.com/Emoticons/77_77.gif" width=19 border=0>

Technorati Tags: | Ping Technorati



Blake HAN 2005-06-06 20:06 鍙戣〃璇勮
]]>
JDK5.0鏃朵唬鐨?XDoclet" for Hibernatehttp://m.tkk7.com/Blake/archive/2005/06/06/5606.htmlBlake HANBlake HANMon, 06 Jun 2005 07:15:00 GMThttp://m.tkk7.com/Blake/archive/2005/06/06/5606.htmlhttp://m.tkk7.com/Blake/comments/5606.htmlhttp://m.tkk7.com/Blake/archive/2005/06/06/5606.html#Feedback0http://m.tkk7.com/Blake/comments/commentRss/5606.htmlhttp://m.tkk7.com/Blake/services/trackbacks/5606.htmlJDK5.0鏈変簡(jiǎn)涓涓柊鐗規(guī)э細(xì)Annotation. 閫氳繃Annotation錛屾垜浠氨鍙互鍦ㄨ繍琛屾椂璇誨彇浠g爜涓殑娉ㄨВ錛屾垨鑰呴氳繃榪欎簺Annotation鍔ㄦ佺敓鎴怌ode銆傚湪JDK5.0涔嬪墠寰堝宸ュ叿閮芥槸閫氳繃JavaDoc鏉ュ疄鐜扮被浼肩殑鍔熻兘鐨勩傚錛歑Doclet銆?BR>闅忕潃JDK5.0鐨勮癁鐢燂紝XDoclet涔熷皢闈復(fù)鐨勯噸澶х殑鏀瑰彉銆傛洿澶氱殑宸ュ叿浼?xì)鋴社?/FONT>Annotation鏉ヤ唬鏇縅avaDoc銆傝繖灝辨槸Hibernate Annotator (H8A8) (download)璇炵敓鐨勫師鍥犱簡(jiǎn)銆?BR>涓嬮潰璁╂垜浠潵璁よ瘑涓涓婬8A8錛?BR>
  • H8A8鍙互閫氳繃class涓殑Annotation鏉ョ敓鎴怘ibernate Mapping銆?
  • H8A8鏄?A >XDoclet for Hibernate鐨勫彟涓涓唬鏇垮搧錛堥拡瀵笻ibernate 3 鍜?JDK5.0錛夈?
  • H8A8鏄?A >Hibernate Annotations鐨勫彟涓涓唬鏇垮搧銆傦紙Hibernate Annotations閲囩敤浜?A >EJB3.0鐨凙nnotation瑙勮寖錛屼絾鏄笉鏀寔鎵鏈夌殑Hibernate鐗規(guī)с傦級(jí)
  • H8A8鍑犱箮鏀寔鐢↗ava Annotation鏉ョ敓鎴愭墍鏈塇ibernate Mapping閲岀殑灞炴с?/FONT>

涓嬮潰鏄竴涓畝鍗曠殑渚嬪瓙錛?BR>Java Code錛?/EM>
h8a8_codesample.JPG

Hibernate Mapping鏂囦歡錛?/EM>
h8a8_xmlsample.JPG

Technorati Tags: | Ping Technorati



Blake HAN 2005-06-06 15:15 鍙戣〃璇勮
]]>
Code Cleaninghttp://m.tkk7.com/Blake/archive/2005/06/06/5602.htmlBlake HANBlake HANMon, 06 Jun 2005 05:40:00 GMThttp://m.tkk7.com/Blake/archive/2005/06/06/5602.htmlhttp://m.tkk7.com/Blake/comments/5602.htmlhttp://m.tkk7.com/Blake/archive/2005/06/06/5602.html#Feedback0http://m.tkk7.com/Blake/comments/commentRss/5602.htmlhttp://m.tkk7.com/Blake/services/trackbacks/5602.htmlWhipping inherited code into shape

When I receive code, and before adding anything new to it, I always spend a little time (1 hour, 1 day) on "preparing" the code for the later modifications. This preparation is made in 2 steps:

  • code cleaning
  • code clarifying

Once I've done that, I understand the code/project better, and I can start adding tests, and functionalities.

Note: all the actions below are possible thanks to modern tools, and 100% safe refactorings => no need to write tests first.

Code cleaning : First, I run a quick and fully automated analysis of the code, with just a few rules:

  • remove dead code (classes, methods).
  • remove unused method parameters, variables
  • remove useless variable initialisation
  • remove useless Casting
  • tighten visibility (public => private)
  • move tests code to a separate code tree
  • modernize (Java1.4 => Java5)

Second: amongst the hundreds of inspections rules offered by IDEA, a few dozens will spot oddities and probable bugs in the code (like modifying the contents of a collection passed as parameter, etc..). In those "hot" locations, I add a "todo: check", or "todo: modernize" tag, for later review.

Code clarifying : I examine the code structure, starting with the 2-mile high view of the project, and going down. Along the way, I would perform :

  • rename : (package, class, method, parameter
  • move : package, classes, methods, ...
  • extract/inline method
  • introduce variable

Note: As this has to be fast, I only "cure" the worst problems. I tag the others for later reviews: "to optimize", "to betterize", "to fix", "danger", etc..


Some advice from Rod:

Help! API Overload

Today, there are many API and technology choices for most problems in J2EE.

Even Sun now seems to be at the point where pulling it all together is so complex that we're seeing significant duplication of effort. For example, JDO and EJB 2.0 entity beans with CMP seem to overlap significantly.

Ultimately, we all pay for duplication of effort in increased effort and decreased quality. At least we can do our utmost to control it within our organization. I believe that code reuse impossible, and we should do our best to achieve it.

There are many ways to avoid duplication of effort and leverage existing code. I suggest the following practices as a starting point:

  • Adopt existing frameworks where possible. For example, use a standard logging framework and an existing framework for web applications. However, don't force developers to use organization-wide standard frameworks if it seems that they're not proving a good fit to the problem in hand. Where multiple alternative frameworks exist, survey the options. Don't automatically assume that the first product you look at, or the most popular, will best meet your needs.

  • Have zero tolerance for code duplication. This indicates the need for generalization: try to avoid code duplication in the first place, but refactor it out of the way as soon as it appears.

  • Ensure good communication amongst developers. For example, have developers give presentations on modules they've recently completed, so that other developers know what common needs are emerging or have already been met. Encourage developers to encourage other developers to use the infrastructure components they've implemented.

  • Develop and maintain some simple infrastructure packages that implement functionality that's widely used. Document them well and ensure that all developers are aware of them.

  • Adopt standard architectural patterns, even where it's not possible to share code. It's much easier to avoid duplication of effort when working with familiar patterns.

  • Use code reviews. This not only helps to boost quality, but also spurs communication within a team.

Technorati Tags: Ping Technorati



Blake HAN 2005-06-06 13:40 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 亚洲欧洲精品成人久久曰| 99re这里有免费视频精品| 亚洲第一永久在线观看| 亚洲国产成人精品无码久久久久久综合| 无码人妻精品中文字幕免费| 免费无毒a网站在线观看| 最新亚洲卡一卡二卡三新区| 久久精品国产精品亚洲毛片| 亚洲精品无码成人片在线观看| 成人在线免费观看| 91免费在线播放| 久久精品成人免费网站| 一级毛片免费播放视频| 亚洲av午夜国产精品无码中文字| 亚洲一级在线观看| 99久久精品国产亚洲| 亚洲高清在线播放| 亚洲国产精品成人精品无码区| 伊人久久精品亚洲午夜| 亚洲国产成人久久笫一页| 国产精品麻豆免费版| 四虎影视大全免费入口| 最新中文字幕电影免费观看| 国产妇乱子伦视频免费| 久久免费看黄a级毛片 | 免费影院未满十八勿进网站| 玖玖在线免费视频| 久热免费在线视频| 久操免费在线观看| 99久久人妻精品免费一区| 国产成人精品免费久久久久| 久久国产乱子伦精品免费一| 日本免费一区二区三区四区五六区| 精品亚洲永久免费精品| 在线成人精品国产区免费| 四虎影视成人永久免费观看视频 | 亚洲中文字幕在线观看| 国产亚洲精品不卡在线| 不卡精品国产_亚洲人成在线| 国产午夜亚洲不卡| 久久久久久亚洲av成人无码国产|