วิศวกรรมซอฟต์แวร์

ถาม - ตอบสำหรับมืออาชีพนักวิชาการและนักเรียนที่ทำงานในวงจรการพัฒนาระบบ

3
CRUD API: คุณจะระบุฟิลด์ที่จะอัปเดตได้อย่างไร
สมมติว่าคุณมีโครงสร้างข้อมูลบางประเภทซึ่งยังคงอยู่ในฐานข้อมูลบางประเภท เพื่อความง่ายเราจะเรียกโครงสร้างข้อมูลPersonนี้ ขณะนี้คุณได้รับมอบหมายให้ออกแบบ CRUD API ซึ่งอนุญาตให้แอปพลิเคชันอื่นสร้างอ่านอัปเดตและลบPersons เพื่อความง่ายลองสมมติว่า API นี้เข้าถึงได้ผ่านบริการเว็บบางประเภท สำหรับชิ้นส่วน C, R และ D ของ CRUD การออกแบบนั้นง่าย ฉันจะใช้เครื่องหมายคล้ายฟังก์ชัน C # - การใช้งานอาจเป็น SOAP, REST / JSON หรืออย่างอื่น: class Person { string Name; DateTime? DateOfBirth; ... } Identifier CreatePerson(Person); Person GetPerson(Identifier); void DeletePerson(Identifier); แล้วการอัพเดตล่ะ? สิ่งที่ต้องทำตามธรรมชาติคือ void UpdatePerson(Identifier, Person); แต่วิธีการที่คุณจะต้องระบุให้ซึ่งด้านของPersonการอัปเดต? วิธีแก้ปัญหาที่ฉันสามารถทำได้: คุณสามารถกำหนดให้บุคคลที่สมบูรณ์ต้องผ่านเช่นลูกค้าจะทำสิ่งนี้เพื่ออัปเดตวันเกิด: …

1
การควบคุมเวอร์ชันของเว็บไซต์: ไฟล์ dev / production front-end
ฉันพยายามคิดถึงวิธีที่ดีกว่าในการควบคุมเวอร์ชันโครงการเว็บไซต์ของเรา โปรดทราบว่าฉันเป็นเพียงส่วนหนึ่งของส่วนหน้าดังนั้นฉันจึงไม่มีความรู้ที่ลึกซึ้งเกี่ยวกับ VCS เวิร์กโฟลว์กำลังเปลี่ยนแปลงและพฤติกรรมการควบคุมเวอร์ชันที่ผ่านมาล้าสมัย ปัญหาหลักคือมี 2 อาร์เรย์ของไฟล์ส่วนหน้าสำหรับแต่ละเว็บไซต์ สภาพแวดล้อม dev (ไฟล์น้อยลง js ที่ไม่บีบอัดรูปภาพ ฯลฯ ) สภาวะแวดล้อมบิลด์ "gulpified" (ทุกสิ่งถูกบีบอัดและไม่สามารถอ่านได้โดยมนุษย์) แต่คุณไม่สามารถขายเว็บไซต์ด้วยไฟล์ต้นฉบับได้ มันรู้สึกไม่ถูกต้อง มีวิธีแก้ปัญหาของการมี 2 repos: หนึ่งบิลด์หนึ่ง dev กับอึกส่งไฟล์ dev เพื่อสร้างไดเรกทอรี แต่มันเป็นเรื่องยุ่งยากที่จะรักษาด้วย บริษัท เล็ก ๆ ฉันไม่คิดว่ามันเยี่ยมขนาดนั้น มันสร้าง repos มากมายและผู้คนต้องจัดการกับ repos หลาย ๆ ครั้งบางครั้งถึงกับ repo svn เพียงตัวเดียวปัญหาก็เกิดขึ้น ดังนั้นยังมีวิธีแก้ปัญหาของการมี 1 repo: ไฟล์ต้นฉบับและไฟล์ prod ใน svn เดียวกัน …

