크게 DB에는 2가지 종류가 존재합니다. SQL을 사용하는 RDB와 SQL도 사용하는 NoSql(NoSql이 왜 Nosql인지에 대해 sql을 안써서 noSql이다 아니다 Not only sql의 약자라 그렇다라는 말들이 존재합니다. 안 중요하다고 생각합니다.)그렇다면, 어떻게 다를까요? 성능을 올리는 방식에는 크게 두가지가 있습니다. 수평적으로 늘리는 방식과 수직적으로 늘리는 방식이 있습니다. 간단히 설명하자면 수평적으로 성능을 올리는 방법은 갯수나 방법등을 늘리는 방법이고, 수직적으로 늘리는 방법은 성능을 올리는 방법입니다. 이에 해당하는 기술들은 Replication, 파티셔닝, 샤딩등이 존재한다고 합니다. 자세하게 설명하면 다른 방법들이긴하지만 말이죠. 그리고 개발을 하게 되면 SQL을 사용하여 ..
오래 기억에 남으려고 이해가 가지 않는것들은 이해가 갈때까지 공부하는 방식을 선택하였고, 계속 복습을 반복하는 형식으로 진행하였습니다. 하지만 여기에는 아주 치명적인 문제가 있었습니다. 그것은 생각보다 시간이 오래걸렸습니다. 보통 토요일 부터 시작해서 월요일까지 정리를 마치는데 나오는 결과물이 생각보다 좋지는 않았던거 같습니다. 그래서 방법을 다시한번더 바꾸려고 합니다. 그렇다고 해서 GPT에 돌린결과를 그대로 쓸 생각은 없습니다. 그렇게 해버리면 공부하는 의미가 없기 때문이죠. 조금더 고민해보고 진행해보겠습니다.일단 학습을 하려고 하는 범위 부터 말씀드리고 깊게 학습하는 방식으로 변경하는게 좋다고 생각합니다.학습할 내용은 다음과 같습니다.Index, SQL Injection, Statement vs P..
이전 장에서 프로세스의 상태에 대해 자세하게 알아봤습니다. 그리고 프로세스는 독립된 메모리 공간이라고 설명했었습니다. 간단하게 저번에 학습한 내용을 복습해보면 프로세스의 상태는 생성 -> 준비 -> 대기 -> 실행 -> 종료 -> 좀비 -> 해제 순으로 진행이 되어지며, 스케쥴러를 통해 프로세스의 실행 순서를 결정하게 되어집니다. 실행 순서를 나타내는 방식으로는 FSFC 먼저 들어온 친구부터 처리하는 기법, 우선순위 우선순위가 높은거 부터 처리하는 기법, RR 순차적으로 돌면서 처리하는 기법(순차적은 원형입니다.) SFJ 짧은 시간이 걸릴거 같은거 부터 처리하는 기법, CFS CPU가 가장 적게 쓴거 부터 처리하는 기법등이 존재합니다. 핵심은 모든 스케쥴러는 최초 1회는 FSFC으로 동작을 하게 되고, ..
기억을 더듬어서 CPU 스케쥴링이란건 뭘까? 내 기억으로는 락을 학습할때 락 해제를 도와주는 그런 역할로 나왔던걸로 기억한다.그리고 프로세스 동기화 같은 경우 일반적으로 프로세스는 독립적인 공간이 존재하기 때문에 동기화는 불가능하다. 하지만 이것을 가능하게 해주는 것이 IPC라고 알고 있다. 물론 이러한 사실들이 잘못된 내용들이 많다고 생각한다. 방금 GPT를 돌려보니 대부분 내가 한말이 틀렸다고 한다. 그렇다면 다시 잡는게 좋지 않을까 생각이 든다. 듬성듬성한 기억을 더듬어서 프로세스부터 스레드까지 다시 한번더 정리해보자.프로세스 상태프로세스는 독립된 메모리 공간이라고 했습니다. 그리고 다음과 같은 상태가 있다고 했습니다. 프로세스가 새로 생긴 상태, 그 프로세스가 동작하는 상태, 프로세스가 죽은 좀비..
전 회사에서 노드를 스프링을 바꿔야 하는 과제를 받았었다. 문제가 있었다. 당시 그 프로젝트는 SSO가 적용되어있다. SSO는 간단히 말해 여러 서비스를 통합해서 관리를 할 수 있어야 했다.그래서 스프링 시큐리티를 적용하기로했다.하지만 문제가 발생했다. 내가 스프링 시큐리티를 모른다는 사실이었다. 그래서 같이 일하시는 분이랑 시큐리티에 대해 같이 학습을 하였다.시간이 지나고 나니 스프링 시큐리티가 어떤 프로젝트인지 전혀 감이 잡히지않아 이렇게 다시 공부하기로 마음먹었다.|일단 내가 제일 먼저 알아야 하는건 본질에 대해 알아야 한다고 생각한다. 스프링 시큐리티가 과연 뭘까? 스프링은 이걸로 무엇을 하고 싶어하는걸까? 사실 스프링 시큐리티를 적용하지 않아도 인가며 인증이고 전부 가능하다. 스프링 시큐리티를 ..