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

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

6
Java ปัดเศษจำนวนเท่าใดก็ได้
Наэтотвопросестьответына Stack Overflow เรียงต่อกันได้: ออกเดินทาง ฉันดูเหมือนจะไม่พบคำตอบที่ฉันกำลังมองหาเกี่ยวกับคำถามง่าย ๆ : ฉันจะปัดเศษตัวเลขใด ๆ ให้ใกล้เคียงที่สุดได้intอย่างไร ตัวอย่างเช่นเมื่อใดก็ตามที่จำนวน 0.2, 0.7, 0.2222, 0.4324, 0.99999 ฉันต้องการให้ผลลัพธ์เป็น 1 จนถึงตอนนี้ฉันมี int b = (int) Math.ceil(a / 100); ดูเหมือนว่าจะไม่ได้ทำงานแม้ว่า
146 java  math  int  rounding 

3
เข้าสู่ระบบเพื่อบันทึกข้อความที่แตกต่างกันไปยังสองไฟล์
ฉันใช้ logback / slf4j เพื่อทำการบันทึกของฉัน ฉันต้องการแยกวิเคราะห์ไฟล์บันทึกของฉันเพื่อวิเคราะห์ข้อมูลบางอย่างดังนั้นแทนที่จะแยกวิเคราะห์ไฟล์ขนาดใหญ่ที่ดี (ส่วนใหญ่ประกอบด้วยคำสั่ง debug) ฉันต้องการมีอินสแตนซ์ของตัวบันทึกสองตัวที่แต่ละล็อกไปยังไฟล์แยกกัน หนึ่งชุดสำหรับการวิเคราะห์และอีกชุดสำหรับการบันทึกอเนกประสงค์ ไม่มีใครรู้ว่าเป็นไปได้ด้วย Logback หรือคนตัดไม้อื่น ๆ สำหรับเรื่องนั้น?
146 java  logging  logback  slf4j 

4
ฉันจะเปลี่ยนไปใช้การโค่นล้มสาขาอื่นใน Intellij ได้อย่างไร
แนวคิดของการสับเปลี่ยนสาขาใน IntelliJ คืออะไร? ฉันต้องเป็นคนตาบอดหรือคนงี่เง่า ... ฉันคิดว่าจะมีตัวเลือก "สลับไปยังการคัดลอก" หรืออะไรทำนองนั้น แต่ไม่มี ... แก้ไขเพื่อความกระจ่าง: IDE ก่อนหน้าของฉันมีตัวเลือก "สลับไปที่การคัดลอก" อย่างง่ายซึ่งอัปเดตไฟล์ทั้งหมดแตกต่างจากสาขา / ลำตัวปัจจุบัน IntelliJ ดูเหมือนจะมีวิธีที่แตกต่างอย่างสิ้นเชิงกับเรื่องนี้ซึ่งฉันดูเหมือนจะไม่เข้าใจ ความช่วยเหลือนั้นไม่มีประโยชน์อย่างมาก คำหลักลิงก์หรือคำแนะนำที่เป็นประโยชน์มีความนิยมอย่างมาก ขอบคุณ


6
วิธีระบุค่าให้กับหมายเหตุประกอบจาก Constant java
ฉันคิดว่าสิ่งนี้อาจเป็นไปไม่ได้ใน Java เพราะคำอธิบายประกอบและพารามิเตอร์ของมันได้รับการแก้ไขในเวลารวบรวม ฉันมีส่วนต่อประสานดังนี้ public interface FieldValues { String[] FIELD1 = new String[]{"value1", "value2"}; } และอีกชั้นหนึ่งว่า @SomeAnnotation(locations = {"value1", "value2"}) public class MyClass { .... } ฉันทำเครื่องหมายหลายคลาสด้วยคำอธิบายประกอบและฉันต้องการทราบว่าฉันสามารถหลีกเลี่ยงการระบุสตริงในคำอธิบายประกอบทุกครั้งที่ฉันต้องการใช้แทน @SomeAnnotation(locations = FieldValues.FIELD1) public class MyClass { .... } อย่างไรก็ตามสิ่งนี้ให้ข้อผิดพลาดในการคอมไพล์เช่นค่าคำอธิบายประกอบควรเป็น initializer ของอาร์เรย์เป็นต้นมีใครรู้ว่าฉันสามารถใช้ค่าคงที่แบบสตริงหรือค่าคงที่สตริง [] เพื่อให้ค่าของคำอธิบายประกอบได้หรือไม่
146 java  arrays  annotations 

