분류 전체보기

Algorithm

[자료구조] 그래프(Graph)

그래프란? 그래프는 정점(Node, Vertex)와 간선(Edge)로 이루어진 자료구조이며, 방향성이 있는 방향 그래프(Directed Graph)와 방향성이 없는 무방향 그래프(Undirected Graph)로 나뉜다. 더불어 정점과 정점을 잇는 간선에는 가중치(Weight)가 존재할 수 있다. 트리(Tree)또한 그래프의 일종이지만, 그래프는 트리와 달리 정점마다 간선이 존재하지 않을 수 있으며, 루트, 부모, 자식 노드의 개념이 존재하지 않는다. 그래프 자료구조는 컴퓨터 네트워크, 교통 시스템, 소셜 미디어와 같은 다양한 현실 세계의 문제를 모델링하는데 사용된다. 그래프 관련 용어 정점(Node, Vertext) - 데이터를 나타냄 간선(Edge) - 두 정점의 관계를 나타냄 차수(Degree) -..

Algorithm

[알고리즘] DFS / BFS

DFS / BFS는 그래프 탐색 알고리즘중 하나 탐색이란 수 많은 데이터는 원하는 데이터를 찾는 과정 깊이 우선 탐색(DFS, Depth - First Search) - DFS는 그래프와 트리의 깊은 부분을 우선적으로 탐색하는 알고리즘 - 현재 정점(노드)에서 연결된 정점(노드) 하나를 골라 깊이 끝까지 탐색을 진행하며, 끝까지 진행한 경우 백트래킹을 하여 다음 노드로 탐색을 진행한다. - Stack 혹은 재귀 함수를 이용하여 구현한다. - 모든 정점을 방문할 때 유리하게 사용하며, 경우의수, 순열, 조합 문제에서 많이 사용한다. - 모든 정점을 방문할 필요가 없거나 최단 거리를 구하는 경우에는 너비 우선 탐색(BFS)가 유리하다. 장점 - 현 경로상의 노드들만 기억하므로, 저장공간 수요가 비교적 적다...

Spring

IntelliJ에서 Spring MVC 세팅하기

인텔리제이의 Add Framewrok Support를 이용해서 Spring MVC 설정하는 방법이 대부분이지만, Add Framework Support 기능이 정상 동작하지 않는 다수의 케이스를 위해 작성 Spring MVC 설정및 동작을 위한 최소한의 설정만 작성1. 프로젝트 생성 Maven Archetype 으로 새로운 프로젝트를 생성Archetype -> maven-archetypoe-webapp 설정 2. pom.xml 설정Maven Archetype으로 프로젝트를 생성하면, Spring 세팅이 되어 있지 않은 깡통 프로젝트이기 때문에 Spring MVC Dependency를 추가해줘야 한다. pom.xml에 Spring Web MVC Dependency 추가- Maven Repository 에서..

Spring

[Spring] Spring Boot 3 마이그레이션 시작하기

1. 이슈 사항2023년 11월 24일부로 Spring Boot 2.7.x 버전대의 지원이 종료를 끝으로 Spring Boot 2의 모든 지원 종료OSS 지원 종료에 따른 여러 불이익 발생으로 한샘 내에서도 기존 사용중인 Spring Boot 2의 버전업이 필요2. Spring Boot 2 지원 종료에 따른 영향start.spring.io 이용한 2.x 프로젝트 생성 불가패치/보안 업데이트 부족으로 인한 리스크 발생신규 라이브러리 추가시 호환성 문제 발생 가능성3. Spring Boot 3 변경 사항최소 JDK 버전 요구사항 - JDK 17 이상최소 Gradle 버전 요구 사항 - Gradle 7.5 이상최소 Maven 버전 요구 사항 - Maven 3.6.3 이상최소 Hibernate 버전 요구 사항 ..

Spring

[JPA] 일대다(1:N), 다대일(N:1) 관계

