전체 글

전체 글

    [알고리즘] 그리디(Greedy) 알고리즘

    그리디(Greedy) 그리디 알고리즘은 한마디로 "현재 상황에서 지금 당장 좋은 것만 고르는 방법"이라고 표현할 수 있다. 미래는 생각하지 않는 것이다. 그리디 알고리즘은 기준에 따라 좋은 것을 선택하는 알고리즘이기 때문에 문제에서 "가장 큰 순서대로", "가장 작은 순서대로"와 같은 기준을 제시하기도 한다. 이에서 볼 수 있듯이 주로 정렬 알고리즘과 함께 출제되기도 한다. 그리디 알고리즘을 풀 때에는 결정한 문제 풀이 방법이 그때 당시의 최선의 선택이 전체에 걸쳐서도 최선인지를 확인하여야 한다. 그리디 알고리즘은 이런 특성 때문에 항상 최적의 값을 보장하지는 않는다. 따라서 최적의 값에 근사한 값을 목표로 하는 근사적인 방법이다. 그리디 알고리즘의 조건 1. 탐욕스런 선택 조건 (Greedy Choic..

    [자바 ORM 표준 JPA 프로그래밍] 섹션3. 영속성 관리 - 내부 동작 방식

    영속성 컨텍스트 영속성 컨텍스트의 의미 영속성 컨텍스트란 엔티티를 영구 저장하는 환경이라는 의미를 가진다. 이는 DB에 저장한다는 의미보다는 영속성 컨텍스트를 통해 엔티티를 영속화 한다는 의미를 가진다. 따라서 엔티티를 영속성 컨텍스트에 저장한다는 뜻이다. 이후 엔티티 매니저를 통해 영속성 컨텍스트에 접근할 수 있다. 엔티티매니저와 영속성 컨텍스트는 N:1의 관계를 가진다. 엔티티의 생명주기 1. 비영속 (new, transient) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); 2. 영속 (managed) : 영속성 컨텍스트에 관리되는 상태 엔티티 매니..

    [자바 ORM 표준 JPA 프로그래밍] 섹션2. JPA 시작하기

    Hello JPA - 프로젝트 생성 강의와 다르게 진행한 점 DB 사용을 H2가 아닌 MySQL 사용 pom.xml 설정 dependency에 사용할 라이브러리를 적는다. 4.0.0 org.example ex1-hello-jpa 1.0-SNAPSHOT Archetype - ex1-hello-jpa http://maven.apache.org org.hibernate hibernate-entitymanager 5.3.10.Final mysql mysql-connector-java 8.0.28 라이브러리 버전 선택하는 방법 아래 페이지에서 내가 선택한 스프링 부트 버전의 Reference Docs > Dependency Versions를 확인한다. https://spring.io/projects/spring-..

    [자바 ORM 표준 JPA 프로그래밍] 섹션1. JPA 소개

    개요 JPA가 하는 일 반복적이고 단순한 SQL을 자동화하여 처리해준다. 과거에는 SQL을 직접 작성해야 했지만, 이제는 JPA에게 시키면 된다. JPA를 사용해서 얻는 이점 개발 생산성, 개발 속도가 증가하고 유지 보수에 용이하다. JPA를 실무에서 사용하기 어려운 이유 객체와 테이블을 올바르게 맵핑하고 설계하기 어렵기 때문이다. SQL 중심적인 개발의 문제점 SQL에 의존적인 개발 우리가 만드는 객체는 관계형 DB에 보관한다. 이 객체를 관계형 DB에 보관하려면, (저장하고/수정하고/삭제하고/조회하고 하려면) 수많은 쿼리 작성이 필요하다. 이게 바로 SQL 중심적인 개발의 문제점이다. 계속해서 INSERT INTO, UPDATE, SELECT, DELETE 쿼리를 무한 반복해야 하기 때문에 지루하다...

    [오류 해결] 서버 404 Not found 해결

    상황 SpringBoot 개발 도중 local에서 프로젝트 Run 하면서 Postman으로 API 테스트 하는 것은 아주 잘 되는데 서버에 jar 파일 배포 후 API URI로 API 호출을 하면 404 Not found가 뜨는 상황이 발생하였다. 우선 가장 먼저 살펴보아야 할 것은 URI에 오타가 없는지 이다. 필자는 죽어도 오타는 없어서 여러 방법을 동원해 해결하였다. 이번 오류에서 가장 이상했던 점은.. 특정 API는 되고 특정 API는 Not found가 뜨는 점이었다.. jar 파일이나 DB 문제가 아니라 판단하였기에 더욱 이상했다. 🥺 해결 방법 1. 우선 로컬 환경에서 빌드한 jar 파일을 서버로 전송하는 과정에서 "덮어쓰기"를 사용하고 있었는데, 이부분을 바꾸었다. 서버의 jar 파일을 삭..

    [GCP] GCP Compute Engine Key 생성, FileZila로 파일 전송 (PuttyGen, Filezila)

    GCP Compute Engie에서 SSH Key 생성하기 1. 본인의 VM 인스턴스에서 SSH 연결을 하여 서버로 접속한다. 필자는 가장 쉬운 방법으로 "브라우저 창에서 열기"를 선택하였다. 2. RSA Key Pair를 생성한다. dudrhy12@beyondvision-instance:~$ ssh-keygen -t rsa -f ~/.ssh/{키파일 이름} -C "{유저 구글 아이디}" 3. Key 값을 확인한다. cat ~/.ssh/beyondVision-RSAkey.pub 4. Key 값을 등록한다. 메뉴 > 설정 > 메타데이터 > SSH키 에 접속하여 방금 확인한 Key 값을 추가한다. 이후 이 값으로는 Putty에서 SSH 연결을 하거나 Mac에서 SSH 연결을 할 때 사용할 수 있다. Key ..

    [오류 해결] SLF4J: Class path contains multiple SLF4J bindings. 해결

    상황 SpringBoot 프로젝트를 Run 하던 도중 아래와 같은 오류가 발생했다. SLF4J: Class path contains multiple SLF4J bindings. 구글링을 해보니 SLF4J의 라이브러리가 중복되어 발생하는 문제였다. 해결 gradle이나 maven에서 중복 의존성을 제거하는 방법도 있지만 나는 중복해서 들어간 것은 없었다. 그래서 직접 프로젝트의 라이브러리 목록에서 확인하였다. (External Libraries에서 확인 가능) 많은 목록들 중 SLF4J 관련 라이브러리들이 보였고 이중 simple 이라는 이름이 포함된 jar 파일을 삭제하였다. rm C:\Users\CYS\.gradle\caches\modules-2\files-2.1\org.slf4j\slf4j-simpl..

    [오류 해결] CICD 구축 중 CodeDeploy 오류

    보호되어 있는 글입니다.

    [AWS] #3. RDS 설정 및 EC2 연결

    이번 포스팅에서는 AWS의 RDS를 생성하고, 이미 생성한 EC2와 연결하는 방법을 적어보겠습니다. 1. RDS 데이터베이스 생성 (1) AWS > RDS > 데이터베이스 > 데이터베이스 생성에 접근한다. (2) 아래와 같이 설정한다. 본인이 사용할 엔진 유형과 엔진 버전을 설정한다. 역시나 과금을 막기 위해 프리티어로 템플릿을 선택한다. 추후 DB를 연동할 때 꼭 필요한 정보이므로 DB 인스턴스 식별자, 마스터 사용자 이름, 마스터 암호를 꼭 따로 메모해두어야 한다. 위 구성은 프리티어 정책에 따라 기본값으로 유지한다. 외부에서 DB 접근이 가능하도록 퍼블릭 엑세스 항목을 "예"로 설정하고, VPC 보안 그룹을 새로 만든다. 초기 DB 이름 지정을 위해 추가 구성에서 이름을 작성한다. 2. RDS와 E..