
개발 공부를 시작하며, 갑작스럽게 얻은 정보가 너무 많았다.모든 정보를 체계적으로 정리하여 체화하기 위해 시스템을 만드는 것에 집중하다보니, 고민이 많았고 시간도 많이 걸렸다. 큰 틀을 잡고 조금씩 시스템을 잡아가고 개선하는 방식으로 진행하는 것이 좋겠다는 결론을 내렸
개발 공부를 시작하며, 갑작스럽게 얻은 정보가 너무 많았다. 모든 정보를 체계적으로 정리하여 체화하기 위해 시스템을 만드는 것에 집중하다보니, 고민이 많았고 시간도 많이 걸렸다. 큰 틀을 잡고 조금씩 시스템을 잡아가고 개선하는 방식으로 진행하는 것이 좋겠다는 결론을

꾸준한 학습 도모자기객관화와 합리적 추론 및 의사결정 능력 함양성장 및 발전 과정 기록중요한 내용을 스스로에게 지속적으로 상기시키기문제점 파악 및 개선
JVM이 정적파일을 build하여 runtime 시점에 process상에서 운영체제로부터 메모리 영역을 할당받음.할당받은 메모리 영역(Runtime Data Area)은 크게 stack, heap, method 영역으로 나뉜다.stack 영역에서는 선언된 객체의 변수가
정의Application 구동 후, 특정 객체의 instanciation을 메모리에 단 한 번만 생성시키는 패턴static 영역에 instance의 주소 할당.heap 영역에 데이터 할당목적단일 instance할당된 메모리에 단 하나의 instance만 생성시켜 여러
중요 학습 내용 [JAVA] INHERITANCE 정의 각 클래스간의 부모-자식 관계를 맺어 부모클래스의 생성자를 제외한 멤버를 받아 자신의 멤버처럼 사용할 수 있도록 만든 문법적 요소 목적 클래스를 재사용하기 위함 다형성을 위함 선수 조건
차이점\*\*공통점관련없는 두 객체를 하나의 개념으로 묶어, 인터페이스 바디부에 아무것도 없는 인터페이스toString()equals()동일비교(연산자 ==): 주소값을 비교한다.따라서 객체를 참조하는 변수끼리 비교할 때는 각각의 두 객체를 참조하는 변수의 주소값을 비

Date & Calendar ClassDate Class(legacy)java.sql.Date가 java.util.Date로부터 상속받는다.getTime()SimpleDateFormat의 format()의 파라미터로 포매팅 가능Calendar Classtimezone
항상 기본기가 부족해 성장하는 방법을 생각해내지 못한 기억이 있다. JAVA의 기본수업을 들으며 프로그램의 동작원리나 메모리에 대한 이해도를 높이는 한 주 였기에 Network studyCORSblogworkflow 개선: 의미있는 글만 github로 업로드하도록 변경
상속 관계부모 클래스의 메서드를 오버라이딩 시, 원본 메서드보다 상위 예외를 발생시킬 수 없다.ex) 부모: RuntimeException, 자식: Exception 불가IOException이나 EOFException과 같이 RuntimeException의 자식 클래스
사용 이유클래스(타입)의 일반화(구현의 편의성)자료형의 안정성(타입의 안정성)down-casting이 적용된 경우, compile 시점에서 error를 확인할 수 없다.(runtime error만 확인 가능)기능매개변수나 메서드 반환형도 제네릭 타입으로 지정되어 명확히

주로 ArrayList나 HashMap만 사용한다.일반적으로 다형성을 적용한 부모 인터페이스인 List로 선언을 많이 함.List(ArrayList) 정렬Collections.sort(object) 사용 - ComparableString(Wrapper) 클래스에는 이미
코드의 간결함매개변수는 있으나, 반환값이 없다.매개변수는 없으나, 반환값은 있다.매개변수와 반환값을 매핑한다.매개변수와 반환값이 존재하며, 배개변수와 반환값이 동일한 타입이다.매개변수가 있으며, boolean 타입으로 리턴한다.singleton: 처음 생성된 insta
람다식을 활용해 코드 양도 줄고 간결하게 표현도 가능pararell stream 사용 시, 병렬처리 가능병렬처리가 가능할 때, 시간복잡도 상 좋다.성능이 좋아진다.스트림은 원본을 변경하지 않는 읽기 전용병렬처리(parallel process with CPU)가 가능하다

