본문 바로가기
반응형

분류 전체보기95

[Redis] 이것이 레디스다(3) - NoSQL NoSQL여러 서버에 데이터 분산 저장조인이 지원되지 않는 데이터베이스스키마 가질 수 없는 데이터베이스 CAP 정리 CAP정리란 컴퓨터 과학 분야에서 분산 컴퓨터 시스템을 설명하는 데 사용되는 이론으로 일관성(Consistency), 가용성(Availability), 분할 허용성(Partition Tolerance)를 의미한다.  이때 두 가지 속성만을 지원하며 나머지 한 속성은 특정 조건에서만 만족한다. 먼저 분산 시스템에서 사용하는 용어를 살펴보자.  위 그림은 분산 시스템을 구성하는 개별 요소들을 나타내고 있다. 분산 시스템을 구성하는 각각의 하드웨어 또는 소프트웨어를 노드라고 부르며, 동일한 기능을 수행하는 노드들의 모음을 클러스터라고 한다. 분산 시스템은 하나 혹은 그 이상의 다중 클러스터로 구.. 2025. 1. 2.
[Redis] 이것이 레디스다(1, 2) - 들어가며 빨리 시작해보기 스케일업 : 단일 서버(하드웨어)의 성능을 증가시켜 더 많은 요청을 처리하는 방법-> 서비스 중단이나 하드웨어 비용 발생-> 하나의 장비에 설치할 수 있는 CPU 및 메모리와 디스크 수 상승에 대한 물리적 한계 있음 스케일아웃 : 동일한 사양의 새로운 서버(하드웨어)를 추가하는 방법 -> 서버 분산-> NoSQL(레디스, 엘라스틱서치 등) 레디스란? 고성능 인메모리 키-값 저장소로서 다섯가지 데이터형(문자열, 리스트, 해시, 셋, 정렬된 셋)을 지원하는 것, 주로 검색엔진으로 빅데이터 환경에서 사용됨.레디스 기본 명령어set 키 값- 키에 대한 값 추가, 키가 없으면 새로 키-값 생성, 키가 있으면 값 덮어씌움명령set 키 값최초 지원1.0.0시간 복잡도O(1)응답, 항상 OK예시> set key1 he.. 2025. 1. 2.
[java] JVM 동작 방식 및 메모리 구조 일반적으로 대부분의 컴파일러는 컴파일과정을 통해 기계어로 작성된 실행 프로그램을 생성한다. 하지만 JAVA는 이와 달리 OS와 독립적인 특징으로 인해, 컴파일 과정에서 기계어가 아닌 바이트 코드로 작성된 .class 파일을 생성한다. 그렇다면 기계어로 번역하는 역할은 자바에서 누가 할까? 그것이 바로 JVM(Java Virtual Machine)의 역할이다.JVM은 OS와 프로그램 사이에서 컴파일과정을 통해 생성된 바이트코드(.java -> .class)를 기계어로 번역해주는 역할을 한다. 이 자세한 과정에 대해 알아보자.JVM 동작 방식개발자가 자바 소스코드(.java)를 작성한다.Build 라는 작업을 통해 자바 컴파일러의 javac 라는 명령어로 바이트코드인 .class 파일을 생성한다.컴파일된 바.. 2024. 12. 23.
[컴퓨터구조] 컴파일러 vs 인터프리터 차이 소스 코드 작성 및 컴파일개발자는 C, Java, Python 등의 고급 프로그래밍 언어로 소스 코드를 작성합니다. 이 코드는 사람이 이해할 수 있는 형태로 작성되어 있습니다.소스 코드는 컴파일러에 의해 기계어(또는 중간 언어)로 번역됩니다. 컴파일 과정에서는 코드 최적화, 오류 검사 등이 수행되며, 실행 가능한 프로그램(실행 파일)을 생성합니다. 일부 언어(예: Java)에서는 바이트코드와 같은 중간 형태로 컴파일되어, 가상 머신에서 실행될 수 있습니다.링킹컴파일된 코드는 필요한 라이브러리나 다른 모듈과 함께 링킹됩니다. 정적 링킹은 컴파일 시간에 외부 코드나 라이브러리를 실행 파일에 포함시키며, 동적 링킹은 프로그램이 실행될 때 필요한 코드를 불러오는 방식입니다.최종적으로, 링킹 과정을 거쳐 완전한 .. 2024. 12. 18.
[springboot] @LoginUser 어노테이션 SessionUser user = (SessionUser) httpSession.getAttribute("user");@LoginUser 어노테이션은 매번 세션의 저장된 정보를 불러 들이는 위 코드의 중복을 줄여준다.사용법은 아래와 같다. 1) @LoginUser 어노테이션 생성package com.loosie.book.springboot.config.auth;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target(ElementType.PARAMETER)@Retenti.. 2024. 10. 10.
[springboot] Spring Security 권한 설정 외 @PreAuthorize로 추가 권한 검사 Spring Security는 Security Config 파일을 통해 접근 제한을 설정할 수 있다.하지만 대부분의 REST API 문서를 보면 userId 와 같이 기본키를  URL에 포함한다.따라서 전달받은 id와 세션에 저장된 id를 비교해 권한 검사하는 것은 선택적이지만 보안을 위해 권장한다.전달 받은 id와 세션의 정보를 비교 하는 방법으로 가장 가독성 있는 @PreAuthorize 어노테이션을 사용하는 방법이 있다.컨트롤러에 @PreAuthorize 어노테이션 사용 예시@RestControllerpublic class UserController { @PreAuthorize("#userId == authentication.principal.id") @PutMapping("/users/.. 2024. 10. 10.
반응형