คำถามติดแท็ก java

Java เป็นภาษาการเขียนโปรแกรมเชิงวัตถุในระดับสูงที่พัฒนาโดย Sun Microsystems ปัจจุบัน Java เป็นเจ้าของโดย Oracle ซึ่งซื้อ Sun ในปี 2010

4
รายการอินเตอร์เฟสเป็นสิ่งที่เป็นนามธรรมหรือไม่?
ถ้าผมมีตัวแปรที่มีListมันอาจจะมีวัตถุจำนวนมากที่แตกต่างกันเช่นหรือArrayList LinkedListความแตกต่างระหว่าง a LinkedListและa ArrayListนั้นค่อนข้างใหญ่ พฤติกรรม O ใหญ่ของวิธีการนั้นแตกต่างกันอย่างมาก ยกตัวอย่างเช่นการเรียงลำดับListแล้วใช้มันเพื่อทำการค้นหาไบนารีเป็นอย่างดี ok สำหรับแต่จะไม่ทำให้รู้สึกด้วยArrayListLinkedList

4
การติดตามวัตถุทั้งหมดของชั้นเรียน
ฉันใหม่สำหรับการเขียนโปรแกรมเชิงวัตถุและฉันยังคงพบปัญหานี้ (ฉันเขียนโปรแกรมใน Java) ฉันลังเลที่จะถามเกี่ยวกับเรื่องนี้เพราะมันดูเหมือนว่าเป็นปัญหาพื้นฐาน แต่ฉันไม่สามารถหาข้อมูลใด ๆ เกี่ยวกับมันหรือคำถามเกี่ยวกับที่นี่และไม่มี ตำราที่ฉันได้อ่าน (ในระดับพื้นฐานค่อนข้างแน่นอน) ได้สัมผัสกับปัญหานี้: บ่อยครั้งที่ฉันต้องติดตามวัตถุทั้งหมดของชั้นเรียนที่สร้างขึ้นเพื่อย้ำผ่านวัตถุเหล่านั้นเพื่อจุดประสงค์ที่หลากหลาย ซึ่งเป็นวิธีที่ฉันกำลังเขียนโปรแกรมวัตถุจำนวนมากมีการอ้างอิงจากวัตถุอื่นเท่านั้นซึ่งหมายความว่าฉันไม่มีอาร์เรย์หรือชุดสะสมที่จะอ้างอิงพวกเขาทั้งหมด ฉันคิดว่าเนื่องจากสิ่งนี้ดูเหมือนจะเป็นความจำเป็นพื้นฐานใน OOP ควรมีวิธีการที่เป็นระบบค่อนข้างง่ายและเป็นไปได้ไหม เป็นเรื่องปกติหรือไม่ที่จะเก็บรายการสิ่งของทั้งหมดของชั้นเรียน ฉันคิดเกี่ยวกับอาร์เรย์หรือคอลเลกชันแบบคงที่ซึ่งคอนสตรัคเตอร์ของมันวัตถุใหม่ที่สร้างขึ้นจะถูกเพิ่มเข้าไป อย่างไรก็ตามสิ่งนี้จะไม่ทำงานกับคลาสย่อยเนื่องจากตัวสร้างจะไม่สืบทอด ฉันรู้ว่าคำถามนี้อาจไม่มีคำตอบง่ายๆ ฉันแค่หวังว่าใครบางคนสามารถสอนฉันในเรื่องนี้ได้บ้าง ฉันรู้สึกเหมือนว่าฉันขาดความรู้ที่เป็นศูนย์กลางที่นี่

