전체 글 183

S)Spring_09_스프링 컨테이너

스프링 컨테이너란? 스프링에서 자바 객체는 Bean이라고 한다. 스프링 컨테이너는 bean의 생명 주기를 관리(생성, 관리, 제거 등)하며, 생성된 bean에 추가적인 기능을 제공한다. 더보기 객체(Object): 객체는 일반적으로 소프트웨어에서 사용되는 모든 것을 말한다. 클래스의 인스턴스가 되어 메모리에 할당된 것을 의미한다. 자바에서는 클래스를 기반으로 객체를 생성하고, 이들은 메서드를 호출하거나 변수에 접근할 수 있다. 빈(Bean): 스프링에서의 빈은 스프링 컨테이너에 의해 생성, 관리 및 제어되는 객체를 의미한다. 빈은 스프링의 IoC 컨테이너에 등록되어야 하며, 스프링 컨테이너가 애플리케이션의 제어를 가져갈 수 있도록 한다. 빈으로 등록된 객체는 스프링의 라이프사이클에 따라 생성되고 소멸되며..

CS 2024.04.10

S)Spring_09_스프링DI

Inversion of Control (IoC) 제어의 역전 소프트웨어 디자인 패턴 중 하나로, 소프트웨어 컴포넌트의 제어 흐름을 역전시키는 개념을 나타낸다. 기존의 프로그래밍 방식에서는 개발자가 코드 내에서 객체의 생성 및 관리를 직접 제어했지만, IoC는 이를 역전시켜 객체의 생성 및 생명주기를 외부 컨테이너에 의해 관리하도록 하는 것을 말한다. IoC의 주요 아이디어는 개발자가 작성한 코드가 외부 컨테이너에 의해 호출되고 관리되며, 개발자는 컨테이너가 객체를 생성하고 연결하는 방식에 대해 신경 쓸 필요가 없다는 것이다. 간단히 말해, IoC는 개발자가 코드의 제어 흐름을 직접 제어하는 것이 아니라 외부 컨테이너에게 제어의 권한을 넘겨주는 것을 의미한다. 이는 코드의 유지보수성, 테스트 용이성, 확장..

CS 2024.04.09

달리기를 말할 때 내가 하고 싶은 이야기

먼저 들 수 있는 한 가지는, 사는 일이 점점 바빠지고 매일매일의 생활속에서 웬만큼 자유로운 시간을 내기 어렵게 되었다는 점이다. 젊었을 때는 시간은 얼마든지 있었다, 라고 말하는 건 아니지만, 적어도 이렇게 자질구레한 일이 많지는 않았다. 그런 잡다한 일이 나이를 먹억마에 따라 왠지 자꾸만 늘어가는 것 같다. 강한 인내심으로 거리를 쌓아가고 있는 시기인 까닭에, 지금 당장은 시간은 그다지 문제가 되지 않는다. 그저 묵묵히 시간을 들여 거리를 뛰어간다. 빨리 달리고 싶다고 느껴지면 나름대로 스피드도 올리지만, 설령 속도를 올린다 해도 그 달리는 시간을 짧게 해서 몸이 기분 좋은 상태 그대로 내일까지 유지되도록 힘쓴다. 장편소설을 쓰고 있을 때와 똑같은 요령이다. 더 쓸 만하다고 생각될 때 과감하게 펜을 ..

Book 2024.04.08

1973년의 핀볼

한없는 허무 속 불빛 같은 하루키 문학 권택영(문학평론가) 주인공 '나'는 시간이 흘러도 변치 않는 작가 자신 1973년에 당신은 무엇을 하셨나요? 꼭 그해가 아닐지라도 우리는 지난날을 되돌아보았을 때 전환점이 되는 지점을 발견합니다. 실패를 딛고 다시 일어서던 해, 깨달음을 얻고 다시 태어나던 해 말입니다. 그런데 바로 그 새로운 시작은 절망의 끝이 아니었던가요? 입구가 곧 출구가 아니었느냐고 하루키는 묻습니다. 언젠가 하루키는, 전집을 묶으면서 단편들을 손질했지만 초기에 썼던 이 작품만은 손대지 않았다고 말했다. 그것이 '당시의 나였고 결국은 시간이 흘러도 지금의 나'이기 때문이라고. 그렇다면 무엇이 변치 않는 자신의 모습일까? 잠깐 낮잠이 든 사이에도 나뭇잎이 시퍼렇게 커버리는데 변치 않는 것이 과..

Book 2024.04.08

[docker] mariadb, 한글 깨짐, 서버 시간대

docker run --name mariadb -d -p 5306:3306 -e MYSQL_ROOT_PASSWORD=1234 mariadb  https://esther99.tistory.com/11      참고https://upcurvewave.tistory.com/344 docker compose를 이용한 mariadb build시 트러블 슈팅 (3306이 아닌 다른 포트 사용시)문제상황 : 도커 컴포즈를 이용해 mariaDb를 생성하고 jdbc 혹은 datagrip을 이용해 접속하려고 했을 때 아래와 같은 에러가 발생했다. Caused by: java.sql.SQLNonTransientConnectionException: Could not connect to address=upcurvewave.ti..

Mac 2024.04.05

정의란 무엇인가

