전체 글

초보개발자의 성장 기록
패킷(packet) 이란 무엇인가? 개발자를 하면서 한번쯤 들어본 패킷(packet), 이것을 떠올렸을 때 어렴풋이 추상화된 이미지로밖에 그려지지 않아 이번기회에 머릿속에 정확히 정의하고자 패킷(packet)에 대해 공부하고 기록하려 한다. 오늘은 데이터 통신에서 전송되는 정보의 기본 단위인 패킷(packet)에 대해서 포스팅하려 한다. 👉 패킷(packet)의 정의 패킷(packet)이란 네트워크에서 출발지와 목적지간에 라우팅 되는 데이터의 단위이다. 즉, 정보를 보낼 때 특정 형태를 맞추어 보내 컴퓨터 간에 데이터를 주고 받을 때 네트워크를 통해 전송되는 데이터 조각이다라고 생각하면 된다. packag(패키지) + bucket(버킷) 패킷은 pack과 bucket를 합친 말로, 우체국에서는 화물을 적..
DDD (Domain-Driven Design) - 도메인 주도 설계 내 생각에 모든 아키텍처는 "낮은 결합도와 높은 응집도"라는 과학적 사고에 기초해 나온거라고 생각한다. 최근 많은 IT 기업에서 적용하고 있는 MSA에 관심을 갖던 중 DDD 라는 개념을 알게 되었고 마이크로 서비스의 도출기법으로 활용되는 DDD (Domain-Driven Design)에 대해서 간략히... 포스팅하려고 한다. 이 방법론은 복잡한 도메인 모델을 잘 이해하고, 그것을 구현할 수 있는 소프트웨어 모델을 만드는 것을 목표로 하며 이를 통해 개발자와 도메인 전문가가 협업하여 비즈니스 요구사항을 이해하고, 구현하는 과정에서 발생할 수 있는 문제를 최소화 할 수 있다. 도메인 주도 설계의 목적 도메인 주도 설계의 목적은 소프트웨어..
프로그래머스 - 바탕화면 정리 (Java 풀이) https://school.programmers.co.kr/learn/courses/30/lessons/161990 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 코딩테스트를 준비하는 머쓱이는 프로그래머스에서 문제를 풀고 나중에 다시 코드를 보면서 공부하려고 작성한 코드를 컴퓨터 바탕화면에 아무 위치에나 저장해 둡니다. 저장한 코드가 많아지면서 머쓱이는 본인의 컴퓨터 바탕화면이 너무 지저분하다고 생각했습니다. 프로그래머스에서 작성했던 코드는 그 문제에 가서 다시 볼 수 있기 때문에 저장해 둔 파일..
DTO vs VO vs Entity 우리가 Spring Framework를 사용하면서 비슷한 개념이라고 생각했던 DTO, VO, Entity의 개념 및 차이점을 정리한다. 1. DTO (Data Transfer Object) DTO(Data Transfer Object)는 데이터 전송(이동) 객체(Java Beans)라는 의미를 갖는다. DTO는 계층(Layer)간 데이터를 주고 받을 때(주로 비동기) 사용하며, 주로 View와 Controller 사이에서 데이터를 주고 받을 때 활용하고 로직을 갖지 않는 순수한 데이터 객체이며, getter/setter 메소드만을 갖는다. 아래코드는 setter 를 가지는 경우로 가변 객체로 활용한 경우이다. public class StudentDTO { private..
Java 스트림(Stream) 사용 시 주의사항 최근에 Java의 Stream API를 활용하면서 경험했던 오류들에 대한 내용을 정리한다. 1. 스트림의 재사용 말 그대로 한 번 사용했던 스트림을 다시 한번 사용할 경우 발생하는 오류이다. 흔하게 접할 수 있는 실수이므로 주의하자. Stream은 컬렉션이 아니기 때문에 재사용할 수 없다. 예제1) // 문자열 스트림 생성 Stream langNames = Stream.of("Java", "C++", "Python", "Ruby"); // 스트림 내 모든 요소 출력 langNames.forEach(System.out::println); // "Java" 만 제외한 스트림을 다시 생성... Exception이 발생한다. Stream filtered = lan..
Layered Architecture - 계층화 아키텍처 ✔️ 아키텍처(Architecture)란? 시스템의 구조, 동작 등을 정의하는 개념적인 모형으로 목적을 달성하기 위해 시스템의 각 컴포넌트가 무엇이며 어떻게 상호작용 하는지, 정보가 어떻게 교환되는지를 설명한다. "하나의 서비스가 어떻게 구성이 되며 어떻게 동작이 된다" - 서비스의 동작 원리 ✔️ 계층화 아키텍처 (Layered Architecture)란? 아키텍처의 컴포넌트들은 각각 어플리케이션의 특정한 역할을 수행하도록 가로로 나누어져 계층을 이룬다. 가장 널리 알려진 아키텍처로 전통적인 IT workflow와 조직 구성이 잘 맞아 떨어져 많은 비즈니스에서 채택된다. 주로 3계층으로 이루어져 있다. 유저 + 브라우저와 상호작용하는 Presen..
프로그래머스 - 크기가 작은 부분 문자열 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/147355 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요. 예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 1..
프로그래머스 - 가장 가까운 같은 글자 https://school.programmers.co.kr/learn/courses/30/lessons/142086 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다. 예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다. b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합..
코딩무니
무니의 개발 로그