1
กำลังแคชคำขอที่ได้รับการรับรองความถูกต้องสำหรับผู้ใช้ทั้งหมด
ฉันกำลังทำงานกับเว็บแอปที่ต้องจัดการกับแรงกระตุ้นที่มีขนาดใหญ่มากของผู้ใช้งานพร้อมกันซึ่งต้องได้รับอนุญาตเพื่อขอเนื้อหาที่เหมือนกัน ในสถานะปัจจุบันมันหมดอำนาจโดยสิ้นเชิงแม้แต่กับ 32-core AWS instance (โปรดทราบว่าเราใช้ Nginx เป็น reverse proxy) การตอบสนองไม่สามารถแคชได้อย่างง่ายดายเนื่องจากในกรณีที่เลวร้ายที่สุดเราต้องตรวจสอบว่าผู้ใช้รับรองความถูกต้องโดยการถอดรหัส JWT หรือไม่ สิ่งนี้ทำให้เราต้องยิง Laravel 4 ซึ่งส่วนใหญ่เห็นด้วยช้าแม้เปิดใช้งาน PHP-FPM และ OpCache นี่คือสาเหตุส่วนใหญ่เนื่องมาจากขั้นตอนการบูตที่แข็งแกร่ง บางคนอาจถามคำถาม "ทำไมคุณถึงใช้ PHP และ Laravel ตั้งแต่แรกถ้าคุณรู้ว่านี่จะเป็นปัญหา?" - แต่มันสายเกินไปแล้วที่จะกลับไปตัดสินใจเรื่องนั้น! ทางออกที่เป็นไปได้ ทางออกหนึ่งที่ถูกนำมาใช้คือการแยกโมดูล Auth จาก Laravel ไปยังโมดูลภายนอกที่มีน้ำหนักเบา (เขียนในสิ่งที่เร็วกว่า C) ซึ่งมีหน้าที่รับผิดชอบในการถอดรหัส JWT และตัดสินใจว่าผู้ใช้รับรองความถูกต้องหรือไม่ การไหลของการร้องขอจะเป็น: ตรวจสอบว่าแคชโดนหรือไม่ (ถ้าไม่ผ่านไปยัง PHP ตามปกติ) ถอดรหัสโทเค็น ตรวจสอบว่ามันถูกต้อง หากถูกต้องให้บริการจากแคช หากไม่ถูกต้องให้บอก Nginx …

