분류 전체보기 188

TIL 정리_56

자료구조 : 자바 comparable 인터페이스/오버라이드 String one = "hello world"; String two = "hello world"; if(one.equals(two)) { System.out.println("they are the same"); 위의 코드에서 equals 메서드가 어디서 왔는가? -> 문자열에서 왔다 -> 정확히는 객체의 equals 메서드를 오버라이드 했다 (원래의 메서드 오버라이드) Object o = one; //형변환 Object t = two; if(o.equals(t)) 객체를 비교할 때는 메모리 주소를 비교하고 문자열 클래스를 비교할 때는 메모리 주소를 비교하지 않는다 객체(원숭이)가 같은지 비교 Monkey m = new Monkey(); Monk..

TIL 정리_55(인덱스)

데이터베이스에서의 인덱스 인덱스는 데이터베이스 객체의 하나로 DDL을 사용해서 작성하거나 삭제한다 표준 SQL에는 CREATE INDEX 명령이 없지만 인덱스 자체가 데이터베이스 제품에 의존하는 선택적인 항목으로 취급된다 인덱스 = 정렬 지정한 컬럼들을 기준으로 메모리 영역에 일종의 목차를 생성하는 것이다 -> 검색이 빨라진다 인덱스 작성 : CREATE INDEX 예) CREATE INDEX 인덱스명 ON 테이블명(열의 이름 1, 이름 2 ....) 인덱스 삭제 : DROP INDEX 예) DROP INDEX 인덱스명 (스키마 객체의 경우) DROP INDEX 인덱스명 ON 테이블명(테이블 내 객체의 경우) 인덱스 작성을 통해 쿼리의 성능 향상을 기대할 수 있다 실제로 인덱스를 사용해 검색하여 확인하려..

백엔드/Database 2022.04.12

TIL 정리_54

public static void main(String[] args) 코드 분석 public : 접근제어자이며 public은 참조에 제한이 없다 다른 접근 제어자로는 private, (default/아무것도 안 붙을때), protected가 있다 static : 메서드 앞에 static이 붙어있으면 클래스 메서드임을 의미한다 클래스 메서드는 객체를 생성하지 않고도 호출이 가능하다 -> 인스턴스(객체)와 관계없는 메서드를 클래스 메서드로 정의한다 void : 반환값이 없는 경우 사용한다 //main 메서드는 반환값이 없다 반환값이 있는 경우 반환값의 타입을 적는다(int, String 등) main : 실행될 메인 메서드를 의미한다 String[] : String형의 배열을 의미한다 args : 배열의 이..

백엔드 2022.04.10

TIL 정리_53(TDD)

TDD란? Test Driven Development의 약자로 테스트 주도 개발이라고 한다 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다 짧은 개발 주기의 반복에 의존하는 개발 프로세스이며, 프로토 타입을 완성하는 애자일 방법론 중 하나인 Test-First 개념에 기반을 두었다 TDD 개발주기 단위 테스트 : 말 그대로 한 단위(일반적으로 class)만을 테스트 하는 것이다. Write Failing Test 단계 : 실패하는 테스트 코드를 먼저 작성한다 Make Test Pass 단계 : 테스트 코드를 성공시키기 위한 실제 코드를 작성한다 Refactor 단계 : 중복 코드 제거, 일반화 등의 리팩토링을 수행한다 중요한 것은 실패하는 테스트 코드를 작성할..

백엔드 2022.04.09

TIL 정리_52(OOP)

OOP(Object Oriented Programming) 객체지향 프로그래밍 이전의 프로그래밍 패러다임은 중심이 컴퓨터에 있지만, 객체지향 프로그래밍은 현실세계를 프로그래밍으로 옮긴 인간 중심적 프로그래밍 방식이다 특징 캡슐화 : 함수와 변수를 묶어 객체를 만들고 객체과 객체끼리 상호통신이 가능하도록 하며, 캡슐 속 객체는 외부에서 참조할 수 없도록 하는 은닉화라는 특징을 갖는다 상속성 : 부모클래스의 멤버를 자손클래스가 상속받는 것으로 코드의 재사용성을 의미한다 다형성 : 하나의 객체가 다양한 형태를 갖는다. 부모 클래스의 참조변수로 자손 클래스를 다룬다. 추상화 : 객체의 공통적인 기능이나 속성을 묶어 명시적인 이름을 부여하는 것으로 필요한 것은 사용하고 불필요한 것은 제거한다. 객체지향 프로그래밍..

