분류 전체보기 23

[Java] String과 StringBuffer/StringBuilde

String이란? String 클래스는 문자열을 다루는 클래스이며 불변하다. 즉, String 객체에 값이 초기에 할당되면 그 값은 변경되지 않는다. String 객체 생성방법 1. 리터럴을 이용하여 String 객체 생성 - String a1 = "a"; - String Constant Pool에 저장 2. new 연산자를 이용하여 String 객체 생성 - String a2 = new String("a"); - Heap 영역에 저장 a1과 a2는 서로 참조하는 곳이 다르기 때문에 a1 = a2는 false이다. String 특징 - 불변 String a1 = "a"; a1 += "a"; 1. 'a1' 변수에 'a' 리터럴을 이용해 String 객체 생성 2. 'a1' 변수에 'a' 리터럴 추가로 연산..

언어/Java 2023.05.21

TLS란?

TLS(Transport Layer Security)란? 전송 계층 보안(TLS)은 인터넷 상의 커뮤니케이션을 위한 개인 정보와 데이터 보안을 용이하게 하기 위해 설계되어 널리 채택된 보안 프로토콜이다. TLS는 주로 웹 사이트를 로드하는 웹 브라우저와 같이 웹 응용 프로그램과 서버 간의 커뮤니케이션을 암호화하는 것이다. TLS는 또한 이메일, 메시지, 보이스오버 IP(VoIP) 등 다른 커뮤니케이션을 암호화하기 위해 사용된다. TLS와 HTTPS의 차이점은? HTTPS는 HTTP 프로토콜 상위에서 TLS 암호화를 구현한 것으로 모든 웹 사이트와 다른 웹 서비스에서 사용된다. 따라서 HTTPS를 사용하는 웹 사이트는 TLS 암호화를 이용한다. TLS의 역할 TLS 프로토콜은 암호화, 인증, 무결성이라는 ..

네트워크 2023.05.06

SSL이란?

SSL이란? SSL(Secure Sockets Layer)은 암호화 기반 인터넷 보안 프로토콜이다. 인터넷 통신의 개인정보 보호, 인증, 데이터 무결성을 보장하기 위해 개발되었다. SSL/TLS를 사용하는 웹사이트의 URL에는 "HTTP"가 아닌 "HTTPS"가 있다. SSL 인증서에 포함된 정보 - 인증서가 발급된 대상 도메인 이름 - 발급받은 사람, 조직, 장치 - 발급한 인증 기관 - 인증 기관의 디지털 서명 - 관련 하위 도메인 - 인증서 발급 날짜 - 인증서 만료 날짜 - 공개 키(개인 키는 비밀로 유지됨) SSL/TLS 작동 방식 SSL은 높은 수준의 개인정보 보호를 제공하기 위해, 웹에서 전송되는 데이터를 암호화한다. 데이터를 훔치려하는 사람이 보면 해독 불가능한 복잡한 문자로 보인다. SS..

네트워크 2023.05.06

TCP와 UDP

TCP란? 제 4계층(전송 계층)은 통신 제어와 서비스의 식별을 수행하는 계층이다. TCP는 제 4계층에 속하며, 서버와 클라이언트간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜이다. 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜이다. 신뢰성과 신속성 제 4계층은 애플리케이션이 요구하는 통신 요건을 '신뢰성'과 '신속성'으로 분류하여 각각에 대해 다른 프로토콜을 마련하고 있다. 데이터를 중요하게 생각하여 확실히 주고받고 싶을 때는 'TCP(Transmission Control Protocol)'를 사용한다. TCP는 통신할 컴퓨터끼리 '보냈습니다', '도착했습니다'라고 서로 확인 메세지를 보내면서 데이터를 주고 받으며 신뢰성을 높인다. 데이터의 신뢰성은 제쳐두..

네트워크 2023.03.11

라우팅

라우팅이란? 이더넷으로 만든 네트워크와 네트워크를 연결할 때 사용하는 네트워크 기기가 '라우터'이다. 라우터는 미리 만들어 놓은 '라우팅 테이블'을 이용하여 패킷을 전송한다. 라우터가 수행하는 패킷 전송을 '라우팅(경로 설정)'이라고 한다. 라우팅 테이블은 '목적지 네트워크'와 목적지 네트워크로 가기 위해 보내야 할 곳의 IP 주소(넥스트 홉)로 구성되어 있다. 라우터는 패킷을 받으면 해당 패킷의 목적이 IP 주소와 라우팅 테이블의 목적지 네트워크를 대조한다. 목적지 IP 주소가 목적지 네트워크에 있으면 넥스트 홉의 IP 주소로 패킷을 전송하고, 없으면 파기한다. 라우팅 테이블의 작성 방법 라우팅 테이블을 만드는 방법으로는 '정적 라우팅'과 '동적 라우팅'이 있다. 정적 라우팅은 수동으로 라우팅 테이블을..

