🔍 Java에서 힙(Heap)과 스택(Stack) 메모리의 차이점Java에서 메모리는 크게 힙(Heap)과 스택(Stack) 으로 나뉘며, 각 메모리는 목적과 동작 방식이 다릅니다.Java 프로그램이 실행될 때 객체와 변수들이 저장되는 위치가 달라지고, 성능에도 영향을 미칠 수 있습니다.✅ 1. 힙(Heap)과 스택(Stack) 개념메모리 영역힙(Heap)스택(Stack)주요 역할객체(Object) 저장메서드 실행 및 지역 변수 저장할당 방식동적 할당 (런타임)자동 할당 (메서드 호출 시)수명GC(Garbage Collection)에 의해 해제됨메서드 실행이 끝나면 자동 해제속도상대적으로 느림상대적으로 빠름저장 대상객체(클래스 인스턴스), 배열기본형 변수, 참조 변수, 메서드 호출 정보메모리 관리JVM..
🔍 관계형 데이터베이스(RDB) vs 비관계형 데이터베이스(NoSQL)관계형 데이터베이스(RDB, Relational Database)와 비관계형 데이터베이스(NoSQL, Not Only SQL)는 데이터 저장 및 관리 방식에서 차이가 있습니다.어떤 데이터베이스를 선택할지는 데이터 구조, 확장성, 성능 요구 사항에 따라 결정됩니다.✅ 1. 관계형 데이터베이스(RDB: Relational Database)📌 개념:데이터를 테이블(표, Table) 형태로 저장하며, 행(Row)과 열(Column) 로 구성됨.SQL(Structured Query Language) 를 사용하여 데이터를 조작.정규화(Normalization) 를 통해 데이터 중복을 최소화하고 무결성을 유지.📌 특징:✔ 스키마(테이블 구조)..
🚀 Java 병렬 스트림(Parallel Stream) 사용 시 예상되는 문제와 해결 방법Java에서는 Stream.parallel()을 사용하면 멀티스레드를 활용하여 데이터 처리를 병렬로 수행할 수 있습니다.하지만 병렬 스트림을 사용할 때 몇 가지 문제가 발생할 수 있으며, 적절한 해결 방법을 적용해야 합니다.✅ 1. 공유된 상태(Shared State)로 인한 동기화 문제📌 문제점병렬 스트림은 여러 스레드에서 동시에 실행되므로, 공유 변수(Shared State)를 변경할 경우 데이터 충돌 및 경쟁 조건(Race Condition)이 발생할 수 있음.❌ 잘못된 예제import java.util.stream.IntStream;public class ParallelStreamSharedState { ..
1. Read (r, 읽기 권한)파일: 파일 내용을 읽을 수 있음. (cat, less, vi 등으로 파일을 열어볼 수 있음)디렉토리: 디렉토리 내부의 파일 목록을 조회할 수 있음. (ls 명령어 사용 가능)❗ 주의: 디렉토리에 r 권한만 있고 x 권한이 없으면, ls로 파일 목록은 볼 수 있지만, 해당 파일을 열거나 접근하는 것은 불가능함.ls -ldr--r--r-- 2 user user 4096 Feb 1 12:00 mydir 위처럼 r만 있는 경우:ls mydir # 가능cd mydir # Permission denied (불가능)2. Execute (x, 실행 권한)파일: 실행 가능한 파일(스크립트, 바이너리 등)을 실행할 수 있음../script.sh # 실행 가능디렉토리: 디렉토리 내..
정규화정처기할때 "도부이결다조" 로만 공부했던 정규화에 대해 알아보고자합니다..정규화(Normalization)는 데이터베이스 설계에서 중복을 최소화하고 일관성을 유지하기 위해 데이터를 분해하는 과정입니다. 데이터베이스에서 중복된 데이터를 제거하고, 데이터 간의 관계를 명확하게 하기 위해 사용됩니다.정규화의 목적중복 최소화: 동일한 데이터가 여러 번 저장되는 것을 방지.데이터 무결성 유지: 잘못된 데이터 입력을 방지.수정 이상 방지: 데이터 수정 시, 다른 관련 데이터도 자동으로 수정되도록 한다.비정규화 상태 (1NF 미만)고객 주문 데이터베이스를 예로 들겠습니다. 하나의 테이블에 고객 정보와 주문 내용을 모두 저장한다고 가정해 봅시다.고객ID고객명주문1주문2주문3001홍길동사과배바나나002김철수딸기 ..
Fail2Ban 특정아이피 허용오늘은 Fail2Ban 에서 특정아이피는 감시대상에서 제외시키는 방법을 알아보겠습니다. 1. jail.local 파일열기sudo nano /etc/fail2ban/jail.local 2.ignoreip 설정에 IP추가default 섹션이 없으면 파일 젤 아랫쪽에 아래와 똑같이 적어줍니다.[DEFAULT]ignoreip = 제외시킬아이피 여러아이피를 추가하려면 공백으로 구별하면 됩니다.ignoreip = 127.0.0.1/8 123.122.111 192.168.1.1 저장해줍니다.3.Fail2ban 재시작저장을 했다면 fail2ban을 재시작 하면 위 내용이 반영됩니다.sudo systemctl restart fail2ban 4.적용확인잘 적용되었는지 확인하려면 먼저 아래 명..