
최근 프로젝트를 진행하며 IoT(사물 인터넷)에서 보내주는 패킷을 서버로 받아 처리하는 작업을 진행하였다. 사물 인터넷과 서버의 데이터 통신을 진행하며 배운 점을 정리하려고 한다. 데이터 통신 과정은 다음과 같다. 장비 -> 로그인 요청 -> 서버 서버 -> 로그인 완료 응답 -> 장비 장비 -> 데이터 전송 (1000m/s 간격) -> 서버 (반복) 서버 -> 데이터 수신 응답 -> 장비 (반복) 1. 소켓 연결 처음에는 장비와의 소켓 통신을 위해 서버에서 포트를 열고 대기하였다. try (ServerSocket serverSocket = new ServerSocket(9999)) { // 서버 소켓 생성 System.out.println("서버가 9999 포트에서 대기 중..."); // 클라이언트의..

알고리즘 문제를 풀어보다 leetcode의 원형 큐 구현 문제( Design Circular Queue )를 만났다. 과거 큐를 공부하면서 원형 큐에 대한 구현을 해봐야겠다는 생각을 항상 미루고 있었는데 이번 기회에 이를 학습하였다. 이를 왜 사용할까 생각해 보았을때, 기존 큐의 경우 삽입, 출력 과정에서 배열의 크기가 변경되며 O(n)의 시간복잡도를 요구한다. 하지만 회전 큐에 경우 정해놓은 메모리 사이즈에서 index로 접근해 값을 변경하기 때문에 메모리의 크기는 변경되지 않아 메모리를 효율적으로 사용하는 경우에 필요로 하다고 생각한다. 자세한 개념은 해당 블로그를 참조하였다. [Data Structure] ① 원형 큐(Circular Queue) 알아보기 지난 번 글에서 구현한 동적 배열을 사용한 ..
마이크로서비스 아키텍처 - 서비스 기능 단위로 시스템을 묶어 기능을 구현한다. - 작은 단위의 컴포넌트로 구성 - 서비스 전체 기능을 독립된 작은 단위로 나누어 분리, 각각의 컴포넌트는 독립된 시스템 형태로 개발 및 운영한다. - 서버용량이 다양하고 여러 언어로 구성된 다양한 애플리케이션이 있다. - 잘 분리된 마이크로서비스로 인한 탈중앙화 - 대규모 시스템을 위한 아키텍처 - 가벼운 네트워크 프로토콜 - 느슨한 결합 - 서비스 지향 아키텍처 1. 독립성 하나의 비즈니스 기능을 담당하므로 다른 서비스와 간섭이 최소화된다. 2. 대용량 데이터를 저장 및 처리에 자유롭다. 서비스마다 독립된 데이터베이스를 가지고 있기 때문에 성능적인 부분에서 우세 3. 시스템 장애에 견고하다. 서비스가 느슨하게 결합되어 있고..

목표 자바의 예외 처리에 대해 학습하세요. 학습할 것 (필수) 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 자바가 제공하는 예외 계층 구조 Exception과 Error의 차이는? RuntimeException과 RE가 아닌 것의 차이는? 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) try - try블랙 내에서 에러가 발생한 경우 해당 에러와 일치하는 catch문이 있으면 해당 catch문을 실행한다. public static void main(String[] args) throws Exception { System.out.println("start"); try { System.out.println(0 / 0);..