4
Spring - ความสับสนเกี่ยวกับการตั้งค่า?
ที่ไหนสักแห่งที่ฉันอ่านสปริงให้ความสะดวกสบายมากกว่าการตั้งค่า แต่คนในฤดูใบไม้ผลิกำลังนำการเปลี่ยนแปลงมามากมายในการกำหนดค่าซึ่งตอนนี้ฉันเริ่มสับสนแล้วที่จะใช้การกำหนดค่า xml หรือคำอธิบายประกอบ ฉันต้องการให้ทุกคนแนะนำวิธีการ Surefire หรือกฎง่ายๆในการใช้ xml และคำอธิบายประกอบ ตัวอย่างที่ SO เพื่อแสดงว่าผู้เริ่มต้นอย่างฉันเริ่มสับสนกับการกำหนดค่า การเชื่อมโยง-1 ฉันดูเหมือนจะไม่เข้าใจที่อยู่เบื้องหลังการทำงานและ<context:annotation-config><context:component-scan> จากสิ่งที่ฉันได้อ่านพวกเขาดูเหมือนจะจัดการกับคำอธิบายประกอบต่าง ๆ (@Required, @Autowired etc vs @Component, @Repository, @Service ฯลฯ ) แต่จากสิ่งที่ฉันได้อ่านพวกเขาลงทะเบียนคลาสตัวประมวลผล bean โพสต์เดียวกัน เพื่อสร้างความสับสนให้ฉันยิ่งขึ้นมีannotation-configแอตทริบิวต์ใน<context:component-scan>... ลิงค์ 2 ฉันยังมีแท็กสแกนองค์ประกอบ: <context:component-scan base-package="com.mycompany.maventestwebapp" /> แต่ฉันมีแท็กอื่น (ที่ดูเหมือนว่ามีงานที่คล้ายกัน) อันนี้: <annotation-driven /> ความแตกต่างระหว่างสองแท็กเหล่านี้คืออะไร อีกสิ่งที่ "แปลก" คือตัวอย่างก่อนหน้านี้ (ที่ไม่ได้ใช้แท็กคำอธิบายประกอบ) คล้ายกับโครงการสร้างโดย STS โดยใช้โครงการ Spring MVC …
9 java  spring 

4
รูปแบบการเขียนโปรแกรมใน Perl
ฉันทำงานใน Java ดังนั้นโดยทั่วไปฉันใช้กระบวนทัศน์ OOP ในระหว่างการเข้ารหัส ฉันกำลังจะเริ่มทำงานใน Perl และฉันสงสัยว่ากระบวนทัศน์ที่นักพัฒนา Perl ติดตามคืออะไร ในวิกินั้นกล่าวว่ามันสนับสนุนกระบวนทัศน์จำนวนมาก แต่ฉันไม่แน่ใจว่าฉันเข้าใจสิ่งนี้เพราะเป็นภาษาสคริปต์ ดังนั้นคำถามของฉันคือ: รูปแบบเชิงวัตถุที่ฉันคุ้นเคยใน Java idiomatic ใน Perl หรือฉันจะต้องเปลี่ยนสไตล์การออกแบบของฉันเพื่อเขียน Perl ที่มีประสิทธิภาพหรือไม่ หมายเหตุ: นี่ไม่ใช่คำถามที่จะวิจารณ์ Perl จริง ๆ แล้วฉันต้องทำงานใน Perl และต้องการที่จะเข้าใจวิธีการที่โปรแกรมปัจจุบันของฉันจะเปลี่ยนแปลง

