Κοινή χρήση τεχνολογίας

Πρώτη εμπειρία συνέντευξης (πρακτικός ανάπτυξης Java)

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Ερωτήσεις συνεντευκτής

  • Θα ήθελα να ρωτήσω αν έχετε κάνει κάποια έργα εδώ;
  • Θα μπορούσατε παρακαλώ να μας πείτε για τα έργα στα οποία έχετε εργαστεί, ποια τεχνολογία στοίβας χρησιμοποιήσατε και ποιο περιεχόμενο ήσασταν υπεύθυνος για την ανάπτυξη; (Εμπειρία έργου)
  • Ποιοι είναι οι οκτώ βασικοί τύποι δεδομένων; (Βάση)
  • Μπορείτε να μου πείτε αν το long type μπορεί να τρέξει απευθείας; Το ερώτημα θα πρέπει να είναι αν μπορεί να υπολογιστεί άμεσα; (Βάση)
  • Καταλαβαίνετε το μονότονο μοτίβο; Μπορείτε να μιλήσετε για αυτό (Μοτίβα σχεδίασης)
  • Ποια είναι η διαφορά μεταξύ της λειτουργίας lazy man και της λειτουργίας hungry man;
  • Ποια είναι τα χαρακτηριστικά των συναλλαγών; (συναλλαγή)
  • Πείτε μου για τυχόν εξαιρέσεις που έχετε συναντήσει κατά τη διάρκεια της εργασίας σας σε έργα; (ασυνήθιστος)
  • Ας μιλήσουμε για τις τρεις κοινώς χρησιμοποιούμενες κατηγορίες χρόνου; (Βάση)
  • Μιλήστε για τρεις μεθόδους ημερολογίου;
  • Ας μιλήσουμε για τον κύκλο ζωής της συνεδρίας. (συνεδρία)
  • Έχετε αντιμετωπίσει ποτέ απώλεια ακρίβειας κινητής υποδιαστολής ενώ εργάζεστε σε ένα έργο; Πώς το έλυσες;
  • Στη συνέχεια, έχουμε έναν υπολογισμό με χρήση κινητής υποδιαστολής Ποιον τύπο δεδομένων θα επιλέγατε να υπολογίσετε;
  • Μπορείτε να μου πείτε μερικούς σχολιασμούς που χρησιμοποιούνται συνήθως; Ανοιξη; Ή κάτι άλλο;
  • Ξέρεις για τα νήματα;
    • Ποια είναι η διαφορά μεταξύ νήματος και διαδικασίας;
  • Πες μου λοιπόν τι είναι η ασφάλεια νήματος;
  • Πες μου τη διαφορά μεταξύ == και ίσων;
  • Λοιπόν έχετε χρησιμοποιήσει ποτέ linux; Μπορείτε να μιλήσετε εν συντομία για ορισμένες εντολές που χρησιμοποιούνται συνήθως;

το πρόβλημα λύθηκε

- 我想问一下你这边有做过什么项目吗?

Νομίζω ότι μπορείτε απλώς να επιλέξετε ένα ή δύο σχετικά καλά έργα για να μιλήσετε.

- 你方便讲一下你做过的那些项目吗,用了什么技术栈,包括你负责开发的内容是什么?

Επιλέξτε το πιο οικείο έργο για να μιλήσετε.

- 八大基本数据类型是什么?

byte, short, int, long, float, double, char, boolean

- 你说一下long类型能直接运转吗(Νομίζω ότι ρωτά εάν τα δεδομένα μεγάλου τύπου μπορούν να λειτουργήσουν απευθείας)

Μπορείτε να χειριστείτε απευθείας τις τιμές int και long type σε μια έκφραση, η τιμή τύπου int θα προωθηθεί αυτόματα σε τύπο long για να διασφαλιστεί ότι το αποτέλεσμα ολόκληρης της έκφρασης είναι μακρύς.

- 你了解单例模式吗?你可以讲一下吗

