TIL 27

[TIL] HTTP: Hypertext Transfer Protocol

HTTP 란?HTTP(Hypertext Transfer Protocol)은 여러가지 정보 취득이나 발신에 사용하는 인터넷의 핵심 프로토콜이다.HTTP의 메세지는 사람이 읽을 목적으로 전달되는 것이 아닌, HTTP 서버와 HTTP 클라이언트(브라우저)가 읽고 해석할 목적으로 전단된다.즉, HTTP는 조회형 프로토콜로서 서버의 80번 포트에 설정된 소켓에서 HTTP 요청과 응답을 교환함으로써 통신을 수행한다. 이때 HTTP는 TCP 서비스를 이용한다.HTTP 트랜잭션HTTP에서 클라이언트와 서버 간의 요청과 응답과정을 알아보자.HTTP에서 클라이언트에서 서버로 보내는 명령은 요청(request) 메세지에 들어있고, 요청에 대한 파일 내용, 그 외의 정보는 응답(response) 메세지에 들어있다.HTTP는 ..

TIL/네트워크 2024.12.03

[TIL] DI(의존성 주입)와 IoC(제어의 역전)

'의존성 주입' 이란? - (DI: Dependency Injection) 의존성 주입(DI)이란 어떤 한 객체가 의존 관계인 다른 객체를 외부로부터 주입받는 것이다. 즉, 객체가 자신이 의존하고 있는 객체를 직접 생성하지 않고, 외부로부터 주입 받음으로써 객체간의 결합도를 낮추고 유연성을 높이는 방법이다. 아래 예시를 보며 좀 더 정리해보자. 여기 Car라는 객체가 있다. Car의 생성자를 보면 Engine이라는 객체를 필요로하고 있다. 따라서 현재 Car와 Engine은 의존 관계이다.(여기서 Engine은 인터페이스다)public class Car { ... public Car(Engine engine) { this.engine = engine; } ...} 하지만 C..

TIL/JAVA 2024.11.29

[TIL] Stream을 사용하는 이유, 특징

Stream을 왜 사용할까? Stream은 다양한 데이터 소스를 표준화된 방법으로 다루기 위해 사용한다. '표준화' 라고 하면 '컬렉션 프레임워크'가 떠오를 수 있다.컬렉션 프레임워크란 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스 집합이다.컬렉션 프레임워크에는 List, Set, Map 인터페이스가 존재하는데 List와 Set은 Collection 인터페이스를 상속받지만, Map 인터페이스는 별도로 정의된다. List, Set과 Map의 인터페이스가 다르니 사용방법도 다르다. 결국 컬렉션 프레임워크의 표준화는 다소 아쉬운점이 있다.이때 등장한 것이 바로 Stream이다. (JDK 1.8에 등장) 덕분에 우리는 다양한 데이터 소스(컬렉션, 배열)를 Stream 형태로 만..

TIL/JAVA 2024.11.28

[TIL] 람다식 (with. 익명 클래스, 익명 함수)

'람다식' 이란? (feat. 익명함수) 자바 8에서 도입된 기능으로 간결하게 익명 함수를 표현할 수 있는 방법.익명함수는 이름이 없는 함수이다. 주로 일회성으로 사용된다. 람다식은 익명 함수의 한 형태로 볼 수 있다. 람다식은 함수형 인터페이스의 경우에만 사용이 가능하다.따라서 추상 메서드가 두 개 이상인 추상 클래스의 경우 람다식을 사용할 수 없고, 이때는 익명 클래스를 사용해야한다.  람다식 문법 [기본 형식]/*기본 형식 1*/(parameters) -> expression/*기본 형식 2*/(parameters) -> { statements; }expression, statements가 뭐지? 🤔[expression]• 숫자, 문자열, 변수, 연산자를 이용해 값을 생성하는 코드조각 (= 식)i..

TIL/JAVA 2024.11.27

[TIL] Comparator와 Comparable

1. Comparable• 기본 정렬 순서를 정의할 때 사용• package: java.lang• Comparable 인터페이스 내부에 int compareTo() 메서드가 정의되어있음• 클래스에 implements 해서 구현, 객체의 기본 정렬 방법을 정의 • 여러 가지 정렬 기준을 정하기는 어려움import java.util.*;class Student implements Comparable { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } @Override public int compare..

TIL/JAVA 2024.11.25

[TIL] 생긴게 똑같으면 같은거 아닌가요?🤔 (동일성 vs 동등성)

