목록전체 글 (270)
전공공부
문제점 정적 팩토리, 생성자는 선택적 매개변수가 많을 때 적절하게 대응하기 어렵다. 예시 Code 식품 포장의 영양정보를 표현하는 클래스를 생각해보자. 영양정보는 1회 내용량, 총 n회 제공량, 1회 제공량당 칼로리 같은 필수 항목 몇 개와 총 지방, 트랜스 지방, 포화지방, 콜레스테롤, 나트륨 등 총 20개가 넘는 선택 항목으로 이뤄진다. 그런ㄴ데 대부분 제품은 이 선택항목 중 대다수의 값이 그냥 0이다. 1. 점층적 생성자 패턴 각 생성자의 매개변수 개수를 다르게 만들어, 여러 개의 생성자를 만드는 방식이다. 예시 public class NutritionFacts { private final int servingSize; private final int servings; private final in..
1. Replica - multiple instance 환경에서 권장하며 replica controller가 pod 가용성을 위해서 관리 rs-definition.yaml 제작 apiVersion: v1 kind: ReplicaController metadata: name: myapp-rs labels: name: myapp type: frontend spec: template: metadata: name: myapp labels: name: type: frontend spec: containers: -name: nginx-containers image: nginx replicas: 3 replicacontroller 확인 kubectl create -f rs-definition.yaml kubectl ..
1. CLI 명령 기반 배포 마스터 노드에 터미널로 접속한 상태에서 다음과 같은 명령을 실행한다. kubectl run nginx --image=nginx //k8s docker hub로 부터 이미지 가져와서 pod run kubectl get pod // pod 확인 2. YAML 파일 배포 pod-define.yaml apiVersion: v1 kind: Pod metadata: name: myapp-pod labels: app: myapp type: frontend spec: containers: #리스트 형태로 여러 컨테이너 사용 가능 - name: nginx-controller image: nginx kubectl apply -f kubectl create -f # 둘다 사용가능 해당 yaml ..
기본 타입 int, double, boolean, ... 박싱된 기본 타입 Integer, Double, Boolean, ... 그리고, 기본 타입과 달리 박싱된 기본 타입은 식별성을 가지기 때문에 두 변수가 값이 같아도 서로 다르다고 식별되어진다. 또한, 기본 타입과 달리 박싱된 기본 타입은 null 값을 가질 수 있다. 그래서, 위 점들을 유의하지 않고 사용하게되면 정말로 문제가 발생할 수 있다. 코드 1 Comparator naturalOrder = (i, j) -> (i < j) ? -1 : (i == j ? 0 : 1); 위 코드를 기준으로 naturalOrder.compare(new Integer(42),new Integer(42)); 를 실행하면 두 값이 같으므로 0을 출력하는 것이 맞지만 ..

Why? 정확한 계산을 위해서 부동 소수점의 사용을 피하여야 한다. 예를 들면, 금융 계산이 필요한 경우 굉장히 크리티컬한 이슈를 발생 시킬 수 있는데, 1달러 - 42센트를 계산하기 위해서 Java에서 계산하여 출력해보면 System.out.println(Double.valueOf(1-0.42)); 출력 : 0.5800000000000001 이러한 오답을 내게 될 수 밖에 없다. 이유는 부동 소숫점 저장 방식에 따른 오류이다. Reason 컴퓨터가 실수를 표현하는 방식이 2진수라서 정확한 소수의 표현이 되지 않는다. 컴퓨터가 정수 및 소수를 표현하는 방법은 위와 같다. 그래서, 0.75를 계산하려면 0.25 (1/4) + 0.5 (1/2)로 만드는 것인데 이는 위 방식대로라면 0.11으로 2진수로 표현..
계기 파일 시스템으로 관리되는 bin 파일을 WAS 서버로 불러와 사용하려 하였는데 Java OOM 이슈가 있어 DB에 해당 데이터를 적재한 후 필요한 만큼만 가져와 사용 할 필요가 있었다. 그래서 큰 용량의 데이터를 한 번에 insert 하게 되었는데 생각보다 시간이 너무 많이 걸려 이를 최적화 하기 위해서 사용해보았다. 구현 @Service @RequiredArgsConstructor public class ItemJdbcServiceImpl implements ItemJdbcService{ private final JdbcTemplate jdbcTemplate; private int batchSize; // 배치 사이즈 크기 지정 public void saveAll(List items){ int b..