728x90
반응형

Programming 10

[OOP] 객체지향 설계원칙 - SOLID 원칙

SRP(단일 책임 원칙) OCP(개방-폐쇄 원칙) LSP(리스코프 치환 원칙) ISP(인터페이스 분리 원칙) DIP(의존 역전 원칙) SOLID는 객체 지향 프로그래밍에서 유용한 디자인 원칙의 묶음을 나타낸다. 이들 원칙은 소프트웨어의 설계, 개발 및 유지 보수를 용이하게 하기 위해 사용된다. ⛵️ 단일 책임 원칙 (SRP: Single Responsibility Principle) 클래스는 하나의 책임만 가져야한다. 즉, 클래스는 하나의 기능을 수행하고, 그 기능을 변경할 이유가 하나여야 한다. 예를 들어, 고객 정보를 데이터베이스에 저장하고, 이메일로 고객에게 안내 메일을 보내는 클래스가 있다고 가정해보면, 이 클래스는 두 가지 기능을 수행하므로 SRP 원칙을 위반한다. 이 경우, 이 두 가지 기능을..

[GitHub] Mac 터미널 GitHub Repository 연동

IDE에서 직접 Git을 사용하는 방법이 아닌 터미널을 통해 git 명령어를 사용하고 GitHub에 연동하기 로컬 디렉토리와 Git Hub 레포지토리 연동 1. 연동할 본인 Git Repository 주소 복사 2. 터미널을 이용해 Git Repository를 관리할 폴더로 이동 3. 레포지토리(원격저장소) 연결 : git init 4. main 브랜치로 이동 : git checkout 'main' 작업 후 레포지토리에 파일 업로드 1. txt 파일 생성 2. 현 디렉토리 모든 파일 staging 추가 : git add . 3. 현재 git 상태 확인 : git status 4. 커밋 : git commit -m '커밋 메세지' 5. git hub 최초 업로드 : git push -u origin mai..

Programming/etc 2023.03.05

CleanCode - 깨끗한 코드

클린코드에서는 깨끗한 코드를 작성하기 위해서는 나쁜 코드를 작성해서는 안 된다고 설명하고 있다. 프로그래머라면 누구나 나쁜 코드로 고생한 경험이 있을 것이다. 그렇다면 어째서 나쁜 코드를 작성한 것일까. 제대로 짤 시간이 없다고 생각해서, 코드를 다듬느라 시간을 보냈다가 상사에게 욕 먹을까봐, 다른 업무가 너무 밀려 후딱 해치우고 밀린 업무로 넘어가려고 .. 등등 모두가 겪어본 상황이다. 우리는 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. 우리 모두는 대충 짠 프로그램이 돌아간다는 사실에 안도감을 느끼며 그래도 안 돌아가는 프로그램보다 돌아가는 쓰레기가 좋다고 스스로를 위로한 경험이 있다. 다시 돌아와 나중에 정리하겠다고 다짐했었다. 물론 그때 그 시절 우리는 르블랑의 법칙을..

[MQ] rabbitMQ

rebbitMQ는 AMQP를 따르는 비동기 방식의 오픈소스 메시지 브로커로써 메시지 큐를 이용해 시스템의 부하를 줄이고 성능을 높이기 위한 용도로 사용한다. 메세지를 많은 사용자에게 전달하거나, 요청에 대한 처리 시간이 길 때, 요청을 다른 API에게 위임하고 빠른 응답을 할 때 주로 사용한다. 기존 애플리케이션의 문제점 - 서버가 응답할 때 까지 기다려야 한다. - db 장애시 애플리케이션에도 장애가 발생한다. - Real-Time 어플리케이션 구현이 어렵다 AMQP : 인스턴스가 메시지 데이터를 서로 교환하기 위한 프로토콜 rabbitQM 사용시 장점 - 애플리케이션의 의존성을 제거 할 수 있다. - 느슨하게 결합된 설계가 가능하다. - 데이터베이스 성능에 영향을 받지 않는다. - 애플리케이션 코드를..

