การนั่งร้านที่ครอบงำสนาม Javaee ได้นำไปสู่ Spring struts2 mybatis/hibernate;
ฤดูใบไม้ผลิ:
ฤดูใบไม้ผลิไม่ได้มีไว้สำหรับบริการ Java เท่านั้น เนื่องจากการใช้งานของฤดูใบไม้ผลิเป็นมาตรฐาน CGI มันไม่ได้เป็นเพียงกรอบในฟิลด์ Java แต่แพลตฟอร์ม C# ยังคงได้รับประโยชน์ ฤดูใบไม้ผลิให้วิธีการกำหนดค่าคำอธิบายประกอบที่สะดวกต่าง ๆ เช่น Abstraction หรือ Bootde Integrated Solutions ซึ่งช่วยลดความซับซ้อนของโครงการ Javaee ได้อย่างง่ายดาย
ในระหว่างการใช้ฤดูใบไม้ผลิทั้งสองฝ่ายมีความแตกต่างบางส่วนมีคำอธิบายประกอบน้ำหนักเบาและบางส่วนมีแนวโน้มที่จะเป็นคำอธิบายประกอบเต็ม
ก่อนอื่นหลักฐานของคำอธิบายประกอบคือมันต้องผ่านพร็อกซีพร็อกซีแบบไดนามิกคงที่และ CGLIB สำหรับคำอธิบายประกอบที่มีน้ำหนักเบามุมนั้นเป็นคำอธิบายประกอบแบบคงที่หรือครั้งเดียว
ตัวอย่างเช่นคำอธิบายประกอบของคอนโทรลเลอร์คำอธิบายประกอบครั้งเดียวหรือคำอธิบายประกอบเวลารวบรวมจะเริ่มต้นในบริบทของโครงการเพื่อเป็นการสแกนครั้งเดียวโดยนัยและคำอธิบายประกอบที่เกี่ยวข้องเช่นบริการ ถือเป็นตัวเลือกแรก สิ่งนี้จะช่วยลดค่าใช้จ่ายของพร็อกซีและการสะท้อนในช่วงเวลารันไทม์และยังช่วยประหยัดทรัพยากรที่ดีขึ้นสำหรับสแต็กรันไทม์
อีกประเภทหนึ่งเช่น ResponseBody คือคำอธิบายประกอบแบบไดนามิกหรือคำอธิบายประกอบเวลาทำงาน ทุกครั้งที่คุณร้องขอการสะท้อนของคำอธิบายประกอบจะถูกดำเนินการ คำอธิบายประกอบของระยะเวลาการดำเนินงานนั้นแน่นอนว่าจะครอบครองทรัพยากร
โดยทั่วไปแล้วคำอธิบายประกอบที่ไม่จำเป็นสามารถเพิกเฉยได้อย่างสมบูรณ์ ขึ้นอยู่กับวิธีการร้องขอและการตอบกลับตามพื้นฐานของ servlet ไม่มี MVC ซึ่งไม่สามารถแก้ไขได้การใช้พารามิเตอร์การส่งพารามิเตอร์การกลับมา ฯลฯ และไม่จำเป็นต้องมีคำอธิบายประกอบในระหว่างการรันไทม์ คำอธิบายประกอบระหว่างรันไทม์ดูเหมือนจะลดจำนวนรหัส เพื่อที่จะสร้างข้อบกพร่องต่าง ๆ ในกระบวนการนี้คำอธิบายประกอบแบบไดนามิกของวงกลมจะถูกเรียกใช้เพื่อเรียกใช้คำอธิบายประกอบที่คุณใช้ภายในวิธีการ สำหรับคำอธิบายประกอบแบบพารามิเตอร์ที่เขียนไว้ในวิธีการรหัสใดที่หายไปเมื่อเทียบกับการใช้คำขอรับตัวเอง? เป็นเพียงการเพิ่มกระบวนการขั้นตอนเดียวดั้งเดิมเพื่อเพิ่มเลเยอร์ของการสกัดกั้นรหัส
จะรู้ได้อย่างไรว่าคำอธิบายประกอบเป็นคำอธิบายประกอบในช่วงเวลาทำงานหรือเวลาคอมไพล์นั้นง่ายมาก คลิก Ctrl+Mouse แล้วคุณจะเห็น:
@Target ({ElementType.type, ElementType.method})
@Retention (RetentionPolicy.runtime)
@documented
การเก็บรักษาประเภทการแจงนับนี้อย่างสมบูรณ์และแสดงให้เห็นถึงระยะเวลาของคำอธิบายประกอบที่คุณใช้อย่างชัดเจน
ทุกคนชอบใช้ซิงเกิลกับฤดูใบไม้ผลิซึ่งเป็นวิธีที่ยอดเยี่ยม ซิงเกิลตันไม่มีส่วนเกี่ยวข้องกับตัวเองพร้อมกันยกเว้นว่าคุณจะต้องแข่งขันเพื่อระบุตัวตนของทรัพยากร
หากคุณต้องมีวัตถุต้นแบบจำนวนมากในโครงการของคุณนั่นหมายความว่าคุณถูกทารุณกรรมหรือใช้วัตถุที่ไม่ถูกต้อง MVC โดยทั่วไปมีพารามิเตอร์ขาเข้าและผลตอบแทน แต่ละคำขอเป็นเธรด การตอบสนองการร้องขอแยกต่างหากมีสิ่งที่พวกเขาป้อนและออกซึ่งแยกได้อย่างสมบูรณ์ จากนี้เมื่อพูดถึง mybatis หลายคนใช้ resmappers ต่าง ๆ ในการกำหนดค่า mybatis และทุกครั้งที่ถั่วหลายชนิดกลับไปกลับมา หลังจากคำขอแล้วถั่วเป็นพารามิเตอร์และผลลัพธ์จะต้องเป็นครั้งเดียว พื้นผิวของ mybatis นั้นชัดเจนต่อการบำรุงรักษา SQL ซึ่งมีค่าใช้จ่ายในการลดประสิทธิภาพของ JDBC อย่างมาก แล้วไม่มีใครสนใจเรื่องนี้ สำหรับพวกเขาถั่วไม่มีอะไรและพวกเขาไม่เข้าใจหรือสนใจเกี่ยวกับ GC หากพวกเขาได้รับปัญหาเพิ่มหน่วยความจำและเพิ่มหน่วยความจำไปด้านบน สิ่งที่พวกเขาแก้ปัญหาคือปัญหาของเวลาและใช้พื้นที่เพื่อแลกเปลี่ยนเวลา ด้วยพารามิเตอร์เดียวกันและการแมปผลลัพธ์ถ้าคุณใช้แผนที่ของ JDK ซึ่งอันนั้นดีกว่ามันเป็นแผนที่ของ JDK ตามธรรมชาติ
ฉันเชื่ออย่างดื้อรั้นเสมอว่าการบริโภควัตถุของ JDK ใหม่นั้นเล็กกว่าการกำหนดถั่วด้วยตัวเองมาก ทำไมขอโทษฉันไม่รู้เหมือนกัน ดังนั้นฉันมักจะมาที่แผนที่และแผนที่ไป เมื่อใช้ mybatis คุณต้องตรวจจับอย่างใกล้ชิดว่าสิ่งต่าง ๆ ของคุณกำลังเข้าชั้นเรียนหรือไม่? วิธีนี้ง่ายมาก ในบันทึกโครงการเปิดการดีบักเพื่อดูว่าบันทึกของคุณถูกสร้าง SQLSession ใหม่ทุกครั้งหรือไม่ หากเป็นกรณีนี้คุณควรทราบว่าเซสชัน mybatis ของคุณไม่ได้ถูกรวมเข้าด้วยกันและไม่ได้รับสิ่งต่าง ๆ หากมีการแข่งขัน SQL ในวิธีการไม่มีข้อผิดพลาดในขออภัย แต่พบว่าฐานข้อมูลไม่ได้ดำเนินการ SQL ของคุณ ในไม่ช้าคุณจะพบว่าพูลการเชื่อมต่อถูกใช้อย่างรวดเร็วและมักจะสร้างการเชื่อมต่อใหม่ แน่นอนถ้าคุณไม่สามารถใช้ mybatis อย่าลังเลมันไม่ถูกต้องที่จะใช้มัน
ทำไมเราต้องพยายามใช้คำอธิบายประกอบแบบคงที่? มันง่ายมาก ชั้นเรียนฤดูใบไม้ผลิเป็นซิงเกิล โครงการมีขนาดใหญ่พอและอินสแตนซ์ถั่วก็เพียงพอแล้ว ซิงเกิลเหล่านี้ใช้อะไรบ้าง? อินสแตนซ์ของวัตถุอยู่ในพื้นที่ฮีปและอ้างอิงในสแต็ก ดังนั้น GC รีไซเคิลวัตถุจากซิงเกิลเหล่านี้เมื่อใด คุณคิดอย่างไร? ดังนั้นเมื่อขึ้นอยู่กับคำอธิบายประกอบลองลดการใช้พร็อกซีแบบไดนามิกให้น้อยที่สุด ทิ้งทรัพยากรเพิ่มเติมสำหรับการใช้งานที่จำเป็น
ในอดีตเราจะบอกว่าไม่มีกอง แต่ตอนนี้พูลคงที่สตริงคงที่ของ JDK1.7 ได้เข้าสู่กองแล้ว
ประเภทใดที่ดีกว่าการรวบรวมหรือการตีความ? แน่นอนว่าเป็นการวิเคราะห์และประเภทการรวบรวมนั้นคล้ายกับรูปแบบการไกล่เกลี่ย ดังนั้นจึงเป็นเรื่องยากมากที่จะสร้างภาษาที่รวบรวมได้ดีกว่าภาษาที่ตีความ
โครงสร้างของเว็บมีความชัดเจนมาก อย่างแรกมันยังคงอยู่ในบริบทและจากนั้นชุดของส่วนประกอบตามลำดับ สิ่งที่สำคัญที่สุดที่เราเป็นองค์ประกอบของเซิร์ฟเล็ตซึ่งเป็นมาตรฐาน Javaee และส่วนประกอบของเว็บที่เหลือคือมาตรฐานโปรโตคอลซึ่งทุกคนต้องมี จากนั้นคุณจะเห็นว่าการทำแผนที่ของ Servlets ในหลายโครงการคือ /ซึ่งเป็นวิธีที่ไม่ดี เพราะมันง่ายมาก JS หรือ CSS ไม่จำเป็นต้องประมวลผลผ่าน Servlets ดังนั้นการแมปส่วนใหญ่จะพิจารณาการโต้ตอบกับส่วนประกอบเซิร์ฟเวอร์ของคอนเทนเนอร์เว็บและโดยทั่วไปจะให้การระบุสองประเภทเช่น .DO และ. การกระทำ JS ฯลฯ ไม่จำเป็นต้องป้อน servlet และกลับมาโดยตรงจากบริบทของเว็บตาม URL และจากนั้นไม่มีวิธีที่จะสกัดกั้นและปล่อย MVC ลงใน MVC นี่เป็นช่วงเวลาที่เสียเวลาในการสร้างปัญหาและแก้ปัญหาซึ่งไม่ใช่วิธีที่ดี ด้วยวิธีนี้ไม่ว่า Nginx จะเกี่ยวข้องหรือไม่ทรัพยากรคงที่ของคุณจะคงที่สำหรับเว็บคอนเทนเนอร์และไม่มีความสัมพันธ์กับ Servlets Servlets เกี่ยวข้องกับสิ่งที่คุณต้องจัดการเท่านั้น
สถานที่ที่ดีที่สุดในการเขียน JS อยู่ที่ไหน?
หลายคนคุ้นเคยกับการเขียน JS ใน JSP หรือ HTML ซึ่งไม่ดี
เมื่อเราสร้างโครงการเราต้องหวังว่า JS และ CSS ของเราจะถูกแคชโดยเบราว์เซอร์
จากนั้น JS ที่เขียนไว้ในแท็กสคริปต์ของหน้านั้นเป็นเพียงแท็กซึ่งไม่แตกต่างจาก div หรืออินพุตและจะไม่ถูกแคช ฉันตรวจสอบข้อมูลจำนวนมากและแคชที่ฉันเห็นเห็นได้ชัดว่าหน่วยแคชเป็นไฟล์ ไม่ใช่ฉลาก ดังนั้นฉันจึงไม่แน่ใจอย่างสมบูรณ์เกี่ยวกับการเขียน CSS JS ของคุณลงในไฟล์และแนะนำไฟล์เพื่อให้ไฟล์จะถูกแคชเพราะไม่มีคำตอบที่ยืนยันโดยตรงมันเป็นเรื่องของฉัน
JSP เป็น servlet จริง ๆ ดังนั้นจึงเป็นหน้าแบบไดนามิก ทุกครั้งที่คุณต้องโหลดคลาสเพื่อแปลแบบไดนามิกจากนั้นวิธีการเขียนในชั้นเรียนจะเขียนหน้าเว็บไปยัง HTTP ไปยังเบราว์เซอร์และแสดงผลเบราว์เซอร์ ถ้าเป็น HTML มันจะคงที่ แบบไดนามิกและยืดหยุ่นไม่ต้องสงสัยเลยว่าเนื่องจากเป็น servlet จึงเป็นวัตถุ Java และแท็กและวิธีการ Java ต่าง ๆ เรียกว่าความเป็นไปได้ หน้าคงที่จำเป็นต้องได้รับการจัดการด้วยตัวเอง หากคุณใช้ภาษาแมโครที่คล้ายกับหน้าคงที่จะเป็นการดีกว่าที่จะใช้ JSP โดยตรง
โหลดข้อมูลครั้งละเท่าไหร่ในหน้า?
หากเนื้อหาที่แสดงในหน้าของคุณขึ้นอยู่กับหมวดหมู่และรายการจำนวนข้อมูลมีขนาดเล็กมากโดยมีหลายร้อยรายการ ประเภทนี้จะแสดงในแอพสั่งซื้อกลับบ้านจากนั้นหมวดหมู่และข้อมูลทั้งหมดจะได้รับในครั้งเดียว ดังนั้นการประมวลผลจะถูกประมวลผลทางฝั่งไคลเอ็นต์การสลับหมวดหมู่และการแสดงตัวอย่างในกระบวนการทั้งหมดจะถูกประมวลผลบนหน้ารวมถึงการค้นหา JS ดำเนินการบนไคลเอนต์ของเราโทรศัพท์มือถือหรือคอมพิวเตอร์ของ A จะไม่แข่งขันกับโทรศัพท์มือถือหรือคอมพิวเตอร์ของ B หากคุณเปลี่ยนประเภททุกครั้งที่คุณเปลี่ยนเป็นประเภทคุณจะแปรง AJAX และเป็นกลุ่มเว็บคอนเทนเนอร์เดียวกันเพื่อให้มีการแข่งขัน ยิ่งมีการดำเนินการบ่อยเท่าไหร่การแข่งขันก็จะยิ่งมากขึ้นเท่านั้น สิ่งนี้เกี่ยวข้องอย่างใกล้ชิดกับสถานการณ์จริง
จำนวนข้อมูลที่ส่งคืนโดยแบบสอบถามไม่มีส่วนเกี่ยวข้องกับประสิทธิภาพ ข้อมูลหลายพันข้อมูลอยู่ที่ระดับ KB เท่านั้น
จำนวนการสืบค้นนั่นคือจำนวนการโต้ตอบกับเซิร์ฟเวอร์เป็นเหตุผลโดยตรงที่มีผลต่อประสิทธิภาพโดยรวม
จำนวนข้อมูลในแบบสอบถามเป็นสัดส่วนกับขนาดของตารางที่ถูกสอบถาม มันจะไม่เพิ่มความเร็วในการสืบค้นโดยการกลับมาแบบสอบถามครั้งละ 10 ครั้งและการสืบค้น 10 ครั้งในแต่ละครั้งทำให้การสืบค้นช้าลง การดำเนินการฐานข้อมูลเป็นแอปพลิเคชันคอลเลกชันและไม่มีอะไรถูกสร้างขึ้น
หลักฐานของการปรับจูนคือจำนวนเงินที่ได้รับนั้นเหมาะสมที่สุดไม่ใช่มากเท่าไหร่คุณก็ยิ่งมีความเหมาะสมมากขึ้นเท่านั้น หน่วยความจำที่ JDK หรือ TOMCAT สามารถใช้ในตัวเลขที่แตกต่างกันของระบบปฏิบัติการ
ใช้ nginx;
ใช้แคชเมื่อจำเป็น
เลือกมิดเดิลแวร์ข้อความหรือมิดเดิลแวร์อื่น ๆ ตามที่คุณต้องการ
การแยกฐานข้อมูลหรือสลาฟมาสเตอร์ ฯลฯ จะต้องเป็นไปได้ว่าฐานข้อมูลปัจจุบันไม่สามารถรองรับปริมาณการรับส่งข้อมูล
ซิงเกิลตันเป็นวิธีที่ดี
มัลติเธรดเป็นใบมีดที่คมชัดและไม่แยกความแตกต่างระหว่างภาษาที่เฉพาะเจาะจง
Maven Management เป็นวิธีที่ดี แต่โครงการหลักของโครงการของคุณควรเป็น webMVC สร้างโครงการเว็บฝัง Maven เป็นส่วนประกอบแทนที่จะสร้างโครงการ Maven แล้วแปลงเป็นโครงการเว็บเว้นแต่จะไม่ได้ใช้งาน
การใช้ฤดูใบไม้ผลิปัจจุบันเป็นนั่งร้านที่ดีที่สุด
ใช้ JDBC ให้มากที่สุดถ้าเป็นไปได้
อย่าโต้ตอบกับเซิร์ฟเวอร์เมื่อคุณสามารถทำสิ่งต่าง ๆ บนไคลเอนต์ได้ ทรัพยากรของลูกค้ามีมากมายและทรัพยากรของเซิร์ฟเวอร์มี จำกัด
พยายามส่งคำขอน้อยลง รหัสที่ส่งคำขอน้อยลงเป็นรหัสที่ดีเว้นแต่คุณจะเป็นแอปพลิเคชันทันที
เครื่องมือในแต่ละรหัสเป็นเครื่องมือและ API คือสิ่งที่คุณต้องเข้าใจมากที่สุด ไม่มีคำตอบที่แม่นยำว่าอันไหนดีกว่าและอันไหนไม่ดี
ทุกอย่างเป็นวัตถุและมันบริสุทธิ์สำหรับ Java พร็อกซีเป็นวัตถุการสะท้อนเป็นวัตถุวัตถุเป็นวัตถุและชนิดข้อมูลพื้นฐานไม่ใช่วัตถุ
สิ่งอื่นนอกเหนือจากประเภทพื้นฐานเสร็จสมบูรณ์ผ่านวัตถุ ไม่ว่ากระบวนการจะซับซ้อนเพียงใดพวกเขาจะเสร็จสิ้นผ่านวิธีการวัตถุที่สอดคล้องกันรวมกับพารามิเตอร์วิธีการ วิธีการทำให้ชั้นเรียนเป็นอนุกรมและ deserialize เพื่อให้มันตรงไปตรงมามันเป็น IO และการส่งไฟล์แล้วโหลดลงใน JVM และสร้างมันลงในวัตถุ
เหตุผลที่ RPC ไม่ได้ถูกเรียกในเธรด สิ่งที่เรียกว่าเป็นพร็อกซี พร็อกซีแปลงความต้องการของคุณเป็นพารามิเตอร์และส่งออกเป็นสตรีมข้อมูล เซิร์ฟเวอร์แปลงสตรีมคำขอของคุณเป็นวัตถุแล้วสตรีมกลับ จากนั้นคุณสร้างวัตถุและประมวลผลผ่านวัตถุ
NIO เป็นวิธีที่ดี Netty เป็นตัวเลือกที่ดีมีซ็อกเก็ตแบบมัลติเธรดที่เหนือกว่า Netty หรือไม่?
Zookeeper เป็นเครื่องมือที่ยอดเยี่ยมสำหรับชุดของโซลูชันเช่นการลงทะเบียนแบบกระจายที่ดี
สิ่งเหล่านี้เป็นหลักการและวัตถุทั้งหมดดังนั้นคุณต้องใช้มันเพื่ออ่านอย่างหนัก
ข้างต้นคือความเข้าใจส่วนบุคคลและคุณสามารถแก้ไขได้