Jinsu's Technical Blog
  • 홈
  • 태그
  • 방명록
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • 분류 전체보기 (250)
      • Java (18)
      • Spring Framework (33)
        • Toby's Spring 3.1 (6)
        • Spring IoC (6)
        • TDD (6)
        • Reflection (6)
        • AOP (6)
      • Spring Boot (11)
      • Spring Security (22)
      • Database (17)
        • Mysql (2)
        • JDBC (2)
        • JPA (13)
      • Build and Development Tools (3)
        • Maven (1)
        • Gradle (1)
        • Lombok (1)
      • Network (12)
      • Apache Tomcat (11)
      • Microservices Architecture (33)
      • Linux (9)
      • React (10)
      • Docker (22)
      • OAuth (10)
      • DevOps (2)
      • Git (2)
      • HTML (1)
      • CSS (1)
      • JavaScript (1)
      • Problem and Solution Guide (8)
        • Java (1)
        • Spring Framework (4)
        • Reflection (1)
        • Dynamic Proxy (1)
        • JPA (1)
      • Note-Taking (23)
  • 홈
  • 태그
  • 방명록
Network

Http 프로토콜

참고 - https://ko.wikipedia.org/wiki/HTTP **HTTP(Hypertext Transfer Protocol)**는 웹에서 정보를 주고받기 위한 프로토콜로, 인터넷 상에서 서버와 **클라이언트(웹 브라우저)**가 어떻게 데이터를 주고받을지에 대한 규칙을 정의하고 있어. 이 프로토콜은 월드 와이드 웹(WWW)의 기초 기술 중 하나로, 우리가 웹 페이지를 보고, 데이터를 전송하는 방식에 직접적으로 관련돼 있어. HTTP의 동작 방식 HTTP는 **요청(Request)**과 **응답(Response)**으로 구성된 클라이언트-서버 모델을 사용해. 웹 브라우저와 같은 클라이언트가 서버에게 특정 작업을 요청하면, 서버가 해당 요청을 처리하고 응답을 보내는 구조야. 예를 들어, 네가 브라우..

2024. 9. 27. 12:15
Note-Taking

C언어, Java에서의 Server, Client 프로그래밍 정리

TCP Server Socket Programming C 언어로 작성된 TCP 서버 소켓 프로그래밍 예시입니다. 서버는 클라이언트 연결을 기다리고, 연결되면 데이터를 주고받습니다. 1. TCP 서버 코드:#include #include #include #include #pragma comment(lib, "ws2_32.lib") // Winsock 라이브러리를 연결하기 위한 pragma 지시문#define MAX_BUFFER_SIZE 1024 // 데이터를 송수신할 때 사용할 버퍼의 최대 크기를 1024 바이트로 설정int main() { WSADATA wsaData; // Winsock 초기화를 위한 구조체 SOCKET serverSocket, clientSocket; // 서..

2024. 9. 27. 09:41
Network

UDP 소켓 프로그래밍

UDPUDP (User Datagram Protocol)는 인터넷 프로토콜 스위트의 일부로, 메시지를 데이터그램으로 교환하는 데 사용되는 간단한 전송 계층 프로토콜입니다. TCP (Transmission Control Protocol)와 비교하여, UDP는 비연결 지향적이고 신뢰성이 낮은 통신 방식을 제공합니다. 이러한 특징 때문에 UDP는 다음과 같은 주요 특성을 가집니다: 1. 비연결성: UDP는 연결을 설정하거나 유지하지 않습니다. 각 데이터그램은 독립적으로 전송되며, 서로에게 영향을 주지 않습니다.2. 신속성: 연결 설정에 필요한 핸드셰이크가 없기 때문에, 데이터 전송이 더 빠릅니다.3. 경량 프로토콜: UDP 헤더는 TCP 헤더보다 훨씬 간단하며, 처리 과정이 간단합니다.4. 비신뢰성: UDP는..

2024. 9. 26. 16:20
Network

TCP 소켓 프로그래밍

