[Mongo] 몽고(mongoDB)디비 CRUD 쿼리 문법 명령어 정리
·
Study/DB
데이터베이스 명령어 데이터베이스 생성 show dbs -- 데이터베이스 리스트 출력 db -- 현재 사용하고 있는 데이터베이스 출력 db.stats() -- 현재 사용하고 있는 데이터베이스 정보 출력 데이터베이스 사용 use database -- 데이터베이스 사용 혹은 생성(존재하지 않을 경우 생성) -- use를 통해 생성된 데이터베이스는 그 안에 최소 한개의 Document가 존재해야 show dbs를 통해 확인 가능 데이터베이스 삭제 db.dropDatabase() -- 데이터베이스를 삭제 -- 이 명령어는 use DATABASE_NAME를 통해 지울 데이터베이슥 선택되어 있어야 한다. 컬렉션 명령어 컬렉션 생성 // db.createCollection( name[, option]) // name은..
[WEB] 프록시(Proxy)란?
·
Study/WEB
프록시(Proxy)란? 프록시(Proxy)는 "대리"의 의미로, 인터넷과 관련해서 쓰이는 경우, 특히 내부 네트워크에서 인터넷 접속을 할 때에, 빠른 액세스나 안전한 통신 등을 확보하기 위한 중계서버를 "프록시 서버"라고 일컫는다. 클라이언트와 Web 서버의 중간에 위치하고 있어, 대신 통신을 받아 주는 것이 프록시 서버이다. 프록시(Proxy)의 종류 프록시(Proxy)는 포워드 프록시와 리버스 프록시로 나뉘어져, 기본적으로 포워드 프록시는 클라이언트 쪽, 리버스 프록시는 서버쪽의 설정을 한다. 포워드 프록시 클라이언트의 대신 프록시 서버가 목적 서버에 통신해 주는 구성을 "포워드 프록시"라고 한다. 프록시를 사용하지 않은 경우 아래와 같다. 포워드 프록시의 경우 아래와 같이 프록시 서버가 외부 Web..
[JPA] 테이블 연관관계 매핑 기초
·
Study/Spring
1. 연관관계 매핑 기초 엔티티들은 대부분 다른 엔티티와 연관관계가 있다. 예를 들어 주문 엔티티는 어떤 상품을 주문했는지 알기 위해 상품 엔티티와 연관관계가 있고 상품 엔티티는 카테고리, 재고 등 또 다른 엔티티와 관계가 있다. 그런데 객체는 참조(주소)를 사용해서 관계를 맺고 테이블은 외래 키를 사용해서 관계를 맺는다. 객체 매칭 관계에서 가장 어려운 부분이 바로 객체 연관관계와 테이블 연관관계를 매핑하는 일이다. 방향(Direction) : [단방향, 양방향]이 있다. 예를 들어 회원과 팀이 관계가 있을 때 회원 -> 팀 또는 팀 -> 회원 둘 중 한쪽만 참조하는 것을 단방향 관계라 하고, 회원 -> 팀, 팀 -> 회원 양쪽 모두 서로 참조하는 것을 양방향 관계라 한다. 방향을 객체관계에만 존재하고..
[DB] 데이터베이스 기초 개념
·
Study/DB
데이터베이스(Database, DB)란? 여러 사람이 공유할 목적으로 체계화해 통합, 관리하는 데이터의 집합 스프레드 시트와 기능은 거의 유사하지만 컴퓨터 언어로 제어가 가능하며 앱이나 웹을 통해 공유가 가능하여 전세계 누구나 데이터베이스 접근하고 편집이 가능하다는 장점이 있음. 데이터베이스의 특징 실시간 접근성(Real-Time Accessibility): 실시간 처리에 의한 응답이 가능해야 한다. 계속적인 변화(Continuous Evolution): 새로운 데이터의 삽입(Insert), 삭제(Delete), 갱신(Update)로 항상 최신의 데이터를 유지한다. 동시 공용(Concurrent Sharing): 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다. 내용에 의한 참조(Co..
[Java] 빠져나올 수 없는 null 처리의 늪 - 2
·
Study/WEB
null 관련 문제 돌아보기 이 전 포스팅의 예제 코드를 통해 살펴본 null과 관련된 문제들은 크게 2가지로 요약된다. 런타임에 NPE(NullPointerException)라는 예외를 발생시킬 수 있음 NPE 방어를 위해서 들어간 null 체크 로직 때문에 코드 가독성과 유지 보수성이 떨어짐 그냥 두자니 곳곳에 숨어서 일으켜 장애를 유발하고, 조치를 하자니 코드를 엉망으로 만드는 null, 어떻게 하면 조금 더 현명하게 다룰 수 있을까? 함수형 언어에서 그 해법을 찾다 스칼라나 하스켈과 같은 소위 함수형 언어들은 전혀 다른 방법으로 이 문제를 해결한다. 자바가 "존재하지 않는 값"을 표현하기 위해서 null을 사용했다면, 이 함수형 언어들은 "존재할지 안 할지 모르는 값"을 표현할 수 있는 별개의 타..
[Java] 빠져나올 수 없는 null 처리의 늪 - 1
·
Study/WEB
null이란? null 참조(null reference) 또는 null 포인터(null pointer)란 유효한 객체(Object)를 포인터(또는 참조) 하지 않고 있음을 가리키기 위한 저장된 값을 말한다. null은 왜 나쁜가? Ad-hoc(임시방편, 이것을 위해서만 만들어진) 에러 핸들링 객체를 받을 경우 항상 null인지 유효한 객체인지 체크해야 한다. 모호한 의도(또는 의미) 모호성을 없애려면 항상 실제 객체를 반환하거나, null 객체 반환 또는 exception을 던져야한다. 컴퓨터적 사고 vs 객체적 사고 - Hello, is it a software department? - 안녕하세요. 소프트웨어 부서인가요? - Yes. - 네. - Let me talk to your employee "J..
[Redis] Redis(레디스) 자료구조
·
Study/DB
Redis 데이터 타입 (Collection) Redisd의 장점 중 하나는 Key-value 스토리지에서 Value는 단순한 Object가 아니라 다양한 자료구조를 갖기 때문이다. String, Set, Sorted Set, Hash, List 등 다양한 타입을 지원한다. 이번 시간에는 각 레디스의 자료구조를 알아보고 자료구조를 이용하는 명령어(command)를 정리해보는 시간을 가져보겠다. Redis Collections 를 사용할 때 주의점 하나의 컬렉션에 너무 많은 아이템을 담으면 좋지 않다. 가능하면 10000개 이하의, 몇천개 수준의 데이터 셋을 유지하는게 Redis 성능에 영향을 주지 않는다. Redis - Strings 일반적인 문자열 값은 최대 512MB이며, String으로 될 수 있는..
[Spring] Spring Security란?
·
Study/Spring
대부분의 시스템에서는 회원의 관리를 하고 있고, 그에 따른 인증(Authentication)과 인가(Authorization)에 대한 처리를 해주어야 한다. Spring에서는 Spring Security라는 별도의 프레임워크에서 관련된 기능을 제공하고 있는데, 이번에는 Spring Security에 대해서 알아보도록 하겠다. 1. Spring Security란? [Spring Security란?] Spring Security는 Spring 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크이다. Spring Security는 ‘인증’과 ‘권한’에 대한 부분을 Filter 흐름에 따라 처리하고 있다. Filter는 Dispatcher Servelet으로 가기 전에 적용되므..
[JAVA] 예외 던지기(throw) & 예외 연결(Chained Exception)
·
Study/WEB
예외 던지기 예외 발생시키기 (throw) 만일 프로그램적으로 에러가 아니라도 로직상 개발자가 일부러 에러를 내서 로그에 기록하고 싶은 상황이 올 수 있다. 자바에서는 throw 키워드를 사용하여 강제로 예외를 발생시킬 수 있다. 원래는 프로그램이 알아서 에러를 탐지하고 처리 하였지만, 이번에는 사용자가 일부러 에러를 throw하여 에러를 catch 한다는 개념으로 보면 된다. 이 때 new 생성자로 예외 클래스를 초기화하여 던지는데, 이 클래스 생성자에 입력값을 주게 되면, catch의 getMessage() 메서드에서 출력할 메세지를 지정하게 된다. import java.util.Scanner; public class Main { public static void main(String[] args) ..
[WEB] HTTP Method
·
Study/WEB
HTTP Method GET 서버에게 Resource를 보내도록 요청하는데 사용 (서버의 Resource를 읽음) HEAD GET과 동일하지만 서버에서 Body를 Return 하지 않음 Resource를 받지 않고 오직 찾기만 원할 때 object가 존재할 경우 응답의 상태 코드를 확인할 때 서버의 응답 헤더를 봄으로써 Resource가 수정되었는지 확인 PUT 서버에 문서를 쓸 때 사용 (GET과 반대) PUT 메소드는 서버가 Client 요청의 Body를 확인한다. 요청된 URL에 정의된 새로운 Resource를 생성하기 위함 요청된 URL이 존재할 경우 대체하여 사용 POST Server에 Input Data를 보내기 위함 (HTML, form에 많이 사용) PUT vs POST PUT은 서버의 R..