우아한 테크코스/테크코스
-
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로 비교해야 함 깔끔한 코드를 위하여 클래스 변수와 인스턴스 변수..
-
1주차 리뷰우아한 테크코스/테크코스 2020. 2. 8. 16:51
for문 비교자 신경쓰기 for문 비교자에 계산을 해주는(?) 식이 들어가면 for문 돌 때마다 해당 부분이 실행되므로, 변동이 없는 값이라면 앞에 변수로 따로 빼주기! 아래와 같으면, 1번 반복일 때는 위가 나아보일 수 있지만, 10번이라면? 1000번이라면? list.size()를 반복 횟수만큼 실행해야한다! 유의하기 // 이것보다는 for(int i = 0; i < list.size(); i++) { } // 이렇게 int listSize = list.size(); for(int i = 0; i < listSize(); i++) { } enum을 활용하기 특정한 상수를 Class의 static 변수로 받는 것보다 enum을 활용하면 관리하기가 더 용이하고, 코드도 짧아지고 가독성도 더 좋아지지 않을..
-
[Java] 일급 컬렉션을 알아보자!우아한 테크코스/테크코스 2020. 2. 6. 21:17
Java 일급 컬렉션이란? First Class Collection 정의 Collection을 Wrapping하면서, 그 외 다른 변수가 없는 클래스의 상태를 일급 컬렉션이라 함 장점 1. 비즈니스에 종속적인 자료구조 해당 컬렉션에서 필요한 모든 로직은 일급 컬렉션에서 구현 비즈니스에 종속적인 자료 구조가 만들어짐 > 모든 로직이 컬렉션에서 구현되기 때문 장점 2. Collection의 불변성 보장 final만 선언하면 불변을 만들어주는 것이 아닌 재할당을 하지 않는 것 private final을 선언하여 Collection을 생성해주고, 생성자를 통해 생성해주면 재할당이 불가능하므로 불변 컬렉션이 됨 다른 메서드의 경우에도 Collection에서 값을 가져오는 것만 작성 장점 3. 상태와 행위를 한 곳..
-
[IntelliJ] MAC 단축키 등 알아두기!우아한 테크코스/테크코스 2020. 2. 6. 20:55
뭐가 이상할 때 [Build] > [Rebuild project] [File] > [Invalidate caches / Restart] > [Invalidate and Restart] 이래도 안되면 그냥 인텔리제이 끄고 프로젝트의 .idea와 .gradle을 지우고 다시 인텔리제이를 켰다. 단축키 ⌃ + ⇧ + SPACE (길게): 스마트완성 - 현재 컨텍스트에 적용할 수 있는 가장 적합한 심볼 목록 표시 ⌃ + ⇧ + SPACE (길게)를 두 번: 체인완성 - 스마트완성보다 자세히 분석하여, 현재 컨텍스트에서 메서드나 게터로 액세스할 수 있으며 적용 가능한 심볼 목록을 표시 ⌥ + ENTER : 오류 수정을 위해 선택할 수 있는 액션 목록이 열림 ⌘ + N : (프로젝트 도구창) 새 항목 만들기 ⇧ +..