☺️2022.12.12

일일 회고 117일차

할일 및 한일

경험 및 배움

오늘은 드디어 학교 전공 수업이 모두 종강을 하고, 개인 공부를 할 시간이 늘어났다.

자료구조 3장(연결 리스트)

이번 단원에서는 C언어로 연결 리스트를 구현해보았다.

연결 리스트를 생성하고, 자료를 추가하는 과정과 자료 및 리스트를 삭제하는 과정을 구현해보았다.

또한, 연결 리스트와 배열 리스트의 차이점과 서로의 장단점을 비교하여 학습하였다.

  • 배열 리스트

    • 배열의 특정 위치로 바로 접근이 가능하기 때문에 탐색 속도가 빠르다.

    • 연속적인 메모리 공간이 필요하므로, 리스트 생성 시 반드시 최대 자료 개수를 지정해야 한다.

      • 예상보다 많은 자료를 추가하는 경우에는, 새로운 배열을 생성하고 복사해야 한다.

      • 저장하는 자료의 개수가 예상보다 적을 때는 불필요한 메모리를 낭비하게 된다.

  • 연결 리스트

    • 원하는 자료를 찾을 때까지 포인터로 노드를 탐색해야 하기 때문에 탐색 속도가 느리다.

    • 각각의 노드를 동적으로 생성하고 해제해야 한다.

      • 동적 메모리 할당과 포인터 연산 등을 해야 하므로 구현이 다소 어렵다.

      • 메모리 관리와 관련하여 메모리 누수로 인한 오류 가능성이 크다.

따라서 자료의 추가와 삭제가 빈번히 발생할 때는 배열 리스트보다 연결 리스트로 구현하는 것이 바람직하다고 한다.

자세한 코드 구현과 내용 정리는 다음의 노션 링크에 기록해두었다.

Java 토이 프로젝트 로그인 구현

이번 Java 세미나 마무리 프로젝트는 은행 시스템을 구현해보고자 하였고, 이번주 금요일이 중간 점검이다.

따라서 로그인을 어제 오늘 구현하여 거의 마무리하였다.

레이어드 아키텍처를 적용하여 패키지를 나누었고, 우선 로직들을 한 곳에 몰아두고 짜서 이제 패키지에 맞게 메소드들을 정리하고 자잘한 유효성 검사와 연동 과정이 남았다.

중간 점검 이전까지 로그인 이외의 구현도 마무리하고, 흐름도 또한 작성해보려고 한다.

세미나 3주차 때 로그인을 구현해보았었다. 그때와는 시간이 많이 지났는데, 우선 배열을 쓰는 상태에서 컬렉션을 쓰게되었고 다른 코드를 작성하는 습관이나 구현하는 부분도 간단해지고 보다 직관적인 것 같아서 스스로 조금은? 마음에 든다.

앞으로도 매일매일 조금씩 성장해보자!

개선 및 목표

  • 내일은 Java 프로젝트 기능 구현과 스프링 강의 혹은 자료구조를 공부할 예정이다.

Last updated