전체 글 87

Network | Public IP와 Private IP란?

오늘은 팀장님께서 내가 공부를 해봤으면 좋겠다.라는 내용의 일부분인 Public IP와 Private IP에 대하여 공부해보도록 하겠습니다. 인터넷과 네트워크를 사용할 때, IP 주소는 매우 중요한 역할을 합니다. IP 주소는 인터넷 프로토콜 주소(Internet Protocol Address)의 약자로, 네트워크 상에서 장치를 식별하는 고유한 주소입니다. IP주소는 IPv4 와 IPv6 두 가지 형태가 있으며, 이 글에서는 주로 IPv4를 중심으로 설명하려 합니다. IP주소는 크게 Public IP(공인 IP)와 Private IP(사설 IP)로 나뉩니다.  Public IP(공인 IP)Public IP는 인터넷 상에서 고유하게 할당되는 IP 주소로, 전 세계 어디서나 유일합니다. 인터넷 서비스 제공업..

Network 2024.07.08

Network | IPv4와 IPv6란?

Network를 공부하던 중 이미 알고 있는 내용이지만, 다시 한번 더 복습 겸 정리를 위해 블로깅 하려 합니다 :) IPv4와 IPv6 이 두 가지 IP 주소 체계는 인터넷 프로토콜(IP)에서 사용되며,각기 다른 특징과 목적을 가집니다.  IPv4 (Internet Protocol version 4)IPv4는 인터넷 프로토콜의 네 번째 버전으로, 현재 가장 널리 사용되는 IP 주소 체계입니다. 32비트 주소 체계를 사용하여 약 43억 개의 고유 주소를 제공합니다.  특징주소 형식 : IPv4 주소는 32비트로 구성, 일반적으로 점으로 구분된 4개의 10진수 숫자로 표현됩니다.(ex. 192.168.0.1)주소 개수 : 약 43억 개의 주소를 제공하나, 실제 사용 가능한 주소는 네트워크 관리 및 예약된 ..

Network 2024.07.08

Spring Boot | @Transactional과 Redis를 함께 사용할 수 없는 이유 및 Redis 트랜잭션 사용법

오늘은 회사에서 레디스 세션 체크를 통한 로그아웃 로직을 구현하며 알게 된 것을 정리해보려 합니다!Redis주소는 맞게 들어가는데, 왜 값을 못가져올까??처음 보는 상황에 많이 당황했었는데요..Spring Transactional을 사용하면 Redis와 다르게 처리가 되는 방식이라, 제대로 작동이 되지 않았던 것이었습니다!오랜만에 새롭게 알게 된 내용이라 한번 정리를 해보려 합니다. Spring framework를 사용해 애플리케이션을 개발 시, 데이터베이스 트랜잭션 관리를 위해 흔히 @Transactional을 사용하고 있습니다. 그러나 Redis와 NoSQL 데이터베이스를 사용할 때는 @Transactional을 동일하게 사용할 수 없습니다.  이번 글에서는 그 이유와 Redis에서 트랜잭션을 사용하..

개발Log 2024.07.08

Network | TCP(Transmission Control Protocol) / UDP(User Datagram Protocol)

TCP와 UDP는 인터넷 프로토콜 스위트의 두 가지 주요 전송 계층 프로토콜입니다. TCP(Transmission Control Protocol)TCP는 신뢰성이 높은 전송 프로토콜로, 데이터의 정확한 전달을 보장합니다.TCP의 특징 1. 연결 지향(Connection-oriented)통신을 시작하기 전에 송신자와 수신자 간에 연결을 설정합니다. 이 과정을 TCP 핸드셰이크 라고 합니다.  3-way handshake: SYN, SYN-ACK, ACK 패킷을 교환하여 연결을 설정하는 것 1. 한 컴퓨터(발신자)가 수신 컴퓨터에게 초기 메시지를 보내 연결 설정을 공식적으로 요청합니다.   이를 SYN 메세지(동기화)라고 합니다. 2. 그 후 수신 컴퓨터는 SYN에 대한 승인(SYN-ACK 메시지)를 보냅니..

Network 2024.05.28

Network | TCP/IP 모델

TCP/IP 모델TCP/IP모델은 네트워크 통신을 위한 프로토콜 스위트로, 인터넷을 포함한 다양한 네트워크 환경에서 데이터의 효율적이고 신뢰성 있는 전송을 가능하게 합니다. 이 모델은 네 가지 주요 계층으로 구성되며, 각 계층은 특정 기능을 수행합니다. TCP/IP 모델의 계층 구조는 네트워크의 설계와 운영을 위한 종합적인 지침을 제공하며, 서로 다른 네트워크 장치와 애플리케이션 간의 상호 운영성을 보장합니다.TCP/IP 모델의 네 가지 계층 1. 네트워크 인터페이스 계층(Netword Interface Layer)물리적 네트워크 연결을 설정하고 데이터를 전송하는 역할을 담당합니다. 이 계층은 네트워크 하드웨어와 관련된 모든 작업을 처리합니다. 데이터 전송 물리적 매체(ex. 이더넷 케이블, Wi-Fi)..

