반응형

전체 135

[Creational Pattern] Abstract Factory(추상 팩토리)

Design Pattern의 첫 포스팅이다. 먼저 디자인패턴에 대한 간략한 설명을 하자면, 우리가 인프라 시스템을 구축하는 것을 Architect Pattern이라고 한다. 클라이언트-서버가 예시이다. Design Pattern은 서버면 서버, 클라이언트면 클라이언트 별로 더 세세하게 설계를 한다는 것이다. Architect Pattern은 건물로 비교하자면 윤곽을 잡는 것이라면 Design Pattern은 건물의 방의 인테리어를 설계하는 것이라고 볼 수 있다는 것이다. 즉, Design Pattern은 모듈 간의 관계 및 인터페이스(Interface)를 설계할 때 참조할 수 있는 전형적인 해결방식 또는 예제를 의미한다. 더보기 # Interface란? 사전적의미의 Interface는 "경계면"을 의미한..

[Software Engineering] RAID(Redundant Array of Independent Disk)

RAID는 여러개의 Disk를 묶어 하나의 Disk처럼 사용하는 기술을 의미한다. (여기서 말하는 디스크는 Hard Disk를 의미한다. 우리가 이제 보편적으로 사용하는 SSD도 RAID가 가능하다.) 약간 찰흙을 생각하면 되지 않을까? 찰흙을 100g씩 가지고 5개를 갖고있다고 보자. 그러면 500g이되는거다. 근데 찰흙의 갯수는 1개이다. 이걸 디스크 메모리 용량으로 옮겨가면 똑같다. 10GB짜리 하드디스크를 5개가 있다면 RAID를 통해 50GB짜리 하드디스크를 1개로 사용할 수 있다는 것이다. # 장점 위에서 말한 장점인 대용량의 단일 볼륨을 사용하는 효과가 있는 것처럼 다른 장점들도 있다. 디스크 I/O 병렬화로 인한 I/O성능 향상 Data 복제로 인한 안정성 향상 # 구성방식 RAID를 구성..

[Spring] DB 접근 방법

사족을 먼저 달고 하겠다. Spring을 공부하면서 DB에 Query를 날리는 많은 방법이 있지만, 인강을 통해서 JPA를 학습하는데, "김영한 선생님" 께서 말씀하셨다시피 Query를 못짜면 JPA를 쓸 필요가 없다는 것이다. 그리고 무조건 JPA가 좋은 것도 아니다. 👏 취업을 준비하는 분들과 취업을 준비하는 나에게 Spring에서 DB로 쿼리를 날릴때, 어떤 점들이 좋고 어떤 것들을 선택하는게 좋은 것인지 알아볼 수 있도록 정리해보겠다. # JdbcTemplate 먼저, JdbcTemplate를 알기 전에, Jdbc를 알고가자. Jdbc란? Java Database Connectivity의 약자로써 Java가 데이터베이스와 통신하기 위한 API이다. Jdbc를 활용하여 DB연결, SQL 실행과 같은..

Framework/Spring 2024.04.10

[JAVA] Error VS. Exception

# Error JAVA는 컴파일언어로 컴파일 시 JAVA의 문법적인 오류와 같은 심각한 문제를 야기시켜 컴파일 중간에 프로세스를 중단 할 수 있다. 메모리 부족, 스택오버 플로우와 같이 발생하면 복구할 수 없는 심각한 오류이다. 프로세스 자체를 중단시키는 것을 Error라고 합니다. # Exception 동작 도중 예기치 않았던 이상 상태의 발생으로 수행중인 프로그램이 영향을 받은 것으로 경미한 현상이라고 볼 수있다. 이를 Exception이라고 한다. 수습이 가능하고 개발자가 적절히 코드를 작성해준다면 비정상적인 종료는 막을 수 있게 된다. 즉, Error를 Exception상황으로 만들어, Exception Handling을 할 수 있다. # Throwable 클래스 Error를 Exception상황..

Language/Java 2024.04.09

[JAVA] 컴파일 과정

# JVM(Java Virtual Machine) JAVA의 가장 큰 장점은 OS에 독립적이라는 것이다. 따로 Machine을 갖고있는데 그게 JVM이다. (우리가 사용하는 VM의 한종류라고 볼 수있다.) 어떤 방식으로 Compile을 하길래 OS에서 독립적일까? # Compile 과정 개발자가 소스코드를 소스파일 (.java) 에 작성한다. Java의 컴파일러가 소스파일 (.java) Compile한다. 그 결과는 바이트 코드(.class)로 출력된다. 하지만, 바이트 코드(.class) 는 아직 JVM이 이해할 수 없다. Class Loader가 Dynamic Loading을 통해 필요한 클래스들을 로딩 및 링크하여 JVM에 올린다. Load: 바이트 코드(.class)를 JVM 메모리에 로드 검증:..