그는 이성적 능력이 우리 능력의 전부가 아니라는 점을 분명히 인정한다. 우리는 쾌락과 고통을 느낄 능력도 있다. 그는 우리가 이상적 동물일 뿐 아니라 지각력 있는 동물이라고 말한다. 칸트가 말하는 "지각력"이란 감각과 느낌에 반응하는 능력이다. 따라서 벤담도 옳지만, 절반만 옳을 뿐이다. 벤담은 우리가 쾌락을 좋아하고 고통을 싫어한다는 사실을 알았고, 이는 옳은 이야기다. 그러나 쾌락과 고통이 "우리의 통치권자"라는 주장은 옳지 않다. 칸트는 이성이야말로, 적어도 때로는, 통치권을 행사할 수 있다고 주장한다. 이성이 우리 의지를 통치할 때, 우리는 쾌락을 추구하고 고통을 피하려는 욕망에 내몰리지 않는다. 이성적으로 사고하는 능력은 자유롭게 행동하는 능력과 밀접하게 연관된다. 이 두 가지 능력이 합쳐져 우..

Book 2024.04.03

S)DB_08_JOIN

두 개의 팀이 서로 다른 작업을 수행하고 있다. 이들은 서로 다른 작업을 수행하기 위해 독립적으로 작업하고 있지만 때로는 서로의 작업에 필요한 정보를 공유하거나, 그들의 일부 구성원이 함께 작업할 필요가 있는 경우도 있다. 조인은 이들 팀의 구성원이 필요한 정보를 서로 공유하는 것과 유사하다. 예를 들어, 한 팀은 책의 목록을 가지고 있고 다른 팀은 각 저자의 정보를 가지고 있다고 가정해보자. 이 두 팀은 각각 독립적으로 일하고 있지만, 책의 목록과 각 저자의 정보가 필요한 경우가 있다. 이때 조인은 책의 목록과 각 저자의 정보를 결합하여 필요한 정보를 얻을 수 있게 해 준다. WHY? 데이터베이스의 정규화된 데이터 모델은 데이터를 분할하여 중복을 피한다. (정규화) 조인은 데이터베이스에서 설정된 여러 ..

CS 2024.04.02

S)DB_08_DBCP

커넥션 풀은 기존에 매번 쿼리를 요청하고 응답을 받을 때마다 데이터베이스와의 연결을 열고 닫아야 했던 작업을 효율적으로 관리하기 위해 도입된 개념이다. 커넥션 풀은 미리 일정 수의 연결을 생성하여 풀에 보관해두고, 요청이 들어올 때마다 풀에서 연결을 빌려주고, 작업이 완료되면 다시 풀에 반납하는 방식으로 연결을 관리합니다. 이를 통해 매번 연결을 생성하고 해제하는 오버헤드를 줄이고, 데이터베이스 서버의 부하를 관리할 수 있습니다. 따라서 커넥션 풀을 사용함으로써 연결 관리에 필요한 비용을 줄이고, 시스템의 성능과 효율성을 향상시킬 수 있다. 백엔드 서버 DB조회할 일 발생! 쿼리 요청 쿼리 결과 반환 (추가 작업) (클라이언트) 요청 반환 이 과정은 네트워크 통신으로 이루어진다 ! 그리고 일반적으로 이..

CS 2024.04.02

S)DB_07_B tree, B+tree

Binary tree 각 노드가 최대 두 개의 자식을 가질 수 있는 트리 구조다. 평균적인 시간 복잡도로 O(logN)을 갖지만 한쪽 방향으로만 노드들이 쏠려 균형이 맞지 않은 경우 최악의 시간복잡도로 O(N)을 갖게 된다. 노드 하나의 자식 노드로 최대 두 개의 노드만 가질 수 있으므로 데이터가 증가할 수록 깊이가 커지는 속도가 빠르다. B tree & B+tree 데이터를 효율적으로 저장하고 탐색하기 위한 트리 기반의 자료구조 Balanced, 트리의 노드가 한쪽으로만 쏠리지 않도록 노드 삽입 삭제 시 특정 규칙에 맞게 재정렬해 전체적으로 균형을 유지한다. □ 삽입 과정 : 빈 트리에 데이터 삽입할 때는 새로운 노드 생성하고, 가득 찬 노드 경우 분할 통해 새로운 노드 생성한다. □ 삭제 과정 : ..

CS 2024.03.30

S)DB_07_인덱스

도서관을 떠올려보자 도서관엔 수많은 책들이 잘 정리되어 있다. 나는 요시나가 요시마사가 쓴 "괴델 불완전성 정리"라는 책을 찾아 읽고 싶다. 1. 인덱스의 필요성 도서관은 책으로 가득 차 있다. 만약 책의 위치를 나타내는 색인(인덱스)가 없다면, 우리는 원하는 책을 찾기 위해 모든 책을 차례로 살펴봐야 한다. "괴델 불완전성 정리"를 찾기도 전에 도서관은 문을 닫고 말 것이다. 2. 인덱스의 역할 그럼 각 책의 위치를 알려주는 색인을 제공한다고 해보자. 이 색인은 각 제목의 위치를 정리해 놓은 것이다. 우리가 원하는 책을 찾을 때, 이제 색인을 참조하여 어느 섹션에 가야 할지 알 수 있다. 이렇게 색인을 통해 우리는 시간을 절약하고 효율적으로 책을 찾을 수 있다. 3. 인덱스 설정 기준 이렇게 편리한 색..

CS 2024.03.30