본문 바로가기

전체 글123

[CS] 디자인 패턴, 라이브러리와 프레임워크 차이 디자인패턴이란? 디자인패턴 디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 ‘규약’ 형태로 만들어 놓은 것을 의미 디자인패턴은 라이브러리나 프레임워크를 만드는데 기초적인 원리가 되며 지금도 많은 라이브러리, 프레임워크가 어떠한 디자인패턴을 기반으로 만들어지고 있음 디자인패턴의 의의 여러 문제를 해결하는데 있어서 영감을 받을 수도 있고 팀원들과 협업할 때 어떤 문제가 나타났을 때 빠른 의사소통이 가능 디자인패턴의 종류 생성패턴, 구조패턴, 행동패턴 생성패턴 생성패턴은 객체 생성 방법이 들어간 디자인패턴 싱글톤, 팩토리, 추상팩토리, 빌더, 프로토타입패턴 구조패턴 구조패턴은 객체, 클래스 등으로 큰 구조를 만들 때 유연하고 효율적으로 만드.. 2023. 8. 29.
[Javascript] 값과 참조의 차이 (copy by value, copy by reference) 값과 참조의 차이 (copy by value, copy by reference) 데이터 타입 원시 타입(Primitive) - number, string, boolean, null, undefined, Symbol - 메모리 셀 안에 값(value)이 바로 들어가 있음 - 변수가 그 메모리 자체를 가리키고 있음 a변수에 1을 할당하고 변수 b에 a를 할당 a가 가리키고 있는 메모리 값(value)의 1이 복사 되어서 b에도 할당이 됨 → copy by value라 함 원시타입은 값 자체가 복사되어 전달됨 let a = 1; b = a; console.log(b); //1 b = 2; console.log(b); //2 다시 변수 b에 2를 재할당하면 b가 가리키고 있는 메모리 주소에 값이 2로 바뀜 객체.. 2023. 8. 28.
[CS] 추상화의 의미 추상화란 무엇인가? 추상화의 의미 프로그래밍에서의 추상화는 복잡한 데이터, 구조, 시스템 등으로부터 핵심만을 가려내 덜 자세하게 만드는 것 또는 세부사항, 절차 등을 감추고 인터페이스 등을 만드는 것으로 복잡도를 낮추는 방법 추상화는 데이터, 프로세스 추상화 크게 2가지로 나눠짐 데이터 추상화 어떠한 데이터들의 공통점을 모으고 차이점은 버림. 예를 들어 고양이, 강아지, 원숭이 등의 객체들의 공통적인 특징을 묶어 동물이라는 카테고리로 카테고리화 시킴 프로세스 추상화 어떠한 내부 프로세스를 숨기는 것. 예를 들어 데이터베이스가 어떻게 데이터를 저장하는지는 모르지만 단순하게 insert, upsert 등의 쿼리로 데이터를 저장할 수 있음 ex1) abstract class Animal { public abs.. 2023. 8. 27.
[CS] 오버로딩과 오버라이딩 오버로딩과 오버라이딩 오버로딩(Overloading) 오버로딩은 이름이 같아도 매개변수 개수, 타입, 순서를 다르게 해서 같은 이름으로도 여러 개의 함수를 정의할 수 있는 것. 이는 프로그램의 유연성을 높이고 결과적으로 코드를 깔끔하게 하는 효과가 있으며 같은 클래스 내에서 사용 ex1) class Calculator { void multiply(int a, int b){ System.out.println("결과는 : "+(a * b) + "입니다."); } void multiply(int a, int b,int c) { System.out.println("결과는 : "+(a * b * c) + "입니다."); } void multiply(double a, double b){ System.out.prin.. 2023. 8. 26.
[CS] 클래스와 객체와 인스턴스의 차이, static 키워드 사용하는 이유 및 단점 클래스와 객체와 인스턴스의 차이 클래스 클래스(class)란 객체(object)를 만들어 내기 위한 틀이며 만들어 낼 객체의 속성과 메서드의 집합을 담아놓은 것 객체 객체(object)란 클래스로부터 만들어지는 실체, 클래스로 선언된 변수 인스턴스 인스턴스(instance)란 객체가 메모리에 할당이 된 상태이며 런타임에 구동되는 객체. 객체와 같은 의미로 쓰이기도 함. 인스턴스는 AWS의 클라우드의 가상서버라는 말로도 쓰임 예시 class Person { constructor(name = "alanwalker", IQ = 100, str = 100) { this.name = name; this.IQ = IQ; this.str = str; } levelup() { this.IQ++; this.str++; .. 2023. 8. 25.
[CS] CI/CD(Continuous Integration/Delivery & Deployment) CI/CD(Continuous Integration/Delivery & Deployment) 개발자들이 소스 코드를 지속적으로 통합하고, 테스트하며, 배포하는 것을 의미 필요한 이유 혼자가 아닌 수 많은 개발자가 코드를 합치고 배포를 계속해서 시스템 없이 수동으로 한다면 여러 명의 개발자가 동시에 개발을 하게 될 것이고 서로 다른 환경에서 안되는 문제, 에러등이 발생. 이러한 문제를 해결하기 위해 CI/CD라는 개념이 도래했고 이를 쉽게 해주는 툴 등이 나옴 파이프라인 코드구축부터 시작해서 배포까지의 일련의 과정들을 CI/CD 파이프라인이라고 함. 총 3가지의 단계로 구성 continuous integration : 코드를 빌드하고 테스트하고 통합 continuous delivery : 해당 레퍼지토리에.. 2023. 8. 24.