คำถามติดแท็ก language-agnostic

ใช้แท็กนี้สำหรับคำถามโปรแกรมที่เป็นอิสระจากภาษาการเขียนโปรแกรมเฉพาะใด ๆ

4
มีใครใช้งานฟีโบนัชชี - กองอย่างมีประสิทธิภาพจริงหรือไม่?
Fibonacci-Heapเคยมีใครบ้างในพวกคุณบ้างไหม? ฉันทำไม่กี่ปีที่ผ่านมา แต่มันก็มีหลายคำสั่งที่ช้ากว่าการใช้ BinHeaps แบบอาเรย์ ย้อนกลับไปฉันคิดว่ามันเป็นบทเรียนที่มีค่าในการวิจัยที่ไม่ดีเท่าที่ควรจะเป็น อย่างไรก็ตามงานวิจัยจำนวนมากอ้างว่าเวลาทำงานของอัลกอริทึมของพวกเขาขึ้นอยู่กับการใช้ Fibonacci-Heap คุณเคยสร้างการใช้งานที่มีประสิทธิภาพหรือไม่? หรือคุณทำงานกับชุดข้อมูลขนาดใหญ่จนฟีโบนักชี - กองมีประสิทธิภาพมากขึ้นหรือไม่? ถ้าเป็นเช่นนั้นรายละเอียดบางอย่างจะได้รับการชื่นชม

9
ขว้างแมวออกไปนอกหน้าต่าง
ลองนึกภาพคุณอยู่ในอาคารสูงที่มีแมว แมวสามารถมีชีวิตรอดตกจากหน้าต่างชั้นต่ำ แต่จะตายหากถูกโยนลงมาจากชั้นสูง คุณจะรู้ได้อย่างไรว่าหยดที่ยาวที่สุดที่แมวสามารถอยู่รอดได้โดยใช้จำนวนครั้งน้อยที่สุด? เห็นได้ชัดว่าถ้าคุณมีแมวเพียงตัวเดียวคุณก็สามารถค้นหาแบบเชิงเส้นได้ ก่อนโยนแมวจากชั้นแรก หากยังมีชีวิตอยู่ให้โยนออกจากวินาที ในที่สุดหลังจากถูกโยนจากพื้น f แมวจะตาย คุณจะรู้ว่าชั้น f-1 เป็นชั้นที่ปลอดภัยที่สุด แต่ถ้าคุณมีแมวมากกว่าหนึ่งตัว ตอนนี้คุณสามารถลองค้นหาแบบลอการิทึมได้แล้ว สมมติว่าบิลด์มี 100 ชั้นและคุณมีแมวเหมือนกันสองตัว หากคุณโยนแมวตัวแรกออกจากชั้นที่ 50 แล้วคุณจะต้องค้นหา 50 ชั้นอย่างเป็นเส้นตรง คุณสามารถทำได้ดียิ่งขึ้นถ้าคุณเลือกชั้นล่างสำหรับความพยายามครั้งแรกของคุณ สมมติว่าคุณเลือกที่จะจัดการปัญหา 20 ชั้นในเวลาเดียวกันและชั้นที่ร้ายแรงที่สุดคือ # 50 ในกรณีนี้แมวตัวแรกของคุณจะรอดจากเที่ยวบินชั้น 20 และ 40 ก่อนตายจากชั้น 60 คุณเพียงแค่ต้องตรวจสอบชั้น 41 ถึง 49 ทีละตัว นั่นคือทั้งหมด 12 ครั้งซึ่งดีกว่า 50 อย่างที่คุณต้องการหากคุณพยายามกำจัดเลขฐานสอง โดยทั่วไปแล้วกลยุทธ์ที่ดีที่สุดคืออะไรและมีความซับซ้อนในกรณีที่เลวร้ายที่สุดสำหรับอาคารที่ไม่มีแมวสองตัว แล้วสำหรับชั้น n และแมว m …

12
ถ้าเงื่อนไข A ตรงกันเงื่อนไข B ต้องถูกจับคู่เพื่อดำเนินการ C
คำถามของฉันคือ: if (/* condition A */) { if(/* condition B */) { /* do action C */ } else /* ... */ } else { /* do action C */ } เป็นไปได้ไหมที่จะเขียนโค้ดของการกระทำ C ครั้งเดียวแทนที่จะเป็นสองครั้ง? จะทำให้มันง่ายขึ้นได้อย่างไร?

