전체 글 90

[network] 혼자 공부하는 네트워크 04-1 전송 계층 개요: IP의 한계와 포트(241017)

방학 때 네트워크 강의를 쭉 들었었는데 그 후로 시간이 꽤 지났다.(네트워크 지식도 옅어졌다) 강의만 듣고 따라가기에는 놓치는 내용들이 있을 수 있어서 책으로도 공부해 보려고 했으나 진도가 안 나갔다. 그래서 강의 업로드 일정에 맞추어 공부를 미루게 되었고.. 드디어 강의가 어제 업데이트되어서 지금 이렇게 글을 쓴다. 핳.. 그래도 올라오는 모든 강의들에 대해서는 꼭꼭 글로 정리할 것이다! 서론이 길었고 이제 오늘의 주제를 살펴보자🏃‍♂️🏃‍♀️전송 계층네트워크 계층과 응용 계층 사이에 위치하는 계층대표적인 기능: IP 한계 보완, 응용 계층의 프로세스 식별- IP 한계 보완: 신뢰할 수 있는 통신과 연결형 통신 기능 제공- 응용 계층의 프로세스 식별: 포트 번호 활용cf. TCP/IP 모델 확장: ..

network 2024.10.17

[알고리즘] 그래프 탐색 알고리즘 - DFS, BFS

(학교 수업 자료를 참고하여 작성하였습니다.) DFS, BFS는 탐색 알고리즘으로 브루트포스에 포함된다. 주로 그래프와 트리를 순회할 때 사용되고, 탐색 방법과 목적에는 약간의 차이가 있다. 그치만 코딩테스트 문제들에서 DFS, BFS를 따지지 않고 탐색만 하는 것으로 해결되는 경우도 많다고 한다. 그래프: 연결되어 있는 객체 간의 관계를 표현하는 자료구조트리: 그래프의 한 종류로, 사이클이 없는 N개 노드, (N-1)개 간선을 가진 연결된 그래프그래프는 인접 행렬(O(N^2)), 인접 리스트(O(N+E)) 형태로 구현한다. 깊이 우선 탐색, DFSDFS: Depth-First Search의 약자로 깊이 우선 탐색을 말한다한 방향으로 갈 수 있을 때까지 가다가 더 이상 갈 수 없게 되면 가장 가까운 갈림..

[AWS] 터미널 명령어 (-ing)

용도명령어설명폴더 접근cd 점에 따라 접근 위치 달라짐상위 폴더로 이동cd ..점 두 개현재 위치cd .점 한 개사용자 홈 디렉토리로 이동cd ~ 현재 위치한 경로 출력pwdprint working directory현재 경로의 폴더/파일 확인, 목록 출력ls뒤에 조건을 무엇을 붙이느냐에 따라 달라짐숨겨진 폴더, 파일까지 목록 출력ls -a파일/폴더 앞에 .이 붙으면 숨김 처리하겠다는 표시, 따라서 경로 작성 시 주의파일 목록을 더 상세히 출력ll, ls -l(long)ls의 상세 버전, ll(= ls -l)이지만 alias로 지정 안 되었을 수 있음 지정한 위치에 해당 문자열을 가진 파일 찾기 grep '문자열' [파일명]대상을 *라도 지정해야 탐색 가능파일 생성touch [파일명] 파일 내용 출력ca..

AWS 2024.10.13

[JAVA] 열거형 enum

