본문 바로가기

분류 전체보기

(41)
[Java] 자바 메모리 구조에 대한 공부 (Heap,Stack,Method) jvm 영역에 대해서 공부를 했다. 이번에는 자바 메모리 구조에 대하여 공부하겠다. 간단하게 Runtime Data Area를 다시 보면 아래 그림과 같다.여기서 Heap, Stack, Method의 구조와 영역에 대해서 공부할 것이다.  일단 자바에 변수에 대해서 알아야 한다. 자바의 변수는 아래 코드와 같이 나누어진다.public class Shop{ public static int count = 10; // 클래스 변수 public int inventory = 100; //인스턴스 변수 }public class Main { public static void main(String[] args) {//매개 변수 //지역 변수 int wieght = ..
[Java] JVM 구성에 대한 공부 JVM(Java Virtual Machine)OS에 종속받지 않고 CPU가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터이다. 위 그림은 자바가 어떻게 동작하는지 간단하게 나타낸 그림이다.그림에서 자바 소스코드(.java) 를 Java Compiler(.javac)가 자바 바이트 코드(.class)형식으로 컴파일한다.바이트 코드란 JVM이 알아들을 수 있는 명령어 집합을 이야기한다.Class Loader를 통해서 컴파일된 바이트코드를 JVM Runtime Data Area로 로딩한다. 위 그림은 JVM 부분만 상세하게 나타낸 그림이다. 클래스 로더(Class Loader)JVM 내로 클래스 파일(.class)을 Load 하고, Loading 된 클래스들을 Runtime Data Area의 Metho..
[OS] 프로세스와 스레드에 대한 공부 프로세스  : 컴퓨터에서 실행되고 있는 프로그램를 말한다.프로세스는 Code, Data, Stack, Heap의 구조로 독립된 메모리 영역으로 할당받는다.Code 영역은 프로그래머가 작성한 코드를 CPU에서 해석 가능한 기계어 형태로 저장되어 있는 영역이다.Data 영역은 전역(Global) 변수나 정적(Static) 변수가 저장되어 있는 영역이다.Stack 영역은 지역 변수, 매개변수, 반환 값 같은 호출한 함수가 종료되면 되돌아올 임시적인 자료를 저장한다.Heap 영역은 동적 메모리 영역이다.프로세스가 할당받는 메모리 영역은 위 그림과 같은 구조를 가진다.프로세스에서 최소한 한 개의 스레드를 가진다.각 프로세스는 별도의 주소 공간에서 실행된다. 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 ..
[백준/JAVA] 1026 보물 문제 옛날 옛적에 수학이 항상 큰 골칫거리였던 나라가 있었다. 이 나라의 국왕 김지민은 다음과 같은 문제를 내고 큰 상금을 걸었다. 길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자. S = A[0] × B[0] + ... + A[N-1] × B[N-1] S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, B에 있는 수는 재배열하면 안 된다. S의 최솟값을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거나 같은 음이 아닌 정수이다. 출력 첫째 줄에 S의 최솟값을 출력한다. 나의..
[백준/JAVA] 11047 동전 0 문제 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 출력 첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다. 나의 풀이 import java.util.Scanner; import java.util.Arrays; import java.util.Collections; publi..
[프로그래머스/JAVA] 문자열을 정수로 바꾸기 문제 설명 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요. 제한 조건 s의 길이는 1 이상 5이하입니다. s의 맨앞에는 부호(+, -)가 올 수 있습니다. s는 부호와 숫자로만 이루어져있습니다. s는 "0"으로 시작하지 않습니다. 나의 풀이 class Solution { public int solution(String s) { int answer = 0; answer=Integer.parseInt(s); return answer; } }
[프로그래머스/JAVA] 문자열 다루기 기본 문제 설명 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1 이상, 길이 8 이하인 문자열입니다. 나의 풀이 class Solution { public boolean solution(String s) { boolean answer = true; if(s.length()6){ return false; } else if(s.length()==5){ return false; } for(int i=0;i
[프로그래머스/JAVA] 행렬의 덧셈 문제 설명 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. 제한 조건 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다. 나의 풀이 class Solution { public int[][] solution(int[][] arr1, int[][] arr2) { int[][] answer=new int[arr1.length][]; for(int i=0;i