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

Java เป็นภาษาการเขียนโปรแกรมระดับสูงที่เป็นที่นิยม ใช้แท็กนี้เมื่อคุณมีปัญหาในการใช้หรือทำความเข้าใจภาษานั้น ๆ แท็กนี้ไม่ค่อยได้ใช้คนเดียวและมักใช้ร่วมกับ [สปริง], [สปริงบูต], [jakarta-ee], [android], [javafx], [gradle] และ [maven]

29
วิธีที่มีประสิทธิภาพมากที่สุดในการเพิ่มค่า Map ใน Java
ฉันหวังว่าคำถามนี้จะไม่ถือว่าเป็นพื้นฐานสำหรับฟอรัมนี้ แต่เราจะเห็น ฉันสงสัยว่าจะสร้างรหัสใหม่อีกครั้งเพื่อประสิทธิภาพที่ดีขึ้นซึ่งเริ่มขึ้นหลายครั้ง สมมติว่าฉันกำลังสร้างรายการความถี่คำโดยใช้แผนที่ (อาจเป็น HashMap) โดยที่แต่ละคีย์คือสตริงที่มีคำที่ถูกนับและค่านั้นเป็นจำนวนเต็มที่เพิ่มขึ้นทุกครั้งที่พบโทเค็นของคำ ใน Perl การเพิ่มค่าดังกล่าวอาจเป็นเรื่องง่าย: $map{$word}++; แต่ใน Java มันซับซ้อนกว่ามาก นี่คือวิธีที่ฉันกำลังทำอยู่: int count = map.containsKey(word) ? map.get(word) : 0; map.put(word, count + 1); หลักสูตรใดขึ้นอยู่กับฟีเจอร์ autoboxing ในเวอร์ชั่น Java ที่ใหม่กว่า ฉันสงสัยว่าคุณสามารถแนะนำวิธีที่มีประสิทธิภาพมากขึ้นในการเพิ่มมูลค่าดังกล่าวหรือไม่ มีเหตุผลด้านประสิทธิภาพที่ดีในการละทิ้งเฟรมเวิร์กของ Collections และใช้อย่างอื่นแทนหรือไม่? อัปเดต: ฉันได้ทำการทดสอบคำตอบหลายข้อ ดูด้านล่าง


