1. عملية تنفيذ servlet
يصدر العميل طلب HTTP ، ويقوم خادم الويب بإعادة توجيه الطلب إلى حاوية Servlet. تقوم حاوية Servlet بتوزيع عنوان URL وتجد servlet المقابلة استنادًا إلى web.xml ، وينتقل كائنات الطلب والاستجابة إلى servlet التي تم العثور عليها. يمكن لـ Servlet معرفة من الذي أصدر الطلب ومعلومات الطلب والمعلومات الأخرى بناءً على الطلب. بعد معالجة Servlet منطق العمل ، سيضع المعلومات في الاستجابة والرد على العميل.
2. عملية تنفيذ springMVC
SpringMVC هو إطار تحكم هرمي مع DispatchServlet باعتباره القلب. أولاً ، يصدر العميل طلبًا إلى خادم الويب لتحليل عنوان URL للطلب ومطابقة عنوان URL رسم الخرائط الخاص بـ DispatchServlet. إذا كان يتطابق ، ضع هذا الطلب في DispatchServlet. يبحث DispatchServlet عن المقبض المقابل وفقًا لتكوين رسم الخرائط ، ثم تسليم حقوق المعالجة إلى المقبض الموجود. يعتمد المقبض على رمز معالجة منطق الأعمال. بعد معالجة المقبض ، سيعود عرض عرض منطقي إلى DispatchServlet. في هذا الوقت ، يعد ModelView طريقة عرض منطقية ، وليس طريقة عرض رسمية ، وبالتالي فإن DispatchServlet ستحلّل ModelView من خلال مورد ViewResource View ، ثم وضع المعلمات المحلية في العرض والعودة إلى العميل وعرضها.
3. إعطاء ملف txt ، كيفية الحصول على عدد مرات تظهر سلسلة معينة
ملف الملف = ملف جديد ("e: //test.txt") ؛ inputStream هو = جديد fileInputStream (ملف) ؛ byte b [] = new byte [1024] ؛ int a = iS.Read (b) ؛ String str [] = new string (b ، 0 ، a) 0 ؛ i <str.length ؛ i ++) {if ("a" .equals (str [i])) count ++ ؛} system.out.println (count) ؛ 4. فكرة نموذج تصميم جافا (وضع العمود الواحد ، وضع المصنع ، وضع الإستراتيجية ، ما مجموعه 23 أوضاع تصميم)
أ) وضع Singleton: يتطلب جوهر وضع Singleton فقط وضع كائن مثيل واحد جديد ، مثل اتصال قاعدة البيانات ، وعدد الأشخاص عبر الإنترنت ، وما إلى ذلك. يتم تنفيذ إحصائيات الأرقام عبر الإنترنت التي شوهدت على بعض مواقع الويب من خلال وضع Singleton ، الذي يخزن مؤقتًا في قاعدة البيانات أو الذاكرة. عندما يقوم شخص ما بتسجيل الدخول ، يضيفه ويعيده مرارًا وتكرارًا. عندما يسجل شخص ما ، أخرجه وطرحه ويعيده مرارًا وتكرارًا. ومع ذلك ، عندما يقوم شخصان بتسجيل الدخول في نفس الوقت ، فإنهما سيخرجان العداد في نفس الوقت ، ويضيفان واحدة في نفس الوقت ، ويعيدونها في نفس الوقت. وبهذه الطريقة ، ستكون البيانات خاطئة. لذلك ، هناك حاجة إلى كائن متغير عالمي لجميع الأشخاص لاستخدامه ، وهناك حاجة إلى كائن مثيل واحد فقط. هذا هو تطبيق وضع Singleton ، ووضع Singleton يوفر الموارد لأنه يتحكم في عدد كائنات المثيل ويؤدي إلى إعادة تدوير GC.
ب) نمط السياسة: هو استخراج الأساليب المشتركة في عدة فئات في فئة جديدة ، بحيث يمكن توسيعها أسهل ، وضمان قابلية الرمز ، والصيانة. على سبيل المثال ، هناك شرط لكتابة كائنات البط ، والتي تسمى ، الطيران ، والمظهر. إذا كتب كل فئة بطة هذه الطرق الثلاث ، فسيكون الكود زائداً. في هذا الوقت ، يمكننا استخراج الطرق الثلاثة التي تسمى ، والطيران ، والمظهر في فئة البط ، ووضعها في فئة Puck Parent ، بحيث ترث كل بطة فئة Puck Parent وإعادة كتابة هذه الطرق الثلاث. وبهذه الطريقة ، فإن الكود المغلف محمول للغاية. عندما يقترح المستخدم متطلبات جديدة مثل Duck يمكن أن تسبح ، يكون الأمر بسيطًا جدًا بالنسبة لنا. نحتاج فقط إلى إضافة طريقة السباحة إلى فئة Duck Parent ، والسماح لبطة السباحة بإعادة كتابة طريقة السباحة.
ج) وضع المصنع: يوفر وضع المصنع البسيط بشكل أساسي إشارات إلى كائنات المثيل بطريقة موحدة ويحصل على إشارات إلى كائنات المثيل من خلال واجهة وضع المصنع. على سبيل المثال ، بالنسبة لوظيفة تسجيل الدخول ، تحتوي الواجهة الخلفية على ثلاث فئات وفئة وحدة تحكم وفئة واجهة وفئة تنفيذ واجهة التنفيذ. عندما يصدر العميل طلبًا ، عندما يتم تمرير الطلب إلى فئة وحدة التحكم ، تحصل وحدة التحكم على الكائن المرجعي للواجهة ، وتنفذ فئة التنفيذ الواجهة رمز منطق أعمال تسجيل الدخول. عندما تحتاج إلى إضافة متطلبات التسجيل ، تحتاج فقط إلى إضافة طريقة تسجيل إلى فئة الواجهة ، وتنفيذ الطريقة في فئة التنفيذ ، ويمكن لوحدة التحكم الحصول على كائن مرجع للواجهة دون تغيير الكود الأصلي. هذا النهج قابل للتطوير للغاية.
5. فرز الفقاعات ، البحث الثنائي
أ) فقاعة
MP -void static public (int a []) {int swap = 0 ؛ for (int i = 0 ؛ i <a.length ؛ i ++) {for (int j = i ؛ j <a.length ؛ j ++) {if (a [j]> a [i]) {swap = a [i] ؛ a [i] = a [j] ؛ swap ؛}}} system.out.println (Arrays.ToString (a)) ؛}ب) البحث الثنائي
int int in in in in in in int a [] ، int tag) {int first = 0 ؛ int end = a.length ؛ for (int i = 0 ؛ i <a.length ؛ i ++) {int middle = (first + end) / 2 ؛ if (tag == a [middle]) {return middle ؛}} 0 ؛} 6-8. فهم أياكس
أ) Ajax هو طلب غير متزامن ، أي تقنية تحديث محلية. في الصفحات التقليدية ، يحتاج المستخدمون إلى النقر على الأزرار أو الأحداث لتحريك الطلبات لتحديث الصفحات. تعمل التكنولوجيا غير المتزامنة على تشغيل الأحداث دون النقر ، مما يعزز تجربة المستخدم ، مثل التحميل غير المتزامن لعربات التسوق في المركز التجاري ، عند النقر فوق منتج ، لا تحتاج إلى طلب الخلفية وتعديل المعلمات بشكل مباشر.
9. ترتيب الدعوة بين فئة الوالدين وفئة الطفل (نتيجة الطباعة)
أ) كتلة الكود الثابتة فئة الوالدين
ب) كتلة الكود الثابت من الفئة الفرعية
ج) مُنشئ فئة الوالدين
د) طريقة بناء الفئة الفرعية
ه) الفئة الفرعية الطريقة العادية
و) أعد كتابة طريقة الفئة الأصل ، وطبع طريقة إعادة الكتابة
10. نداءات الطبقات الداخلية والخارجية
أ) يمكن للفئة الداخلية استدعاء متغيرات الأعضاء مباشرة للفئة الخارجية بما في ذلك الخاص ، واستخدام هذا. الكلمة الرئيسية المشار إليها من قبل الفئة الخارجية للاتصال بها
ب) عندما تستدعي فئة خارجية فئة داخلية ، فإنها تحتاج إلى إنشاء كائن فئة داخلي
11. متعدد الخيوط
أ) العملية هي بيئة جارية مستقلة ، والتي يمكن اعتبارها برنامجًا ، في حين يمكن اعتبار مؤشر ترابط مهمة لعملية ما. على سبيل المثال ، QQ هي عملية ، ونافذة QQ هي موضوع.
ب) في برنامج متعدد الخيوط ، يمكن للتزامن متعدد الخيوط تحسين كفاءة البرنامج. لن تدخل وحدة المعالجة المركزية في حالة خاملة لأن موضوع معين ينتظر الموارد. وسوف يعطي الموارد لخيوط أخرى.
ج) مؤشر ترابط المستخدم هو مؤشر الترابط الذي نقوم بتطويره للبرنامج ، وخيط الخفي هو مؤشر ترابط النظام ، مثل GC في JVM Virtual
د) أولوية مؤشر الترابط: كل مؤشر ترابط له مستوى الأولوية. يمكن لأولئك الذين لديهم مستوى محدود للغاية الحصول على موارد وحدة المعالجة المركزية لتغيير الخيط من الحالة الجاهزة إلى حالة التشغيل. يمكنك أيضًا تخصيص المستوى المحدود من المواضيع
هـ) Deadlock: تسعى خيوطان أو أكثر على الأقل إلى أكثر من موارد وحدة المعالجة المركزية ، تجنب استخدام الأقفال المتداخلة إذا تجنبوا المسدود. تحتاج فقط إلى إضافة أقفال حيث تحتاج إلى مزامنة وتجنب الانتظار اللانهائي.
12. مفهوم AOP و IOC (أي جوهر الربيع)
أ) IOC: الربيع هو إطار مفتوح المصدر. يمكن أن يؤدي استخدام الأطر إلى تقليل عبء العمل لدينا وتحسين كفاءة عملنا. إنه بنية هرمية ، أي أن الطبقات المقابلة تقوم بمعالجة منطق العمل المقابل وتقليل درجة اقتران التعليمات البرمجية. جوهر الربيع هو انعكاس التحكم في IOC والبرمجة العرضية الموجهة نحو AOP. يؤكد انعكاس التحكم في IOC بشكل أساسي على أن العلاقة بين البرامج يتم التحكم فيها بواسطة الحاويات ، والتي تتحكم في الكائنات والتحكم في اكتساب الموارد الخارجية. يعني الانعكاس أنه في البرمجة التقليدية ، نقوم بإنشاء كائنات للحصول على تبعيات ، بينما في IOC ، تساعدنا الحاوية على إنشاء كائنات وحقن الكائنات المعتمدة. إنها الحاوية تساعدنا في العثور على الكائنات وحقنها. يتم الحصول على الكائن ، لذلك يطلق عليه الانقلاب.
ب) AOP: تدير البرمجة الموجهة بشكل أساسي العمل على مستوى النظام ، مثل السجلات والأذونات والأشياء ، وما إلى ذلك. AOP هو قطع الكائنات المغلفة ، واكتشاف السلوك الشائع الذي يؤثر على كائنات متعددة ، وتغليفها في وحدة قابلة لإعادة الاستخدام. هذه الوحدة تدعى الجانب. يستخلص القسم المنطق ويغلفه غير مرتبط بمنطق الأعمال ولكنه يسمى بشكل مشترك من قبل وحدات العمل ، مما يقلل من الكود المكررة في النظام ، مما يقلل من الاقتران بين الوحدات ، وتحسين قابلية الصيانة للنظام.
13. الفكرة الأساسية للإسبات
أ) الفكرة الأساسية للإسبات هي آلية رسم خرائط لعلاقة كائن ROM. إنه رسم خرائط بين الجداول إلى عمليات بين الكائنات. أي أن المعلومات المستخرجة من قاعدة البيانات سيتم تغليفها تلقائيًا في كائنات محددة وفقًا لمتطلبات التعيين التي تقوم بتعيينها. لذلك ، تتمثل السبات في تعديل الكائن المقابل لصف البيانات عن طريق تعيين فئة كيان جدول البيانات.
14. الفرق بين الدعامات 1 و STRUTS2
15. الحذف الأمثل للشخصية في سلسلة
16-17. الفرق بين ArrayList و LinkedList
أ) كلها قوائم تنفيذ واجهة قائمة. ArrayList هي بنية بيانات قائمة على الصفيف ، و LinkedList هي بنية بيانات قائمة مرتبطة. عند الحصول على عناصر محددة ، يكون ArrayList سريعًا نسبيًا. يمكن الحصول عليها من خلال مشتركات الصفيف ، بينما تتطلب LinkedList نقل المؤشر. عند تخزين العناصر وحذف العناصر ، يكون LinkedList أكثر كفاءة. تحتاج فقط إلى نقل المؤشر إلى موضع محدد لإضافة أو حذفه ، بينما يتطلب ArrayList نقل البيانات.
18. تحسين قاعدة البيانات
أ) حدد الحقل المناسب ، مثل حقل صندوق البريد ، يمكنك تعيينه على char (6) ، ومحاولة تعيين الحقل على عدمه ، بحيث لا تحتاج قاعدة البيانات إلى مقارنة القيمة الفارغة عند الاستعلام
ب) استخدم انضمام يسار على الاستعلام بدلاً من الاستعلام الفرعي
ج) استخدام الاستعلام المشترك النقابي لإنشاء طاولات مؤقتة يدويًا
د) تشغيل الأشياء. عندما يتم تنفيذ عبارات متعددة في قاعدة البيانات ، ستتدحرج الأمور ، والتي يمكن أن تحافظ على سلامة قاعدة البيانات.
ه) باستخدام المفاتيح الأجنبية ، يمكن للأشياء الحفاظ على سلامة البيانات ، ولكن لا يمكن أن تضمن ارتباط البيانات. يمكن أن يؤدي استخدام المفاتيح الأجنبية إلى ضمان ارتباط البيانات
و) باستخدام الفهارس ، يعد الفهرسة طريقة شائعة لتحسين أداء قاعدة البيانات. يسمح لخادم قاعدة البيانات باسترداد صفوف محددة أسرع بكثير من بدون فهارس ، وخاصة بالنسبة لـ Max ، Min ، Order by query ، يكون التأثير أكثر وضوحًا
ز) بيانات الاستعلام المحسنة. في معظم الحالات ، يمكن أن يؤدي استخدام الفهارس إلى تحسين سرعة الاستعلام ، ولكن إذا تم استخدام عبارة SQL بشكل غير لائق ، فلن يتمكن الفهرس من تشغيل خصائصه.
19. تحسين خادم Tomcat (الذاكرة ، عدد الاتصالات المتزامنة ، ذاكرة التخزين المؤقت)
أ) تحسين الذاكرة: يعمل بشكل أساسي على تحسين معلمات بدء التشغيل TOMCAT. يمكننا تعديل أقصى ذاكرتها في البرنامج النصي لبدء تشغيل Tomcat ، إلخ.
ب) تحسين عدد مؤشرات الترابط: يتم تكوين معلمات الاتصال المتزامنة من Tomcat بشكل رئيسي في Server.xml في ملف تكوين Tomcat ، مثل تعديل الحد الأدنى لعدد مؤشرات ترابط الاتصال الخاملة ، والتي يتم استخدامها لتحسين أداء معالجة النظام ، وما إلى ذلك.
ج) تحسين ذاكرة التخزين المؤقت: قم بتشغيل وظيفة الضغط وتعديل المعلمات. على سبيل المثال ، يبلغ حجم محتوى الإخراج المضغوط 2 كيلو بايت افتراضيًا ، ويمكن تعديله بشكل مناسب.
20. بروتوكول HTTP
أ) تشمل طرق الطلب الشائعة الاستخدام GET and POST
ب) الفرق بين GET and Post: نقل البيانات ، والحصول على معلمات وعنوان الوصول ، ويمكن للمستخدمين رؤيتها. هذا سيكون غير آمن ويؤدي إلى تسرب المعلومات. يقوم Post بتغليف الحقول والقيم المقابلة في كيان لإرسالها ، وهو أمر غير مرئي للمستخدم. هناك قيود على الحصول على المعلمات التي تمر ، في حين لا توجد قيود على المنشور.
21. بروتوكول TCP/UDP
22. ما هي الواجهات الأساسية لإطار فئة مجموعة Java
أ) واجهة التجميع ، قائمة وتعيين واجهة جمع التطبيق ، ArrayList و LinkedList ، واجهة قائمة تطبيق المتجه ، متجه الوراثة المكدس ، واجهة الخريطة ، واجهة الخريطة القابلة للهاوية و hashmap
23. عملية تحميل الفصل
أ) عند مواجهة فصل جديد ، ستذهب أولاً إلى منطقة الطريقة للعثور على ملف الفصل. إذا لم يتم العثور عليها ، فستذهب إلى القرص الثابت للعثور على ملف الفصل. بعد العثور عليه ، ستقوم بإعادته وتحميل ملف الفصل إلى منطقة الطريقة. عند تحميل الفصل ، سيتم تعيين متغير العضو الثابت إلى المنطقة الثابتة لمنطقة الطريقة. سيتم تعيين متغير العضو غير القديم إلى المنطقة غير الاصطناعية. بعد ذلك ، ستبدأ في تهيئة متغير العضو الثابت وتعيين القيمة الافتراضية. بعد تعيين القيمة الافتراضية ، سيتم تعيين قيمة العرض وفقًا للموقع الذي كتبه المتغير الثابت ، ثم يتم تنفيذ الرمز الثابت. يتم إكمال تحميل الفئة فقط عند تنفيذ جميع التعليمات البرمجية الثابتة.
24. خلق الكائن
أ) عند مواجهة فئة جديدة ، سيتم تحميل الفصل وسيتم تحديد ملف الفصل
ب) تهيئة جميع متغيرات الأعضاء الثابتة ، سيتم أيضًا تنفيذ كتل التعليمات البرمجية الثابتة ، وسيتم تنفيذها إلا مرة واحدة عند تحميل الفصل.
ج) عندما يقوم كائن جديد ، سيقوم JVM بتخصيص مساحة تخزين كبيرة بما يكفي في الكومة
د) قم بمسح مساحة التخزين ، وقم بتعيين القيم الافتراضية لجميع المتغيرات ، وتعيين جميع مراجع الكائنات إلى NULL
هـ) امنح الحقل بعض عمليات التهيئة وفقًا لموقف الكتابة
و) استدعاء طريقة المنشئ (لا يوجد ميراث)
25. تحسين JVM
أ) تعيين المعلمات وضبط الحد الأقصى لعدد ذاكرة JVM
ب) اختيار جامع القمامة
26. معالجة التزامن عالية
أ) فهم بعض مشاكل التزامن العالي ، مثل كيفية التأكد من أن الجميع يمكنهم رؤية التذكرة دون شرائها. من الواضح أن آلية التزامن لا يمكن استخدامها ، لأن التزامن مقفل ولا يمكن تنفيذ التزامن إلا من قبل شخص واحد في وقت واحد. في هذا الوقت ، يمكن استخدام آلية القفل ، ويمكن أن يؤدي استخدام القفل المتفائل إلى حل هذه المشكلة. يتمثل المعنى البسيط في القفل المتفائل في استخدام التحكم في العمل لحل مشكلة التزامن دون قفل الجدول ، مما يضمن قابلية قراءة البيانات والحصرية للبيانات المحفوظة ، وضمان الأداء أثناء حل مشكلة بيانات القراءة القذرة الناتجة عن التزامن.
27. فهم الأشياء
أ) الأشياء ذرية ومتسقة ومستمرة ومعزولة
ب) الذرة: يشير إلى التراجع في شيء ما إما أن كل التنفيذ ناجح أو فشل كل شيء.
ج) الاتساق: الأمور تتناسق قبل التنفيذ وبعدها
د) الثبات: تشغيل بيانات متعددة في الأشياء دائمًا
هـ) العزلة: عندما يعمل شيء واحد على البيانات ، لا يمكن أن يعمل شيء آخر على البيانات ، أي أن الأشياء المتزامنة متعددة معزولة عن بعضها البعض.
28. دعامات سير العمل
أ) يصدر العميل طلبًا إلى حاوية Servlet
ب) يتم استدعاء الطلب بواسطة FilterDispatcher بعد بعض ترشيح الأعمدة ، ويبحث FilterDispatch في الإجراء المقابل من خلال ActionMapper.
ج) يجد ActionMapper الإجراء المقابل ويعيده إلى FilterDispatch ، ويعطي Dispatch حقوق المعالجة لـ ActionProxy
د) Actionproxy يجد فئة الإجراء المقابلة من خلال ملف التكوين
ه) ActionProxy ينشئ مثيل ActionIinvocation للتعامل مع منطق العمل
و) بمجرد معالجة الإجراء ، يكون الإجراء مسؤول عن العثور على نتيجة الإرجاع المقابلة وفقًا لتكوين Stuts.xml. النتيجة هي عادة صفحة JSP.