본문 바로가기

전체 글

[Algorithm] 비트마스킹(Bit Masking) 비트마스킹(Bit Masking) 이란? 1. 비트란 ? - 데이터를 나타내는 최소 단위 - 모든 데이터는 0과 1의 조합으로 구성되고, 0 또는 1이 하나의 비트가 됨 - 1개의 비트는 2가지 상태를 나타낼 수 있다 -> n 개의 비트로는 2 ^ n 가지의 상태를 나타낼 수 있다. 2. 비트마스킹이란 ? - 컴퓨터가 내부적으로 모든 자료를 이진수로 표현하는 특성을 이용해 정수의 이진수 표현을 자료구조로 쓰는 기법 - 비트 마스크를 이용하면, 더 빠른 수행 시간 + 더 간결한 코드 + 더 적은 메모리 사용 효과를 얻을 수 있다. - 집합의 배열을 인덱스로 표현할 수 있다. 비트 연산자(논리 연산자) 연산자 표기 역할 예시 AND a & b a 와 b 두 비트 모두 1이면 1, 아니면 0 a = 4 = 1.. 더보기
[Network] OSI 7계층(feat.TCP/IP Updated) 💡 주변에서 들어만 봤던, 그게 무엇인지 잘 몰랐던 OSI 7계층에 대해 기본적으로 알고가자! 노션에서 보기 📁 OSI 7계층이란? 네트워크에서 전송이 이루어질때는 데이터가 단순히 전송만되는 것이 아닌 포트정보, IP 정보 등이 함께 전달된다. 이때, 데이터가 어떤 과정을 거쳐 전달되는지를 나타낸 것이 OSI 계층이다. 즉, OSI 7계층이란, 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것 OSI(Open System Interconnection) 모형 : 네트워크 및 무선 통신 시스템의 기능을 설명하는 핵심 개념 OSI 7단계로 정의한 이유는, 통신이 일어나는 과정을 단계적으로 파악하기 위함 통신 과정 중에 특정한 곳에 이상이 생길 경우, 다른 단계의 장비나 소프트웨어 등을 건드리지 않고, 통신.. 더보기
[Spring] Spring Security를 통한 Authentication(인증) & Authorization(권한 부여) 💡 스프링에서 인증과 권한 부여로 리소스 사용을 컨트롤할 수 있는 Spring Security 프레임워크에 대해 알아보자! Notion 에서 보기 📌 요약 Spring Security 의 핵심은 인증과 인가 📍 Spring Security 에서 인증과 인가 다른 게시글에서 정리한 인증과 인가에 대해 예시를 들어 짧게 짚고 넘어가자. 은행의 금고가 있고, 사용자가 금고를 열어본다고 가정할 때의 과정은 아래와 같다. 사용자는 은행에 가서 자신이 어떤 사람인지 신분증으로 자신을 증명한다. 은행에서 사용자의 신분을 확인한다. 은행에서 사용자가 금고를 열어 볼 수 있는 사람인지를 판단한다. 만일 적절한 권리나 권한이 있는 경우 사용자의 금고를 열어준다. 👌🏻 인증(Authentication) 해당 사용자가 본인이.. 더보기
[Web] JWT(JSON Web Token) 다시 정리하는 !!!!! 💡 Web의 인증 방식 중 세션의 메모리 문제를 보완할 수 있는 JWT에 대해 알아보자! 노션에서 보기 📌 요약 JWT란, 인증에 필요한 정보들을 암호시킨 토큰으로 세션 기반 인증 방식의 문제점을 보완하는 기술이다. 세션의 단점 세션 기반의 인증 방식을 사용할 때, 중앙 세션 관리 시스템에서 하나의 문제가 시스템 전체로 확산된다는 문제점 존재 사용자가 많아짐에 따라 세션 DB와 서버 확장 필요 예를 들어, 내가 사용중인 웹사이트의 사용자가 많아져 세션 DB를 A와 B로 나우었다고 가정하면, 나에 대한 정보는 세션 A에 저장되어 있었다. 따라서 앞으로 해당 웹 페이지에 Request를 보낼 때 세션 A에서만 통신하도록 하는 추가적인 기술이 필요하다. → 이러한 단점을 어느 정도 해.. 더보기
[Web] 서버 기반 인증 시스템과 토큰 기반 인증 시스템 💡 세션과 JWT로 대표되는 Web 의 인증 방식에 대해 하자! 노션에서 보기 📌 요약 서버 기반 인증 시스템과 토큰 기반 읜증 시스템으로 구분할 수 있다. 서버 기반 인증 시스템 서버 측에서 사용자 정보를 기억 토큰 기반 인증 시스템 사용자 정보를 서버에 담아두지 않는다. 즉 stateless하다. 🌧️ 서버 기반 인증 시스템 서버 기반 인증 시스템 개념 기존의 인증 시스템은 서버 기반의 인증 방식으로, 서버 측에서 사용자 정보를 기억하고 있는 방식이다. 사용자 정보를 기억하기 위해 세션을 유지해야 하고, 메모리나 디스크, 또는 DB 등을 통해 관리한다. 클라이언트로부터 요청을 받으면 → 클라이언트의 상태를 계속해서 유지하고, 이 정보를 서비스에 이용한다는 점에서 Stateful 서버라고 할 수 있다... 더보기
[Web] Authentication & Autorization 💡 인증(Authentication) Vs 인가(권한 부여, Autorization) 비슷해 보이지만 다른 두 프로세스의 차이점을 정리하자! 노션에서 보기 📌 요약 인증이란, 사용자가 누구인지 확인하는 절차 인가란, 사용자에 대한 권한을 허락하는 것 누가, 언제, 어떻게 쓰고 있는지를 파악하기 위해 인증과 인가가 존재한다. in anywhere Private한 API & Public한 API 모두 기본적인 인증과 인가를 요구한다. 👌🏻 인증 인증의 개념 사용자(혹은 장치)가 누구인지를 확인하는 절차 예시 : 회원가입, 로그인, 신분증 제시를 통한 신원 확인 인증의 절차 회원가입 과정 아이디, 비밀번호를 생성한다. 비밀번호를 암호화하여 DB에 저장한다. 로그인 과정 등록된 아이디와 비밀번호를 입력한다. 암.. 더보기
[Web] 쿠키(Cookie) & 세션(Session) 💡 Web의 기본적인 인증 방식을 알아보자! 노션에서 보기 📌 요약 공통점 : 웹 통신 간 유지하려는 정보(Ex) 로그인 정보 등)를 저장하기 위해 사용 차이점 : 저장 위치, 저장 형식, 용량 제한, 만료시점 등 쿠키 : 개인 PC에 저장 세션 : 접속중인 웹 서버에 저장 쿠키와 세션 사용 이유 (Feat. HTTP 특징) HTTP(Hypertext Transfer Protocol) 의 특징이자 약점을 보안하기 위함 HTTP(Hypertext Transfer Protocol) 의 정의 HTTP는 인터넷상에서 데이터를 주고받기 위해 서버/클라이언트 모델을 따르는 통신 규약 HTTP의 특징 비연결성(Connectionless) 클라이언트가 서버에 요청(Request)을 보내고 → 그 요청에 맞는 응답(Re.. 더보기
[Android] 안드로이드 서비스 종류 및 생명주기 안드로이드 4대 컴포넌트 - 서비스란? 1. Service 정의 - 액티비티 처럼 사용자와 상호작용하는 컴포는트가 아닌 백그라운드에서 동작하는 컴포넌트 - 사용자에게 인터페이스를 제공하지 않고, 백그라운드에서 오래 실행되는 작업을 수행할 수 있는 애플리케이션 구성 요소 Ex) 파일 다운로드, 데이터 체크, 데이터 처리, 네트워크 트랜잭션, 음악 재성, Content Provider 와의 상호작용 등 - 액티비티가 종료되어 있는 상태(다른 앱으로 전환)에서도 동작하기 위해 만들어진 컴포넌트 Ex) 화면이 종료된 상태에서도 노래 재생 - 만약, 서비스가 실행되고 있는 상태라면, 안드로이드 OS 에서는 해당 프로세스를 웬만한 경우에 죽이지 않고 관리한자. 메모리 부족 등의 특별한 경우를 제외하고 백그라운드 동.. 더보기