본문 바로가기

Java (국비)/Java 이론25

IoC 로 컬렉션 프레임워크 호출 하기 (List / Map) applicationContext.xml .xml 에서, List는 위의 이미지와 같이 나타낸다. setter를 사용 해야 하므로, 으로 작성 한다. (getter을 작성한 이유는, Client 에서 getter 을 사용 하기 위해서..) 태그, 태그, 태그, 태그 가 사용된 모습을 확인 할 수 있다. 위와 같이, 코드를 작성 할 수 있다. [ 참고 ] 1) 스프링 컨테이너에서 tb02 라는 ID를 (참조변수명 / 객체명) 가져와서, TestBean02 타입의 참조변수 tb02에 다운캐스팅 해서 데이터를 저장 한다. 2) tb02 참조변수를 주체로 해서, getter을 호출 한다. 그래서, testMap 에 저장된 모든 키값 한쌍에 대한 데이터를, Map map 에 저장 한다. (그냥 ArrayList .. 2023. 8. 1.
MVC (Model-View-Controller) 2 ★ 결합도 낮추기 ★ 결합도가 "낮다" => 유지보수 용이 1. 짜놓은 코드를 확인하는 상황 -> 정말 현재 코드의 결합도가 낮은지를 체크. 2. 체크했더니 결합도가 높네 ? -> 어떤 이유로 ? 코드의 여러 부분(파트) 를 수정 해야 하는 상황. == 연쇄적으로 코드를 바꿔야 하는 상황. == 결합도가 높다. 3. 따라서, DAO의 CRUD (비즈니스 메서드, 핵심로직) 는 어떠한 추가적인 요구사항으로 인해 수정을 들어가야 하더라도 절대로 DAO의 CRUD의 "메서드 시그니쳐"가 변하지 않도록 코드를 작성 한다. 즉, "메서드 시그니쳐"는 설계 단계에서 절대로 변경되면 안된다. why ? 메서드 시그니쳐가 바뀌면 다른 파트에 영향을 미치게 되서 연쇄적으로 코드를 바꿔야 하는 상황이 발생. 4. 그래서,.. 2023. 5. 27.
MVC (Model-View-Controller) 프로그래밍을 할 때 설계 하는 방식을 뜻한다. 다양한 언어를 공부해도 문법은 바뀔지언정, 프로그래밍 설계의 구조는 바뀌지 않는다. Model : 모델은 데이터(DB)와 관련된 로직을 담당하는 파트 이다. DB에서 데이터를 다루는 방법에 대한 코딩이 == SQL (DB의 데이터를 JAVA환경으로 가져올 수 있도록 하고 반대도 마찬 가지 이다) DB JAVA == JDBC, DAO (Data Access Object : 데이터 접근 객체) CRUD "기능"을 구현하는 파트 (사용자에게 제공할 서비스를 코딩) CRUD를 비즈니스 메서드 (핵심 로직) 라고도 부른다. JAVA에서 데이터를 "정의" 하는 코딩은 == VO (Value Object : 값 오브젝트 (Read-Only)) 이다. View : 사용자가.. 2023. 5. 23.
파일 입출력 간단 정리 2 생성자에 직접 경로를 설정하는것은 위험하기도 하고, 유지보수에 불리하기 때문에, 상단에 배치해서 가독성을 높히고, 하드코딩을 하지 않을 수 있다. [ 사진 복사하기 ] 2023. 5. 22.
파일 입출력 간단 정리 [ 파일 입출력 ] 파일 : 사진, 영상, 음성 파일, 액셀, 문서, 텍스트 문서, ... 이다. 웹에서는 사진 파일, .. 기존에 봐왔던, java.util이 아닌 java.io를 확인 할 수 있다. io는 in / out 을 의미하고, 자바 내부에서가 아닌, 컴퓨터와 소통하기 위한 그런 기능의 느낌으로 생각 하면 된다. 이클립스에서 구현 1. 파일 생성하기. 2. File 참조변수 = new File(경로); try catch로 감싸지 않으면 사용이 불가능 하다. 1. 파일 읽어오기. 2. FileInputStream 참조변수 = new FileInputStream(); 3. EOF : end of file 파일의 끝이 자바에서는 int값 -1로 받는다. 1. 파일 작성하기. 2. FileOuputS.. 2023. 5. 22.
스레드 (Thread) 간단 정리 2 Thread : 메모리를 할당받은 프로세스에서 실질적인 작업을 수행하는 주체. Process : "실행중인 프로그램" 을 의미. Thread의 특징 : "독립적"으로 일을 수행. 개념 : 공유자원을 어떤 스레드가 점유 하고 있을 때, 다른 스레드의 접근을 잠시 막아야만 한다. 이것을 "동기화" 라고 한다. 동기화 == synchronized 예시 1) 계좌 (결제를 만약 동시에 한다고 할때, 0.00000001초라도 빠르게 내 돈을 가져가면 다른 사람의 접근을 잠시 막는다) (그렇지 않으면 내 계좌 잔고가 100만원인데, 동시에 총 1000만원어치를 결제하면 돈이 차감될 수는 없기에) 예시 2) 인터넷 쇼핑 구매시 이클립스에서 구현하기 상황 : 사람들이 공유 자원인 티켓을 구매하는 상황. 1. Threa.. 2023. 5. 22.
스레드 (Thread) 간단 정리 Thread : 메모리를 할당받은 프로세스에서 실질적인 작업을 수행하는 주체. Process : "실행중인 프로그램" 을 의미. Thread의 특징 : "독립적"으로 일을 수행. (스레드 객체들은 독립적으로 일을 수행 하고 있음을 이해 해야 한다) => A 객체가 있고, B 객체가 있으면, A 객체가 끝나고 B 객체가 실행되는게 아니라 ! A 객체를 실행시키고 곧바로 B 객체도 실행을 동시에 진행 ! 프로세스가 실행되는 방식 : 1. 선점형 방식 우선순위 순서대로 자원(메모리)을 할당 받아 진행되는 방식. 단점 - 기아현상이 발생될 가능성이 있음. 기아현상 - 자원을 할당받지 못함을 의미한다. why ? - 우선 순위에서 계속 계속 밀려버리면 실행이 안되기 때문이다. 2. 시간분할 방식 시간을 동일하게 .. 2023. 5. 22.
예외와 예외처리 그동안, 예외를 만난 경험이 있다. => 원인을 분석 하고, 해결방안을 찾고 해결 했다. 코딩 자체에는 문제가 없지만 (문법에 이상이 없거나 등) "실행시" 발생하는 문제 == "예외" 라고 한다. 예외 처리를 하면 좋은점 : 1. 프로그램이 비정상적으로 종료되는것을 막을 수 있다. 2. 예외가 발생되면서 커질 수 있는 피해들을 최소화 하는것이 목표 ! 사용방법 : try { 실행시 예외가 발생할수도 있는 코드 예외가 발생되면, "즉시" catch문으로 이동. } catch (예외클래스 e) { 해당 예외클래스의 문제가 발생되면 이곳의 코드를 수행 } finally { 예외 발생 여부와 무관하게 항상 수행되는 코드. 통신을 위해 확보해둔 모든 연결스트림을 해제 한다. } 예시) 1. int형 타입의 배열.. 2023. 5. 19.
컬렉션 프레임워크 (집합 (Set)) "데이터 묶음" (== "컬렉션") Set (집합) 1. Set은 추상클래스라 객체 생성이 불가능 하다. 2. Set류의 조상 클래스 이다. 특징 : 1. 순서가 없다. (index 개념이 없다) 2. 중복 허용이 불가능 하다. 3. 배열리스트와 마찬가지로 다양한 자료형 저장이 가능하지만, => 반드시, 서로 같은 자료형만 취급 한다. 4. 제네릭 을 사용해 집합에 저장될 타입을 강제화 한다. Set data = new Set(); => 에러 발생 추상 클래스라 객체 생성 불가능. Set 추상클래스의 자손클래스로, HashSet 이라는 클래스가 있다. 사용예시 : 1. 집합에 숫자 10을 넣어 준다. 2. 숫자 10은 총 3개 3. String 타입의 "apple"은 int 타입으로 제너릭 해줬기 때문에.. 2023. 5. 19.