일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 중학수학
- 데이터베이스
- JSP/Servlet
- 개발일기
- 머신러닝
- 딥러닝
- 자바스크립트
- 자바
- 파이썬
- 중학1-1
- html/css
- rnn
- SQL
- 정보처리기사필기
- 자바 실습
- 스프링
- 디버깅
- 타입스크립트심화
- 스프링프레임워크
- 쇼핑몰홈페이지제작
- 연습문제
- JDBC
- 혼공머신
- 자바스크립트심화
- 컴퓨터비전
- 상속
- JSP
- 데이터분석
- ChatGPT
- 정보처리기사실기
- Today
- Total
목록2024/12/31 (36)
"게임 개발자"를 향한 매일의 공부일지 1기 : 2024년
2주차의 마지막 수업을 시작해본다. N + 1이라는 다소 생소한 내용이다. 이론 6 - N + 1 문제 간단해보이는 문제가 예상치 못한 성능 저하로 이어지는 문제를 말한다. 이는 네트워크 지연, CPU 사용률 부하, 메모리 사용 증가 등과 같은 부작용을 유발한다. N + 1 발생 주요 원인은 ORM이다. 객체지향 프로그래밍과 관계형 데이터베이스 간의 차이를 매우기 위한 훌륭한 도구이지만 때로는 ORM을 생성하는 쿼리가 최적화되지 않을 때가 있다. 특히 한 객체를 가지고 와서 다른 객체를 조회할 때 발생한다.이로인해 한 번의 요청이 데이터베이스에 N + 1 요청을 하는 것으로 변질되면 데이터베이스와 네트워크에 큰 부하를 주어 전체 시스템의 반응 시간을 저하시킬 수 있다. 고객 정보를 관리하..
두 단원이 남아있다. 이것까지만 하고 쉬려고 하니 조금만 더 힘을 내보겠다. 이론 5 - 트랜잭션 여러 개의 작업을 묶어 전체가 성공하거나 실패하여 데이터베이스의 안정성을 보장한다. 동시에 같은 시스템에 접속할 때 발생하는 문제점을 관리한다. 원자성은 모든 연산이 실행되거나 실행되지 않는 것이다. 이는 중간 단계에서 실패하더라도 롤백할 수 있음을 의미한다. 일관성은 트랜잭션의 실행 결과가 항상 데이터베이스의 무결성을 만족해야 한다는 원칙이다. 독립성은 동시에 실행되는 여러 트랜잭션이 서로 영향을 주지 않아야 한다는 것이다. 지속성은 트랜잭션이 성공적으로 완료되면 그 결과가 영구적으로 데이터베이스에 반영되어야 함을 의미한다. 활동 상태는 실행 중일 때, 실패는 오류가 발생할 때를 말한다...
저녁을 먹고 다시 저녁 공부를 시작해 본다. 이제 공부할 시간이 2시간도 채 남지 않았지만 우선 1시간 안에 2주차 수업을 끝내야겠다. 이번에 공부할 단원은 샤딩이다. 이론 4 - 샤딩 관리하기 좋은 샤드로 나누어서 관리하는 시스템이다. 수평 샤딩은 데이터를 행 단위로 분할하여 데이터베이스에 같은 스키마를 유지하면서 여러 서버에 데이터를 균등하게 분할한다. 가장 일반적인 방법으로 균등하게 분배할 수 있다.수직 샤딩은 부분집합으로 분할하여 다른 스키마를 가진 데이터베이스로 나누는 방식이다. 특정 데이터베이스나 애플리케이션에 특화된 샤딩 전략으로 볼 수 있다. 고가용성으로 전체 시스템에 영향을 미치지 않도록 한다. 퀴즈 3 - 샤딩 조금 헤깔렸던 문제이다. ..
식사를 기다리는 동안 이 단원을 조금 시작해 보기로 했다. 이번에는 인덱스에 대해서 공부해보려고 한다. 이론 3 - 인덱스 저장 공간의 관리도 인덱스에서 중요하다. B-tree 인덱스는 가장 많이 사용하며 대부분의 상황에서 잘 동작한다. 해시 인덱스는 해시 함수를 이용하여 빠른 검색을 제공하지만, 범위를 검색하는 것에는 적합하지 않다.Full Text 인덱스는 텍스트 검색을 최적화하기 위해 사용한다. 인덱스를 사용할 때는 사용 패턴, 데이터 분포, 쿼리 종류를 파악하고 사용해야 한다. 실습 2 - 인덱스 Product 인덱스를 지정하는 코드를 작성한다. 코드 실행하기 학습을 마치고식사 준비를 하는 동안 시작했던 공부를 마저 끝내고 싶어서 배가 무척 ..
데이터베이스 심화의 첫 번째 수업으로 정규화에 대해서 살펴보려고 한다. 이 내용은 정보처리기사 필기와 실기 공부를 할 때 많이 다루었던 내용이기도 하다. 이론 2 - 정규화 데이터베이스의 효율성과 일관성을 높인다. 무결성은 정확한 정보에 접근하도록 한다. 정규형은 더 깊은 수준의 정규화와 무결성을 달성하기 위한 규칙을 갖고 있다. 하나의 데이터만 들어갈 수 있도록 하는 것이 제1정규형이다. 제2정규형은 부분함수적 종속을 제거한다. 부분함수적 종속은 특정 컬럼이 의존하는 관계에 있는 것이다. 제3정규형은 이행함수적 종속을 제거하는 것이다. 엘리스는 컴퓨터 공학과에, 행정실은 컴퓨터 공학과에 종속되어 있다. 하나의 테이블을 이름, 학과, 행정실로 각각 분리한다. 의도적으로 ..
2주 차에서는 데이터베이스의 심화 내용을 학습하게 된다. 이번에도 1시간 10분 만에 공부를 다 마칠 생각이다. 그러고 나서 저녁을 먹고 남은 주차별 학습을 이어갈 것이다. 이론 1 - 데이터베이스의 심화 개념 소개 속도와 효율성을 극대화한다. 데이터베이스의 신뢰성을 보장한다. 시스템의 성능을 저하시킬 수 있는 문제이다. 퀴즈 1 - 데이터베이스의 심화 개념 소개 학습을 마치고앞으로 다룰 강의의 전체적인 내용을 살펴보는 시간이었다. 핵심 용어 중심으로 정리하니 이런 맥락으로 수업이 진행되는지 알 것 같았다.그럼 다음 포스트에서 이 내용을 주의깊게 학습해 보겠다.
1주 차의 마지막 수업이다. 마지막까지 공부의 열정을 태우자. 이론 6 - AOP 활용 사례 코드의 중복 없이 효과적으로 사용할 수 있다. 중요한 작업을 시작하기 전에 사용자의 인증과 권한을 체크하여 중앙 집중적으로 관리할 수 있다. 실습 2 - AOP 활용 사례 ExceptionHandlerAspect 포인터컷을 정의하고 어드바이스도 정의하여 코드를 작성한다. 이번에는 예외값을 받는 코드도 필요하다. 코드 실행하기 학습을 마치고이로써 1주 차의 모든 공부를 마쳤다. AOP를 어떻게 활용하는지도 알게 되었고 예외가 발생하는 상황의 코드를 이처럼 만들 수 있다.스프링 3 공부도 나름 할만하다.
이번에는 AOP의 단점과 주의점에 대해서 살펴보기로 하자. 이론 5 - AOP의 단점 및 주의점 AOP 로직이 전개되는 방식을 이해하기 위해서는 실행 시점의 동작뿐 아니라 Aspect 자체의 동작을 깊이 파악해야 한다. 성능에 민감한 영역에 대해서는 신중해야 한다. Aspect는 부차적인 관심사, 로깅이나 보안, 검증과 같은 작업을 처리하는데 적합하다. 핵심 비즈니스 로직은 명확한 방식으로 유지되어야 한다. 해당 툴에 묶어놓게 되면 업데이트에 취약할 수 있다. AOP는 프록시 기반이기 때문에 이러한 메서드 호출이 숨겨져 있다. 그렇기에 테스트는 통과하지만 실제 운영 환경에서는 문제가 발생할 수 있다. 테스트를 어떻게 할 것인가의 고민이 필요하다. 퀴즈 4 - AOP의 ..
이번에는 AOP의 핵심 용어에 대해서 공부해 보겠다. 이론 4 - AOP의 핵심 용어 클래스 전체를 하나의 Aspect라고 볼 수 있다. 이 코드에서는 이 Join Point가 된다. 특정한 문법으로 이루어진 이 표현식이 Pointcut이다. 특정 지점에서 필요한 작업을 수행할 수 있다. 애플리케이션의 중심이 되는 클래스나 컴포넌트이다. AOP는 배우에게 특정 역할을 지시하는 감독과 같은 역할을 한다. 적절한 시점에 삽입한다. 프록시는 AOP가 코드에 미치는 영향을 추상화하고 복잡성을 숨긴다. 빨간색 문서가 AOP의 객체라면 프록시가 적용된 후에는 파란색 문서가 형성된다. 실제로 코드가 실행될 때는 파란색의 객체가 생성되는 것이다. 퀴즈 6 - AOP의 핵심 용어 ..
다음으로는 AOP의 프레임워크에 대해서 알아보겠다. 이번 시간에는 Spring AOP와 AspectJ의 차이점에 대해서 주로 살펴보게 된다. 이론 3 - AOP의 주요 프레임워크 소개 스프링에서 제공하는 의존성 주입, 트랜잭션 등과 밀접하게 통합되어 있어 친숙하다. 프록시 기반이라는 말은 런타임 시에 객체의 프록시를 생성하고 프록시를 통해 관심사를 적용한다는 것을 의미한다. 통합성은 스프링의 다른 기능과 연동된다. 개발자는 XML이나 어노테이션을 통해 AOP를 설정할 수 있어 코드를 변경하지 않고도 AOP를 사용할 수 있는 장점을 제공한다. AspectJ는 컴파일 시점과 로그 시점에 거쳐 다양한 위빙 옵션을 제공한다. 런타임이 더 강력하고 성능이 좋은 AOP를 구현할 수 있다. 컴파..