
들어가며 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속을 이용하면 부모 클래스가 가지고 있는 멤버변수와 메서드를 사용할 수 있어 코드 재사용을 할때 효과적이라고 한다. 그렇다면 상속은 언제 사용하는것이 좋을까? 상속을 사용하는 이유 상속을 왜 사용할까? 상속은 두가지 용도로 사용된다. 첫번째는 타입 계층을 구현하는 것이고 두번째는 코드 재사용이다. 객체지향 프로그래밍에서 타입 계층을 구현한다는 의미는 무엇일까? 객체지향 프로그래밍에서 타입을 정의하는 것은 객체의 퍼블릭 인터페이스를 정의하는 것과 동일하다. 즉, 객체의 퍼블릭 인터페이스가 객체의 타입을 결정한다. 따라서 동일한 퍼블릭 인터페이스를 제공하는 객체들은 동일한 타입으로 분류된다. 여기서 중요한 사실은 객체의 타입..

개발의 시작 개발의 본격적인 시작은 군대 입대 3개월전이었다. 입대전 할것도 마땅치 않아 무언가라도 해보고 싶었던 나는 우연히 프론트 개발에 대해 알게되었다. 예전에 형이 학교에서 만들어온 사이트를 내게 보여준 적이 있었는데, 정말 신기하기도 했고 어떻게 저걸 만들 수 있을지 궁금했다. 컴공 1학년을 마쳤지만, 전공수업때 배운건 C언어, 파이썬 뿐이라 그런건 도대체 어떻게 만드는지 궁금했다. 그래서 처음에 웹사이트를 한번 만들어 보자고 다짐했다. 처음에는 생활코딩의 web강의를 들으며 html, css, js가 무엇인지 알게되었고 조금이나마 무언가를 내 손으로 직접 만들 수 있었다. 단지 컴퓨터밖에 없는데 무언가가 내뜻대로 만들어지고 바로 눈에 보이니 그때부터 개발에 대한 매력에 빠진 것 같다. 그렇게..

