상황을 가정한다. 프로젝트 하는 중에 계정 인증 부분을 구현하려고 한다. 먼저, 알아야할 것은웹브라우저와 서버의 연결은 Http로 주고 받는데Http의 2가지 특징인 비연결지향와 상태없음으로 인해 서버는 클라이언트의 상태를 알 수 없다. 비연결지향(Connectionl
자바를 좀 공부 해봤다면 누구나 자바 바이트 코드가 JRE 위에서 동작한다는 것을 알것이다. JRE에서 가장 중요한 요소는 자바 바이트코드를 해석하고 실행하는 JVM(Java Virtual Machine)이다. JRE는 자바 API와 JVM으로 구성되며, JVM의 역할
개발자라면 기본 소양 중 하나인 클래스의 설계 원칙에 대해 들어봤나?!클래스를 설계할 때 참고할 수 있는 몇가지 원칙이 있다.원칙을 따르지 않고 더 빨리 개발하기도 하지만 훗날 유지보수 측면에선 절약한 시간보다 훨씬 많은 시간비용이 많이 들지 모른다. 클래스 설계를 잘
Redis(Remote Dictionary Storage,레디스)는 모든 데이터를 메모리에 저장하고 조회하는 in-memory DB, 모든 데이터를 메모리로 불러와서 처리하는 메모리 기반의 key-value 구조의 데이터 관리 시스템(DBMS)이다. 일종의 NoSQL이
스레드의 생성과 소멸이 자주되면 시스템에 많은 부담을 준다. 스레드가 하나의 일에 한번만 수행하고 소멸된다면 매우 비효율적인 일이 아닐수가 없다!.오늘은 스레드를 어떻게 효율적으로 사용할지 정리해보겠다.앞서 말했듯, 스레드의 생성과 소멸은 성능적으로 많은 부담이 되기에
만약, 동시에 여러 스레드가 공유 자원에 접근하면 어떻게 될까? 아마 race condition에 놓여 프로그램의 안정성과 일관성을 해치게 될 것이다.다음과 같은 문제가 발생할 수 있다. 이러한 상황을 방지하기 위해서 동기화 기법인 뮤텍스나 세마포어를 사용하여 하나의
샤딩(sharding) > 이번 프로젝트를 준비하면서 이것저것 많은 것을 알아보고 공부하고 있다. 대용량 데이터을 처리하기 위한방법이 뭔지 보다가 샤딩이란 말이 자주 나오는데 샤딩이 뭔지 이야기 해보겠다. 사전적 의미는 아래와 같다. > 데이터베이스 샤드(databa
CAP 이론은 분산 컴퓨팅 시스템에 바탕으로, 성능과 안정성 간의 tradeoff를 설명하는 이론이다.먼저,CAP 이론을 설명하기 전! 각각 CAP 약자를 설명하겠다!Consistency(일관성) : 모든 클라이언트가 같은 시간에 같은 데이터를 볼 수 있도록 하는 속성
캐시(Cache), 쿠키(Cookie), 세션(Session)은 웹 개발에서 사용되는 중요한 개념입니다. 각각의 차이는 다음과 같습니다.캐시(Cache)캐시는 일종의 임시 저장소로, 빠른 속도로 데이터에 접근할 수 있도록 돕는 역할을 합니다. 웹 브라우저에서 캐시를 사
작년 학교수업에서 CPU 스케쥴링에 대해서 한번 배웠다. 솔직히 디테일하게 들어가면 너무 어려워 뭔 소린지는 모르겠고 그냥 뭐 프로세스들에게 스케쥴을 짜주는거겠지 이 정도 느낌만 있었다. 하드웨어적인 부분은 확실히 재미가 없었다 ㅠㅠ 오늘 한번 파헤쳐 보자!잠깐! 스
동기화는 한 작업이 끝날 때까지 다른 작업이 시작되지 않는 것을 의미한다. 즉, 한 작업이 시작된다면 그 작업이 끝날 때까지 기다리고 다른 작업이 시작되지 않는 것이다. 이것은 순차적인 실행 모델을 따르는 것이므로 예를들어서 함수 호출이나 루프 반목분 등이 동기적으로
작년에 스프링 부트 프로젝트를 참여하면서 웹사이트를 만들었었다.만드는 과정에서 JPA, JPQL, ORM, Hibernate, nativeQuery, jQuery 생소한 내용들이 많이 쏟아져나와서 처음엔 헷갈렸다. 하나씩 알아보자!JPA는 Java Persistence
우리가 프로그램을 실행시키면 주메모리에 로드되면서 실행 중인 프로세스가 된다. 이때 프로그램의 코드와 데이터는 코드영역과 데이터 영역에 저장된다. 그리고 프로그램이 실행되면서 필요한 메모리는 힙영역과 스택 영역으로 동적으로 할당된다.먼저, CPU는 코드영역에 저장된 명
작년 전공 수업인 운영체제에서 메모리 구조 힙(heap)을 배웠다. 또는 C++, JAVA에서 메모리 구조를 배울때도 heap을 할당 받는 과정을 공부하였다. 나는 동시에 자료구조에서 나오는 스택, 큐, 힙, 해시 테이블 등 이런데서 나오는 힙이랑 같은 이름을 가졌길래
라우팅 알고리즘은 패킷을 어떻게 전송할지 결정하는 데 사용되는 알고리즘이다. 라우터가 패킷을 수신하면, 라우팅 알고리즘은 패킷의 목적지 주소를 분석하여 최적의 경로를 결정한다.라우팅 알고리즘에는 여러 가지가 있다. 이 중 대표적인 알고리즘들을 소개하면 다음과 같다.거리
라우터는 네트워크에서 데이터 패킷을 전송하는 기기이다. 인터넷은 라우터의 거대집합이라고도 한다. 여러 대의 컴퓨터나 네트워크 장비들 간에 데이터를 주고받을 때, 이를 중계하는 역할을 한다. 참고로, 라우터를 포함한 주고 받는 패킷은 OSI 7 layer 모델에서는 3
요즘 백준 문제 풀면서 많은 것을 느꼈다. 알고리즘 문제는 어느정도 규칙과 흐름이 정해져있다는 것을, 그 중 첫번째는 문제 이해.가장 먼저 문제를 해결하기 위한 최적의 절차는 문제를 이해하는 것이라고 생각한다. 문제를 이해함으로써 문제 해결에 필요한 조건과 제약사항을
평범했던 학생 고등학교의 졸업, 그저 난 열심히 사려고 했다. 바야흐로 8년전 고등학교를 졸업한 나, 조금 더 시간적으로 앞의 이야기인, 학창시절이였던 고등학생의 나를 이야기하자면,나는 보통 이상의 이과 학생이였다. 국어 영어는 비교적 못했고 수학, 과탐은 좋아해서