스트림, 멀티 스레드, 그리고 DB 연동
1. 이번 주에 배운 기술이나 개념 중 가장 기억에 남는 3가지는 무엇인가요?
첫째, 컬렉션과 스트림의 차이 및 지연 연산. 컬렉션은 공간적 집합체, 스트림은 시간적 집합체라는 개념. 특히 스트림은 최종 연산이 호출되기 전까지 아무 작업도 하지 않는 '느긋한 연산(Lazy Evaluation)'을 수행한다는 원리.
둘째, 멀티 스레드와 동기화(Synchronization). 프로세스 내에서 자원을 공유하는 스레드들의 충돌을 막기 위해 synchronized로 락(Lock)을 걸고, wait과 notify로 자원 접근을 제어하는 기법.
셋째, 네트워크 통신 규약과 JDBC. 신뢰성을 보장하는 TCP와 속도가 빠른 UDP의 차이점, 그리고 자바 애플리케이션과 데이터베이스를 연결해 주는 JDBC 드라이버의 역할.
2. 이번 주 과정 중 막혔던 문제나 오류가 있었나요? 어떻게 해결했나요? (없다면 가장 인상 깊었던 실습 내용)
스트림 작성 시 중간 연산(filter, map)만 적어두고 결과가 나오지 않아 당황함. 스트림은 조급한 연산인 '최종 연산(collect, forEach 등)'이 있어야만 실제 처리가 시작된다는 점을 깨닫고 코드를 수정해 해결.
또한 맵(Map) 자료구조 사용 시 HashMap과 Hashtable의 차이를 명확히 인지함. 멀티 스레드 환경에서는 동기화가 지원되어 스레드 안전성(Thread-safe)이 보장되는 Hashtable을 써야 한다는 것을 실습을 통해 체득함.
3. 이번 주 수업 진도 속도, 강사님의 강의 스타일, 혹은 반 분위기는 어땠나요?
스레드, 입출력(I/O), 네트워크에 DB까지 방대한 내용을 다뤄 진도가 매우 빨랐음. 하지만 강사님이 버퍼를 '물탱크', 스레드를 '일꾼'에 비유하는 등 직관적인 설명을 곁들여주어 복잡한 구조를 이해하는 데 큰 도움이 됨.
특히 소켓 통신과 DB 연동 실습이 들어가면서 데이터가 실제로 오가는 것을 확인하게 되니 반 전체의 집중도가 크게 높아짐. 에러가 발생하면 서로 화면을 보며 적극적으로 원인을 찾는 분위기.
4. 다음 주에는 어떤 부분을 보완하고 싶나요?
JDBC를 활용해 DB와 연결하고 SQL 쿼리(DDL, DML)를 날려 결과를 처리하는 과정이 아직 손에 익지 않음. 주말 동안 간단한 CRUD(생성, 조회, 수정, 삭제) 기능을 구현하는 미니 프로젝트를 만들며 흐름을 완벽히 숙지할 계획.
또한 데이터 집합 처리를 획기적으로 줄여주는 스트림(Stream) 파이프라인 연산을 더 자연스럽게 사용할 수 있도록, 지난주에 배운 람다식과 엮어서 다양한 컬렉션 데이터를 가공하는 연습을 진행할 예정.
댓글
댓글이 없습니다.