지원 동기주변에 개발 관련 관심사를 가진 친구가 적었던 나는 프로젝트를 할때면 수많은 고민이 생기곤 했다. 어떤 날에는 1시간동안 생각하느라 코드 한줄도 작성하지 못한적도 있다.. 주로 '어떻게 하면 더 유지보수하기 좋은 코드를 작성할 수 있을까?' 같은 질문에 대한 고민인데, 얕은 지식을 가진채로 고민만 하다보니 결론을 못짓고 끝나는 경우가 허다했다. 그럴때면 나는 우아한테크코스 깃허브를 탐방하곤한다. 깃허브에서 여러가지 프로젝트 코드를 보곤하는데 그중 우아한테크코스의 크루분들이 작성하는 코드가 내눈에는 제일 깔끔해보였다. 우테코 크루분들이 진행하는 프로젝트 코드를 보며 '어? 저런 방식이 있었네?', '이럴땐 이렇게 하는구나' 와 같이 많은 깨달음을 얻었고 그걸 바탕으로 내 프로젝트에도 적용하곤 했다..
1. 랜덤 I/O와 순차 I/O에 대해서 설명해주세요.순차 I/O데이터를 읽거나 쓰려고 하는 위치가 연속적으로 있어 디스크 헤더를 한번만 이동시켜 데이터를 읽거나 쓰는 방법 랜덤 I/O데이터의 위치가 불연속적으로 위치해 있어 디스크 헤더를 여러번 이동시켜 데이터를 읽거나 쓰는 방법디스크 헤더를 이동시켜야 하는 횟수가 많아질수록 성능이 느려진다. 이때문에 랜덤 I/O가 순차 I/O에 비해 성능이 꽤 느리다. SSDSSD는 HDD와 달리 디스크 원판을 사용하지 않고 플래시 메모리를 사용한다. 그래서 디스크 원판을 기계적으로 회전시킬 필요가 없으므로 아주 빨리 데이터를 읽고 쓸 수 있다. 디스크의 헤더를 움직이지 않고 한 번에 많은 데이터를 읽는 순차 I/O에서는 SSD가 하드 디스크 드라이브보다 조금 빠르거..
1. SQL에 대해서 설명해주세요. C언어와 같은 프로그래밍 언어와 어떤차이가 있나요?SQL은 데이터베이스 관리 시스템에서 데이터를 저장하고, 수정하고, 삭제하고, 검색하는 데 사용되는 특수 목적의 언어입니다. SQL은 관계형 데이터베이스와 상호작용하는 표준 언어로, 데이터를 효율적으로 관리하고 쿼리를 실행하는 데 중점을 둡니다. SQL과 일반 프로그래밍 언어의 차이점구분SQL일반 프로그래밍 언어용도데이터베이스 시스템과의 소통에 초점을 맞추고 있어, 데이터를 효과적으로 조작하고 검색하는 기능을 제공로직 제어, 유저 인터페이스 구축, 네트워킹, 파일 입출력 등 매우 다양한 기능을 수행입출력입력은 테이블, 출력도 테이블모든 형태의 입출력 가능작동 방식DBMS에서 실행작성된 코드는 컴파일러나 인터프리터에 의해..
1. 파일시스템과 데이터베이스의 차이점에 대해서 설명해주세요.파일시스템에서는 데이터를 파일로 관리합니다. 데이터를 파일로 관리할 경우 중복이 발생할 수 있고 일관성이 깨질 수 있습니다.반면, 데이터베이스에서는 데이터를 DBMS을 통해 관리합니다. DBMS를 통해 데이터의 중복을 방지하고 일관성을 유지할 수 있습니다. 또한 여러 사용자가 동시사용할 수 있고 데이터복구나 보안성까지 제공합니다.2. 데이터베이스의 특징에 대해 설명해주세요.실시간 접근데이터베이스는 실시간으로 서비스 됩니다. 실시간이란 사용자가 요청하는 순간의 실제 데이터를 서비스하는 것을 말합니다.계속적인 변화데이터베이스에 저장된 내용은 어느 한순간의 상태를 나타내지만, 데이터 값은 시간에 따라 항상 바뀝니다.동시 공유데이터베이스는 서로 다른 ..

스프링에서 이벤트는 강하게 결합된 의존성을 느슨하게 만들어주는 역할을 할 수 있다. 예를들어 주문 시스템에서 주문이 완료되면 주문 알림을 준다던가 주문 수량을 증가시키는 일을 하게될때 주문 시스템은 후속작업을 위한 여러 서비스들을 의존하게 된다. 이때 스프링 이벤트를 사용하면 이러한 의존성을 느슨하게 만들어 줄 수 있다. 1. 스프링에서 이벤트 사용법이벤트를 발행하기 위해서는 ApplicationEventPublisher를 주입받으면 된다. ApplicationEventPublisher을 주입받기 위해서는 첫번째로 ApplicationEventPublisherAware 인터페이스를 구현한 class를 빈으로 등록해주면 된다.@Servicepublic class EventService implements..

배경현재 프로젝트로 개발중인 snappy라는 서비스에서는 여러 사용자가 촬영한 사진을 다음과 같이 보여주게된다. 현재 각각의 사진들은 사용자가 촬영한 원본 사진 그대로 홈화면에서 사용중이다. 서비스의 특성상 사진을 확인하는 사용자가 많을텐데 이렇게 원본 사진을 그대로 사용자에게 보여주는 것은 네트워크 지연뿐만아니라 네트워크 트래픽도 많아져 aws에 지불해야할 요금이 서비스가 커지면 커질수록 높아질 것이다. 또한 사진뿐만아니라 모임의 logo 이미지 등 원본 이미지의 크기가 필요없는곳에 불필요하게 원본 이미지 크기만큼 다운받고 있어 이또한 문제가 된다. 잘 생각해보면, UI에 맞는 크기의 이미지를 불러오면 원본 이미지를 불러오는 것에 비해 속도도 더 빠르고 네트워크 트래픽도 더 낮아질 것이다.그럼 어떻..