9
เหตุใด Java Map จึงไม่ขยายการรวบรวม
ฉันรู้สึกประหลาดใจโดยความจริงที่ว่าไม่ได้เป็นMap<?,?>Collection<?> ฉันคิดว่ามันคงสมเหตุสมผลถ้ามีการประกาศเช่นนี้: public interface Map<K,V> extends Collection<Map.Entry<K,V>> ท้ายที่สุดแล้ว a Map<K,V>คือชุดของMap.Entry<K,V>ใช่ไหม ดังนั้นมีเหตุผลที่ดีว่าทำไมจึงไม่ใช้งานเช่นนี้ ขอบคุณ Cletus สำหรับคำตอบที่เชื่อถือได้มากที่สุด แต่ฉันยังคงสงสัยว่าทำไมหากคุณสามารถดูMap<K,V>เป็นSet<Map.Entries<K,V>>(ผ่านentrySet()) มันไม่เพียงขยายส่วนต่อประสานนั้นแทน ถ้า a MapคือCollectionอะไรองค์ประกอบคืออะไร คำตอบที่สมเหตุสมผลคือ "คู่ของคีย์ - ค่า" ว่าinterface Map<K,V> extends Set<Map.Entry<K,V>>จะดี! แต่สิ่งนี้ให้สิ่งที่เป็นMapนามธรรมที่จำกัด (และไม่มีประโยชน์อย่างยิ่ง) แต่ถ้าเป็นอย่างนั้นทำไมentrySetอินเทอร์เฟซถูกระบุไว้ทำไม? มันจะต้องมีประโยชน์อย่างใด (และฉันคิดว่ามันง่ายที่จะเถียงกับตำแหน่งนั้น!) คุณไม่สามารถถามค่าคีย์แผนที่ที่กำหนดและไม่สามารถลบรายการสำหรับคีย์ที่กำหนดโดยไม่ทราบว่าคีย์แมปนั้นให้คุณค่าอะไร ฉันไม่ได้บอกว่านั่นคือทั้งหมดที่มีให้Map! สามารถและควรรักษาวิธีอื่น ๆ ทั้งหมด (ยกเว้นentrySetซึ่งซ้ำซ้อนในขณะนี้)!
146 java  oop  collections 

10
คุณสามารถแบ่งสตรีมเป็นสองสตรีมได้หรือไม่?
ฉันมีชุดข้อมูลที่แสดงโดยกระแส Java 8: Stream<T> stream = ...; ฉันสามารถดูวิธีการกรองเพื่อให้ได้ชุดย่อยแบบสุ่ม - ตัวอย่างเช่น Random r = new Random(); PrimitiveIterator.OfInt coin = r.ints(0, 2).iterator(); Stream<T> heads = stream.filter((x) -> (coin.nextInt() == 0)); ฉันยังสามารถดูวิธีที่ฉันสามารถลดสตรีมนี้เพื่อให้ได้ตัวอย่างเช่นสองรายการที่แสดงชุดข้อมูลแบบสุ่มสองครึ่งและจากนั้นเปลี่ยนกลับเป็นสตรีม แต่มีวิธีโดยตรงในการสร้างสองสตรีมจากสตรีมเริ่มต้นหรือไม่ สิ่งที่ต้องการ (heads, tails) = stream.[some kind of split based on filter] ขอบคุณสำหรับความเข้าใจใด ๆ
146 java  java-8  java-stream 

