전체 글

모르는 내용 및 아는 내용 모두 꼼꼼히 복습하여 익숙해지는 그 날까지 꾸준히 공부하겠습니다.
Python/PYTHON

[python] 파이썬 소수 구하기, 에라토스테네스의 체 - 시간 복잡도 최적화

소수 구하기 - 에라토스테네스의 체 1부터 N까지의 수 중에서 소수를 찾으려고 할 때 모든 수를 2부터 N-1까지의 수로 나누어 결과를 찾으면 시간 초과에 걸릴 가능성이 높습니다. 소수 여부를 알 수 있는 대표적인 에라토스테네스의 체 방법을 이용해 시간 초과를 피할 수 있습니다. 2부터 N까지의 모든 자연수를 나열합니다. (1은 소수가 아님) 남은 수 중에서 아직 처리하지 않은 가장 작은 수 i를 찾습니다. (처음 i는 2) 남은 수 중에서 i의 배수를 모두 제거합니다. (i의 배수이므로 소수가 아님 / i는 제거하지 않음) 더 이상 반복할 수 없을 때까지 2와 3번을 반복합니다. n = 100 sosu = [True]*(n+1) # 초기에는 소수로 설정 # 에라토스테네스의 체 구현 for i in ra..

CS/Database

[DB] 데이터베이스의 원칙과 ACID, RDBMS와 NOSQL의 차이점 이해하기

데이터베이스의 기본 원칙과 RDBMS와 NoSQL 차이를 이해하여 프로젝트 유형에 따라 어느 데이터베이스를 고르는 것이 효율적인지 파악하고자 합니다. 데이터베이스의 원칙 무결성 : 데이터의 정보가 변경되거나 오염되지 않도록 하는 원칙 Accuracy 데이터에 오류가 없어야 합니다. 사용자가 저장하고자 하는 내용 모두가 잘 저장되어야 합니다. Consistency 데이터베이스는 일관성이어야 합니다. 안정성 오류 발생 시 회복력(복구력)이 좋아야 합니다. 고장이 잘 나지 않아야 합니다. 확장성 Scale Up - 서버 컴퓨터 기능 향상 하기 Scale Out - 여러 서버 분산하여 처리하기 Transaction 트랜잭션을 통해 작업의 완전성을 보장합니다. 사용자의 작업셋을 모두 완벽하게 처리하거나 처리하지 ..

Spring Framework/JPA

[JPA] Spring JPA 프록시 객체와 지연로딩이란 무엇인가, 사용하는 이유

지연로딩(LAZY Loading)이란 : 지연로딩은 연관된 엔티티를 실제로 사용할 때까지 데이터베이스에서 로딩을 지연시키는 기법입니다. 예를 들어 엔티티 A와 B가 일대다 관계를 가지고 있을 때, A 엔티티를 조회하더라도 B 엔티티를 바로 로딩하지 않고, 실제로 B엔티티의 내용이 필요한 시점에 해당 엔티티를 데이터베이스에 가져오는 방식입니다. 지연로딩의 장점 및 사용하는 이유 : 불필요한 데이터를 미리 로딩하지 않아 메모리를 절약하고, 성능 향상을 이룰 수 있습니다. 주의할 점 지연로딩을 사용하면서 영속성 컨텍스트가 유지되는 시점에서 연관된 엔티티를 로딩하지 않고 사용하려고 할 때, LazyInitializaionException이 발생할 수 있습니다. 영속성 컨텍스트가 사라질 경우, Proxy 엔티티를..

Algorithm/Boj

[BOJ] 백준 5430 파이썬 - 바킹독 문제 풀이

문제 에러 코드 from collections import deque t = int(input()) # 테스트 케이스 개수 for i in range(t): p = input() # 수행할 함수 n = int(input()) # 배열의 개수 arr = input() # 배열 # '[', ']', ',' 특수 문자 제거 후 자료형 변환 num = deque(arr.split('[')[1].split(']')[0].split(',')) if num[0]=='': print('error') break for i in p: if i == 'R': num.reverse() elif i =='D': if len(num) == 0: print('error') break else: num.popleft() if num..

