본문 바로가기

전체 글

스택(Stack) 구조의 이해 Stack의 개념 Stack은 마치 데이터를 쌓아 뒀다가 산출하는 것 같은 형태의 후입선출 구조를 따르는 선형 자료구조이다. Stack이라는 명칭은 쌓인 더미의 형태를 뜻한다. 카드나 접시 혹은 동전을 쌓아 두었다면 중간 혹은 아래의 것부터 꺼낼 수 없고 위의 것부터 꺼낼 수밖에 없다. Stack은 이와 같은 구조를 가지기 때문에 해당 명칭으로 명명되었다. Stack 구조에서의 명칭 데이터를 삽입할 때는 Push, 삭제될 때는 Pop이라고 하며, 선입선출법(FIFO, First In - First Out)의 구조를 가지는 큐(Queue)와는 명칭이 다르다. 위 그림과 같이 Stack의 데이터는 나중에 Push된 순으로만 Pop할 수 있다. 또한 Stack이 가득 찬 상태를 Full, 비어 있는 상태를 E.. 더보기
프론트엔드와 백엔드 비교( +백엔드 개발자가 되고 싶은 이유) 프론트엔드와 백엔드 비교 소프트웨어 디자인 모델의 하나인 MVC 모델은 Model, View, Controller로 구성된다. 프론트엔드 개발자와 백엔드 개발자는 해당 구성요소들을 나누어 개발하게 된다. 프론트엔드 프론트엔드 개발자는 이 중 사용자와 소프트웨어가 직접 상호작용하는 요소인 View를 구현한다. 서버가 전송하는 데이터만을 통해 사용자와 소프트웨어의 상호작용이 불가능한 것은 아니다. 그러나 소프트웨어에 대한 지식이 없는 일반 유저의 입장에서 raw data를 직접 다루기는 어렵다. 따라서 일반 유저도 쉽고 편리하게 이용할 수 있도록 직관적인 화면과 조작 매개체(주로 버튼)를 구현하는 것이 프론트엔드 업무의 핵심이다. 프론트엔드의 핵심 관심사항인 UI(User Interface)는 이름 그대로 .. 더보기
컴퓨터 구조 개념 정리 컴퓨터 시스템 하드웨어, 소프트웨어로 구성 소프트웨어: 운영체제, 응용 프로그램 주요 하드웨어: CPU(중앙처리장치), Memory, Storage, Network 폰 노이만 구조(현 컴퓨터 구조) CPU, 메모리, 프로그램으로 구성 Memory에 프로그램, 데이터 저장 하나씩 꺼내서 CPU:Arithmetic Logic Unit(내부의 Accumulator에 Input 후 결괏값 Output)으로 연산 다른 작업을 할 때 소프트웨어만 교체하면 됨 컴퓨터 주요 구성 요소(3가지) CPU 연산 산술 연산 논리 연산 제어 IO Device(입출력 장치), Memory, ALU 동작 제어 Memory(코드, 데이터 저장) 프로그램, 프로그램 수행에 필요한 데이터 저장 내부 기억장치(주기억장치) CPU 안에 레.. 더보기
배열 출력, 복제, List 또는 Set에서 변경 배열값 출력 int[] a = {1, 2, 3}; System.out.println( Arrays.toString(a) ); java.lang의 toString 메소드가 아닌 java 유틸리티 함수인 Arrays를 사용한다. 배열 복제 int[] a = {1, 2, 3}; int[] b = a.clone(); 반복문을 이용하지 않고 배열을 그대로 복제한다. List 또는 Set을 Array로 변경(Object type만 가능) String[] array = list.toArray(new String[5]); list의 길이가 5 이하라면 길이 5짜리 배열을 만든다. List list = new ArrayList(); list.add("A"); list.add("B"); list.add("C"); Stri.. 더보기
의존성 주입(DI) 방법 정리 의존성 주입(Dependency Injection, DI)은 클라이언트가 의존할 대상을 외부에서 지정해 주는 것을 말한다. 이를 통해 클라이언트의 코드 변경 없이 다형성을 구현할 수 있다. 의존성을 주입하기 위해서는 먼저 용도에 따라 클래스에 @Controller, @Service, @Repository, @Component, @Configuration과 같은 Bean을 등록하기 위한 annotation을 부여해야 한다. IoC(DI) Conatainer는 해당 annotation이 부여된 객체들을 관리하며 클라이언트 대신 생성하고, @Autowired가 명시된 클라이언트의 field, constructor, method에 주입한다. @Repository public class MenuRepository.. 더보기
HTML/CSS 기초 문법 정리 HTML(HyperText Markup Language): markup language 태그 사용 빈도 self closing tags(태그에 contents 포함) 줄 바꿈(line break) 구분선(horizontal rule) 이미지 추가 입력창 라벨 이름 id: 글자를 눌러도 선택할 수 있게 해 줌 라벨 이름 선택창 라벨 이름 라벨 이름 체크박스 라벨 이름 라벨 이름 not self closing tags HTML문서 구조 페이지 작성 페이지 내용 제목 내용 내용 볼드 처리 내용 내용 글자 기울이기 내용 내용 큰 계층 나누기(section) 내용 계층 나누기(division) 내용 단락(paragraph) 내용 구조 나누기(inline, 정보 길이만큼만 가로 공간 차지) 내용 리스트 (unord.. 더보기
REST API의 URI 설계 기본 규칙 일반 규칙 1. URI의 마지막에는 /를 포함하지 않는다. ex) http://localhost:8080/items (O) http://localhost:8080/items/ (X) 2. _ 대신 -를 사용한다. ex) http://localhost:8080/company-name (O) http://localhost:8080/company_name (X) 3. 행위가 아닌 목적(리소스)을 지칭해야 한다. 리소스를 URI에 mapping하여 식별한다. 행위는 HTTP method를 통해 표현(representations)한다. 단, HTML FORM을 통한 컨트롤 URI를 사용할 때는 예외로 한다. ex) http://localhost:8080/members/8 (O) ex) http://localhos.. 더보기
REST API 특징 정리(https://restfulapi.net 참고) API(Application Programming Interface)는 소프트웨어 간 데이터를 전송해 주는 인터페이스로서, 서버의 구조와 프로세스에 대한 이해가 없는 클라이언트 사용자도 서버를 이용할 수 있도록 중개 역할을 해 준다. API는 관심사를 분류하는 리소스와 행위를 담당하는 HTTP method를 모두 포함하고 있다. REST(REpresentational State Transfer) API는 REST 구조를 따르는 인터페이스로 화면의 출력구조를 포함하지 않고, 화면을 구현하는 데 사용될 데이터만 전달하는 API를 뜻한다. 이하의 내용은 https://restfulapi.net/ 의 내용을 참고(사실상 사용)하여 작성했다. 해석 과정에서 의역이 많이 들어갔기 때문에 원문과 많이 달라질 수 있다.. 더보기