형식을 명시하여 컴파일 시점에 에러를 찾아낼 수 있는 방법
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 20/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- java, spring
- Ambito
- backend, distributed-systems
Direzione di ricerca
Non vengono nominati file, test o punti di ingresso. Inizia individuando l’interfaccia per la generazione delle chiavi e il suo utilizzo della concorrenza di Redisson, quindi definisci come devono essere rappresentati il formato della chiave dell’entità e l’ordine dei parametri; il lavoro è completato quando le forme di chiave non valide vengono rifiutate in fase di compilazione invece di produrre una chiave.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Spring 동시성 처리를 위해 Redisson을 사용하다 Redisson에서 Key를 사용하기 위한 Entity별 키 인터페이스를 구성하였다.
현재 구성한 key 생성 메서드는 다음과 같다
@Override
public String getKey(String... args) {
StringBuffer key = new StringBuffer(domain);
String[] components = args;
for (String comp : components) {
key.append("_");
key.append(comp);
}
return key.toString();
}
이때 키 같은 경우 "Entity 이름(domain)" + "구분자 1" + ... "구분자 N" 과 같이 딱 정형화된 틀이 있다.
위 코드의 문제점은 해당 메서드를 사용하는 사용자가 잘못된 순서나 잘못된 형식으로 파라미터를 입력해도 키가 그대로 생성되고 사용자는 의심 없이 사용하게 된다는 점이다.
이렇게 된다면 내부 틀을 아는 사용자만이 해당 메서드를 사용할 수 있고 메서드를 사용하는 시기에 틀에 맞춰 파라미터를 입력해야 하니 안정성이 취약해진다.
즉 안전하고 일관된 키 생성을 추구하려면 메서드에서 정형화된 틀을 제공해주고 이를 어긴다면 컴파일 시점에서 에러를 보여줘야한다.
초기 접근
초기에는 엔티티 객체 자체를 파라미터로 넘겨 해당 메소드 안에서 형식에 맞게 키를 생성해주는 방식을 선택했다.
이 방식은 redisson을 사용한 동시성 처리와 같이 사용하는데 문제가 있었다.
redisson을 사용한 동시성 처리는 동시성 처리가 필요한 튜플을 접근하기전 특정하여 이를 동기적으로 처리하는 방식이고 이때 튜플들을 구분하기 위해 키를 사용한다.
즉 키를 먼저 생성해야 튜플에 접근하고 엔티티를 획득할 수 있으니 (구분되는 키 -> 엔티티 접근) 엔티티를 사용하여 키를 생성하는 것은 동시성 처리 순서에 부합하지 않는 것이다.
메서드 파라미터
메서드 파라미터의 제한으로 한계가 있어 보인다. 파라미터로 제약할 수 있는 부분은 파라미터의 '타입값'과 '수'인데 만약 구분자의 종류가 둘다 Integer 인 두 개의 mapId, robotId 구분자가 있을 경우 두 구분자의 순서를 파라미터로 제한할 수 있는 방법은 없다.
- Lingua principale
- Nessun dato sulla lingua
- Stelle
- 0
- Fork
- 0
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di minaver/Daily-Issue
-
MSA에 대하여ApertaSpring
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
minaver/Daily-Issue#10 · 1 commento ·
-
커넥션 풀과 트랜잭션에 대한 통찰이 필요하다.ApertaDB Spring
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
minaver/Daily-Issue#9 ·
-
TDD
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
minaver/Daily-Issue#5 · 1 commento ·
-
Tech
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
minaver/Daily-Issue#3 ·
-
단위테스트를 해야하는 영역은 어디까지일까?ApertaTDD
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
minaver/Daily-Issue#1 · 2 commenti ·
Tutte le issue di minaver/Daily-Issue
Issue simili
-
A numeric literal is parsed in the host's culture, so 1.5 is 15 in a made EXE on a comma-decimal OSApertabug interpreter silently-wrong small
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
[Analytics] Add Focus Time-Block Efficiency Ratio Calculator in src/lib/focus/efficiency-ratio.tsApertaanalytics beginner friendly community contributions-welcome enhancement good first issue hacktoberfest help wanted up-for-grabs
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
slackapi/node-slack-sdk#2766 ·
I maintainer di solito rispondono entro 1 giorno
-
comp/gateway comp/plugins duplicate P3 type/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
NousResearch/hermes-agent#137019 ·
I maintainer di solito rispondono entro 1 giorno
-
mls-rs-crypto-awslc: exact aws-lc-rs =1.16.3 pin blocks rustls security updateForse già presa @muscariello l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100