목록2024/10 (8)
HJW's IT Blog
프로젝트의 마무리로 이제 AWS 에 호스팅을 해야 한다. AWS 에 대한 이해도를 올리고자 AWS 를 호스팅 서비스로 선택했다. RDS 를 사용할까 고민했지만, 시간 여건상 촉박할 것 같아 ec2 인스턴스에 직접 mysql 서버도 같이 띄우기로 했다. VPC 생성회고 : VPC 란 >> Virtual Private Cloud 로, 가상 네트워크이다. 다른 사용자와 격리된 사용자 전용 가상 네트워크 환경을 제공하며, IP 주소 범위 , 서브넷, 라우팅 등을 사용자가 직접 구성할 수 있다. VPC 생성 절차는 다음과 같다. 콘솔 접속 후 VPC 검색VPC 생성Name Tag 설정, IPv4 CIDR 블록 설정 (필자는 10.0.0.0/16) 사용 서브넷 생성회고: 서브넷이란 >> 큰 네트워크를 작은 네트..
시작하면서..우아한 테크코스 프리코스를 진행하던 중, TDD 라는 개념에 대해 알게 되었다. 그래서 이 방법으로 개발을 해보고자 2주차 과제에서 Test 를 먼저 작성하고 넘어가는 과정에서 이상한 점이 눈에 띄었다. Private 으로 선언된 메소드 들은 어떻게 테스트하지?TDD에 대한 이해도가 낮은 상태에서 적용시키려 하니 발생한 문제였다. 그래서 열심히 찾아본 결과, private 메소드에 대한 테스트를 하고 싶은 이유가 애초에 내가 TLD 방식으로 개발을 했기 때문이라는 결론에 다달았다. 그래서 이번 포스팅은 TDD를 제대로 짚고 넘어가고자 한다.TDDTDD란 무엇인가?Test Driven Development 란, 개발자가 기능 코드를 작성하기 전, 테스트 스크립트를 먼저 작성하는 개발 프로세스이..
Dependency Injection(DI) 이란?“Dependency injection is a programming technique that makes a class independent of its dependencies.” DI 란 객체간의 의존성을 외부에서 주입해주는 설계 패턴이다. 이를 통해 객체는 의존하는 객체들을 직접 생성하는 것이 아닌 외부에서 제공된 객체를 사용하게된다. 이를 통해 개발자는 SOLID 원칙의 의존성 역전 원칙 과 단일 책임 원칙을 달성할 수 있다.잠깐 의존성 역전 원칙과 단일 책임 원칙을 짚어보고 넘어가겠다. 의존성 역전 원칙 (Dependency Inversion Principle)DIP 란 무엇일까?DIP 란 상위 모듈이 하위 모듈에 의존하지 않아야 하며, 둘 ..
UnionFind란?Union Find 란 집합의 원소들이 어느 그룹에 속해 있는지를 빠르게 찾고 (Find) , 합치는 (Union) 연산을 효율적으로 처리하도록 설계된 자료구조이다.주로 서로소 집합(Disjoint Set) 문제를 해결되는데 사용되는데, 서로소 집합이란 공통된 원소가 없는 두 집합을 의미한다.기본 연산Union Find 는 이전에 말했듯이, Find 와 Union 연산을 지원해야 한다.Find : 주어진 원소가 속한 대표 를 찾는 연산이다.int[] find(int x, int y){ int[] root = this.parents[x][y]; if(root[0] == x && root[1] == y) return new int[]{x,y}; int..
Linked ListLinked List 특징이중 연결 리스트로, 각 요소는 이전 및 다음 요소에 대한 참조 를 가진다삽입 및 삭제 작업이 효율적이다요소들이 삽입된 순서대로 유지된다임의 접근 속도가 느리다 → 특정 인덱스 접근 시간 O(n)Queue 와 Deque를 지원메서드LinkedList list = new LinkedList();list.add(1); // 리스트 끝에 추가list.add(index, 1); // index 위치에 삽입list.addFirst(1) // 리스트의 첫번째에 삽입list.remove(); // 첫 요소 삭제list.remove(index); // index 위치 요소 제거list.removeLast()' // 마지막 요소 삭제list.get(index); // 특정 인..
GenericType 을 포괄적으로 일단 정의하겠다클래스나 메서드에서 타입을 미리 정하지 않고 외부에서 사용할 때 타입을 정하도록 하는 문법적 장치왜 사용하는가 → 어떠한 클래스를 만들었는데, 거의 똑같은 클래스를 또 만들어야 한다면 중복되는 부분이 많고 비효율적이다 → 중복을 최소화 하자!class Data{ int obj; Data(int obj){ this.obj = obj; } int getObj(){ return obj; } void printInfo(Integer obj){ System.out.println(obj.getClass().getName()); }}class Data2{ String obj; Data2(String ..
Staticjava 관점으로 static 은 ‘클래스의’ , 공통적인 이라는 의미를 가진다이러한 개념을 이해하기 java가 어떤 방식으로 동작하는지를 알 필요가 있다java application 을 실행하면 JVM 은 OS 로부터 메모리를 할당한다java 컴파일러가 java 소스코드를 바이트코드로 컴파일한다클래스 로더를 통해 JVM 메모리로 로딩한다로드된 클래스 파일들은 기계가 읽을수 없으므로 execution engine 을 통해 기계어로 변환된다이 과정에서 실행엔진에 의해 garbage collector 등도 동작된다즉, 자바는 용도에 따라 여러 영역으로 나누어 메모리를 관리한다. 메소드 영역 → 클래스 파일을 읽어 데이터를 저장하는 영역힙 영역 → 인스턴스가 생성되는 공간이다호출 스텍 → 메소드의 ..
Node.js 백엔드 개발자로 진로를 정했다 보니, javascript를 사용한 코테도 준비해야겠다는 생각이 들었다. 기존에 준비하던 C++ 에서 js 에 적응하려다 보니 어려운 것이 한두가지가 아닌것 같다.문제 분석우선, 참가자들이 상담을 요청할 때 가능한 가장 빠른 시간에 상담을 받을 수 있도록 멘토를 배정해야 한다. 이 문제의 핵심은 각 상담의 종류별로, 가장 먼저 끝나는 상담 시간을 사용하는 것이다.다음을 유의하여 풀어보자.맨토는 n 명이 있다상담의 종류는 k개가 있다멘토는 자신이 담당하는 유형의 상담 외에 다른 유형의 상담은 불가능 하다멘토는 한번에 한명만 상담이 가능하다상담이 끝났을때, 대기중인 인원이 있다면 해당 참가자와 상담을 시작한다.각 유형별로 멘토는 최소 1명 이상이어야 한다.문제 접..