본문 바로가기

분류 전체보기

(53)
Redis (1) RemoteDictionaryServer (=REDIS) "Key - Value" 구조로 비정형 데이터를 저장, 관리할 수 있는 오픈 소스 기반의 비관계형 DBMS Redis의 특징 Redis가 가지는 가장 큰 강점은 다양한 Collection(String, List, Set, SortedSet, Hash)_을 지원한다는 것입니다. 또한, Redis는 single thread로 동작하기 때문에 atomic operation이 보장됩니다. (싱글쓰레드로 운영되기 때문에, 데이터가 많다면 저장된 전체 키를 확인하는 명령어는 이를 조회하는 동안 레디스가 다른 일을 하지 못한다. (scan으로 대체 가능하다고 함.)) In-Memory로 높은 처리 속도를 보여주며, persistence (dataset dump..
AOP란? (Spring AOP) AOP= 'Aspect Oriented Programming' (=관점 지향 프로그래밍) 핵심 비지니스 로직과 공통 모듈을 분리하는 것 AOP는 OOP를 대신하는 새로운 개념이 아니라, OOP를 더욱 OOP답게 사용할 수 있도록 도와주는 보조자이다. 다음과 같이 로그나 권한체크, 보안, 트랜잭션 등 핵심 비지니스 로직은 아니지만 반드시 해야되는 작업은 반복되야 하는데, 이러한 문제를 해결해주는 것이 AOP 이다. 관련 용어 - Target : 부가기능을 부여할 대상, 핵심 기능을 담당하는 Service - Aspect : 부가기능 모듈 : Advice + PointCut가 포함 - Advice : 실질적으로 부가될 기능을 정의되어있는 구현체 다시 말하면 Advice는 Aspect가 무엇을 언제할지를 정의..
JPA 연관관계 맵핑 1 : N / N : 1 단방향 연관관계 일대다, 다대일에서 외래 키가 존재하는 곳이 연관관계의 주인이다. 일대다 / 다대일 단방향 관계를 매핑할 때는 @JoinColumn을 꼭 사용해야한다. 1 : N N 쪽인 Post 엔티티에는 FK를 매핑할 수 있는 참조 필드가 없다. 대신에 반대쪽인 Blog 엔티티에만 참조 필드인 posts가 있다. //blog 일대다 mapping @OneToMany @JoinColumn(name = "blog_id") // post 테이블의 blog_id private List posts = new ArrayList(); N : 1 //Post 다대일 Mapping @ManyToOne @JoinColumn(name="blog_id", nullable = false) priva..
SpringBatch Batch Application 이란? 사용자의 개입없이 원하는 동작을 '일괄적으로 처리'한다는 의미이다. 매일 전날의 데이터를 집계해야 하는 상황을 위하여 API를 구성한다면 방대한 양의 데이터를 읽고 가공한다면 해당 서버는 순식간에 CPU, I/O 등의 자원을 다 소비하여 Request를 받지 못하는 현상이 발생 5만번째에서 실패했다면 처음부터 다시 시작 누군가 이미 집계함수를 실행하여 집계함수를 2번 실행 위와 같은 문제 해결을 위해 한번에 대용량의 데이터를 처리하는 어플리케이션을배치 어플리케이션이라고한다. 배치 어플리케이션의 조건 대용량 데이터 - 대량의 데이터를 가져오거나, 전달하거나, 계산하는 등의 처리 가능해야 함. 자동화 - 심각한 문제 해결을 제외하고는 사용자 개입 없이 실행되어야 함. ..
AWS EC2에 SpringBoot + Vue.js 프로젝트 배포하기 (1) - 개발환경 구축 오늘의 교훈 : AWS EC2 서버를 종료하지말자 ! 다 날라간다 ^^ (1) 필요 라이브러리 or 모듈 설치를 통한 개발환경 구축하기 ✅ JAVA (버전 확인) sudo apt install openjdk-8-jdk ✅ npm설치 sudo apt install npm ✅ node 12.x 설치 curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - sudo apt-get install -y nodejs ✅ npm 업그레이드 curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - sudo apt-get install -y nodejs ✅ Git 설치 sudo apt install git ..
JVM (Java Virtual Machine) ( & JRE, JDK) JRE vs JDK vs JVM 1. JDK (Java Development Kit) JDK = JRE + Java Compiler 자바의 '개발'을 원한다면 JDK를 설치해야 한다. *Java Compiler : Java file을 컴퓨터가 이해할 수 있게 바꿔줌. .java 파일을 빌드한다면 .class 라는 파일이 자동으로 생성된다.* 2. JRE (Java Runtime Environment) JRE = JVM + Class Library + Class Loader Java 프로그램의 '실행'을 원한다면 JRE만 설치해도 된다. Class Library & Class Loader를 통해 Java File을 Library와 결합한 후 JVM에 넘겨줌. 3. JVM 아래에서 설명 예정 자바프로그램 실..
Sorting Algorithm (Bubble, Insertion, Selection, Shell, Quick, Merge Sort) 얼마 전, 스타트업 라이브코딩테스트에서 MergeSort에 대해 구현하는 문제를 풀게되었다. 기초적인 문제임에도 잘 풀지 못했기때문에 반성하는 마음...으로 Sort Algorithm들을 구현해보았다. 이해+구현을 목적으로 풀이한 것이라 코드가 조금 복잡할 수도 있다.. #1 BubbleSort (버블정렬) import java.util.Random; public class BubbleSort { static int cnt; public static void main(String[] args) { Random rand = new Random(); int[] num = new int[5]; for (int i = 0; i < num.length; i++) { num[i] = rand.nextInt(10);..
카카오 로그인 (Vue, SpringBoot) 실행기 드디어 혼자 힘으로 Vue와 SpringBoot를 이용하요 카카오 로그인 API를 구현하였습니다! 참고로 카카오로그인 API 연동 + 자체 회원가입을 구현하였습니다. 1. 로그인 버튼을 클릭하는 부분 로그인 이미지를 클릭하면, 카카오로그인 페이지로 넘어갈 수 있도록 구현하였습니다. 물론, 저 AppKey나 redirecturl등을 숨겨 구현할 수도 있습니다만.. 일단 편의상 이렇게 구현하였습니다. 카카오로그인 제품설정 中 Redirect URL은 다음과 같이 설정해주시면 됩니다. (로그인 후, 보여줄 페이지로 지정) 저는 kakalogin.vue가 자체 회원가입을 진행하는 곳이어서 (이름 잘못 지정함...ㅎㅎ...) redirect url을 이곳으로 지정했습니다. Redirect된 페이지 해당 페이지는 ..