19
คุณจัดรูปแบบวันในเดือนนั้นเพื่อพูดว่า "11th", "21" หรือ "23" (ตัวบ่งชี้ลำดับ) อย่างไร
ฉันรู้ว่านี้จะให้ฉันวันของเดือนเป็นตัวเลข ( 11, 21, 23): SimpleDateFormat formatDayOfMonth = new SimpleDateFormat("d"); แต่อย่างไรคุณจัดรูปแบบวันที่ของเดือนที่จะมีตัวบ่งชี้ลำดับการพูด11th, 21stหรือ23rd?

7
วิธีดึงข้อมูลการเชื่อมโยง FetchType.LAZY กับ JPA และไฮเบอร์เนตใน Spring Controller
ฉันมีคลาสบุคคล: @Entity public class Person { @Id @GeneratedValue private Long id; @ManyToMany(fetch = FetchType.LAZY) private List<Role> roles; // etc } ด้วยความสัมพันธ์แบบหลายต่อหลายคนที่ขี้เกียจ ในตัวควบคุมของฉันฉันมี @Controller @RequestMapping("/person") public class PersonController { @Autowired PersonRepository personRepository; @RequestMapping("/get") public @ResponseBody Person getPerson() { Person person = personRepository.findOne(1L); return person; } } และ PersonRepository เป็นเพียงรหัสนี้เขียนตามคู่มือนี้ public interface …

8
จะใช้ MDC กับเธรดพูลได้อย่างไร
ในซอฟต์แวร์ของเราเราใช้ MDC อย่างกว้างขวางเพื่อติดตามสิ่งต่างๆเช่นรหัสเซสชันและชื่อผู้ใช้สำหรับคำขอเว็บ ทำงานได้ดีในขณะที่ทำงานในเธรดดั้งเดิม อย่างไรก็ตามมีหลายสิ่งหลายอย่างที่ต้องดำเนินการในพื้นหลัง เพื่อที่เราจะใช้java.concurrent.ThreadPoolExecutorและjava.util.Timerคลาสพร้อมกับบริการดำเนินการ async ที่ผ่านการม้วนตัวเอง บริการทั้งหมดเหล่านี้จัดการเธรดพูลของตนเอง นี่คือสิ่งที่คู่มือ Logbackได้พูดเกี่ยวกับการใช้ MDC ในสภาพแวดล้อมดังกล่าว: สำเนาของบริบทการวินิจฉัยที่แมปไม่สามารถสืบทอดโดยเธรดผู้ปฏิบัติงานจากเธรดเริ่มต้นได้เสมอไป นี่เป็นกรณีที่เมื่อใช้ java.util.concurrent.Executors สำหรับการจัดการเธรด ตัวอย่างเช่นเมธอด newCachedThreadPool สร้าง ThreadPoolExecutor และเช่นเดียวกับรหัสการรวมเธรดอื่น ๆ มันมีตรรกะการสร้างเธรดที่สลับซับซ้อน ในกรณีเช่นนี้ขอแนะนำให้เรียกใช้ MDC.getCopyOfContextMap () บนเธรด (ต้นแบบ) ต้นฉบับก่อนส่งงานไปยังผู้ปฏิบัติการ เมื่องานรันตามการดำเนินการครั้งแรกควรเรียกใช้ MDC.setContextMapValues ​​() เพื่อเชื่อมโยงสำเนาที่เก็บไว้ของค่า MDC ดั้งเดิมกับเธรดที่ได้รับการจัดการ Executor ใหม่ สิ่งนี้จะใช้ได้ แต่เป็นการง่ายมากที่จะลืมการเพิ่มสายเหล่านั้นและไม่มีวิธีที่ง่ายในการจดจำปัญหาจนกว่าจะสายเกินไป เครื่องหมายเดียวกับ Log4j คือคุณได้รับข้อมูล MDC ที่ขาดหายไปในบันทึกและด้วย Logback คุณจะได้รับข้อมูล MDC ที่เก่า (เนื่องจากเธรดในพูลของดอกยางนั้นได้รับ …
146 java  logging  slf4j  logback  mdc 

7
Runtime.getRuntime () คืออะไร TotalMemory () และ freeMemory ()
ฉันสงสัยว่าความหมายที่แท้จริงของ Runtime.getRuntime () คืออะไร TotalMemory () , Runtime.getRuntime (). freeMemory ()และRuntime.getRuntime (). maxMemory ()คือ ความเข้าใจของฉันคือRuntime.getRuntime().totalMemory()ส่งคืนหน่วยความจำทั้งหมดที่กระบวนการของฉันใช้ ถูกต้องหรือไม่ วิธีการเกี่ยวกับfreeMemory()และmaxMemory()?
146 java 

10
ฉันจะส่งผ่านวัตถุบิตแมปจากกิจกรรมหนึ่งไปอีกกิจกรรมหนึ่งได้อย่างไร
ในกิจกรรมของฉันฉันสร้างBitmapวัตถุจากนั้นฉันต้องเปิดอีกตัวActivityฉันจะส่งBitmapวัตถุนี้จากกิจกรรมย่อยได้อย่างไร (กิจกรรมที่จะเปิดตัว)

14
สปริง JPA เลือกคอลัมน์ที่เฉพาะเจาะจง
ฉันใช้ Spring JPA เพื่อดำเนินการฐานข้อมูลทั้งหมด อย่างไรก็ตามฉันไม่รู้วิธีเลือกคอลัมน์เฉพาะจากตารางใน Spring JPA ตัวอย่างเช่น: SELECT projectId, projectName FROM projects

1
Java ตรวจสอบวิธีการโมฆะเรียก n ครั้งด้วย Mockito
ฉันกำลังพยายามตรวจสอบว่ามีการเรียกเมธอด (โมฆะ) ภายใน DAO - ฉันกำลังใช้จุดคอมมิตที่ส่งรายการผลลัพธ์จนถึงจุดนั้นรีเซ็ตรายการและดำเนินการต่อ สมมติว่าฉันมี 4 สิ่งในรายการและฉันมีจุดคอมมิตเป็น 1 ฉันคาดว่าเมธอด "ส่ง" จะถูกเรียก 4 ครั้ง ฉันตรวจสอบได้ว่าเมธอดถูกเรียกเพียงครั้งเดียวโดยการเขียน Mockito.verify(mock).send() มันผ่าน .. แต่ฉันต้องการยืนยันจำนวนครั้งที่ถูกเรียก ฉันจะคิดว่า Mockito.verify(mock.send(), times(4)) จะเพียงพอ แต่กล่าวว่าพารามิเตอร์ไม่ถูกต้องสำหรับการตรวจสอบ อนึ่งถ้าฉันเปลี่ยน Mockito.verify(mock).send()ไป Mockito.verify(mock.send())หรือ Mockito.verify((mock).send())ฉันจะได้รับข้อผิดพลาดเดียวกัน ความคิดเกี่ยวกับเรื่องนี้?

14
Java LinkedHashMap รับรายการแรกหรือรายการสุดท้าย
ฉันใช้LinkedHashMapเพราะลำดับการป้อนคีย์ในแผนที่เป็นสิ่งสำคัญ แต่ตอนนี้ฉันต้องการรับค่าของคีย์ตั้งแต่แรก (รายการที่ป้อนครั้งแรก) หรือรายการสุดท้าย ควรมีวิธีการเหมือนfirst()และlast()หรืออย่างนั้นหรือไม่? ฉันจำเป็นต้องมีตัวทำซ้ำเพื่อรับรายการคีย์แรกหรือไม่? นั่นคือเหตุผลที่ฉันใช้LinkedHashMap! ขอบคุณ!

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