Quali conseguenze possono verificarsi creando un indice in una tabella con un milione di righe?
Java
Spiega il principio di funzionamento del metodo di blocco ottimista nella gestione dell'accesso concorrente ai dati.
Hai esperienza nell'interagire con fornitori di dati o risorse?
Cosa può portare a un peggioramento delle prestazioni di una funzione?
Puoi spiegare il concetto di API Stream in Java e come viene utilizzata per elaborare i dati?
Le dipendenze cicliche possono causare perdite di memoria in un programma?
Quali sono i vantaggi e gli svantaggi dell'utilizzo di indici per colonne singole in un database?
Come conoscere la query SQL eseguita in PostgreSQL?
Perché si verifica un'eccezione ConcurrentModificationException durante la modifica simultanea di un ArrayList durante l'iterazione?
Leggere il codice e evidenziare gli errori /** * Un cliente con un biglietto acquistato può, a pagamento, scegliere un posto specifico. * Il prezzo base dei posti è determinato dai tariffe (servizio esterno). * Per i clienti con tariffe specifiche (PREMIUM, ULTRA), è necessario applicare uno sconto al pagamento. * Durante la prenotazione, viene emessa una fattura per il pagamento. La gestione del pagamento avviene tramite un servizio esterno. */ @Service public class SeatBookingService { @Autowired private SeatBookingRepository seatBookingRepository; @Autowired private TicketRepository ticketRepository; @Autowired private TariffClient tariffClient; @Autowired private CustomerClient customerClient; @Autowired private PaymentClient paymentClient; /** * Prenotazione. * @param seatCode codice del posto (ad esempio 19A) * @param ticketId ID del biglietto */ @Transactional public void bookSeat(String seatCode, UUID ticketId) { var ticket = ticketRepository.findById(ticketId); //prenotiamo var seatBooking = new SeatBooking(seatCode, ticket.get().getFlightId(), ticketId, BookingStatus.BOOKED); seatBookingRepository.save(seatBooking); //cerchiamo la tariffa base per il posto sull'aereo var basePrice = tariffClient.getBasePrice(ticket.get().getPlaneModel(), seatCode); //cerchiamo i dati del cliente Long userId = (Long) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); var userData = customerClient.getCustomer(userId); System.out.println("Utente trovato " + userData.getFio() + " numero documento " + userData.getDocument()); var price = basePrice; if (userData.getTariff() == "PREMIUM") { //sconto del 50% price = basePrice * 0.5d; } if (userData.getTariff() == "ULTRA") { //sconto del 20% price = basePrice * 0.8d; } var invoice = new Invoice(price, ticketId, userId); //emetti la fattura paymentClient.sendInvoice(invoice); System.out.println("Fattura emessa"); } @Data @Table("seat_booking") public class SeatBooking { @Column private String seatCode; @Column private UUID flightId; @Column private UUID ticketId; @Column private BookingStatus status; } public enum BookingStatus { BOOKED, PAID; }
In che modo puoi aumentare la velocità di esecuzione di questo metodo?
Quali azioni intraprenderesti se, aumentando il carico sul sistema, i ritardi nell'esecuzione delle query al database diventassero significativi?
Puoi elencare i principali metodi forniti dall'API Stream in Java?
Puoi spiegare cosa si intende per tipo di dato atomico?
Può spiegare il principio del blocco pessimista e in cosa si differenzia da un'altra strategia di blocco?
Quali metodi possono essere usati per aumentare la velocità di ricerca in una tabella?
Come viene effettuata la configurazione e la registrazione dei Bean nel framework Spring?
Può spiegare come è strutturata la gerarchia di ereditarietà delle eccezioni nel linguaggio di programmazione?
Spiega il concetto di erasure del tipo e il suo scopo principale nella programmazione.
Esistono operazioni la cui esecuzione è esclusa all'interno delle transazioni?