CS

CS/자바 & 스프링

[Java] Stream.toArray()

Java의 Stream.toArray() 메서드는 스트림의 요소를 배열로 변환하는 데 사용됩니다. 변환할 배열의 타입을 지정하기 위해 메서드 참조 또는 람다식을 사용합니다. 이를 단계적으로 살펴보겠습니다.1. 기본 사용법toArray()는 두 가지 방식으로 사용할 수 있습니다.(1) 기본 배열 반환 (Object[])스트림의 모든 요소를 Object 배열로 변환합니다.Stream stream = Stream.of("A", "B", "C");Object[] array = stream.toArray();System.out.println(Arrays.toString(array)); // 출력: [A, B, C]이 방법은 간단하지만, 반환되는 배열 타입이 Object[]로 고정되므로 타입 캐스팅이 필요할 수 있..

CS/네트워크

[Network] 쿠키(Cookie), 세션(Session)이란?

쿠키와 세션의 이해를 돕기위해 아래의 상황을 확인해 보자. 얌념이는 네트워크 책을 사기 위해 자주 이용하는 온라인 서점 사이트에 접속했다. 로그인 창을 열자 자동 로그인 메시지가 떴고 얌념이는 저장된 아이디와 비밀번호로 로그인을 하였다. 원하는 책을 장바구니에 골라 담고 결제를 하려는 순간, 저녁 시간이 되어 얌념이는 저녁을 먹으러 갔다.저녁을 먹고 다시 돌아와 결제를 시도하자 로그인이 풀려 다시 로그인 페이지로 돌아갔다. 얌념이는 결국 다시 로그인을 하고 장바구니에 담긴 책을 결제하였다. 이 상황에서 어떤 것에 쿠키가 활용되고 세션이 활용되었을까? 쿠키 쿠키는 클라이언트, 브라우저의 로컬에 key-value 형태로 저장되는 데이터이다. 특징 브라우저의 로컬에 key-value 형태로 저장됨 유효기간이 ..

CS/알고리즘

[알고리즘] LCS(Longest Common Substring), 최장 공통 부분 수열 구현

LCS(Longest Common Substring) 정의 최장 공통 부분 수열. 주어진 여러 개의 수열의 부분 수열이 되는 수열들 중에 가장 긴 것을 찾는 문제이다. 백준의 이 문제를 보면 어떤 것인지 이해할 수 있다. (LIS: Longest Increasing Subsequence와 비슷하지만 다른 문제다) LCS는 항상 유일하지 않기 때문에 보통 길이를 묻는 문제가 나온다. 알고리즘 여러 문자열의 LCS를 효율적으로 구하기 위해서 DP가 사용된다. 두 문자열 사이의 LCS 길이를 저장하는 2차원 배열 LCS를 만들고, 아래와 같은 방식으로 배열을 채운다. X, Y 문자열 앞에 0을 넣는 이유는, i=1 || j=1일 때 Xi-1, Yj-1 값을 참조해야 할 수도 있기 때문에 만들어두는 것이다. 아..

CS/알고리즘

[알고리즘] 위상 정렬 (Topological sort) 동작 과정, 예제

위상 정렬(Topological Sorting)정의방향 그래프에서 각 정점들이 어떤 순서로 방문되어야 하는지를 결정하는 알고리즘.그래프에서 어떤 정점이 다른 정점에 의존하는 관계가 있을 때, 그래프를 순서대로 방문하기 위해 위상 정렬을 사용할 수 있다.위상 정렬은 다양한 분야에서 사용된다. 예를 들어, 컴파일러에서는 소스 코드의 의존성을 파악하기 위해 위상 정렬을 사용한다. 그 외에도 작업 스케줄링, 프로젝트 관리, 그래프 이론 등 다양한 분야에서 유용하게 사용된다. 예제https://www.acmicpc.net/problem/14567선수과목처럼 어떤 상태에 도달하기 위해 우선적으로 도달해야 할 상태가 있고, 이것을 준수한 채 모든 정점을 방문할 수 있는 순서를 구하는 것이다. 해당 문제에서는 그래프의..

CS/운영체제

[운영체제] Page Fault, Thrashing

Page Fault 가상메모리에서 물리 메모리에 올려두지 않은 페이지에 대한 요청이 들어와 발생하는 예외 페이지 폴트가 발생하면 운영 체제는 그 데이터를 메모리로 가져와서 마치 페이지 폴트가 전혀 발생하지 않은 것처럼 프로그램이 계속적으로 작동하게 해준다. 원인 Major Page Fault 요청한 페이지가 물리 메모리로부터 page-out 되어 보조기억장치의 가상 메모리에 저장되어있다면 해당 페이지를 다시 물리 메모리로 page-in 해야 하는데 이것을 major page fault라고 한다. major page fault는 Disk I/O를 발생시킨다. Minor Page Fault 요청한 페이지가 물리 메모리에는 로드되었지만 MMU에는 로드되어있지 않다고 표시된 경우 이를 Minor page fau..

CS/운영체제

[운영체제] 가상메모리(Virtual Memory), 페이지 교체(Page Replacement)

