분류 전체보기 149

[삼성 SW expert Academy] 14178. 1차원 정원_JAVA

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AX8BAN1qTwoDFARO range를 D*2+1로 구해줍니다. 전체 코드 import java.util.Scanner; import java.io.FileInputStream; import java.io.*; import java.util.*; class Solution { public static void main(String args[]) throws Exception { Scanner sc = new Scanner(System.in); int T; T=sc.nextInt(); for(int test_case = 1; test_case

[디자인패턴] 싱글톤(Singleton) 패턴

싱글톤 (Singleton) 패턴 싱글톤 패턴 인스턴스를 오직 하나만을 생성하여 글로벌하게 환경설정이나 시스템 런타임등에 사용한다. 간단한 싱글톤 코드 생성자를 private로 설정을 해주면 사용할때 new로 만들기가 불가능하다. static 으로 getInstance를 만든 이유는 글로벌하게 접근을 하기 위해서 사용을 한다. public class Settings { private static Settings instance; private Settings() { } public static Settings getInstance() { if (instance == null) { instance = new Settings(); } return instance; } } 위에 코드는 멀티 쓰레드 환경에서는 ..

디자인 패턴 2022.04.10

[디자인패턴] 팩토리(Factory)패턴

팩토리 메서드란 팩토리 메소드 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 서브클래스에게 맡길수 있다. 자주 변화가 있는 부분을 밖으로 빼낸다. 팩토리메서드의 장점 기존의 인스턴스를 만든는 코드를 변경하지 않고 같은 류의 새로운 인스턴스를 생성 또는 확장이 가능하다.(OOP의 5대원칙중 하나인 개방 폐쇄 원칙 (Open-Closed Principle, OCP)를 만족하게 한다.) 느슨한 결합을 만들수 있다. 팩토리 메서드의 단점 역할분담을 위해서 클래스가 많아진다. 기존의 코드 기존의 팩토리 코드 public class ShipFactory { //새로운 기능을 넣을려면 코드가 고쳐져야한다. 변경에 닫혀져있는 객체지향의 원치 위반 만들어지는 과정이 이리저리 산만해서 코드 가독성이 떨어진다. publi..

디자인 패턴 2022.04.08

[디자인패턴] 빌더(Builder)패턴

빌더패턴이란 첫번째 점층적 생성자 패턴 public class User { private int userIdx; // 선택 private String name; // 필수 private String part; // 필수 private int age; // 선택 private String email; // 선택 } 여러개의 생성자를 따로 만들어야 한다. 지저분해지고 복잡해지는 단점이 있다. public class User { private int userIdx; private String name; private String part; private int age; private String email; //만약 필드값이 더 많아지면 경우의 수는 더욱더 많아 질것이다. public User(String n..

디자인 패턴 2022.04.08

[spring] 위도 경도를 받아서 Point형으로 db에 저장하기(Mysql 위치데이터)

현재 프로젝트를 하던중에 위치서비스를 구현하려고 프론트에서 현재 사용자의 위치정보를 보내면 db에 저장을 하는 로직이 있습니다. 위치정보는 처음 다뤄보는경우이기 떄문에 먼저 리엑트네이티브에서 어떤식으로 보내는지를 살펴보았습니다. Geolocation.getCurrentPosition함수를 사용하면 { coords: { accuracy:5, altitude:0, altitudeAccuracy:-1, heading:-1, latitude:37.55, longitude:127.0165, speed:-1,} ,timestamp:1597336350546.098, } 이런식으로 결과값을 보내는것을 확인하고 그럼 프론트에서 는 위도,경도만 파싱후에 보내줄거라고 생각을 했습니다. @Data public class Ca..

Spring Boot 2022.03.20

[DB] 파티셔닝

파티셔닝 큰 데이터 셋을 여러 개로 나누는 것 데이터 규모가 대용량화되며 용량의 한계와 성능의 저하에 따른 보완 방법 데이터베이스를 분산 처리해 성능 저하를 막는다. 장점 성능: 쿼리 성능 향상, 대용량 WRITE 환경, 데이터 Access 범위를 줄여 성능 향상 가용성: 데이터 훼손 가능성이 줄고 가용성이 좋아짐, 독립적으로 백업 및 복구가 가능 관리 용이 단점 나눠진 테이블에 대한 JOIN에 대한 비용 증가 파티셔닝의 종류 수평 파티셔닝 - 샤딩 수직 파티셔닝 - 테이블에서 큰 데이터를 가지는 컬럼만 따로 빼는 방식 파티셔닝을 할때 테이블이 2GB 이상일때 History Table처럼 write만 하는 경우 또는 write가 필요없는 데이터가 있는 경우 파티셔닝 분할 기준 4가지 범위 분할: prod..

[DB] 트랜잭션 격리수준

트랜잭션 격리 수준 트랜잭션 격리 수준 동시에 여러 트랜잭션이 처리될 때, 다른 트랜잭션에서 변경하거나 조회한 데이터를 볼 수 있도록 허용 여부를 결정하는 것 격리 수준이 필요한 이유 데이터 베이스는 ACID 특징과 같이 독립적인 수행을 해야합니다. 그래서 아예 접근이 불가능게 하면 독립적인 수행을 할수 있지만 성능은 떨어지게 되고 접근을 느슨하게 하면 잘못된 값 처리가 될수 있습니다. 따라서 최대한 효율적인 잠구기(Locking)가 필요하다. 트랜잭션 격리 수준의 종류 READ UNCOMMITTED(1단계) READ COMMITTED(2단계) REPEATABLE READ(3단계) SELIALIZABLE(4단계) 아래로 갈수록 고립도가 올라가고 성능이 떨어집니다. READ UNCOMMITTED (트렌젝션..

[DB] 클러스터링

클러스터링 여러 개 DB를 수평적인 구조로 구축하는 방식 분산 환경 구성으로 Single Point Of Failure 문제를 해결하는 FailOver(장애 대응) 시스템을 구축하기 위해 사용 동기 방식으로 노드 간 데이터 동기화 클러스터링 처리 방식 쓰기 트랜잭션 수행 후 커밋 실행 디스크에 쓰기 전에 다른 노드에 데이터 복제 요청 확인 메시지가 오면 디스크에 쓰기 시작 및 저장 장점 데이터 정합성을 높일 수 있다. 노드가 죽어도 장애 없이 운영 가능 단점 노드 간 데이터 동기화가 필요 → 쓰기 성능이 Replication에 비해 좋지 못함 장애 전파 시 처리가 어렵고 데이터 동기화때문에 스케일링 한계가 있다. 레플리케이션과 클러스터링의 차이? 레플리케이션은 Master-Slave 클러스터링은 수평적인 구

[DB] 정규화

정규화 정규화란? 여러 규칙을 사용해 데이터베이스를 완벽하게(이상현상 없게) 설계하는 방법이고 이를 통해 데이터베이스에 저장된 데이터의 무결성을 향상시키고 저장공간을 절약 합니다. 정규화 방법은 문제가 있는 테이블은 문제가 없는 작은 테이블로 쪼개는 방법입니다. 나누는 정도에 따라 규칙(제약조건)이 있고 그 정도를 정규형(Normal Form)이라고 부른다. 정규형은 1NF, 2NF, 3NF, BCNF, 4NF, 5NF, 6NF가 있는데 차수가 높아질수록 규칙(제약조건)이 까다로워진다. (정보처리기사 대비용으로 도부이결다조 (두부이겨다줘) 일반적으로는 1~3NF(또는 ~BCNF)까지만 사용하고 나머지 정규형은 학문적 용도(전공, 수업, 논문 등)로 사용된다. 1차 정규화 테이블(릴레이션)에 각 도메인은 ..