반응형 Study/CS8 [DB] 트랜잭션 데이터를 저장하기 위해선 DB, File 저장, 등 많은 방법이 존재한다. 이 중에서 가장 많이 사용되는 것이 DB인데 그 큰 이유 중 하나가 트랜잭션이다. 트랜잭션이란? 보통 하나의 비지니스 로직은 하나의 데이터만을 다루는 경우는 적다. 1,2,3 이라는 데이터의 수정이 필요할 때 1과 2는 제대로 수정 됐지만 3이 어떠한 이유로 수정이 되지 않았다면 서비스는 큰 혼란을 맞이할 것이다.. 특히 결제와 같은 시스템은 서비스의 존망이 걸린 문제가 생기지 않을까? 이러한 이유로 1,2,3을 하나의 트랜잭션으로 묶어 관리하게 되는데 만일 과정 중 하나의 문제라도 생긴다면 트랜잭션이 일어나기 이전의 기존 상태로 되돌리게 된다(Roll Back). 반대로 모든 과정이 옳게 동작한다면 DB의 데이터 값을 수정하게 .. 2022. 10. 4. [Network] HTTP 통신은 Stateless가 맞을까? 의문의 시작 Rest API는 HTTP를 기반으로 하는 Client/Server Side 통신을 도와주는 아키텍처이다. 그렇기에 Rest API는 HTTP 프로토콜의 특징을 그대로 가지고 오며, 명확한 표준은 없지만 HTTP 통신에 대해 비 강제적인 제약을 가해 일반적으로 통용 가능한 규칙을 적용시키기 위해 사용된다고 개인적으로 생각한다. 그리고 이 Rest API를 더 자세히 알기 위해서 나는 HTTP를 조금 더 공부해 보기로 했다. HTTP란? HTTP는 OSI 7 계층(애플리케이션 계층)에서 적용되는 프로토콜이며 ... 생략 ... 특징 Stateless TCP/IP 기반 ... ... 생략 ... HTTP는 Stateless한 특징을 가지고 있고 이 특징으로 인해 client/server 구조에서.. 2022. 8. 21. [Linux] 가상화 가상화 개요 1) 가상화 배경 1960년대에 가상화 개념이 처음 등장하였지만 하드웨어의 성장으로 2000년대에 이르러서야 주목받음 2) 가상화 종류 서버 가상화 가장 일반적인 가상화 기술 서버를 가상의 머신으로 만들어 사용 CPU나 메모리 등을 논리적으로 나누어 사용하여 리소스 활용률을 높이는 기술 소프트웨어가 필요 네트워크 가상화 네트워크 방화벽과 보안 장비들을 모두 가상머신으로 구현 가능 하나의 통합된 여러 개의 물리적 환경의 장치들을 가상으로 쪼개어 사용 가능 네트워크를 더욱 유연하고 빠르게 제공가능 NFV(Network Function Virtualization), SDN(Software Defined Network)가 있음 스토리지 가상화 디스크 RAID처럼 여러 개의 물리적인 드라이브를 하나의.. 2022. 8. 9. [자료구조] 해쉬 테이블(Hash table) 자료구조 HashTable Key 값에 해싱된 Value를 저장하는 데이터 구조. Hash Hash는 일방향 함수이다. 어떤 동일한 값을 함수에 매개변수로 넘긴다면 정해진 하나의 해쉬 값을 도출한다. 하지만 그 역은 구할 수 없다. Hash 충돌 만약 해쉬 값을 Boolean 자료형으로 한다면 해쉬 값은 50%의 확률로 겹칠 것이다. 이러한 상황을 해쉬 충돌이라 한다. 완전한 해시 함수 어떤 hash 함수가 충돌없이 1:1대응을 할 수 있다면 이를 완전한 해시 함수라 한다. 충돌 극복 방법 1.Open Address 이 방법은 만일 해쉬 충돌이 생긴다면 그 다음 주소에 해당 값을 저장하는 방식으로 사용된다. 하지만 remove 기능을 효율적으로 구현하기 어려운 문제가 생긴다. 2.Separate Chai.. 2022. 7. 28. [CS] 객체 지향 객체 지향 객체 지향의 발생 객체를 지향하는 대표적인 언어인 C++, JAVA, C# 등이 발생하기 전엔 C와 같은 절차지향적 언어가 주로 사용됐다. 이러한 언어는 제공하고자 하는 서비스의 목표를 이뤄가기 위해 구문이라는 연산을 흐름에 맞게 제작하여 이어 붙인 코드를 제작한다. 제공하고자 하는 서비스의 크기가 점점 커지고 복잡해 지면서 코드상에서도 확인할 수 있는 반복되는 구문을 쉽게 발견할 수 있었고 절차 지향 언어에서는 이러한 반복을 막고 관리하기 위해 우리가 아는 함수라는 개념을 만들어 사용하였다. 여기서 함수라는 연산을 진행하기 위해서는 연산의 주체인 CPU와 연산에 사용되는 자료구조를 관리하는 Memory의 관리가 필요한데 이를 한 묶음으로 엮어 모듈화 하여 한 파일로 만들어 관리하기 시작했다... 2022. 7. 2. [문자열] 문자(아스키코드-asciicode, 유니코드-unicode)와 인코딩(utf-8, base64) 시작 컴퓨터 세계에서 문자라고 한다면 대부분의 사람들이 들어봤을 아스키코드와 유니코드가 대표적일 것이다. 어떠한 기회가 있어서 이 부분에 대해 관심이 생겼고(원래도 알았어야 한다고 생각하지만 그렇지 못했다!) 공부해 보았다. 깊이 있게 알게 됐다고는 말할 수 있을지 모르겠지만 이전보다는 더 많은 것을 알게 됐다. 그 부분을 기억하기 위해 이렇게 기록하고자 한다. 아스키코드 아스키코드는 컴퓨터를 만들었고 가장 초창기에 컴퓨터에 대해 깊게 사용하기 시작한 서양권(영문권)의 나라들이 정립한 것이다. 그때문에 코딩에 필요한 몇몇 특수 문자들과 영문, 숫자 정도를 포함하고 있다. 그렇기에 7bit라는 작은 범위에 코딩에 필요한 문자를 맵핑한 약속이다. 유니코드 하지만 컴퓨터는 영문권에서만 사용되는 것이 아니게 됐.. 2022. 5. 25. 이전 1 2 다음 반응형