ssung_항해일지/항해99_실전 프로젝트 24

실전 프로젝트 - 20일차

멀티 프로세스와 멀티 스레드 멀티 프로세스 멀티 프로세스는 하나의 프로그램을 여러 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하는 환경이다. 프로세스는 하나의 운영체제로부터 CPU시간, 주소공간, 독립된 메모리 영역(code, data, stack, heap)을 할당 받는다. 각 프로세스는 독립된 주소 공간에서 실행되어 다른 프로세스의 주소 공간에 접근할 수 없다. (독립적) 각 프로세스 간 IPC(Inter-Process-Communucation)를 사용해 데이터를 주고 받는다. 하나의 프로세스가 잘못 되어도 프로그램은 동작한다. 브라우저 중 크롬 브라우저가 멀티 프로세스로 동작한다. 장점 독립된 구조이기에 안정성이 높다 한 프로세스가 죽어도 다른 프로세스가 영향을 받지 않는다. 대신 느려질 ..

실전 프로젝트 - 18일차

오늘의 문제는 데이터 검색 시 공백 (띄어쓰기 2칸) 입력 방지와 keyword가 없으면 검색이 불가능하게 해야했던 것! 오래간만에, 프로젝트 초기의 느낌으로 돌아가 HTML을 만져야했다. 공백 검색의 이유는 공백 검색 시 에러가 발생하는 이유 때문에 공백 검색을 막아줘야했다. 코드 수정으로 바로 들어가보자. 기존 input 코드에서 style 뒤에 onkeyup과 onchange을 입력해준다. js를 사용해 function 을 생성해준다. function noSpaceForm(obj) { let str_space = /\s{2}/; // 공백 2칸 체크 if (str_space.exec(obj.value)) { alert("공백을 사용할 수 없습니다."); obj.focus(); obj.value = ..

실전 프로젝트 - 17일차

커버링 인덱스(Covering index) & 복합 인덱스 Prac Test_1 복합인덱스는 카디널리티가 낮은 순으로 인덱스 생성 커버링 인덱스 적용 X select * from book where title = '가나' group by category, babyCategory, title; 3회 test 평균 = 1m 24s... Test_2 복합인덱스는 카디널리티가 낮은 순으로 인덱스 생성 커버링 인덱스 적용 O select category, babyCategory, title from book where title = '가나' group by category, babyCategory, title; 3회 test 평균 = 24s... Test_1에 비해 검색 성능 약 3.3배 향상 Test_3 복합인..

실전 프로젝트 - 15일차

1. .CSV insert 시 id mapped by => inventory 해당 오류는 DB에 데이터를 넣는데 계속 오류가 발생하면서 데이터 주입이 안됌 몇시간을 혼자서 하다가 포기하고 자버림. 아침에 팀원들한테 물어보니..ㅋㅋㅋㅋ 정말 간단한 문제였음 id 컬럼에 mapped by 선택 부분이 inventory로 설정되서 데이터 주입시 오류가 발생 했던것.. 표시된 부분을 빈칸으로 두고 Auto inc 부분을 체크해주면 된다(원래는 체크 안되어있음) 정상적으로 데이터가 원활하게 들어감. 2. 데이터 불러오기 오류(main page 불러오기 실패) => Table name 매칭 x 해당 오류는 DB 테이블에 이름이 안맞아서 발생했던 오류.. 이것도 안되서 끙끙 앓다가 팀원들 호출.. 1번 상황과 똑같은..

실전 프로젝트 - 14일차

JMeter where = 조건절 기존 sql는 string이여서 넣고빼기가 힘듦 Jmeter 정리 Apache JMeter는 서버가 제공하는 성능 및 부하를 측정하는 테스트 도구 순수 Java 어플리케이션 오픈소스로 서버나 네트워크 또는 개체에 대해 과부하를 시뮬레이션 하여 강도를 테스트 하거나 다양한 부하 유형에서 전체 성능을 분석 특징 - 다양한 프로토콜/서버를 테스트 가능 웹(HTTP/HTTPS) SOAP/REST 웹 서비스 FTP 데이터베이스 Mail... - CLI 지원 CI CD 툴과 연동할 때 편리 UI를 사용하는것 보다 메모리 등 시스템 리소스를 적게 사용 성능 테스트 자동화 가능 - 시나리오 기반 테스트 가능 - 다양한 외부 플러그인 사용하여 기능 확장 가능 주요개념 - Thread G..

실전 프로젝트 - 13일차

DB에 데이터를 1000만개 넣고 main 페이지를 띄웠을 때, 데이터 양이 너무 많다보니페이지 로딩 시간이 40초 이상 걸렸다. 원인은 메인페이지에서 보여지는 데이터 양이 DB의 모든 데이터를 가지고와서 보여줬기 때문 해결 방법은 1000만 건의 데이터 중 몇 개만 random으로 가져와 보여줘야 했다 내가 생각한 방법은 DB에 random 쿼리를 날려서 랜덤으로 8개만 가지고 오려고 했다.@Query (value = "select * from {Table} order by RAND() limit 8", nativeQuery = true)List findAll();해당 쿼리를 작성하여 테스트를 해본 결과 그래도 시간은 꽤 오래 걸린다.. 방법을 찾다가 팀원에게 도움을 요청했다. 몇시간동안 해결하지 못했..

실전 프로젝트 - 12일차

// JPQL public List findAllByString(OrderSearch orderSearch) { String jpql = "select o From Order o join o.member m"; boolean isFirstCondition = true; //주문 상태 검색 if (orderSearch.getOrderStatus() != null) { if (isFirstCondition) { jpql += " where"; isFirstCondition = false; } else { jpql += " and"; } jpql += " o.status = :status"; } //회원 이름 검색 if (StringUtils.hasText(orderSearch.getMemberName()))..

실전 프로젝트 - 11일차

무작정 Query Dsl 따라하기 (with. Test mode) 1. Repository 생성하기 public interface TestBookRepository extends JpaRepository{ } 2. CustomRepository 생성하기 (QueryDsl 메소드 추가 용도) public interface TestBookRepositoryCustom { // QueryDsl 용 메소드를 추가할 것임 } 3. CustomRepository 구현체 생성 public interface TestBookRepositoryCustom { // QueryDsl 용 메소드를 추가할 것임 } 4. CutomRepository 생성에 따른 BookRepository에 상속시켜줌 public interface..

실전 프로젝트 - 9일차

메인 페이지에 책에 대한 정보를 표출해 주어야하는 과정에서 원했던 방식은 랜덤하게 몇 개만 DB에서 가지고 와서 프론트에 표출해주는 것이었는데, 머리로는 어떻게 하면 되겠다 라는 생각을 했지만 구현하지 못했다. 생각했던 방향은 컨트롤러에서 main 페이지를 호출해주고 service 에서 메소드를 실행하면, repository를 통해 책의 id 를 가지고 온 뒤 랜덤하게 반환해주고, 그 반환된 id 를 가지고 타임리프를 통해 원하는 값을 매칭해주면 되겠다! 였는데 막상 들어가서 해보려니 아무것도 하지못했다. (추후에 꼭 다시 해봐야겠다.) 결국 이것저것 찾아보면서 따라해본 방법은 타임리프를 통한 페이징 방법! 방법은 Pageable 인터페이스를 사용한 방법이라고한다. Thymeleaf를 사용해 구현해보자!..

실전 프로젝트 - 8일차

Elasticsearch 기본적으로 모든 데이터를 색인하여 저장하고 검색, 집계 등을 수행하며 결과를 클라이언트 또는 다른 프로그램으로 전달 기존 관계형 DB 시스템에서 다루기 어려운 전문검색(Full Text Search) 기능과 점수 기반의 다양한 정확도 알고리즘, 실시간 분석 등의 구현이 가능 오픈소스 Apche 2.0 라이센스로 배포중 실시간 분석 Elasticsearch 클러스터가 실행되고 있는 동안에는 계속해서 데이터가 입력되고(검색엔진에서는 indexing 이라 표현), 그와 동시에 실시간에 가까운(near real-time) 속도로 색인된 데이터의 검색, 집계가 가능 전문 (full text) 검색 엔진 루씬 = 역파일 색인(inverted file index) 구조로 데이터 저장 루씬을 ..

728x90