REMIND: scanner vs bufferedscanner: 문자가 입력될 때마다 cpu에서 하나씩 입출력을 한다.buffered: 버퍼에 일정 용량이 가득 차거나 개행 발생 시(or 인위적 flush), 입출력 처리상수 시간: O(1)로그 시간: O(log n)선
mysql:mysql-connector-java:8.0.28를 통해 DB와 서버를 연결한다.기본적으로 Connection, Statement, ResultSet으로 데이터베이스와 서버를 연결하고 statement를 통해 resultSet을 가져올 수 있다.Stateme
DFS주로 stack 구조 이용방문 배열을 이용하여 조회 여부 확인BFS주로 queue 구조 이용현재 선택이 후의 선택에 영향을 미치지 않음(difference with DP)DFS는 BFS로 가능하나 BFS로 풀리는 문제들 중, DFS로는 풀리지 않는 경우가 있다.
코테보다는 자료구조 이해를 중점으로 생각해 볼 필요가 있다.정렬은 중위순회로 동작한다.모든 상황에 대한 최적해를 구함점화식을 추출해내야 한다.DP 배열을 활용일반적으로 n+1의 크기로 선언한다.

테스트는 기본적으로 1. given, 2. when, 3. then의 개념으로 진행단위 테스트: layered architecture에서 각 계층마다 단위 메소드를 테스트통합 테스트: layer 단위가 아닌 전체 기능 동작에 대해 테스트테스트 케이스: 테스트 대상이 되

Common Gateway Interface: 요청 1건 당 1스레드로, 새로운 요청이 생길 때마다 Applicaiton을 생성Servlet: 여러 요청을 여러 스레드로 동시에 처리 가능. 요청별로 별도의 어플리케이션을 생성하지 않고, 멀티스레드로 여러 요청을 처리할

클라이언트의 요청을 서블릿 컨테이너 내에서 Dispatcher Servlet이 요청을 받아 다른 서블릿으로 요청과 응답을 위임위임받은 서블릿이 Dispatcher Servlet으로부터의 요청과 응답을 처리하여 클라이언트에게 전달클라이언트는 서버 내부의 동작은 모르나,
팀 프로젝트 접근 방식에 대한 고민이 많았던 한 주다.프로젝트는 완벽한 포트폴리오가 아닌 협업을 통한 잘 흘러가는 프로젝트를 위한 것임을 되새겼다.팀 프로젝트에 대해서 오심도 경기의 일부이다라는 마인드로 나만의 심리적 DMZ를 만드는 것이 매우 중요하다는 것이 결론이다
어느덧 시간이 지나고 나의 학습 전략이 어느정도 안정화되었다.개별적으로 진행하는 추가적인 학습이 팀프로젝트만큼 몰입도가 높아졌으면 좋겠다.여러가지 기술을 접하는 것보다 하나의 기술에 대한 깊은 탐구를 가지고, 사용 이유와 목적성에 대해 고찰해보는 시간을 가져서 뿌듯한
내가 공부하는 것에 대한 확신이 없다는 것을 협업 관리 체계 구성 및 스몰프로젝트Spring과 같은 구성을 갖춰 스몰 프로젝트팀 스터디 계획 수립하부르타식 복습 및 이후 복습 효과 시각화겸손문제점 분석:협업을 하는 입장에서 동료에게 정보를 알려줄 때, 개인적인 욕심을
웹서버 상의 life-cycle 중, 발생하는 이벤트를 감지하여 특정 이벤트에 대한 로직을 구성할 수 있다.uses: 서비스 전반적으로 어떤 일이 일어났는지 모니터링하거나 로그를 남겨둘 때 사용(장애 발생 시, 문제발생 시점 및 문제 해결을 위함)일반적으로 파일로 저장