4
คุณเข้าใกล้ความขัดแย้งในการพึ่งพาสกรรมกริยาที่เป็นที่รู้จักกันเฉพาะในเวลาทำงานอย่างไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ปกติคุณจะเข้าถึงปัญหาการพึ่งพาสกรรมกริยาที่เกิดขึ้นในขณะใช้งานในโครงการซอฟต์แวร์ขนาดใหญ่ได้อย่างไร ในช่วงสามสัปดาห์ที่ผ่านมาฉันพยายามเริ่มส่วนประกอบของซอฟต์แวร์ชิ้นใหญ่ภายในส่วนประกอบอื่นของซอฟต์แวร์ แต่เป็นระยะ ๆ จะตายเนื่องจากปัญหาการพึ่งพาสกรรมกริยาซึ่งเป็นที่รู้จักกันในเวลาทำงานเท่านั้น โดยปัญหาการพึ่งพาสกรรมกริยาฉันหมายความว่าการอ้างอิงบางอย่างของการอ้างอิงของโครงการที่กำหนดชนกับการพึ่งพาอื่น ๆ ในเวลาทำงานทำให้เกิดความไม่แน่นอนหรือความล้มเหลวทันที มีหลายร้อยคนต่อการใช้งานหลายร้อยคนและมีโครงการย่อยประมาณ 50 โครงการที่เชื่อมโยงกับเครื่องมือที่ทำงานแยกจากทีมอื่น ๆ โดยที่โมดูลทั้งหมดมีการพึ่งพาซ้อนกันระหว่างกันอย่างลึกซึ้ง ไม่มีใครรู้ว่าโครงการย่อยทั้งหมดจะถูกใช้เพื่อกำหนดขนาดและความซับซ้อนของโครงการ ในสถานการณ์นี้คุณจะพยายามสร้างการแสดงภาพของ DAG สำหรับแต่ละการพึ่งพาของส่วนประกอบที่ได้รับผลกระทบและพยายามกำหนดตำแหน่งที่อาจเกิดการชนในเวลาทำงานหรือไม่ ฉันไม่สามารถควบคุมวิธีการจัดการการพึ่งพาในโครงการย่อยอื่น ๆ และไม่สามารถเปลี่ยนรหัส Java ใด ๆ ที่เขียนโดยนักพัฒนาอื่น ๆ วิธีแก้ปัญหาที่ฉันเกิดขึ้นกับการทำงานเพียงหนึ่งชั่วโมงหรือสองชั่วโมงจากนั้นพวกเขาก็หยุดทำงานเนื่องจากการเปลี่ยนแปลงส่วนประกอบต้นน้ำ ตัวอย่างขององค์ประกอบต้นน้ำคือสิ่งประดิษฐ์ที่โครงการที่ฉันกำลังทำงานนั้นขึ้นอยู่กับสิ่งที่ถูกสร้างขึ้นในขั้นตอนก่อนหน้านี้ใน CI ไปป์ไลน์ ตามคำขอของผู้อื่นฉันจะรวมข้อมูลเกี่ยวกับเทคโนโลยีที่ใช้อยู่ในความเสี่ยงที่จะต้องปิดคำถามเพื่อให้ข้อมูลมากเกินไปหรือร่างกายมีความยาวมากเกินไป: Maven ใช้สำหรับการจัดการการพึ่งพา และ สปริงใช้เป็นภาชนะ DI ส่วนใหญ่ของปัญหาการพึ่งพาเกี่ยวข้องกับบริบทถั่วที่ทับซ้อนกันเป็นผลมาจากบริบทของโมดูลอื่น ๆ ที่ถูกโหลดในเวลาทำงาน ผลิตภัณฑ์ทำงานอย่างถูกต้องและมี smorgasbords ของการทดสอบหน่วยและการทดสอบการรวมเพื่อหลีกเลี่ยงความถูกต้องการทำงานของโปรแกรม โดยทั่วไปฉันกำลังมองหาวิธีใช้ภาษาที่ไม่เชื่อเรื่องพระเจ้าในการระบุวิธีการแก้ไขความขัดแย้งในการพึ่งพาโดยไม่ต้องระบุถึงการรวมกันที่เป็นไปได้ทั้งหมดของการขึ้นต่อกันของโครงการ ฉันไม่สามารถสร้างโครงการใหม่เพิ่มประตูคุณภาพเพิ่มเติมผลักดันกระบวนทัศน์ใน …

7
อัลกอริทึมสำหรับกำหนดธุรกรรมระหว่างชุดข้อมูลรายสัปดาห์หรือไม่
ฉันพยายามพัฒนาเครื่องมือการรายงานขนาดเล็ก (พร้อม backend sqlite) ฉันสามารถอธิบายเครื่องมือนี้ในฐานะบัญชีแยกประเภท "ธุรกรรม" ได้ดีที่สุด สิ่งที่ฉันพยายามทำคือติดตาม "การทำธุรกรรม" จากการดึงข้อมูลรายสัปดาห์: "ใหม่" (หรือเพิ่ม) - ทรัพยากรเป็นสิ่งใหม่สำหรับแอปของฉันเนื่องจากแอปของฉันอาจไม่ได้ติดตามทรัพยากรนี้มาก่อนเนื่องจากไม่ได้เห็นผ่านสารสกัด "อัปเดต" (หรือกด) - มีการใช้งานล่าสุดของทรัพยากรนั้นอัปเดตช่วงเวลาการเก็บข้อมูลภายในสัปดาห์อื่น "ลบ" (หรือลดลง) - รายการนี้ไม่เห็นการใช้งานตั้งแต่รายงานล่าสุด (ตัวเลือก แต่จะดีสำหรับการทำกราฟการเปลี่ยนแปลงความต้องการทรัพยากรในแต่ละสัปดาห์ต่อสัปดาห์) ทั้งหมดที่ฉันได้รับคือสารสกัดข้อมูลรายสัปดาห์ (ไฟล์ที่คั่นด้วยไพพ์ไลน์) มาจากระบบเก็บถาวร / จัดการบันทึกแบบดั้งเดิมที่ฉันไม่สามารถควบคุมได้ แต่ละบรรทัดสามารถกลั่นโดยพื้นฐานนี้: resource_id | resource info | customer_id | customer_info ข้อมูลตัวอย่าง: 10| Title X | 1 | Bob 11| Another title | …

