Skip to content

Instantly share code, notes, and snippets.

View serdarmumcu's full-sized avatar

serdarmumcu serdarmumcu

View GitHub Profile
@serdarmumcu
serdarmumcu / LRUCache.java
Created July 30, 2020 18:44
LRU Cache Java Implementation
package com.yazilimmimari.hackerrank;
import java.util.LinkedHashMap;
import java.util.Map;
public class LRUCache<S,T> {
LinkedHashMap<S,T> cache;
int capacity;
LRUCache(int capacity) {
cache = new LinkedHashMap<>(capacity);
@serdarmumcu
serdarmumcu / LFUCache.java
Created July 30, 2020 18:48
LFU Cache Implementation Java
package com.yazilimmimari.hackerrank;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;
public class LFUCache<S,T> {
public class Node<S,T>
@serdarmumcu
serdarmumcu / FIFOCache.java
Created July 31, 2020 09:48
FIFO Cache Java Implementation
package com.yazilimmimari.hackerrank;
import java.util.LinkedHashMap;
import java.util.Map;
public class FIFOCache<S,T> {
LinkedHashMap<S,T> cache;
int capacity;
FIFOCache(int capacity) {
cache = new LinkedHashMap<>(capacity);
@serdarmumcu
serdarmumcu / RandomCache.java
Created July 31, 2020 09:49
Random Cache Implementation Java
package com.yazilimmimari.hackerrank;
import java.util.*;
public class RandomCache<S,T> {
HashMap<S,T> cache;
int capacity;
RandomCache(int capacity) {
cache = new HashMap<>(capacity);
this.capacity = capacity;
@Service
public class DataService {
@Autowired
private DatabaseRepository databaseRepository;
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
@Transactional
@RestController
public class MessageController {
@Autowired
private MessageRepository messageRepository;
@Autowired
private OutboxRepository outboxRepository;
private final ObjectMapper objectMapper = new ObjectMapper();
@PostMapping("/messages")
@Service
public class EventPublisherService {
@Autowired
private OutboxRepository outboxRepository;
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
@Scheduled(fixedRate = 10000) // Every 10 seconds
public void publishEvents() {
@Service
public class EventPublisherService {
@Autowired
private OutboxRepository outboxRepository;
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
@Autowired
@Service
public class EventProcessingService {
@Autowired
private OutboxRepository outboxRepository;
@Transactional
public void deleteProcessedEvents(List<Long> eventIds) {
if (!eventIds.isEmpty()) {
outboxRepository.deleteAllByIdIn(eventIds);
@Configuration
public class KafkaProducerConfig {
@Bean
public ProducerFactory<String, String> producerFactory() {
Map<String, Object> configProps = new HashMap<>();
...
configProps.put(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, true);
...