1. Jsoup 라이브러리를 통한 스크래핑
scraper 패키지 참고
2. 모델 클래스를 따로 정의한 이유
엔티티는 데이터베이스 테이블과 직접적으로 매핑되기 위한 클래스
엔티티 클래스의 원래 역할 범위를 벗어나게 되어버리기때문에 따로 정의한다
3. 자바 메모리 설명 및 프로세스, 쓰레드 정리
https://lucas-owner.tistory.com/38
* 프로그램, 프로세스, 쓰레드 관련 정리
https://velog.io/@gparkkii/ProgramProcessThread
https://simple-ing.tistory.com/67
프로그램
프로그램은 컴퓨터에서 어떤 작업을 위해 실행할수 있는 정적인 상태의 파일 (프로그래밍언어를 사용한 명령어들의 집합)
보조기억장치에 저장되어 있다
프로세스
프로세스는 프로그램이 실행되서 돌아가고 있는 동적인 상태의 컴퓨터 프로그램
보조기억장치에 저장되어있는 프로그램을 메모리로 가져온다
한줄 요약
프로그램을 실행하면 운영체제로부터 필요한 자원(메모리 등) 을 할당받아 프로세스가 된다
쓰레드
프로세스가 할당받은 자원을 이용하는 실행 단위
4. Index 1 out of bounds for length 1 에러 발생
회사 정보를 스크랩 해올때 타이틀을 가져오기 위해 사용한 split에 기준 문자열 "-" 가 없어 문자열을 나누어주지 못해
발생한 에러였음
>> split 을 할 필요가 없었음
5. 인텔리제이 콘솔에서 한글이 깨져 보이는 현상
https://da-nyee.github.io/posts/intellij-console-encoding-issue/
위 링크 2번째 방법으로 해결했음
6. 캐시
임시로 데이터를 저장하는 공간
원본데이터가 저장되어 있는 상황에서 별도의 공간에 동일한 데이터를 저장한 후 접근하는 방식
>> 중복으로 데이터가 공간을 차지하게 되지만 빠른 처리 속도를 위해 사용하게 된다
데이터 베이스에서 한번 읽어온 데이터를 캐싱해둔 후 동일한 요청이 왔을때 db까지 요청을 보내지 않고 캐시공간에
접근해서 데이터를 읽어 오기때문이다
디스크가 아닌 메모리에 접근해서 데이터를 관리하기 때문에 속도가 빠름
메모리에 데이터를 저장한다는것은 서버가 종료되면 데이터가 날아가는 휘발성이 특징이지만 레디스는 영속성도 지원함
실제로 레디스를 통해 캐시 저장을 한후 조회속도를 비교해보았더니 460ms > 29ms 로 조회 속도가 확실히 개선되었다
* 캐시 저장이 안되어 헤맸었는데 알고보니 캐시 저장을 하는 요청 URL을 다른 URL로 착각 했었다...
7. 추상클래스와 인터페이스 차이
https://hahahoho5915.tistory.com/70
요약하면 공통점은 추상클래스와 인터페이스 모두 인스턴스화 시킬수 없다는것이고 차이점은 하나 이상의 추상 메소드를 가지는것 외엔 일반 클래스와 동일한 추상 클래스 와는 달리 인터페이스는 오직 추상 메서드와 상수(static final) 이어야 한다
'프로젝트' 카테고리의 다른 글
매장 예약 - Redis 캐시 적용 (0) | 2024.02.22 |
---|---|
매장 예약 서비스 - 동시성 문제 (0) | 2024.02.19 |
매장 예약 서비스 - Spring Jpa 연관 관계 (0) | 2024.02.18 |
날씨 일기 프로젝트 (0) | 2024.01.27 |
계좌 시스템 개발 프로젝트 (0) | 2024.01.26 |