Το Singleton Pattern είναι ένα μοτίβο σχεδιασμού λογισμικού που χρησιμοποιείται συνήθως. Αυτό το μοτίβο είναι χρήσιμο όταν πρέπει να ελέγχετε την πρόσβαση σε πόρους ή όταν η δημιουργία αντικειμένων απαιτεί πόρους ή απαιτεί χρόνο και μόνο ένας από αυτούς τους πόρους ή παρουσίες απαιτείται παγκοσμίως. Οι συνήθεις μέθοδοι υλοποίησης του singleton mode περιλαμβάνουν κυρίως: lazy mode και hungry mode.

- 懒汉模式跟饿汉模式有什么区别?

  1. Μπορεί να ληφθεί απόΧρονισμός αρχικοποίησης αντικειμένων, ασφάλεια νήματος και χρήση πόρωνΣυγκρίνετε σε άλλες πτυχές:

      1. Χρόνος εκκίνησης
      • τεμπέλης λειτουργία: Η λειτουργία τεμπέλης είναι α延迟加载 μονότονο μοτίβο.Χαρακτηρίζεται από第一次使用时创建实例对象 , αντί να το δημιουργήσετε όταν φορτώνεται η κλάση.Αυτό το μοτίβο αποφεύγει την ανάγκη για παράδειγμα αντικειμένων όταν资源浪费, δημιουργείται μόνο όταν χρειάζεται.
      • Λειτουργία πεινασμένου: Η λειτουργία Hungry Man είναι ένα είδος在类加载时就创建实例 μονότονο μοτίβο. Το χαρακτηριστικό του είναι ότι το αντικείμενο παρουσίας δημιουργείται όταν φορτώνεται η κλάση, ανεξάρτητα από το αν θα χρησιμοποιηθεί.Αυτή η μέθοδος διασφαλίζει ότι το ίδιο αντικείμενο παρουσίας μπορεί να ληφθεί υπό οποιεσδήποτε συνθήκες, αλλά μπορεί να προκαλέσει κάποια性能和资源上的浪费, ειδικά σε ορισμένες περιπτώσεις το αντικείμενο της παρουσίας δεν χρησιμοποιείται.
      1. ασφάλεια νήματος
      • τεμπέλης λειτουργία: Η ίδια η λειτουργία Lazy είναι非线程安全的 , επειδή υπάρχει η πιθανότητα πολλαπλά νήματα να καλούν τη μέθοδο getInstance() ταυτόχρονα και να εισάγουν τη δήλωση κρίσης ταυτόχρονα, με αποτέλεσμα να δημιουργούνται πολλαπλές παρουσίες.Για να επιτύχετε ασφάλεια νημάτων, μπορείτε να χρησιμοποιήσετε τη μέθοδο getInstance().添加synchronized关键字 , αλλά αυτό θα επιβαρύνει την απόδοση. Επιπλέον, μπορείτε επίσης να χρησιμοποιήσετε το κλείδωμα με διπλό έλεγχο (Κλείδωμα με διπλό έλεγχο) και άλλες μεθόδους για να μειώσετε τα έξοδα συγχρονισμού.
      • Λειτουργία πεινασμένου: Η λειτουργία Hungry είναι线程安全Ναι, επειδή το αντικείμενο παρουσίας έχει δημιουργηθεί κατά τη φόρτωση της κλάσης, δεν υπάρχει πρόβλημα ανταγωνισμού σε περιβάλλον πολλαπλών νημάτων.
      1. Αξιοποίηση και απόδοση πόρων
      • τεμπέλης λειτουργία : Η λειτουργία τεμπέλης μπορεί να εξοικονομήσει πόρους επειδή αποφεύγει τη σπατάλη πόρων όταν δεν χρειάζονται αντικείμενα παρουσίας. Ωστόσο, δεδομένου ότι πρέπει να αρχικοποιηθεί την πρώτη φορά που χρησιμοποιείται, η απόδοση μπορεί να επηρεαστεί εάν η διαδικασία προετοιμασίας είναι πολύπλοκη ή διαρκεί πολύ.
      • Λειτουργία πεινασμένου : Η λειτουργία πεινασμένου μπορεί να μην είναι τόσο ευέλικτη όσο η lazy mode όσον αφορά τη χρήση των πόρων, επειδή δημιουργεί στιγμιότυπα αντικείμενα ανεξάρτητα από το αν θα χρησιμοποιηθούν. Ωστόσο, δεδομένου ότι το αντικείμενο παρουσίας έχει ήδη δημιουργηθεί κατά τη φόρτωση της κλάσης, είναι πιο γρήγορο στην πρώτη κλήση επειδή δεν απαιτείται προετοιμασία.
  2. Εφαρμόσιμη σκηνή

    • τεμπέλης λειτουργία: Εφαρμόζεται σεΈνα σενάριο όπου το αντικείμενο δημιουργείται μόνο όταν χρησιμοποιείται για πρώτη φορά και δεν υπάρχουν πολύπλοκες απαιτήσεις ασφάλειας νήματος κατά τη διαδικασία προετοιμασίας του αντικειμένου παρουσίας. . Για παράδειγμα,διαχείριση αρχείωνΑυτό είναι ένα τυπικό παράδειγμα, επειδή μπορεί να μην χρειάζεται να διαβάζετε και να γράφετε αρχεία αμέσως όταν ξεκινά η εφαρμογή, αλλά να εκτελείτε σχετικές λειτουργίες μόνο όταν χρειάζεται.
    • Λειτουργία πεινασμένου : Κατάλληλο για πόρους που πρέπει να αρχικοποιηθούν κατά την εκκίνηση του προγράμματος και χρησιμοποιούνται καθ' όλη τη διάρκεια του κύκλου ζωής της εφαρμογής. Για παράδειγμα, ένα καταγραφικό είναι ένας καλός υποψήφιος για το Hungry Pattern επειδή η λειτουργία καταγραφής συνήθως πρέπει να είναι έτοιμη στην αρχή της εφαρμογής και να καταγράφει μηνύματα καθ' όλη τη διάρκεια της εφαρμογής.
    • Συνοπτικά, η λειτουργία lazy man και η λειτουργία hungry man έχουν το καθένα τα δικά τους πλεονεκτήματα και μειονεκτήματα και σε πρακτικές εφαρμογές θα πρέπει να εξεταστούν και να σχεδιαστούν πλήρως σύμφωνα με συγκεκριμένα σενάρια.