Socket네트워크 소켓(network socket)은 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점입니다. 오늘날 컴퓨터 간 통신의 대부분은 인터넷 프로토콜을 기반으로 하고 있으므로, 대부분의 네트워크 소켓은 인터넷 소켓 입니다. 네트워크 통신을 위한 프로그램들은 소켓을 생성하고, 이 소켓을 통해서 서로 데이터를 교환합니다. 소켓은 RFC 147에 기술사항이 정의되어 있습니다. RFC 147 텍스트는 1971년 5월 7일에 작성된 네트워크 소켓에 대한 초기 정의를 설명하는 문서입니다. J. M. Winett가 매사추세츠 공과대학교(MIT) 링컨 연구소에서 네트워크 소켓 위원회와 네트워크 커뮤니티에 보낸 것입니다. 주요 내용은 다음과 같습니다: 1. 소켓의 정의소켓은 네트워크에서 정보가 전송되는 ..

2024. 9. 26. 16:13
Network

네트워크 프로토콜

ICMP(Internet Control Message Protocol)는 IP 네트워크에서 오류 보고 및 네트워크 상태를 진단하는 데 사용하는 제어 메시지 프로토콜이야. 이 프로토콜은 TCP나 UDP 같은 전송 프로토콜과는 달리 데이터를 직접 전송하기 위한 게 아니라, 네트워크 장치들 간의 통신 문제를 파악하거나 상태를 관리하기 위한 목적으로 사용돼. ICMP의 주요 역할: 1. 오류 보고:ICMP는 네트워크 통신 중 문제가 발생했을 때 해당 문제를 보고하는 메시지를 보낼 수 있어. 예를 들어, 전송하려던 IP 패킷이 목적지에 도달할 수 없거나, 라우터의 경로가 잘못되었을 때 이 정보를 보내는 방식이지.2. 진단 및 네트워크 상태 확인:네트워크가 제대로 작동하는지 확인하기 위해 ICMP를 이용해 진단 메..

2024. 9. 26. 12:53
Network

네트워크 필수 개념: DHCP, ARP, NAT, 그리고 ZeroConf

DHCP(Dynamic Host Configuration Protocol)는 네트워크에서 IP 주소를 포함한 네트워크 설정을 자동으로 할당해주는 프로토콜이야. 이 기능을 통해 네트워크에 연결된 장치들이 수동으로 설정하지 않고도 자동으로 IP 주소를 부여받고 네트워크에 접속할 수 있어. DHCP의 주요 기능:  1. IP 주소 자동 할당: 네트워크에 새로 연결된 장치(예: 컴퓨터, 스마트폰, 프린터 등)에게 DHCP 서버가 자동으로 IP 주소를 할당해. 관리자가 각 장치에 수동으로 IP 주소를 설정하지 않아도 돼. 2. 네트워크 설정 자동화: DHCP는 IP 주소 외에도 서브넷 마스크, 게이트웨이 주소, DNS 서버 등의 네트워크 설정을 함께 전달해. 장치가 네트워크에 접속하면 DHCP 서버에서 이러한 설..

2024. 9. 25. 15:48
Network

네트워크 기초

네트워크 기본 용어  1. IP 주소 (Internet Protocol Address) • 설명: 인터넷에 연결된 모든 기기에 부여되는 고유한 번호. 기기들이 서로를 구분하고, 데이터를 주고받을 때 사용해. • 종류: • IPv4: 4개의 숫자로 이루어진 32비트 주소 (예: 192.168.0.1). • IPv6: 8개의 16진수로 구성된 128비트 주소 (예: 2001:0db8:85a3::8a2e:0370:7334). 2. MAC 주소 (Media Access Control Address) • 설명: 네트워크 카드에 고유하게 할당된 물리적 주소. 주로 같은 네트워크 내에서 데이터를 주고받을 때 사용돼. • 형식: 6개의 16진수 숫자로 이루어진 48비트 주소 (예: 00:1A:2B:3C:4D:5E). ..

2024. 9. 25. 10:06
Note-Taking

Spring Framework의 주요 메서드와 기능 정리

