
인터프리터 방식과 컴파일 방식 특징 정리자바 언어 특징 정리JAVA의 동작방식컴파일과 인터프리터 방식은 프로그래밍 언어나 스크립트 언어를 기계어로 바꾸는 컴퓨터 프로그램프로그래머가 직접 작성한 코드를 기계어(바이너리 코드)로 변경되며 바로 실행도 가능하다.컴파일 언어
자바의 신 2장 읽고 연습문제 풀기클래스 로더와 클래스 로딩바이트코드를 컴파일하는 AOT, JIT 컴파일러어제 공부한 자바 동작방식 보완여러분의 이름을 출력할 Profile 클래스를 만들고, 그 클래스에 main()메소드를 만들어보자.Profile클래스의 main()
자바의 신 3장 정리 및 연습문제 풀기JVM-Stack영역클래스는 상태와 행위가 있어야한다.매개변수가 없는 기본 생성자는 만들지않아도 된다. 컴파일 시 기본 생성자가 없으면 자동으로 생성해 준다.클래스 자체만으로 일을 할 수 없고, 객체를 생성해야만 객체가 가진 행위를
자바의신 4장 읽고 정리하기자바의신 4장 연습문제풀기지역변수매개변수인스턴스 변수클래스 변수static키워드가 붙은 변수메소드 밖, 클래스안에 선언된 변수길이제한없음첫문자는 알파벳, $,로 시작할 수있지만 $,는 잘 사용하지 않는다.보통 메소드는 카멜케이스를 사용한다.상
java에서는 new 예약어가 아닌 literal 방식으로 String을 생성하는 이유 정리Java 동작 방식 정리 보완연산자 정리❓ java에서는 new 예약어가 아닌 literal 방식으로 String을 생성하는 이유?https://www.javatpoin

사전미팅질문 찾아보기자바의 신 5장 나머지 부분 읽고 정리하기자바의 신 5장 연습문제 풀기등가 비교 연산자모든 비교연산자의 결과값은 boolean타입이다. 조건이 맞는경우 true, 맞지 않는 경우 false를 리턴한다.등가 비교연산자는 모든 타입에서 사용할 수 있다.
변수마다 scope이 존재하는 이유wrapper타입AutoBoxingjava 메모리 모델과 메모리 누수❓전역변수를 제외한 나머지 스코프의 변수 종류는 쪼개져 있나?참조 범위를 줄여서 여러군데서 접근할 경우 발생 할 수 있는 사이드 이펙트를 줄이기 위해인스턴스 변수의 경
자바의신 6장 읽고 연습문제 풀이equals(), hashCode() 정리비교대상 변수는 long타입을 제외한 타입을 사용할 수 있다.break문을 빼먹을 경우 아래 case에 적힌 코드까지 실행되므로 case마다 break문을 꼭 넣어야한다.default문은 위의 c
자바의 신 7장 읽고 정리 및 연습문제 풀기HashCode 정리변수 선언 시 대괄호를 열고 닫음으로써 해당 변수가 배열이라는것을 정의한다.대괄호 안에는 아무것도 적지 않는다.배열의 사이즈를 초기화 해줘야한다.배열의 위치는 0부터 시작한다.괄호안에 배열에 담을 값을 셋팅

hashCode가 메모리 주소를 나타낸다고 오해했었는데,아래 코드를 통해 재밌는 사실을 알 수 있었다.hashCode는 객체의 메모리 주소가 아니다.As much as is reasonably practical, the hashCode method defined by
기본 자료형 이외의 자료형 타입. 참조 자료형은 생성자를 통해 생성하는데 없을경우 컴파일 시 자동으로 기본생성자를 만들어준다.단, 다른 매개변수를 받는 생성자가 있다면 기본생성자를 자동으로 만들어주지 않으므로 따로 생성해야한다. 메서드와 생성자를 어떻게 구분하나?