2
ควรระบุ ID ธุรกิจที่เป็นที่รู้จักกันดีของกิจการด้วยประเภทเฉพาะใน DDD / OOP หรือไม่
ในแง่การปฏิบัติมันหมายถึงการใช้กำหนดเอง (ไม่เปลี่ยนรูป) classมากกว่าstringหรือบางประเภทดั้งเดิมอื่น ๆ ตัวอย่าง: สำนักพิมพ์: หมายเลขหนังสือมาตรฐานสากล การเงิน: หมายเลขประจำตัวของหลักทรัพย์ระหว่างประเทศ ข้อดี: สามารถมั่นใจได้ว่ารูปแบบของตัวระบุ กลายเป็นสมาชิกชั้นหนึ่งของโมเดล ข้อเสีย: เพิ่มแรงเสียดทานติดตา (เช่น Entity Framework) รหัสเพิ่มเติม

3
การพัฒนาขับเคลื่อนทดสอบข้ามภาษา
คำถามสั้น ๆ : คุณติดตามการพัฒนาที่ขับเคลื่อนด้วยการทดสอบในโครงการที่ครอบคลุมหลายภาษาได้อย่างไร โดยเฉพาะฉันเขียนเว็บแอปพลิเคชันที่ใช้ JavaScript และ PHP และฉันต้องการที่จะปฏิบัติตามหลักการ TDD แต่ฉันไม่แน่ใจว่าจะรวมพวกเขาได้อย่างไร ฉันจะรันชุดทดสอบแยกต่างหากสำหรับส่วน JS และ PHP และใช้ mocks ในชุด JS เพื่อจำลองการตอบสนองของเซิร์ฟเวอร์หรือไม่ มีเทคนิคสำหรับการทดสอบหน่วยทั้งสองส่วนประกอบในการทดสอบครั้งเดียวหรือไม่? นี่เป็นประสบการณ์ครั้งแรกของฉันในการใช้การพัฒนาที่ขับเคลื่อนด้วยการทดสอบดังนั้นคำแนะนำใด ๆ ที่คุณสามารถแบ่งปันเกี่ยวกับวิธีทำให้มันน้อยลง เหตุผลที่ฉันเลือกคือเมื่อฉันสร้างต้นแบบเสร็จข้อกำหนดก็เปลี่ยนไปทำให้ฉันต้องเปลี่ยนการออกแบบ ฉันคิดว่าถ้าฉันเริ่มต้นฉันต้องการที่จะเขียนรหัสที่สามารถขยายได้มากขึ้นด้วยการทดสอบการถดถอยในตัวตั้งแต่เริ่มต้น ฉันกำลังเขียนการทดสอบ PHP ของฉันใน SimpleTest และการทดสอบ JavaScript ของฉันใน JsTestDriver ฉันคุ้นเคยกับกระบวนทัศน์เชิงวัตถุดังนั้นฉันจึงมีบางคลาสใน PHP และฉันทำสิ่งที่คล้ายกันใน JavaScript โดยใช้การสืบทอดต้นแบบ ฉันก็เริ่มอ่านหนังสือเล่มนี้เกี่ยวกับ TDD ใน Pythonและหนังสือเล่มนี้เกี่ยวกับ TDD ใน JavaScriptแต่จากสิ่งที่ฉันได้เห็นสิ่งเหล่านี้ไม่ได้อธิบายการทดสอบแอปพลิเคชันแบบเต็ม (นอกการใช้บางอย่างเช่น Selenium หรือไดรเวอร์เว็บอื่น เพื่อทำการทดสอบการยอมรับแบบ …

1
วิธีการให้ TFS เพิ่มงานบางอย่างให้กับรายการงานใหม่โดยอัตโนมัติ
เราใช้ TFS ในที่ทำงานของฉันเพื่อจัดการซอร์สโค้ดและการพัฒนาแทร็กของเรา เมื่อใดก็ตามที่เรามีข้อบกพร่องหรืองานต้องทำเราต้องทำภารกิจสองอย่างต่อไปนี้เป็นอย่างน้อย: ทดสอบงานหรือตัดสินใจว่าจำเป็นต้องทำการทดสอบหรือไม่ อัพเดตบันทึกประจำรุ่นสำหรับรุ่นปัจจุบันหรือตัดสินใจว่าต้องการรายการเฉพาะหรือไม่ งานอื่นนั้นเฉพาะกับงานที่ทำ แต่ฉันพบว่าตัวเองพิมพ์ "การทดสอบ" และ "บันทึกย่อประจำรุ่น" อยู่ตลอดเวลาเมื่อเพิ่มรายการงานใหม่ มีวิธีให้ TFS เพิ่มสองงานเหล่านี้โดยอัตโนมัติหรือไม่เมื่อมีการสร้างบั๊กหรือไอเท็มงานใหม่ ในกรณีที่หายากไม่จำเป็นต้องใช้งานเหล่านี้พวกเขาสามารถทำเครื่องหมายว่าเป็นเสร็จแล้วหรือนำออกสำหรับไอเท็มงานนั้นดังนั้นฉันจึงไม่กังวลเกี่ยวกับผลกระทบในการสร้างอัตโนมัตินี้ ฉันได้ดูไปรอบ ๆ และดูเหมือนว่าฉันสามารถสร้างสคริปต์ PowerShellเพื่อเพิ่มงานลงในรายการงานใด ๆ ที่ขาดหายไปซึ่งอาจเป็นวิธีที่จะไป

6
วิธีการนำคุณสมบัติไปใช้กับคลาส A ซึ่งอ้างถึงคุณสมบัติของอ็อบเจ็กต์ลูกของคลาส A
เรามีรหัสนี้ซึ่งเมื่อทำให้ง่ายขึ้นจะมีลักษณะเช่นนี้: public class Room { public Client Client { get; set; } public long ClientId { get { return Client == null ? 0 : Client.Id; } } } public class Client { public long Id { get; set; } } ตอนนี้เรามีสามมุมมอง 1) นี่เป็นรหัสที่ดีเพราะClientควรตั้งค่าคุณสมบัติ (เช่นไม่ใช่โมฆะ) ดังนั้นClient == nullจะไม่เกิดขึ้นและค่ารหัส0แสดงถึงรหัสเท็จอย่างไรก็ตาม (นี่คือความเห็นของผู้เขียนรหัส ;-)) …
9 c#  code-quality  null 

