Lēna datu bāze: kā atrast lēnas vaicājumus un ko ar tiem darīt?
Java
Pastāstiet man par savu pieredzi ar finanšu / transakciju pakalpojumiem.
Kādēļ ir nepieciešams NoSQL? Kāpēc relāciju datu bāzes ir nepietiekamas? Piemēri, priekšrocības, uzglabāšanas struktūras.
Vai vari sniegt piemēru situācijai, kad ThreadLocal izmantošana ir pamatota?
Pakalpojums katru pāris stundu krīt ar OutOfMemoryError. No kurienes sāksi problēmas analīzi?
Kā jūs novērtējat savu pieredzi ar Spring, Spring Boot? Ko bija jādara? Vai zināt, kā tas darbojas zem motora pārsega?
Kā darbojas iekšējā @Transactional anotācija, ja iekšējā metode atrodas citā pakalpojumā?
Kāda ir atšķirība starp hash-indeksiem un B-koka indeksiem? Kurš ir piemērotāks meklēšanai pēc uzvārda?
Kā iestatīt pavedienu baseina lielumu paralēlām HTTP pieprasījumiem?
Kas ir nemainīga (immutable) klase? Kādas ir tās nepilnības?
Ja ir datu kešatmiņa, kā saprast, ka OOM iemesls ir tieši tajā?
Problēmas ar izvietošanu: kļūdas rodas izvietošanas laikā un pēc tam izzūd. Kāpēc?
Kādā veidā jums tika saņemti uzdevumu prasības?
Kā apstiprināt out of memory kļūdu ražošanā un ko ar to darīt? Kā ņemt heap dump OOM brīdī?
Pastāstiet vairāk par CQRS īstenošanu jūsu gadījumā.
Kāda ir atšķirība starp synchronized bloku un atomikiem? Kā darbojas CAS?
Cik daudz mēģinājumu ir nepieciešams, lai garantētu, ka iegūstat pāri vienas krāsas, ja jums ir trīs krāsu zeķu kaudze (sarkana, balta, melna) un tās izvelkat pa vienai?
Ko tieši jūs konfigurējāt Kafka? Kādus konkrētus parametrus iestatījāt?
Lasiet kodu un izceliet kļūdas @Component public class AuthorSearchService { @Autowired private AuthorsRepository authorsRepository; @Autowired private StatisticsRepository statisticsRepository; private AlertRestClient arc = new AlertRestClient(); // Vaicājumā var būt gan pilns vārds, gan tikai vārda daļa, piemēram, "Vladimir Panov" vai "panov" @Transactional public List<Author> search(String query) { List<Author> authors = authorsRepository.findByNameContainingIgnoreCase(query); Statistics s = statisticsRepository.findById(query).orElse(null); if (s == null) s = new Statistics(query); s.setNumbers(s.getNumbers() + 1); statisticsRepository.save(s); if (s.getNumbers() > 1000 && authors.size() > 1000) { System.out.println("pārāk populāra meklēšana ar pārāk daudz datiem, brīdinājuma nosūtīšana..."); arc.send(query, s.getNumbers(), authors.size()); } return authors; } } @Entity @Data public class Author { @Id @GeneratedValue private Long id; private String name; @OneToMany(mappedBy = "author") private List<Book> books; public Author(String name) { this.name = name; } }
package ru.tbank; @Service public class OrderService { @Autowired private OrderRepository orderRepository; @Autowired private CacheService cacheService; public Order findOrder(Long orderId) { Order order = cacheService.get(orderId); if (order == null) { order = orderRepository.findById(orderId).orElse(null); if (order != null) { cacheService.put(orderId, order); } } return order; } }