목록전체 글 (11)
두's 스토리

절차지향 vs 객체지향 절차지향은 순차적으로 실행에 초점이 되어 있고 객체지향은 객체간의 관계/조직에 초점을 두고 있다. 절차지향은 데이터를 중심으로 함수를 구현 객체지향은 기능을 중심으로 함수(메서드)를 구현 절차지향 프로그래밍 물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요하고 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법. 대표적으로 C언어 장점 단점 컴퓨터의 처리구조와 유사해 실행속도가 빠름 유지보수가 어려움 실행 순서가 정해져 있으므로 코드의 순서가 바뀌면 동일한 결과를 보장하기 어려움 디버깅이 어려움 객체 지향 프로그래밍(OOP) 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가지는 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍..
OSI 7layer와 TCP/IP 4layer 1. TCP 전송을 제어하는 프로토콜, 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜 TCP는 패킷을 추적 및 관리, IP는 데이터의 배달을 처리 연결형 서비스로 가상 회선 방식을 제공한다. 발신지와 수신지를 연결하여 패킷을 전송하기 위한 논리적 경로를 배정. 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다. 목적지와 수신지를 확실히 하여 정확한 전송을 보장하기 위해 세션을 수립하는 과정 흐름 제어 및 혼잡 제어. 높은 신뢰성을 보장한다. UDP보다 속도가 느리다. 전이중(Full-Duplex), 점대점(Point to Point) 방식. 흐름제어와 혼잡제어 흐름제어..

스프링 프레임워크 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크 동적인 웹 사이트를 개발하기 위해 여러 가지 서비스 제공 2003년 6월 최초 공개 후 2019년 3월 기준 최신 버전 5.1.5 Framework 개발할 때 설계 기본이 되는 뼈대나 구조 / 환경 (문제 영역을 해결한 재사용, 확장 가능한 라이브러리) 특징 "경량 컨테이너"로서 자바 객체를 직접 관리 객체 생성, 소멸과 같은 라이플 사이클 관리 스프링으로부터 필요한 객체를 얻어올 수 있다. 제어 역행(IoC : Inversion of Control) 컨트롤의 제어권이 사용자가 아닌 프레임워크에 있어서 필요에 따라 스프링에서 사용자 코드를 호출 의존성 주입(DI : Dependency Injection) 각각의 계층이나 서비스들 간에 ..

JVM 이란 Java Virtual Machine 자바 바이트 코드를 OS에 맞게 해석해주는 역할 .java 파일은 사람이 읽기 쉬운 코드 .class 파일, 즉 바이트 코드(중간코드) = 기계어 x JVM은 OS가 바이트코드를 이해할 수 있도록 해석해줌 바이트 코드는 JVM 위에서 OS에 상관없이 실행 - 자바의 장점 JVM 구조 JVM 은 크게 Class Loader, Runtime Data Areas, Execution Engine 3가지로 구성 1. Class Loader JVM내로 클래스를 로드하고 링크를 통해 배치 런타임시 동적으로 클래스를 로드한다. 2. Execution Engine' Class Loader를 통해 JVM 내의 런타임 데이터 영역에 배치된 바이트 코드를 실행 자바 바..

다익스트라 한 정점에서 다른 끝점 까지 가는 최단거리를 구할 때 사용 플로이드 워셜 알고리즘은 정점 전부에 관한 정보를 업데이트하여 N^3이란 시간복잡도를 가진다. (=AllPairShortest) 그러나, 다익스트라는 시작점을 고정하고 DP배열을 업데이트 하는 방식을 통해 n^2이란 시간복잡도를 가짐. 다익스트라에서 최종적으로 나온 DP 배열은 시작점에서 그 점까지의 거리를 의미 NODE 1 2 3 4 5 DP 0 3 5 INF 8 다음 표처럼 시작점을 정해주고 모든 점에 대해 DP를 업데이트하면 최단거리를 구할 수 있음 1에서 3까지의 거리는 5, 1에서 4까지의 거리는 INF를 의미 백준 1753 최단경로 일반적으로 인접행렬 W 을 이용하여 DP를 업데이트 방문노드 1 2 3 4 5 INF INF ..

알고리즘에서 DP를 배울 때 유명한 문제. 0/1 배낭 채우기 알고리즘 백준 1535 안녕 풀이 DP 0 1 2 ... 21 22 ... 79 80 {1} 0 20 20 20 20 20 20 20 20 {1, 21} 0 20 20 20 30 (Max(dp[21], dp[0]+W[21]) 50 (Max(dp[22], dp[1]+W[21]) 50 50 50 {1, 21, 79} 0 20 20 20 30 50 50 50 50 1만 들어왔을 때 고려, 21 들어왔을 때 고려, 79 들어왔을 때 고려하는 방식을 통해 dp배열을 업데이트한다. 새롭게 고려하는 항목이 21이라고 했을 때 W[21]이 플러스 되는 부분이다 뒤에서부터 업데이트를 해야 제대로 해결 import java.util.Arrays; import ..
순열 & 조합 (Permutation & combination) 수를 나열함에 있어서 순서를 생각하느냐 아니냐에 따라 순열과 조합을 구분할 수 있다. 순열(nPr) n개의 수에서 r개의 수를 뽑아 순서를 생각하고 나열하는 방법 반복문을 이용한 순열 public class Permutation { public static void main(String[] args) { int arr[] = {1,2,3}; for (int i = 0; i < arr.length; i++) { // int i1=arr[i]; for (int j = 0; j < arr.length; j++) { // int i2 = arr[j]; if(i!=j) { for (int k = 0; k < arr.length; k++) { if..