전체 글 (41) 썸네일형 리스트형 TCP/UDP에 대해서 TCP는 연결형 서비스로 1대 1 통신을 통해 수신 여부를 확인하여 연속성 보다 신뢰성이 있는 전송이 중요할 때에 사용하는 프로토콜이고, UDP는 비연결형 서비스로 여러 통신 방식을 통해 빠른 속도로 신뢰성보다는 연속성이 중요한 프로토콜이다. TCP의 3-way Handshaking: 연결 설정 (Connection Establishment): 클라이언트가 서버에게 연결을 요청하기 위해 SYN(동기화) 패킷을 보냅니다. 연결 수락 (Connection Acceptance): 서버가 SYN을 수신하고, 클라이언트에게 ACK(응답)와 자체의 SYN을 보냅니다. 연결 확인 (Connection Confirmation): 클라이언트가 서버의 ACK를 수신하고, 이에 대한 ACK를 보내면 연결이 확립됩니다. TC.. HTTP란 무엇일까? HTTP(HyperText Transfer Protocol)란? 이터를 주고받는 양식을 정의한 "통신 규약"중 하나가 HTTP입니다. 매우 범용적인 양식을 가지고 있어 전 세계에서 제일 널리 쓰이는 통신 규약입니다. 여기서 말하는 통신 규약이란, 컴퓨터끼리 데이터를 주고받을 때 정해둔 약속을 의미합니다. 현재 이용되는 대부분의 웹 서버가 HTTP를 기반으로 정해준 규칙에 맞게 데이터를 주고받습니다. 또한, 모든 브라우저는 HTTP 프로토콜을 기본으로 지원하기 때문에 여러분은 매일 HTTP를 이용하는 셈이 됩니다. 우리는 어떻게 HTTP로 데이터를 주고받을까? HTTP에서는 언제나 Request, Response라는 개념이 존재합니다. 서버와 브라우저의 관계로 가볍게 말해보면 아래와 같이 동작합니다. 브라.. 서버란 무엇일까? 네트워크란? 네트워크는 여러 대의 컴퓨터 또는 장비가 서로 연결되어서 정보를 주고받을 수 있게 도와주는 기술입니다. 컴퓨터, 라우터, 스위치, 허브 등의 장비들이 각각의 역할을 수행하여 정보를 주고받습니다. 서로 정보를 주고받기 위해서는 IP 주소, 서브넷 마스크, 게이트웨이등의 정보를 설정하고 네트워크 프로토콜을 이용하여 통신을 하게 됩니다. Client와 Server Client 즉, 브라우저에서 서버에 정보를 요청하는 과정을 간략하게 표현한 부분입니다. 보시는 것처럼 사용자는 브라우저를 이용하여 서버에 정보를 요청하고 응답을 받습니다. 이때 사용자의 요청이 서버에 도달하기 위해서는 해당 서버의 정보가 필요합니다. 이때 사용자의 요청이 해당 서버에 정확하게 도달할 수 있게 제공되는 정보가 IP 주소입.. NoSQL과 RDBMS의 특징과 차이점 NoSQL과 RDBMS의 특징과 차이점에 대해서 장, 단점 RDBMS의 장단점 장점 : 정해진 스키마에 따라 데이터를 저장하여야 하므로 명확한 데이터 구조를 보장할 수 있다. 또한 관계는 각 데이터를 중복 없이 한 번만 저장할 수 있다! 단점 : 데이블간 관계를 맺고 있어 시스템이 커질 경우 JOIN문이 많은 복잡한 쿼리가 만들어질 수 있습니다. 성능 향상을 위해서는 서버의 성능을 향상 시켜야 하는 Scale up만을 지원합니다. 이로 인해 비용이 기하급수적으로 늘어날 수 있고 스키마로 인해 데이터가 유연하짐 못해 나중에 스키마가 변경될 경우 번거롭고 어렵습니다. NoSQL의 장단점 장점 : NoSQL에서는 스키마가 없기 때문에 유연하며 자유로운 데이터 구조를 가질수 있고 언제든 저장된 데이토를 조정하고.. 그레이들(Gradle)이란? Gradle이란? Gradle은 빌드 자동화 시스템입니다. 우리가 작성한 Java 코드를 설정에 맞게 자동으로 Build 해 줍니다. Build란 소스 코드를 실행 가능한 결과물로 만드는 일련의 과정을 뜻합니다. Gradle을 사용하면 간편하게 Java 소스 코드를 실행한 가능한 jar 파일로 만들어줍니다. build.gradle build.gradle은 Gradle 기반의 빌드 스크립트입니다. 이 스크립트를 작성하면 소스 코드를 빌드하고 라이브러리들의 의존성을 쉽게 관리할 수 있습니다. groovy 혹은 kotlin 언어로 스크립트를 작성할 수 있습니다. 우리가 개발을 하면서 필요로하는 외부 라이브러리들을 dependencies 부분에 작성하면 Gradle이 해당 라이브러리들을 Maven Reposit.. Null은? null은 나쁘다? null은 Tony Hoare가 만든 개념입니다. 기본적으로 아무것도 참조하지 않는다는 것을 의미합니다. 2009년에 Tony Hoare는 null이라는 개념을 만든 것이 1조 원짜리 실수라고 이야기했습니다. 자세한 이야기는 아래의 링크에 있지만, 매우 간략하게 요약하자면 null이라는 “개념”이 존재하기 때문에, 거의 모든 상황에 null이 발생할 수 있음을 경계해야 합니다. 이상적이라면 모두가 메서드 이름을 “findWhateverAndIfNoExistReturnNull()”처럼 작성하고 해당메서드를 사용하는 모두는 null 체크를 해줘야겠죠 하지만 그런 일은 일어나지 않았습니다. null이 나쁜 케이스 다음과 같은 코드는 자주 하는 실수이며, null이 왜 위험한지를 단적으로 보.. 람다와 스트림 문법 살펴보기 람다와 스트림을 적용할 예시코드 import java.util.ArrayList; import java.util.List; public class LambdaAndStream { public static void main(String[] args) { ArrayList carsWantToPark = new ArrayList(); ArrayList parkingLot = new ArrayList(); Car car1 = new Car("Benz", "Class E", true, 0); Car car2 = new Car("BMW", "Series 7", false, 100); Car car3 = new Car("BMW", "X9", false, 0); Car car4 = new Car("Audi", "A7".. 자바8 변경점 알아보기 프로그래밍 언어의 진화 시장에서 프로그래머가 해결해야 하는 문제는 계속 변화합니다. 문제가 변화하기 때문에, 프로그래밍 언어에 요구되는 기능들도 변화합니다. 시대에 맞는 기능들을 제공하지 않는 언어들은 새로운 언어의 탄생을 야기합니다. 새로운 언어가 탄생하고 해당 언어들이 프로덕션 레벨에 도달하는 동안 적응하지 못하면 해당 언어는 도태되기 시작합니다. 예를 들어 C/C++ 같은 언어들은 프로그램 실행에 대한 비용이 크지 않고, 하드웨어적인 보편성, 호환성에 큰 장점을 가지고 있었기 때문에 시장에서 가장 지배적인 입지를 차지했었습니다. 하지만 특유의 난이도와 다른 요인들의 영향으로 예기치 않게 종료되거나, 보안 이슈가 많아지는 등 안정성이 떨어지게 됩니다. 그러던 와중에 하드웨어는 꾸준한 진화를 거듭했고,.. 이전 1 2 3 4 ··· 6 다음 목록 더보기