본문 바로가기

CS공부28

기본기 닦기(3) - OOP의 4가지특징과 SOLID 간만에 쓴다. 연말이라고 너무 해이해졌다. 다시 열심히 해보자. 오늘은 OOP의 5대원칙(SOLID), 4가지 특징에대해 포스팅 해보겠다. ㅇ OOP의 4가지 특징 OOP는 다들 알다시피 객체지향프로그래밍이다. 객체지향 프로그래밍의 4가지 특징은 캡상추다. 캡슐화 : 쉽게말하면 데이터와 해당 데이터를 다루는 메서드를 클래스라는 캡슐에 넣어 객체의 내부 구현을 외부로부터 숨기고, 외부에선 오직 공개된 메서드를 통해서만 객체와 상호작용을 하도록 만든것이다. 왜 이렇게 할까? 정보은닉을 통한 장점으로 외부의 직접적인 접근을 방지해 객체의 내부 구현이 바뀌더라도 외부 코드에 미치는 영향이 최소화된다. 이는 유지보수성도 좋아진다. 구현방법은 멤버변수에 접근제어자를 private로 설정하고 getter/setter.. 2023. 12. 28.
기본기 닦기(2) - 빌드/컴파일, 웹서버/내장서버 ㅇ 빌드 프로젝트를 만들고 개발하는 과정에서 빌드라는걸 들어보거나 해봤을것이다. 근데 이걸 왜 해야하고 빌드가 대체 뭐하는 걸까? 빌드란 소스코드 파일을 실행 가능한 산출물로 변환하는 것이다. 정말 잘 정리해두신 블로그가 있어 거기서 발췌 해 봤다. 빌드? 프로그래머가 작성한 소스 코드를 실행할 수 있는 독립적인 형태(.war, .jar)로 변환하는 과정 및 결과를 말한다. 변환하는 과정에는 컴파일 과정도 포함이 된다. 예를 들어 개발자가 이클립스나 인텔리제이와 같은 IDE로 java코드를 작성하면 개발자는 '실행'버튼을 눌러서 코드의 결과물을 볼 수 있다. 그런데 개발자가 아닌 사용자가 코드의 결과물을 보려면? 사용자가 자바를 설치하고 IDE를 설치하고 해당 코드를 가져와서 실행을 눌러야 하는가? 아니.. 2023. 12. 22.
기본기 닦기(1) - 스레드, 동기/비동기, JVM ㅇ 스레드(Thread) 자바는 일반적으로 멀티 스레드 환경에 적합한 언어로 알고있다. 그런데 여기서 의문? 스레드가 뭔가? 나는 그저 작업의 한 단위 정도라고 생각을 했다. 자세히 알아보았다. 먼저 정의부터 알아보자면, 내가 아는 것처럼 프로그램 실행의 기본 단위이고, 하나의 프로세스 안에서 독립적으로 실행되는 명령어 집합이라고 한다. 여러 스레드가 하나의 프로세스 내에서 동시에 실행될 수 있으며, 각 스레드는 독립적으로 실행되는 코드의 흐름을 나타낸다. 스레드는 프로세스의 자원을 공유하며, 이를 통해 프로그램의 성능을 향상시키고 병렬 작업을 수행할 수 있다. 자바에서 스레드를 생성하려면, java.lang.Thread 클래스를 상속하거나, Runnable 인터페이스를 구현하는 클래스를 작성한다. cl.. 2023. 12. 21.
Spring boot의 build.gradle 특히 dependencies의 타입 면접질문중 롬복은 왜 compileOnly 인가요? 라는 질문을 받았다. 사실 사용만 해봤지 왜 이건 컴파일온리로 되어있을까? 라는 생각은 한번도 해보지 못했었다. 그리고 다른 종류들의 런타임온리, 디벨롭먼트온리 등등 이런것들의 종류는 어떤것들이 있고 왜쓰는지를 알아보자. 더 나아가서 아예 build.gradle의 구성을 한번 알아보자. ㅇ 면접질문 롬복은 왜 컴파일온리 일까? compileOnly로 설정을 해놓으면 해당 라이브러리는 컴파일시에만 필요하며 런타임시에는 프로덕션 코드에 영향을 미치지 않기 때문이다. 이렇게 나눠 불필요한 라이브러리의 크기를 줄이고 런타임 환경에 불필요한 클래스들이 추가 되지 않게 할 수 있다. ㅇ 종류 - implementation : 구성은 주요 의존성을 나타냄. 이 의존.. 2023. 12. 18.