본문 바로가기

TIL(Today I Learned)

(137)
TIL-230920(자바의정석 Chapter07 '객체지향 프로그래밍2') 📝오늘 공부한 것 자바의 정석 공부 - Chapter 07 끝까지 자바의 정석 스터디 📌 자바의 정석 스터디 [ 상속 ] 생성자와 초기화 블럭은 상속되지 않는다. 멤버만 상속된다. 지손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많다. - 접근 제어자가 private또는 default인 멤버들은 상속되지 않는다기보다 상속은 받지만 자손 클래스로부터 접근이 제한되는 것 클래스 간의 관계 클래스로 문장을 만들었을 때 ‘ ~은 ~이다’ → 상속관계 ‘~은 ~을 가지고 있다’ → 포함관계 단일 상속 자바에서는 다중상속X, 단일상속만 허용 다중상속의 경우 클래스간의 관계가 매우 복잡해지고, 서로 다른 클래스로부터 상속받은 멤버간의 이름이 같은 경우 구별할 수 있는 방법이 없다 ⇒ 즉, 클래스 간의 관계가 ..
TIL-230919('행동대장' 코드리팩토링 - 중복 코드 수정) 📝오늘 공부한 것실전프로젝트 - '행동대장' 코드리팩토링(중복 코드 수정)자바의 정석 스터디 - Chapter 07 '객체지향 프로그래밍2' ~ 추상클래스기술면접 스터디 📌 코드리팩토링 - 중복된 코드 수정  ⛔ 문제점 ①기능별로 Exception클래스를 만들다 보니 같은 코드임에도 불구하고 이름만 다른 클래스가 여러 개 생겼다.이렇게 비슷한 예외 처리 로직을 각각의 클래스에서 중복으로 구현하다 보니 코드의 가독성과 유지보수가 어렵다고 느껴졌다.CustomExceptionHandler을 통해 기능별로 예외처리를 하였다. 기능별로 Exception클래스마다 handler를 만들어주었더니, Exception의 이름만 다른 중복된 코드들이 생겼다. 💯 해결CommonException을 만든 뒤 모든 Ex..
TIL-230918('행동대장' 코드리팩토링 - 폴더구조 변경) 📝오늘 공부한 것실전프로젝트 - '행동대장' 코드리팩토링(폴더 구조 변경)자바의 정석 스터디 - ch6 객체지향 프로그래밍1 📌코드 리팩토링 - 폴더 구조 변경프로젝트를 시작할 때 팀원들끼리 폴더구조, 코드 컨벤션, Git 컨벤션 등을 회의를 통해 결정했다. 프로젝트를 진행하면서 잘 지키려고 노력을 하였다. 그런데 내가 다른 사람들의 코드를 봤을 때나, 다른 사람들이 내 코드를 봤을 때, 바로 이해가 되지 않은 것을 보면 잘 지켜지지 않은 것 같다. 특히, 패키지 이름이나 메서드 이름은 코드를 보지 않고는 어떤 기능인지 파악하기 어려운 것들도 많았다. 이러한 이유로 코드의 가독성을 높이고, 유지보수성을 향상시키기 위해서 전체적인 코드 리팩토링을 진행하기로 하였다.내 코드들 뿐만 아니라 다른 팀원들의 ..
TIL-230916(자바의정석 Chapter06 '객체지향 프로그래밍1') 📝오늘 공부한 것 자바의 정석 3판 Chapter 06 객체지향 프로그래밍1 📌 자바의 정석 스터디 월요일부터 자바의 정석 스터디를 진행하기로 했다. 6장부터 시작하여 월, 수, 금 일주일에 3번 한 챕터씩 진행할 것이다. [ 객체지향언어 ] 코드의 재사용성이 높음. 유지보수가 용이함. 신뢰성이 높은 프로그래밍을 가능하게 함. [ 클래스와 객체 ] 클래스와 객체의 정의와 용도 클래스의 정의 : 클래스란 객체를 정의해 놓은 것 클래스의 용도 : 클래스는 객체를 생성하는데 사용 객체의 정의 : 실제로 존재하는 것. 사물 또는 개념 객체의 용도 : 객체가 가지고 있는 기능과 속성에 따라 다름 객체와 인스턴스 객체 : 모든 인스턴스를 대표하는 포괄적인 의미 인스턴스 : 어떤 클래스로부터 만들어진 객체 클래스 —..
TIL-230915(AWS S3와 EC2) 📝오늘 공부한 것 AWS S3, EC2 알게 된 점❗ [ AWS S3 (Amazon Simple Storage Service) ] 객체 스토리지 서비스로, 다양한 사례에 대해 원하는 양의 데이터를 저장하고 보호할 수 있다. AWS S3는 특정 비즈니스, 조직 및 규정 준수 요구 사항을 충족하도록 데이터에 대한 액세스를 최적화, 구조화 및 구성할 수 있도록 관리 기능을 제공한다. 기능 스토리지 클래스 자주 액세스되는 데이터에 대한 S3 Standard, 엑세스 빈도가 낮은 데이터에 대한 S3 Standard-IA, S3 One Zone-IA 등 다양한 스토리지 클래스를 제공 스토리지 관리 비용 관리, 규정 요구 사항 충족, 대기 시간 단축, 규정 준수 요구 사항에 맞게 여러 개의 개별 데이터 복제본 저장을..
TIL-230914(Array와 LinkedList) 📝오늘 공부한 것 Array, LinkedList 알게 된 점❗ [ Array ] 가장 기본적인 형태의 자료구조로 구조가 간단하며 사용하기 쉽고 데이터를 읽어 오는데 걸리는 시간이 가장 빠르다. 동일한 데이터 유형의 요소를 연속적인 메모리 위치에 저장하는 데이터구조 각 데이터 요소가 인덱스와 연결되는 인덱스 기반 데이터구조이다. 단점 : 1. 크기를 변경할 수 없다. - 크기를 변경할 수 없으므로 새로운 배열을 생성해서 데이터를 복사해야 한다. - 실행속도를 향상시키기 위해서는 충분히 큰 크기의 배열을 생성해야 하므로 메모리가 낭비된다. 2. 비순차적인 데이터의 추가 또는 삭제에 시간이 많이 걸린다. - 차례대로 데이터를 추가하고 마지막에서부터 데이터를 삭제하는 것은 빠르지만, - 배열의 중간에 데이터를..
TIL-230913(DB 로직 최소화) 📝오늘 공부한 것 DB 로직 최소화 알게 된 점❗ [ DB 로직 최소화 ] DB로직 최소화는 데이터베이스와 관련된 작업을 최적화하여 데이터베이스 성능을 향상시키고 유지보수성을 높인다. 1. 일관된 데이터 모델링 - 데이터베이스 테이블과 entity를 일관성있게 설계한다. - 중복 데이터를 방지하고 데이터의 일관성과 무결성을 유지할 수 있다. - 데이터베이스 정규화와 역정규화를 효과적으로 활용해야 한다. 2. 비즈니스 로직 분리 - 데이터베이스는 주로 데이터 저장과 관리에 중점을 두어야 한다. - 비즈니스 로직은 서비스 레이어에서 처리되어야 한다. 3. 조회 최적화 - 쿼리를 작성할 때 필요한 데이터만 조회하고 JOIN 및 복잡한 연산을 최소화한다. - 필요한 데이터를 미리 계산하여 캐싱하거나, 데이터베이..
TIL-230912(쿼리 최적화) 📝오늘 공부한 것 쿼리 최적화 알게 된 점❗ [ 쿼리 최적화 ] 데이터베이스의 성능을 향상시키기 위해 신중한 SQL 쿼리를 작성하는 프로세스 개발중에는 액세스하고 테스트하는 데이터의 양이 적다. 그래서, 개발자는 자신이 작성한 쿼리에 대해 빠른 response를 받는다. 그러나 프로젝트가 시작되고 많은 양의 데이터가 데이터베이스에 넘쳐나기 시작하면 문제가 시작된다. 이러한 인스턴스는 SQL 쿼리 응답 속도를 크게 저하시키고 성능 문제를 야기한다. 대규모 데이터로 작업할 때는 아주 사소한 변경이라도 성능에 큰 영향을 미칠 수 있다. 방법 1. 적절한 인덱싱 인덱스는 데이터베이스 테이블에서 데이터 검색작업 속도를 향상시키는 데이터구조이다. 적절한 인덱싱을 통해 데이터베이스에 더 빠르게 액세스할 수 있으며, ..