CS 37

JVM 메모리 구조

JVM이란?JVM은 물리적인 형태가 아닌 소프트웨어의 형태로 존재한다 해서 "VRITURAL"을 뜻한다. 그리고 독자적으로 작동할 수 있는 매커니즘과 구조를 가진다는 점에서 "MACHINE"이라는 단어가 조합된다. 그러나 JVM은 하나의 완벽한 무엇이다라고 정의하기 보다는, 하나의 개념, 스펙(Specitification)이다. 표준화된 정의만 제공되어 각 JVM 벤더(Oracle, IBM)들이 별도로 구현해서 사용한다. JVM의 역할은 개발자들이 작성한 Java 프로그램이나 Web 애플리케이션 Server(WAS) 등을 구별하지 않고 모든 Java 프로그램을 실행시키는 것이다. 여기서 실행이란 컴파일 과정을 통해 생성된 class 파일을 JVM으로 로딩하고 해석하는 과정을 거쳐 메모리 등의 리소스를 할..

CS/자바 2025.12.27

[네트워크] 4 계층 : Network 계층

▪︎ 4-1: 네트워크 계층 개요학습 목표 : 네트워크 계층 서비스의 원리를 데이터 평면에 초점을 맞추어 이해한다네트워크 계층 서비스 모델forarding과 routing라우터의 동작 원리일반적인 포워딩▫︎ 네트워크 계층네트워크 계층은 IP주소를 관리한다.세그먼트에 출발지 IP 주소, 목적지 IP 주소가 들어있다.송신측에서 segment를 datagram으로 캡슐화수신측은 transport 계층에 segement를 전달네트워크 계층은 모든, 호스트, 라우터에 존재한다IP 주소를 보고 어디로 fowaring 할지 정해야하기 떄문라우터는 지나가는 모든 IP datagram의 헤더를 검사한다▫︎ 두가지 주요 기능`포워딩(forwarding)`: 라우터의 입력으로 들어오는 패킷을 적절한 라우터로 보냄비유 : 계..

CS 2025.02.27

[네트워크] 네트워크 기초 용어 정리

▪︎ 네트워크 OverView▫︎ 프로토콜통신할 때 지켜야하는 규칙, SW ~ HW까지 다양함ex) 와이파이 통신할 때 주파주 맞추기 , 사용하는 주파수를 송/수신이 맞추기ex) 에러를 발견하는 방법을 짝수개의 데이터로 검증하기▫︎ TCP / IP인터넷에서 사용하는 대표 인터넷 통신 프로토콜이다.패킷 통신 방식의 IP와 TCP로 이루어진 프로토콜로, HTTP, FTP 등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP위에서 동작하기 때문에, 묶어서 TCP/IP로 부르기도 한다. TCP/IP를 사용한다는 것은 IP 주소 체계를 따르고 IP 라우팅을 이용해 목적지에 도달하며, TCP의 특성을 활용해 송신자와 수신자의 논리적 연결을 생성하고 데이터의 안정과 순서를 보장 받도록 하겠다는 것이다. ..

CS 2025.02.27

[Java] String의 split() 메소드 뜯어보기

코테를 풀다가 split()의 내부를 몰라 시간복잡도를 구할 수 없어서 공부해보고자 한다. 1. 호출String [] str = br.readLine().split("/");코드 작성 후 실행 후 "10/20/30/40"을 입력한다. 2. String의 split() 실행public String[] split(String regex) { return split(regex, 0);} 3. 구분자 포함여부가 있는 split() 실행private String[] split(String regex, int limit, boolean withDelimiters) { /* fastpath if the regex is a * (1) one-char String and this character is..

CS/자바 2025.01.19

[Java] 제네릭 - Generic

처음 자바를 배울 때는 제네릭이 이렇게 중요한 줄 몰랐는데 개발을 할 수록 제네릭 개념이 많이나와서 정리해보고자 한다. 해당 글은 인프런의 '김영한의 실전 자바 - 중급 2편'을 참고했다. 제네릭이 필요한 이유왜 제네릭을 많이 사용할까? 사실 나는 개발할 때 많이 사용하지 않는다. 하지만 사용하고 있는 라이브러리 코드들을 확인해보면 T나 K가 사용되고 있는 코드들이 많았다. 많이 사용하는 이유 중 하나는 `코드의 재사용`이다. 코드의 재사용제네릭을 사용하면 StringBox이든, IntegerBox이든 객체마다 새로운 클래스를 만들지 않고도 단 하나의 클래스만으로 여러 개의 클래스를 지원할 수 있게 된다.public class GenericBox { private T value; pub..

CS/자바 2024.12.03

자바 #6 - static과 final

Static 변수 static멤버와 non-static 멤버의 차이 non-static 멤버 static 멤버 공간적 특성 객체마다 별도 존재 클래스당 하나 생성 • 멤버는 객체 내부가 아닌 별도의 공간(데이터 영역)에 생성 시간적 특성 객체 생성시에 멤버 생성됨 • 객체가 사라지면 멤버도 사라짐 클래스 로딩 시에 멤버 생성 • 프로그램이 종료될 때 멤버 사라짐 공유의 특성 공유되지 않음 • 객체 내에 각각 공간 유지 동일한 클래스의 모든 객체들에 의해 공유됨 static변수 객체 접근 public static void main(String []args){ 1. StaticSample s1, s2; 2. s1 = new StaticSample(); 3. s2.n = 5; // static 멤버 접근 } ..

CS/자바 2024.02.13

[알고리즘] 최소 신장 트리 - Java

최소 신장 트리 그래프에서 모든 노드를 연결할 때 사용된 Edge들의 가중치의 합을 최소로 하는 트리이다. 특징 사이클이 포함되면 가중치의 합이 최소가 될 수 없으므로 사이클을 포함하지 않는다. N개의 노드가 있을 때 최소 신장 트리를 구성하는 에지의 개수는 항상 N-1개이다. 핵심 이론 모든 Edge들을 '가중치'를 기준으로 오름차순 정렬 후, 가중치가 낮은 Edge부터 연결한다. 이때 사이클이 형성되지 않을 때만 연결한다. 1. Edge 리스트로 그래프를 구현하고 유니온 파인드 배열 초기화하기 그래프를 Edge 중심 형태로 Edge 리스트로 저장한다. edge class는 시작 노드, 끝 노드, 가중치로 구성된다. 사이클 여부를 확인하기 위해 유니온 파인드 배열(parent)를 인덱스의 값으로 초기화..

CS/알고리즘 2024.02.10

자바 #5 - 생성자와 접근 지정자

생성자 생성자의 특징 • 메소드이다. • 객체당 한 번 호출된다. • 리턴타입을 지정할 수 없다 • 목적은 객체의 초기화이다. 생성자는 객체가 생성될 때 반드시 호출된다. • 개발자가 생성자를 생성하지 않았다면 컴파일러가 자동으로 기본 생성자 삽입한다. 기본 생성자 매개 변수 없고 아무 작업 없이 단순 리턴하는 생성자 컴파일러가 만든다 하지만 개발자가 클래스 생성자를 하나라도 작성한 경우 컴파일로는 기본 생성자를 만들지 않는다. this 레퍼런스 ▶︎ this 객체 자신에 대한 레퍼런스 ▶︎ this() 클래스 내의 다른 생성자 호출 생성자 내에서만 사용가능 반드시 생성자 코드의 제일 처음에 수행 public class Book{ String title; String author; public Book(..

CS/자바 2024.02.09