[F-Lab] 백엔드(BackEnd) 코스 1개월 솔직후기
·
📝 끄적끄적/F-Lab
왜 F-Lab인가퇴사https://javacatcher.tistory.com/155에도 적었지만, 나는 지방에서 4년 차 SI, SM 개발자로 일하다 퇴사했다그동안 많은 것을 배웠지만, 연차가 쌓일수록 단순한 구현보다 성능을 고려한 개발을 하고 싶어졌다.또 서비스 회사로 이직하고 싶다는 마음이 간절했다. 서울로 가서 컨퍼런스에도 다니고, 다양한 네트워킹에 참여하며 성장하고 싶었다. next-step나의 개발자 인생은 next-step의 TDD 교육을 들은 전후로 나뉜다고 할 수 있다.이직을 결심한 순간 80만 원이라는 거금을 들여 교육을 들었다. 수료 이후에 개발에 대한 생각, 코드가 180도 바뀌었다.모든 후기에 이런 식으로 적혀있었는데 처음엔 “주작 아니야?” 했는데 이럴 수밖에 없다. 엄청 빡세고..
Stack은 왜 상속의 실패 사례일까?
·
💻 Dev/Java
Java에서 Stack 클래스는 종종 "상속의 실패 사례"나 "디자인이 망가진 클래스"로 언급된다.뭐 때문인지 알아보자! Vector를 잘못 상속받았다.Stack 클래스의 가장 큰 문제는 Vector 클래스를 상속받았다는 점이다.Stack의 선언을 보면 다음과 같다.public class Stack extends Vector {Stack은 LIFO(Last In, First Out) 방식의 스택 자료구조를 구현하기 위해 설계되었지만, Vector는 일반적인 동적 배열을 나타낸다. 근데 뭐가 문제라는걸까? 🤔Stack이 Vector를 상속받았다는 것은 Vector의 모든 메서드를 사용할 수 있다는 것을 말한다. `Vector`는 일반적인 동적 배열 자료구조기 때문에 원래 스택에서는 허용되지 않을 중간에 ..
[F-Lab] 4주차 회고
·
📝 끄적끄적/F-Lab
사전 질문BigDecimal 중요 필드 2개(BinInteger, scale)G1 GC는 java 9? java 11? → 9부터 맞지만 LTS 기준으로 알고 있어도 됨프로젝트 주제 구체화개발자 네트워킹 관련 사전 학습자바의신2권~19장까지 (끝)프로젝트 주제 선정2가지 중 구체화해서 고민해 보기최범균의 JSP 2.3 웹 프로그래밍Chapter 1~4 (진행 중)Chapter 9, 10Chapter 14Chapter 17~20 멘토님 질문리플렉션의 단점왜 자바 11부터 G1 GC를 사용하게 되었을까요?system.out.println의 단점ArrayList vs LinkedListArrayList vs Vector Stack은 왜 상속을 잘못받은 사례일까요?ArrayList의 기본 크기를 10이라고 했을..
자바의신1&2(3판) 후기
·
📝 끄적끄적/도서 & 인강
자바의 신 개정판이 출간되었다. 를 작성하고, 1권은 거의 다 읽었으나 2권은 읽지 않았었다.후에 11월부터 1권을 다시 읽고, 2권까지 완독 하게 되었다! 자바 기본서는 굉장히 다양하게 있다. 그중에서도 자바의 신을 추천하는 이유는 다음과 같다. 1. 개념 설명에 있어서 스토리라인이 자연스러워 이해가 잘 된다.2. 객체 지향이 정말 잘 설명되어 있다.3. 예시가 다양하고, 예제 코드 또한 꼼꼼하다.(2권은 약간 어렵다고 느꼈다)4. 실무에 자주 사용하는 개념, 자주 사용하지 않는 개념을 구분해서 알려준다. 등등.. 3년 반의 실무 경험이 있음에도 이 책에서 정말 많이 배웠다. 개인적으로 이론 책은 한 개념을 설명하기 위해 어떤 식으로 서술했는가가 중요하다고 생각한다.예시를 적절히 들고, 문장이 매끄럽게..
System.out.println을 실무에서 사용하면 안되는 이유
·
💻 Dev/Java
자바를 접하게 되면 제일 먼저 하는 것이 System.out.println("Hello, World!")일 것이다.그만큼 기초이자, 아주 많이 사용하는 코드이다.하지만 System.out.println은 실무에서 절대 사용하지 말라고들 한다. 왜일까?성능 이슈로는 크게 2가지가 있다. 블로킹 I/O작업을 한다는 점과 멀티스레드에서 락이 발생한다는 점이다. 1. 블로킹 I/O 작업먼저 System 클래스의 static 변수인 out은 PrintStream 타입의 인스턴스이다.public static final PrintStream out = null;그리고 PrintStream 클래스는 java의 io 패키지 내에 있다.package java.io;public class PrintStream extends..
가비지 컬렉터(GC)의 Roots
·
💻 Dev/Java
자바에서 가비지 컬렉터(GC)의 GC Roots는 힙 메모리에서 객체를 도달 가능한 상태로 유지하는 시작 지점이다.  GC는 메모리에서 더 이상 사용되지 않는 객체를 식별하고(Mark) 회수하는 작업(Sweep)을 수행하는데, 이때 어떤 객체가 사용 중인지 판단하기 위해 GC Roots에서 시작하여 도달할 수 있는 객체를 활성객체로 간주한다. GC Roots로 간주되는 객체들어떤 게 Roots다! 라고 딱 정해진 건 없지만 일반적으로 다음과 같은 객체들이 GC Roots로 간주된다. 1. 클래스(Class)JVM의 시스템 클래스 로더에 의해 로드된 클래스는 메서드 영역(Method Area)에 저장되며, 클래스의 정적 필드와 메서드는 프로그램 전반에서 전역적으로 접근 가능하다.이러한 정적 필드가 참조하는..