꾸준한 개발자

계속적인 성장을 추구하는 개발자입니다. 꾸준함을 추구합니다.

계속 쓰는 개발 노트

분류 전체보기 199

큐 (Queue)

🐶 큐에 대해서 알아봐요 - 선입선출 자료구조 - First In First Out (FIFO) - 먼저 들어온 데이터가 먼저 나가는 구조 - 입력 순서대로 데이터 처리가 필요할 때 사용 - ex) 프린터 출력 대기열, BFS (Breath-First Search) 등 🐶 큐 기본 연산 - 데이터 추가 (Enqueue) : 큐에 데이터 추가 - 데이터 꺼내기 (Dequeue) : 큐에서 데이터 꺼내기 🐶 java로 queue 흉내내기 import java.util.LinkedList; import java.util.Queue; public class Main { public static void main(String[] args) { Queue queue = new LinkedList(); queue.a..

스택 (Stack)

🐶 스택이란 무엇일까요 - 후입선출 자료구조 - Last In First Out (LIFO) - 영어를 풀어보면 마지막에 들어온 데이터가 먼저 나가는 구조입니다. - 데이터가 입력된 순서의 역순으로 처리되어야 할 때 사용합니다. - ex) 함수 콜 스택, 수식 계산, 인터럽트 처리 등 🐶 스택 기본 연산 - 데이터 추가 (push) : 스택의 가장 마지막 위치에 데이터 추가 - 데이터 꺼내기 (pop) : 스택의 가장 마지막 위치에서 데이터 꺼냄 🐶 java의 stack 사용하기 import java.util.Stack; public class Main { public static void main(String[] args) { Stack stack = new Stack(); stack.push(1); ..

호이스팅

호이스팅이란 변수나 함수를 스코프 상단으로 끌어올리는 기술입니다. console.log(a); // undefined var a = 1; 변수 선언보다 참조하는 문이 코드 순서 상 앞에 있지만, 에러가 발생하지 않고 참조 결과가 undefined로 나옵니다. 호이스팅이 일어났기 때문에 위와 같은 결과가 나옵니다. 변수 생성 단계 변수는 선언-초기화-할당, 3단계를 걸쳐 생성됩니다. 코드 실행 전 선언과 초기화가 이루어집니다. 선언 단계에서 데이터 메모리에 변수를 저장하고 초기화 단계에 undefined를 할당합니다. 그 후 코드가 실행되면서 할당하는 문에서 해당 데이터 값을 할당하게 됩니다. var 키워드로 선언된 변수와 let, const로 선언된 변수의 차이점이 있습니다. var 키워드로 선언된 변수..

this

this가 어떤 값에 바인딩 되는지는 실행 컨텍스트가 생성될 때 결정됩니다. 즉 함수를 호출할 때 결정된다 볼 수 있습니다. 그러다보니 함수를 어떻게 호출하는지에 따라 바인딩되는 값이 달라지게 됩니다. 전역 스코프에서 쓰이는 this 전역 스코프에서 쓰이는 this는 전역 객체에 바인딩 됩니다. 브라우저 환경에서는 window, node 환경에서는 global에 바인딩 됩니다. 메서드로서 호출될 때 메서드 안에 있는 this 함수와 메서드를 구분할 수 있는 것은 독립성에 있습니다. 함수의 경우 독립적으로 실행되는 반면, 메서드의 경우 자신을 호출하는 객체에 관한 동작을 수행합니다. var func = function (param) { console.log(this, x); }; func(1); var o..

원시타입과 참조타입 (Primitive type & Reference type)

자바스크립트의 데이터 타입 자바스크립트의 데이터 타입으로 7가지가 있습니다. string, number, boolean, null, undefined, symbol, object가 있으며, 데이터 타입은 원시타입과 참조타입으로 구분할 수 있습니다. string, number, boolean, null, undefined, symbol이 원시타입에 해당하며, object는 참조타입에 해당됩니다. 원시타입과 참조타입의 차이점 이 둘의 차이점을 알기 위해서는 자바스크립트에서 데이터를 어떻게 관리하고 있는지에 대한 배경지식이 있어야 합니다. var a; // 변수 a 선언 a = 1; // 변수 a에 데이터 할당 var a = 1; // 변수 선언과 할당을 한 문장으로 표현 원시타입의 경우, 자바스크립트 엔진은..

객체 지향의 4대 특성

객체 지향의 4대 특성은 다음과 같습니다. 1. 캡슐화 : 정보 은닉 2. 상속 : 재사용 + 확장 3. 추상화 : 모델링 4. 다형성 : 사용 편의 추상화 : 모델링 추상화란 구체적인 것을 분해해서 관심 영역(Application Boundary)에 있는 특성만 가지고 재조합하는 것입니다. 사람이라는 클래스가 있다면, 관심 영역이 병원이라면 환자에 맞추어 사람 클래스를 구상할 것이고, 은행이라면 고객에 맞추어 사람 클래스를 구상할 것입니다. 이런 모델링은 객체 지향에서 클래스를 설계할 때 필요한 기법이고 또한 데이터 베이스의 테이블을 설계할 때 필요한 기법입니다. 상속 : 재사용 + 확장 객체 지향에서 상속은 계층도가 아닙니다. 분류도로 이해를 해야됩니다. 예를 들어 할아버지 구현 클래스는 인터페이스할..

JAVA 2021.10.03

객체 지향 설계의 5가지 원칙 (SOLID)

SOLID란 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리한 것입니다. SOLID 내용 SRP (single responsibility principle) : 단일 책임 원칙 OCP (open/closed principle) : 개방 폐쇄 원칙 LSP (liskov substitution principle) : 리스코프 치환 원칙 ISP (interface segregation principle) : 인터페이스 분리 원칙 DIP (Dependency inversion principle) : 의존관계 역전 원칙 SRP 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 합니다. 여기서 하나의 책임이란 것이 모호합니다. 클 수도 있고 작을 수도 있고, 문맥과 상황에 따라 달라집니다. 여기서 중요한 ..

JAVA 2021.10.03

자바 프로그램 개발과 구동

JDK -> 자바 개발 도구 JRE -> 자바 실행 환경 JVM -> 자바 가상 기계 JDK를 이용해서 개발된 프로그램은 JRE에 의해 JVM 상에서 구동됩니다. JDK는 자바 소스 컴파일러인 javac.exe를 포함하고 있습니다. JRE는 자바 프로그램 실행기인 java.exe를 포함하고 있습니다. 자바 개발자는 본인이 사용중인 플랫폼에 설치된 JVM용으로 프로그램을 작성하고 배포하면 각 플랫폼에 맞는 JVM이 중재자로서 각 플랫폼에서 프로그램을 구동하는 데 아무 문제가 없게끔 만들어줍니다. 이러한 자바의 특성을 write once run anywhere라고 합니다. JVM 구성 Class Loader .class(byte code)를 실제 메모리에 적재하는 역할을 합니다. Excution Engine..

JAVA 2021.09.14

Java 변수

변수 종류 지역 변수 메소드 내에서 선언된 변수입니다. 해당 메서드 내에서만 유효합니다. 매개 변수 메소드에 넘겨주는 변수입니다. 메소드가 호출될 때 생명이 시작되고, 메소드가 끝나면 소멸됩니다. 메소드가 호출되면서 스택 메모리에 스택 프레임이 생성됩니다. 그리고 해당 스택 프레임 내에 매개 변수를 위한 공간이 확보됩니다. 인스턴스 변수 클래스 내부이면서 메소드 외부에 선언된 변수입니다. static이라는 예약어가 붙어있으면 안됩니다. 객체가 생성될 때 생명이 시작되고, 그 객체를 참조하고 있는 다른 객체가 없으면 소멸됩니다. 클래스 변수 인스턴스 변수처럼 클래스 내부이면서 메소드 외부에 선언된 변수입니다. 인스턴스 변수와의 차이점으로는 static 예약어를 사용한다는 점입니다. 클래스가 처음 호출될 때..

JAVA 2021.09.10

클래스와 객체

자바는 객체지향 언어입니다. 클래스와 객체를 통해서 프로그램을 개발해 나가야 됩니다. 이번 시간에 클래스와 객체에 대해서 공부하겠습니다. 클래스와 객체 클래스는 '상태'와 '행위'를 갖고 있는 설계도입니다. 그리고 이 클래스를 이용해서 객체를 만들 수 있습니다. 물론 해당 클래스를 사용하여 여러 객체를 만들 수 있습니다. 예를 들어, 사람을 정의한 클래스가 있습니다. 해당 클래스는 '이름'이라는 '상태'를 갖고 있고, '뛰다'라는 '행위'를 갖고 있습니다. 그리고 사람 클래스를 통해서 여러 사람을 만들 수 있습니다. Java로 코딩을 하면 다음과 같습니다. // Person Class public class Person { String name; // 아래 메서드는 생성자로 다음에 이어서 설명하겠습니다...

JAVA 2021.09.09