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

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

6
การกำหนดค่า Log4j2 - ไม่พบไฟล์คอนฟิกูเรชัน log4j2
เมื่อเร็ว ๆ นี้ฉันตัดสินใจเรียนรู้วิธีใช้คนตัดไม้ log4j2 ฉันดาวน์โหลดไฟล์ jar ที่ต้องการสร้างไลบรารีไฟล์ comfiguration xml และพยายามใช้งาน น่าเสียดายที่ฉันได้รับคำสั่งนี้ในคอนโซล (Eclipse): ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. นี่คือรหัสชั้นเรียนการทดสอบของฉัน: package log4j.test; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class Log4jTest { static final Logger logger = LogManager.getLogger(Logger.class.getName()); public static void main(String[] args) …
91 java  logging  log4j2 

9
การซิงโครไนซ์การเข้าถึง SimpleDateFormat
javadoc สำหรับ SimpleDateFormat ระบุว่า SimpleDateFormat ไม่ซิงโครไนซ์ "รูปแบบวันที่ไม่ซิงโครไนซ์ขอแนะนำให้สร้างอินสแตนซ์รูปแบบแยกกันสำหรับแต่ละเธรดหากเธรดหลายชุดเข้าถึงรูปแบบพร้อมกันจะต้องซิงโครไนซ์กับภายนอก" แต่อะไรคือแนวทางที่ดีที่สุดในการใช้อินสแตนซ์ของ SimpleDateFormat ในสภาพแวดล้อมแบบมัลติเธรด นี่คือตัวเลือกบางตัวที่ฉันคิดไว้ฉันเคยใช้ตัวเลือก 1 และ 2 ในอดีต แต่ฉันอยากรู้ว่ามีทางเลือกอื่นที่ดีกว่าหรือไม่หรือตัวเลือกใดที่จะให้ประสิทธิภาพและการทำงานพร้อมกันที่ดีที่สุด ตัวเลือกที่ 1: สร้างอินสแตนซ์ในเครื่องเมื่อจำเป็น public String formatDate(Date d) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(d); } ตัวเลือกที่ 2: สร้างอินสแตนซ์ของ SimpleDateFormat เป็นตัวแปรคลาส แต่ซิงโครไนซ์การเข้าถึง private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); public String formatDate(Date d) { synchronized(sdf) …

2
จะแนะนำข้อ จำกัด หลายคอลัมน์ด้วยคำอธิบายประกอบ JPA ได้อย่างไร
ฉันกำลังพยายามแนะนำข้อ จำกัด หลายคีย์ในเอนทิตีที่แมป JPA: public class InventoryItem { @Id private Long id; @Version private Long version; @ManyToOne @JoinColumn("productId") private Product product; @Column(nullable=false); private long serial; } โดยทั่วไปคู่ (ผลิตภัณฑ์อนุกรม) ควรไม่ซ้ำกัน แต่ฉันพบเพียงวิธีที่บอกว่าอนุกรมควรไม่ซ้ำกัน เห็นได้ชัดว่านี่ไม่ใช่ความคิดที่ดีเนื่องจากผลิตภัณฑ์ต่างๆอาจมีหมายเลขซีเรียลเหมือนกัน มีวิธีสร้างข้อ จำกัด นี้ผ่าน JPA หรือไม่หรือฉันถูกบังคับให้สร้างเป็น DB ด้วยตนเอง
91 java  jpa  mapping 

4
คำอธิบายประกอบ @Transactional. จะย้อนกลับได้อย่างไร?
ฉันใช้คำอธิบายประกอบนี้สำเร็จสำหรับคลาส Dao และการย้อนกลับใช้ได้กับการทดสอบ แต่ตอนนี้ฉันต้องย้อนกลับโค้ดจริงไม่ใช่แค่การทดสอบ มีคำอธิบายประกอบพิเศษสำหรับใช้ในการทดสอบ แต่คำอธิบายประกอบใดที่มีไว้สำหรับรหัสที่ไม่ใช่การทดสอบ มันเป็นคำถามใหญ่สำหรับฉัน ฉันใช้เวลาหนึ่งวันเพื่อสิ่งนั้นอยู่แล้ว เอกสารอย่างเป็นทางการไม่ตรงตามความต้องการของฉัน class MyClass { // this does not make rollback! And record appears in DB. EmployeeDaoInterface employeeDao; public MyClass() { ApplicationContext context = new ClassPathXmlApplicationContext( new String[] { "HibernateDaoBeans.xml" }); employeeDao = (IEmployeeDao) context.getBean("employeeDao"); } @Transactional(rollbackFor={Exception.class}) public void doInsert( Employee newEmp ) …
91 java  hibernate  spring 

9
เข้าถึงฟิลด์ส่วนตัวของวัตถุอื่นในคลาสเดียวกัน
class Person { private BankAccount account; Person(BankAccount account) { this.account = account; } public Person someMethod(Person person) { //Why accessing private field is possible? BankAccount a = person.account; } } โปรดลืมเกี่ยวกับการออกแบบ ฉันรู้ว่า OOP ระบุว่าไพรเวทอ็อบเจ็กต์เป็นส่วนตัวสำหรับคลาส คำถามของฉันคือทำไม OOP การออกแบบดังกล่าวว่าเขตข้อมูลส่วนตัวที่มีสิทธิ์เข้าถึงระดับระดับสูงและไม่เข้าถึงวัตถุระดับ ?
91 java  c++  .net  oop 

6
แสดงรายการ <String> ถึงปัญหาการแปลง ArrayList <String>
ฉันมีวิธีการดังต่อไปนี้ ... ซึ่งใช้รายการประโยคและแยกแต่ละประโยคออกเป็นคำ นี่คือ: public List&lt;String&gt; getWords(List&lt;String&gt; strSentences){ allWords = new ArrayList&lt;String&gt;(); Iterator&lt;String&gt; itrTemp = strSentences.iterator(); while(itrTemp.hasNext()){ String strTemp = itrTemp.next(); allWords = Arrays.asList(strTemp.toLowerCase().split("\\s+")); } return allWords; } ฉันต้องส่งรายการนี้ไปยังแฮชแมปในรูปแบบต่อไปนี้ HashMap&lt;String, ArrayList&lt;String&gt;&gt; ดังนั้นวิธีนี้จะส่งกลับรายการและฉันต้องการ arrayList? ถ้าลองแคสแล้วไม่ได้ออกกำลัง ... มีคำแนะนำไหม? นอกจากนี้ถ้าฉันเปลี่ยน ArrayList เป็น List ใน HashMap ฉันจะได้รับ java.lang.UnsupportedOperationException เพราะบรรทัดนี้ในรหัสของฉัน sentenceList.add(((Element)sentenceNodeList.item(sentenceIndex)).getTextContent()); ข้อเสนอแนะที่ดีกว่านี้?
91 java  list  arraylist 

8
การซิงโครไนซ์ฟิลด์ที่ไม่ใช่ขั้นสุดท้าย
คำเตือนจะแสดงทุกครั้งที่ฉันซิงโครไนซ์ในฟิลด์คลาสที่ไม่ใช่คลาสสุดท้าย นี่คือรหัส: public class X { private Object o; public void setO(Object o) { this.o = o; } public void x() { synchronized (o) // synchronization on a non-final field { } } } ดังนั้นฉันจึงเปลี่ยนการเข้ารหัสด้วยวิธีต่อไปนี้: public class X { private final Object o; public X() { o = new Object(); …

14
เป้าหมายที่ถูกต้องสำหรับตัวแปรสภาพแวดล้อม JAVA_HOME สำหรับการแจกจ่ายที่ใช้ Linux OpenJDK Debian คืออะไร
ใน Windows JAVA_HOMEต้องชี้ไปที่โฟลเดอร์การติดตั้ง JDK (เพื่อให้JAVA_HOME/binมีไฟล์ปฏิบัติการทั้งหมดและJAVA_HOME/libsมีjarไลบรารีเริ่มต้นทั้งหมด) หากฉันดาวน์โหลด JDK บันเดิลของ Sun และติดตั้งใน Linux ก็เป็นขั้นตอนเดียวกัน อย่างไรก็ตามฉันต้องใช้แพ็คเกจ OpenJDK เริ่มต้นของ Kubuntu ปัญหาคือว่า executables /usr/binทั้งหมดจะอยู่ใน /usr/share/javaแต่ไหจะอยู่ใน เนื่องจากไม่ได้อยู่ในJAVA_HOMEโฟลเดอร์เดียวกันฉันจึงมีปัญหากับ Grails และอาจมีปัญหากับแอปพลิเคชันอื่น ๆ ที่คาดว่าจะมีโครงสร้าง Java มาตรฐาน ถ้าฉันใช้: JAVA_HOME=/usr แอ็พพลิเคชันและสคริปต์ทั้งหมดที่ต้องการใช้ Java ที่สามารถเรียกใช้งานได้สามารถใช้โพรซีเดอร์มาตรฐานcall $JAVA_HOME/bin/executableได้ อย่างไรก็ตามเนื่องจากไหอยู่ในสถานที่อื่นจึงไม่พบเสมอไป (เช่นในจอกที่ฉันClassDefNotFoundหามาnative2ascii) ในทางกลับกันถ้าฉันใช้: JAVA_HOME=/usr/share/java ไม่มีของ executables Java ( java, javacฯลฯ ) สามารถพบได้ ดังนั้นวิธีที่ถูกต้องในการจัดการJAVA_HOMEตัวแปรใน Linux ที่ใช้ Debian คืออะไร? …

11
ทำไมเราถึงใช้บล็อกในที่สุด?
เท่าที่ฉันสามารถบอกได้ข้อมูลโค้ดทั้งสองต่อไปนี้จะมีจุดประสงค์เดียวกัน ทำไมต้องfinallyบล็อกเลย? รหัส A: try { /* Some code */ } catch { /* Exception handling code */ } finally { /* Cleanup code */ } รหัส B: try { /* Some code */ } catch { /* Exception handling code */ } // Cleanup code
91 java  .net  finally 

8
รวมรายชื่อ Observables และรอจนกว่าทั้งหมดจะเสร็จสมบูรณ์
TL; DR วิธีการแปลงTask.whenAll(List&lt;Task&gt;)เป็นRxJava? รหัสที่มีอยู่ของฉันใช้ Bolts เพื่อสร้างรายการงานแบบอะซิงโครนัสและรอจนกว่างานเหล่านั้นทั้งหมดจะเสร็จสิ้นก่อนที่จะดำเนินการขั้นตอนอื่น ๆ โดยพื้นฐานแล้วมันสร้างขึ้นList&lt;Task&gt;และส่งกลับคนเดียวTaskที่ถูกทำเครื่องหมายเป็นเสร็จสมบูรณ์เมื่อทุกงานในรายการเสร็จสมบูรณ์ตามตัวอย่างเช่นในเว็บไซต์ของสกรู ฉันต้องการแทนที่Boltsด้วยRxJavaและฉันสมมติว่าวิธีนี้ในการสร้างรายการงาน async (ขนาดที่ไม่ทราบล่วงหน้า) และรวมทั้งหมดเป็นงานเดียวObservableเป็นไปได้ แต่ฉันไม่รู้ว่าจะทำอย่างไร ฉันได้พยายามมองหาที่merge, zip, concatฯลฯ ... แต่ไม่สามารถได้รับการทำงานในList&lt;Observable&gt;ที่ฉันต้องการจะสร้างขึ้นเป็นพวกเขาทั้งหมดดูเหมือนมุ่งไปที่การทำงานในเวลาเพียงสองObservablesในเวลาถ้าผมเข้าใจเอกสารอย่างถูกต้อง ฉันกำลังพยายามเรียนรู้RxJavaและยังใหม่อยู่มากดังนั้นโปรดยกโทษให้ฉันหากนี่เป็นคำถามที่ชัดเจนหรืออธิบายไว้ในเอกสารที่ไหนสักแห่ง ฉันได้ลองค้นหาแล้ว ความช่วยเหลือใด ๆ จะได้รับการชื่นชมมาก

11
รูปแบบการออกแบบ Singleton เทียบกับถั่ว Singleton ใน Spring container
อย่างที่เราทราบกันดีว่าเรามีถั่วเป็นซิงเกิลตันตามค่าเริ่มต้นใน Spring container และหากเรามีเว็บแอปพลิเคชันที่ใช้ Spring framework แล้วในกรณีนี้เราจำเป็นต้องใช้รูปแบบการออกแบบ Singleton เพื่อเก็บข้อมูลทั่วโลกแทนที่จะสร้าง bean ผ่านฤดูใบไม้ผลิ . โปรดอดทนกับฉันหากฉันไม่สามารถอธิบายสิ่งที่ฉันตั้งใจจะถามได้

3
@ ถั่วอัตโนมัติเป็นโมฆะเมื่ออ้างถึงในตัวสร้างของถั่วอื่น
ด้านล่างนี้เป็นตัวอย่างโค้ดที่ฉันพยายามอ้างอิง ApplicationProperties bean ของฉัน เมื่อฉันอ้างอิงจากตัวสร้างมันเป็นโมฆะ แต่เมื่ออ้างอิงจากวิธีอื่นก็ใช้ได้ จนถึงตอนนี้ฉันไม่มีปัญหาในการใช้ถั่วอัตโนมัตินี้ในคลาสอื่น ๆ แต่นี่เป็นครั้งแรกที่ฉันได้ลองใช้มันในคอนสตรัคเตอร์ของคลาสอื่น ในข้อมูลโค้ดด้านล่าง applicationProperties เป็นค่าว่างเมื่อถูกเรียกจากตัวสร้าง แต่เมื่ออ้างอิงในวิธีการแปลงจะไม่เป็นเช่นนั้น ฉันขาดอะไรไป @Component public class DocumentManager implements IDocumentManager { private Log logger = LogFactory.getLog(this.getClass()); private OfficeManager officeManager = null; private ConverterService converterService = null; @Autowired private IApplicationProperties applicationProperties; // If I try and use the Autowired applicationProperties bean …
91 java  spring  autowired 

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

3
กระบวนการ Java พร้อมอินพุต / เอาต์พุตสตรีม
ฉันมีตัวอย่างโค้ดต่อไปนี้ด้านล่าง โดยคุณสามารถป้อนคำสั่งไปที่ bash shell ie echo testและให้ผลลัพธ์สะท้อนกลับ อย่างไรก็ตามหลังจากอ่านครั้งแรก กระแสข้อมูลอื่น ๆ ไม่ทำงาน? เหตุใดจึงเป็นเช่นนี้หรือฉันทำอะไรผิด? เป้าหมายสุดท้ายของฉันคือการสร้างงานตามกำหนดเวลาเธรดที่ดำเนินการคำสั่งเป็นระยะ ๆ เพื่อ / ทุบตีดังนั้นOutputStreamและInputStreamจะต้องทำงานควบคู่และไม่หยุดทำงาน ฉันยังพบข้อผิดพลาดเกี่ยวjava.io.IOException: Broken pipeกับความคิดใด ๆ ? ขอบคุณ. String line; Scanner scan = new Scanner(System.in); Process process = Runtime.getRuntime ().exec ("/bin/bash"); OutputStream stdin = process.getOutputStream (); InputStream stderr = process.getErrorStream (); InputStream stdout = process.getInputStream …
91 java  stream 

12
การรวมเทียบกับองค์ประกอบ [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันมีช่วงเวลาที่ยากลำบากในการทำความเข้าใจความแตกต่างระหว่างองค์ประกอบและการรวมใน UML ใครช่วยเสนอข้อเปรียบเทียบและความแตกต่างที่ดีให้ฉันได้ไหม ฉันชอบที่จะเรียนรู้ที่จะตระหนักถึงความแตกต่างระหว่างสิ่งเหล่านี้ในรหัสและ / หรือเพื่อดูตัวอย่างซอฟต์แวร์ / โค้ดสั้น ๆ แก้ไข: สาเหตุส่วนหนึ่งที่ฉันถามเป็นเพราะกิจกรรมการจัดทำเอกสารย้อนกลับที่เรากำลังทำในที่ทำงาน เราเขียนโค้ดแล้ว แต่เราต้องกลับไปสร้างคลาสไดอะแกรมสำหรับโค้ด เราต้องการจับการเชื่อมโยงอย่างเหมาะสม
91 java  oop  uml 

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