1
ตรวจสอบการออกแบบการทำให้เป็นอนุกรม C ++
ฉันกำลังเขียนแอปพลิเคชัน C ++ แอปพลิเคชันส่วนใหญ่อ่านและเขียนข้อมูลที่จำเป็นและนี่ก็ไม่มีข้อยกเว้น ฉันสร้างการออกแบบระดับสูงสำหรับตัวแบบข้อมูลและตรรกะการทำให้เป็นอนุกรม คำถามนี้ขอให้ตรวจสอบการออกแบบของฉันโดยคำนึงถึงเป้าหมายเฉพาะเหล่านี้: เพื่อให้มีวิธีที่ง่ายและยืดหยุ่นในการอ่านและเขียนข้อมูลในรูปแบบที่กำหนดเอง: raw binary, XML, JSON, และอื่น ๆ อัล รูปแบบของข้อมูลควรถูกแยกออกจากตัวข้อมูลเช่นเดียวกับรหัสที่ร้องขอการทำให้เป็นอนุกรม เพื่อให้แน่ใจว่าการทำให้เป็นอนุกรมนั้นไม่มีข้อผิดพลาดเท่าที่จะทำได้ I / O มีความเสี่ยงโดยเนื้อแท้ด้วยเหตุผลหลายประการ: การออกแบบของฉันแนะนำวิธีที่ล้มเหลวมากขึ้นหรือไม่? ถ้าเป็นเช่นนั้นฉันจะปรับการออกแบบใหม่เพื่อลดความเสี่ยงเหล่านั้นได้อย่างไร โครงการนี้ใช้ C ++ ไม่ว่าคุณจะรักหรือเกลียดมันเป็นภาษาที่มีวิธีการของตัวเองในการทำสิ่งต่าง ๆ และจุดมุ่งหมายของการออกแบบเพื่อให้ทำงานร่วมกับภาษาไม่ได้กับมัน สุดท้ายโครงการจะสร้างขึ้นบนwxWidgets ในขณะที่ฉันกำลังมองหาวิธีแก้ปัญหาที่เหมาะสมกับกรณีทั่วไปมากขึ้นการใช้งานเฉพาะนี้ควรใช้กับชุดเครื่องมือนั้น สิ่งที่ตามมาคือชุดคลาสที่ง่ายมากที่เขียนใน C ++ ที่แสดงการออกแบบ นี่ไม่ใช่คลาสจริงที่ฉันเขียนบางส่วนจนถึงตอนนี้รหัสนี้แสดงให้เห็นถึงการออกแบบที่ฉันใช้อยู่ ขั้นแรกให้บางตัวอย่าง DAO: #include <iostream> #include <map> #include <memory> #include <string> #include <vector> // One widget …
9 design  c++  c++11 

