분류 전체보기
-
[아키텍처 패턴] MVC 모델2우아한 테크코스/테크코스 2020. 2. 20. 09:52
MVC 모델2 애플리케이션을 모델(Model), 뷰(View), 컨트롤러(Controller)라는 세 가지 역할을 나눔 IPO에 견주어보면 입력 - 컨트롤러 / 처리 - 모델 / 출력 - 뷰에 해당하지만, 컨트롤러에 전체의 흐름을 제어하는 역할이 부여되었다는 점이 다름 MVC 모델을 기반으로 삼으면 로직과 디자인의 분리를 구현할 수 있음. 로직은 모델, 디자인은 뷰가, 컨트롤러는 접착제 역할 IPO : 입력(Input), 처리(Process), 출력(Output)이라는 컴퓨터 처리의 기본적인 흐름 구성요소 모델(Model) 애플리케이션의 처리 부분과 그와 관련된 정보의 보존을 담당 화면에 대한 입출력같은 부분에는 일절 관여하지 않음 뷰(View) 모델의 결과를 화면에 표시하는 역할을 담당 처리 결과는 모..
-
[Java] String 연결우아한 테크코스/테크코스 2020. 2. 19. 21:07
일반 간단한 String 연결 (JDK 1.8 ~ ) 문자열.concat(연결할문자열); 연결할 문자열 길이가 0이 아니라면, 내부적으로 새 문자 배열 버퍼를 만들고 해당 문자 배열을 기반으로 새 문자열 반환 소수(대략 3개 이하)의 문자열을 연결할 경우 +보다 더 유리한 것으로 추정 public String concat(String str) { int otherLen = str.length(); if (otherLen == 0) { return this; } char buf[] = new char[count + otherLen]; getChars(0, count, buf, 0); str.getChars(0, otherLen, buf, count); return new String(0, count + o..
-
[Java] For문(For Loop / Enhanced For Loop / For Each)우아한 테크코스/테크코스 2020. 2. 19. 20:34
기존의 For문 for(변수 선언 및 초기화; 조건문; 변수증감연산) for(int i = 0; i < 5; i++) { // ... } 향상된 For문(Enhanced For Loop / Foreach Loop) for(대입받을 변수 선언; 순회하며 대입할 대상) - 순회하며 대입할 대상을 Iterator의 hasNext()를 이용하여 순회 - Iterartor를 구현하면 사용 가능 List strings = new ArrayList(); // ... for(String string : strings) { // ... } 유의할 점 Iterator를 구현한 객체만 가능함 // Java 파일 void listForEach() { List strings = Arrays.asList("d,dd,ddd".sp..
-
자바 빈(Java Bean)이란?우아한 테크코스/테크코스 2020. 2. 18. 23:16
형식 - 인수가 없는 생성자가 있어야 함 - 직렬화가 가능해야 함 - getter 및 setter 메서드라는 특정 값을 가져오고 설정하는 메서드가 있어야 함 사용하는 이유 - 재사용 가능한 소프트웨어 컴포넌트 - 많은 objects들을 하나로 묶어, 많은 곳에서 해당 객체에 접근할 수 있도록 캡슐화함 - 유지하기도 쉬움 항목(속성;property) JavaBean의 멤버변수를 속성(property)이라 부름 / private JavaBean 속성은 개체의 사용자가 액세스할 수 있는 명명된 기능. 기능은 정의한 클래스를 포함하는 모든 Java 데이터 유형일 수 있음. JavaBean 속성은 읽기, 쓰기, 읽기 전용 또는 쓰기 전용일 수 있음. JavaBean 기능은 JavaBean의 구현 클래스의 두 가지..
-
d2 coding 글꼴 적용(맥 / 인텔리제이)우아한 테크코스/테크코스 2020. 2. 18. 16:53
D2 Coding 글꼴 다운로드 : https://github.com/naver/d2codingfont Mac에 추가하기 Finder > 서체 관리자 > 추가 > 다운로드한 글자 디렉터리 중 "D2CodingAll" 내의 항목을 선택 또는 D2CodingAll에서 ttc 파일을 실행 단) 사용자 글꼴이 아닌 기본 글꼴에 추가해야 인텔리제이에서 사용할 수 있음 Finder에 적용하기 /* 참고 - 글꼴은 서체 관리자에 있는 이름으로, 단 띄어쓰기는 제외한다 */ // D2Coding 글꼴 적용 defaults write com.apple.finder NSSystemFont -string D2Coding;killall Finder // 맥 기본 폰트로 롤백 defaults delete com.apple.fi..
-
[Java] UnsupportedOperationException - 배열 asList 관련 에러우아한 테크코스/테크코스 2020. 2. 17. 21:22
asList한 Arrays에 add를 하면 해당 에러 발생 UnsupportedOperationException, add를 하고 싶다면 addAll() 또는 생성자를 통해 하도록(아래 코드 참고) 깊은 복사와 얕은 복사깊은 복사 : deep copy : call by value 복사한 원본 또는 복사본 모두 수정이 서로에게 영향을 미치지 않음 - 값을 복사하기 때문 Cloneable을 상속받은 객체를 clone() 메서드로 복사함 얕은 복사 : shallow copy : call by reference 복사한 원본 또는 복사본 모두 수정이 서로에게 영향을 미침 - 주소를 복사하여 서로 참조하기 때문 = 기호로 복사함 List의 덜 깊은 복사?(공식 용어 아님) List를 대체할 때는 (set API이용)..
-
[Java] 예외일 경우, 반복하여 실행하기우아한 테크코스/테크코스 2020. 2. 15. 20:52
예외일 경우, 반복하여 실행하기 방법은 두 가지가 있음, 1. While을 이용하여 구간 반복, 2. 메서드 재귀 호출 메서드 재귀 호출이 조금 더 깔끔해 보일 수 있지만, 성능은 While을 이용한 것이 낫기 때문에 While을 이용할 것! While의 경우엔, 구간만 반복하게되고, 메서드 재귀 호출의 경우 메서드를 새로 호출하여 해당 부분이 처리가 되면 남은 부분이 처리됨(Stack 형식으로) 학습 테스트 코드 public class Jamie { public static void main(String[] args) { int i = -3; ExceptionWhile(i); System.out.println(">>>>>>>>>>>>>>>>>"); ExceptionRecursion(i); } priva..
-
2주차 리뷰우아한 테크코스/테크코스 2020. 2. 15. 18:31
중복 코드 유의하기 코딩할 때 중복 코드에 유의하기 유의해야 되는 이유 - 불필요한 작업 제거하여 성능 향상(시간 단축, 불필요한 리소스 감소)도 있지만 로직이 변경되었을 때, 중복 로직을 모두 수정해줘야 함(불필요한 리소스). 또한 중복 로직을 체크하지 못하는 경우 문제(사이드 이펙트)가 생길 수 있음. String 비교시 ==와 equals ==는 String 객체의 주소값을 비교하고, equals는 String 객체의 문자열 값을 비교. Java 7 ~ String Pool의 위치가 Perm 영역에서 Heap영역으로 변경됨(즉, String Pool에 위치하는 String 상수의 경우에도 GC가 가능하다는 의미), 이에 꼭 equals로 비교해야 함 깔끔한 코드를 위하여 클래스 변수와 인스턴스 변수..