본문 바로가기
반응형

Java58

Java 기본 개념 Preface 자주 까먹고 헷갈리는 개념들만 보기 쉽게 따로 정리해둔다. - 자바는 클래스 다중 상속을 지원하지 않는다. → 인터페이스는 다중 상속이 가능하다. - 부모 클래스에 기본 생성자가 없고 매개 변수가 있는 생성자만 존재한다면 자식 생성자에서 반드시 부모 생성자 호출을 위해 super(매개값, ...)를 명시적으로 호출해야 한다. 1) super(매개값, ...)는 반드시 자식 생성자 첫 줄에 위치해야 한다. 2) 자식 클래스 내부에서 오버라이딩 된 부모 클래스의 메소드를 호출해야 한다면 명시적으로 super 키워드를 붙여 부모 메소드를 호출할 수 있다. - final 키워드 1) 클래스: 상속할 수 없는 클래스가 된다. 2) 필드: 상수가 된다. 3) 메서드: 오버라이딩할 수 없는 메서드가 된.. 2023. 9. 13.
스프링 삼각형과 설정 정보 Preface 이번 장에선 스프링의 3대 프로그래밍 모델에 대해 공부했다. 내용 자체가 복잡하고 어려운 편은 아니라 조금만 생각하면 쉽게 이해하고 넘어갈 수 있었다. SOLID와 디자인패턴 부분을 공부할 땐 의존성이 도대체 무엇을 의미하는 것인지, 의존성을 주입한다는 것이 무슨 뜻인지 이해할 수 없었지만, 이번 장을 공부하며 의존성이란 단어에 대해 조금은 익숙해진 것 같다. 또, 지금껏 자바를 공부하며 기본서에 있는 코드들을 자주 접하고 직접 쳐보기도 했었는데, 지금 보니 나는 이미 의존성을 주입하는 다양한 방식들을 모두 경험해봤었다. 아는 만큼 보인다는 말이 괜히 있는게 아닌가보다. 이번 장과 더불어 SOLID, 디자인패턴 장은 두고두고 자주 읽어볼 생각이다. 1. IoC/DI - IoC(Inversi.. 2023. 9. 11.
객체 지향 설계 5원칙 - SOLID Preface 이번 장에선 객체 지향 설계 5원칙인 SOLID의 정의를 공부했다. 다소 추상적인 개념이던 객체 지향의 4대 특성을 SOLID와 결합해서 생각하니 쉽게 이해할 수 있었다. 책이 설명을 잘 하는 것인지, 단순히 여러 번 봐서 익숙해진 탓인지, 객체 지향의 개념과 장점 등 그동안 애매하게만 숙지하고 있던 내용들이 이상하게 머릿속에 쏙쏙 잘 들어온다. 또, 그동안 내가 자바로 작성하던 코드들이 SOLID 원칙, 특히 SRP 따위는 개나 줘버린 코드였던 것을 알 수 있었다. 단순히 클래스 파일과 메서드를 여러 개 생성하는 것이 귀찮아 특정 조건에 따라 분기하는 조건문을 사용하던 습관을 버려야 할 것 같다. - SOLID: 객체 지향 설계 5원칙의 앞 머리 알파벳을 딴 단어 1) SRP(Single.. 2023. 9. 4.
자바가 확장한 객체 지향 Preface 이번 장에선 abstract와, final 키워드, 인터페이스에 대해 다뤘다. 대부분 '이것이 자바다' 책에서 다뤘던 내용이라 어려운 내용은 없었다. 더욱 자세한 정보는 이자바 카테고리에서 확인할 수 있다. - 추상 메서드: 선언부는 있지만 구현부가 없는 메서드 → 추상 메서드는 하위 클래스에게 오버라이딩을 강제한다. - 추상 클래스: 인스턴스(객체)를 생성할 수 없는 클래스 → 추상 클래스를 상속한 하위 클래스에선 추상 메서드를 오버라이딩해야 한다. - '클래스명( )'도 메서드이다. → 객체 생성자 메서드라 하고, 줄여서 생성자라고 부른다. - 자바는 인자가 없는 기본 생성자를 자동으로 생성해준다. → 인자가 있는 생성자를 하나라도 생성하면 자바는 기본 생성자를 만들어 주지 않는다. -.. 2023. 9. 4.
자바와 객체 지향 Preface 이번 장에선 객체 지향의 4대 특성을 알아봤다. '이것이 자바다' 책을 공부하며 이미 한 번 학습했던 내용이지만, 중간중간 기억이 잘 나지 않는 부분도 있었다. 아무래도 자바의 상속, 인터페이스, 접근제한자와 관련된 내용은 복습이 필요할 것 같다. 그래도 이것저것 공부한 개념이 많아져서 그런지 처음 객체 지향을 공부했을 때 보단 훨씬 이해가 잘 되고 쉽게 느껴졌다. 특히 추상화와 다형성의 개념을 코드를 통해 이해할 수 있게 된 것 같다. - 객체 지향은 인간 지향이다. → 객체 지향은 직관적이다. - 객체 지향의 4대 특성 1) 캡슐화(Encapsulation): 정보 은닉 2) 상속(Inheritance, Extends): 재사용 3) 추상화(Abstraction): 모델링 4) 다형성(.. 2023. 8. 31.
세션(Session) Preface 이번 장에선 JSP와 OracleDB를 사용해 간단한 로그인 폼을 만들었다. 지난번 Python과 php, MySQL을 이용해 게시판을 제작했을 땐 솔직히 php 코드를 이해하지 못한 체 다른 블로그에 있는 코드를 복사해서 사용했을 뿐이었다. 그러나 DB의 연동부터 서버 사이드 스크립트 언어인 JSP의 코드까지 모두 직접 작성하며 제작을 하다보니 작동 방식과 연결 방식을 쉽게 이해할 수 있었다. 물론 이해만 했을 뿐이지, 혼자 힘으로 모든 코드를 작성할 수 있으려면 작성해둔 코드를 여러 번 읽어보며 복습하는 시간이 꼭 필요할 것 같다. 1. 세션이란? - 세션(Session): 클라이언트가 웹 브라우저를 통해 서버에 접속한 후 용무를 처리하고 웹 브라우저를 닫아 서버와의 접속을 종료하는 하.. 2023. 6. 8.
쿠키(Cookie) Preface 이번 장에선 쿠키를 생성하고 사용하는 방법을 공부했다. 나는 지금껏 서버에서 자체적으로 쿠키를 생성하여 저장한 후 클라이언트에 따라 정보를 제공하는 것으로 알고 있었다. 서버는 클라이언트의 요청에 따라 쿠키를 생성하며, 클라이언트가 재접속하여 HTTP 요청 헤더를 통해 쿠키 정보를 제공하지 않으면 서버에서 쿠키를 읽을 수 없다는 것이 이번 장의 키 포인트인 것 같다. 1. 쿠키란? - 쿠키(Cookie): 클라이언트의 상태 정보를 유지하기 위한 기술 → 상태 정보를 클라이언트에 키와 값 형태로 저장했다가 다음 요청 시 저장된 쿠키를 함께 전송한다. - 쿠키 표준 1) 3000개까지 만들 수 있다. 2) 쿠키 하나의 최대 크기는 4096바이트이다. 3) 하나의 호스트나 도메인에서 최대 50개.. 2023. 6. 4.
(Fin) NIO 기반 입출력 및 네트워킹 Preface 이번 장을 끝으로 드디어 '이것이 자바다' 책 1회독을 마쳤다. 중간중간 완벽히 이해하지 못하고 넘어갔던 부분들은 필요할 때 다시 한 번 책과 인터넷을 찾아보며 공부할 생각이다. 물론 자바의 기본적인 사용 방법과 관련된 내용이었던 1권과 달리 2권은 다소 복잡한 내용들을 담고 있으므로 시간이 날 때마다 틈틈이 복습해야 할 것 같다. 1. NIO 소개 - NIO(New Input Output): java.nio 패키지에 포함되어 있는 비동기 채널 등의 네트워크 지원을 강화한 입출력 기능 - IO와 NIO의 차이점 구분 IO NIO 입출력 방식 스트림 방식 채널 방식 버퍼 방식 non-buffer buffer 비동기 방식 지원 안 함 지원 블로킹 / 넌블로킹 방식 블로킹 방식만 지원 두 방식 .. 2023. 5. 23.
백준 6단계 - Java Preface 최근에 자바 공부에 많은 시간을 투자했지만, 아직도 브론즈 1~실버 5단계 문제를 혼자 힘으로 제대로 해결하지 못하고 구글링을 하거나 GPT에게 질문을 하게 된다. 보통 월요일마다 백준 문제를 푸는데, 하루 종일 한 두 문제도 해결하지 못하는 날도 있다. 물론 문제를 풀었을 때 오는 성취감도 좋지만, 해결하지 못했을 때 받는 스트레스가 나를 너무 괴롭힌다. 스트레스와 짜증은 그렇다 쳐도 자꾸 자신감이 떨어지고 개발 자체에 대한 흥미를 잃게 되는 것 같아 백준 문제풀이는 잠시 쉴 생각이다. 자바 기본서의 마지막장을 업로드한 후 생활코딩에서 자바스크립트 강의를 보고, 이후엔 JSP를 공부할 계획이다. 7월 중순에 정보처리기능사 실기 공부를 하여 시험을 친 이후엔 Spring 강의를 보며 포트폴.. 2023. 5. 22.
네트워킹 Preface 이번 장은 네트워크와 관련된 내용들이다. 네트워크의 개념 자체는 생활코딩 강의를 통해 공부한 적이 있어 쉽게 이해할 수 있었지만, 이를 활용해 직접 코드를 작성하는 것은 쉽지 않은 것 같다. 다음 장을 공부하기 전에 직접 간단한 채팅 프로그램을 구현해볼까 한다. 5. 네트워크 기초 - 네트워크: 여러 대의 컴퓨터를 통신 회선으로 연결한 것 1) 지역 네트워크: 특정 영역에 존재하는 컴퓨터를 통신 회선으로 연결한 것 2) 인터넷: 지역 네트워크를 통신 회선으로 연결한 것 - 서버: 서비스를 제공하는 프로그램 → 클라이언트가 요청하는 내용을 처리해주고, 응답을 클라이언트로 보낸다. - 클라이언트: 서비스를 받는 프로그램 - 두 프로그램이 통신하기 위해선 연결을 요청하는 역할과 수락하는 역할이 .. 2023. 5. 12.