본문 바로가기
얕은복사/깊은복사, 스택/힙, 가비지컬렉션 https://zzang9ha.tistory.com/372 스택/힙스택은 정적 메모리 할당에 사용되며, 컴파일 시간에 크기가 결정됩니다. 함수 호출과 함께 로컬 변수가 저장되는 곳으로,함수가 종료되면 할당된 메모리가 자동으로 해제됩니다. 반면, 힙은 동적 메모리 할당에 사용되며, 프로그램 실행 중에 메모리 크기가 결정됩니다. 힙에 할당된 메모리는 개발자가 직접 관리해야 하며, 사용이 끝난 메모리는 명시적으로 해제해야 합니다  또한, 스택은 속도가 빠르고 메모리 관리가 간단하지만, 크기에 제한이 있습니다. 힙은 메모리 크기가 유동적이지만, 메모리 누수와 같은 문제를 주의해야 합니다.더보기1. 스택(Stack) 사용 예제스택은 함수 호출 시 로컬 변수를 저장하는 공간입니다. 자동으로 할당 및 해제되며, LI.. 2025. 2. 20.
Delivery프로젝트_5. (Trouble Shooting) JPA 연관관계 (단방향, 양방향) 단방향과 양방향의 개념적인 건 이해는 간다.https://hoestory.tistory.com/28  둘의 차이는 무엇이고 어떤 주의점이 있는지 정리해보자. ex) 음식점(일)과 리뷰(다)의 관계에서 시나리오에 따라 단방향과 양방향으로 나눌 수 있다.양방향 >> 음식점 상세페이지에서 리뷰를 조회할경우 , 리뷰가 많을 경우단방향>> 리뷰목록을 자주 보여줄 것인가 단방향일경우 리뷰(다)에서만 설정해주면 된다.양방향일경우 음식점, 리뷰 테이블 둘다 설정이 필요해서 조금 복잡하다. 리뷰 @ManyToOne @JoinColumn(name = "store_id", nullable = false) private Store store; public void setStore(Store store) { .. 2025. 2. 20.
Delivery프로젝트_6. 단위테스트와 통합테스트 단위 테스트(Unit Test)란?단위 테스트는 소프트웨어 개발 과정에서 가장 작은 단위의 코드, 예를 들어 함수나 메서드 등을 대상으로 하는 테스트입니다. 단위 테스트의 목적은 각 단위가 개별적으로 정상적으로 동작하는지 확인하는 것입니다.단위 테스트는 일반적으로 개발자에 의해 작성되며, 테스트 프레임워크를 사용하여 자동화됩니다. 예를 들어, Java에서는 JUnit, Python에서는 PyTest와 같은 테스트 프레임워크를 사용할 수 있습니다.단위 테스트는 빠르게 실행되며, 개발 초기 단계에서 버그를 발견하고 수정하는 데 매우 효과적입니다. 왜냐하면 단위 테스트는 소프트웨어의 작은 부분만을 대상으로 하기 때문에, 버그의 원인을 빠르게 파악할 수 있습니다.또한, 단위 테스트는 코드의 변경이 다른 부분에 .. 2025. 2. 19.
Delivery프로젝트_5.(Trouble Shooting)AOP/프록시객체/Lazy Loading 문제의 코드 @Transactional public Qna createQna(QnaRequestDto qnaRequestDto) { String answer = fetchAiAnswer(qnaRequestDto.getQuestion()); qnaRequestDto.setAnswer(answer); Store store = findStoreById(qnaRequestDto.getStoreId()); return saveQna(qnaRequestDto, store); }  문제없이 돌아갔었는데 마지막으로 테스트 해보려하니 갑자기 에러가 남. 디버깅을 하니 save를 할때 AopUtils??  invokeJoinpointUsingReflection() 로 빠졌다. 팀원의 도움을 받아.. 2025. 2. 18.
Delivery프로젝트_4. HttpClient (feat. API_test) https://velog.io/@ydh5017/Intellij-http-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8 Intellij http 클라이언트Intellij IDEA에서 제공하는 플러그인으로 Restful 및 GraphQL, WebSocket 웹 서비스 내에서 파일을 생성하여 HTTP를 직접 요청하고 실행하여 응답 받을 수 있도록 하는 API 테스트를 지원하는 플러그인으로 pvelog.io postman과 같은 api플랫폼 대신 우리조는 httpClient plugin을 사용하여 진행하기로 하였다.  빠르게 관련 테스트를 진행할 수 있어 좋았다. 특히 User의 토큰도 쉽게 붙여넣기 할 수 있어 좋았다. 2025. 2. 17.
Delivery프로젝트_3. 어노테이션을 만든다고? 팀플을 하며 총괄을 담당하는 조장님이 공통 설정부분을 이야기하면서 어노테이션을 만든다고 했다. 어노테이션은 제공되는거라고만 생각했는데.. 어노테이션이란?어노테이션은 다른 프로그램에게 유용한 정보를 제공하기 위해 사용되는 것으로 주석과 같은 의미를 가진다.어노테이션의 역할컴파일러에게 문법 에러를 체크하도록 정보를 제공한다.프로그램을 빌드할 때 코드를 자동으로 생성할 수 있도록 정보를 제공한다.런타임에 특정 기능을 실행하도록 정보를 제공한다.어노테이션은 @를 사용하여 작성하며, 해당 타겟에 대한 동작을 수행하는 프로그램 외에는 다른 프로그램에게 영향을 주지 않는다.  어노테이션의 종류어노테이션은 크게 세 가지로 구분된다. - 자바에서 기본적으로 제공하는 표준 어노테이션- 어노테이션을 정의하는 데 사용되는 메.. 2025. 2. 14.
Delivery프로젝트_2. (TroubleShooting)컨벤션 코딩 컨벤션이란?코드를 어떻게 작성할 지 규칙을 정하는 것을 말한다. 간단한 정의이지만 막상 범위가 방대해 어디서부터 진행할지 막막한 느낌이었다.  먼저 튜터님 자료를 정리해보자.  https://github.com/etuhcarap/conventions-tutorial/wiki/Conventions ConventionsContribute to etuhcarap/conventions-tutorial development by creating an account on GitHub.github.com https://velog.io/@inwoo920/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%EC%83%9D%ED%99%9C-%EC%B2%B4%EC%A1%B0-9%EA%B0%80%EC%A.. 2025. 2. 13.
Delivery프로젝트_1. Starting Assignments작성 https://teamsparta.notion.site/Ch-1-AI-1972dc3ef5148001b0f9e30b0a25c114  프로젝트 개요주제: 배달 및 포장 음식 주문 관리 플랫폼 개발목표: 광화문 근처에서 운영될 음식점들의 배달 및 포장 주문 관리, 결제, 그리고 주문 내역 관리 기능을 제공하는 플랫폼 개발 API명세서, 테이블 명세서, ERD명세서, 인프라설계서를 작성하여 전체적인 프로젝트 설계를 하였다. 대략적인 요구사항을 이해하기 위해  간단한 도표를 이용해 필요 테이블과 속성들을 작성하여 의견을 나누었다.>> 처음에는 어떠한 순서나 진행과정이 없는 것 같아 혼란스러웠지만 첫 스타트를 끊고나니     아웃라인이 잡혔고 각 역할을 정해 바로 진행할 수 있었다. 대략적인 아웃라인을 잡고 튜터님.. 2025. 2. 12.
Garbage Collection (1) Java 메모리 구조 이해Heap과 Stack의 차이   - https://www.youtube.com/watch?v=WnwGIsKedpgYoung Generation, Old Generation, Metaspace의 역할Minor GC, Major GC, Full GC의 개념더보기Java의 GC 종류 – Minor GC, Major GC, Full GC 차이점 정리JVM의 가비지 컬렉션(GC)은 객체를 효율적으로 관리하고 메모리를 최적화하는 중요한 역할을 합니다.GC는 Minor GC, Major GC, Full GC로 나뉘며, 각각 다른 영역에서 동작합니다.1. JVM Heap 구조먼저, GC가 동작하는 메모리 구조를 이해해야 합니다.markdown복사편집┌────────────────────.. 2025. 1. 31.
3)SQL수행구조 - 2. SQL 처리 과정 1. 구조적, 집합적, 선언적 질의 언어오라클은 PL/SQL  , SQLServer T-SQL처럼 절차적 프로그래밍 기능을 구현할 수 있는 확장 언어도 제공하지만,SQL은 기본적으로 구조적,집합적,선언적 질의 언어.결과는 구조적 집합적이지만 만드는 과정은 절차적이다.>> 그런 프로시저를 만들어네는 DBMS내부 엔진이 바로 SQL 옵티마이저.2. SQL처리 과정3. SQL옵티마이저:사용자가 원하는 작업을 가장 효율적으로 수행할 수 있는 최적의 데이터 엑세스 경로를 선택해 주는 DBMS의 핵심 엔진.최적화단계1. 후보군이 될만한 실행계획 찾기2. 데이터 딕셔너리에 미리 수집해둔 오브젝트 통계 및 시스템 통계정보를 이용해 각 실행계획의 예상비용 산정3. 최저 비용을 나타내는 실행계획 선택4. 실행계획과 비용5.. 2025. 1. 15.