- 说一下事务的几种特性?

  1. Οι συναλλαγές έχουν τέσσερα βασικά χαρακτηριστικά, τα οποία αναφέρονται και ωςΟΞΥΧαρακτηριστικά, συγκεκριμένα περιλαμβάνουν:
    • Ατομικότητα : Ατομικότητα σημαίνει ότι όλες οι λειτουργίες σε μια συναλλαγή είτε ολοκληρώνονται είτε δεν εκτελούνται. Είναι μια αδιαίρετη μονάδα εργασίας. Εάν παρουσιαστούν σφάλματα ή αποτυχίες κατά την εκτέλεση της συναλλαγής, οι λειτουργίες που έχουν πραγματοποιηθεί θα αναιρεθούν (επαναφέρονται) και ολόκληρη η συναλλαγή θα μοιάζει με μια πράξη που δεν έγινε ποτέ. Αυτή η δυνατότητα διασφαλίζει την ακεραιότητα και τη συνέπεια των συναλλαγών.
    • Συνοχή : Συνέπεια σημαίνει ότι μια συναλλαγή πρέπει να μετατρέψει τη βάση δεδομένων από μια κατάσταση συνέπειας σε μια άλλη κατάσταση συνέπειας. Πριν από την έναρξη της συναλλαγής και μετά το τέλος της συναλλαγής, οι περιορισμοί ακεραιότητας της βάσης δεδομένων (όπως περιορισμοί πρωτεύοντος κλειδιού, περιορισμοί ξένων κλειδιών κ.λπ.) δεν καταστρέφονται και όλα τα δεδομένα διατηρούν λογική συνέπεια. Εάν η ακεραιότητα της βάσης δεδομένων διακυβευτεί κατά την εκτέλεση μιας συναλλαγής, η συναλλαγή θα ματαιωθεί και οι λειτουργίες που έχουν πραγματοποιηθεί θα επαναφερθούν.
    • Απομόνωση : Απομόνωση σημαίνει ότι όταν εκτελούνται πολλές συναλλαγές ταυτόχρονα, κάθε συναλλαγή είναι απομονωμένη η μία από την άλλη και η εκτέλεση μιας συναλλαγής δεν μπορεί να παρεμποδιστεί από άλλες συναλλαγές. Το σύστημα βάσης δεδομένων παρέχει ένα ορισμένο επίπεδο απομόνωσης, έτσι ώστε οι συναλλαγές που εκτελούνται ταυτόχρονα να μην παρεμβαίνουν μεταξύ τους, διασφαλίζοντας έτσι την ορθότητα και τη συνέπεια των δεδομένων. Η απομόνωση συνήθως επιτυγχάνεται μέσω μηχανισμών όπως κλειδαριές (όπως κλειδαριές σειρών, κλειδαριές τραπεζιών κ.λπ.) ή έλεγχος ταυτόχρονης λειτουργίας πολλαπλών εκδόσεων (MVCC).
    • Αντοχή : Η ανθεκτικότητα, που ονομάζεται επίσης μονιμότητα, σημαίνει ότι από τη στιγμή που μια συναλλαγή δεσμευτεί, οι τροποποιήσεις της στη βάση δεδομένων είναι μόνιμες και δεν θα χαθούν ακόμη και αν το σύστημα αποτύχει. Το σύστημα βάσης δεδομένων διασφαλίζει τη διάρκεια των συναλλαγών μέσω των αρχείων καταγραφής και των μηχανισμών ανάκτησης Ακόμη και αν παρουσιαστεί μια αποτυχία συστήματος, το σύστημα μπορεί να ανακτήσει τις τροποποιήσεις στη βάση δεδομένων μέσω δεσμευμένων συναλλαγών μέσω αρχείων καταγραφής.