30
แนวทางปฏิบัติที่ดีที่สุดในการเขียนโปรแกรมป้องกัน (โปรดปิด)
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา หากคุณต้องเลือกเทคนิคที่คุณโปรดปราน (ฉลาด) เพื่อป้องกันการเข้ารหัสพวกเขาจะเป็นอย่างไร? แม้ว่าภาษาปัจจุบันของฉันคือ Java และ Objective-C (มีพื้นหลังเป็น C ++) แต่สามารถตอบได้ทุกภาษา เน้นที่นี่จะเป็นเทคนิคการป้องกันที่ฉลาดกว่าที่ 70% + ของเราที่นี่รู้อยู่แล้ว ดังนั้นถึงเวลาขุดลึกลงไปในกระเป๋าของคุณ กล่าวอีกนัยหนึ่งลองนึกถึงตัวอย่างที่ไม่น่าสนใจ : if(5 == x) แทน if(x == 5) : เพื่อหลีกเลี่ยงการมอบหมายที่ไม่ได้ตั้งใจ นี่คือตัวอย่างของวิธีปฏิบัติในการตั้งโปรแกรมการป้องกันที่น่าสนใจ (ตัวอย่างเฉพาะภาษามีอยู่ใน Java): - ล็อคตัวแปรของคุณจนกว่าคุณจะรู้ว่าคุณต้องเปลี่ยนพวกเขา นั่นคือคุณสามารถประกาศทั้งหมดตัวแปรจนกว่าคุณจะรู้ว่าคุณจะต้องเปลี่ยนตรงจุดนี้คุณสามารถเอาfinal finalข้อเท็จจริงที่ไม่รู้จักทั่วไปอย่างหนึ่งคือสิ่งนี้ใช้ได้กับวิธีการพารามิเตอร์: public void foo(final int arg) { /* Stuff …

30
ตรงกันข้ามกับ 'แยกวิเคราะห์' คืออะไร? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ปิดให้บริการใน6 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันมีฟังก์ชั่น parseQuery ที่แยกวิเคราะห์แบบสอบถาม SQL เป็นตัวแทนนามธรรมของแบบสอบถามนั้น ฉันกำลังจะเขียนฟังก์ชั่นที่นำเสนอนามธรรมของแบบสอบถามและส่งกลับสตริงแบบสอบถาม SQL ฉันควรเรียกฟังก์ชันที่สองว่าอะไร

6
ส่วนตัว vs ได้รับการป้องกัน - การเปิดเผยที่ดีเกี่ยวกับการปฏิบัติที่เกี่ยวข้อง [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันค้นหามาแล้วและฉันรู้ความแตกต่างทางทฤษฎี สาธารณะ - คลาสใด ๆ / ฟังก์ชั่นสามารถเข้าถึงวิธีการ / ทรัพย์สิน ได้รับการป้องกัน - เฉพาะคลาสนี้และคลาสย่อยใด ๆ เท่านั้นที่สามารถเข้าถึงเมธอด / คุณสมบัติได้ ส่วนตัว - คลาสนี้เท่านั้นที่สามารถเข้าถึงวิธีการ / คุณสมบัติ มันจะไม่ได้รับมรดกด้วยซ้ำ นั่นคือทั้งหมดที่ดีและดีคำถามคือสิ่งที่แตกต่างในทางปฏิบัติระหว่างพวกเขา? คุณจะใช้privateเมื่อใดและจะใช้เมื่อprotectedใด มีวิธีปฏิบัติที่ดีที่เป็นมาตรฐานหรือเป็นที่ยอมรับได้หรือไม่? จนถึงตอนนี้เพื่อรักษาแนวคิดของการสืบทอดและ polymorphism ฉันใช้publicสำหรับทุกสิ่งที่ควรเข้าถึงได้จากภายนอก (เช่นตัวสร้างและการทำงานของคลาสหลัก) และprotectedสำหรับวิธีการภายใน (ตรรกะวิธีการช่วยเหลือ ฯลฯ ) ฉันกำลังติดตามใช่ไหม? (โปรดทราบว่าคำถามนี้มีไว้สำหรับฉัน แต่ยังใช้สำหรับการอ้างอิงในอนาคตเนื่องจากฉันไม่ได้เห็นคำถามเช่นนี้ดังนั้น)

8
คุณลักษณะการแนะนำของ Amazon ทำงานอย่างไร
เทคโนโลยีใดบ้างที่อยู่ด้านหลังหน้าจอของเทคโนโลยีแนะนำของ Amazon ฉันเชื่อว่าคำแนะนำของ Amazon ปัจจุบันดีที่สุดในตลาด แต่พวกเขาจะให้คำแนะนำที่เกี่ยวข้องเช่นนั้นกับเราได้อย่างไร เมื่อเร็ว ๆ นี้เราได้มีส่วนร่วมกับโครงการแนะนำประเภทที่คล้ายกัน แต่ต้องการทราบเกี่ยวกับเทคโนโลยีแนะนำของ Amazon โดยเฉพาะจากมุมมองทางเทคนิค อินพุตใด ๆ จะได้รับการชื่นชมอย่างมาก ปรับปรุง: สิทธิบัตรนี้อธิบายถึงวิธีการแนะนำในแบบของคุณ แต่มันไม่ได้เป็นเรื่องเทคนิคมากนักและมันจะดีมากถ้ามีข้อมูลเชิงลึก จากความคิดเห็นของ Dave การวิเคราะห์ความสัมพันธ์เป็นพื้นฐานสำหรับเครื่องมือแนะนำประเภทนั้น นอกจากนี้ที่นี่มีการอ่านที่ดีในหัวข้อ เข้าใจการวิเคราะห์ตะกร้าตลาดอย่างชัดเจน การวิเคราะห์ตะกร้าตลาด การวิเคราะห์ความสัมพันธ์ การอ่านที่แนะนำ: การทำเหมืองข้อมูล: แนวคิดและเทคนิค

4
ควรเยาะเย้ยเมื่อใด
ฉันมีความเข้าใจพื้นฐานของปลอมจำลองและวัตถุ แต่ผมไม่แน่ใจว่าผมมีความรู้สึกเกี่ยวกับเมื่อ / สถานที่ที่จะใช้เยาะเย้ย - โดยเฉพาะอย่างยิ่งมันจะนำไปใช้กับสถานการณ์นี้ที่นี่

12
ภาษาใดบ้างที่มีโอเปอเรเตอร์การสลับบูลีนแบบเอกนารี?
นี่เป็นคำถามเชิงทฤษฎีมากกว่า C ++ และภาษา (ใน) ขึ้นอยู่กับมันโดยตรง (Java, C #, PHP) มีตัวดำเนินการทางลัดสำหรับการกำหนดผลลัพธ์ของตัวดำเนินการไบนารีส่วนใหญ่ให้กับตัวถูกดำเนินการแรกเช่น a += 3; // for a = a + 3 a *= 3; // for a = a * 3; a <<= 3; // for a = a << 3; แต่เมื่อฉันต้องการสลับนิพจน์บูลีนฉันมักพบว่าตัวเองเขียนอะไรบางอย่างเช่น a = !a; ซึ่งน่ารำคาญเมื่อaมีการแสดงออกยาวเช่น this.dataSource.trackedObject.currentValue.booleanFlag = !this.dataSource.trackedObject.currentValue.booleanFlag; (ใช่กฎหมายของ …

10
รูปแบบการออกแบบ: บทคัดย่อจากโรงงานเทียบกับวิธีการของโรงงาน
หมายเหตุ: คำถามอยู่ท้ายของโพสต์ ฉันได้อ่านกระทู้ StackOverflow อื่น ๆ เกี่ยวกับโรงงานบทคัดย่อ VS โรงงานวิธี ฉันเข้าใจเจตนาของแต่ละรูปแบบ อย่างไรก็ตามฉันไม่ชัดเจนในคำจำกัดความ วิธีการจากโรงงานกำหนดอินเทอร์เฟซสำหรับการสร้างวัตถุ แต่ให้คลาสย่อยตัดสินใจว่าจะสร้างอินสแตนซ์ใด เมธอดจากโรงงานอนุญาตให้คลาสเลื่อนการอินสแตนซ์ไปที่คลาสย่อย ในทางตรงกันข้ามโรงงานนามธรรมให้อินเทอร์เฟซสำหรับการสร้างครอบครัวของวัตถุที่เกี่ยวข้องหรือขึ้นอยู่กับโดยไม่ต้องระบุคลาสที่เป็นรูปธรรมของพวกเขา - John Feminella โรงงานบทคัดย่อมีลักษณะคล้ายกันมากกับโรงงานวิธี ฉันวาดคลาส UML สองสามเพื่อแสดงจุดของฉัน บันทึก: แผนภาพนี้มาจากwww.yuml.comดังนั้นจึงไม่ได้เน้นอย่างสมบูรณ์แบบ แต่มันเป็นบริการฟรี :) ไดอะแกรมอาจไม่สมบูรณ์แบบ ฉันยังคงเรียนรู้รูปแบบการออกแบบของGoF วิธีการโรงงาน: Abstract Factory (เฉพาะสมาชิก 1 คน): บทคัดย่อจากโรงงาน (มีสมาชิกเพิ่ม): คำถาม: หากAbstract Factoryมีผู้สร้างเพียงคนเดียวและหนึ่งผลิตภัณฑ์มันยังคงเป็นรูปแบบAbstract Factoryหรือไม่ (อินเทอร์เฟซสำหรับสร้าง familes) สามารถโรงงานวิธีสร้างคอนกรีตถูกสร้างขึ้นจากการเชื่อมต่อหรือไม่ก็จะต้องมีการออกจากชั้นเรียน? (คลาสเลื่อนการอินสแตนซ์ไปที่คลาสย่อย) หากโรงงานนามธรรมสามารถมีผู้สร้างเพียงคนเดียวและหนึ่งผลิตภัณฑ์ความแตกต่างเพียงอย่างเดียวระหว่างโรงงานนามธรรมและวิธีการโรงงานที่ผู้สร้างสำหรับอดีตคืออินเทอร์เฟซและผู้สร้างสำหรับหลังเป็นระดับหรือไม่

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

9
ความแตกต่างที่เล็กที่สุดระหว่าง 2 Angles
กำหนดให้ 2 มุมในช่วง -PI -> PI รอบ ๆ พิกัดค่าของมุมที่เล็กที่สุดของ 2 มุมระหว่างทั้งสองมุมคืออะไร? คำนึงว่าความแตกต่างระหว่าง PI และ -PI ไม่ใช่ 2 PI แต่เป็นศูนย์ ตัวอย่าง: ลองนึกภาพวงกลมที่มีเส้น 2 เส้นออกมาจากจุดศูนย์กลางมีมุม 2 มุมระหว่างเส้นเหล่านั้นมุมที่ทำจากด้านในหรือที่เรียกว่ามุมที่เล็กกว่าและมุมที่ทำด้านนอกหรือที่เรียกว่ามุมที่ใหญ่กว่า มุมทั้งสองเมื่อรวมกันแล้วจะทำให้เป็นวงกลมเต็ม เนื่องจากแต่ละมุมสามารถปรับให้พอดีกับช่วงที่กำหนดได้ค่ามุมที่น้อยกว่าคือเท่าใดโดยคำนึงถึงการโรลโอเวอร์

19
สร้างสีระหว่างสีแดงกับสีเขียวเพื่อเป็นมิเตอร์ไฟฟ้าหรือไม่?
ฉันกำลังเขียนเกม Java และฉันต้องการใช้ power meter สำหรับการที่จะถ่ายอะไรซักอย่าง ฉันจำเป็นต้องเขียนฟังก์ชั่นที่ใช้ int ระหว่าง 0 - 100 และขึ้นอยู่กับว่าตัวเลขนั้นสูงแค่ไหนมันจะคืนค่าสีระหว่างสีเขียว (0 ในระดับพลังงาน) และสีแดง (100 ในระดับพลังงาน) คล้ายกับการทำงานของตัวควบคุมระดับเสียง: ฉันต้องดำเนินการอะไรบ้างกับองค์ประกอบสีแดงสีเขียวและสีน้ำเงินเพื่อสร้างสีระหว่างสีเขียวและสีแดง ดังนั้นฉันสามารถเรียกใช้พูดgetColor(80)และมันจะกลับสีส้ม (ค่าของมันใน R, G, B) หรือgetColor(10)ที่จะกลับค่า RGB เขียว / เหลืองมากขึ้น ฉันรู้ว่าฉันต้องเพิ่มองค์ประกอบของค่า R, G, B สำหรับสีใหม่ แต่ฉันไม่ทราบว่ามีอะไรเพิ่มขึ้นหรือลดลงโดยเฉพาะเมื่อสีเปลี่ยนจากสีเขียว - แดง ความคืบหน้า: ฉันลงเอยด้วยการใช้พื้นที่สี HSV / HSB เพราะฉันชอบการไล่สีที่ดีกว่า (ไม่มีสีน้ำตาลเข้มอยู่ตรงกลาง) ฟังก์ชั่นที่ฉันใช้คือ: public Color getColor(double power) …

3
รูปแบบการออกแบบของผู้สังเกตการณ์กับ“ ผู้ฟัง”
สำหรับฉันแล้วรูปแบบการออกแบบของ Observer ดังที่อธิบายไว้ใน GOF นั้นเป็นสิ่งเดียวกับที่ฟังในชุดเครื่องมือต่างๆ มีความแตกต่างระหว่างแนวคิดหรือเป็น Listeners และ Observers จริงๆในสิ่งเดียวกัน (ฉันไม่ได้มองหาการใช้ภาษาคอมพิวเตอร์เฉพาะเจาะจงฉันแค่ต้องการเข้าใจความแตกต่าง (ถ้ามี) จากมุมมองของการออกแบบใช่ฉันรู้ว่ามีคำตอบมากมายสำหรับคำถามที่คล้ายกันใน SOF แต่พวกเขาหยั่งราก ในคำถามเฉพาะเกี่ยวกับภาษาเฉพาะ - ฉันกำลังมองหาคำตอบการออกแบบไม่ใช่คำตอบภาษา)

8
การชกมวยและการแกะกล่องคืออะไรและการแลกเปลี่ยนคืออะไร?
ฉันกำลังมองหาคำตอบที่ชัดเจนกระชับและถูกต้อง ตามหลักการแล้วเป็นคำตอบที่แท้จริงแม้ว่าจะยินดีต้อนรับลิงก์ไปยังคำอธิบายที่ดี

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