1. BeanFactory 및 ApplicationContext 메서드 이 두 인터페이스는 스프링의 IoC 컨테이너로, 빈(Bean)의 라이프사이클을 관리해.  • getBean(String name) : 이름으로 빈을 조회. • getBean(Class requiredType) : 타입으로 빈을 조회. • containsBean(String name) : 빈이 컨테이너에 존재하는지 확인. • getAliases(String name) : 특정 빈에 대한 별칭(alias)을 반환. 2. RestTemplate 메서드 RestTemplate은 Spring에서 HTTP 요청을 보내고 응답을 처리하는 데 사용돼.  • getForObject(String url, Class responseType) : HTTP..

2024. 9. 24. 23:30
Note-Taking

Java 메서드의 주요 개념과 정리

1. Object 클래스 메서드 모든 Java 클래스는 암묵적으로 Object 클래스를 상속하므로, Object 클래스의 메서드는 모든 Java 객체에서 사용할 수 있어.  • toString() : 객체의 문자열 표현을 반환. • equals(Object obj) : 두 객체가 같은지 비교. • hashCode() : 객체의 해시코드를 반환. • clone() : 객체의 얕은 복사본을 생성. • finalize() : 객체가 GC에 의해 제거되기 직전에 호출됨. 2. String 클래스 메서드 문자열 처리를 위해 사용되는 메서드들로, String 클래스는 불변 객체이므로 메서드들은 대부분 새로운 문자열을 반환해.  • length() : 문자열의 길이를 반환. • charAt(int index) : 특..

2024. 9. 24. 23:26
Database/JPA

JPA 페이징 API: JPQL, QueryDSL, Spring Data JPA

페이징 API는 큰 데이터를 여러 번에 나누어 조회하는 방식이야. 데이터베이스에서 많은 양의 데이터를 한 번에 불러오면 성능이 저하되고 메모리 사용량이 급격히 증가할 수 있어서, **페이징(Paging)**을 통해 필요한 만큼만 데이터를 불러오는 방식이야. 예를 들어, 한 페이지에 10개씩 데이터를 나누어 보여주는 기능을 구현하는 것처럼 말이야. 1. 페이징의 기본 개념  • 페이지 번호(Page Number): 현재 몇 번째 페이지를 보여줄 것인지 지정하는 값. • 페이지 크기(Page Size): 한 페이지에서 보여줄 데이터의 개수. • 총 데이터 수(Total Elements): 데이터베이스에 저장된 전체 데이터의 수. • 총 페이지 수(Total Pages): 총 데이터 수를 페이지 크기로 나눈 ..

2024. 9. 24. 15:47
Database/JPA

N+1 문제를 해결하는 JPA 사용법

N+1 문제는 ORM(Object-Relational Mapping)에서 발생하는 대표적인 성능 문제 중 하나입니다. 이 문제는 하나의 쿼리를 통해 데이터를 조회한 후, 해당 데이터와 관련된 연관 데이터를 각각 추가로 조회할 때 발생합니다. 즉, 하나의 쿼리(N)로 데이터를 조회하고, 그 데이터와 연관된 데이터를 추가로 조회하기 위해 N번의 쿼리가 추가로 실행되는 상황입니다. 이 문제는 주로 JPA나 Hibernate 같은 ORM을 사용할 때 발생하며, 데이터베이스에 불필요하게 많은 쿼리를 발생시켜 성능 저하를 초래합니다. 예를 들어, **팀(Team)**과 **멤버(Member)**의 관계가 있는 상황에서, 각 팀에 대한 멤버 목록을 조회할 때 다음과 같은 상황이 발생할 수 있습니다.// N+1 문제 ..

2024. 9. 24. 14:16
Note-Taking

JPQL과 QueryDSL 메서드 정리

자주 사용한 JPA와 QueryDSL 메서드들의 의미  1. em.createQuery(String query, Class resultClass) • 이 메서드는 **JPQL(JPA Query Language)**을 사용해 쿼리를 작성하고, 해당 쿼리로 지정한 엔티티 타입을 반환해. resultClass는 반환할 엔티티의 클래스 타입을 지정하는 것이야. • 예시: em.createQuery("SELECT m FROM Member m", Member.class)는 Member 엔티티를 조회하는 JPQL 쿼리를 실행하는 코드야. 2. setParameter(String name, Object value) • 파라미터 바인딩을 위해 사용돼. 쿼리에서 :name 형태로 정의된 파라미터에 값을 매핑해주는 역할을 ..