- 说一下你在做项目的过程中都遇到过哪些异常吗?(Απλώς απαριθμήστε μερικά)

  1. Εξαιρέσεις κώδικα
    • NullPointerException : Πετάγεται όταν προσπαθείτε να αποκτήσετε πρόσβαση ή να χειριστείτε ένα μη αρχικοποιημένο αντικείμενο. Είναι σύνηθες να ξεχνάμε να ελέγξουμε αν το αντικείμενο είναι μηδενικό και να το χρησιμοποιούμε απευθείας.
    • Εξαίρεση πίνακα εκτός ορίων (ArrayIndexOutOfBoundsException): Χρησιμοποιήθηκε μη έγκυρο ευρετήριο κατά την πρόσβαση στον πίνακα (το ευρετήριο είναι μικρότερο από 0 ή μεγαλύτερο ή ίσο με το μέγεθος του πίνακα).
    • Τύπος εξαίρεσης μετατροπής (ClassCastException): Κατά τη μετάδοση, το αντικείμενο που μετατρέπεται δεν είναι μια παρουσία του τύπου στόχου ή της υποκλάσης του.
    • ArithmeticException // με μηδέν: Όταν εκτελείτε λειτουργία διαίρεσης, ο διαιρέτης είναι μηδέν.
  2. Εξαιρέσεις δεδομένων
    • Σφάλμα μορφής δεδομένων: Για παράδειγμα, κατά την ανάλυση δεδομένων JSON ή XML, η μορφή δεδομένων δεν ανταποκρίνεται στις προσδοκίες.
    • Εξαίρεση ακεραιότητας δεδομένων: Εάν ένας περιορισμός ξένου κλειδιού στη βάση δεδομένων αποτύχει, οι κανόνες ακεραιότητας δεδομένων παραβιάζονται κατά την προσπάθεια εισαγωγής ή ενημέρωσης δεδομένων.
    • Εξαίρεση δεν βρέθηκαν δεδομένα: Εάν τα αντίστοιχα δεδομένα δεν βρεθούν σύμφωνα με τις δεδομένες συνθήκες κατά την υποβολή ερωτημάτων στη βάση δεδομένων.
  3. Εξαιρέσεις δικτύου
    • Λήξη χρονικού ορίου σύνδεσης (ConnectTimeoutException): Κατά την προσπάθεια δημιουργίας σύνδεσης δικτύου, το χρονικό όριο του αιτήματος σύνδεσης έληξε κατά την αναμονή για απάντηση.
    • Λήξη χρονικού ορίου ανάγνωσης (SocketTimeoutException): Η λειτουργία έληξε κατά την ανάγνωση δεδομένων από τη σύνδεση.
    • Το δίκτυο δεν είναι προσβάσιμο (UnknownHostException):δεν μπορεί να επιλυθεί το όνομα κεντρικού υπολογιστή.
    • Η σύνδεση απορρίφθηκε (ConnectionRefusedError): Το μηχάνημα προορισμού απέρριψε το αίτημα σύνδεσης.
  4. Εξαιρέσεις πόρων συστήματος
    • Υπερχείλιση μνήμης (OutOfMemoryError): Το JVM δεν είχε αρκετό χώρο στη μνήμη κατά την προσπάθεια εκχώρησης μνήμης.
    • Το αρχείο δεν υπάρχει (FileNotFoundException): Το αρχείο ή ο κατάλογος στον οποίο προσπαθείτε να αποκτήσετε πρόσβαση δεν υπάρχει.
    • Ανεπαρκή δικαιώματα (SecurityException/AccessDeniedException): Ανεπαρκή δικαιώματα για την εκτέλεση μιας λειτουργίας, όπως ανάγνωση και εγγραφή αρχείων, πρόσβαση σε πόρους δικτύου κ.λπ.
  5. Εξαιρέσεις υπηρεσιών τρίτων
    • Η υπηρεσία δεν είναι διαθέσιμη (ServiceUnavailableException): Η εξαρτημένη υπηρεσία τρίτου μέρους δεν είναι προσωρινά διαθέσιμη.
    • Όριο API (RateLimitException): Το αίτημα προς το API τρίτου μέρους υπερβαίνει το όριο του (όπως το όριο συχνότητας αιτήματος).
    • Ο έλεγχος ταυτότητας απέτυχε (AuthenticationException): Κατά την πρόσβαση σε υπηρεσίες τρίτων, οι πληροφορίες ελέγχου ταυτότητας δεν είναι έγκυρες ή έχουν λήξει.
  6. Λογικές Εξαιρέσεις
    • Λάθος επιχειρησιακής λογικής: Για παράδειγμα, το ποσό της παραγγελίας έχει υπολογιστεί λανθασμένα, το απόθεμα είναι ανεπαρκές αλλά η παραγγελία εξακολουθεί να υποβάλλεται σε επεξεργασία κ.λπ.
    • Ασυνεπής κατάσταση: Μια συγκεκριμένη κατάσταση του συστήματος δεν συνάδει με τις προσδοκίες, με αποτέλεσμα οι επόμενες λειτουργίες να είναι αδύνατες.

