일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Spring
- spring batch
- Spring Security
- 스프링 부트
- HTTP
- 스프링 배치
- 컨테이너
- Container
- 스프링
- Java
- ORM
- vm
- virtualization
- 스프링 시큐리티
- JPA
- web server
- CS
- 영속성 컨텍스트
- 배포
- 백엔드
- 도커
- spring cloud
- 가상화
- 자바
- computer science
- 데이터베이스
- CI/CD
- mysql
- spring boot
- 웹 서버
- Today
- Total
목록Back-End/Java (21)
개발 일기

Java Garbage Collector(GC)는 자바에서 메모리 관리를 자동화하는 핵심 기능입니다. 수동으로 메모리를 해제해야 하는 C/C++과 달리, Java에서는 동적으로 할당했던 메모리 영역(Heap 영역) 중 GC가 더 이상 사용되지 않는 객체를 자동으로 감지하고 메모리에서 제거할 수 있다 . why? 사용이 끝난 객체가 메모리에 계속 남아있으면 메모리 누수(Leak)가 발생 → OutOfMemoryError이를 방지하고 효율적인 메모리 회수를 위해 GC가 필요함[GC 알고리즘 - Reference Counting]개념Root Space : Stack 변수와 전역 변수 등 heap 영역 참조를 담은 변수Heap영역에 선언된 객첵들이 각각 reference count라는 별도의 변수를 들고있음해당..
✅ SOLID 원칙이란?어떤 분야든, 잘하기 위해선 '원칙'이 있다.스포츠에는 기본 자세가 있고, 요리에는 레시피가 있으며, 수학에는 공리(axiom)가 존재한다. 이러한 원칙은 그 분야를 체계적이고 효율적으로 다룰 수 있게 돕는 일종의 '교범'이다. 객체지향 프로그래밍(OOP)도 마찬가지다. 유지보수하기 쉬운, 확장 가능한(유지보수성, 확장성, 재사용성) 소프트웨어를 만들기 위해서는 단순히 클래스를 나누는 것만으로는 부족하다. 객체지향 설계의 5대 원칙, SOLID가 바로 그 교범이다. 이번 글에서는 이 SOLID 원칙이 무엇이고, 왜 중요한지, 그리고 Java 코드 예시와 함께 실제로 어떻게 적용할 수 있는지를 정리해보았다.1️⃣ S - 단일 책임 원칙 (SRP, Single Responsibil..
삼성 SW 역량테스트 2022 하반기 오전 1번 문제 싸움땅을 풀면서 아래와 같은 코드를 작성했다.더보기삼성 SW 역량테스트 2022 하반기 오전 1번 문제 싸움땅import java.util.*;import java.io.*;/** * - n*n 격자에서 진행 * - 각 격자에 무기 * - 초기에 무기들이 없는 빈 격자에 플레이어들이 위치하며 각각은 초기 능력치 가짐(모두 다름) * * 숫자 * - 빨간색 배경의 숫자 = 총의 공격력 / 플레이어의 초기 능력치 * - 노란색 배경의 숫자 = 플레이어의 번호 * * Round 설명 * 아래 과정을 1번 부터 n번 플레이어까지 "순차적으로" 진행해야 한 라운드가 끝난다. * 1-1. 첫 번째 번호 플레이어 부터 본인이 향하고 있는 방향대로 한칸 이동.(..

→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..
최근에 삼성 코테를 준비하기 위해서 CodeTree에서 미지의 공간 탈출, 고대 문명 유적 탐사를 풀었는데 풀면서 느낀 것이 1번 문제는 대부분 시뮬레이션 + BFS 관련 문제로 뭔가 map(좌표)를 다룰일이 많다고 느꼈고 저 두 문제를 풀때 좌표 대칭 및 중심점을 기준으로 회전 등을 구현할 줄 알아야했다. 좌표 대칭은 기존에 카카오 코테 문제를 풀다가 관련해서 풀어본 적이 있어서 풀었지만 90도 회전을 구현할때 구 현하기는 했지만 너무 무식하게 구현했다는 느낌을 받아 관련해서 좌표 변환에 대해 쭉 정리를 해보고자 한다.좌표 회전크게 두가지로 나눠서 통째로 돌려야하는 경우와 중심 좌표가 주워져 있고 정해진 크기를 회전 시키는 경우를 고려해보겠다. 1. 통째로 돌리기// 입력 받은 2차원 배열 전체를 90..

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(런..