프로젝트

배당금 프로젝트

Lv.1 ysg 2024. 1. 31. 21:36

 

1. Jsoup 라이브러리를 통한 스크래핑

scraper 패키지 참고

2. 모델 클래스를 따로 정의한 이유 

엔티티는 데이터베이스 테이블과 직접적으로 매핑되기 위한 클래스

엔티티 클래스의 원래 역할 범위를 벗어나게 되어버리기때문에 따로 정의한다

 

3. 자바 메모리 설명 및 프로세스, 쓰레드 정리

https://lucas-owner.tistory.com/38

 

[Java] Java 메모리 영역(stack, heap, static), JVM, JAVA 변수 종류

목차 JVM 이란? Java의 메모리 영역 Java 변수 종류 Static(Method) 영역 Heap 영역 Stack 영역 JVM 메모리 구조중, (Stack, Heap, Static)메모리 영역과 JVM, Java 변수 종류에 대해서 알아보자. JVM 이란? - 메모리 영

lucas-owner.tistory.com

 

 

https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EA%B7%B8%EB%A6%BC%EC%9C%BC%EB%A1%9C-%EB%B3%B4%EB%8A%94-%EC%9E%90%EB%B0%94-%EC%BD%94%EB%93%9C%EC%9D%98-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%98%81%EC%97%AD%EC%8A%A4%ED%83%9D-%ED%9E%99

 

☕ 그림으로 보는 자바 코드의 메모리 영역(스택 & 힙)

자바의 메모리 영역 이번 포스팅에선 자바(JAVA)를 사용하는 입장에서 알아야 할 메모리 구조 및 특징에 대해서 알아보려고 한다. 자바 프로그램이 실행되면 JVM(자바 가상 머신)은 OS로부터 메모

inpa.tistory.com

 

 

* 프로그램, 프로세스, 쓰레드 관련 정리

 

https://velog.io/@gparkkii/ProgramProcessThread

 

프로그램(Program), 프로세스(Process), 쓰레드(Thread)

✍🏻 프로그램, 프로세스, 쓰레드 알아보기 프로세스와 스레드의 차이는 운영체제 공부에서도 아주 중요하게 다룬다. 개발자 면접에서도 자주 나오는 주제인 프로세스와 쓰레드에 대해 아는

velog.io

 

https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%E2%9A%94%EF%B8%8F-%EC%93%B0%EB%A0%88%EB%93%9C-%EC%B0%A8%EC%9D%B4

 

👩‍💻 ‍완전히 정복하는 프로세스 vs 스레드 개념

한눈에 이해하는 프로세스 & 스레드 개념 전공 지식 없이 컴퓨터의 프로그램을 이용하는데는 문제 없어 왔지만 소프트웨어를 개발하는 사람으로서 컴퓨터 실행 내부 요소를 따져보게 될때, 아

inpa.tistory.com

https://simple-ing.tistory.com/67

 

쓰레드(Thread)의 기본개념

프로그램과 프로세스 우리가 프로그램을 실행하려고 하면, 실행을 위해 운영체제에서 메모리 공간을 할당받아오게 되며, 그 공간에 프로그램이 올려져 실행되게 된다. 즉 프로세스는 실행중인

simple-ing.tistory.com

 

 

프로그램

프로그램은 컴퓨터에서 어떤 작업을 위해 실행할수 있는 정적인 상태의 파일 (프로그래밍언어를 사용한 명령어들의 집합)

보조기억장치에 저장되어 있다

 

프로세스

프로세스는 프로그램이 실행되서 돌아가고 있는 동적인 상태의 컴퓨터 프로그램

보조기억장치에 저장되어있는 프로그램을 메모리로 가져온다

 

한줄 요약

프로그램을 실행하면 운영체제로부터 필요한 자원(메모리 등) 을 할당받아 프로세스가 된다

 

쓰레드

프로세스가 할당받은 자원을 이용하는 실행 단위

 

 

4. Index 1 out of bounds for length 1 에러 발생 

회사 정보를 스크랩 해올때 타이틀을 가져오기 위해  사용한 split에 기준 문자열 "-" 가 없어 문자열을 나누어주지 못해

발생한 에러였음

>> split 을 할 필요가 없었음

 

 

5. 인텔리제이 콘솔에서 한글이 깨져 보이는 현상

https://da-nyee.github.io/posts/intellij-console-encoding-issue/

 

[IntelliJ] 콘솔 한글 깨짐 (Console Encoding Issue)

Introduction

da-nyee.github.io

 

위 링크 2번째 방법으로 해결했음

 

6. 캐시

임시로 데이터를 저장하는 공간
원본데이터가 저장되어 있는 상황에서 별도의 공간에 동일한 데이터를 저장한 후 접근하는 방식
 >> 중복으로 데이터가 공간을 차지하게 되지만 빠른 처리 속도를 위해 사용하게 된다
 데이터 베이스에서 한번 읽어온 데이터를 캐싱해둔 후 동일한 요청이 왔을때 db까지 요청을 보내지 않고 캐시공간에
 접근해서 데이터를 읽어 오기때문이다


 디스크가 아닌 메모리에 접근해서 데이터를 관리하기 때문에 속도가 빠름
 메모리에 데이터를 저장한다는것은 서버가 종료되면 데이터가 날아가는 휘발성이 특징이지만 레디스는 영속성도 지원함

실제로 레디스를 통해 캐시 저장을 한후 조회속도를 비교해보았더니 460ms > 29ms 로  조회 속도가 확실히 개선되었다

캐시 적용 전

 

 

캐시 적용 후

 

 

* 캐시 저장이 안되어 헤맸었는데 알고보니 캐시 저장을 하는 요청 URL을 다른 URL로 착각 했었다...

 

7. 추상클래스와 인터페이스 차이

https://hahahoho5915.tistory.com/70

 

[간단정리] JAVA - 추상클래스, 인터페이스 특징 및 차이점 확실히 기억하기

개요 추상 클래스(Abstract Class)와 인터페이스(Interface)의 특징 및 차이점 알아보기 요약 추상 클래스, 인터페이스 공통/차이 정리 표 구분 추상 클래스 인터페이스 공통점 객체 생성 객체를 생성(

hahahoho5915.tistory.com

 

 

요약하면 공통점은 추상클래스와 인터페이스 모두 인스턴스화 시킬수 없다는것이고 차이점은 하나 이상의 추상 메소드를 가지는것 외엔 일반 클래스와 동일한 추상 클래스 와는 달리 인터페이스는 오직 추상 메서드와 상수(static final) 이어야   한다