JSON(JavaScript Object Notation)은 데이터를 교환하기 위한 경량의 포맷으로, 자바스크립트 객체 문법을 차용해서 구조화된 데이터를 표현하는 방식입니다. 하지만 이름에 ‘JavaScript’가 들어 있음에도 언어와 플랫폼에 독립적으로 사용할 수 있
데이터를 표현하고 교환하기 위해 JSON이 널리 쓰이고 있지만, JSON과 비슷한 역사적 흐름을 갖고 있는 XML 또한 중요한 데이터 형식 중 하나입니다. 이번 글에서는 XML과 마크업(Markup)이란 무엇인지, 그리고 XML이 HTML, JSON과 어떤 점에서 다른
API(Application Programming Interface)는 둘 이상의 컴퓨터가 서로 통신하기 위해 프로토콜, 메서드, 데이터 타입 등이 정의된 중개 계층을 의미합니다.쉽게 말해, 서비스 제공자와 사용자가 정보를 교환할 때 사용할 규칙이라고 볼 수 있습니다.
클라우드#1 가상머신 구글 DOCS, 구글 excel 다 클라우드 위에서 동작 클라우드 근본 구조 -> 가상머신 원래 컴퓨터 한대에 하나 OS 깔고, 여러가지 프로그램 설치 기존 OS에도 계정나누기 기능이 있긴 하지만, 어쨌든 하나의 OS에서 돌아가는거기 때문에
개발을 하다 보면 코드를 짜는 것만큼이나 중요한 게 있습니다. 바로 코드를 합치고, 배포하는 과정입니다.많은 개발자들이 동시에 작업하다 보면, 검증되지 않은 코드가 실수로 배포될 수도 있고, 에러가 발생할 가능성도 높아집니다.이런 문제들을 해결하기 위해 등장한 개념이
프로그래밍을 처음 배우다 보면 클래스, 객체, 인스턴스라는 개념에서 헷갈리는 경우가 많다. 이 글에서는 이 세 가지 개념을 쉽게 이해할 수 있도록 정리해보았다.클래스는 객체를 만들기 위한 설계도 또는 틀이다.어떤 속성과 동작(메서드)을 가질지 정의해놓은 것이다.예를 들
static 멤버는 모든 객체가 공유하지만, 프로그램이 종료될 때까지 GC 대상이 되지 않아 메모리 누수 위험이 있다.인스턴스마다 동일한 동작을 하는 메서드는 static 혹은 싱글턴 패턴으로 관리해 메모리를 아끼자.Java에서 클래스를 설계할 때 모든 객체가 같은 동
오버로딩: 같은 이름의 메서드를 매개변수 시그니처만 다르게 하여 여러 개 정의 → 컴파일 타임(정적) 다형성. 오버라이딩: 상위 클래스/인터페이스의 메서드를 동일한 시그니처로 재정의 → 런타임(동적) 다형성. static·final 메서드는 오버라이딩이 불가(숨김‧
개발을 하면서 한 번쯤은 들어봤을 컴파일러, 인터프리터, 그리고 JIT 컴파일러."이게 뭐가 다르지?", "왜 언어마다 방식이 다른 거야?"처음엔 헷갈릴 수 있지만, 이 개념들을 이해하면 프로그래밍 언어의 동작 원리를 더 깊이 이해할 수 있습니다.우리가 작성하는 코드는
소프트웨어 개발을 하다 보면 “라이브러리”와 “프레임워크”라는 용어를 자주 마주친다.둘 다 공통 기능을 모듈화한 코드 집합이지만, 구조적 엄격성과 자유도에서 뚜렷한 차이가 존재한다.공통 기능을 모듈화한 코드 묶음이다. 폴더명·파일명에 대한 강제 규칙이 없다. 개발자
싱글톤 패턴 구현 7가지 방법 synchornized 단순한 메서드 호출 싱글톤 패턴 생성 여부 확인하고 생성 문제점 : 원자성이 결여되어 있다. Java는 멀티스레드 언어이다. synchornized 추가 synchronized ? 최초로 접근한 스레드가 해당
메인 모듈이 직접 하위 모듈에 대한 의존성 주기 보다 중간에 의존성 주입자가 가로채 메인 모듈이 간접적으로 의존성 주입하는 방식 의존한다 라는 의미 A가 B에 의존한다 > B가 변하면 A가 변한다. 클래스 B가 수정이 되면 A도 수정해야 한다 DI 원칙 적용 전
전략 패턴(Strategy Pattern)은 "전략"이라고 부르는 알고리즘을 캡슐화하여,컨텍스트(Context) 안에서 서로 교체할 수 있게 만드는 디자인 패턴입니다.즉, 하나의 기능(예: 로그인, 결제 등)을 다양한 방법으로 구현할 수 있고,이 방법들을 쉽게 갈아끼울
스프링 프레임워크는 다양한 모듈로 구성된 아키텍처를 기반으로 동작한다. 그중 웹 애플리케이션을 구축할 때 핵심 역할을 담당하는 것이 spring-web 모듈이며, 이 모듈에서 가장 중심이 되는 컴포넌트는 바로 DispatcherServlet이다.이번 글에서는 Sprin
웹 애플리케이션이 복잡해지면 상태(state) 관리가 점점 어려워진다. 특히 MVC 패턴에서는 Model과 View 사이의 관계가 많아질수록 데이터 흐름이 꼬이고, 상태 추적이 어려워지는 문제에 직면하게 된다.이러한 문제를 해결하기 위해 Facebook에서 제안한 아키
개발 공부를 하다 보면 자주 마주치는 단어 중 하나가 \*\*"컨텍스트(context)"\*\*입니다. 어렵게 느껴지지만, 우리 일상 속에서 이미 자주 경험하고 있는 개념입니다.여러분이 카페에 들어가서 "아이스 아메리카노 하나 주세요"라고 말한다고 해보겠습니다. 이때
개발을 하다 보면, “무언가를 쉽게 교체하고 싶다”라는 욕구가 자주 생긴다. 이럴 때 많이 언급되는 개념이 바로 전략 패턴과 의존성 주입(DI) 이다.둘 다 쉽게 교체가 가능하다는 점에서 비슷하게 느껴질 수 있다. 하지만 본질적으로 목적과 사용 방식, 그리고 적용되는
오늘은 네트워크의 가장 기본적인 개념인 노드, 링크, 트래픽, 처리량, 대역폭, RTT에 대해 학습한 내용을 정리해본다.네트워크란 간단히 말해 노드(Node)와 링크(Link)가 서로 연결되어 리소스를 공유하는 집합을 의미한다.노드: 네트워크를 구성하는 각 지점을 말한
네트워크 토폴로지(Network Topology)는 노드와 링크가 어떤 구조로 연결되어 있는지를 나타내는 방식이다. 이번에는 대표적인 토폴로지인 버스, 스타, 트리 토폴로지에 대해 알아본다.버스 토폴로지는 중앙 회선 하나(백본, Backbone)에 여러 개의 노드가 연
링 토폴로지: 노드들이 고리 형태로 연결 된 네트워크 구조 토큰링 기반 프로토콜 전송 네트워크 상 단 하나 토큰 토큰 소유 노드만 네트워크 통신 가능 링 토폴로지는 어떤 노드에서 장애 발생했는지 쉽게 확인 가능 노드 추가 및 삭제 이론적으로는 쉽다 근데 실제로는
토폴로지는 네트워크의 성능과 안정성을 결정하는 핵심 요소이며, 특히 병목 현상(Bottleneck)을 이해하고 해결하는 중요한 척도가 된다병목 현상이란 말 그대로 병의 목처럼 좁아지는 구간 때문에 전체 흐름이 느려지는 것을 의미한다. 네트워크에서는 과도한 트래픽으로 인
개발을 하다 보면 네트워크 통신 방식을 접하게 된다. 데이터를 주고받는 방식에는 여러 가지가 있는데, 가장 대표적인 세 가지 방식인 유니캐스트, 멀티캐스트, 브로드캐스트에 대해 알아보고자 한다. 각 방식이 어떻게 다르며, 어떤 상황에서 사용되는지 예시를 통해 쉽게 이해