자바의 신 9장 읽고 연습문제 풀기hashCode() 질문 보완하기자바는 해당 패키지의 가장 상위 디렉터리에서 실행해야한다는 규칙이 있다.패키지의 규칙을 따르지 않으면 컴파일 되지않는다.패키지 문은 코드의 가장 첫줄에 있어야 하며, 하나만 존재해야 한다.패키지의 위치와
자바의 신 10장 읽고 정리자바의 신 10장 연습문제 풀기extends라는 예약어로 부모의 클래스를 상속받는다.자식 클래스의 생성자가 호출되면, 자동으로 부모클래스의 매개변수 없는 생성자가 실행된다.자식 클래스에서는 부모클래스에 있는 public, protected로
자바의 신 11장 - 자바 API 읽기자바의 신 11장 연습문제 풀기API 문서를 자동으로 생성하는 명령어는 무엇인가요?\*javadoc, 관련소스에 API doc에 명시할 내용이 정리되어있어야한다.API의 왼쪽 상단 창에는 어떤 내용이 제공 되나요?\*패키지 목록AP
자바에서 관련있는 클래스들끼리 묶음을 뜻한다.예) java.lnag 패키지java 설계에 필요한 기본적인 클래스들이 들어있다.패키지를 사용하므로써 클래스명 충돌, 관련있는 클래스들끼리 모여있으므로 유지보수 하기 좋은 코드를 작성할 수 있다.도메인 기준도메인(비즈니스의
💡 여기서 말하는 상속은 구체 클래스 상속이지 인터페이스 상속이 아님! 클래스가 다른 클래스를 구현 상속할 경우 캡슐화를 깨지게 할 수 있으며, 상위클래스 변경에 따라 하위클래스에 여러 영향을 줄 수 있다. 아래 예제는 HashSet을 상속받아 add, add
추상클래스인터페이스의 default method인터페이스의 static method인터페이스의 private method인터페이스는 아래 구성요소로만 이루어진다.상수메소드 시그니처디폴트 메서드static 메소드default methodDefault methods ena
Enum 정리과일 명에 숫자를 매칭하여 과일에 해당하는 코드처럼 사용하였다.주석이 있어서 1번이 사과인건 알았지만 만약 주석이 지워지거나, 누군가 모르고 수정했다거나, 주석과 과일의 해당 코드를 사용하는 코드가 멀리 떨어져 있어서 1이 사과인 것을 알기 힘들다면?소실의
객체 복사의이유 원본객체를 안전하게 보호하기 위함. 신뢰하지 않은 영역으로 객체를 전달할 경우 객체의 변경이 일어나 무결성이 깨질수 있기 때문에 신뢰하지 않은 영역으로 객체를 전달할때는 객체를 복사하여 전달하는것이 좋다. Cloneable 인터페이스를 구현한 클래
자바의 모든 에러와 예외는 Throwable 클래스를 상속받는다. 예외 발생 시 예외 클래스로 부터 객체를 생성한다.에러컴퓨터 하드웨어의 고장으로 인해 어플리케이션 실행 오류 발생하는것에러에 대해서는 대처 방법이 없다.예외예외란 잘못된 코딩으로 인한 오류. 단, 예외는
공부하면서 사용한 예제에 대해 아래와 같은 질문을 받았다. 질문에 대해 다시 정리해보고자 한다.위 상속 예시를 보면 area라는 상태를 부모클래스에서 관리하고 있습니다. 과연 상속관계에서 area라는 상태가 필요할까요? 상태가 필요하지 않다면 인터페이스로 분리할 수 있
toString()은 객체에 대한 정보를 문자열로 표현하는 메소드이다.객체에 대해 더하기 연산을 하는 경우toString()이 자동으로 호출System.out.println() 메소드에 매개 변수로 들어가는 경우System.out.println()에 참조자료형을 매개변
중첩클래스익명클래스자바 ch15장 연습문제풀기자바에서는 클래스 안에 클래스가 들어갈 수 있다.자바 기반 ui처리나, 사용자 입력, 외부의 이벤트에 대한 처리를 하는곳에 많이 사용된다.코드를 간결하게 하는 장점이 있다.목적한 곳에서만 사용되는 클래스를 논리적으로 묶어서
자바는 클래스와 인터페이스의 메타정보(패키지 정보, 타입정보, 생성자, 필드 메소드 정보 등)를 클래스로 관리한다.프로그램에게 추가적인 정보를 제공해 주는 메타데이터어노테이션은 동작이 있는것이 아니라 단순 설정 정보일뿐이다. 리플랙션을 이용해서 적용대상으로 부터 어노테
Enum은 클래스이 이므로 생성자, 필드, 메소드를 가질 수 있다.Call Constructor가 3번이 출력된 것은 enum Fruit 클래스의 필드 수만큼 호출되었음을 확인할 수 있다. 각 각의 필드가 인스턴스 생성하면서 생성자를 호출했다는 이야기하지만 enum 생
중첩클래스 사용 이유익명객체인터페이스 익명 구현 객체하나의 클래스에서만 사용될 경우 논리적으로 묶기 위해 중첩클래스로 선언한다.캡슐화 증가내부 클래스로 선언하면서 감싸는 클래스의 private 변수를 공개할 필요 없어 캡슐화를 증대시킬 수 있다.코드 가독성 증가중첩클래
String을 선언하는 방식에는 2가지가 있다. new 키워드를 통한 객체 생성방식과 리터럴 방식이다.리터럴 방식형식) String s1 = "HelloWorld";리터럴 방식으로 선언 시 String Constant Pool에 해당 값이 존재하는지 확인 후 이미 존재
f-string 표기법문자열을 생성하는 따옴표 앞에 f를 붙인다. {}안에 변수를 삽입한다.뒤에 자릿수를 지정하여 소수점을 표현한다.문자열 -> 아스키 코드 변환소수란? 2보다 큰 자연수 중 1과 자기자신을 제외한 자연수로는 나누어 떨어지지 않는 수소수 판별 x를
garbage collection & garbage collectorHeap영역의 물리적 공간Heap 메모리 동작 과정java.lang패키지garbage collection 동적으로 할당된 객체들 중 사용하지 않는 객체(garbage)를 식별하고, 해당 객체들의 메모
제네릭제네릭이란 결정되지 않은 타입을 파라미터로 처리하고 실제 사용할 때 파라미터의 구체적인 타입을 대체시키는 기능제네릭은 타입 형 변환에서 발생할 수 있는 문제점을 컴파일 시 점검할수 있게 JDK 1.5에서 등장하였다.타입을 지정하지 않으면 Object 타입이 암묵적
ArrayListArray List의 주요 메소드들의 시간 복잡도는?size(), isEmpty(), get(), set, iterator → O(n)list에 담긴 요소의 수만큼의 시간 복잡도가 걸린다.java.util 패키지의 컬렉션 프레임워크List, Set은 객