Language/Java 2024.04.09

[JAVA] Gabage Collection (2)🗑️

2022.01.14 - [Language/Java] - [JAVA] Gabage Collection (1)🗑️ [JAVA] Gabage Collection (1)🗑️ # 개요 Gabage Collection, GC란?? CS를 공부할때 한번쯤 언어적으로 접근할 필요가 있다고 생각한다. Gabage(쓰레기) Collector(수집가)라는 말의 뜻을 갖고 있다. 그러면 컴퓨터, 즉, 프로세스가 구동중에 Ga blaj2938.tistory.com 이전 포스팅에서는 GC가 어떻게 사용하지 않는 메모리를 판별하는 참조 방식과 청소 방식에 대해서 알아보았다. 그렇다면 이 방식과 방식을 JVM Heap영역에 대입해서 동작하도록 해야한다. # heap 메모리의 구조 & GC 종류 JVM의 Heap 메모리 영역은 애초에..

Language/Java 2024.04.09

[JAVA] Gabage Collection (1)🗑️

# 개요 Gabage Collection, GC란?? CS를 공부할때 한번쯤 언어적으로 접근할 필요가 있다고 생각한다. Gabage(쓰레기) Collector(수집가)라는 말의 뜻을 갖고 있다. 그러면 컴퓨터, 즉, 프로세스가 구동중에 Gabage(쓰레기)는 무엇인지 알아보아야한다. Once upon a time~ 과거 java, python 등등 이러한 언어가 나오기 이전으로 돌아가보자 과거 프로그래밍 언어들은 프로그래머가 동적메모리를 할당부터 해제까지 모두 수동으로 해줘야했다. 특히 우리가 알고 있는 C언어도 그랬다. 항상 개발자들은 메모리를 할당하고 해제하지 않거나 해제한 메모리를 다시 해제 하는 등... 휴먼에러를 많이 발생시켰다. 개발자는 휴먼에러를 최소화해야겠다. 명령대로만 알아듣는 컴퓨터를 ..

Language/Java 2024.04.09

[BOJ]1389 케빈 베이컨의 6단계 법칙(S1, C++)

📋 개요 잠깐 건강 이슈와 취준 이슈로 포스팅을 쉬었다. 하지만 알고리즘 문제는 꾸준히 풀었고 풀면서 복기하고 다시 문제를 되돌아보는것이 중요하다고 느꼈다. 포스팅을 꾸준히 이어나갈 예정이다. 기술적인 고민보다는 Raw하게 개발과 CS를 더 집중한다. 🧩 문제 https://www.acmicpc.net/problem/1389 📝 형식 📥 입력 📤 출력 첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻이다. A와 B가 친구이면, B와 A도 친구이며, A와 B가 같은 경우는 없다. 친구 관계는 중복되어 들어올 수도 있으며, 친구가 한..

Algorithm/Problem 2024.04.04

[BOJ]1269 대칭차집합(S4, C++)

📋 개요 이번문제는 hash map {key:value}의 빠른 검색으로 문제를 풀 수 있다. 처음에 구현으로 생각하고 문제를 풀었는데 "시간 초과"가 나서 hash map을 안 사용하고 vector로 풀었다. map의 빠른 검색시간을 활용해서 풀어야하는 문제로 파악하고 바로 코드를 수정했다. 🧩 문제 https://www.acmicpc.net/problem/1269 1269번: 대칭 차집합 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어 www.acmicpc.net 📝 형식 📥 입력 📤 출력 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈..

Algorithm/Problem 2024.03.08

[BOJ]1059 좋은구간(S4, C++)

📋 개요 이번 문제도 풀면서 살짝 해매다가 2시간이 넘어버렸지만, 거의 답에 가까워졌다. 문제는 그리 어렵지 않았다. 좋은 구간의 조건을 알고 있다면 풀기 쉬운 문제다. 🧩 문제 https://www.acmicpc.net/problem/1059 1059번: 좋은 구간 [9, 10], [9, 11], [9, 12], [10, 11], [10, 12] www.acmicpc.net 📝 형식 📥 입력 📤 출력 첫째 줄에 집합 S의 크기 L이 주어진다. 둘째 줄에는 집합에 포함된 정수가 주어진다. 셋째 줄에는 n이 주어진다. 첫째 줄에 n을 포함하는 좋은 구간의 개수를 출력한다. 💡 예제 🔢 번호 📥 입력 📤 출력 1 4 1 7 14 10 2 4 2 5 4 8 13 24 30 10 5 3 5 10 20 30 40..

Algorithm/Problem 2024.03.07
반응형