| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- computer science
- virtualization
- CS
- 스프링
- 데이터베이스
- ORM
- Container
- Spring Security
- 스프링 시큐리티
- 도커
- 배포
- Redis
- vm
- 컨테이너
- 영속성 컨텍스트
- 가상화
- JPA
- 스프링 배치
- 스프링 부트
- Spring
- Hackathon
- 웹 서버
- Java
- spring boot
- 해커톤
- mysql
- spring cloud
- 자바
- CI/CD
- 백엔드
- Today
- Total
목록Back-End/Java (23)
개발 일기
최근 기업 코딩테스트에서 HashMap의 key로 객체를 사용하는 과정에서 equals()와 hashCode()를 별 생각 없이 외워서 기계적으로 오버라이딩해 사용했다. 하지만 이런 방식은 바람직하지 않다는 생각이 들었고, 왜 이런 메서드를 반드시 재정의해야 하는지 내부 동작 원리부터 제대로 이해해보고자 정리하게 되었다. equals()우선, equals()부터 보면, 모든 클래스는 Object를 상속하기 때문에 기본적으로== → 참조값(메모리 주소) 비교equals() → 기본 구현이 ==과 동일한 주소 비교로 결국 동등성이 아니라 동일성을 판단해준다.그러나, 문자열 String 참조 변수 필드의 동등성을 비교하는 과정에서 equals()를 썼는데 이때 나는 값 비교를 의도로 해당 코드를 작성했었고, ..
처음 https://www.acmicpc.net/problem/10986 해당 문제에서 누적합을 활용해서 이중 for문을 통해 계산을 했었다.// 처음 내 코드import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken(..
https://www.acmicpc.net/problem/20291백준 20291 파일정리 실버3 문제에서 TreeMap을 적용해볼 기회가 있어서 TreeMap을 적용해봤다.import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter((new OutputStreamWriter(System.out))); int T = I..
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..
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 함수는 이진 트리..