Selgitage optimaalse lukustamise meetodi tööpõhimõtet andmete konkurentsivaba juurdepääsu haldamisel.
Java
Mis võib põhjustada funktsiooni jõudluse halvenemist?
Selgitage täieliku lukustamise kontseptsiooni andmebaaside haldamisel ja selle omadusi.
Kas teil on kogemusi andmete või ressursside pakkujatega suhtlemisel?
Kas saaksite selgitada Java Stream API kontseptsiooni ja kuidas seda kasutatakse andmete töötlemiseks?
Kasulike tsüklilised sõltuvused võivad põhjustada mälu lekked programmis?
Lugege kood läbi ja märkige vead /** * Klient, kellel on ostetud pilet, võib lisatasu eest valida konkreetse koha. * Kohtade põhinõuded määratakse tariifide (väline teenus) kaudu. * Teatud tariifide (PREMIUM, ULTRA) puhul tuleb maksmise ajal teha allahindlus. * Broneerimisel väljastatakse kliendile arve maksmiseks. Makse haldamine toimub välise teenuse kaudu. */ @Service public class SeatBookingService { @Autowired private SeatBookingRepository seatBookingRepository; @Autowired private TicketRepository ticketRepository; @Autowired private TariffClient tariffClient; @Autowired private CustomerClient customerClient; @Autowired private PaymentClient paymentClient; /** * Broneerimine. * @param seatCode koha kood (nt 19A) * @param ticketId pileti ID */ @Transactional public void bookSeat(String seatCode, UUID ticketId) { var ticket = ticketRepository.findById(ticketId); // broneerime var seatBooking = new SeatBooking(seatCode, ticket.get().getFlightId(), ticketId, BookingStatus.BOOKED); seatBookingRepository.save(seatBooking); // otsime põhihinna valitud kohale lennukis var basePrice = tariffClient.getBasePrice(ticket.get().getPlaneModel(), seatCode); // otsime kliendi andmed Long userId = (Long) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); var userData = customerClient.getCustomer(userId); System.out.println("Leitud kasutaja " + userData.getFio() + " dokumendi number " + userData.getDocument()); var price = basePrice; if (userData.getTariff() == "PREMIUM") { // 50% allahindlus price = basePrice * 0.5d; } if (userData.getTariff() == "ULTRA") { // 20% allahindlus price = basePrice * 0.8d; } var invoice = new Invoice(price, ticketId, userId); // väljastame arve paymentClient.sendInvoice(invoice); System.out.println("Arve väljastatud"); } @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; }
Millised on eelised ja puudused indeksite kasutamisel üksikute veergude jaoks andmebaasis?
Kuidas sa saad seda meetodit kiirendada?
Miks tekib ConcurrentModificationException erind, kui muudetakse ArrayList-i samal ajal, kui seda itereeritakse?
Kuidas toimub Bean'i seadistamine ja registreerimine Spring Frameworki raames?
Milliseid samme teeksite, kui süsteemi koormus suureneb ja andmebaasi päringute täitmise viivitused muutuvad märkimisväärseks?
Kas operatsioone, mille täitmine on transaktsioonide sees välistatud?
Milliseid meetodeid saab kasutada tabelis otsingukiiruse suurendamiseks?
Kuidas teada saada PostgreSQL-is täidetud SQL-päring?
Milliseid tehnikaid ja lähenemisviise kasutad andmemahu suurenedes vahemälu tõhususe parandamiseks?
Selgitage tüübi kustutamise kontseptsiooni ja selle peamist eesmärki programmeerimises.
Kas saak selgitada pessimistliku lukustamise põhimõtet ja kuidas see erine teistest lukustamise strateegiatest?
Mis erinevus on optimistliku lähenemise ja pessimistliku lähenemise vahel andmebaaside konkurentsi juhtimisel?