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

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

14
การเพิ่มประสิทธิภาพแอปพลิเคชัน Android ก่อนเปิดตัว [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดขึ้นมาใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันอยู่ในสถานการณ์ " พิเศษ " เกี่ยวกับประสิทธิภาพของโปรแกรมของฉัน ตอนนี้ฉันอยู่ที่ขั้นตอนที่ฉันจำเป็นต้องปรับปรุงประสิทธิภาพการทำงานของแอพลิเคชันและลดการใช้พลังงานแบตเตอรี่ ก่อนคำถาม: ก่อนอื่นใบสมัครของฉันได้ผล มันทำงานได้ดี - ไม่มีข้อผิดพลาดใด ๆ ประการที่สองฉันได้อ่านOptimizing Battery Life บนเว็บไซต์นักพัฒนา Androidและฉันได้เพิ่มประสิทธิภาพสิ่งเล็ก ๆ ที่พวกเขาร้องขอ ไม่มีปัญหาใด ๆ ตอนนี้ฉันอยากรู้เกี่ยวกับการแก้ไขพิเศษของนักพัฒนาคนอื่น ๆที่พวกเขาใช้เพื่อเพิ่มประสิทธิภาพแอปพลิเคชันของตนเอง สิ่งที่ผู้ใช้อาจไม่รู้จักหรือให้ความสนใจ อย่างไรก็ตามการแก้ไขจะช่วยเพิ่มอายุการใช้งานแบตเตอรี่หรือช่วยปรับปรุงการบำรุงรักษาแอปพลิเคชัน ดังนั้นสิ่งที่เพิ่มประสิทธิภาพเคล็ดลับเฉพาะของคุณ (s)? ฉันอยู่ในสถานการณ์เฉพาะที่ฉันต้องการความรู้จริงๆและฉันคิดว่านี่จะเป็นโอกาสที่ดีในการแบ่งปันความรู้ให้กับนักพัฒนาเกี่ยวกับสถานการณ์ที่พวกเขาเคยอยู่ โปรดโหวตคำตอบที่ยอดเยี่ยมเพราะจะกระตุ้นให้นักพัฒนาที่ยอดเยี่ยมแบ่งปันความรู้ของพวกเขา

9
Safe String เพื่อการแปลง BigDecimal
ฉันกำลังพยายามอ่านค่า BigDecimal จากสตริง สมมติว่าฉันมี String นี้: "1,000,000,000.999999999999999" และฉันต้องการเอา BigDecimal ออกมา วิธีทำคืออะไร? ก่อนอื่นฉันไม่ชอบวิธีแก้ปัญหาโดยใช้การแทนที่สตริง (การแทนที่ลูกน้ำ ฯลฯ ) ฉันคิดว่าควรมีการจัดรูปแบบที่เรียบร้อยเพื่อทำงานนั้นให้ฉัน ฉันพบคลาส DecimalFormatter แล้วอย่างไรก็ตามเมื่อทำงานผ่านสองเท่า - ความแม่นยำจำนวนมากจะหายไป ฉันจะทำมันได้อย่างไร?
120 java  parsing  bigdecimal 

10
Junit - เรียกใช้วิธีการตั้งค่าหนึ่งครั้ง
ฉันตั้งค่าชั้นเรียนด้วยการทดสอบสองสามครั้งและแทนที่จะใช้@Beforeฉันอยากจะมีวิธีการตั้งค่าที่ดำเนินการเพียงครั้งเดียวก่อนการทดสอบทั้งหมด เป็นไปได้กับ Junit 4.8 หรือไม่?
120 java  junit 

7
JAXB สร้างบริบทและต้นทุนของมาร์แชลเลอร์
คำถามเป็นเรื่องเชิงทฤษฎีค่าใช้จ่ายในการสร้างบริบท JAXB, marshaller และ unmarshaller คืออะไร? ฉันพบว่ารหัสของฉันอาจได้รับประโยชน์จากการรักษาบริบท JAXB เดียวกันและอาจเป็นจอมพลเดียวกันสำหรับการดำเนินการมาร์แชลทั้งหมดแทนที่จะสร้างบริบทและมาร์แชลเลอร์ในแต่ละมาร์แชล ดังนั้นค่าใช้จ่ายในการสร้างบริบท JAXB และ marshaller / unmarshaller คืออะไร? สามารถสร้างบริบท + จอมพลสำหรับการดำเนินการมาร์แชลแต่ละครั้งได้หรือไม่หรือควรหลีกเลี่ยง
120 java  jaxb  marshalling 

7
DelegatingFilterProxy ของ Spring MVC คืออะไร
ฉันเห็นสิ่งนี้ในแอป Spring MVC ของฉันweb.xml: <filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> ฉันพยายามหาสาเหตุว่าทำไมถึงอยู่ที่นั่นและจำเป็นจริงหรือไม่ ฉันพบคำอธิบายนี้ในเอกสาร Springแต่ไม่ได้ช่วยให้ฉันเข้าใจได้: มันดูเหมือนว่าจะชี้ให้เห็นว่าส่วนนี้เป็น "กาว" ระหว่าง Servlets ที่กำหนดไว้ในและส่วนประกอบที่กำหนดไว้ในฤดูใบไม้ผลิweb.xmlapplicationContext.xml 7.1 DelegatingFilterProxy เมื่อใช้ตัวกรอง servlet คุณต้องประกาศในตัวกรองของคุณอย่างชัดเจนweb.xmlมิฉะนั้นจะถูกละเว้นโดยคอนเทนเนอร์ servlet ใน Spring Security คลาสของตัวกรองยังเป็น Spring beans ที่กำหนดไว้ในบริบทของแอปพลิเคชันดังนั้นจึงสามารถใช้ประโยชน์จากสิ่งอำนวยความสะดวกในการฉีดแบบพึ่งพาและอินเทอร์เฟซวงจรชีวิตของ Spring Spring's DelegatingFilterProxyให้การเชื่อมโยงระหว่างweb.xmlและบริบทของแอปพลิเคชัน เมื่อใช้ DelegatingFilterProxy คุณจะเห็นสิ่งนี้ในweb.xmlไฟล์: <filter> <filter-name>myFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>myFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> สังเกตว่าจริงๆแล้วตัวกรองคือ a DelegatingFilterProxyไม่ใช่คลาสที่จะใช้ตรรกะของตัวกรองจริงๆ สิ่งที่DelegatingFilterProxyจะเป็นวิธีการมอบหมายของตัวกรองผ่านถั่วที่ได้จากบริบทของแอพลิเคชันฤดูใบไม้ผลิ สิ่งนี้ทำให้ bean ได้รับประโยชน์จากการสนับสนุนวงจรชีวิตบริบทของเว็บแอ็พพลิเคชัน …

5
จะซิงโครไนซ์ตัวแปรแบบคงที่ระหว่างเธรดที่รันอินสแตนซ์ของคลาสใน Java ได้อย่างไร
ฉันรู้ว่าการใช้synchronizeคีย์เวิร์ดก่อนที่เมธอดจะนำการซิงโครไนซ์ไปยังวัตถุนั้น นั่นคือ 2 เธรดที่รันอินสแตนซ์เดียวกันของออบเจ็กต์จะซิงโครไนซ์ อย่างไรก็ตามเนื่องจากการซิงโครไนซ์อยู่ที่ระดับอ็อบเจ็กต์ 2 เธรดที่รันอินสแตนซ์ที่แตกต่างกันของอ็อบเจ็กต์จะไม่ซิงโครไนซ์ หากเรามีตัวแปรคงที่ในคลาส Java ที่ถูกเรียกโดยวิธีการเราต้องการให้มันถูกซิงโครไนซ์ข้ามอินสแตนซ์ของคลาส อินสแตนซ์ทั้งสองกำลังทำงานใน 2 เธรดที่แตกต่างกัน เราสามารถทำการซิงโครไนซ์ด้วยวิธีต่อไปนี้ได้หรือไม่? public class Test { private static int count = 0; private static final Object lock= new Object(); public synchronized void foo() { synchronized(lock) { count++; } } } เป็นความจริงหรือไม่ว่าเนื่องจากเราได้กำหนดวัตถุlockที่เป็นแบบคงที่และเรากำลังใช้คีย์เวิร์ดsynchronizedสำหรับการล็อกcountนั้นตอนนี้ตัวแปรคงถูกซิงโครไนซ์ข้ามอินสแตนซ์ของคลาสแล้วTest?

17
วิธีรับ 0-padded binary แทนจำนวนเต็มใน java?
ตัวอย่างเช่นสำหรับ1, 2, 128, 256ผลลัพธ์สามารถเป็น (16 หลัก): 0000000000000001 0000000000000010 0000000010000000 0000000100000000 ฉันเหนื่อย String.format("%16s", Integer.toBinaryString(1)); ทำให้มีช่องว่างสำหรับช่องว่างด้านซ้าย: ` 1' วิธีใส่0s สำหรับ padding. ไม่พบในฟอร์แมตเตอร์ มีวิธีอื่นที่จะทำได้หรือไม่? ป.ล. โพสต์นี้อธิบายถึงวิธีการจัดรูปแบบจำนวนเต็มด้วย 0-padding ด้านซ้าย แต่ไม่ใช่สำหรับการแทนค่าไบนารี

4
ค่าอะไรของฉันในขณะที่ (i == i + 1) {} วนซ้ำตลอดไป
ฉันวิ่งข้ามปริศนานี้จากหลักสูตรการเขียนโปรแกรมขั้นสูงในการสอบของมหาวิทยาลัยในสหราชอาณาจักร พิจารณาลูปต่อไปนี้ซึ่งฉันอยู่จนถึงตอนนี้ยังไม่ได้ประกาศ: while (i == i + 1) {} ค้นหาคำจำกัดความของiที่นำหน้าลูปนี้เพื่อให้ลูป while ดำเนินต่อไปตลอดกาล คำถามถัดไปซึ่งถามคำถามเดียวกันสำหรับข้อมูลโค้ดนี้: while (i != i) {} เห็นได้ชัดสำหรับฉัน แน่นอนในสถานการณ์อื่น ๆ นี้NaNแต่ฉันติดอยู่กับเหตุการณ์ก่อนหน้านี้จริงๆ สิ่งนี้เกี่ยวข้องกับการล้นหรือไม่? อะไรจะทำให้ลูปดังกล่าววนซ้ำไปตลอดกาลใน Java
120 java  loops  types 

10
ความแตกต่างระหว่าง Java Enumeration และ Iterator
อะไรคือความแตกต่างที่แน่นอนระหว่างสองอินเทอร์เฟซนี้? ไม่Enumerationมีประโยชน์มากกว่าการใช้Iterator? หากใครสามารถอธิบายได้อย่างละเอียดบทความอ้างอิงจะได้รับการชื่นชม


9
แนวทางปฏิบัติที่ดีที่สุด: เริ่มต้นฟิลด์คลาส JUnit ใน setUp () หรือเมื่อประกาศ?
ฉันควรเริ่มต้นฟิลด์คลาสเมื่อประกาศเช่นนี้หรือไม่? public class SomeTest extends TestCase { private final List list = new ArrayList(); public void testPopulateList() { // Add stuff to the list // Assert the list contains what I expect } } หรือใน setUp () แบบนี้? public class SomeTest extends TestCase { private List list; @Override protected void …
120 java  junit 

2
การแชร์คลาส src / ทดสอบระหว่างโมดูลในโครงการ maven แบบหลายโมดูล
ฉันมีโครงการ Maven แบบหลายโมดูล เพื่อประโยชน์ของตัวอย่างนี้ให้พิจารณาสองโมดูล: data consumer โมดูลconsumerมีโมดูลdataเป็นที่พึ่งพา โมดูลdataประกาศกลุ่มของคลาสหลัก มีการทดสอบภายใต้การsrc/testใช้งานนั้น การทดสอบเหล่านี้จำเป็นต้องมีการสร้างวัตถุที่ยืดยาวดังนั้นฉันจึงมีคลาสที่มีวิธียูทิลิตี้บางอย่างอยู่ในนั้นเพื่อสร้างวัตถุเหล่านี้ คลาสยูทิลิตี้นี้ ( SampleDataHelper) อยู่ในsrc/testลำดับชั้น ฉันยังมีการทดสอบบางอย่างในconsumerโมดูลที่จำเป็นต้องสร้างวัตถุที่ยืดยาวเหล่านี้ ฉันต้องการใช้SampleDataHelperคลาสของฉัน(กำหนดไว้ในdata src/test) ในการทดสอบที่อยู่ในconsumer src/testโครงสร้างของฉัน แต่น่าเสียดายที่แม้dataเป็นพึ่งพาของconsumer, ไม่สามารถดูชั้นเรียนที่มีอยู่ภายใต้consumerdata src/test เพื่อต่อสู้กับสิ่งนี้ฉันคิดว่าฉันอาจสร้างโมดูลอื่น ( data-test) และย้ายSampleDataHelperไปที่ด้านsrc/mainล่าง จากนั้นฉันจะรวมdata-testเป็นการอ้างอิงขอบเขตการทดสอบของdata. น่าเสียดายที่สิ่งนี้แนะนำการพึ่งพาแบบวงกลม: dataใช้data-testแต่data-testต้องใช้dataด้วย ทางออกเดียวที่ฉันคิดขึ้นคือวางSampleDataHelperไว้data src/mainใต้testแพ็คเกจและหวังว่าจะไม่มีรหัสแอปพลิเคชันจริงที่เรียกว่า ฉันจะแบ่งปันSampleDataHelperชั้นเรียนระหว่างโมดูลโดยไม่ต้องใส่ไว้ข้างใต้ได้src/mainอย่างไร
120 java  maven  maven-3 

4
console.writeline และ System.out.println
อะไรคือความแตกต่างทางเทคนิคระหว่างconsole.writelineและSystem.out.println? ฉันรู้ว่าSystem.out.printlnเขียนไปยังเอาต์พุตมาตรฐาน แต่นี่ไม่ใช่สิ่งเดียวกับคอนโซลหรือไม่ ฉันไม่เข้าใจเอกสารสำหรับconsole.writeline.
120 java  io 

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

9
มีการยกเว้นสิ่งประดิษฐ์ที่สืบทอดมาจาก POM หลักหรือไม่?
อาร์ติแฟกต์จากการอ้างอิงสามารถแยกออกได้โดยการประกาศ<exclusions>องค์ประกอบภายใน<dependency>แต่ในกรณีนี้จำเป็นต้องแยกอาร์ติแฟกต์ที่สืบทอดมาจากโปรเจ็กต์หลัก ข้อความที่ตัดตอนมาของ POM ภายใต้การอภิปรายมีดังนี้: <project> <modelVersion>4.0.0</modelVersion> <groupId>test</groupId> <artifactId>jruby</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <artifactId>base</artifactId> <groupId>es.uniovi.innova</groupId> <version>1.0.0</version> </parent> <dependencies> <dependency> <groupId>com.liferay.portal</groupId> <artifactId>ALL-DEPS</artifactId> <version>1.0</version> <scope>provided</scope> <type>pom</type> </dependency> </dependencies> </project> baseสิ่งประดิษฐ์ขึ้นอยู่กับ javax.mail:mail-1.4.jarและALL-DEPSขึ้นอยู่กับเวอร์ชันอื่นของไลบรารีเดียวกัน เนื่องจากความจริงที่ว่าmail.jarจากALL-DEPSที่มีอยู่กับสภาพแวดล้อมในการดำเนินการแม้จะไม่ได้ส่งออก collides กับที่มีอยู่ในผู้ปกครองซึ่งเป็นขอบเขตเป็นmail.jarcompile วิธีแก้ปัญหาคือการกำจัด mail.jar ออกจาก POM หลัก แต่โปรเจ็กต์ส่วนใหญ่ที่สืบทอดฐานจำเป็นต้องใช้ (เช่นเดียวกับการพึ่งพา transtive สำหรับ log4j) ดังนั้นสิ่งที่ฉันต้องการจะทำคือการแยกไลบรารีของผู้ปกครองออกจากโปรเจ็กต์ลูกเนื่องจากสามารถทำได้หากbaseเป็นการพึ่งพาไม่ใช่ผู้ปกครอง: ... <dependency> <artifactId>base</artifactId> <groupId>es.uniovi.innova</groupId> <version>1.0.0</version> <type>pom<type> <exclusions> <exclusion> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> …
120 java  maven-2  pom.xml 

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