
좋은 객체 지향 설계 원칙중 하나인 OCP 원칙은 다형성인 인터페이스, 추상 클래스 등을 이용하여 준수할 수 있다. 이때 구현 VS 상속을 확실히 구분하여 언제 무엇을 사용하는 것이 좋을지에 대해서 감을 잡아보자.OCP 는 코드 기능의 확장에는 열려 있고, 코드 수정시

개요 객체 지향 프로그래밍에서 제공하는 다형성 에 대해서 살펴보자. 이러한 다형성 덕분에 공통 부분을 부모 클래스가 상속해주거나, 역할과 구현의 기능을 분리하는 강력한 기능을 제공한다.

자바에서 제공하는 상속의 기능은 공통부분을 부모에서 제공함으로써 유지보수의 용이함에 도움을 준다. 이러한 상속을 이해하기 위해서 힙 영역에서 인스턴스가 어떻게 생성되는지 이해할 필요가 있다.그림과 같이 Car 라는 부모 객체를 2개의 자식이 상속받고 있다. 이 덕분에
기호로 n\_ㅠ\_r 이고 연산 결과는 n \*\* r 이다. 이는 n개의 서로 다른 원소들을 중복을 허락하여 r개 뽑은 후 배치하는 것이다.연산 결과는 (1, 1), (1, 2), (1, 3) ... (3, 3) 으로 총 3 \*\* 2 인 9가지가 나온다.
with 문을 사용하면 테이블을 커스터 마이징하여 사용할 수 있다with counter 를 통해 counter 라는 임시 테이블을 만들어주었다.이를 활용하여 반복되는 서브쿼리를 획기적으로 줄일 수 있다.
Counter Counter 는 자료구조는 아니지만 반복되는 데이터를 카운터하여 딕셔너리 형식으로 반환해주는 컬렉션이다. 더 많은 기능은 여기 참고

CASE 기초 초기 테이블 simple ex case with group by 피보팅 피보팅은 테이블의 데이터를 row 형태로 보여줄 때 주로 사용하곤 한다.

사용자가 user/login 등의 경로를 통해 로그인 요청을 한다.UsernamePasswordAuthenticationFilter 가 해당 요청을 가로챈다. 그리고 이 요청에서 사용자가 전송한 id password 를 꺼내 UsernamePasswordAuthenti

사용자에게 안전한 웹을 제공하기 위해서 생각해야 할 요소는 바로 보안이다. 이때 사용자의 데이터를 주고 받을 때 암호화를 진행하는 SSL을 고려할 수 있을 것이다. SSL을 적용하면 http -> https 가 되며, 주고받는 데이터에 대해서 암호화가 진행된다. 구체적

XSS는 웹 게시판이나 메일 등에 자바 스크립트와 같은 스크립트 코드를 삽입해 개발자가 고려하지 않은 기능이 작동하게 하는 공격이다. 주로 사용자의 로그인 상태를 기록하기 위해, 쿠키나 로컬 스토리지에 정보를 저장하는데, 이를 가져올 수 있다.해커가 웹사이트의 게시판에
사실 도커의 모든 CLI 명령어는 compose 로 바꿀 수 있다. 개인적으로 도커를 사용할 때는 항상 compose 를 사용할 것 같다. 그만큼 굉장히 편리한 기능이다. 왜냐하면 compose 는 여러개의 컨테이너를 하나로 묶어서 관리할 수 있는 서비스를 제공한다.

직접 깡으로 배포하는 경험이 있는 사람에게 도커의 편안함이 많이 와닿을 것이다. 나는 SSH 에서 node db 를 직접 설치하고, 각각의 환경변수 셋팅하는 과정에서 많은 에러가 발생했다. 또한 해결하는 과정도 역시 쉽지 않았다. 애초에 에러가 많이 발생하는 이유는 환
mysql 사용하는 컨테이너를 만들고, 볼륨을 만들때 아래의 명령어를 수행한다.그런데 윈도우의 경우 리눅스와 경로를 찾는 방법이 달라서 호스트 컴퓨터에서 텅빈 디렉터리가 생성된다. 경로를 제대로 지정해주기 위해서는 아래처럼 "" 를 붙여주면 된다.

자바의 메모리 구조는 크게 메서드 영역, 스택 영역, 힙 영역 3개로 나눌 수 있다.메서드 영역: 프로그램을 실행하는데 필요한 공통 데이터를 관리한다. 이러한 데이터에는 클래스, static, 상수등이 있으며, 메서드 영역은 모든 영역에서 공유한다.스택 영역: 자바 실
자바는 4가지 종류의 접근 제어자를 제공한다.private: 모든 외부 호출을 막는다.default: 같은 패키지 안에서 호출은 허용한다.protected: 같은 패키지 안에서 호출은 허용한다. 패키지가 달라도 상속 관계 호출은 허용한다.public: 모든 외부 호출을
이 둘의 차이점을 명확하게 구분한다면, 객체지향에 대한 이해가 더욱 쉬워진다. 먼저 절차 지향은 말 그대로 절차를 지향한다. 즉, 프로그램의 흐름을 순차적으로 따르며 처리하는 방식이다. 반면에 객체 지향은 말 그대로 객체를 지향한다. 이는 실제 세계의 사물이나 사건을

만약에 내가 여러명의 학생 정보를 출력하는 프로그램을 작성한다고 해보자. 이때 각 학생은 이름, 나이, 성적을 가지고 있다. 만약에 클래스가 없다면 배열을 이용해서 정보를 표현할 것이다.만약에 정보가 추가된다면, 각 배열에 정보를 기입해주면 된다. 이때 데이터를 변경한

구간 합 문제는 연속적으로 나열된 N개의 수가 있을 때, 특정 구간의 모든 수를 합한 값을 구하는 문제이다. 예를 들어 (N = 5인) 수열 {10, 20, 30, 40, 50} 이 있다고 해보자. 여기서 두번째 수부터 네번째 수 까지의 합은 20 + 30 + 40 =