6
จะกำหนดค่าการเข้ารหัสใน Maven ได้อย่างไร
เมื่อฉันทำงานmaven installในโครงการ maven โมดูลของฉันฉันมักจะได้รับผลลัพธ์ต่อไปนี้: [WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent! ดังนั้นฉัน googled รอบเล็กน้อย แต่สิ่งที่ฉันสามารถหาได้คือฉันต้องเพิ่ม: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> ... ถึง pom.xml ของฉัน แต่มันมีอยู่แล้ว (ในแม่pom.xml) การกำหนดค่า<encoding>สำหรับ maven-resources-plugin หรือ maven-compiler-plugin ยังไม่สามารถแก้ไขได้ แล้วปัญหาคืออะไร


16
ทำไม Java ไม่สนับสนุน ints ที่ไม่ได้ลงชื่อ?
เหตุใด Java จึงไม่รวมการสนับสนุนสำหรับจำนวนเต็มที่ไม่มีเครื่องหมาย? ดูเหมือนว่าฉันจะไม่สนใจคี่เพราะพวกเขาอนุญาตให้หนึ่งเขียนรหัสที่มีโอกาสน้อยที่จะผลิตล้นในการป้อนข้อมูลขนาดใหญ่โดยไม่คาดคิด นอกจากนี้การใช้จำนวนเต็มที่ไม่ได้ลงนามอาจเป็นรูปแบบของเอกสารตนเองเนื่องจากพวกเขาระบุว่าค่าที่ int ที่ไม่ได้ลงชื่อซึ่งมีไว้เพื่อถือนั้นไม่ควรจะเป็นค่าลบ สุดท้ายในบางกรณีจำนวนเต็มที่ไม่ได้ลงชื่ออาจมีประสิทธิภาพมากกว่าสำหรับการดำเนินการบางอย่างเช่นการแบ่ง ข้อเสียของการรวมสิ่งเหล่านี้คืออะไร?


6
ความแตกต่างระหว่าง applicationContext.xml และ spring-servlet.xml ใน Spring Framework
มีapplicationContext.xmlและspring-servlet.xmlที่เกี่ยวข้อง แต่อย่างใดในฤดูใบไม้ผลิกรอบ? ไฟล์คุณสมบัติที่ประกาศapplicationContext.xmlใช้จะพร้อมใช้งานDispatcherServletหรือไม่ ในบันทึกที่เกี่ยวข้องทำไมฉันต้องมี*-servlet.xmlเลย? ทำไมapplicationContext.xmlคนเดียวไม่เพียงพอ?
373 java  spring 

25
แปลงการแทนสตริงของดัมพ์ hex เป็นอาร์เรย์ไบต์โดยใช้ Java?
ฉันกำลังมองหาวิธีการแปลงสตริงยาว (จากการถ่ายโอนข้อมูล) ที่แสดงถึงค่าฐานสิบหกเป็นอาร์เรย์ไบต์ ผมไม่ได้เรียบเรียงได้ดีกว่าคนที่โพสต์คำถามเดียวกันที่นี่ แต่เพื่อให้เป็นต้นฉบับฉันจะพูดตามวิธีของตัวเอง: สมมติว่าฉันมีสตริง"00A0BF"ที่ฉันต้องการตีความว่าเป็น byte[] {0x00,0xA0,0xBf} ฉันควรทำอย่างไรดี? ฉันเป็นสามเณร Java และจบลงด้วยการใช้BigIntegerและระวังเลขศูนย์เลขฐานสิบหก แต่ฉันคิดว่ามันน่าเกลียดและฉันแน่ใจว่าฉันขาดอะไรง่าย ๆ
372 java  byte  hex  dump 

28
วิธีที่ดีที่สุดในการใช้ค่าคงที่ใน Java คืออะไร? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ปิดให้บริการใน2 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันเคยเห็นตัวอย่างเช่นนี้: public class MaxSeconds { public static final int MAX_SECONDS = 25; } และควรให้ฉันมีคลาส Constants เพื่อตัดค่าคงที่ในประกาศค่าคงที่สุดท้าย ฉันรู้จริง ๆ แล้ว Java ไม่มีเลยและสงสัยว่านี่เป็นวิธีที่ดีที่สุดในการสร้างค่าคงที่หรือไม่
372 java  constants 



11
การจำลองวิธีแบบคงที่ด้วย Mockito
ฉันได้เขียนโรงงานเพื่อผลิตjava.sql.Connectionสิ่งของ: public class MySQLDatabaseConnectionFactory implements DatabaseConnectionFactory { @Override public Connection getConnection() { try { return DriverManager.getConnection(...); } catch (SQLException e) { throw new RuntimeException(e); } } } ฉันต้องการตรวจสอบความถูกต้องของพารามิเตอร์ที่ส่งไปยังDriverManager.getConnectionแต่ฉันไม่ทราบวิธีการจำลองวิธีแบบคงที่ ฉันใช้ JUnit 4 และ Mockito สำหรับเคสทดสอบของฉัน มีวิธีที่ดีในการเยาะเย้ย / ตรวจสอบกรณีการใช้งานที่เฉพาะเจาะจงนี้หรือไม่?

15
สาเหตุและความแตกต่างระหว่าง NoClassDefFoundError และ ClassNotFoundException คืออะไร
ความแตกต่างระหว่างNoClassDefFoundErrorและClassNotFoundExceptionคืออะไร? อะไรทำให้พวกเขาถูกโยนทิ้ง? พวกเขาจะแก้ไขได้อย่างไร? ฉันมักจะพบข้อผิดพลาดเหล่านี้เมื่อแก้ไขรหัสที่มีอยู่เพื่อรวมไฟล์ jar ใหม่ ฉันได้กดพวกเขาทั้งฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์สำหรับแอป java ที่แจกจ่ายผ่านเว็บสตาร์ต เหตุผลที่เป็นไปได้ที่ฉันเจอ: แพ็คเกจไม่รวมอยู่ในbuild.xmlรหัสฝั่งไคลเอ็นต์ classpath รันไทม์ที่ขาดหายไปสำหรับไหใหม่ที่เราใช้อยู่ เวอร์ชันขัดแย้งกับ jar ก่อนหน้า เมื่อฉันพบสิ่งเหล่านี้ในวันนี้ฉันใช้วิธีการตามรอยและคลาดเคลื่อนเพื่อให้สิ่งต่าง ๆ ทำงานได้ ฉันต้องการความชัดเจนและความเข้าใจมากขึ้น

21
เหตุใดคุณจึงต้องทำให้การใช้งานเสร็จสิ้น ()
ฉันได้อ่านคำถาม Java มือใหม่มาหลายครั้งfinalize()แล้วและพบว่ามันช่างน่าประหลาดใจที่ไม่มีใครทำให้มันชัดเจนว่า finalize () เป็นวิธีที่ไม่น่าเชื่อถือในการล้างทรัพยากร ฉันเห็นใครบางคนแสดงความคิดเห็นว่าพวกเขาใช้มันเพื่อล้าง Connections ซึ่งน่ากลัวจริงๆเนื่องจากวิธีเดียวที่จะเข้ามาใกล้เคียงกับการรับประกันว่าการเชื่อมต่อถูกปิดคือการใช้ลอง (catch) ในที่สุด ฉันไม่ได้เรียนใน CS แต่ฉันได้เขียนโปรแกรมใน Java อย่างมืออาชีพมาเกือบทศวรรษแล้วและฉันไม่เคยเห็นใครใช้finalize()ระบบการผลิตเลย นี่ยังไม่ได้หมายความว่ามันไม่มีประโยชน์หรือคนที่ฉันทำงานด้วยถูกต้องแล้ว ดังนั้นคำถามของฉันคือกรณีใดบ้างที่มีการใช้งานfinalize()ที่ไม่สามารถจัดการได้อย่างน่าเชื่อถือมากขึ้นผ่านกระบวนการหรือไวยากรณ์อื่นภายในภาษา โปรดระบุสถานการณ์ที่เฉพาะเจาะจงหรือประสบการณ์ของคุณเพียงแค่ทำซ้ำตำราเรียนภาษา Java หรือการใช้งานที่ตั้งใจไว้ไม่เพียงพอเนื่องจากไม่ใช่เจตนาของคำถามนี้
371 java  jvm 

12
ทดสอบ JUnit สำหรับ System.out.println ()
ฉันต้องเขียนการทดสอบ JUnit สำหรับแอปพลิเคชันเก่าที่ออกแบบมาไม่ดีและกำลังเขียนข้อความแสดงข้อผิดพลาดจำนวนมากไปยังเอาต์พุตมาตรฐาน เมื่อgetResponse(String request)วิธีการทำงานอย่างถูกต้องจะส่งกลับการตอบสนอง XML: @BeforeClass public static void setUpClass() throws Exception { Properties queries = loadPropertiesFile("requests.properties"); Properties responses = loadPropertiesFile("responses.properties"); instance = new ResponseGenerator(queries, responses); } @Test public void testGetResponse() { String request = "<some>request</some>"; String expResult = "<some>response</some>"; String result = instance.getResponse(request); assertEquals(expResult, result); } แต่เมื่อได้รับ XML …
370 java  console  junit 

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