전체 글 (15) 썸네일형 리스트형 SOLID Principle 알아보기 - 두번째 SOLID PrincipleSOLID Principle은 객체 지향 프로그래밍에서 유지보수성, 재사용성, 확장성에 중점을 두고 설계하는 원칙이다. 오늘은 SOLID 알아보기 두번째 시간으로 LSP, ISP와 DIP에 대한 내용이다. LSP (리스코프 치환 원칙 - 명확하게 subtype관계를 유지하자) 자식 클래스(인터페이스의 구현)는 언제나 자신의 부모클래스(인터페이스)로 교체될 수 있어야 합니다. 예시오리는 새여서 날 수 있지만.public class Bird{ public void fly(){}}public class Duck extends Bird{} 타조는 새지만 날 수 없다. 따라서, fly 메서드를 사용할 수 없으므로 LSP 원칙을 위반하고 있다. public class Ostrich .. JVM 두번째 글 - Heap 메모리 구조에 대하여 개요오늘은 개발자가 JVM 메모리 중에서도 Heap 메모리에 대해서 알아보려고 합니다. Heap - JVM 튜닝 포인트, 잠재적 OOM문제 발생 지점 Oracle Java Virtual Machine Specification에서 찾은 튜닝포인트Chater 2. The Structure of teh Java Virtual Machine에서 내용 발췌“현 JVM 규격에 명시되어 있지 않은 구현과 관련된 상세 사항들은 구현자의 창의성을 저해하는 불필요한 제약이 될 수 있습니다. 예를 들자면, 데이터 영역의 메모리 레이아웃이나 Garbage-Collection에 사용되는 알고리즘, 그리고 JVM 명령어 실행과 관련된 내부의 최적화(e.g, 기계어로 번역하는 과정)에 관한 것은 구현자의 재량으로 남겨두겠습니다... SOLID Principle 알아보기 - 첫번째 SOLID PrincipleSOLID Principle은 객체 지향 프로그래밍에서 유지보수성, 재사용성, 확장성에 중점을 두고 설계하는 원칙이다. SOLID 알아보기 첫번째 게시글은 SRP와 OCP에 대한 내용이다. SRP (단일 책임 원칙 - 하나의 클래스, 하나의 책임)하나의 Class를 바꿀 이유는 오직 하나여야만 한다.하나의 클래스는 하나의 책임만 가져야 한다. 여기서 책임은 그 Class가 무엇을 하는지가 아니다. 바뀌여야 하는 이유이다. 즉, 하나의 클래스에 여러 책임이 부과되면 안된다.또한, 하나의 책임이 여러 클래스에 흩어져 있거나,다른 책임들과 섞이면 안된다. → 가독성의 문제도 있다.그렇지 않으면, 추후에 변경사항들이 생길 수록, 고쳐야하는 클래스들이 늘어난다. 다음과 같은 경우를 생.. JVM 첫번째 글 - JVM의 구조와 동작에 대하여 개요이 글에서는 JVM 명세와 JVM의 구조에 대하여 서술된 책을 참고로 JVM을 이루는 구성요소들의 역할들에 대하여 알아보려고 합니다. 아래 책을 참고하였습니다. Inside the Java 2 Virtual Machine: Venners, Bill Inside the Java 2 Virtual MachineUpdate of the best book on the Java Virtual Machine the only one praised by JavaWorld as "excellent" and "much stronger" than any competition. Thorough revision with all-new material covering the just-released version that r.. 다양한 페이징 기법(pagination)과 장단점 개요이 글에서 API 서버에서 페이징을 구현할 때 자주 사용되는 오프셋 기반, 커서 기반 페이징 방식에 대해서 알아보고 방식별 장단점과 구현시 고려해야할 점들에 대해서 정리해보겠습니다. Pagination이란?페이징(Pagination)은 대량의 데이터를 한 번에 보여주지 않고, 나누어 보여주는 방법입니다. 한정된 양의 데이터만 조회하여 서버 부하를 감소시킬 수 있고, 서버와 클라이언트간 통신에 있어 네트워크 트래픽을 줄일 수 있습니다. 페이징 기법들Offset-based Pagination (오프셋 기반 페이징)오프셋(Offset)은 데이터베이스가 레코드를 선택하기 전에 건너뛰어야 하는 레코드 수입니다. 클라이언트가 PR의 두번째 페이지를 보고 싶다면, Offset을 10(하나의 페이지의 크기가 1.. 자기소개서 오늘 할 이야기오늘은 저에 대해서 적어보려고 합니다.지금 하고 있는 백엔드 개발을 어떻게 하게 되었고, 제가 세상을 바라보는 방식에 대해서도 이야기해보려고합니다. 백엔드 개발자가 되기 까지의 과정지극히 평범한 컴공과 학부생제가 컴퓨터 공학과를 선택하게 된 이유는 고등학교때 로봇관련된 동아리를 했었고, 그 경험을 가장 잘 살릴 수 있는 과가 컴퓨터 공학과 였기 때문이었습니다.전공과목이 그렇게 재밌지도, 또 그렇다고 흥미가 없지도 않은 상태로 학교를 다니다 처음으로 흥미가 생긴 과목을 만나게 되었습니다. 처음 경험한 몰입제가 흥미를 가진 과목은 머신러닝에 관한 과목이었습니다. 이 과목의 첫 강의는 KNN알고리즘에 대한 것이었는데, 이 알고리즘에는 거리를 구하는 방식이 3가지가 있습니다. 호기심이 많았던 저는.. 첫번째 같은 N번째 블로그 시작하기 블로그 도전기 - 첫번째 블로그와 실패 처음으로 블로그를 시작하게 된 계기졸업을 앞두고 산학협력으로 인턴을 시작한 회사에서 롤모델로 삼고 싶은 개발자분을 만나게 되었다. 입사하고 한달이 조금 지나 그 분은 다른 회사로 이직하셨지만, 언젠가는 나도 저렇게 되고 싶다는 생각이 들기에는 충분한 시간이었다. 그 분이 개인 블로그에 작성하신 글 링크를 공유해주셨던 적이 있다. 회사에서 사용하던 기술스택에 대한 사용법에 관한 글이었는데, 글을 읽고 나서 "나도 이런 글을 작성해보고 싶다."라는 막연한 생각이 들었다. 적당한 웃음포인트와, 기술적인 깊이가 공존하는 잘나가는 개발자스러운글이랄까 찾아보니 예전에 블로그 하겠다고 Jekyll을 사용한 템플릿 가져다쓴 깡통 github blog가 있었다. 그렇게 해서 만들.. 이전 1 2 다음