일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 자바 ORM 표준 JPA 프로그래밍
- Spring
- 밋업프로젝트
- 교육기획팀
- 최범균
- 큐시즘
- rabbitmq-delayed-message-exchange
- 도메인 주도 개발 시작하기
- 영속성
- Domain Driven Design
- JPQL
- 자동처리
- jdbc
- 교육기획팀원
- java
- GitHub Actions
- 이펙티브자바
- cicd
- ddd
- RESTClient
- 30기
- springboot
- Spring Batch
- 객체지향 쿼리 언어
- scheduling messages with rabbitmq
- kusitms
- reactive operaton
- delayed message plugin
- JPA
- 한국대학생it경영학회
- Today
- Total
목록Language/Java (16)
코딩은 마라톤

학습하게된 계기https://www.youtube.com/watch?v=uWcn7omddxs&t=753s 대용량 트래픽은 어떻게 대처해야하는지 궁금했었고, 마침 해당 영상을 우연히 보게 되었습니다.영상을 간단히 소개하면, 쿠폰 이벤트를 진행하였고 이때 대규모 트래픽이 발생하여 문제를 해결해나가는 과정을 설명한 영상입니다. AS-IS대규모 트래픽이 들어오면 컨트롤러에서 Redis로 바로 전달하는 시스템.부하를 전부 레디스로 처리하는 방식이라 문제 발생. TO-BE트래픽을 컨트롤러와 Redis 사이에 In-Memory Queue와 Scheduler를 사용하여 요청을 쪼개어 전달TPS를 Queue와 Scheduler를 통해 항상 쪼개어 전달할 수 있으므로 분산할 수 있음. 위 영상을 보고 어떻게 구현하는 ..
오랜만에 블로그 작성하네요,,,회사 적응 중이라 개인 공부를 하기 쉽지 않네요.. 는 변명이고 퇴근하고 집에 오면 너무 졸려요...ㅜ 뜬금없이 작성하는 이유는? 어제 코드 리뷰를 받다가 제가 이러한 코드를 작성했습니다.// 예시public static Computer of(Cpu cpu) { cpu = cpu != null ? cpu : gpu; // gpu는 cpu와 다른 예시 값입니다. ...} 코드 작성할 때"새로운 객체 생성하는 것보다 매개변수 객체를 재사용 하는 것이 낫겠군..!" 과 같이 생각하고 짯는데 메소드 개발 시 매개변수에 값을 할당하는 로직은 위험합니다참조 객체에 메소드 실행 후 set처리 되어 값 조작이 발생 가능합니다 위와 같은 코드리뷰를 받았습니다. 곰곰이 생각..
경로 표현식경로표현식이란 .(점)을 찍어 객체 그래프를 탐색하는 것이다.select m.usernamefrom Member m join m.team t join m.orders owhere t.name = '팀A' 위 쿼리에서 m.username, m.team, m.orders, t.name 모두 경로 표현식을 사용한 예다. 용어 정리상태 필드 : 단순히 값을 저장하기 위한 필드 (필드 or 프로퍼티)연관 필드 : 연관관계를 위한 필드, 임베디드 타입 포함 (필드 or 프로퍼티)단일 값 연관 필드 : @ManyToOne, @OneToOne, 대상이 엔티티컬렉션 값 연관 필드 : @OneToMany, @ManyToMany, 대상이 컬렉션경로 표현식과 특징상태 필드 경로 : 경로 탐색의 끝이다. ..
아이템 29. 이왕이면 제네릭 타입으로 만들라Object 기반 스택 public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { this.elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e) { elements[size++] = e; } public Object pop() { if (size == 0) { throw..
5장 제네릭자바 5부터 사용 가능제네릭을 사용하면 컴파일러에게 타입을 알려주어 더 안전하고 명확한 프로그램을 만들어 준다. 아이템 26. 로 타입은 사용하지 마라제네릭 타입클래스, 인터페이스 선언에 타입 매개변수가 쓰인 것List 인터페이스는 원소의 타입을 나타내는 타입 매개변수 E를 받는다. 제네릭 타입은 일련의 매개변수화 타입(parameterized type)을 정의한다.클래스(혹은 인터페이스) 이름에, 꺾쇠괄호 안에 실제 타입 매개변수 나열ex) List : String이 정규 타입 매개변수 E에 해당하는 실제 타입 매개변수 로 타입(raw type)제네릭 타입에서 타입 매개변수를 전혀 사용하지 않는 타입타입 선언에서 제네릭 타입 정보가 전부 지워진 것처럼 동작private final List l..

오늘은(6월 6일) 나라를 위해 희생한 이들을 기리는 국가추념일입니다. 목숨을 바친 모든 선열들에 의해 저희가 자유롭게 살 수 있습니다.항상 감사합니다. 아이템 25. 톱레벨 클래스는 한 파일에 하나만 담으라소스파일 하나에 톱레벨 클래스를 여러개 선언하더라도 자바 컴파일러는 문제를 일으키지 않는다.여러개 선언하는 일은 이득이 없고 심각한 위험이 생길 수 있다. public class Main { public static void main(String[] args) { System.out.println(BREAD.NAME + DRINK.NAME); }}Bread.javaclass Bread { static final String NAME = "소금빵";}class Drink { s..
아이템 22. 인터페이스는 타입을 정의하는 용도로만 사용하라인터페이스는 자신을 구현할 클래스의 인스턴스를 참조할 수 있는 "타입" 역할을 한다.클래스가 어떤 인터페이스를 구현한다는 것은 자신의 인스턴스로 무엇을 할 수 있는지를 클라이언트에게 알려주는 것! 위 용도로 인터페이스를 사용해야 한다. 안티 패턴 - 상수 인터페이스static final 필드로만 가득 찬, 메서드는 없는 인터페이스public interface NumberConstants { static final double ONE_NUMBER = 1.111111; static final double TWO_NUMBER = 2.222222; static final double THREE_NUMBER = 3.333333;} 클래스..

아이템 19. 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라문서화해놓지 않은 '외부' 클래스를 상속하는 것은 위험하다.프로그래머의 통제권 밖에 있고, 언제 어떻게 변경되는지 알 수 없다. 상속용 클래스는 재정의할 수 있는 메서드들을 내부적으로 어떻게 이용하는지(자기사용) 문서로 남겨야 한다.재정의할 수 있는 메서드public과 protected 메서드 중 final이 아닌 모든 메서드즉, 재정의 가능 메서드를 호출할 수 있는 모든 상황을 문서로 남겨야 한다. 예시@implSpec 태그를 붙여 자바독 도구가 절을 생성해준다.위 설명에서는 iterator 메서드를 재정의하면 remove 메서드의 동작에 영향을 줄 수 있음을 명시한다.iterator 메서드는 재정의할 수 있는 메서드다. ..