- 说一下时间常用的三个类?

LocalDate, LocalTime, LocalDateTime. (Απλώς αναφέρετε τρία)

  • Στην Java, οι κλάσεις που χρησιμοποιούνται συνήθως για τον χρόνο επεξεργασίας είναι κλάσεις κάτω από τα τρία πακέτα java.util.Date, java.util.Calendar και java.time που εισάγονται στην Java 8 (όπως π.χ.LocalDate, LocalTime, LocalDateTimeΠερίμενε)

- 说一下日历的三个方法?

Όταν πρόκειται για λειτουργίες που σχετίζονται με το ημερολόγιο, συνήθως σκεφτόμαστε την κλάση java.util.Calendar, επειδή είναι μια αφηρημένη κλάση που παρέχει μεθόδους λειτουργίας πεδίων ημερολογίου (όπως έτος, μήνας, ημέρα, ώρα κ.λπ.).Ξεκινώντας από την Java 8, εισήχθη ένα νέο API ημερομηνίας και ώρας (που βρίσκεται κάτω από το πακέτο java.time), παρέχοντας καλύτερες δυνατότητες επεξεργασίας ημερομηνίας και ώρας.

  • Εισαγωγή στις κοινές μεθόδους του LocalDateTime:
      1. Δημιουργία αντικειμένου LocalDateTime
      • now(): Δημιουργεί ένα αντικείμενο LocalDateTime που αντιπροσωπεύει την τρέχουσα ημερομηνία και ώρα.
      • of(): Δημιουργεί ένα αντικείμενο LocalDateTime με το καθορισμένο έτος, μήνα, ημέρα, ώρα, λεπτό, δευτερόλεπτο (και προαιρετικό νανοδευτερόλεπτο). Για παράδειγμα: LocalDateTime.of(2023, Month.JANUARY, 1, 12, 0, 0).
      1. Λάβετε τις ιδιότητες του αντικειμένου LocalDateTime
      • getYear(), getMonth(), getDayOfMonth(), getHour(), getMinute(), getSecond(), κ.λπ.: χρησιμοποιείται για τη λήψη των χαρακτηριστικών έτους, μήνα, ημέρας, ώρας, λεπτού και δευτερολέπτου στο αντικείμενο LocalDateTime αντίστοιχα.
      1. Τροποποιήστε τις ιδιότητες του αντικειμένου LocalDateTime
      • withYear(), withMonth(), withDayOfMonth(), withHour(), withMinute(), withSecond(), κ.λπ.: Ορίστε μια ιδιότητα του αντικειμένου LocalDateTime στην καθορισμένη τιμή και επιστρέψτε ένα νέο αντικείμενο LocalDateTime Το αρχικό αντικείμενο παραμένει αμετάβλητο μεταβλητή (επειδή το LocalDateTime είναι αμετάβλητο).
      1. Πρόσθεση και αφαίρεση ημερομηνίας και ώρας
      • plusYears(), plusMonths(), plusDays(), plusHours(), plusMinutes(), plusSeconds(), κ.λπ.: Προσθέστε την καθορισμένη χρονική περίοδο στο αντικείμενο LocalDateTime και επιστρέψτε ένα νέο αντικείμενο LocalDateTime. minusYears(), minusMonths(), minusDays(), minusHours(), minusMinutes(), minusSeconds(), κ.λπ.: Αφαιρέστε την καθορισμένη χρονική περίοδο από το αντικείμενο LocalDateTime και επιστρέψτε ένα νέο αντικείμενο LocalDateTime.
      1. Συγκρίνετε αντικείμενα LocalDateTime
      • isBefore(LocalDateTime other): Προσδιορίστε εάν το τρέχον αντικείμενο είναι προγενέστερο από το καθορισμένο αντικείμενο LocalDateTime.
      • isAfter(LocalDateTime other): Προσδιορίστε εάν το τρέχον αντικείμενο είναι μεταγενέστερο από το καθορισμένο αντικείμενο LocalDateTime.
      1. Μορφοποίηση αντικειμένου LocalDateTime
      • format (DateTimeFormatter formatter): Μορφοποιήστε το αντικείμενο LocalDateTime σε μια συμβολοσειρά στην καθορισμένη μορφή ημερομηνίας και ώρας. Για παράδειγμα: DateTimeFormatter formatter = DateTimeFormatter.ofPattern("εεεε-ΜΜ-ηη ΩΩ:λλ:δδ");
      1. Υπολογίστε τη διαφορά ώρας
      • Αν και το ίδιο το LocalDateTime δεν παρέχει μέθοδο για τον άμεσο υπολογισμό της διαφοράς ώρας, μπορείτε να χρησιμοποιήσετε την κλάση Duration ή την κλάση ChronoUnit για να υπολογίσετε τη διαφορά ώρας μεταξύ δύο αντικειμένων LocalDateTime.
      • Χρησιμοποιήστε την κλάση Duration: Duration duration = Duration.between(start, end); και, στη συνέχεια, μπορείτε να λάβετε τη συγκεκριμένη τιμή της χρονικής διαφοράς, όπως δευτερόλεπτα, χιλιοστά του δευτερολέπτου, κ.λπ., μέσω του αντικειμένου διάρκειας.
      • Χρησιμοποιώντας την κλάση ChronoUnit: μπορείτε να καθορίσετε τη μονάδα για τον υπολογισμό της διαφοράς ώρας, όπως έτος, μήνας, ημέρα, ώρα κ.λπ. Για παράδειγμα: μεγάλες μέρες = ChronoUnit.DAYS.between(start, end);.