spring(legacy)war → tomcat에 직접 올려야한다.spring boot비즈니스로직을 짜는데에만 집중하기 위함.jar를 말아 직접 tomcat에 올려야한다.내장톰캣(tomcat 설정 불필요)IoC(Inversion of Control) & DI(Depen
객체의 의존성을 외부에서 주입하는 방식해당 객체가 생성된 이후, JAVA reflection 기술로 필드에 값을 주입한다.장점: 매개변수 생성자를 만드는 것이 번거롭기에, 테스트 코드상에서 편하게 사용한다.단점: 순환참조를 컴파일 시점에 확인할 수 없다.mutable:

핵심 관점(Primary Concern)을 proxy로 감싸 핵심 관점의 원본 코드와 관련없이 reflection을 활용하여 추가 기능(Advice)을 구현할 수 있다.Aspect: 핵심 비즈니스 로직과는 별도로 수행되는 횡단 관심사Advice: Aspect의 기능Jo
@RequestParamdefaultValue: 사용자의 입력값이 없거나("") request의 parameter 키 값과 일치 않는 매개변수일 때 사용하고 싶은 값을 default값으로 설정 가능name: request parameter의 키 값과 다른 매개변수 명을
Dynamic sql
팀 프로젝트 접근 방식에 대한 고민이 많았던 한 주다.프로젝트는 완벽한 포트폴리오가 아닌 협업을 통한 잘 흘러가는 프로젝트를 위한 것임을 되새겼다.팀 프로젝트에 대해서 오심도 경기의 일부이다라는 마인드로 나만의 심리적 DMZ를 만드는 것이 매우 중요하다는 것이 결론이다
Mybatis 에서 매핑하는 ResultMap에 대해서 상속관계를 만들 수 있다.useutility: JOIN을 통해 한 번 객체를 담아놓으면, spring 서버 내에서 객체 그래프 탐색이 가능하다.객체 그래프 탐색: 객체 속성의 또 다른 속성을 넘나들며 검색categ
REQUIRED : 진행 중인 트랜잭션이 있으면 현재 메소드를 그 트랜잭션에서 실행하되 그렇지 않은 경우 새 트랜잭션을 시작해서 실행한다.(일반적)REQUIRED_NEW : 항상 새 트랜잭션을 시작해 메소드를 실행하고 진행중인 트랜잭션이 있으면 잠시 중단시킨다.SUPP
중요 학습 내용 [JPA] JPA의 기본 동작방식 Java 애플리케이션과 JDBC사이에서 동작하며 내부적으로 JDBC API를 활용 Entity Life-cycle JPQL, NativeQuery는 별도로 commit(flush)됨 비영속 상태의 객체와 영속 상태
테이블 생성autoDDL optionscreate: 기존 테이블을 밀고 새로 만든다create-drop: 서버 실행시 생성. 이후 서버 종료시 dropupdate: 변경사항에 대해서 반영Entitypkid(identity)tablenumber generate table
JPQL vs 순수 JPA순수 JPA: 기본적으로 다중행 조회 불가능JPQL 사용 시 다중행 조회 가능JPQL 사용 이유다중행 조회를 위해특정 트랜잭션 전에 INSERT가 종료되어야 하기에JPQL 사용 시, Dialect를 통해 DBMS에 국한되지 않고 쿼리를 작성하면
JAVA보다 SpringBoot를 먼저 접했던 기억이 있다. 기본기의 중요성을 뼈저리게 느낀 바 있으며, 그 때의 부족함이 현재 학습의 질을 향상시키는 것이 즐거운 요즘이다.Mybatis와 JPA에 대한 이론적 학습 및 팀프로젝트로 여유시간이 부족하기에, 부가적인 학습