Αυτή είναι "σύνδεση συμβολοσειρών" και είναι μια κακή πρακτική: … Μερικοί μπορεί να πουν ότι είναι αργή, κυρίως επειδή τμήματα της συμβολοσειράς που προκύπτει αντιγράφονται πολλές φορές Πράγματι, σε κάθε τελεστή +, η κλάση String εκχωρεί ένα νέο μπλοκ στη μνήμη και αντιγράφει όλα όσα έχει σε αυτό. συν ένα επίθημα που συνδέεται.
Είναι αναποτελεσματική η συνένωση συμβολοσειρών;
Η σύνδεση δεν είναι τόσο αναποτελεσματική, επειδή οι σύγχρονοι μεταγλωττιστές την αντικαθιστούν με μια αποτελεσματική υλοποίηση που βασίζεται στο StringBuilder (θα το δείτε αν δείτε τον bytecode του αρχείου κλάσης).
Γιατί είναι ακριβή η συνένωση συμβολοσειρών;
Είναι δαπανηρό. Ας εξετάσουμε πρώτα το γιατί είναι δαπανηρό. Στην Java, τα αντικείμενα συμβολοσειράς είναι αμετάβλητα, πράγμα που σημαίνει ότι μόλις δημιουργηθεί, δεν μπορείτε να το αλλάξετε. Έτσι, όταν συνενώνουμε μια συμβολοσειρά με μια άλλη, δημιουργείται μια νέα συμβολοσειρά και η παλαιότερη σημειώνεται για τον συλλέκτη σκουπιδιών.
Ποιοι είναι οι κίνδυνοι από τη χρήση της συνένωσης συμβολοσειρών σε ένα ερώτημα SQL;
1 Απάντηση
- Απόδοση: Όταν χρησιμοποιείτε μια έτοιμη δήλωση, η σύνταξη ερωτήματος πρέπει να αναλυθεί μόνο μία φορά και η διαδρομή πρόσβασης πρέπει να υπολογιστεί μόνο μία φορά για κάθε ξεχωριστό τύπο ερωτήματος. …
- Ασφάλεια: Η χρήση της σύνδεσης συμβολοσειρών με δεδομένα που παρέχονται από τον χρήστη είναι πάντα επιρρεπής σε επιθέσεις SQL-injection.
Είναι αργή η συνένωση συμβολοσειρών στην Python;
Αυτή η συμπεριφορά δεν πρέπει να σας εκπλήσσει: Τα αντικείμενα συμβολοσειράς της Python είναι αμετάβλητα, επομένως κάθε συνένωση δημιουργεί μια νέα συμβολοσειρά αντί να τροποποιεί την υπάρχουσα στη θέση της. Επίσης, δεν αποτελεί έκπληξη το γεγονός ότι οι πολλαπλές συνενώσεις χορδών θεωρούνται αργές.