카테고리 없음 2023.03.11

IP와 IP 주소

IP란? 제 3계층에서 가장 중요한 프로토콜로 IP(Internet Protocol)란 인터넷에 연결되어 있는 모든 장치들(컴퓨터, 서버 장비, 스마트폰 등)을 식별할 수 있도록 각각의 장비에게 부여되는 고유 주소이다. IP는 제 4계층(전송 계층)으로부터 받은 데이터(세그먼트)에 'IP 헤더'를 붙여 패킷으로 만든다. IP 헤더는 패킷의 목적지를 나타내는 택배 전표와 같은 것이다. IP 주소는 '192.168.1.1'과 같이 8비트마다 점(.)으로 구분하여 10진수로 표기하는데, 점으로 구분된 그룹을 '옥텟'이라고 한다. IP 주소는 단독으로 사용되지 않고 '서브넷 마스크'라는 32비트로 된 값과 세트로 사용한다. IP 주소는 서브넷 마스크로 분할된 '네트워크부'와 '호스트부'로 구성되어 있다. 네트워..

카테고리 없음 2023.03.11

프로토콜

프로토콜이란? 통신할 때의 규칙 모음을 프로토콜이라고 한다. 가장 대표적인 예로 HTTP(HyperText Transfer Protocol)이 있다. 웹 서버와 웹 클라이언트에서 데이터를 송수신할 때 사용하는 통신 규칙, 즉 통신 프로토콜이다. 프로토콜의 역할 프로토콜이 갖고 있는 역할 중에서 가장 중요한 것은 '캡슐화'와 '캡슐 해제화'이다. 네트워크 통신에서는 OSI 참조 모델의 계층을 넘어설 때마다 데이터를 용기(캡슐)에 넣고 꺼낸다. 캡슐에 넣는 처리를 캡슐화, 캡슐에서 꺼내는 처리를 캡슐 해제화라고 한다. 캡슐화와 캡슐 해제화는 애플리케이션 데이터를 보내는 서버와 그것을 받는 클라이언트를 예로 생각하면 쉽게 이해할 수 있다. 송신 측에서는 캡슐화, 수신 측에서는 캡슐 해제화 수행 서버에서 실행하..

네트워크 2023.03.11

서버와 네트워크

서버란? 네트워크에서 다른 컴퓨터나 소프트웨어와 같은 클라이언트에게 서비스를 제공하는 컴퓨터이다. 일반적으로, 사용자가 웹 브라우저를 사용하여 웹 사이트에 접속할 때, 웹 브라우저가 '클라이언트'이며, 웹 사이트의 콘텐츠가 있는 컴퓨터가 '서버'이다. 서버의 처리는 클라이언트의 요청으로 시작된다. 서버는 클라이언트로부터 리퀘스트(요청)를 받아야 비로소 처리를 시작하여 서비스를 제공한다. 클라이언트가 서버에게 어떤 서비스를 요청한다. 서버는 요청에 응답하여 처리를 수행한다. 서버는 처리 결과를 클라이언트에게 반환한다. 클라이언트는 처리 결과를 받는다. 네트워크란? '네트워크'라는 말은 '뭔가와 뭔가의 연결' 전반을 뜻한다. 즉, 서버와 클라이언트의 정보가 오고 가는 다리 역할을 하는 기술이 '네트워크'이다..

네트워크 2023.03.11

[JPA] 영속성 전이와 고아 객체

영속성 전이란? 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만드는 것을 영속성 전이라고 한다. 쉽게 말해서 영속성 전이를 사용하면 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장할 수 있다. @Entity public class Parent { ... @OneToMany(mappedBy = "parent") private List children = new ArrayList(); ... @Entity public class Child { ... @ManyToOne private Parent parent; ... private static void saveNoCascade(EntityManager em) { // 부모 저장 Parent parent = new Parent(); ..

카테고리 없음 2023.01.29

[JPA] 즉시 로딩과 지연 로딩

즉시 로딩과 지연 로딩 프록시 객체는 주로 연관된 엔티티를 지연 로딩할 때 사용한다. 즉시 로딩 - 엔티티를 조회할 때 연관된 엔티티도 함께 조회한다. - 예: em.find(Member.class, "member1")를 호출할 때 회원 엔티티와 연관된 팀 엔티티도 함께 조회 - 설정 방법: @ManyToOne(fetch = FetchType.EAGER) - JPA 구현체는 즉시 로딩을 최적화하기 위해 가능하면 조인 쿼리를 사용한다. @Entity public class Member { ... @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "TEAM_ID") private Team team; ... } ... Member member = em.find(..

카테고리 없음 2023.01.15