fail-fast원칙StackSetLinkedListThe iterators returned by this class's \`iterator(https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html
학습계획 System.out.println() 메소드가 성능에 영향을 미치는 이유와 대안 제네릭 Type Erase Today I Learned System.out.println() 메소드가 성능에 영향을 미치는 이유와 대안 System.out.println()
HashTableHashMaphash충돌Map인터페이스를 구현한 클래스에는 HashTable, TreeMap, LinkedHashMap이 있다.map은 자기자신을 키로 잡는것을 금지하고 있다.HashTable 클래스는 Map 인터페이스를 구현 했지만, 일반적인 Map
쓰레드란?자바에서 스레드를 사용하는 이유Thread 생성 방법 - Thread 클래스와 Runnable 인터페이스synchronized코드의 실행 흐름메모리 비용 측면프로그램에서 어떠한 작업을 하기 위해서는 프로세스가 시작되며, 동시에 여러 일을 처리하기 위해 여러개의
I/OStreamReader/WriterFile 클래스local 파일/디렉토리를 추상화한 클래스파일/디렉토리 정보를 얻는 것, 생성, 삭제만 가능파일에 정보를 쓰거나 읽을 수 는 없다. → 파일 입출력 스트림으로만 가능\[https://www.youtube.c
프로그래머가 자바 .java파일 을 작성한다.javac compiler에 의해 .java → .class 파일로 컴파일 된다. build란? 간단히 말해 build = compile + linking 과정이다. build란 compile - packaging - t
SerializabletransientNew IOjava.io패키지에 있으며 클래스가 파일을 읽기/쓰기 작업을 할때나, 다른 서버로 보내고 받을때 반드시 Serializable 인터페이스를 구현해야한다.Serializable 인터페이스 구현되어, JVM 에서 해당 객체
자바 네트워크 프로그래밍TCP, UDP 특징Java7,8에서 달라진것들TCP(Transfer Control Protocol)HTTP, FTP, Telnet이 대표적인 TCP 통신연결 기반 프로토콜상대방이 데이터를 받았는지 응답을 확실히 보장한다.이 부분에 대한UDP(U
직렬화 보충synchronizedAtomic 클래스 Wrapper Concurrent programming이란?내부적으로 반복적으로 task변경 작업을 통해 마치 동시에 일어나는것처럼 보이는것synchronized가 동작하는 방식 synchronized 키워드는 다른
volatileThreadLocal자바의 예약어로 변수 선언시에만 사용 가능하다.예제)VolatileSample클래스에 변수instanceVal의 값을 변경하는 thread job을 생성한다.예상은 instanceVal 값이 -1로 변경될거라 예상했지만 0.0이 계속
Process와 Thread의 차이프로그램은 데이터 보조 기억장치에 저장된 데이터 덩어리 지만, 프로그램이 실행 되면 프로세스가 생성된다.foreground process사용자가 볼 수 있는 공간에서 실행되는 프로세스background process사용자가 볼 수 없는
배열에 이쓴 값을 검사하기 위해 배열의 모든 존재를 검사하므로 O(n제곱) 발생검색 비용을 줄이기 위해 딕셔너리 자료구조(딕셔너리는 자료 검색 시간복잡도가 O(1)이므로) 사용
스프링 입문을 위한 자바 객체지향의 원리와 이해 3장 - 추상화 학습java17 새로운 기능 정리완전탐색멀티프로세스에서는 각 프로세스 마다 고유한 T메모리 구조(static,stack,heap을 편의상 지칭하는 이름)가 있어 서로 참조 불가하지만 메모리 사용량은 크다.

스프링 입문을 위한 자바 객체지향의 원리와 이해 3장 - 상속, 다형성최범균의 JSP 프로그래밍 - 쿠키와 세션알고리즘 정렬상속상속 이라는 용어보다는 확장, 세분화, 슈퍼-서브 클래스 개념으로 이해하자객체 지향의 상속은 상위 클래스의 특성을 재사용 하는것이다.객체 지향

자바에서는 JDBC API를 통해 데이터베이스 프로그래밍을 한다.DB와 연결된 커넥션을 미리 만들어서 pool에 저장해 두고 있다가 필요할때 커넥션 풀에서 가져다 쓰고 connection pool에 반환하는 기법pool에 커넥션이 미리 생성되어 있기 때문에 커넥션 생성

(비밀번호 암호화를 한다고 생각했지만 이번 공부를 통해 정확히는 비밀번호 문자열을 해싱하는것이었다.)비밀번호가 유출되더라도 복호화 하지 못하여 사용자의 비밀번호를 획득하지 못하게 하기 위해보통 회원의 비밀번호를 저장할때 단방향 해시함수를 적용한 값을 DB에 저장한다.

개구리책 5장 - SOLID원칙목적 : 객체간의 응집도(chohesion)는 높이고, 결합도(coupling)는 낮추는 것응집도하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성응집도가 높은 모듈은 하나의 책임에 집중 하고 독립성이 높아져 재사용 및 유지보수가 좋
개구리책 7장프로세스 우선순위알고리즘스프링 프레임 워크는 자바 객체를 직접 관리한다. 소멸과 같은 라이프 사이클을 관리하며 스프링으로 부터 필요한 객체를 얻는다.스프링은 POJO기반의 프레임 워크이며, 주요 모듈인 IoC, DI, AOP, PSA를 지원한다.프로그래밍에
객체지향 프로그래밍 정의 및 구성요소DI, AOP, PSAREST API 기본 디자인 원칙프로그램을 명령어로 보는 시각에서 벗어나 독립된 단위인 객체들의 모임의 새로운 패러다임객체지향은 클래스, 객체, 메세지로 구성되어 객체 들은 메세지를 주고 받고 데이터를 처리 할

컨트롤러의 역할Junit 문서읽기디자인 패턴컨트롤러의 역할 사용자로 부터의 입력에 대한 응답을 받고, 모델을 적당히 처리한 다음, 업데이트된 데이터를 뷰에 전송test메소드는 abstract하면 안되고, return value가 없어야한다.(@TestFactory제외
HttpStatus 정상응답스케쥴링 큐선점형(preemptive)과 비선점형(non-preemptive) 스케쥴링동기, 비동기POST 메서드는 새 리소스를 만드는 경우 HTTP상태코드 201을 반환한다.이 메서드 일부 처리를 수행하지만 새 리소스를 만들지 않는 경우 메
동기, 비동기/ 블록킹, 논블록킹Type Inference(타입 추정)Setter 주입 방식프로세스 동기화(synchronization)동기와 비동기는 응답을 요청함에 있어 순서와 결과에 관심이 있는지로 판단할 수 있다.작업을 동시에 수행하거나, 동시에 끝나거나, 끝나
프레임워크 vs 라이브러리스프링 프레임워크란?디자인 패턴은 무엇이며 왜 생겨났나?관심사의 분리 장점프레임워크 라이브러리의 모음이며, 액션을 호출할 수 있는 제어권을 가지고 있다. → IoC 라이브러리 프로그램에서 재사용할 수 있는 기능, 동작의 모음 프로그램이
의존성 주입이란Ioc란템플릿 메소드 패턴HttpServletRequest의 재사용성스프링은 객체지향 설계와 구현에 관해 효과적으로 개선해 나갈지에 대한 방법을 제시한다. 객체지향 기술과 설계, 구현에 관해 프레임워크로 제공한다.관심사의 분리로 인해 관심사가 같은것끼리
데이터 베이스 PK 특징토비의 스프링 1.5절까지 학습mybatis 데이터 베이스에서 PK를 row를 식별하는 값으로 PK를 설정하지 않았을때 아래와 같은 문제 발생합니다.row를 식별하는 키이므로 데이터 중복이슈가 발생할 수있습니다.데이터 무결성이 깨지는 문제가 발
Mockito인증 & 인가토비의 스프링 - 1.6 싱글톤 레지스트리와 오브젝트 스코프Mock객체를 쉽게 만들고 관리하고 검증할 수 있는 방법 제공하는 프레임워크Mock객체진짜 객체와 비슷하게 동작하지만 프로그래머가 직접 mock객체의 행동을 관리하도록 제공하는 객체Au
proxy - CGLIB, Dynamic Proxy맛보기토비의 스프링 - 2.테스트클라이언트의 요청을 대신 받는 대리인 역할실제 오브젝트인 타겟은 프로젝트를 통해 요청을 받아 처리함타겟은 자신의 기능에만 집중하고, 부가기능은 프록시에게 위임한다.클라이언트가 타깃에 접근
정적 팩토리 메서드spring security flow 파악하기토비의 스프링 3장객체 생성을 캡슐화 하는 기법객체 생성을 하는 코드를 static으로 선언한다.팩토리메서드 패턴 등 디자인 패턴과는 무관하다.장점메서드 명이 있어서 생성자보다 가독성이 좋다.호출할 때마다
멘토링 복습의존관계 정리페이징을 통한 가상 메모리 관리스프링에서 구현한 싱글톤은 싱글톤 패턴을 적용 했다기 보다는 객체를 미리 생성하고 꺼내쓰는 맵과 같은 형태로 이해하자사용하는쪽에서 프록시(대리자)인지 알 수 없도록 하는것IoC란 제어의 역전이라는 개념IoC를 구현하

토비의 스프링 4장 1절dependency 의존성 옵션프로세스 동기화 기법 - 뮤텍스예외에 대한 catch 블럭에서 예외에 대한 처리가 필수적으로 있어야한다.예외처리가 되지 않는다면 프로그램이 비정상적으로 동작하거나, 메모리가 소진될 수도 있다.예외처리를 하지않고 의미
프로세스 동기화 - 세마포, 모니터공유자원이 여러개 있는 상황에서도 적용이 가능한 동기화 도구임계 구역에 진입할 수 있는 프로세스의 개수를 나타내는 전역변수 S임계 구역에 들어가도 좋은지, 기다릴 지 알려주는 wait함수임계구역 앞에서 기다리는 프로세스에 진입해도 되는
자바성능 이야기 1,2장데드락, 선점 & 비선점 스케쥴링 복습❓VO객체를 사용한다고 해서 성능이 좋아지는건 아닌데, 사용함으로써 무엇이 좋은가?반복적인 데이터 요청(메세지)전달을 위해 데이터를 담을 용도로 재활용 되어 반복적인 데이터를 담을 객체를 생성하지 않아도 된다

트랜잭션 ACID토비의스프링 6장혼공 운영체제 1장 복습ACID 트랜잭션이 안전하게 수행된다는것을 보장하는 성질Atomicity(원자성)트랜잭션의 논리적 작업 단위가 실행되다가 중단되지 않는 것을 보장하는 성질Consistency(일관성)트랜잭션이 성공적으로 일어나면

AOPAspectJ트랜잭션 전파횡단 관심사에 대해 인터페이스와 DI를 통해 무엇을 하는지 비즈니스 로직에 남기고, 그들의 역할을 따로 분리하여 비즈니스 로직에 영향을 미치지 않고 독립적인 변경을 할 수 있게 도와주는것예) 모든 비즈니스 로직에 적용된 트랜잭션DI를 통한