2024/09 9

[JPA] 다대일(N:1) 단방향 VS 양방향 정리

사이드 프로젝트로 게시판 만들기를 하고 있었는데, 게시글과 회원 엔티티를 N:1 단방향으로 해야할 지, 양방향으로 해야할 지 고민을 하다가 정리한 내용이다. (인프런 김영한 강사님 강의 질문 게시글의 내용을 일부 포함하고 있다) 게시글에서는 회원이 필요함. 기본적으로 글을 작성할 때 회원의 id가 필요하고, 이름이 필요할 수도 있음 회원에서는 게시글 엔티티가 필요할까?:  회원이 작성한 글을 조회할 때는 게시글 엔티티를 리스트로 가지고 조회할 수도 있고, 쿼리(em.find)를 날려서 조회할 수도 있다.(게시글에 있는 member를 조회)전자는 양방향이고, 후자는 단방향에 해당한다. 단방향을 사용해야 하는 이유 1)회원이 갑자기 뜬금없이 게시글 id를 참조하는 경우가 있을까? 게시글에 존재하는 다른 필드..

Spring/JPA 2024.09.29

[JPA] JPA 개발 - 도메인 분석 및 설계

JPA 개발 - 도메인 분석 및 설계#Spring/DB/JPA요구사항 분석먼저 기능 목록을 작성해보자회원 기능회원 등록회원 조회 상품 기능상품 등록상품 수정상품 조회주문 기능상품 주문주문 내역 조회주문 취소기타 요구사항상품은 재고 관리가 필요하다.상품의 종류는 도서, 음반, 영화가 있다.상품을 카테고리로 구분할 수 있다.상품 주문시 배송 정보를 입력할 수 있다.도메인 모델과 테이블 설계회원 - 주문 - 상품회원은 여러 상품을 주문할 수 있다. 한 번 주문할 때 상품을 여러 상품을 선택할 수 있고, 하나의 상품이 여러 주문에 포함될 수 있으므로 주문과 상품은 다대다 관계이다.하지만 이런 다대다 관계는 RDB 뿐만 아니라 엔티티에서도 거의 사용하지 않으므로 주문상품이라는 엔티티를 추가해서 일대다 + 다대일 ..

Spring/JPA 2024.09.29

[PLT/프로그래밍언어론] Programming Language Principles

Programming Language Principles#PLTComputers and Turing MachineWhat is a Computer?이 강의에서는 PL을 중점으로 다룰 예정이다.우리는 프로그래밍 언어의 크리에이터가 된다고 생각하자.PL을 디자인할 때, 컴퓨터에서 프로그램이 동작하도록 하기 위해 많은 것들을 고려해야 하고, 우리는 이 부분을 중점으로 학습한다.PL의 관점에서 컴퓨터란 무엇인가요?프로그래밍 언어는 결국 컴퓨터에서 실행됩니다.프로그래밍 언어를 설계하거나 프로그래밍 언어로 프로그램을 개발하려면 ➞ 컴퓨터가 어떻게 작동하는지 이해해야 합니다.이 질문을 들으면 컴퓨터에 대한 다양한 이미지가 떠오를 수 있습니다.이번 주 강의에서는 이 질문에 대해 좀 더 이론적으로 살펴볼 것입니다.강의가..

[BOJ/백준] 1086번. 박성원 - C++[cpp]

문제 접근만약 Bruete Force한 접근 방식으로 모든 경우를 다 구한다고 하면 O(n!)로 주어진 시간 내에 해결이 불가능하다.어떻게 접근해야 할 지 잘 모르겠지만 분명 매 케이스마다 나머지를 하고 있으면 매우 많은 연산 시간이 필요하다는 것 정도는 알 수 있다. (문자열의 최대 길이가 50이기 때문에 특정 상태에서 나머지를 구할 때 해당 문자열 처음부터 끝까지 나머지를 계산하는 것 또한 매우 비효율적이다.) 따라서 먼저, 각 문자열의 수를 k로 나눈 나머지를 미리 기록해두자int cachestr[16];// 주어진 문자열과 제수(divisor)를 입력받아 나머지를 반환해주는 함수int mod(const string &s, const int divisor) { int result = 0; ..

PS/BOJ 2024.09.07

[Linear Algebra] Gaussian Elimination(가우스 소거법)

Gaussian Elimination(가우스 소거법)많이 사용되는 기본적인 파트이므로 꼼꼼히 보자.사다리꼴 (Echelon Forms)이전 챕터 예제에서 x, y, z의 solution을 구할 때 위와 같은 형태로 만들어 구했던 것을 기억할 것이다. 이러한 형태를 가지기 위해서는 다음 4가지 성질을 만족해야 한다.만약 행이 모두 0이 아닌 경우, 그 행에서 첫 번째로 0이 아닌 수는 1이어야 합니다. 이를 선도 1 (leading 1)이라고 부릅니다.모든 요소가 0인 행이 있으면, 그것들은 행렬의 맨 밑으로 내려가야 한다.모두 0이 아닌 두 연속된 행에서, 하위 행의 선도 1(leading 1)은 상위 행의 선도 1보다 오른쪽에 있어야 한다.선도 1이 포함된 각 열은 그 열의 다른 모든 요소가 0이어야 ..

Math/Linear Algebra 2024.09.07

[Linear Algebra] Linear Equation (선형 방정식)

Systems of Linear Equations and Matrices선형 방정식과 행렬 체계에 대해 배운다Linear Equation(선형 방정식)선형 방정식은 2차원에서는 직선으로, 3차원에서는 평면으로 나타난다.b = 0인 경우 homogeneous linear equation(동차 선형 방정식)이라고 부른다.예시선형 방정식은 변수의 곱이나 루트를 포함하지 않는다. 모든 변수는 1차 형태로만 나타난다.위와 같은 방정식은 선형 방정식이 아니다.Linear System(선형 시스템, 선형 계)유한 개의 선형 방정식으로 이루어진 집합을 system of linear equation, 줄여서 linear system이라고 한다. 변수들은 미지수(unknowns)라고 불린다.미지수 x1, x2, … x..

Math/Linear Algebra 2024.09.07

[AI/Concepts] Introductions of AI

Introductions of AI인류는 인간이 어떻게 생각하고 행동하는지 이해하려고 노력해왔고, 이제는 다양한 상황에 효과적으로 행동하는 기계와 같은 entitiy를 구축해나가고 있다.AI는 인간의 능력에 충실하고 + 합리적인 엔티티라고 요약할 수 있다.Approaches to AIAI는 크게 두 가지 차원에서 정의되었다. 사고와 행동이다. 그리고 이러한 사고와 행동이 인간과 같은지, 아니면 합리적인지에 따라 분류하여 역사적으로 4가지의 AI 접근 방식이 있어왔다.Acting Humanly(인간처럼 행동)Acting Rationally(합리적으로 행동)Thinking Humanly(인간처럼 생각)Thinking Rationally(합리적으로 생각)Acting Humanly인간처럼 지능적으로 행동하는 기..

AI/Concepts 2024.09.06