JPA의 일대다, 다대일 관계에 대해 알아보자. 일대다(1:N) 데이터베이스에서 일대다 관계는 굉장히 다양한 경우에 적용될 수 있다. 예를 들어, 장바구니와 담긴 상품, 교실과 학생, 게시판과 게시글 등이 있다. 이런 관계를 구현하기 위해 @OneToMany 어노테이션을 이용하여 다음과 같이 구현할 수 있다. 다음은 주문과 상품의 관계에 대한 일대다 양방향 관계를 나타낸 코드이다. @Entity public class Order { // ... @OneToMany(mappedBy = "order") private List products = new ArrayList(); // ... } @Entity public class Product { // ... @ManyToOne @JoinColumn(name ..

Spring

[JPA] 연관관계의 주인

JPA를 사용하며 알아야할 개념중 '연관관계의 주인'에 대해서 살펴보자. 연관관계의 주인이란? JPA에서 연관관계의 주인은 엔티티 간의 양방향 연관관계를 관리하는데 중요한 역할을 하는 개념이다. 양방향 연관관계란 두 개의 엔티티 클래스가 서로를 참조하고 있는 상태를 의미한다. 연관관계의 주인은 일반적으로 두 개의 연관관계 테이블중 외래키를 가지고 있는 테이블에 해당하는 엔티티가 연관관계의 주인이 된다. 연관관계의 주인을 엔티티간의 관계를 주도하고 관리하게 된다. 주인 엔티티의 필드를 사용하여 연관관계 간의 관계를 매핑하며, 이 필드는 데이터베이스 테이블에 반영된다. 더불어 연관관계의 주인이 아닌 엔티티는 읽기 전용(Read-Only) 엔티티로 사용되게 된다. 주인 엔티티가 데이터베이스에 영향을 미치기 때..

Computer Sience

[CS]경쟁 상태(Race Condition)과 교착 상태(Dead Lock)

경쟁 상태(Race Condtion) 이란? 경쟁 상태는 두 개 이상의 스레드 또는 프로세스가 공유 자원에 동시에 접근하고 수정을 시도할 때 발생 할 수 있는 문제이다. 즉 병행 프로그래밍 또는 동시성 프로그래밍 환경에서 발생하는 문제로써, 스레드 간의 실행 순서가 예상과 다를 경우 의도와 다른 결과가 발생하며 프로그램의 정확성과 안정성을 저해하는 결과 유발한다. 경쟁 상태가 발생하는 기본적인 원인은 다음과 같다. 1. 동시성 접근 : 여러 스레드 또는 프로세스가 동시에 공유자원(변수, 파일, 데이터베이스)에 접근하려 할 때 발생한다. 2. 비원자성(Non-atomic) 연산 : 공유 자원을 수정하는 연산이 원자적이지 않을 경우, 즉 여러 단계로 나눠서 수행되는 경우 발생할 수 있다. *원자적 : 수행 ..

Spring

[Spring] 서비스 운영간 발생한 DB Connection Closed 이슈

장애 발생 및 발견8월 24일 서버 정기점검이 이루어지던 새벽정기점검 대상이 아닌 서버의 특정 인스턴스에 인입된 요청들이 'SQLException : Connection Closed' 오류로 모두 500처리가 되는 이슈가 발생하였다. 24일 3시 43분에 처음 발생한 이슈는 오전 9시 45분에 이슈사항으로 확인되었고 전사에 전파 및 담당자인 나에게 전달되게 되었다.( 약 6시간의 장애 시간의 텀은 너무 부끄러운 장애대응이다.. ) 장애 대응오전 9시 45분, 전사 장애 대응 채널에 내이름이 멘션되어 호출되기 시작했고, 해당 시스템은 팀내에서 개발한것이 아닌 외주업체에서 관리하고 있었기에 담당 업체에 연락하여 원인 파악 및 조치를 요청하였다. 오전 10시 03분, 담당 외주 업체에서의 조치 이전에 인프라팀..

turtleDev
'분류 전체보기' 카테고리의 글 목록 (4 Page)