Development

객체지향 설계원칙 : SOLID 란?
SOLID란 객체 지향 프로그래밍을 하면서 지켜야하는 5대 원칙이다.각각 SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), ISP(인터페이스 분리 원칙), DIP(의존 역전 원칙)으로 이루어져 있다. SOLID를 지킨다면 프로그램이 복잡해져도 변경에 용이하고 유지보수와 확장이 쉬운 소프트웨어를 개발할 수 있을 것이다. 1. SRP(단일 책임 원칙, Single Responsibility Principle)정의(what?)하나의 클래스는 하나의 책임을 가져야한다는 뜻이다.클래스가 제공하는 모든 서비스는 그 하나의 책임을 수행하기 위해 집중되어야 한다.왜 써?(why?)책임의 영역이 확실해지기 때문에 어떤 클래스의 책임이 변경되어야한다해도 다른 클래스의 책임에는 영향을 미치..
객체 지향 프로그래밍이란?? 객체 지향의 4가지 특징 Feat.캡상추다
면접에서 똑부러지게 말하기 위해 돌아왔다. 기본 중의 기본으로! 1. 객체 지향 프로그래밍 정의(What?) 객체 지향 프로그래밍은 기존의 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 상태와 행위를 가진 객체로 파악하는 것이다. 이러한 각각의 객체들의 역할이 무엇인지를 정의하여 객체들 간의 상호작용을 확인하여 프로그램을 구성하는 것을 말한다. 즉, 객체를 통해 "누가 어떤 일을 할 것인가?"를 정의하는 것이 핵심이다. 특징으로는 캡슐화, 상속, 다형성, 추상화 등이 있다. 왜 써?(Why?) 객체의 역할에 의한 상호작용으로 프로그램이 구성되므로, 해당 역할을 수행할 수 있는 어떤 객체든 대체 가능하다. 즉 유지보수성, 확장성, 재사용성이 뛰어남 안쓰면 뭐가 불편해?(Why Not?) 전체 시..

디자인 패턴의 종류
1. 생성 패턴 객체를 생성하는 것과 관련 있는 패턴이다. 객체의 생성과 변경이 전체 시스템에 미치는 영향을 최소화하여 시스템 안정성을 높이고 코드 유지보수성을 높이는 목적이 있다. 1) 싱글톤 패턴 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴 주로 데이터베이스 연결 모듈처럼 공통된 객체를 여러 개 생성해서 사용해야하는 상황에서 많이 사용한다. 하나의 인스턴스를 만들어 놓고 이 인스턴스를 다른 모듈들과 공유하며 사용하기 때문에 인스턴스를 생성하는 비용이 줄어들고, 메모리를 효율적으로 활용할 수 있는 장점이 있다. 단, 이 인스턴스에 대한 의존성이 높아져 유지보수가 힘들고 테스트하기 어렵다는 단점도 있다. class Singleton { private static class singlelnstanc..
![[디자인 패턴] 디자인 패턴이란??](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fb1lIPj%2FbtsE6Wwz1Ox%2FAAAAAAAAAAAAAAAAAAAAAMe7ymnqKTpCNNani5iJGdq_7Ab2Vi6aaZrdMqcyBU-y%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DtaT7DXax8Yve0D0LCwuqq3FWwR0%253D)
[디자인 패턴] 디자인 패턴이란??
1. 디자인 패턴이란??(What?) 일종의 설계 기법이며 설계 방법을 의미한다. 2. 디자인 패턴을 쓰는 이유(Why?) 디자인 패턴을 사용함으로써 SW재사용성, 유지 보수성이 보장되기 때문이다. 디자인 패턴은 구현을 위한 일종의 아이디어로, 프로젝트에 항상 적용해야하는 것은 아니지만 추후 발생 가능한 문제를 예방하기 위한 패턴을 만들어 둔 것이다. 즉, 각 디자인 패턴들은 특정한 문제를 해결하기 위해, 또는 예방하기 위해 등장한 것 3. 디자인 패턴의 분류 1) 생성 패턴 객체의 생성 방식을 결정하는 패턴이다. 예시로 DB의 커넥션풀을 관리하는 로직을 짠다할 때, DB 커넥션을 관리하는 인스턴스를 하나만 만들도록 제한하여 중복되는 인스턴스 생성을 방지하는 것이다.(싱글톤 패턴,팩토리 메서드 패턴 등)..