열거형 enumenumeration(열거, 목록)의 약자허용 가능한 값 제한특정 값들의 집합을 나타내는 데이터 타입, 서로 연관되어 있는 '미리 정의된 상수 집합'일반적으로 이름과 값의 쌍으로 구성되어 있음열거 상수는 대문자로 작성코드의 가독성, 안정성 향상, 싱글톤 패턴 구현public enum Day { MON, TUE, WED, THUR, FRI, SAT, SUN;}열거 상수의 데이터위처럼 열거 상수 이름만으로도 선언할 수 있지만, 열거 상수 안에 필드를 두어 세부적으로 접근 가능필드 뿐만 아니라 메서드도 가능하여 각각의 기능을 처리할 수 있다public enum Day { MON("월"), TUE("화"), WED("수"), THUR("목..

JAVA 2024.10.09

[Spring] OAuth 2.0 원리 이해

생활코딩 님의 유튜브 [WEB2-OAuth] 강의들을 보고 정리했습니다. 1. 수업 소개accessToken은 id, pw가 아니다그들의 서비스 중 내 서비스가 필수적인 것만 부분적으로 허용accessToken 획득해서 그들의 서비스에 접근 2. 역할Resource Server 데이터 가지고 있는 서버 , Authorization Server 인증 처리 전담 (공식매뉴얼에서는 분리)Resource Owner 사용자Client 내가 만드는 서비스 3. 등록Client가 Resource Server를 이용하기 위해서는 승인을 사전에 받아야 함(register)Client ID(서비스 식별자), client secret(외부 노출되면 X; 엄청난 보안사고), authorized redirect URIs(Res..

Spring 2024.10.06

[코딩테스트] 오일러 피

책 [Do it! 알고리즘 코딩 테스트 - 자바 편;김종관 지음]을 참고하여 작성하였습니다.  오일러 피 함수 P[N]코딩 테스트에 자주 나오지는 않으나 알고 있어야 보임1부터 N까지 범위에서 N과 서로소인 자연수의 개수원리는 에라토스테네스('배수를 제거한다'는 원리)와 비슷다른 점은 현재 배열의 값이 소수일 때, 그 배수를 제거하기 위해 배열의 끝까지 P[i] = P[i] - (P[i] / K) 연산을 수행한다는 것(K는 현재 선택된 수, i는 K의 배수)이 과정은 N에서 해당 소인수 K의 배수를 제거하고 남은 수의 개수를 반영한다실제 구현할 때는 N까지를 배열로 구현하지 않아도 되는데, 1부터 N까지의 서로소 개수를 result 변수로 생각하는 것이다. 그래서 처음에 N을 넣고 K를 2부터 시작해 N..

[JAVA] 직렬화, 역직렬화 개념

직렬화Object를 ByteStream으로 변환하는 과정객체나 데이터 구조를 네트워크나 저장소(ex. 배열 버퍼 또는 파일 형식)를 통한 전송에 적합한 형식으로 변환하는 프로세스[https://developer.mozilla.org/ko/docs/Glossary/Serialization]자바 언어에서 사용되는 Object 또는 Data를 다른 컴퓨터의 자바 시스템에서도 사용할 수 있도록 바이트 스트림 형태로 연속적인 데이터로 변환하는 포맷 변환 기술 JVM의 힙 혹은 스택 메모리에 상주하고 있는 객체 데이터를 직렬화를 통해 바이트 형태로 변환하여 데이터베이스나 파일과 같은 외부 저장소에 저장해 두고, 다른 컴퓨터에서 이 파일을 가져와 역직렬화를 통해 자바 객체로 변환하여 JVM 메모리에 적재한다바이트 스..

JAVA 2024.10.02

[Spring] 빌드 개념, 의존성 추가와 플러그인 설치 차이

(아래 내용은 참고 블로그의 내용을 요약 정리한 내용입니다.) 컴파일사용자가 작성한 소스 코드를 컴퓨터가 이해할 수 있는 언어, 즉 기계어로 번역하는 일Java 소스코드는 Java 컴파일러에 의해 바이트 코드(byte code)로 변환된다이때 바이트 코드는 특정 운영체제나 아키텍처에 종속되지 않은 채 Java 가상머신(JVM)에서 실행된다Java 컴파일러가 소스 코드를 바이트 코드로 만들고, JVM에서 해당 코드를 이용해 프로그램을 실행한다 - Interpretation이 JVM에서 컴파일된 기계어 분석하고 실행하는 프로세스빌드컴파일된 코드를 실제 실행할 수 있는 상태로 만드는 일우리가 IDE에서 코드를 작성한 후 'run'을 실행하는 것이 내부에서 빌드 도구(Gradle, Maven)을 통해서 빌드하..

Spring 2024.09.30

[JAVA] 큐(Queue), 덱(Deque) 구현체, 메서드 정리

큐(Queue)대기 줄처럼 삽입하는 곳과 제거하는 곳이 각각 하나씩인 자료 구조먼저 들어온 순서대로 나간다(= FIFO) cf. 스택은 LIFO 자바에서는 Queue 인터페이스를 제공하고 있고, 그에 따른 구현체는 다양하다. 대표적으로 LinkedList()를 사용한다.(PriorityQueue - 정렬 가능, ArrayBlockingQueue, ConcurrentLinkedQueue ...) https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Queue.htmlQueue queue = new LinkedList(); 삽입 메서드- 요소를 삽입할 때 사용한다. add(): 삽입 성공 시 true를 반환하고, 큐에 자리가 없다면 I..

JAVA 2024.09.30

[알고리즘] 병합 정렬(MergeSort) 핵심 아이디어

책 [Do it! 알고리즘 코딩 테스트 - 자바 편;김종관 지음]을 참고하여 작성하였습니다.  분할 정복(divide and conquer) 방식: 데이터를 분할하고 분할한 집합을 정렬하며 합치는 알고리즘가장 작은 데이터 집합(크기 1)으로 나눈 후 2개의 그룹을 합치면서 정렬2개의 그룹을 합칠 때는 투 포인터를 이용하여 둘 중 더 작은 수를 결과 배열에 먼저 저장그런 다음 포인터를 1씩 증가시키는데, 어느 한 포인터가 배열의 끝에 먼저 도달하면 나머지 배열의 값들도 옮겨 붙임   시간 복잡도는 평균 O(nlogN)- 크게 보면 row 하나 당 n번의 데이터 접근- 병합 과정에서 logN번만큼 정렬버블 정렬(swap)과 연관지은 핵심 아이디어- 버블 정렬에서는 swap이 몇 번 일어날까- 첫째 줄에서 5..