no image
버블정렬
버블정렬 간단하지만 비효율적인 정렬 알고리즘이며 이 알고리즘은 인접한 두 원소를 비교하고 필요에 따라 서로 위치를 교환하고 리스트를 정렬합니다. 이름이 버블 정렬로 된 유래는 정렬 과정 속에서 이동하는 모습이 거품이 수면에 올라온 모습으로 보여 버블 정렬, 거품 정렬이라고 합니다. 정렬 과정 1. 전체 배열을 순회합니다. 2. 인접한 두 원소를 비교합니다 첫 번째 원소와 두 번째 원소를 비교하고, 필요에 따라 위치를 교환합니다. 이후 두 번째 원소와 세 번째 원소를 비교하고, 필요에 따라 위치를 교환합니다. 이 과정을 마지막 원소까지 진행합니다. 이 단계가 끝나면 가장 큰 원소가 배열의 맨 끝으로 이동하게 됩니다. 3. 위 과정을 반복합니다 다시 배열의 처음부터 끝까지 돌면서 인접한 두 원소를 비교하고 ..
2023.11.21
no image
서블릿 컨테이너
서블릿??? 자바 웹 애플리케이션에서 클라이언트의 요청을 처리하고 응답을 생성하는 자바 클래스이며 Java Servelet API를 구현합니다. 또한 자바 웹 애플리케이션의 핵심 요소로, HTTP 요청을 처리하고 동적인 컨텐츠를 생성하는 데 사용하고 서블릿을 활용해서 웹 애프리케이션을 구축하면 동적이고 유연한 기능을 구현 가능 합니다. 서블릿 특징 자바로 작성되어 JVM 위에서 실행되므로 특정 플랫폼에 종속되지 않고 여러 운영체제에서 동작할 수 있습니다. 웹 애플리케이션 클라이언트 요청을 처리하고, 동적인 HTML페이지 만들 때나 RESTful API 구현에 사용합니다. 서블릿 컨테이너에 의해 관리되며, 초기화, 요청 처리, 소멸과 같은 생명 주기를 가집니다. 서블릿도 객체 지향이며 재사용 가능한 컴포넌..
2023.11.20
no image
failed to push some refs to
failed to push some refs to git push 했을 때 아래와 같이 Error가 종종 발생하기도 합니다. Error은 원격 저장소에 로컬에 없는 파일이 있을 때 push 하면 발생하는 오류입니다. 나타나는 이유 원격 저장소에 충돌하는 변경 사항이 있어 로컬 변경 사항을 푸시할 수 없는 경우 로컬에 커밋한 내용이 원격 브랜치와 병합되거나 리베이스 되지 않은 경우 저장소에 푸시할 권한이 없는 경우 ※ 해결 방법 변경 사항 가져오기 변경 사항을 푸시하기 전에 원격 저장소에서 변경 사항을 가져와 로컬 브랜치로 최신 상태로 만들어줍니다. git pull origin 충돌 해결 이후 에커풋(add, commit, push)으로 수정사항 적용 하면 됩니다. git push origin 리베이스 g..
2023.11.17
GIT
no image
Thymeleaf
Thymeleaf 스프링 프레임워크에서 Thymeleaf를 사용하는 방법은 HTML 기반의 뷰 템플릿을 만들고, 서버에서 데이터를 전달하여 동적으로 렌더링하는 데 있습니다. Thymeleaf는 스프링과 함께 사용되어 서버 측에서 데이터를 효과적으로 렌더링하고 동적인 웹 페이지를 생성하는데 활용되며 Thymeleaf를 이용하여 유연하게 작성 가능합니다. Thymeleaf특징 HTML 문서의 구조를 유지하면서 템플릿을 작성할 수 있습니다. HTML 태그 안에 표현식을 사용하여 동적으로 데이터를 표시, 조작이 가능합니다. 템플릿을 재사용하고 여러 페이지에서 중복 코드 줄이는 데 도움이 됩니다. Thymeleaf 사용방법 의존성 추가 먼저 Maven이나 Gradle과 같은 빌드 도구를 사용하여 프로젝트에 Thy..
2023.11.16
no image
지연 로딩 & 즉시 로딩
지연로딩 프로그램에서 데이터를 필요로 할 때 데이터를 불러오지 않고 해당 데이터가 실제로 필요한 순간에 로딩하는 방식입니다. 예를 들어보자면 엔티티 A가 다른 엔티티 B와 일대다 관계를 갖고 있다고 가정하면 A를 조회할 때 B 엔티티 들은 처음에 데이터베이스에서 가져오지 않고 A에서 B에 접근할 때 실제로 필요한 시점에 데이터베이스에서 로딩됩니다 지연로딩 전 @Entity(name = "Member") @Getter public class Member extends TimeStamp{ @ManyToOne @JoinColumn(name = "team_id") private Team team; } 지연로딩 후 (FetchType.LAZY) @Entity(name = "Member") @Getter publi..
2023.11.15
no image
@Entity와 @Table의 차이
@Entity와 @Table은 명확하게 차이점을 명확하게 하기 위해 기록합니다. 간략 설명 @Entity는 엔티티 클래스를 정의 @Table은 해당 엔티티 클래스와 데이터베이스 테이블 간의 매핑을 세부적으로 제어할 때 사용 @Entity JPA에서 사용하며 Java 클래스를 영속성을 가진 엔티티로 정의하는데 사용합니다. 엔티티 클래스에 @Entitiy 지정하면 해당 클래스가 데이터베이스 테이블과 매핑되는 엔티티로 간주됩니다. 이 클래스의 객체는 데이터베이스에서 저장, 검색이 가능해집니다. @Entity(name="user") public class User{ } //DB에 user로 테이블이 생성되고 EntityManger //쿼리를 사용하는 경우 createQuert("SELECT ....FROM us..
2023.11.14
no image
디자인 패턴
디자인 패턴 실제 개발 현장에서 비즈니스 요구사항을 프로그래밍으로 처리하면서 만들어진 다양한 해결책 중에 베스트 프랙티스를 정리한 것이며 객체지향 특성과 설계 원칙을 기반으로 구현되어 있으며 객체 지향의 특성 중 상속, 인터페이스, 합성을 이용합니다. 어댑터 패턴 구조적 디자인 패턴 중 하나로, 한 인터페이스를 다른 인터페이스로 변환하기 위해 사용되며 이 패턴은 이미 존재하는 클래스나 인터페이스를 다른 클래스에서 사용할 때 유용합니다. 쉽게 이해해 보자면 휴대폰 충전기의 경우 휴대폰을 직접 전원콘센트에 연결할 수 없기 때문에 충전기가 핸드폰과 전원 콘센트 사이에서 둘을 연결해 주는 변환기의 역할을 수행해 줍니다. 구성 요소 Target 인터페이스 사용하려는 인터페이스를 정의 할 때는 Target 인터페이..
2023.11.13
no image
LF will be replaced by CRLF
ERROR git add 명령어를 입력했는데 이런 ERROR를 많이 볼 수 있습니다. 항상 Error 뜰 때마다 찾기 귀찮고 기록하기 위해 이 글을 적습니다. LF Line -Feed를 말하며 텍스트 파일에서 줄 바꿈을 나타내는 특수 문자입니다. LF 문자는 Unix 기반 운영체제에서 텍스트 파일의 줄 바꿈을 표시하는 데 사용됩니다. 이 문자는 줄 바꿈 시에만 사용되며 줄의 끝을 나타내며 텍스트 편집기와 다른 프로그램에서 화면에 줄 바꿈을 표시할 때 사용합니다. CRLF Cariiage Return Line Feed로 window 운영체제에서 줄 바꿈을 나타내는 두 개의 특수 문자 CR과 LF를 사용합니다. Window에서는 줄 바꿈을 나타낼 때 두 문자를 연이어 사용하므로 CRLF가 됩니다. 에러 발생..
2023.11.11
GIT
no image
SOLID
SOLID 객체지향 프로그래밍에서 좋은 소프트웨어 설계를 위해 사용되는 다섯 가지 기본원칙입니다. 이 원칙들도 땅에서 솟아서 갑자기 나온 게 아니라 응집도는 높이고 결합도는 낮추는 고전 원칙을 객체 지향의 관점에서 재정립한 것이라고 할 수 있습니다. 결합도와 응집도 결합도 소프트웨어의 모듈 간에 서로 얼마나 강하게 연결되어 있는지를 나타냅니다. 높은 결함도는 모듈 간의 의존성이 높은 것을 의미하며 한 개의 모듈을 변경할 때 다른 모듈들에게 영향을 미칠 수 있음을 나타냅니다. 응집도 모듈 내부의 요소들이 얼마나 밀접하게 관련되어 있는지를 나타냅니다. 높은 응집도를 갖는 모듈은 코드의 가독성이 향상되고 모듈을 이해하기 쉬워집니다. SRP - 단일 책임 원칙 소프트웨어 컴포넌트, 클래스, 함수, 모듈 등이 하..
2023.11.11