전체 글 37

Stream API(임시저장용)

Stream 이란?람다식이 편리한 방법 정도라고 생각된다면,스트림은 완전히 새로운 패러다임아다.데이터를 파이프라이닝하여 마치 액체가 흐르듯이 요소들을 처리한다.Stream 도입 배경Stream은 Java 언어에 함수형 프로그래밍을 제공하기 위해 도입되었다. 그렇다면 다시함수형 프로그래밍은 무엇인가?위키백과에서는 다음과 같이 정의한다.함수형 프로그래밍(函數型 프로그래밍, functional programming)은 자료 처리를 수학적 함수의 계산으로 취급하고상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나이다. 핵심은 수학적 함수다. (이를 순수 함수라고도 한다.)근데 우리는 이미 (프로그래밍에서의) 함수를 사용하고있지 않나?수학적 함수와 프로그래밍의 함수의 가장 큰 차이는 부수효과(side eff..

Java 2024.08.08

vim 기본 명령어 저장

shortcut 을 통일하자.입력모드i : 커서 앞에 입력 (insert)a : 커서 뒤에 입력 (append)o : 커서 아랫줄 입력이동w : 다음 단어b : 이전 단어ctrl+( : 다음 문단ctrl+) : 이전 문단gg : 문서 맨 위G : 문서 맨 아래0: 문장 맨 앞 (home)^ : 공백 제외한 맨 앞$ : 문장 맨 뒤 (end)편집dd : 한줄 삭제2dd : 2줄 삭제dw : 한 단어 삭제diw : 커서에 해당하는 단어 삭제(i는 in)shift+d : 커서 위치부터 문장 맨끝까지 삭제x : 한 글자 삭제yy : 한줄 복제p : 붙여 넣기+p : 윈도우 붙여넣기u : 취소(언두)ctrl+r : 재실행(리두)비주얼모드복사 붙여넣기할때 사용. 드래그 기능이 있음.hjkl 로 이동 가능.v : 한..

private 2024.08.05

[객체지향설계원칙] DIP

DIPDependency Inversion Principle.의존관계 역전 원칙이다.이름에서 느껴지듯 의존관계가 역전된다는 말이다. A->B 처럼 A가 B를 의존한다고 할때AA와 B 사이에 C를 추가해 A,B 모두 새로운 C에 의존한다는 말이다.A-> C  서적에서는 고수준 모델이 저수준 모델을 의존하는 것이 아닌새로운 인터페이스를 추가해 고수준, 저수준 모두 인터페이스에 의존해야한다. 라고 정의되어 있다. 구체적으로 살펴보자.DIP 적용 전공장 클래스에서 여러 일꾼들을 데리고 일을 한다고 해보자.그러면 공장 클래스는 Boy, Girl, Robot 클래스에 의존하게된다.(의존한다는 말은 공장 클래스를 생성하기 위해서는 Boy, Girl, Robot 클래스들이 필요하다는 말이다.) 일꾼들 클래스들은 열심히..

Java 2024.05.31

[객체지향설계원칙] ISP

ISPInterface Segregation Principle.클라이언트에서 인터페이스를 사용할때해당 클라이언트에서 사용할 메서드만 의존해야한다.즉 인터페이스를 범용으로 만들지 말라는 원칙이다. 넓게 보면 SRP(단일 책임 원칙) 범주에 속한다고도 볼 수 있습니다.ISP 적용 전예를들어 다음과 같이 일꾼이 될수있는 인터페이스가 존재합니다.// Workable 인터페이스: 모든 메서드를 포함public interface Workable { void startWork(); void stopWork(); void focus(); void sleep(); void wakeUp(); void eat(); void drink();} 일꾼으로서 필요한 다양한 메서드가 있죠. 그리..

Java 2024.05.31

[객체지향설계원칙] LSP

LSPLiskov Substitution Principle이전 SRP, OCP 와 달리 이름으로 어떤 의미인지 파악하기가 힘듭니다.하지만 핵심은 간단합니다. 하위 클래스가 상위 클래스를 완벽히 대체해야한다.= 상위 클래스의 명세를 하위 클래스가 정확히 이행해야한다.= 상위 클래스를 하위 클래스로 변경해도 정상 동작해야한다. 즉 클래스를 상속했을때 상위 클래스의 동작을 잘 수행해야한다는 말입니다. List 예제우리는 List를 사용할때 타입은 List로 선언하고구현체는 ArrayList or LinkedList 를 사용합니다. (Vector는 단일스레드 환경에서 잘 사용x) 그래서 다음과 같이 특정 모듈을 만들때List 타입으로 선언하여 사용하면실제로 호출할때 ArrayList 인지 LinkedList인지..

Java 2024.05.29

[객체지향설계원칙] OCP

OCPOpen Closed Principle.(새로운 코드 추가) 열려있고, (기존 코드 변경) 닫혀 있어야한다.즉 기존 코드를 수정하지 않고 새로운 기능을 추가할 수 있어야한다.이는 유지보수성과 확장성을 높이는데 핵심적인 역할을 합니다. OCP를 적용하기 위해선 추상화와 다형성이 필수적입니다.왜냐하면 클래스마다의 의존성은 실제 클래스가 아닌,인터페이스에만 의존을 해야하기 때문입니다. 예를들어 우리가 로그인 기능을 구현하려고합니다.근데 직접 로그인 기능을 구현하는 대신 Oauth를 이용하려고합니다. 근데 각 SNS마다 로그인 과정이 조금씩 차이가 나서 구현하기 까다롭습니다.그렇다면 어떻게 구현해야할까요? 다음과 같은 SNS 들이 있습니다.public enum SNSType { FACEBOOK, ..

Java 2024.05.23

추상클래스, 인터페이스의 문법적,의미적 차이

클래스는 아무것도 붙지않은 일반 클래스abstart 가 붙은 추상 클래스interface 가 붙은 인터페이스로 구분됩니다. (엄격하게 따지면 인터페이스는 클래스가 아닙니다.) 그래서 일반 클래스, 추상 클래스, 인터페이스의 차이점을 명확하게 해야합니다.문법적인 차이 설명일반 클래스홀로 독자적인 객체를 가질 수 있음.자식 클래스는 부모의 메서드 사용가능.부모의 메서드 오버라이드 가능함.(필수x)자식 메서드로 자식 클래스가 만들지 않은 부모 클래스도 사용 가능함.extends 로 상속.추상 클래스추상 메서드가 존재함.일반 메서드도 존재 가능함.홀로 독자적인 객체를 가지지 못함.public, protected, private 변수 가능. (static, final 필수 x)자식 클래스는 부모의 추상 메서드를 ..

Java 2024.05.22

[객체지향설계원칙] SRP

객체지향(OOP)를 잘 설계하기 위해서는 5가지 원칙이 있습니다.원칙은 말 그대로 지켜야하는 기조입니다. 이 원칙들은 코드가 복잡해지고 문제가 생겼을때 빛을 발휘합니다.그냥 무작정 외우는것보단 이해해야 '이걸 이렇게하는게 맞나?' 에 대한 근거가 될것입니다. SRPSingle Responsibility Principle. 단일 책임 원칙입니다.OCP와 더불어 OOP의 기반이 되는 원칙입니다. 클래스는 하나의 책임을 져야한다.= 클래스를 변경하는 이유는 한가지여야한다.되게 모호하고 포괄적인 원칙입니다. 쉽게 생각해서,클래스가 커졌는데 책임을 하나만 지고있나?책임을 분리해서 재설계 해볼수 있지 않을까?에 대한 답변이라고 볼 수 있습니다. 예를들어매번 프로젝트마다 등장하는 유저의 로그인 기능이 있습니다.유저 ..

Java 2024.05.14

[1% 네트워크 원리] 2장 IP와 이더넷, UDP

전체적인 개요어플리케이션에서 요청을 보낼때Socket 라이브러리를 사용하여 요청을 보냅니다.그리고 실제로 송신을 담당하는건 OS 의 프로토콜 스택인데,소켓을 만들고 패킷을 전달하는것까지가 TCP 의 역할이었습니다. 이번에는 패킷에는 '서울시 동대문구 망우로' 같은 구체적인 주소가 적혀있는데이를 네트워크에서는 IP 라고 합니다. 3계층에서는 패킷을 어디로 어떠한 경로로 보낼지를 결정합니다.TCP는 택배의 내용물을 확인하지만 (그래서 오류도 검출합니다.)IP는 단순히 택배를 전달하는것만이 목표입니다. (주소만 맞다면 내용물은 확인하지 않습니다.)ARP는 MAC 주소를 얻는 프로토콜이고, ICMP는 패킷에 오류가 발생 여부를 확인할수 있는 프로토콜입니다. 그러면 패킷이 이제 IP를 활용하여 어떻게 전송되는지를..

Network 2024.05.10

[독서] 환야 1,2

저번에 읽었던 백야행과 제목이 흡사하다.그리고 내용또한 그렇게 느꼈다.등장인물의 성격과 내용 흐름이 매우 유사해 거의 같은 책을 읽는 느낌이었다.내 추측으로는 비슷한 줄거리를 생각해놓고 두가지 방향으로 뻗어나온 스토리가 아닌가 싶다.다만 같은 사람이 쓴 책이지만, 백야행이 섬뜩한 분위기를 좀 더 잘 표현했다. 인물들의 성격이 다소 단편적이다.- 마성의 매력을 가진 여성- 숨은 조력자- 그를 쫒는 열혈 형사 이렇게 셋을 중심으로 스토리가 이어진다. 그런데 마성의 여성은 처음부터 괴물로 나오며 모두를 홀리기만한다.조력자는 계속 수동적으로 행동하다 마지막에 반격하나 싶더니 그마저도 너무 허무하게 끝나버린다.형사는 그냥 이유도 알 수 없이 그냥 사건에 집착한다.그래서 내용 자체를 파악하는데는 쉬웠지만 아쉬움이 ..

독서 2024.04.29