패스트캠퍼스X야놀자 백엔드 부트캠프_전체 과정 회고
7개월 간 길었던 부트캠프가 끝났습니다!!! 뭔가 말도 많고 탈도 많았지만 그래도 끝까지 완주했다는 사실은 변함이 없네요 ㅎㅎ 이번 포스팅을 마지막으로 기자단 활동도 끝나가는데 뭔가 아쉽지만 시원한 느낌이 강합니다! 그럼 마지막 기자단 활동 시작하겠습니다~! 1. 무엇을 배웠나?? 먼저 전체 커리큘럼. 크게 온라인 강의, 실시간 강의, 그룹 스터디, 멘토링으로 첫 4달을 보내고, 이후 토이 프로젝트 -> 미니 프로젝트 -> 기업연계(파이널) 프로젝트로 3달을 채워 마무리하는 과정이다. 첫 4달은 자바의 기초, 스프링의 기초, 알고리즘의 기초를 다루고 익숙해지는데 시간을 투자했다면 이후 프로젝트에서는 실제 배운 것을 적용해보는 것이라고 이해하면 쉽다. 커리큘럼에 대한 자세한 설명은 아래 포스팅을 참고해주시..

boolean 바인딩 에러.. boolean과 Boolean의 차이
@AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter @Builder public class SaleRegistRequest { private User seller; private Long orderHistoryId; private DealState dealState; private int discountRate; private int sellPrice; private int actualProfit; private int catchPrice; @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss") private LocalDateTime endDate; private String in..

패스트캠퍼스X야놀자 백엔드 부트캠프_파이널 프로젝트 회고
파이널 프로젝트가 시작됐다... 사실 곧 끝나가지만... 정의 : 기업 연계 프로젝트로, 실제 기업의 문제 및 니즈를 분석하고 스스로 해결책을 개발하는 과정의 마지막 성장 과제 목적 직접 실무와 유사한 환경에서 이루어지는 개발과정 경험 백엔드, 프론트엔드, UX/UI, PM 등 각기 다른 분야의 수강생과 함께 하며 협업/커뮤니케이션 능력 향상 기간 : 2023.12.05 ~ 2024.01.30 (기획 1개월, 개발 1개월) 참여인원 1️⃣ 백엔드 개발자 (Java, Spring/Springboot, MySQL) 2️⃣ 프론트엔드 개발자 (HTML/CSS, JavaScript ,React, Next.JS) 3️⃣ 프로덕트 매니저(PM) (Figma, Figjam, 서비스 기획) 4️⃣ UXUI 디자이너 (..

(8080 port is already used.) 컴퓨터 껐다 켜도 죽지 않는 좀비(?) 프로세스 해결하는 무식한 방법
배경 (8080포트를 사용하고 있는 Zookeeper 프로세스가 죽지 않아) 결론부터 말하자면 homebrew로 zookepper & kafka 다운 받지말고, 도커나 kafka 홈페이지에서 직접 다운받아서 사용하는 것을 추천한다.. homebrew 다운받아서 zookeeper 실행했더니 절대 죽지 않는 좀비 프로세스가 발생했다.. 나만 이랬던 건지는 몰ㄹ..겠... Springboot 프로젝트에서 Kafka를 사용하기 위해 homebrew를 활용해 zookeeper 다운받고 kafka를 다운받았었다. 이후 zookeeper,kafka 실행시키고, 스프링부트 서버 실행한 후, 서버 내렸다가 재실행 시키는 순간, 아래와 같은 로그가 나왔다. lsof -i : 8080 명령어를 통해 어디서 8080포트가 쓰..