- 说一下session的生命周期吧。

  1. Δημιουργία συνεδρίας
    • Χρόνος δημιουργίας:Το Session χρησιμοποιείται όταν ο χρήστης έχει για πρώτη φορά πρόσβαση στον διακομιστή και ζητά JSP, Servlet, κ.λπ.动态资源 δημιουργήθηκε όταν.Πρόσβαση μόνο σε HTML, εικόνες κ.λπ.静态资源 Δεν θα ενεργοποιήσει τη δημιουργία του Session. Εάν είναι απαραίτητο, μπορείτε να επιβάλετε τη δημιουργία περιόδου λειτουργίας καλώντας request.getSession(true).
    • τοποθεσία αποθήκευσης: Η περίοδος λειτουργίας αποθηκεύεται στην πλευρά του διακομιστή, συνήθως στη μνήμη του διακομιστή για γρήγορη πρόσβαση.
  2. Συντήρηση συνεδρίας
    • Ενημέρωση του τελευταίου χρόνου πρόσβασης: Όσο ο χρήστης συνεχίζει να έχει πρόσβαση στον διακομιστή, ο διακομιστής θα ενημερώνει τον τελευταίο χρόνο πρόσβασης της περιόδου σύνδεσης και θα διατηρεί την περίοδο λειτουργίας για κάθε αίτημα, ανεξάρτητα από το αν θα διαβάσει ή θα γράψει την περίοδο σύνδεσης. Αυτό υποδηλώνει ότι η περίοδος λειτουργίας του χρήστη βρίσκεται σε "ενεργή" κατάσταση.
    • μοναδικότητα της συνεδρίας : Κάθε χρήστης θα έχει μια ανεξάρτητη περίοδο σύνδεσης, η οποία προσδιορίζεται μοναδικά από το αναγνωριστικό περιόδου σύνδεσης. Το Session ID συνήθως αποστέλλεται στον πελάτη μέσω ενός cookie (που ονομάζεται JSESSIONID) έτσι ώστε ο διακομιστής να μπορεί να αναγνωρίσει διαφορετικές περιόδους σύνδεσης χρήστη.
  3. Καταστροφή συνεδρίας
    • Αυτόματη καταστροφή : Όταν λήξει ο κύκλος ζωής της περιόδου λειτουργίας (δηλαδή, δεν υπάρχει δραστηριότητα για μεγάλο χρονικό διάστημα), ο διακομιστής θα το διαγράψει αυτόματα από τη μνήμη. Αυτή η ώρα είναι συνήθως διαμορφώσιμη και ορίζεται από προεπιλογή σε 30 λεπτά στο Tomcat.
    • Χειροκίνητη καταστροφή : Οι προγραμματιστές μπορούν να καταστρέψουν με μη αυτόματο τρόπο την περίοδο λειτουργίας καλώντας τη μέθοδο invalidate() της περιόδου λειτουργίας. Αυτό χρησιμοποιείται συνήθως για σενάρια όπως αποσύνδεση και χρονικό όριο.
  4. Ρυθμίσεις κύκλου ζωής συνεδρίας
    • Ρύθμιση σε Servlet: Ορίστε το χρονικό όριο λήξης περιόδου λειτουργίας σε δευτερόλεπτα καλώντας τη μέθοδο session.setMaxInactiveInterval(int interval).
    • Ρύθμιση σε web.xml: Στο αρχείο web.xml της εφαρμογής web,通过