본문 바로가기

Develop167

dfs 를 이용하여 조합 구하기 오늘은 dfs를 이용한 조합 구하기를 정리해볼꺼다. 조합은 서로다른 n 개중에 r개를 선택하는 경우의 수를 의미한다. 조합을 다른식으로 표현하면 아래처럼 표현이 되는데 알고리즘을 구현할때는 아래 방법을 알고 있어야 한다. 그리고 이를 dfs를 이용해 내려가다 보면 이런 생각이 들것이다. "중복되는 것들이 생기네?" 이렇게 중복되는 값을 또 재귀로 돌리다보면 분명 성능이 좋지 않다. 이를 위해 다이나믹 프로그래밍 즉 dp를 이용하여 효과적으로 구현할 수가 있다. 아래는 구현안 예제 코드이다. import java.util.Scanner; public class Combination { static int[][] dp ; public static void main(String[] args) { Combina.. 2021. 9. 12.
[Spring Cloud MSA] Eureka Server 구동하기 오늘은 Eureka Server를 직접 구동해보려고한다. Eureka는 MSA 에서 마이크로서비스들의 정보를 레지스트리에 등록할 수 있게 하고, 마이크로 서비스의 동적인 탐색과 로드밸런싱을 할 수 있게 도와주는 역할을 한다. Eureka는 Eureka Server와 Eureka Client (Zuul 과 마이크로서비스), 로 구성되는데, Eureka Server에는 마이크로서비스들에 대한 정보가 등록되어 있다. 1.MSA를 구성하는 서비스들의 정보(IP, Port, AppName, instanceId)를 Eureka Server에 전달 2. Service들이 정보를 사용하려 할때 정보를요청 3. 해당 정보를 이용하여 통신 수행 Intellij 환경에서 한번 프로젝트를 만들어보자. 이전에 내가 Spring.. 2021. 9. 10.
dfs를 이용한 순열 구하기 하이 .. 전에 dfs 알고리즘에 대해 글을 올린적이 있다. https://devkingdom.tistory.com/263?category=956302 DFS (Depth-First Search) 알고리즘 정리 오늘은 알고리즘에서 가장 중요한 개념중에 하나인 DFS에 대해 설명을 드리고자 한다. DFS는 다양한 경우의 수를 구할때 굉장히 많이 쓰이는 알고리즘이나 꼭 익혀두길 권장한다. 일단 코드소스 devkingdom.tistory.com 오늘은 우리가 고등학교 시절 수학시간에 배웠던 순열, 조합 을 dfs 알고리즘을 이용해서 구현해보려고한다. 중복순열 중복순열은 서로 다른 n개 중 r 개를 순서를 고려해서 나열하는 순열을 의미한다. 기로호는 nΠr 로 나타낼 수 있다. 이를 dfs로 각 경우의 수를 p.. 2021. 9. 6.
[Database] Join 정리 오늘은 간단하게 Join에 대해 정리해 보고자한다. Join은 크게 다섯가지로 생각하면된다. 아래 그림을 보자. 보시면 집합의 개념으로 Join을 이해하면 쉽게 이해할수 있다. 먼저 Inner Join 같은 경우에는 집합의 교집합과 같다. 조인이 되는 키를 기준으로 둘 이상의 테이블에 존재하는 데이터를 조회하는 것이고, 보통 Simple Join이라고 부르기도 한다. 여기서 Null 인 데이터는 포함되지 않는다. 사용 예시는 아래와 같다. SELECT * FROM TABLE1 t1 INNER JOIN TABLE2 t2 ON (t1.key=t2.key); 다음 Outer Join은 두테이블에서 지정된 쪽 ( Left or Right or Full) 의 모든 결과를 보여주면서 반대쪽에 매칭되는 쪽까지 보여주.. 2021. 8. 21.
[JPA] Entity의 4가지 상태 하이 ... 오늘은 엔티티의 4가지 상태를 나타내는 Entity의 생명주기를 정리해 두려고 한다. Entity LifeCycle 1. 비영속 상태 (new / transient) Book book = new Book(); // 단순하게 객체로 생성된 상태임. - 순수한 객체 상태 - 영속성 컨텍스트와 관련이 아예 없는 상태를 의미 2. 영속 상태 (managed) em.persist(book); // 객체를 영속성 컨텍스트에 저장한 상태 - EntityManager를 통해 엔티티를 영속성 컨텍스트에 저장한 상태 - 영속성 컨텍스트가 해당 엔티티를 관리하게 된 상태임 3. 삭제 (removed) em.remove(book); // 영속성 컨텍스트, db에서 삭제 - 엔티티를 영속성 컨텍스트와 db에서 삭제.. 2021. 8. 8.
[Database] 트랜잭션이란 뭘까? 오늘은 트랜잭션에 대해 정리를 해두려한다. 트랜잭션(Transaction)이란? 트랜잭션(Transaction)의 정의를 내려보자면, 트랜잭션은 Database의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업 단위나 한번에 수행되어야할 일련의 연산을 의미한다. 트랜잭션(Transaction)의 특징 트랜잭션의 특징으로는 첫째, Database 시스템에서 병행제어 및 회복 작업이 수행될 때 처리 되는 작업의 논리적 단위 이며, 둘째, 사용자가 어떠한 시스템에 서비스를 요청할 때 시스템이 응답하기 위한 상태 변환 과정의 작업단위 이고, 셋째, 각 트랜잭션은 Commit 혹은 Rollback 되어야 한다. 여기서 Commit 연산은 하나의 논리적인 단위인 트랜잭션에 대한 작업이 성공적으로 끝났으며.. 2021. 8. 7.
[Design Pattern] Adapter 패턴 하이.. 요즘 전에 했던 프로젝트를 복기해보면서 어떤 기술을 썼는지 하나씩 정리해 가고 있다. 오늘은 전에 회사에서 간편로그인 시스템을 구축할때 썼던 패턴이었던 Adapter 패턴에 대해 정리해보려한다. 개발 당시 이런 이슈가 있었다. 기존에 사용하던 로그인 서버가 있었고, 내가 구축하던 간편로그인 기능을 해당 서버에 추가해야하는 상황이 발생했다. 그러기 위해서는 기존 로그인 모듈이 있던 클래스를 고쳐야 하는 위험?이 있었는데, 이를 Adapter 패턴으로 잘 풀어 냈다. Adpater 패턴을 이용하면 기존의 클래스를 고치지 않고 필요한 기능은 별도의 Adapter를 구현하여 이용할 수 있다. 이 Adapter 에서는 기존 클래스 기능을 그대로 사용할 수도 있고, 수정해서 사용할 수도 있고 , 새롭게 고.. 2021. 8. 5.
[PostgreSQL] 외부접속 가능하게 설정하기 오늘은 PostgreSQL 에서 외부에서 접속이 가능하도록 하는 설정을 정리해두려고 한다. 혹시 설치하는 방법이 궁금하면 아래의 링크를 보고 따라해보면 금방 알수 있다. https://devkingdom.tistory.com/266 먼저 해줘야할게 postgreSQL의 기본 포트인 5432 방화벽 포트를 개방해줘야한다. firewall-cmd --permanent --zone=public --add-port=5432/tcp firewall-cmd --reload 방화벽을 열고나면 두가지 설정파일의 정보를 변경해줘야한다. db같은 경우에는 특정 아이피만 접속하게 해주는게 맞는데, 실습이니... 전체 구간에 대해 접속이 가능하도록 우선 바꿔주려 한다. 다음은 postgre에 접속하여 data 디렉토리의 위치.. 2021. 8. 2.
[PostgreSQL] PostgreSQL 설치 및 기본 동작 방법 오늘은 리눅스 환경 (CentOS7) 에서 간단하게 PostgreSQL을 설치하고 기본적으로 운영하는 방법에 대해 포스팅 해보려고 한다. 먼저 설치전에 yum udate를 해주자. yum update -y 다음은 만약 인터넷 환경이 되신다면 yum install을 통해서 PostgreSQL 을 설치하자. sudo yum install -y postgresql-server.x86_64 postgresql-devel.x86_64 postgresql-contrib.x86_64 postgresql-docs.x86_64 다음은 잘 설치 되었는지 확인을 해보자. yum list insalled | grep postgresql 다음은 db 계정을 만들어주자. 아래 명령어를 쳐주면 postgres라는 이름으로 db가 .. 2021. 8. 2.