8
ที่ผ่านมาถ้างบอาร์เรย์ลูป ... ตอนนี้อะไร
ฉันเลิกเขียนโปรแกรมเมื่อประมาณหนึ่งปีที่แล้วตอนที่ฉันกดปุ่มกำแพงนี้ต่อไป ฉันกำลังทบทวนหัวข้อนี้เพราะฉันต้องการสร้างแอปพลิเคชัน Android ขั้นพื้นฐาน แต่ฉันรู้สึกว่าความรู้ที่ จำกัด ของฉันจะไม่เพียงพอ นี่คือปัญหาของฉัน ฉันได้อ่านหนังสือสองสามเล่มและดูวิดีโอการสอนบน C # / Java แล้วทำตามตัวอย่างจากนั้นก็อ่านหนังสือจนจบ ในท้ายที่สุดพวกเขาดูเหมือนจะทิ้งฉันไปตะลึงกับสิ่งที่ต้องทำต่อไป หมายความว่าอย่างไรพวกเขาสอนคุณจากแอปพลิเคชัน "สวัสดีโลก" พื้นฐานของคุณไปจนถึงถ้าและอาร์เรย์นั้นดูเหมือนว่าคุณคาดหวังว่าคุณจะรู้วิธีที่จะออกไปสู่โลกแห่งการเข้ารหัสและสร้างอะไร ฉันทำอะไรบางอย่างหายไปหรือเปล่า ฉันรู้ว่าสิ่งเหล่านี้เป็นองค์ประกอบสำคัญของโปรแกรมทั้งหมด แต่หนังสือที่ฉันอ่านไม่เคยแสดงให้ฉันเห็นว่าต้องทำอะไรต่อไป คำตอบง่ายๆที่ฉันคิดว่าน่าจะเป็น 'เริ่มการเข้ารหัส' แต่ที่ไหน ฉันอ่าน "Head First Java" เป็นตัวอย่าง พวกเขาบอกว่าคุณทำทุกอย่างที่เรียนรู้และสร้างเกมแข่งสุนัข "พยายามที่จะไม่โกงและดูซอร์สโค้ดที่ให้ไว้คุณควรจะทำสิ่งนี้ได้ในตอนนี้" _ นั่นไม่ใช่คำพูดที่แน่นอน แต่โดยทั่วไปนั่นคือสิ่งที่ฉันบอก ....... ครึ่งชั่วโมงที่ผ่านมาพวกเขาแค่อธิบายถึงวิธีการทำอาร์เรย์แล้วถ้าไม่มีทฤษฎีใดที่ฉันตั้งใจจะสร้างเกมที่ใช้งานได้ เหตุผลที่ฉันถามสิ่งนี้เพราะฉันกลัวว่านี่คือทั้งหมดที่ฉันควรรู้อย่างน้อยก็เริ่มเขียนโค้ด แต่มันรู้สึกเหมือนฉันได้รับกล่องเครื่องมือขนาดเล็กและถูกสั่งให้สร้างตึกระฟ้า ขอบคุณสำหรับคำแนะนำใด ๆ

5
ข้อยกเว้น“ ข้อผิดพลาดในการเขียนโปรแกรม” - แนวทางของฉันมีเสียงดีหรือไม่?
ขณะนี้ฉันพยายามปรับปรุงการใช้งานข้อยกเว้นและพบความแตกต่างที่สำคัญระหว่างข้อยกเว้นที่บ่งบอกถึงข้อผิดพลาดในการเขียนโปรแกรม (เช่นบางคนผ่านการพิสูจน์ว่าเป็นโมฆะหรือเรียกวิธีการบนวัตถุหลังจากถูกกำจัด) และสิ่งที่แสดงถึงความล้มเหลวใน การดำเนินการที่ไม่ใช่ความผิดของผู้โทร (เช่นข้อยกเว้น I / O) ข้อยกเว้นสองชนิดนี้ควรได้รับการปฏิบัติแตกต่างกันอย่างไร คุณคิดว่าต้องมีการบันทึกข้อผิดพลาดอย่างชัดเจนหรือไม่เพียงพอที่จะบันทึกปัจจัยที่เกี่ยวข้องหรือไม่ และคุณสามารถทิ้งเอกสารของเงื่อนไขเบื้องต้นหรือข้อผิดพลาดถ้ามันควรจะชัดเจน (ตัวอย่างเช่นObjectDisposedExceptionเมื่อเรียกวิธีการในวัตถุที่จำหน่าย)
9 java  c#  c++  exceptions 

1
“ ระบบวัตถุประสงค์ทั่วไป” หมายถึงอะไรสำหรับ Java SE Embedded?
เว็บไซต์ของออราเคิลพูดถึงสิ่งนี้เกี่ยวกับใบอนุญาตแบบฝังตัวของ Java SE : การพัฒนานั้นฟรี แต่จำเป็นต้องมีค่าลิขสิทธิ์เมื่อใช้งานกับสิ่งอื่นนอกเหนือจากระบบวัตถุประสงค์ทั่วไป "ระบบวัตถุประสงค์ทั่วไป" หมายถึงอะไรที่นี่ เรามีเครือข่ายเซ็นเซอร์ทั่วประเทศ ในแต่ละกล่องที่เราติดตั้งมีบอร์ดไมโครคอนโทรลเลอร์ซึ่งรับข้อมูลจากสภาพแวดล้อมและส่งข้อมูลบนพอร์ตอนุกรมไปยังบอร์ดฝังตัวที่ใช้ ARM ในระบบกระดานนี้มีกระบวนการ Java ที่อ่านและส่งข้อมูลไปยังเซิร์ฟเวอร์กลางของเราโดยใช้ JMS สิ่งนี้จัดเป็นระบบวัตถุประสงค์ทั่วไปหรือไม่ ขอโทษฉันถามที่นี่ เราอยู่ในอิหร่านไม่มีสำนักงาน Oracle ที่นี่เพื่อถาม

