분류 전체보기
-
MSA(Microservice Architecture) MSA와 애자일CS/etc 2022. 11. 21. 20:44
MSA는 1개의 시스템을 독립적으로 배포 가능한 각각의 서비스로 분할한다. 각각의 서비스는 API를 통해 데이터를 주고 받으며 1개의 큰 서비스를 구성합니다. 모든 시스템의 구성요소가 한 프로젝트에 통합되어 있는 Monolithic Architecture(모놀리식 아키텍쳐)의 한계점을 극복하고자 등장하게 되었습니다. 장점 일부 서비스에 장애가 발생해도 전체 서비스에 영향을 끼치지 않는다. (시스템 장애 대응에 유리_ 각각의 서비스들은 서로 다른 언어와 프레임워크로 구성될 수 있다. 서비스의 확장이 용이하다. (서버증설이 필요할 때 수평적으로 확장할 수 있다. 모놀리식이면 이전 서버의 사양을 바꿔주는 방식으로 진행한다.) 이중화와 모듈 분리에 용이하다. 단점 서비스가 분리되어 있어 테스트(TDD)나 트랜잭..
-
객체지향 프로그래밍 정의, 장단점, 객체지향 프로그래밍 키워드Backend/Java 2022. 11. 15. 10:54
1. 객체지향 프로그래밍 정의 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법 2. 객체지향 프로그래밍의 장단점 장점 코드 재사용이 용이 : 남이 만든 클래스를 가져와서 이용할 수 있고 상속을 통해 확장해서 사용할 수 있음 유지보수가 쉬움 : 절차지향 프로그래밍에서는 코드를 수정해야 할 때 일일이 찾아 수정해야하는 반면 객체 지향 프로그래밍에서는 수정해야 할 부분이 클래스 내부에 멤버 변수 혹은 메서드로 있기 때문에 해당 부분만 수정하면 됨. 대형 프로젝트에 적합 : 클래스 단위로 모듈화 시켜서 개발할 수 있으므로 대형 프로젝트처럼 여러 명, 여러 회사에서 개발이 필요할 시 업무 분담 쉬움 단점 처리 속도..
-
객체지향프로그래밍 vs 절차지향프로그래밍Backend/Java 2022. 11. 15. 10:24
절차지향 프로그래밍 물이 위에서 아래로 흐르는 것처럼 순차적인 처리를 중요시하는 프로그래밍 기법이다. 대표적인 언어로 C언어가 있다. 컴퓨터의 처리구조와 유사해 실행속도가 빠르다. 코드의 순서가 바뀌면 동일한 결과를 보장하기 어렵다. 객체지향 프로그래밍 실제 세계의 사물들을 객체로 모델링하여 개발을 진행하는 프로그래밍 기법이다. 대표적인 언어로 Java가 있다. 캡슐화, 상속, 다형성 등과 같은 기법을 이용할 수 있다. 절차지향 언어보다 실행속도가 느리다. 절차지향 -> 객체지향 프로그래밍의 패러다임 변화 컴퓨터 중심 프로그래밍 (컴퓨터가 사고하는대로 프로그래밍) ⬇ 인간 중심적 프로그래밍 (현실 세계를 프로그래밍으로 옮겨와 프로그래밍하는 것)
-
정규화 (제 1정규화 ~ 제 3정규화)Backend/DB 2022. 11. 14. 11:29
과거 정보처리기사를 공부하면서는 도부이결다조로 외웠지만, 그렇게 외운 것은 까먹기 일수였고 당시 제대로 이해하지 못했어서 다시 한번 정리해보고자 한다. 1. 제 1정규화 (릴레이션에 속한 모든 속성의 도메인이 원자 값(atomic value)으로만 구성) [표 9-5] 다중값 속성을 포함하는 이벤트참여 릴레이션 (제 1 정규화 위배) 고객아이디 이벤트번호 당첨여부 등급 할인율 apple E001, E005, E010 Y, N, Y gold 10% banana E002, E005 N, Y vip 20% carrot E003, E007 Y, Y gold 10% orange E004 N silver 5% apple이란 고객 아이디는 여러 개의 이벤트번호를 가지기에 모든 속성의 도메인이 원자값으로 구성됐다고 볼..
-
group by count 0 적용 count ifnull 안됨Backend/DB 2022. 11. 7. 14:28
# Mysql 에서 join 후 group by 시에 null값 혹은 0 값은 나오지 않을때 # group by count 0 적용 count ifnull 안됨 select count(e.ESSAY_ID) as totalCount from score s, essay e where s.ESSAY_ID = e.ESSAY_ID and e.user_id = :user_id group by e.user_id; user_id로 group by한 다음에 count를 해주는 쿼리이다. 이 때, user_id로 그룹핑 해주었을 때 row값이 하나도 없으면 상식적으로는 0을 뱉을거라 생각했지만 그렇지 않았다. 그렇다고 count(ifnull(e.ESSAY_ID, 0))를 한다고 0이 나오지도 않았다. score essay..
-
Binary Search 이진 탐색 알고리즘Algorithm/개념정리 2022. 11. 6. 15:01
1. 이진탐색 정의 데이터가 정렬돼 있는 배열에서 특정한 값을 찾아내는 알고리즘 배열의 중간에 있는 임의의 값을 선택하여 찾고자 하는 값 X와 비교 X가 중간 값보다 작으면 중간 값을 기준으로 좌측의 데이터들을 대상으로, X가 중간값보다 크면 배열의 우측을 대상으로 재탐색 선택된 배열의 중간값을 다시 선택하고 위 과정을 반복하여 해당 값을 찾을 때까지 반복 2. 이진탐색 예시 ex) { 17, 28, 43, 67, 88, 92, 100 } , target = 43 2-1. arr = { 17, 28, 43, 67, 88, 92, 100 }, mid = 67 가운데에 위치한 67을 기준으로 43은 67보다 작다. 그렇다면 다음의 배열은 67보다 한칸 앞에 있는 것까지로 한다. 2-2. arr = { 17,..
-
동기와 비동기 개념 차이Frontend/etc 2022. 11. 2. 12:34
1. 블록 상태 vs 논블록상태 블록상태 : 학생이 시험지를 선생에게 건넨 후 가만히 앉아 채점이 끝나 시험지를 돌려받기만을 기다린다 논블록상태: 학생이 시험지를 건넨 후 선생에게 채점이 완료되었다는 전송을 받기 전까지 다른 과목을 공부한다거나 게임을 한다거나 다른 일을 하게 되면 학생의 상태 2. 동기 vs 비동기 예를 들어, 서버에서 데이터를 가져와서 화면에 표시하는 작업을 수행할 때, 동기는 서버에 데이터를 요청하고 데이터가 응답될 때까지 이후 테스크들은 블로킹(Blocking, 작업 중단)됩니다. 비동기는 서버에 데이터를 요청한 이후 서버로부터 데이터가 응답될 때까지 대기하지 않고(Non-Blocking) 즉시 다음 테스크를 계속해 수행합니다. 동기는 순차적, 직렬적으로 테스크를 수행하고 비동기는..
-
Process vs Thread (프로세스 vs 쓰레드) 차이CS/OS 2022. 11. 2. 12:22
프로세스를 이해하기 전에 프로그램에 대한 정의를 먼저 해보고자 한다. 프로그램 -> 프로세스 -> 스레드 1) 프로그램 -> 프로세스 1-1) 프로그램 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태 모든 프로그램은 운영체제가 실행되기 위한 메모리 공간을 할당해줘야 실행될 수 있다. 1-1-1) 메모리에 올라가 있지 않은 아직 운영체제가 프로그램에게 독립적인 메모리 공간을 할당해주지 않았다는 뜻 1-1-2) 정적인 상태 정적(靜的)이라는 단어 그대로, 움직이지 않는 상태라는 뜻이다. 한 마디로 아직 실행되지 않고 가만히 있다는 뜻 👉 프로그램 - 아직 실행되지 않은 파일 그 자체 - 윈도우의 *.exe 파일이나 MacOS의 *.dmg 파일 등등 사용자가 눌러서 실행하기 전의 ..