TIL100 [TIL] MicroServices Architecture(MSA) vs Monolithic Architecture 기본 개념 Monolithic Architecture: 한 프로젝트 안에 모든 것이 다 들어 있는 형식 MicroServices Architecture(MSA): 여러 프로젝트를 만든 뒤, 프로젝트들을 연결하여 사용 ex) 모놀리식은 네이버 웹 서비스 전체를 하나의 프로젝트를 만든 것이라 하면, MSA는 메일 프로젝트, 카페 프로젝트, 블로그 프로젝트 등등 으로 나누어 이를 연결한 형태 왜 MSA를 사용할까?... MSA의 장단점?? 반대로 네이버같은 유저 트래픽과 기능이 크고 많은 서비스를 모놀리식으로 구현했다고 가정할 때, 네이버 메일 기능을 업데이트하기 위해 서버를 내렸다가 다시 올렸는데 버그가 발생해서 몇시간 동안 서버가 먹통이 된다 라는 시나리오가 가능하다. 반면 MSA 구조라면 메일 기능은 마.. TIL/TIL 2022. 9. 26. [CS] 자료구조/알고리즘 관련(작성중...) 정렬 알고리즘 시간/공간 복잡도 Array vs LinkedList Array은 메모리상에 순서대로 데이터 저장 => 캐시의 지역성으로 인해 상대적으로 빠른 탐색 수행 인덱스로 조회할 수 있음 => 인덱스 조회 성능 높음 LinkedList는 다음 데이터의 위치에 대한 포인터를 가지고 있음 중간에 데이터를 삽입, 삭제하는 것이 용이 List vs Set List는 중복된 데이터를 저장하고 순서를 유지하는 선형 자료구조 Set은 중복되지 않은 데이터를 저장하고 순서 유지X, 선형 자료구조 Hash Function, Hash Table 해시 함수(특정 알고리즘)를 통해 key값을 해쉬 코드(작은 범위의 숫자)로 변환한다. key 값 과 해쉬 코드가 1:1 매칭이 되는 경우는 해쉬를 사용하는 의미가 없어짐, .. TIL/TIL 2022. 9. 26. [CS] 데이터베이스 관련 데이터베이스에서 인덱스를 사용하는 이유 및 장단점 검색 성능을 향상시키기 위해 사용 => 별도의 메모리 공간에 인덱스가 된 컬럼들을 기준으로 정렬하여 저장함 => 이미 정렬되어 있기 때문에 특정 조건 검색시 풀 스캔이 아닌 방법으로 더 빠르게 찾을 수 있음, 정렬 필요 없음 인덱스를 사용하는 단점으로는 인덱스를 구성하는 비용 발생 정렬 상태를 유지하기 위한 비용 발생 즉, CRUD시 인덱스를 형성하기 위한 추가적인 연산이 수행됨 인덱스를 사용하는 것이 효율적이기 위해서는 쿼리가 index를 사용하는지, Cardinality, Selectivity 같은 요소들이 고려된 인덱스가 생성되어야 함 트랜잭션(Transaction) 데이터베이스의 상태를 변화시키는 하나의 논리적인 작업 단위 1개의 트랜잭션에서 여러.. TIL/TIL 2022. 9. 25. [CS] OS 관련 프로세스 생성과정 PCB가 생성되며 OS가 실행한 프로그램의 코드를 읽어들여 프로세스에 할당된 메모리의 Text Segment에 저장한다 초기화된 전역 변수 및 static 변수를 data segment에 할당 HEAP과 Stack은 초기 메모리 주소만 초기화됨 PCB에 여러 정보가 기록되면 Ready Queue에서 CPU를 할당받기까지 대기 프로세스와 쓰레드의 차이 프로세스는 운영체제로부터 자원을 할당 받은 작업의 단위 쓰레드는 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위, CPU 입장에서 최소 작업 단위 프로세스는 운영체제의 안정성을 위해 자신에게 할당된 메모리 내의 정보에만 접근할 수 있음 => 한 프로그램 처리할 때 프로세스를 여러개 사용 불가, 프로세스 말고 여러 작업을 처리하기 위해 .. TIL/TIL 2022. 9. 25. [JAVA] TIL final 키워드 필드에서 사용하면 수정 불가능 메소드에 사용하면 오버라이딩 불가능 클래스에서 사용하면 상속 불가능 상속 관련 public class InheritTest { public static class Parent{} public static class Child extends Parent{} public static void main(String[] args) { Parent parent = new Child(); // 가능 Child child = new Parent(); // 컴파일 에러 } } Marker interface / tag interface 상수도 메소드도 없는 완전히 비어있는 인터페이스 = Marker interface / tag interface 특별한 행동을 컴파일이나 J.. TIL/TIL 2022. 9. 6. [JAVA] 오버로딩(overloading) vs 오버라이딩(overriding) 맨날 헷갈리는 오버로딩과 오버라이딩... 오버로딩(Overloading)은 한 클래스 내에서 각각 다른 파라미터를 가진 동명의 메소드를 정의 컴파일타임에 결정 오버라이딩(Overriding)은 상속된 클래스에서 부모 클래스에 존재하는 메소드를 재정의 런타임에 결정 오버로딩 //overloading public class Overload { public static void get(List list) { System.out.println("List"); } public static void get(ArrayList list) { System.out.println("ArrayList"); } public static void get(LinkedList list) { System.out.println("Lin.. TIL/TIL 2022. 9. 6. [DB] soft delete vs hard delete (feat. isDeleted) 의문이 생긴 배경과 의문 유저간의 가족구성을 할 때 한명이 가족을 만든 후, 만료 기한은 있지만 초대 인수는 제한이 없는 가족 초대 코드를 발급하고 나머지 가족 구성원들이 이 초대 코드를 입력하여 가족에 join하는 방식으로 구현하려고 할 때 생긴 의문이다 위의 가족 구성의 경우에는 최초의 한번 혹은 흔하지 않게 사용할 기능이기에 초대 코드에 대한 부분을 DB에 저장해도 크게 문제가 되지 않을 거란 생각이 드는데, 만약 이러한 특정 임시 코드를 발급해주어야하는 일이 수시로 많은 유저가 사용하는 기능이라면 임시코드를 발급한 것을 매번 DB에 저장하고 만료되면 삭제를 하던 isDeleted 컬럼을 업데이트하던 비효율적인 느낌인데 이러한 경우에 어떻게 효율적으로 만들 수 있을까?? 사실 이러한 의문은 이상한 .. TIL/DB 2022. 9. 5. [백준] 외판원 순회 문제 (10971, 2098, 16991) 10971번: 외판원 순회 2 (acmicpc.net) 2098번: 외판원 순회 (acmicpc.net) 16991번: 외판원 순회 3 (acmicpc.net) 16991번: 외판원 순회 3 첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 16) 다음 N개의 줄에는 도시의 좌표 x, y가 주어진다. 모든 좌표는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. 두 도시의 위치가 같은 경우 www.acmicpc.net 세 문제 다 같은 문제라고 해도 괜찮을 정도로 유사하다 그중 3번을 기준으로 풀이를 적도록 하겠다. 문제 외판원 순회 문제는 영어로 Traveling Salesman problem (TSP) 라고 불리는 문제로 computer science 분야에서 가장 중요하게 취급.. TIL/SW&백준 문제 리뷰 2022. 8. 30. [ML] Face Recognition details HOG(Histogram of Gradient) 알고리즘 사람의 형태에 대한 검출에 많이 사용되는 feature 중 하나 이미지의 지역적인 Gradient를 활용하는 방법 Edge의 양과 방향을 구분하는 특성 Overlap을 이용하여 계산 => 어느정도의 Shift에는 적응 가능 이미지를 받으면 => gamma, colour 정규화 (이미지 밝기 조절, 흑백화 => 분석에 색상 필요없으니깐) => 각 픽셀의 gradient의 크기와 방향 계산 => 각각의 cell( = 8x8 픽셀로 묶은 단위)로부터 Gradient의 방향에 대한 Gradient 크기 히스토그램을 구한다 이렇게 구해진 히스토그램은 edge의 양과 방향, 즉 gradient의 크기와 방향을 구분하는 feature rkwla => cell .. TIL/TIL 2022. 8. 24. [백준]1208 부분수열의 합2 1208번: 부분수열의 합 2 (acmicpc.net) 1208번: 부분수열의 합 2 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 40, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 문제 N개의 정수로 이루어진 수열이 있을 때, 크기가 양수인 부분수열 중에서 그 수열의 원소를 다 더한 값이 S가 되는 경우의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 40, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100.. TIL/SW&백준 문제 리뷰 2022. 8. 22. [백준]1202 보석도둑 1202번: 보석 도둑 (acmicpc.net) 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net 문제 세계적인 도둑 상덕이는 보석점을 털기로 결심했다. 상덕이가 털 보석점에는 보석이 총 N개 있다. 각 보석은 무게 Mi와 가격 Vi를 가지고 있다. 상덕이는 가방을 K개 가지고 있고, 각 가방에 담을 수 있는 최대 무게는 Ci이다. 가방에는 최대 한 개의 보석만 넣을 수 있다. 상덕이가 훔칠 수 있는 보석의 최대 가격을 구하는 프로그램을 작성하시오. .. TIL/SW&백준 문제 리뷰 2022. 8. 21. [백준]1007 벡터 매칭 1007번: 벡터 매칭 (acmicpc.net) 1007번: 벡터 매칭 평면 상에 N개의 점이 찍혀있고, 그 점을 집합 P라고 하자. 집합 P의 벡터 매칭은 벡터의 집합인데, 모든 벡터는 집합 P의 한 점에서 시작해서, 또 다른 점에서 끝나는 벡터의 집합이다. 또, P에 속 www.acmicpc.net 문제 평면 상에 N개의 점이 찍혀있고, 그 점을 집합 P라고 하자. 집합 P의 벡터 매칭은 벡터의 집합인데, 모든 벡터는 집합 P의 한 점에서 시작해서, 또 다른 점에서 끝나는 벡터의 집합이다. 또, P에 속하는 모든 점은 한 번씩 쓰여야 한다. 벡터 매칭에 있는 벡터의 개수는 P에 있는 점의 절반이다. 평면 상의 점이 주어졌을 때, 집합 P의 벡터 매칭에 있는 벡터의 합의 길이의 최솟값을 출력하는 프로그.. TIL/SW&백준 문제 리뷰 2022. 8. 21. 이전 1 2 3 4 5 6 ··· 9 다음 반응형