백엔드 2022.04.08

[개인기록] 필수적인 이클립스 초기 설정

이클립스 초기 설정은 처음 깔 때 여러가지 했지만 이번에 깃 커밋하면서 기본 설정을 UTF-8로 바꾸는게 중요하다는 것을 깨달았다 사실 그동안은 한글이 깨진적이 없어서 몰랐는데 이번에 새로 만든 패키지가 뭐가 문제인지 몰라도(나중에 찾아봐야겠다) 깨진 상태로 출력되어서 필요성을 깨달았다 Windows 운영체제는 기본 인코딩 값으로 euc-kr방식을 사용한다고 들었는데 그 때문인지 내 기본설정도 이 방식으로 된 것 같다 이미 사용하고 있던 것들의 주석이 있어서 바꾸면 한글이 깨지기 때문에 새로운 워크스페이스를 만들때에 (특히 프로젝트) 참고하기 위해 기록한다 전체 설정은 window - preferences에 들어가서 General -> Workspace -> UTF-8 선택 General -> Conte..

개인기록 2022.04.07

TIL 정리_51(Queue)

Queue 먼저 집어넣은 데이터를 먼저 꺼낸다 FIFO(First In First Out) 양쪽으로 뚫린 파이프에 한쪽은 넣고 반대쪽은 빠져나오는 구조이다 Queue의 메서드 add() : 맨 끝에 데이터를 하나 추가 remove() : 맨 앞에서 데이터를 하나 꺼낸다 peek() : 맨 앞에 있는 데이터를 본다 isEmpty() : Queue가 비었는지 확인 poll() : Queue에서 객체를 꺼내서 반환. 비어있으면 null 반환 offer() : Queue에 객체를 저장. 성공하면 true 실패하면 false 반환 Queue를 코드로 구현 import java.util.NoSuchElementException; class Queue { //queue 클래스 생성 + 데이터 타입 명시 class N..

TIL 정리_50(Stack)

Stack stack : 쌓다 LIFO(Last In First Out) 구조이다 바로 넣었다가 거꾸로 정렬된 데이터를 꺼내쓰고 싶을 때 유용하다 지원하는 기능 pop() : 맨 마지막에 넣은 데이터를 가져오면서 지운다 push() : 새로운 데이터를 맨 위에 쌓아 올리는 것이다 peek() : 맨 마지막 데이터를 본다 isEmpty() : 스택에 데이터가 있는지 없는지 확인한다 stack 코드로 구현 import java.util.EmptyStackException; class Stack { class Node { private T data; private Node data; public Node(T data) { this.data = data; } } private Node top; public T ..

TIL 정리_49(StringBuilder)

StringBuilder 클래스안에 배열공간을 만들어 놓고 append 함수가 호출되면 추가되는 문자열을 해당 배열공간에 바로 추가한다 배열공간이 부족하면 그때마다 공간을 늘려서 복사한다 속도나 공간면에서 효율적이다 StringBuffer StringBuilder와 기능은 같으나, 동기화를 보장한다 속도는 느리지만 동기화가 보장되어 멀티쓰레드 환경에서 사용된다 StringBuilder 코드 구현 class StringBuilder { private char[] value; //문자열 저장 private int size; //배열방 크기 저장 private int index; //새로 추가될 문자의 방 번호를 기억하는 함수 StringBuilder() { size = 1; value = new char[s..

TIL 정리_48(Hash Table, ArrayList)

https://www.youtube.com/channel/UCWMAh9cSkEn8v42YRO90BHA 유튜브 - 엔지니어 대한민국의 자료구조 강의를 듣고 정리한 내용입니다 해시테이블(hash table) 검색하고자하는 key값을 입력받아 해시 함수로 반환받은 해시 코드를 배열의 인덱스로 환산하여 데이터에 접근하는 방식의 자료구조이다 key -> HashCode -> Index -> Value 해시함수 : 특정한 규칙을 읽어 입력받은 key값을 값에 관계없이 동일한 코드를 반환한다 Hash Table 검색속도가 매우 빠르다 -> 배열 공간을 고정된 크기만큼 마련해놓고 해시코드를 배열의 index로 사용하기 때문이다 배열의 방을 나눌 때 규칙을 잘 만드는게 중요하다 -> Hash Algorithm을 의미 c..