본문 바로가기

반응형

분류 전체보기

(133)
AOP 란? 스프링 xml에서 <aop:config> 태그 용도 - AOP란? - AOP는 Aspect-Oriented Programming를 줄인 말이다. 관점 지향 프로그래밍 정도로 번역한다. OOP(Object-Oriented Programming)가 객체를 중심 요소로 놓고 개발해 보자는 자세라면, AOP는 관점을 중심 요소로 두어 보자는 의미다. 관점을 중심으로 보자는 말은 무슨 뜻일까? 실생활에서 이런 말을 가끔 쓴다. '소비자의 관점에서 생각해 보자.' '학생의 관점에서 생각해 보자.' 똑같은 상황을 두고 다른 사람 입장에서 생각해 보자는 의미다. 무언가를 먹을 때도, 소비자의 관점에서는 맛에 관심이 있을 것이고, 사업가의 입장에서는 얼마나 잘 팔리는지에 관심이 있을 것이고, 질병관리청의 입장에서는 위생에 관심이 있을 것이다. 이처럼 관점을 다르게 하면 ..
1:N 관계 / M:N 관계, 식별 관계 / 비식별 관계 - 개념과 예시 - 1 : N 관계 - - 출판사 : 출판한 책 - 가수 : 노래 - 소속사 : 소속된 연예인 - 구단 : 소속된 운동 선수 - A : B 라고 했을 때, A 하나가 B를 여러 개 가지고 있을 수 있다. 대신 반대는 성립하지 않는다. B 하나는 항상 단 하나의 A만 가진다. ex) A1 ---> B1 / B1 ---> A1 A1 ---> B2 / B2 ---> A1 A1 ---> B3 / B3 ---> A1 A1 ---> B4 / B4 ---> A1 A2 ---> B5 / B5 ---> A2 A2 ---> B6 / B6 ---> A2 - 출판사 하나는 여러 책을 출판하고 있다. 반대로 책 한 권은 출판사를 한 곳만 가지고 있다. - '김영사'라는 출판사 하나는 '사피엔스', '팩트풀니스', '아웃라이어'..
상세 항목들의 합계를 구해 놓는 칼럼을 따로 두는 게 나을까? - 합계 칼럼을 하나 따로 두는 게 나을까? - - 테이블 쪼개기 생각해 보자. 구매 한 건이 일어났다. 빨강 하나 파랑 둘 노랑 넷 개당 가격도 다 다르다. 그래도 구매는 한 건 일어났다. 특정 사용자가 특정 시간에 특정 물품들의 묶음을 산 것이다. 이 모든 데이터이 '구매 한 묶음'이다. 그래서 구매 테이블을 하나 만들었다. 이 구매 테이블에는 구매 데이터들이 들어간다. 누가 구매했고, 언제 구매했고.... 그런데 구매는 한 건이지만 그 안에 내용은 여러 개다. 빨강 품목은 하나, 파랑 품목은 둘, 노랑 품목은 넷. 그래서 구매 상세 테이블을 따로 만들었다. 구매는 한 건이지만, 그 구매를 구성하고 있는 상세 내역은 여러 개다. 구매가 한 건 일어나면 구매 상세는 여러 데이터가 생길 수 있다. 여기서..
web modules 기능과 path 설정 @Controller @RequestMapping("/hello") public class HelloController { @RequestMapping(value = "/big", method = RequestMethod.GET) public String hello(){ return "hello/hello-main"; } } 위처럼 컨트롤러를 만들어 놓았다. 예상대로라면 아래 URL로 접속할 수 있어야 한다. http://localhost:8080/hello/big 그런데 접속이 되지 않았다. 컨트롤러에 프린트를 추가했다. System.out.println("hello controller access"); 콘솔에 출력되지 않았다. 아예 컨트롤러를 못 찾고 있었다. 매핑이 잘 못 됐나? @RequestMa..
[JAVA] 증감연산자 의미와 위치에 따른 종류 (ft. i++ 의미) public void printData() { int idx = 3; idx = getNextIdx(idx); System.out.println(idx); } private int getNextIdx(int idx) { if(idx < 10) { return idx++; } else { return 0; } } - 의문점 - printData()에서 idx를 출력하면 뭐가 나올까? 원래 idx는 3이었고, getNextIdx()에서 idx++ 를 실행하여 되돌려주므로 4가 된다. 따라서 출력되는 idx 값은 4가 된다. 위처럼 생각한다면 틀렸다. idx 값은 3이 출력된다. 그 이유를 살펴보자. - 증감 연산자 - idx = idx + 1; 위 코드는 idx를 1만큼 증가시키는 명령문이다.. 그런데 어떤..
[JAVA] while 문에서 애초에 조건을 만족하지 않는다면? (ft. while문 do while문 차이) - while문 조건을 만족하지 않으면? - while문은 특정한 조건이 만족하는 동안에만 반복한다. 그렇다면 애초에 조건을 만족하지 않는 상태라면 어떻게 될까? while문 안에 들어가기는 할까? 아니면 아예 들어가지를 않을까? 그러니까, 일단 한 번 돌고 나서 조건문으로 갈까, 아니면 들어가기 전에 조건문을 체크하는 게 먼저일까? 막상 이렇게 질문을 받으니 확신이 서지 않지 않는가? 나도 갑자기 궁금해져서 바로 실험을 해 봤다. int idx = 5; while(idx < 5) { System.out.println(idx); idx++; } 예를 들어 위와 같은 while문이 있다고 하자. 이 경우에 5가 출력될까? 정답은 출력되지 않는다. 그러니까 while문은 들어가기 전에 조건문을 먼저 체크한다..
[JAVA] switch 문을 반복문으로 바꾸기 - switch 두 번 돌려야 할 상황에서 for문으로 변환하기 - Stack 기반으로 계산기를 만들고 있었다. 연산자에 따라서 우선 순위를 다르게 부여해야 한다. 그 연산자가 op1 과 op2 두 개가 있다. 똑같은 작업을 op1 과 op2 에 두 번 해야 한다. 지금은 2개지만, 더 늘어난다면 여러 번 반복해야 할 수도 있다. 아니, 여러 번 반복하든 어떻든, 똑같은 코드를 두 번 쓰는 구조가 싫었다. op1과 op2를 배열에 담아 버린 뒤에, 그 배열을 가지고 for문을 돌리기로 했다. 각 요소마다 새로운 정보를 저장해야 한다면, 미리 따로 배열을 만들어 놓고, op1과 op2를 담은 배열과 인덱스가 일치하도록 정보를 담아 두기로 하자. //before switch(op1) { case "(" : ..
[JAVA] isNumber / isNumeric 문자열(String)이 숫자인지 확인하는 함수 - 자바에서 String이 numeric인지 확인하는 두 가지 방법 - 입력 받은 String이 숫자이면 이렇게 처리하고, 연산 기호면 저렇게 처리하려고 한다. 그러려면 우선 입력 받은 String이 숫자인지 아닌지 확인해야 한다. - 방법1 - Charactrer에는 숫자인지 확인하는 함수가 있다. 이 함수를 쓰려면 String을 한 글자씩 쪼개서 Character에 넣고 isDigit 함수를 한 번씩 돌려 봐야 한다. 예를 들어 아래와 같다. String target = "1948172abc"; Boolean flag = true; for(int i=0; i < target.length(); i++) { if(!Character.isDigit(target.charAt(i))) { result = fa..

반응형