String format 문법 형식 %[argument_index$][flags][width]conversion 문법 설명 1) 필수값: %와 conversion 으로 무조건 있어야합니다. "conversion": 표현 할 데이터의 타입으로, s(문자열), d(정수), x(16진수), o(8진수), f(실수) ex) %s, %d, %x, %o, %f ex) System.out.println(String.format("%s, %s", "KOREA", "JAPAN")); 2) 옵션값: [argument_index$][flags][width] 는 생략 가능합니다. 생략 가능한 옵션 [argument_index] 옵션 [flags] 옵션 [width] 옵션 [argument_index] 옵션 들어갈 파라미터의 ..
개요 : AWS RDS 인스턴스를 생성하면, DB의 기본 Character Set이 "latin-1"입니다. 그렇기 때문에 한글 사용하면 글자가 "???"처럼 깨지게 됩니다. 파라미터 그룹을 통해 인코딩 값을 UTF-8로 변경하여 한글깨짐을 해결할 수 있습니다. 해결방법 1.RDS Dashboard 이동 2.왼쪽 사이드바에서 "Parameter groups" 클릭 3."Create parameter group" 클릭 4.원하는 "Group name", "Description"을 입력 5."Create" 클릭 6.만들어진 parameter group 클릭 7."Filter parameters"에 "character_set"으로 검색 8.수정하기 위해서 "Edit parameters" 클릭 9.검색에서 나온..
MethodSorters 옵션 MethodSorters.DEFAULT class에 속한 모든 method를 hashcode()를 호출하여, hashCode를 기반으로 순서가 결정한다. 일일히 hashCode를 찾아보지 않는 이상 실행 순서를 예측하기 힘들다. MethodSorters.JVM class에 속한 모든 method를 가져오는 getDeclaredMethods()에서 가져온 method의 순서대로 Test Case를 실행합니다. 단, JVM은 getDeclaredMethods()는 시스템의 리소스 상황에 따라 다른 순서로 결과를 보낸다. MethodSorters.NAME_ASCENDING 메소드 명을 오름차순으로 정렬한 순서대로 실행됩니다. 보통 Test 순서를 보장할 때, 많이 쓰는 어트리뷰트..
정의 자바프로그래밍하면 객체지향프로그래밍 OOP(Object Oriented Programming)라고 해도 됩니다. OOP의 특성으로 크게 캡슐화, 추상화, 다형성, 상속성 정도는 명확하게 알고있어야 합니다. 어떤 대상을 Abstraction하여 공통점을 찾고, 그것을 Encapsulation하여 한군데에 모아서 객체를 만들고, Inheritance하여 재사용이 가능하게 만들어줍니다. 상속받은 객체는 Polymorphism 하여 기능을 수정 또는 추가하여 재사용할 수 있다로 이해하면 됩니다. 결국 가장 중요한 것은 동일하게 반복하여 사용하는 코드를 줄이기 위해 OOP를 사용합니다. 유지보수의 관점에서도 좋겠죠? 1. 추상화 (Abstraction) 나중에 따로 추상클래스(Abstract Class)와 ..
ORM(Object-relational mapping)을 단순하게 표현하면 객체와 관계와의 설정이라 할 수 있다. ORM에서 말하는 객체(Object)의 의미는 우리가 흔히 알고 있는 OOP(Object_Oriented Programming)의 그 객체를 의미한다는 것을 쉽게 유추할 수 있을 것이다. 그렇다면 과연 관계라는 것이 의미하는 것은 무엇일까? 지극히 기초적인 이야기지만 개발자가 흔히 사용하고 있는 관계형 데이터베이스를 의미한다. 그렇다면 도대체 무엇이 문제여서 객체와 관계형 데이터베이스 간의 매핑을 지원해주는 Framework나 Tool들이 나오는 것일까? ORM framework나 도구가 없던 시절에도 이미 우리는 OOP를 하면서 객체와 관계형 데이터베이스를 모두 잘 사용하고 있었음에도, 굳..
공통점 추상클래스와 인터페이스는 선언만 있고 구현 내용이 없는 클래스다. 자바8부터 인터페이스에 default method 구현이 가능해졌지만 일반적으로 인터페이스는 구현이 없다. 인터페이스와 추상클래스를 가지고 새로운 인스턴스(객체)를 생성할 수 없다. 추상클래스를 extends로 상속받아 구현한 자식클래스나 인터페이스를 implements 하고 구현한 자식클래스만이 객체를 생성할 수 있다. => 결국 자식클래스가 무언가 반드시 구현하도록 위임해야할 때 사용해야 한다. 차이점 1.추상클래스 추상클래스는 추상메서드(abstract method)가 하나라도 존재하는 클래스를 말한다. 즉, 일부는 구현된 메서드도 있을 수 있고, 일부는 abstract method로 구현이 되어있지 않은 메서드도 있을 수 있..
DDL(Data Definition Language) - 데이터 정의 언어 : 테이블이나 관계의 구조를 생성하는데 사용하며 CREATE, ALTER, DROP,TRUNCATE 문 등이 있다. CREATE - 새로운 데이터베이스 관계 (테이블) View, 인덱스 , 저장 프로시저 만들기. DROP - 이미 존재하는 데이터베이스 관계 ( 테이블 ) , 뷰 , 인덱스 , 저장 프로시저를 삭제한다. ALTER - 이미 존재하는 데이터베이스 개체에 대한 변경 , RENAME의 역할을 한다. TRUNCATE - 관계 ( 테이블 )에서 데이터를 제거한다. ( 한번 삭제시 돌이킬 수 없음.) DML(Data Manipulation Language) - 데이터 조작 언어 : 테이블에 Record의 데이터 검색, 삽입, ..
일단은 어쩔 수 없는 과부하가 발생하기 전에 사전 모니터링을 해서 과부하를 줄여야합니다. 과부하가 발생하면, 서비스의 속도가 저하되거나 서비스가 접속 불가능한 상황이 됩니다. 두 가지 측면으로 서비스 병목 지점을 찾을 수 있습니다. 다음으로 설명을 시작하겠습니다. Infra 측면에서 서비스의 병목 지점을 일단 찾아야한다. 예를 들어, 3-tier 구조인 Client-Server-DB에서 Server와 DB 중에 어느 부분이 지금 높은 시스템 자원을 사용하고 있는지 확인합니다. 대부분은 Server나 DB 둘 중 한 부분에서 병목지점을 확인할 수 있습니다. WAS에서 병목현상이 발생할 경우에는 WAS 자체를 Scale-Up 또는 Scale-Out을 고려해야합니다. 일시적인 트래픽 증가로 인한 과부하는 Sc..