분류 전체보기 19

[cs] J W T(Json Web Token)

토큰 관련된 인증은 대부분 로그인과 관련되어 사용합니다.그중 JWT는 웹 표준을 따르고 있고, JSON 객체를 사용해 정보를 전달합니다. JWT의 장점이라고 하자면 토큰 안에 정보를 담아 전달하기 때문에 JWT로 인증이 가능하다는 점입니다.또한, 웹 표준을 따르기 때문에 언어 대부분이 JWT를 지원합니다. JWT 구조 위 사진과 같이 헤더, 페이로드, 서명으로 이루어져 있습니다. 이것을 "."으로 구분합니다. 헤더에는 JWT 타입과 어떤 해싱 알고리즘을 사용했는지 명시합니다.페이로드는 Claim이 들어갑니다. 여기서 Claim은 3가지 종류가 있습니다. 3가지 종류로는 registered, public, private가 있습니다.서명은 JWT 토큰의 무결성을 보장하기 위해 헤더와 페이로드를 해싱한 후 비..

cs 2024.10.21

[cs] Spring에서 ULID적용하기

ULID란?Universally Unique Lexicographically Sortable Identifier의 약자로 대소문자를 구분하지 않는 시간을 나타내는 10글자와 16글자의 임의의 값으로 구성한다. ULID는 앞에 타임스태프가 있듯이 생성 순서를 밀리세컨 단위로 기록할 수 있어 순서대로 정렬이 가능하다. 하지만 만약 밀리세컨까지 동일하게 생성된다는 가정을 한다면, 순서는 랜덤으로 배정된다. 또한, ULID는 Crockford’s Base32 기반으로 만들어져 (I, L, O, U)는 들어가지 않는다. 제외된 이유는 이것들은 대소문자에 의해 사람들에게 헷갈릴 수도 있기 때문에라고 한다. 논리대로라면 1ms에 2^80개를 만들 수 있다. 그러면 충돌할 가능성이 존재할까?https://medium...

카테고리 없음 2024.10.14

[Psychology] Diderot effect

혹시 Diderot effect라고 아시나요?이 효과는 심리학 용어로는 "디드로 효과"라고 흔히 불리는데요.이 효과에 대해 이야기해보고자 합니다.디드로 효과디드로 효과란 하나의 물건을 사고나면 그 물건과 어울리는 다른 제품들을 계속적으로 구매하는 현상을 말합니다.예시를 들어, 아이폰을 사고 나면 애플워치, 에어팟 등을 사는 그런 현상을 말합니다.다른 말로는 "디드로 통일성(Diderot conformity)"라고 부르기도 합니다. 하지만 이런 효과로 인해 관련된 제품들을 계속 구매하는 소비가 일어나는데 그러면 "심리적으로 소비자는 어떤 마음으로 사는 걸까?"라는 생각이 들 수 있습니다. 보통 사람들의 소비를 하는 이유가 무엇일까요? 사람들은 어떤 물건의 기능적의 필요로 제품을 구매하는 경우가 대부분인 반..

카테고리 없음 2024.10.06

[cs] 싱글톤의 장점과 단점

싱글톤이란싱글톤 패턴이란 특정 클래스의 인스턴스를 1개만 생성하는 것을 보장하는 디자인 패턴 중 하나이다. 이 패턴은 생성자로 매번 생성하더라도 인스턴스를 매번 생성하는 것이 아닌 최초로 생성한 동일한 인스턴스를 계속 사용하는 패턴입니다. 만약에 spring 백엔드 개발자라면 떼고 싶어도 뗄 수 없는 디자인 패턴이자 spring을 조금 더 특별하게 만들어주는 것이라고 할 수도 있다. 싱글톤의 장점위에서 말했던 대로 처음에 생성한 동일한 인스턴스를 계속 사용하기 때문에 메모리 낭비를 예방할 수 있다.예를 들어 유저가 1초에 10, 100번의 요청을 보낸다고 가정하면 10개, 100개의 인스턴스를 생성하는 것이 아닌 이미 생성된 인스턴스(static)를 호출하여 사용해 메모리 낭비를 방지할 수 있습니다. p..

cs 2024.09.23

[redis] 캐시 전략

캐시 전략캐시 전략은 웹 서비스를 운영하는데 성능 향상을 기대할 수 있는 중요한 기술이다.보통 캐시를 사용하면 메모리 공간을 사용하기 때문에 쿼리를 보내는 데이터베이스에 비해 빠르게 데이터를 응답하는 성능을 보여준다. 하지만 보통 메모리 공간이 16 ~ 32G 정도라서 모든 데이터들을 캐싱한다면 메모리가 터져 애플리케이션이 멈춰버릴지 모른다.그런 사고를 대비하기 위해 캐시 전략을 공부하여 예방과 성능을 높여야 된다. 본론에 들어가기 전에 알아야 되는 단어가 존재한다. 그것은 Cache Hit과 Cache Miss이다.Cache Hit: 캐시 저장소에 이미 데이터가 존재하여 바로 응답할 수 있는 경우Cache Miss: 캐시 저장소에 데이터가 존재하지 않아서 DB에서 데이터를 가져와야 되는 경우캐시 중 문..

