반응형

개발자 9

[Algorithm] 정렬 - 병합 정렬(Merge Sort)

#요약 현대 컴퓨터의 아버지 '존 폰 노이만'이 제안 분할 정복(Divid & Conquer)의 전략을 도입 문제를 작은 문제로 분리하고 각각 해결한 후에, 결과를 모아서 원래 문제를 해결하는 전략 순환 호출을 구현 리스트의 길이가 0 OR 1일때 이미 정렬된 것 정렬되지 않는 리스트들 절반으로 잘바 비슷한 크기의 두 부분 리스트로 나눔 ➡️ Divid 각 부분 리스트를 재귀적으로 병합 정렬을 이용해 정렬 ➡️ Conquer 두 부분 리스트를 다시 하나의 정렬된 리스트로 병합 ➡️ Combine #구체적 설명 하나의 데이터 배열을 균등하게 절반으로 나눈다. 나누어진 2개의 배열을 정렬한다. 분할: 입력 배열을 2개의 부분 배열로 분할한다. 정복: 부분 배열을 정렬한다. 부분 배열의 크기가 충분히 작지 않..

Algorithm/Concept 2023.11.14

[Algorithm] 정렬 - 삽입 정렬(Insertion Sort)

#요약 Target과 그 이전 데이터들과 비교하며 정렬한다. 소규모 데이터에 효율적이다. #구체적 설명 두번째 요소부터 시작하여 배열을 순회 현재 요소를 Target이라고 하고, Target 이전의 요소들과 비교 Target이 이전 요소보다 작으면, 이전 요소를 한 칸 뒤로 이동 이를 Target이 이전 요소들보다 크거나 같을 때까지 반복하고, Target을 적절한 위치에 삽입 모든 요소에 대해 위 과정을 반복 #알고리즘 #코드 작성 import java.util.Arrays; public class SortAlgorithm { static int[] arr = new int[]{7, 1, 3, 2, 4, 5, 6}; static int cnt = 0; public static void main(Stri..

Algorithm/Concept 2023.11.13

[Algorithm] 정렬 - 선택 정렬(Selection Sort)

# 요약 인간이 정렬하는 과정과 매우 비슷 데이터를 한번에 읽고 정렬 진 # 구체적 설명 주어진 데이터 리스트 중에 최솟값을 찾는다. 그 값을 맨 앞에 위치한 값과 교체한다. 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체한다. # 알고리즘 # 코드 작성 - JAVA import java.util.Arrays; public class SortAlgorithm { static int[] arr = new int[]{7, 1, 3, 2, 4, 5, 6}; static int cnt =0; public static void main(String[] args) { selectionSort(arr); System.out.println(Arrays.toString(arr)); } private static ..

Algorithm/Concept 2023.11.13

[Containerization] DockerFile 작성과 이미지 생성 및 배포

Docker를 사용하기 위해서는 Docker 이미지를 생성해줘야 합니다. 그렇다면 Docke이미지를 어떻게 생성해줘야 할까요? 방법은 2가지가 있습니다. 도커허브에 있는 이미지를 가져오기 도커이미지를 생성해주는 Dockerfile을 작성해서 생성한다. 1. 도커허브에 있는 이미지를 가져오기 docker pull 아주 간단하죠? 한번 실습 해보도록 하겠습니다. docker pull alpine 이렇게 apline 이미지를 내려받을 수 있습니다. pull 이라는 용어가 git과 매우 유사하지 않나요?? docker images 해당 명령어를 통해서 제가 pull한 이미지를 확인할 수 있습니다. 그렇게 어렵지는 않죠?? 그렇다면 도커허브에 있는 이미지를 알아야겠죠?? 도커의 공식웹사이트를 통해 알 수 있답니다..

[Network] UDP 헤더

UDP는 바로 한번 헤더 구조에 대해 알아보겠습니닷! ???: 뭐여 TCP와 다르게 UDP는 헤더를 먼저 살펴보았습니다. 너어어어무 Simple하지 않나요?? TCP는 데이터검증에 아주 목을 매달았지만 UDP는 그렇지 않습니다. 그렇기때문에 빠르죠! 또한, 송수신 장치간의 비연결형 서비스를 지원합니다. 출발지에서 데이터를 보낼때 목적지에서 받던 말던 데이터를 보내게 되죠 데이터그램간의 전후 관계를 고려하지 않고 전송!! 좀 매너가 없긴 합니다 ㅋㅋㅋㅋㅋㅋ 아무튼 오늘은 UDP 해더를 알아보았습니다 ㅎㅎ TCP가 궁금하다면 2023.09.14 - [Computer Science] - TCP 헤더를 알아보쟈!