2024. 9. 24. 13:52
Database/JPA

JPA Q&A 모음집

JPA 연관관계 매핑 및 헷갈리기 쉬운 개념 Q&A 모음 Q1. @GeneratedValue 어노테이션을 사용할 때, 기본적으로 어떤 전략이 사용되나요? A:@GeneratedValue를 사용할 때 전략을 명시하지 않으면, 기본적으로 **GenerationType.AUTO**가 적용됩니다. 이 전략은 JPA가 사용하는 데이터베이스 방언에 따라 적절한 키 생성 전략을 자동으로 선택합니다. 예를 들어, MySQL에서는 IDENTITY 전략을, Oracle에서는 SEQUENCE 전략을 사용할 수 있습니다. Q2. ManyToOne, OneToMany는 클래스 참조 필드에서만 사용할 수 있나요? A:맞습니다! @ManyToOne, @OneToMany와 같은 어노테이션은 엔티티 클래스 간의 연관관계를 정의하는 데..

2024. 9. 23. 09:49
Problem and Solution Guide/JPA

JPA 핵심 문제 풀이: 실무에서 자주 마주하는 이슈와 해결법

문제 1: 단방향 연관관계 매핑 - ManyToOne 문제:Order와 Customer 엔티티가 있다. 각 주문은 하나의 고객에게만 속하지만, 한 고객은 여러 개의 주문을 할 수 있다. 이를 단방향 연관관계로 매핑하고, Order 엔티티에 고객과의 연관관계를 설정하는 코드를 작성해보세요. 풀이:단방향 연관관계에서, Order 엔티티가 Customer 엔티티를 참조하도록 설정하면 돼.@Entitypublic class Order { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String orderDate; @ManyToOne @JoinColumn(name = "cus..

2024. 9. 23. 09:12
Note-Taking

JPQL 핵심 정리

JDBC 템플릿에서는 바인딩이 ?로 지정되지만, JPQL에서는 바인딩이 이름 기반이나 위치 기반으로 이루어져. 1. 이름 기반 바인딩 (Named Parameters): JPQL에서 가장 많이 사용하는 방식으로, 이름 기반 바인딩은 파라미터를 :와 함께 이름을 지정해 사용해. 이 방식은 가독성이 높고, 파라미터의 순서와 무관하게 이름으로 바인딩할 수 있어.  • 사용 예시:String jpql = "SELECT m FROM Member m WHERE m.name = :name";TypedQuery query = em.createQuery(jpql, Member.class);query.setParameter("name", "John");List result = query.getResultList();• 여..

2024. 9. 20. 11:10
  • «
  • 1
  • ···
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • ···
  • 17
  • »

공지사항

  • Jinsu's GitHub

전체 카테고리

  • 분류 전체보기 (250)
    • Java (18)
    • Spring Framework (33)
      • Toby's Spring 3.1 (6)
      • Spring IoC (6)
      • TDD (6)
      • Reflection (6)
      • AOP (6)
    • Spring Boot (11)
    • Spring Security (22)
    • Database (17)
      • Mysql (2)
      • JDBC (2)
      • JPA (13)
    • Build and Development Tools (3)
      • Maven (1)
      • Gradle (1)
      • Lombok (1)
    • Network (12)
    • Apache Tomcat (11)
    • Microservices Architecture (33)
    • Linux (9)
    • React (10)
    • Docker (22)
    • OAuth (10)
    • DevOps (2)
    • Git (2)
    • HTML (1)
    • CSS (1)
    • JavaScript (1)
    • Problem and Solution Guide (8)
      • Java (1)
      • Spring Framework (4)
      • Reflection (1)
      • Dynamic Proxy (1)
      • JPA (1)
    • Note-Taking (23)

블로그 인기글

전체 방문자

오늘
어제
전체
Powered by Privatenote Copyright © Jinsu's Technical Blog All rights reserved. TistoryWhaleSkin3.4

티스토리툴바