Programming 2022.10.23

[programming] 프로그래밍 언어 JAVA와 C#의 차이

JAVA와 C#은 둘다 자신만의 '속성'과 '기능'을 정의한 클래스를 가지고 상호작용하는 개념의 객체지향 언어(OOP)이다. 이런 두 객체지향 언어의 차이점을 알아보자. 1. JAVA와 C#의 관계 마이크로소프트(Microsoft)사에서 제작한 C#은 Java와 C++의 아쉬운 점을 극복하기 위해 닷넷 프레임워크의 한 부분으로 만들어졌다.하지만 C#이 Java의 여러 단점들을 극복했음에도 불구하고 이미 Java로 개발되어 있는 시스템들이 많고, 많은 Java 생태계가 조성되었기 때문에 점유율을 그다지 높이지는 못했다. 또한 Java를 대신할 수 있는 포지션에 파이썬(Python)과 같은 다른 언어들이 대안이 되고있는 상황이였다. C#을 통하여 다룰 수 있는 닷넷 플랫폼의 기술들 조차도 자바를 염두에 둔 ..

Programming 2022.10.19

[CS] URL을 주소창에 입력했을 때 화면이 나오기까지의 과정

www.google.com을 주소창에 쳤을 때 화면이 나오기까지의 과정 (네트워크 관점) 1. 사용자가 브라우저에 URL 입력 2. 브라우저는 DNS를 통해 IP 주소를 찾는다. 3. client에서 HTTP request 메시지 => TCP/IP 패킷 생성 => server로 전송 4. server에서 HTTP request에 대한 HTTP response 메시지 => TCP/IP 패킷 생성 => client로 전송 5. 도착한 HTTP response message는 웹 브라우저에 의해 출력(렌더링) 웹 동작 방식 1. 유저가 브라우저에서 www.google.com(URL)을 입력하면 HTTP request message를 생성한다. 2. IP 주소를 알아야 전송할 수 있으므로 DNS lookup을 ..

[OS] 멀티 프로세스(multi process)와 멀티 스레드(multi thread)

1. 멀티 프로세스(multi process) 멀티 프로세스란 2개 이상의 프로세스가 동시에 실행되는 것을 말한다. 동시에 라는 말은 동시성과 병렬성 두 가지를 의미한다. 동시성은 CPU core가 1개일 때, 여러 process를 짧은 시간동안 번갈아 가면서 연산을 하게 되는 시분할 시스템으로 실행되는 것이다. 병렬성은 CPU core가 여러개일 때, 각각의 core가 각각의 process를 연산함으로써 process가 동시에 실행되는 것이다. 동시성(Concurrency) VS 병렬성(Parallelism) 동시성 병렬성 Single core Multi core 동시에 실행되는 것 같아 보인다 실제로 동시에 여러 작업이 처리된다. 밑의 내용은 Single core의 동시성에 초점을 맞춘다. 멀티 프로..

[OS] 프로그램(Program) / 프로세스(Process) / 스레드(Thread)

프로그램(Program) : 어떤 작업을 위해 실행할 수 있는 파일 (설치된 프로그램) - 저장장치에 저장되어있는 정적인 상태 프로세스(Process) : 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 (실행된 프로그램) - 프로그램 실행을 위해 메모리에 올라온 동적인 상태 프로그램과 프로세스는 실행 파일의 실행 전(=프로그램) / 실행 중(=프로세스)의 차이로 구분할 수 있다. 스레드(Thread) : 프로세스 내에서 실행되는 여러 흐름의 실행 단위 하나의 프로세스는 여러 개의 스레드(=멀티스레드)를 가질 수 있다. - 기본적으로 하나의 프로세스가 생성되면 하나의 스레드(= 메인스레드)가 생성된다 👇👇👇 멀티프로세스와 멀티스레드 👇👇👇 [OS] 멀티 프로세스(multi process)와 멀티 스레..

728x90
반응형