أدى السقالات التي سيطرت منذ فترة طويلة على حقل جافاي مع SPRING STRUTS2 MyBatis/Hibernate ؛
ربيع:
الربيع ليس فقط لخدمات جافا. نظرًا لأن تنفيذ SPRING كمعيار CGI ، فهو ليس مجرد إطار في حقل Java ، ولكن لا يزال بإمكان منصة C# الاستفادة ؛ يوفر Spring العديد من طرق تكوين التعليقات التوضيحية المريحة مثل التجريد أو الحلول المتكاملة bootde ، والتي تبسط بشكل كبير أساس مشروع Javaee ؛
أثناء استخدام الربيع ، يتم التمييز بين الجانبين ، وبعضها شروح خفيفة الوزن ، وبعضها يميل إلى أن يكون التعليقات التوضيحية الكاملة.
بادئ ذي بدء ، فإن فرضية التعليقات التوضيحية هي أنه يجب أن تمر عبر الوكيل والديناميكية والثابتة و cglib. بالنسبة للشروح الخفيفة ، تكون الزاوية ثابتة أو مراقبة لمرة واحدة.
على سبيل المثال ، تتم تهيئة تعليقات التحكم في وحدة التحكم ، هذه التعليقات التوضيحية لمرة واحدة أو التعليقات التوضيحية لوقت التجميع في سياق المشروع كمسح ضمني لمرة واحدة ، والشروحات ذات الصلة مثل الخدمة ، وتوفير مثيلات كائنات خفيفة الوزن في Singleton. يعتبر الخيار الأول. هذا يقلل من تكلفة الوكيل والانعكاس خلال فترة وقت التشغيل ، كما يوفر موارد أفضل لمكدس وقت التشغيل.
نوع آخر ، مثل ResponseBody ، هو شرح ديناميكي أو شرح وقت التشغيل. في كل مرة تطلب فيها ، سيتم تنفيذ انعكاس التعليق التوضيحي. التعليق على فترة التشغيل هو بالطبع احتلال الموارد.
بشكل عام ، لا يمكن تجاهل التعليقات التوضيحية اللازمة تمامًا. استنادًا إلى طريقة الطلب والاستجابة بناءً على أساسيات Servlet ، لا توجد MVC ، والتي لا يمكن حلها ، وأخذ المعلمات ، والمعلمات المارة ، والعودة ، وما إلى ذلك ، وليس هناك حاجة إلى التعليقات التوضيحية أثناء وقت التشغيل. يبدو أن التعليقات التوضيحية أثناء وقت التشغيل تقلل من كمية الرمز. من أجل تعويض أوجه القصور المختلفة في هذه العملية ، سيتم تشغيل شرح ديناميكي للدائرة لتنفيذ تعليق توضيحي تستخدمه داخل الطريقة. بالنسبة لشروحات بارام مكتوبة في هذه الطريقة ، ما هو الرمز المفقود مقارنة باستخدام طلب الحصول على نفسك؟ لقد تمت إضافة عملية خطوة واحدة الأصلية لإضافة طبقة من اعتراض الكود.
كيف تعرف ما إذا كان التعليق التوضيحي هو تعليق توضيحي في فترة التشغيل أو فترة الترجمة بسيطة للغاية. انقر فوق Ctrl+Mouse وسترى:
target ({elementType.type ، elementtype.method})
@الاحتفاظ (attreentionpolicy.runtime)
documented
الاحتفاظ هذا النوع من التعداد يوضح تمامًا ويوضح فترة التعليق التوضيحي الذي تستخدمه.
الجميع يحب استخدام المفردات مع الربيع ، وهي طريقة ممتازة. لا علاقة سينجلتون بالتزامن نفسه ، إلا أنه يتعين عليك جعلها تتنافس على تحديد الموارد.
إذا كان عليك أن يكون لديك العديد من كائنات النموذج الأولي في مشروعك ، فهذا يعني أنك تعرضت للإيذاء أو استخدام الكائن الخطأ. لدى MVC أساسًا معلمات ورجاع واردة. كل طلب هو موضوع. استجابة طلب منفصلة لديها ما يدخلون ويخرجون ، وهو معزول تمامًا. من هذا ، عندما يتعلق الأمر بـ MyBatis ، يستخدم الكثير من الأشخاص عمليات إعادة التمييز المختلفة في تكوين MyBatis ، وفي كل مرة تذهب فيها الفاصوليا المختلفة ذهابًا وإيابًا. بعد الطلب ، يجب أن تكون الفاصوليا كمعلمات والنتائج مرة واحدة. سطح mybatis واضح لصيانة SQL ، والتي هي على حساب تقليل كفاءة JDBC بشكل كبير. ثم لا أحد يهتم به. بالنسبة لهم ، لا يوجد لدى الفاصوليا شيئًا ، ولا يفهمون أو يهتمون بـ GC. إذا تعرضوا للمشاكل ، أضف الذاكرة وأضف الذاكرة إلى الأعلى. كل ما يحلونه هو مشكلة الوقت ، واستخدام المساحة لتبادل الوقت. مع نفس المعلمات ورسم الخرائط للنتيجة ، إذا كنت تستخدم خريطة JDK ، والتي تكون أفضل ، فهي خريطة JDK الخاصة بشكل طبيعي.
لطالما اعتقدت بعناد أن استهلاك كائن New JDK الخاص أصغر بكثير من تعريف تعريف الفول من قبل نفسه. لماذا ، آسف ، لا أعرف أيضًا. لذلك أنا دائما أتيت لرسم الخريطة والخريطة الذهاب. عند استخدام MyBatis ، يجب أن تكتشف عن كثب ما إذا كانت أغراضك تسير في صفك؟ الطريقة بسيطة للغاية. في سجل المشروع ، افتح Debug لمعرفة ما إذا كان السجل الخاص بك قد تم إنشاء SQLSession جديد في كل مرة. إذا كان هذا هو الحال ، فيجب أن تلاحظ أن جلسة MyBatis الخاصة بك لم يتم تجميعها وليس وكيل الأشياء. إذا كان هناك SQL تنافسي بطريقة ما ، فلا يوجد خطأ في آسف ، ولكن وجد أن قاعدة البيانات لا تنفذ SQL. قريبًا ، ستجد أن تجمع الاتصال يستخدم بسرعة كبيرة وسيقوم بإنشاء اتصالات جديدة بشكل متكرر. بالطبع ، إذا لم تتمكن من استخدام MyBatis ، فلا تتردد ، فمن الصحيح عدم استخدامه.
لماذا علينا أن نحاول استخدام التعليقات التوضيحية الثابتة؟ الأمر بسيط للغاية. دروس الربيع هي في الأساس المفردات. المشاريع كبيرة بما يكفي ، وحالات الفاصوليا كافية. ماذا يأخذ هذه المفردات؟ مثيل الكائن في مساحة الكومة ويتم الإشارة إليه في المكدس. إذن متى ستقوم GC بإعادة تدوير الأشياء من هذه المفردات؟ ما هو رأيك؟ لذلك ، عندما تستند إلى التعليق التوضيحي ، حاول تقليل استخدام الوكيل الديناميكي. اترك المزيد من الموارد للاستخدام عند الحاجة.
في الماضي ، يمكن أن نقول أنه لا يوجد كومة ، ولكن الآن ، دخل المجموعة الثابتة من JDK1.7 بالفعل.
أيهما أفضل ، نوع التجميع أو التفسير؟ بالطبع ، إنه تحليلي ، ونوع التجميع يشبه نموذج الوساطة. لذلك ، من الصعب للغاية بناء لغة متجمع ممتازة من اللغة المفسرة.
هيكل الويب واضح للغاية. أولاً ، لا يزال في السياق ، ثم سلسلة من المكونات بالتسلسل. أهم شيء نحن مكون Servlet ، وهو معيار Javaee ، وبقية مكونات الويب هي معايير البروتوكول ، والتي يجب أن يكون لدى الجميع. بعد ذلك سترى أن رسم خرائط Servlets في العديد من المشاريع هو /، وهو وسيلة سيئة. نظرًا لأنه بسيط للغاية ، لا يلزم معالجة JS أو CSS من خلال servlets. لذلك ، يعتبر رسم الخرائط بشكل أساسي التفاعل مع مكونات الخادم لحاويات الويب ، ويعطي عمومًا نوعين من التعريف ، مثل .Do و. لا تحتاج إلى إدخال JS ، وما إلى ذلك ، والعودة مباشرة من سياق الويب وفقًا لعنوان URL ، ثم لا توجد طريقة لاعتراض MVC وإطلاقها في MVC. هذا مضيعة للوقت لخلق مشاكل وحل المشكلات ، وهي ليست طريقة جيدة. وبهذه الطريقة ، بغض النظر عما إذا كان Nginx متورطًا أم لا ، فإن مواردك الثابتة ثابتة لحاويات الويب وليس لها أي علاقة مع Servlets. تتعلق Servlets فقط بما تحتاج إلى التعامل معه.
أين هو أفضل مكان لكتابة JS؟
اعتاد الكثير من الناس على كتابة JS في JSP أو HTML ، وهو أمر سيء.
عندما نقوم ببناء مشروع ، يجب أن نأمل أن يتم تخزين JS و CSS لدينا من قبل المتصفح.
بعد ذلك ، فإن JS مكتوبة في علامة البرنامج النصي للصفحة هي مجرد علامة لا تختلف عن Div أو المدخلات ولن يتم تخزينها مؤقتًا. لقد راجعت الكثير من المعلومات ، وقلت ذاكرة التخزين المؤقت التي رأيتها بوضوح أن وحدة التخزين المؤقت هي ملف. ليس الملصق. لذلك لست متأكدًا تمامًا من كتابة CSS JS في الملف وتقديم الملف بحيث يتم تخزين الملف مؤقتًا ، لأنه لا توجد إجابة إيجابية مباشرة ، إنها تخميني.
JSP هي في الواقع servlet ، لذلك هي صفحة ديناميكية. في كل مرة تحتاج إلى تحميل فئة للترجمة ديناميكيًا ، ثم تكتب طريقة الكتابة في الفصل الصفحة إلى HTTP إلى المتصفح ويجعل المتصفح. إذا كان HTML ، فهو ثابت. ديناميكية ومرنة ، ليس هناك شك في أنه نظرًا لأنها servlet ، فهي كائن Java ، وتسمى علامات وطرق Java المختلفة. يجب التعامل مع الصفحات الثابتة بنفسك. إذا كنت تستخدم لغة ماكرو مماثلة للصفحات الثابتة ، فمن الأفضل استخدام JSP مباشرة.
ما مقدار البيانات التي يتم تحميلها في وقت واحد على الصفحة؟
إذا كان المحتوى المعروض على صفحتك يعتمد على الفئات والقوائم ، فإن كمية البيانات صغيرة جدًا ، مع مئات العناصر. يتم عرض النوع الآن في تطبيق Order Takeaway ، ثم يتم تقديم جميع الفئات والبيانات في وقت واحد. لذلك ، تتم معالجة المعالجة على جانب العميل ، تتم معالجة تبديل الفئة والمعاينة في العملية بأكملها على الصفحة ، بما في ذلك البحث. لن يتنافس JS على عميلنا أو الهاتف المحمول A أو الكمبيوتر A مع الهاتف المحمول أو الكمبيوتر الخاص بـ B. إذا قمت بتبديل نوع في كل مرة تقوم فيها بالتبديل إلى نوع ما ، فسوف تقوم بتنظيف Ajax ، وهي نفس مجموعة حاويات الويب ، بحيث تكون هناك منافسة. كلما زادت تكرار العملية ، زادت المنافسة. يرتبط هذا ارتباطًا وثيقًا بالسيناريو الفعلي.
لا علاقة لكمية البيانات التي يتم إرجاعها عن طريق الاستعلام بالأداء. آلاف الآلاف من البيانات هي فقط على مستوى عشرات KB.
عدد الاستعلامات ، أي عدد التفاعلات مع الخادم ، هو السبب المباشر الذي يؤثر على الأداء الكلي.
كمية البيانات في الاستعلام تتناسب مع حجم الجدول الذي يتم الاستعلام عنه. لن يسرع الاستعلام عن طريق إعادة 10 استعلامات في وقت واحد ، و 10 استعلامات في وقت واحد ، مما يبطئ الاستعلام. عملية قاعدة البيانات هي في الأساس تطبيق مجموعة ولا يتم إنشاء شيء.
فرضية الضبط هي أن المبلغ المقدم هو الأنسب ، وليس كلما تقدمت ، كلما كان ذلك أكثر ملاءمة. الذاكرة التي يمكن أن تستهلكها JDK أو Tomcat على أرقام مختلفة من نظام التشغيل.
استخدم nginx ؛
استخدم ذاكرة التخزين المؤقت عند الضرورة ؛
حدد الوسيطة الوسيطة أو غيرها من البرامج الوسيطة وفقًا لما إذا كنت بحاجة إلى ذلك ؛
يجب أن يكون الفصل بين قواعد البيانات أو المنفصلين الرئيسيين ، وما إلى ذلك هو أن قاعدة البيانات الحالية لا يمكنها دعم حجم حركة المرور.
Singleton طريقة جيدة.
Multithreading هي شفرة حادة ، ولا تميز بين اللغة المحددة.
تعد Maven Management طريقة جيدة ، ولكن يجب أن تكون هيئة مشروعك الرئيسية هي WebMVC ، وأن تقوم بإنشاء مشروع ويب ، وتضمين Maven كمكون ، بدلاً من إنشاء مشروع Maven ثم تحويله إلى مشروع ويب ، ما لم يكن خاملاً.
باستخدام الربيع ، هو حاليا أفضل السقالات.
استخدم JDBC قدر الإمكان ، إن أمكن.
لا تتفاعل مع الخادم عندما يمكنك إنجاز الأشياء على العميل. موارد العميل واسعة وموارد الخادم محدودة.
حاول إرسال عدد أقل من الطلبات. الرموز التي ترسل عدد أقل من الطلبات هي رمز جيد ، إلا إذا كنت تطبيقًا فوريًا.
الأدوات في كل رمز هي أدوات ، و API هي ما تحتاج إلى فهمه أكثر. لا توجد إجابة دقيقة على أي واحد أفضل وأيها ليست جيدة.
كل شيء كائن ، وهو نقي بالنسبة لجافا. الوكيل هو كائن ، والانعكاس هو كائن ، والكائن هو كائن ، ونوع البيانات الأساسية ليس كائنًا.
يتم الانتهاء من أشياء أخرى غير الأنواع الأساسية من خلال الكائنات. بغض النظر عن مدى تعقيد العملية ، يتم إكمالها من خلال طرق الكائن المقابلة مع معلمات الطريقة. كيفية إجراء تسلسل فئة وإهانةه ، لوضعه بصراحة ، إنه IO ونقل الملف ، ثم قم بتحميله في JVM وإنشاءه في كائن.
سبب عدم استدعاء RPC في موضوع. الشيء المسمى هو وكيل. يقوم الوكيل بتحويل احتياجاتك إلى معلمات ويرسلها كداول بيانات. يقوم الخادم بتحويل دفق الطلب إلى كائنات ثم يقوم ببثها مرة أخرى. ثم تقوم ببناء الكائن ومعالجته من خلال الكائن.
NIO طريقة جيدة ، Netty هو خيار جيد ، هل هناك أي مقبس متعدد الخيوط يتجاوز Netty؟
ZookeePer هي أداة ممتازة لسلسلة من الحلول مثل التسجيل الموزع الجيد.
هذه الأشياء كلها مبادئ وأشياء ، لذلك تحتاج إلى استخدامها لقراءتها بجد.
ما سبق هو الفهم الشخصي ، وأنت مرحب بك لتصحيحه.