Virtual memory 프로세스 전체가 메모리에 올라와 있지 않아도 실행이 가능하도록 하는 기법 당장 실행에 필요한 부분만 주기억장치(RAM)에 저장하고, 나머지는 보조기억장치(HDD)에 두고 동작하도록 하는 방법. 프로세스의 일부 메모리만 올려서 전체 프로세스를 병렬적으로 돌리게 함. 물리적 메모리에 제약을 덜 받으며 더 많은 프로세스를 한꺼번에 돌릴 수 있다. 장점 프로그래밍 용이성 이용률, 처리율 상성 단점 메모리 디스크 간 이동량 증가 → 속도 떨어짐, 교체 공간 확보 필요 페이지 부재 시 처리 방법 필요 왜 필요한가 프로그램이 실행되려면 우선 주기억장치에 들어가야 하는데, 다음과 같이 크기 5의 프로그램이 실행을 위해 크기 10의 주기억장치로 들어갈 때는 아무런 문제가 발생하지 않는다. 하지..

CS/알고리즘

[알고리즘] Prim VS Dijkstra, 프림 다익스트라 차이점

Prim VS Dijkstra두 알고리즘은 동작 방식은 비슷하지만 사용의 목적이 다르다.특징프림 알고리즘다익스트라 알고리즘목적최소 신장 트리(MST) 생성출발점으로부터 각 노드까지의 최단 경로 탐색비슷한 알고리즘Kruskal벨만 포드, 플로이드 와샬결과모든 노드를 최소 비용으로 연결하는 트리출발 노드에서 다른 노드로 가는 최단 거리간선의 가중치음수 간선 허용 가능음수 간선 허용 불가시작점시작점은 임의의 노드여도 무관출발점이 명확하게 정해져야 함중간 목표매 단계에서 MST에 포함되지 않은 가장 비용이 적은 간선을 선택매 단계에서 출발점으로부터 최단 거리 노드를 선택동작 방식1. 특정 노드를 MST에 추가2. 해당 노드(MST 대표)에서 다른 노드들 까지의 거리를 구함 -> dist[]3. dist[] 기준..

CS/자바 & 스프링

[JAVA] JVM, JVM 메모리 구조

JVM (JAVA Virtual Machine) 정의 자바를 실행하기 위한 가상머신 ARM 아키텍쳐 같은 하드웨어는 레지스터 기반으로 동작하는데 비해 JVM은 스택기반으로 동작한다. 역할 자바 애플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행 JAVA와 OS사이에서 중개자 역할을 수행하여 JAVA가 OS에 구애받지 않고 재사용을 가능하게 만듦 메모리관리, Garbage collection을 수행 구조 자바로 작성한 코드는 실행되기까지 크게 세단계를 거친다. 자바 소스코드(.java)가 작성됨 컴파일러가 소스코드(.java)를 바이트 코드(.class)로 변환 클래스 로더가 컴파일된 바이트 코드(.class)를 JVM의 실행 영역에 로드한 뒤 실행 더 구체적인 실행 과정은 접은 글을 참..

CS/자바 & 스프링

[JAVA] 변수와 메서드, 데이터 타입 (기본형, 참조형)

변수 데이터를 저장하기 위해 메모리에 공간을 만들어 할당하고, 이름을 부여한 것 클래스 변수 (Class variables) 클래스에서 선언된 변수. static 이 붙으면 클래스 변수, 클래스 메서드가 된다. (아무것도 없으면 인스턴스 변수, 인스턴스 메서드가 됨) 클래스가 로딩될 때 클래서 변수가 생성되고 JVM에 의해 클래스가 메모리에 올라가면 초기화 됨. 클래스 변수는 언제라도 바로 사용할 수 있고 프로그램 종료까지 유지된다. 모든 인스턴스가 공통된 값을 공유할 때, 인스턴스를 생성할 필요가 없는 값을 저장할 때 사용. JVM 메모리의 method 영역에 올라간다. 인스턴스 변수 (Instance variables) 클래스에서 선언된 변수. 클래스의 인스턴스를 생성할 때 만들어진다. 따라서 인스턴..

CS/알고리즘

[알고리즘] 최소 신장 트리, MST(Minimum Spanning Tree), Prim, Kruskal

최소 신장 트리, MST (Minimum Spanning Tree)개념신장 트리(spanning tree): 그래프에서 모든 정점에 대한 최소한의 연결만을 남긴 최소 연결 부분 그래프.최소 신장 트리(minimum spanning tree): 신장 트리 중 간선의 가중치 합이 가장 작은 트리특징(n-1)개의 간선만을 사용하며 간선의 가중치 합이 최소여야 한다.사이클이 없어야 한다. (사이클이 존재 == 한 곳으로 도달하는 경우가 두 개 이상 존재 != 최소한의 연결)그리디 기법으로 최적의 해를 구할 수 있다. 관련 알고리즘Kruskal's Algorithm작동그래프의 모든 간선의 집합 E을 만든다.E가 비어있지 않을 때까지 아래를 반복한다.E의 간선들 중 가중치가 최소인 간선을 지운다.삭제된 간선이 가리..

얌얌념념
'CS' 카테고리의 글 목록