redis 2024.09.09

[cs] Proxy란

Proxy란?프록시는 `대리`라는 뜻이다. 이러한 뜻으로 네트워크 상에서는 인터넷 접속을 할 때 빠른 엑세스 또는 안전하게 통신을 하기 위해 중계서버를 두는 경우가 있는데 이런 중계서버를 `Proxy`라고 한다. 이 프록시 서버는 클라이언트와 서버 중간에 위치하여 대신 요청등의 통신을 받아준다.Proxy의 종류종류는 포워드 프록시와 리버스 프록시로 나누어진다. 둘의 차이점이라고 하면 포워드는 클라이언트 쪽을 설정하는 것이고 리버스는 서버 쪽의 설정을 한다.포워드 프록시 클라이언트의 대신 프록시 서버가 목적 서버에 통신해주는 구성이 포워드 프록시이다. 포워드 프록시의 경우는 프록시 서버가 서버와 통신한다. 그러므로 클라이언트는 서버에게 바로 정보를 받는 것이 아닌 프록시 서버로부터 정보를 대신 받는다. 그..

cs 2024.09.01

[자료구조] Array 와 List

Array배열이란 관련된 데이터들을 하나로 묶어 하나의 변수로 나타낸 선형 자료구조 중에 하나이다. 선형 자료구조 중 하나인 배열을 이용하면 하나의 변수에 여러 데이터들을 담을 수 있다. 또한, 메모리 상에서 순차적으로 나열되어 저장되는 순차 리스트에 해당된다. 순차적으로 저장되기 때문에 배열에서 인덱스를 사용하여 접근할 수 있다.  위에 예시와 같이 순차적으로 저장된 데이터를 참조하는데 인덱스를 사용하는 것을 볼 수 있다.Array 특징배열의 특징으로 첫 번째는 고정된 크기를 갖는다는 것이다. 만약에 배열의 크기를 5로 설정하였다고 가정한다고 했을 때 데이터가 3개만 들어있어도 똑같이 크기는 5만큼 차지한다. 만약 이런 상황이 일어난다면 메모리 낭비로 이어질 수 있다. 두 번째로는 물리적과 논리적의 저..

자료구조 2024.08.25

[java] static 잘 사용하고 있나?

Static Java에서 Static을 사용하는 대부분의 이유는 메모리에 한번 할당해 프로그램이 종료될 때까지 사용하고 종료될 때 메모리에서 사라지게 하기 위해 사용할 텐데요. 메모리를 중요시하여 사용하는 만큼 당연히 메모리 영역에 대해 이해도가 어느정도 있어야 될 것입니다. 우리가 만든 Class는 메모리에 올라갈 때 Static 영역(메서드 영역)에 생성되고, new 연산자를 통해서 생성한 객체는 Heap 영역에 생성이 됩니다. 또한 Heap 영역에 생성된 객체들은 GC(Garbage Collector)를 통하여 관리를 받습니다. 하지만 Static를 사용하여 Static 영역(메서드 영역)에 할당된 메모리는 장점으로써는 모든 객체가 공유하는 메모리라는 것이 있지만 단점으로는 GC에 관리 대상이 되지..

java 2024.08.18

[spring] 스프링 시큐리티? 무슨 역할을 할까

스프링 스큐리티란spring 기반의 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크'인증'과 '권한' 부분을 Filter에 따라 처리한다.Filter는 Dispatcher Servlet에 가기 전에 처리되어 URL 요청을 받지만, Intercepter는 Dispatcher와 Controller사이에 위치한다는 점에 차이가 있다.스프링 시큐리티에서 보안쪽으로 많은 옵션을 제공하기 때문에 개발자에겐 보안로직을 짜지않아도 되는 장점이 있다.인증관련된 아키텍쳐인증(Authentication) : 해당 사용자가 본인이 맞는지 확인하는 과정인가(Authorization): 인증된 사용자가 요청한 자원에 접근 가능한지 결정하는 과정 시큐리티는 기본적으로 인증 절차를 거친 후에 인가 절차로 진행된다.이런 인증과 ..

spring 2024.08.11

[JPA] 양방향 매핑과 연관관계

Spring에서 연관관계를 매핑한다고 한다면 대표적으로 단방향 또는 양방향일 텐데오늘은 둘 중에 양방향에 대해 이야기해보겠습니다.JPA 프로그래밍 책을 기반으로 작성하였습니다.양방향이란? 위에 객체 연관관계를 살펴보자면 보다시피 Member와 Team은 다대일 관계이다. 반대로 하면 일대다 관계이다.일대다는 여러 개와 연관관계를 맺기 때문에 컬렉션을 사용하여 Team.members를 List로 선언한 것을 볼 수 있다.더보기여기서 List로 컬렉션을 추가하였다고 무조건 List만 쓸 수 있는 것이 아닌 Collection, Set, Map과 같은 다양한 컬렉션을 지원하기 때문에 필요에 따라서 사용하면 된다. 테이블의 관계데이터베이스에서 테이블은 외래 키 단 하나로도 양방향으로 조회가 가능하다. 그래서 객..

JPA 2024.08.09