1
ทำไมต้องมีค่าใช้จ่ายเมื่อจัดสรรออบเจ็กต์ / อาร์เรย์ใน Java
มีอาร์เรย์จำนวนเท่าใดใน Java? สมมติว่าเป็นเครื่อง 64 บิตและสมมติว่ามีองค์ประกอบ N ในอาร์เรย์ดังนั้นองค์ประกอบเหล่านี้จะใช้ 2 * N, 4 * N หรือ 8 * N ไบต์สำหรับอาร์เรย์ประเภทต่างๆ และการบรรยายใน Coursera บอกว่ามันจะครอบครอง 2 * N + 24, 4 * N + 24 หรือ 8 * N + 24 ไบต์สำหรับอาร์เรย์องค์ประกอบ N และ 24 ไบต์เรียกว่าโอเวอร์เฮด แต่ไม่ได้อธิบายว่าทำไมโอเวอร์เฮดจึงเป็น จำเป็น นอกจากนี้วัตถุยังมีค่าใช้จ่ายซึ่งเป็น 16 ไบต์ ค่าโสหุ้ยเหล่านี้คืออะไร? 24/16 ไบต์ประกอบด้วยอะไรบ้าง …
9 java  memory 

4
ภาษาใหม่จะมีลักษณะอย่างไรถ้ามันถูกออกแบบมาตั้งแต่เริ่มต้นจนถึง TDD ง่าย?
ด้วยบางภาษาที่พบบ่อยที่สุด (Java, C #, Java, ฯลฯ ) บางครั้งดูเหมือนว่าคุณกำลังทำงานกับภาษาเมื่อคุณต้องการ TDD รหัสของคุณอย่างเต็มที่ ตัวอย่างเช่นใน Java และ C # คุณจะต้องการเยาะเย้ยการพึ่งพาใด ๆ ของชั้นเรียนของคุณและกรอบการเยาะเย้ยส่วนใหญ่จะแนะนำให้คุณจำลองการเชื่อมต่อไม่ได้เรียน บ่อยครั้งซึ่งหมายความว่าคุณมีอินเทอร์เฟซมากมายกับการใช้งานเพียงครั้งเดียว (เอฟเฟกต์นี้จะสังเกตได้ชัดเจนยิ่งขึ้นเพราะ TDD จะบังคับให้คุณเขียนคลาสที่มีขนาดเล็กกว่า) โซลูชันที่ให้คุณจำลองคลาสคอนกรีตอย่างถูกต้องทำสิ่งต่าง ๆ เช่นดัดแปลงคอมไพเลอร์หรือแทนที่ตัวโหลดคลาส ฯลฯ ซึ่งน่ารังเกียจ แล้วภาษาจะเป็นอย่างไรถ้ามันถูกออกแบบมาตั้งแต่เริ่มต้นจนถึงเป็น TDD ที่ยอดเยี่ยม? อาจเป็นไปได้ที่ภาษาระดับวิธีการอธิบายการพึ่งพา (แทนที่จะผ่านอินเตอร์เฟซไปยังตัวสร้าง) และความสามารถในการแยกอินเทอร์เฟซของชั้นเรียนโดยไม่ทำอย่างชัดเจน?

4
กำลังวิเคราะห์การใช้หน่วยความจำ: Java vs C ++ เล็กน้อย
การใช้หน่วยความจำของวัตถุจำนวนเต็มที่เขียนใน Java เปรียบเทียบ \ contrast กับการใช้หน่วยความจำของวัตถุจำนวนเต็มที่เขียนใน C ++ อย่างไร ความแตกต่างเล็กน้อยหรือไม่ ไม่แตกต่าง? ความแตกต่างใหญ่? ฉันคาดเดาว่ามันเหมือนกันเพราะ int เป็น int โดยไม่คำนึงถึงภาษา (?) เหตุผลที่ฉันถามสิ่งนี้เพราะฉันกำลังอ่านเกี่ยวกับความสำคัญของการรู้ว่าข้อกำหนดหน่วยความจำของโปรแกรมเมื่อใดจะทำให้โปรแกรมเมอร์ไม่สามารถแก้ไขปัญหาที่กำหนดได้ สิ่งที่ทำให้ฉันหลงใหลคือจำนวนหน่วยความจำที่จำเป็นสำหรับการสร้างวัตถุ Java ชิ้นเดียว ยกตัวอย่างเช่นวัตถุจำนวนเต็ม แก้ไขให้ฉันถ้าฉันผิด แต่วัตถุจำนวนเต็ม Java ต้องการหน่วยความจำ 24 ไบต์: 4 ไบต์สำหรับตัวแปรอินสแตนซ์ของมัน 16 ไบต์ของค่าใช้จ่าย (อ้างอิงถึงคลาสของวัตถุข้อมูลการรวบรวมขยะ & ข้อมูลการซิงโครไนซ์) การซ้อน 4 ไบต์ เป็นอีกตัวอย่างหนึ่งอาร์เรย์ Java (ซึ่งถูกนำมาใช้เป็นวัตถุ) ต้องการ 48 + ไบต์: ข้อมูลส่วนหัว 24 ไบต์ ค่าใช้จ่ายของวัตถุ …

2
CDNs ปกป้องไซต์ failover จากการโจมตี DDoS อย่างไร
ฉันอยู่ในขั้นตอนการออกแบบสำหรับเว็บแอปพลิเคชัน Java ที่อาจจะนำไปใช้กับ Google App Engine (GAE) สิ่งที่ดีเกี่ยวกับ GAE คือฉันไม่ต้องกังวลเกี่ยวกับการเสริมแอปของฉันจากการโจมตี DDoS ที่น่ากลัวฉันเพียงแค่ระบุ "เพดานการเรียกเก็บเงิน" และถ้าปริมาณการใช้ของฉันสูงถึงเพดานนี้ (DDoS หรืออย่างอื่น) GAE จะเพิ่งปิดแอปของฉัน กล่าวอีกนัยหนึ่ง GAE จะปรับขนาดเป็นจำนวนเท่าใดก็ได้จนกว่าคุณจะไม่สามารถทำให้แอปทำงานต่อไปได้อีกต่อไป ดังนั้นฉันจึงพยายามวางแผนฉุกเฉินหากฉันกดเพดานการเรียกเก็บเงินนี้และ GAE ปิดแอปของฉันการตั้งค่า DNS โดเมนเว็บแอปของฉัน "ล้มเหลว" เป็นที่อยู่ IP อื่นที่ไม่ใช่ GAE งานวิจัยเริ่มต้นบางงานแสดงให้เห็นว่า CDN บางตัวเช่น CloudFlare ให้บริการสำหรับสถานการณ์ที่แน่นอนนี้ โดยพื้นฐานแล้วฉันเพิ่งเก็บการตั้งค่า DNS ไว้กับพวกเขาและพวกเขายังมี API ที่ฉันสามารถใช้เพื่อทำให้กระบวนการล้มเหลวอัตโนมัติ ดังนั้นหากฉันตรวจพบว่าฉันอยู่ที่ 99% เพดานการเรียกเก็บเงินสำหรับแอป GAE ของฉันฉันสามารถกด CloudFlare API นี้ได้และ CloudFlare …

9
เมื่อใดที่ฉันจะใช้ pseudocode แทนผังงาน
ฉันเป็นนักเรียนที่ทำงานกับเทคนิคการเขียนโปรแกรมที่หลากหลายและฉันเจอ pseudocode และผังงาน ฉันรู้ว่าสิ่งเหล่านี้ถูกใช้เพื่อคิดผ่านปัญหาก่อนการเขียนโปรแกรมจริง แต่ฉันมีคำถามสองสามข้อนี้ ฉันจะใช้ pseudocode เพื่อวางแผนและเมื่อใดฉันจะใช้ผังงาน หรือดีกว่าที่จะทำทั้งสองอย่างก่อนการเขียนโปรแกรมจริง โดยเฉพาะอย่างยิ่งสำหรับเกมอาร์เคดขนาดเล็กใน JAVA เนื่องจากเป็นโปรเจ็กต์ต่อไปของฉัน ฉันสังเกตว่ารหัสเทียมคล้ายกับรหัสจริงมากกว่าผังงาน สิ่งนี้จะทำให้การเข้ารหัสเทียมดีขึ้นหรือไม่เพราะคุณต้องคัดลอก / วางรหัสเทียมลงในโปรแกรมของคุณ (แน่นอนคุณต้องเปลี่ยนให้เหมาะกับภาษาฉันเข้าใจส่วนนั้น) เป็นจริงหรือไม่ที่จะใช้ทั้งสองอย่างนี้ในขณะที่เขียนโปรแกรม? โดยเฉพาะเกมเดียวกันที่กล่าวถึงก่อนหน้านี้ ขอบคุณ

2
ทำไมวิธีการเข้าถึงจากข้อมูลจำเพาะ JavaBean กลายเป็นมาตรฐานสำหรับการพัฒนา Java?
JavaBeans ข้อมูลจำเพาะอธิบาย JavaBean เป็น Java Bean เป็นส่วนประกอบซอฟต์แวร์ที่สามารถนำกลับมาใช้ใหม่ที่สามารถจัดการได้ด้วยเครื่องมือสร้างภาพ เนื่องจากส่วนใหญ่ของบรรทัดของรหัสที่เขียนดูเหมือนจะไม่มีอะไรเกี่ยวข้องกับการสร้างภาพในเครื่องมือสร้างทำไมข้อมูลจำเพาะ JavaBean จึงเป็น "วิธี" ในการเขียนรหัสเชิงวัตถุ? ฉันต้องการละทิ้ง getter / setter แบบดั้งเดิมเพื่อสนับสนุนFluent Interfacesตลอดรหัสไม่เพียง แต่ในผู้สร้าง แต่กลัวที่จะทำเช่นนี้เนื่องจากนี่ไม่ใช่วิธีการเขียนโค้ดเชิงวัตถุใน Java
9 java  history 

3
ฉันจะตรวจสอบหน่วยความจำ JVM ในวิธีที่เหมาะสมได้อย่างไร
ฉันกำลังคิดว่าเราจะตรวจสอบหน่วยความจำ JVM ด้วยค่าโสหุ้ยต่ำในสภาพแวดล้อมการผลิตได้อย่างไรภายใต้ชั่วโมงที่ยุ่ง สมมติว่าฉันมีเซิร์ฟเวอร์แอพ Tomcat สองตัวในการผลิตโหลดบาลานซ์ตั้งค่าไว้ด้านหลัง หากฉันเห็นสถิติหน่วยความจำ jvm ฉันสามารถบอก load balance ให้หยุดส่งคำขอไปยังเซิร์ฟเวอร์ซึ่งจะพบปัญหา OOM ทำให้เหมาะสมหรือไม่ Jconsole หรือ VisualVM กินการเพิ่มประสิทธิภาพมากขึ้นไม่ใช่ตัวเลือกของฉัน

1
IntelliJ พร้อมการรวบรวม Maven
ฉันมีโครงการที่ต้องการขวดไฮเบอร์เนต ฉันเพิ่มพวกเขาเป็นการพึ่งพาใน pom.xml และ Maven รวบรวมโครงการของฉันได้ดี อย่างไรก็ตามใน IDE นั้นคำอธิบายประกอบและการโทรถึง Hibernate API ทั้งหมดจะถูกทำเครื่องหมายว่าไม่ได้รับการแก้ไข (สีแดง) ฉันจะทำให้ IntelliJ สามารถแก้ไขได้อย่างไร มีวิธีการใช้ Maven เมื่อฉันคลิกที่สร้างโครงการหรือไม่ (Ctrl + F9) นอกจากนี้ฉันสับสนกับแนวคิดของ facets ภายใน IntelliJ ฉันต้องการมันหรือเปล่าสมมุติว่า JPA facets เปิดใช้งาน Persistence Assistant ฯลฯ ... หรือมีตัวเลือกให้ Maven ดูแล?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.