Network 2024.05.28

Network | 방화벽(Firewall)

방화벽(Firewall)이란?방화벽은 네트워크 보안 시스템으로, 신뢰할 수 있는 내부 네트워크와 신뢰할 수 없는 외부 네트워크 간의 트래픽을 모니터링하고 제어하는 역할을 합니다. 방화벽은 트래픽을 필터링하여 불법적인 접근을 방지하고, 데이터의 무단 유출을 막아줍니다. 방화벽은 크게 인바운드(Inbound)와 아웃바운드(Outbound) 트래픽을 관리합니다. 인바운드(Incound) 트래픽인바운드 트래픽은 외부 네트워크에서 내부 네트워크로 들어오는 트래픽을 의미합니다. 인바운드 트래픽은 외부에서 내부 자원에 접근하려는 시도를 포함하므로, 보안상의 이유로 엄격하게 관리되고 필터링됩니다. 인바운드 트래픽의 주로 관리 요소허용된 IP 주소특정 IP 주소나 IP 범위만이 내부 네트워크로 접근할 수 있도록 제한할 ..

Network 2024.05.28

Effective Java | Item 9. try-finally보다는 try-with-resources를 사용하라

Effective Java 3/E 판을 읽고 정리한 기록입니다. try-finally 구문BufferedReader br = new BufferedReader(new FileReader("file.txt"));try { // 파일을 읽고 처리하는 코드} finally { try { if (br != null) { br.close(); } } catch (IOException e) { e.printStackTrace(); }} 기존에는 자원을 해제하기 위해 try-finally 구문을 많이 사용했습니다.  위 코드는 파일을 읽기 위해 BufferedReader 를 열고, try 블록 안에서 파일을 처리한 후, finally 블록..

Effective Java 2024.05.28

Effective Java | Item 8. finalizer와 cleaner 사용을 피하라

Effective Java 3/E 판을 읽고 정리한 기록입니다. finalizer와 cleaner는 객체가 더 이상 필요하지 않을 때 정리 작업을 수행할 수 있는 방법을 제공합니다. 하지만 이들은 성능, 안정성, 예측 가능성 등의 측면에서 여러 문제를 일으킬 수 있어 주의해야합니다. Finalizer란 무엇인가? finalizer는 Java에서 객체가 가비지 컬렉션에 의해 회수될 때 호출되는 메서드입니다. Object 클래스의 finalize 메서드를 오버라이드해 정의할 수 있습니다.  class Resource { @Override protected void finalize() throws Throwable { try { // 리소스 해제 코드 ..

Effective Java 2024.05.27

Effective Java | Item 7. 다 쓴 객체 참조를 해제하라

Effective Java 3/E 판을 읽고 정리한 기록입니다. Java에서 메모리 누수는 가비지 컬렉션(Garbage Collection) 메커니즘이 있음에도 불구하고 여전히 발생할 수 있는 문제입니다.메모리 누수는 더 이상 필요하지 않은 객체가 계속해서 메모리에 남아 있는 경우를 말합니다. 이는 애플리케이션의 성능 저하를 유발하고, 심각한 경우 OutOfMemoryError를 발생시킬 수 있습니다. 메모리 누수의 원인컬렉션에 저장된 객체를 참조 해제하지 않은 경우 import java.util.ArrayList;import java.util.List;public class MemoryLeakExample { public static void main(String[] args) { L..

Effective Java 2024.05.27

Effective Java | Item 6. 불필요한 객체 생성을 피해라

Effective Java 3/E 판을 읽고 정리한 기록입니다. 불필요한 객체 생성불필요한 객체 생성이란, 이미 존재하는 객체를 재사용할 수 있는 상황에서 새로운 객체를 생성하거나, 불필요하게 많은 객체를 생성하는 것을 의미합니다. 예시반복적으로 동일한 객체 생성매번 동일한 값의 객체를 새로 생성하는 대신,동일한 객체를 재사용할 수 있는 상황에서 객체를 계속 생성하는 것 // 불필요한 객체 생성String str1 = new String("Hello");String str2 = new String("Hello");// 객체 재사용String str3 = "Hello";String str4 = "Hello"; 불필요한 오토박싱과 언박싱 기본형 데이터 타입을 사용하는 것이 더 효율적인 상황에서, 래퍼 클래스..

Effective Java 2024.05.27