[Network] TCP 헤더

TCP헤더에 대해서 알아보자 일단, 헤더를 알아보기전에 TCP의 특성을 알면 왜 헤더를 요따구로 구성했는지 알 수 있을것 같다 연결지향형 서비스 제공 신뢰성 있는 데이터 전송 보장 이제 한번 헤더 구조에 대해 알아보겠습니닷! 일단 먼저 헤더의 구조에 대해 볼까요?? 출발지 포트 번호 비트: 16비트 임의의 번호 사용 목적지 포트 번호 비트: 16비트 주로, Well-Know 포트 번호 순서 번호(Sequence Number) TCP 세그먼트에 대한 순서번호를 표시 목적지에서 재조립할때 사용 수신 확인 응답 번호(ACK Numer) 수신 장치에서 발신장치로 세그먼트의 전송 성공 여부를 알려주기 위해 사용 헤더 길이 최소 20바이트 , 최대 60바이트가 가능 예약 비트 먼 훗날을 위해~~ 자리를 남겨둠 AC..

[Network] TCP/IP (Transmission Control Protocol/Internet Protocol)

TCP/IP 는 무엇일까요? 인터넷을 사용하는 모든 통신의 기본이 되는 프로토콜 프로토콜이 한 개만 있는 것이 아닌 여러가지 프로토콜의 조합 TCP/IP를 기반으로 BAN,PAN,MAN,WAN 구간의 장치들이 데이터 교환 OSI 7 Layer와 달리 4개의 계층으로 표현됨 TCP는 통신 방식, 포트는 서비스, IP는 주소 수 많은 프로토콜들이 IP주소를 기반으로 동작 1 계층 - Network Access Layer(네트워크 엑세스 계층) OSI 7 계층의 물리 계층과 데이터 링크 계층의 역할 수행 프레임의 송신과 수신을 담당하는 계층 ARP, RARP를 통해 MAC 주소와 IP주소를 둘다 알아낸다 에러 검출 기능이 있고, 패킷을 프레임화 2 계층 - Network(Internet) Layer(네트워크[..

[JAVA] JVM 메모리 구조

안녕하시렵니까? 검은까마귀입니다 JVM메모리 구조에 대해 알아보는 시간을 갖겠습니다. JVM이란 뭘까? 먼저 아주 똑똑한 쳇~ GPT에게 물어보겠습니다 나: JVM에 대해 설명해줘~ JVM은 "Java Virtual Machine"의 약자로, 자바 프로그램을 실행하기 위한 가상 머신입니다. JVM은 자바 프로그램을 컴파일한 바이트 코드를 실행하고, 다양한 운영 체제 및 하드웨어 환경에서 동작하는 역할을 합니다. 아래에서 JVM에 대한 주요 특징과 기능을 설명하겠습니다: 1. 바이트 코드 실행: 자바 소스 코드는 자바 컴파일러를 통해 바이트 코드로 변환됩니다. 이 바이트 코드는 JVM에서 실행됩니다. 이로써, 자바 프로그램은 플랫폼에 독립적이며, 한 번 컴파일한 코드를 여러 운영 체제에서 실행할 수 있습니..

Language/Java 2023.09.12

[Network] HTTP(HyperText Transfer Protocol)

우리가 항상 인터넷 URL을 입력할때 앞에 보이는 https://www.naver.com 네이버 네이버 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요 www.naver.com 여기서 http / https는 무엇일까? HyperText Transfer Protocol의 약자로써 단어를 한번 뜯어보도록하자 HyperText란? 텍스트 문서에서 하이퍼링크를 통해 다른 문서 또는 정보와 연결할 수 있는 형식 태초의 인터넷은 지금의 기술 발전과 다르게 백과사전을 대체하기 위함이지 않을까요? 정보와 정보를 연결하고 빠르게 정보를 탐색할 수 있도록 하기 위해서!! 우리가 예를 들어서 "동물"을 백과사전에서 검색을 했다면 생물학적인 의미: 다다른 생명체 국가(Animalia)에 속하는 다양한 유기체 중 하나로,..

반응형