1
วิธีเก็บตัวอย่างโค้ดใน javadocs เป็นปัจจุบัน
ฉันกำลังทำงานในห้องสมุดขนาดเล็กที่ให้การใช้งานของตัวชี้วัดสตริงพื้นฐานที่รู้จักกันดี ส่วนใหญ่เพื่อการศึกษาของฉันเอง ดังนั้นการพัฒนาจึงเกิดขึ้นทุกครั้งที่ฉันมีเวลาว่าง ด้วยเหตุนี้ฉันจึงเป็นกระบวนการอัตโนมัติโดยอัตโนมัติดังนั้นฉันจึงสามารถเผยแพร่เวอร์ชันได้บ่อยเท่าที่ฉันทำงานโดยไม่ต้องใช้ความพยายามมากเกินไป อย่างไรก็ตามการบำรุงรักษาเอกสาร Java ยังคงเป็นภาระเพราะมันมีตัวอย่าง เนื่องจาก API วิวัฒนาการขึ้นฉันต้องตรวจสอบตัวอย่างแต่ละครั้งซ้ำแล้วซ้ำอีก มีวิธีที่ดีกว่าในการทำเช่นนี้? ฉันได้พิจารณาการย้ายเอกสารและตัวอย่างไปเป็นโครงการแยกต่างหาก (เช่นCaliper Tutorial ) เพื่อให้สามารถนำแฟคตอริ่งและคอมไพล์ไปพร้อมกับรหัสปกติอีกครั้ง อย่างไรก็ตามมันจะย้ายเอกสารออกไปจากชั้นเรียนที่มันเป็นเรื่องเกี่ยวกับ ใช่แล้ว ฉันต้องการเค้กและกินด้วย : D * <h2>Tokenization</h2> * * Tokenization cuts up a string into tokens e.g. * <code>chilperic ii son of childeric ii</code> is tokenized into * <code>[chilperic, ii, son, of, * childeric, …

4
ใครทำข้อผิดพลาดซ้ำตั๋ว?
หนึ่งในเพื่อนร่วมทีมของฉันและฉันเพิ่งคว้าตั๋วบั๊กแยกต่างหากมอบหมายให้พวกเราแยกต่างหาก แต่ตั๋วนั้นซ้ำกัน! วิธีที่ดีที่สุดในการแก้ไขตั๋วที่ซ้ำกันคืออะไร สิ่งนี้ทำโดยทรัพยากรของ QA หรือไม่? ฉันทำงานในสถานที่สองแห่งที่ผู้ใช้ที่ไม่ใช่เทคโนโลยีบอกว่ามันขัดจังหวะการไหล "แต่มันเป็นสิ่งที่คนที่ไม่ใช่ช่างเทคนิคสามารถทำได้ในสถานการณ์ที่การเข้าถึงนักพัฒนามี จำกัด (เช่นโดยทั่วไปเสมอ)

1
การพัฒนาที่เก็บคีย์ / ค่าที่ย้ายไปยัง C ++ ที่ทันสมัย
ฉันกำลังพัฒนาเซิร์ฟเวอร์ฐานข้อมูลที่คล้ายกับ Cassandra การพัฒนาเริ่มต้นใน C แต่สิ่งต่าง ๆ ก็ซับซ้อนมากโดยไม่ต้องเรียน ขณะนี้ฉันได้ย้ายทุกอย่างใน C ++ 11 แต่ฉันยังคงเรียนรู้ C ++ ที่ทันสมัยและยังมีข้อสงสัยมากมาย ฐานข้อมูลจะทำงานกับคู่ของคีย์ / ค่า ทุกคู่มีข้อมูลเพิ่มเติม - เมื่อถูกสร้างขึ้นด้วยเมื่อมันจะหมดอายุ (0 ถ้าไม่หมดอายุ) แต่ละคู่นั้นไม่เปลี่ยนรูป Key คือสตริง C ค่าเป็นโมฆะ * แต่อย่างน้อยตอนนี้ฉันทำงานด้วยค่าเป็นสตริง C เช่นกัน มีIListระดับนามธรรม มันสืบทอดมาจากสามชั้น VectorList - C dynamic array - คล้ายกับ std :: vector แต่ใช้ realloc LinkList - ทำเพื่อการตรวจสอบและเปรียบเทียบประสิทธิภาพ SkipList …

3
มันสมเหตุสมผลไหมที่จะใช้“ ys” แทน“ ies” ในตัวระบุเพื่อความสะดวกในการค้นหาและแทนที่ฟังก์ชั่น? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว แม้ว่าจะไม่ถูกต้องตามหลักไวยากรณ์เมื่อเขียนตัวระบุสำหรับฟังก์ชั่นตัวแปร ฯลฯ มันเหมาะสมหรือไม่ที่จะต่อท้าย "s" กับคำพหูพจน์ที่ลงท้ายด้วย Y เหตุผลของฉันสำหรับเรื่องนี้ก็คือถ้าคุณต้องการค้นหาและแทนที่ตัวอย่างเช่นการแทนที่ "บริษัท " ด้วย "ผู้ขาย" "บริษัท " จะจับคู่ทั้งแบบเอกพจน์และพหูพจน์ (" บริษัทและ" บริษัท ") ในขณะที่ หากมีการสะกดคำพหูพจน์อย่างถูกต้องคุณจะต้องทำการค้นหาสองครั้งแยกกัน
9 grammar 

3
อัลกอริทึมของฉันที่แยกกล่องที่ใหญ่ที่สุดที่สามารถสร้างได้จากกล่องที่เล็กกว่านั้นช้าเกินไป
ลองจินตนาการถึงโลกตามก้อน (เช่น Minecraft, Trove หรือ Cube โลก) ที่ทุกอย่างถูกสร้างขึ้นจากก้อนขนาดเดียวกันและก้อนทั้งหมดเป็นของเดียวกันชนิด เป้าหมายคือการเป็นตัวแทนของโลกที่มีกล่องสี่เหลี่ยมจำนวนน้อยที่สุด (โดยรวมก้อน แต่ยังคงรูปร่างนูน (aka รูปร่างกล่องสี่เหลี่ยม)) อัลกอริทึมของฉันประสบความสำเร็จในสิ่งนี้ แต่ประสิทธิภาพของมันช้าเกินไปสำหรับวัตถุประสงค์ที่ตั้งใจไว้ มีอัลกอริทึมเร็วขึ้นหรือไม่ หลอก -C # -code สำหรับอัลกอริทึมของฉันเป็นพื้น: struct Coordinate { int x,y,z; }; //<-- integer based grid HashSet<Coordinate> world; // <-- contains all the cubes //width, height, and length represent how many cubes it spans struct …

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