코딩을 하다보면 무언가 서로 비교할 일이 많다. '문자열은 .equals()로 비교하세요.'라고 들어와서 지금까지 문자열을 그렇게 비교해왔는데,정작 '왜 ==은 쓰지 않는 것인지', '==과 .equals()의 차이는 무엇인지' 깊이 있게 공부하지는 못한 것 같다. 예전에 ==과 .equals() 에대해 노션에 정리한적이 있는데, 동등성과 동일성에 대해 알게된 지금 다시보니 너무 간략하게 정리한 느낌..! (나 좀 성장 했나..?🥹) 지금부터 동등성과 동일성에 대해 정리하면서 ==과 .equals()의 차이에 대해 더 심도있게 알아보자! ✨[ 동일성 VS 동등성 ]동일성(Identity): 물리적으로 같은 것.                             물리적으로 같은 메모리에 있는 객체 인스턴..

TIL/JAVA 2024.11.21

[TIL] Getter와 Setter를 사용하는 이유를 항상 고민하자

오늘은 계산기 만들기 과제 Lv2를 구현했다.과제 안에 Getter, Setter를 활용할 것을 요구하는 내용이 있었다.  Getter와 Setter를 만드는 법은 아니까 배운대로 척척 만들었는데, 완성 된 코드를 보는 순간 '내가 만든 Getter, Setter가 무슨 의미가 있는거지?...'라는 의문이 들었다. 아래는 내가 초기에 만든 Getter, Setter다.private Deque ansList=new LinkedList();public Deque getAnsList(){ return ansList;}public void setAnsList(Deque ansList){ this.ansList=ansList;}코드를 보면 알겠지만, '안에 있는 내용 어차피 다 보여주고, 다 바꿀 수 ..

TIL/JAVA 2024.11.14

[TIL] 캡슐화와 Getter, Setter(JAVA)

오늘은 JAVA 강의를 들으면서 이전에 배운 내용들을 복습해보는 시간을 가졌다.자잘하게 새로 알게 된 내용이 많았는데, 그중 '캡슐화'와 'Getter', 'Setter'에 대한 내용이 인상 깊어서 간단하게 정리해보려한다.🟡 캡슐화가 뭘까?'캡슐화'란 클래스 내부에 선언된 데이터를 접근제어자를 통해 접근을 제한함으로서 함부로 변경할 수 없도록  보호하는 것이다.'객체의 무결성'을 유지하기 위해서, 우리는 필드에 private, default 등의 접근제어자를 사용해 외부의 접근을 막는다.* '객체의 무결성'이란 객체가 변하지 않고 일관된 상태를 유지하고, 또 외부로부터 보호되고 신뢰할 수 있음을 의미한다. 캡슐화에 대해 배우면 이런 의문이 들 수 있다."데이터를 외부로부터 보호하는건 좋은데, 만든 사람..

TIL/JAVA 2024.11.13

[TIL] JAVA에서 0.1을 100번 더하면 왜 10이 아닐까? (JAVA)

오늘 프로그래밍 1주차 강의를 듣는데 강사님께서 이런 질문을 던지셨다." float는 4byte만 쓰는데 어떻게 long 보다 더 넓은 범위를 표현 가능한가요? " 해답은 간단하다 정수와는 다르게 실수는 '부동소수점'을 사용하기 때문이다. 🟡 부동소수점이란? - IEEE 754 표준 기반부동소수점은 2진수를 사용해 소수를 표현한다.그중  IEEE 754 표준을 따르는 단정도 부동 소수점은 32bit로 구성되며, 구조는 아래와 같다.부호비트: 1bit지수: 8bit (바이어스 127를 사용. 지수+127해서 2진수로 변환해야함)가수(유효 숫자): 23bit  🟡 2진수로 표현할 수 없는 소수계산 방법은 따로 검색해보면 나오기도 하고, 여기서는 계산방법이 중요한게 아니기 때문에 생략하겠다.여튼 여기에서의..

TIL/JAVA 2024.11.11

[TIL] 새로운 branch 생성 부터 main branch에 merge까지 (git & gitHub)

git, gitHub.. 분명 너무나도 좋은 버전관리 및 협업 도구지만 처음 접하는 입장에서는 솔직히 너무 어려웠다🫠기능을 이해하는건 쉬워도 협업에 적용하는건 쉽지 않았다.튜터님 강의를 듣고 다 이해했다며 자신만만했던 나 반성해...(말하는 감자🥔) "main branch 말고 다른 branch를 생성해서 거기에 저장하고 나중에 main branch에 병합하세요" 예?..새로운 branch는 또 어케 만드나요... merge는 또 뭐죠...ㅜㅠㅜ 팀원들의 설명을 3~4번은 듣고 나서야 겨우 큰 틀을 잡았다. 완벽하지는 않지만 기록하는 과정에서 정리가 많이 되니 써내려가보겠다.🟡 main branch 생성하기1. Git 저장소 생성 - git init 우선 프로젝트를 저장할 수 있는 저장 공간(Git..

TIL/git & gitHub 2024.11.11