일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 스프링
- mysql
- 자바
- 백엔드
- 컨테이너
- computer science
- Spring
- 스프링 시큐리티
- CS
- spring cloud
- JPA
- ORM
- spring boot
- Container
- Spring Security
- vm
- virtualization
- 도커
- 영속성 컨텍스트
- 스프링 배치
- Java
- HTTP
- 스프링 부트
- 데이터베이스
- 가상화
- CI/CD
- 웹 서버
- web server
- 배포
- spring batch
- Today
- Total
목록Back-End/Java (17)
개발 일기

https://ai-back-end.tistory.com/119 [Java] JVM 메모리 구조(Method-Static, Heap, Stack)그전에 JVM에 대해 다시 떠올려보자. JVM 이란 Java Virtual Machine의 약자이며, 자바 가상 머신이라고 한다.자바 애플리케이션을 실행하기 위한 가상 환경자바 바이트코드(.class 파일)를 특정 운ai-back-end.tistory.com이전에 작성했던 블로그에서 단순히 JVM안에만 갇혀서 생각했다가 타 프로그램이 실행됐을때와 뭔가 다르다는걸 알게됐다.프로그램이 실행될 때 소스 코드나 실행 파일이 가상 메모리를 거쳐 RAM에 로드되고, 그 과정에서 변수들이 메모리 영역(Code, Heap, Data, Stack)에 로드된다고 했는데 Java는..

Segment Tree 초기화 Segment Tree 구간 합 구하기 Segment Tree 값 업데이트 (기존 값과 바꿀 값의 차를 통한 업데이트) diff를 활용한 update방식보다 해당 코드가 더 직관적인듯 시간 복잡도트리 초기화 (init)세그먼트 트리는 완전 이진 트리로, 전체 노드 개수는 O(2N) (약 4N)init 함수는 한 번의 호출당 O(1), 전체적으로 O(N)시간 복잡도: O(N)구간 합 조회 (sum)이진 트리의 높이는 O(log N)sum 함수는 트리를 따라 내려가며 분할 정복, 최악의 경우 O(log N) 개의 노드를 방문시간 복잡도: O(log N)값 업데이트 (update)특정 위치의 값을 변경하면, 관련된 모든 부모 노드를 업데이트해야 함update 함수는 이진 트리..

다익스트라 알고리즘(Dijkstra Algorithm)3학년 1학기 Computer Network 강의에서 처음 접하게 되었다. 이 알고리즘은 다이나믹 프로그래밍을 활용하여 하나의 정점에서 다른 모든 정점까지의 최단 경로를 구할때 사용한 알고리즘이였다.코딩 테스트에서는 위에서 말했듯이 정점간의 가중치가 있을 때 하나의 특정 정점에서 다른 모든 정점까지의 최단 경로를 구할때 사용할 수 있다.자바 코드import java.util.*;public class Dijkstra { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); // 노드 개수 ..

그전에 JVM에 대해 다시 떠올려보자. JVM 이란 Java Virtual Machine의 약자이며, 자바 가상 머신이라고 한다.자바 애플리케이션을 실행하기 위한 가상 환경자바 바이트코드(.class 파일)를 특정 운영체제나 하드웨어 환경에 상관없이 실행할 수 있게 해준다.JVM은 OS와 독립적이므로 한 번 작성된 자바 코드가 다양한 플랫폼에서 실행될 수 있는 "Write Once, Run Anywhere"의 핵심적인 역할을 한다.컴파일 단계: .java 파일을 자바 컴파일러(javac)를 통해 .class 파일로 컴파일한다.클래스 로드: 컴파일된 .class 파일은 JVM의 ClassLoader에 의해 로딩된다.메모리 할당: ClassLoader는 .class 파일을 Runtime Data Area(런..
Iterator iter = combSet.terator()https://creampuffy.tistory.com/124 모의면접 복기 (1) - Hash, HashMap (완주하지 못한 선수)9월 24일 금요일, 모의 면접을 진행할 기회를 갖게 되었습니다. 부족했던 부분을 복기하며 하나씩 채워가고자 합니다. 1. 첫 풀이 완주하지 못한 선수를 IDE 도움 없이 라이브 코딩으로 풀어보는creampuffy.tistory.com // map의 각 키-값 쌍에 접근for (Map.Entry entry : hm.entrySet()) { if (entry.getValue() == maxScore) { winners.add(entry.getKey()); }} Iterator란? 반복자Ite..
Array 배열에서의 정렬 - 단일 기준// 오름차순 정렬int arr[] = {5,3,2,4,1};Arrays.sort(arr); // [1,2,3,4,5]// 내림차순 정렬Integer arr[] = {5,3,2,4,1};Arrays.sort(arr, Collections.reverseOrder()); // [5,4,3,2,1]그러나 위 코드에서도 알 수 있듯이 내림차순 정렬의 Collections.reverseOrder()는 객체 형태에게만 가능하기 때문에 기본형인 int가 아닌 참조형 변수 즉, 객체 타입인 Integer배열로 선언한 것을 알 수 있다. 그래서 아래와 같이 처리할 수 있긴한데 그래도 코드가 길고 번거로워진다.int arr[] = {5,3,2,4,1};Integer[] temp = ..

스택(Stack)Stack은 LIFO(Last In First Out) 구조로 되어 있으며, 쉽게 해석하면 "후입 선출" 입니다. 즉, 마지막(최근)에 넣은 것을 먼저 뺀다는 말이다.그렇다면 어떠한 자료구조를 통해서 스택을 다룰 수 있을까? 스택은 순차적으로 데이터를 추가하고 삭제하기 때문에 ArrayList와 같은 배열기반의 컬렉션 클래스가 적합하다.java.util에서 Stack.class를 제공하고 있다. 아래는 Stack class의 관련 메소드들이다.메서드설명boolean empty()Stack이 비어있는지 알려준다.Object peek()Stack의 맨 위에 저장된 객체를 반환.pop()과는 달리 Stack에서 객체를 꺼내지는 않는다.( 비었다면 EmptyStackException발생 )Obj..

ArrayListList Interface의 구현체이기에 저장 순서가 유지되고 중복을 허용한다.연속적인 데이터의 리스트 (데이터는 연속적으로 리스트에 들어있어야 하며 중간에 빈공간이 있으면 안된다)데이터의 저장 공간으로 배열 사용(배열 기반) - Object[] 배열을 이용하여 요소를 저장: 객체 배열, 다형성(모든 종류의 객체 저장 가능) 기존의 Vector를 개선한 것으로 구현원리와 기능은 동일Vector와 달리 ArrayList는 동기화처리X배열을 이용하기 때문에 인덱스를 이용해 요소에 빠르게 접근데이터를 리스트 중간에 삽입/삭제 할 경우, 중간에 빈 공간이 생기지 않도록 요소들의 위치를 앞뒤로 자동으로 이동시키기 때문에 삽입/삭제 동작은 느리다.성능을 높이기 위해 미리 용량을 정해서 크게 잡아두..