Algorithm/Boj

백준 1021 파이썬 풀이 - 바킹독 파이썬 문제 풀이

문제 0번째에 위치한 인덱스가 우리가 찾고 있는 숫자이면 삭제 및 출력한다. 우리가 찾는 인덱스가 아닌 경우 왼쪽으로 이동하거나 오른쪽으로 이동시켜 큐의 위치를 변경한다. 양쪽으로 입력과 출력이 일어나므로 덱의 자료구조인 deque를 사용하면 좋습니다. 코드 from collections import deque import sys input = sys.stdin.readline n, m = map(int, input().split()) # 큐의 크기 n 과 뽑으려는 숫자의 개수 m pos = list(map(int, input().split())) # 뽑아내려고 하는 수의 위치 q = deque(i for i in range(1, n+1)) # 큐 설정 cnt = 0 # 카운트 변수 for i in po..

Spring Framework/JPA

[JPA] Spring-JPA 엔티티 값 Update 하기 - save(), 더티체킹(Dirty Checking - set())

JPA를 이용해 update를 구현하는 방법에 대해 설명하고자 합니다. (1) Spring JPA DATA를 이용해 save() 함수에 엔티티의 id값이 담겨있고 엔티티의 변경된 값이 있으면 save() 함수를 통해 업데이트를 할 수 있습니다. 하지만 save() 함수를 통해 모든 값을 변경하지 않고 업데이트하는 경우 변경한 값을 제외한 값들은 null 처리가 되어 업데이트되는 오류가 생길 수 있습니다. (2) 모든 값을 변경하지 않는 경우 변경 감지(더티 체킹)을 통해 업데이트를 할 수 있습니다. 1. save() 를 통해 기존의 엔티티 값 수정하기 엔티티의 모든 속성값을 변경해 주어야 오류가 생기지 않습니다. // 기존 엔티티 조회 후 수정 EntityA existingEntity = reposito..

Spring Framework/Spring boot

[Springboot] 스프링 JPA를 사용하여 페이징 처리하기 - @PageableDefault, pageable

1. @PageableDefault() 사용하여 페이징 처리하기 여러 개의 리스트를 한 번에 보여주지 않고, 정해진 개수로 페이징 처리할 때 @PageableDefault() 어노테이션을 사용하면 쉽게 처리할 수 있습니다. Service 클래스 @Transactional(readOnly = true) public Page BoardList(Pageable pageable) { return postsRepository.findAll(pageable); } 우리는 JpaRepository를 상속받은 Repository의 findAll 함수를 사용하여 파라미터로 Pageable 객체를 넣어주면 간단하게 페이징 기능을 구현할 수 있습니다. Page 를 타입으로 지정하면, 반드시 파라미터로 Pageable 객체를..

Spring Framework/Spring boot

[Springboot] 스프링 시큐리티 @AuthenticationPrincipal로 로그인 정보 전달하기, sec:authorize 사용하기

1. @AuthenticationPrincipal 어노테이션이란 무엇인가? 스프링 시큐리티를 사용하여 사용자 인증을 처리하고 있는 경우, @AuthenticationPrincipal 어노테이션을 통해 현재 인증된(로그인된) 사용자의 정보를 편리하게 가져와 사용할 수 있습니다. @AuthenticationPrincipal은 스프링 프레임워크에서 사용되는 어노테이션 중 하나로, 사용자 인증 정보를 주입받기 위해 사용합니다. 주로 웹 애플리케이션에서 인증된(로그인한) 사용자의 정보를 Controller이나 Service 클래스에서 접근하고 활용하는 데 사용됩니다. @AuthenticationPrincipal을 통해 매번 인증된 사용자의 정보를 DB에 접근해서 데이터를 가져오는 것을 막을 수 있습니다. 한 번 ..

kylo
오늘도 열심히 - BE