모든 글 보기

    IP 주소와 NAT

    IP (Internet Protocol) 인터넷 상에서 서로 다른 기기들이 데이터를 주고받을 때 사용하는 프로토콜이다. 기기들이 서로 데이터를 주고 받기 위해서는 사람 이름처럼 각 기기를 구분할 수 있는 무언가가 필요하다. 인터넷에서 각 기기를 유일무이하게 구분하기 위해서 IP주소를 사용한다. IP 주소 IP 주소는 [공인 IP ↔ 사설 IP]로 나누거나 [유동 IP ↔ 고정 IP]로 나눌 수 있다 공인 IP는 외부에 공개되어 인터넷을 통해 다른 컴퓨터들이 접근 가능한 주소로 전 세계에서 유일한 주소이다. 사설 IP는 외부에서 접근할 수 없는 주소로 가정, 학교, 회사 등 LAN 내부에서만 사용되며 통용된다. EX) 공유기가 있고 공유기에 핸드폰, 컴퓨터, 노트북 등 여러기기가 연결되어 있다고 하자 공유..

    [구현] 프로그래머스 2020 KAKAO : 문자열 압축

    코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 🙈문제가 뭐야 문자열에서 반복되는 문자열을 숫자로 표현해 압축하고자 한다 (ababab = 3ab) 이때 반복되는 문자열의 길이를 얼마로 해야 문자열을 가장 짧게 압축할 수 있는지 구한다 가장 짧게 압축한 문자열의 길이를 구한다 ex) ababcdcdababcdcd는 반복되는 문자열 길이를 8로 설정해야 제일 짧게 압축된다 (정답 = 9) 길이2 → 2ab2cd2ab2cd 길이8 → 2ababcdcd 🙈어떻게 푸냐 일단 2중첩 반복문이라 생각할 수 있다 ..

    [구현] 프로그래머스 2017 팁스다운 : 짝지어 없애기

    코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 🙈문제가 뭐야! 문자열이 주어지면 2개씩 짝을 지어 없앤다(baabaa → bbaa → aa → ) 문자열 전체를 없앨 수 있으면 1을 반환하고 전체를 없앨 수 없으면 0을 반환한다 🙈어떻게 풀어! (1) 일단 입력받은 문자열을 Stack에 차례대로 넣는다고 생각한다 (2) 넣을 때 Stack의 맨 위에 있는 값과 넣을려는 값이 같은지 확인한다 (3) 같으면 Stack 맨 위 값을 Stack에서 빼고 ↔ 다르면 넣을려는 값을 Stack에 넣는다 (4..

    내가 만든 프로그램은 어떻게 작동하는 걸까?

    프로그램은 명령어의 집합이고, 어떻게 프로그램 개발하냐? (1) 프로그램을 개발 하기 위해 고급 언어(C, C++)로 명령어를 한줄한줄 작성한다 (컴파일 하기 직전에 전처리기가 #include #define 같은 코드를 사전처리 한다) (2) 고급언어로 작성된 소스코드(.cpp)는 컴파일러에 의해 저급언어(기계어, 어셈블리어)인 목적코드(.o .obj)로 번역된다 (만약 최종 결과물 프로그램이 하나의 소스코드로 이루어진 것이 아니고 여러 개의 소스코드로 이루어져 있고 다른 라이브러리도 필요하다고 하자) (3) 컴파일 된 여러 개 소스코드(.o .obj)들과 필요한 라이브러리들을 링커가 연결시켜 최종 실행 가능한 프로그램(.exe)을 만든다 (4) 소스코드를 빌드(컴파일, 링킹 등의 과정)해서 나온 최종 ..

    Spring 공부하기(4) : 스프링한테 객체 관리 시키기

    보통 우리는 컨트롤러에서 객체를 사용하고 싶을 때 new() 연산자로 객체를 생성해서 사용한다 @Controller public class MemberController { private final MemberService memberService = new MemberService(); 스프링은 스프링 컨테이너에서 자동으로 객체를 관리 가능하다. 객체를 스프링 컨테이너가 관리하기 위해서는 객체를 컨테이너에 등록해야 하고 컨테이너에 등록된 객체를 Spring Bean이라 한다. 스프링 컨테이너에 객체를 등록할 때 싱글톤 패턴을 따르기 때문에 같은 객체면 같은 인스턴스다. 객체를 스프링 컨테이너가 관리하면 여러 다른 클래스에서 어떤 동일한 객체를 쓰고 싶을 때, 각각에서 객체를 생성할 필요 없이 스프링 컨..

    Optional 클래스

    Optional은 null이 올 수 있는 값을 감싸는 Wrapper 클래스로 Null Pointer Exception을 방지하도록 도와준다 🍰 Optional Object 생성 (1) empty() 함수로 빈 Optional 객체를 생성한다. Optional valOpt = Optional.empty(); (2) of() 함수는 null이 아닌 반드시 값이 있는 Optional 객체를 생성한다. null이면 NPE를 발생시킨다 Optional valOpt = Optional.of(value); (3) ofNullable() 함수는 null이 될 가능성이 있는 Optional 객체를 생성한다. value가 null이 아니면 value를 가지는 Optional 객체를 반환하고, null이면 Optional...

    Collection (+ Wrapper 클래스)

    Conllection? Java에서 Collection은 데이터의 집합, 모음을 의미하고 Collection Framework는 표준화된 방법으로 데이터를 처리할 수 있도록 자료구조, 알고리즘 등을 구조화해서 클래스로 표현해놓은 것이다. Collection Framework의 주요 인터페이스에는 List, Map, Set 인터페이스가 있다. List, Set 인터페이스는 상위 Collection 인터페이스를 상속받고, Map은 Map인터페이스가 별도로 정의된다. Collection Framework의 인터페이스를 구현한 클래스를 Collection 클래스라고 부르고, 모든 Collection 클래스는 반드시 List, Set, Map 인터페이스 중 하나를 구현하고 있다. Collection 인터페이스의 ..

    React의 생명주기

    ⚡Life Cycle React Component는 라이프 사이클이 존재한다(클래스 컴포넌트에서만 사용 가능) React Component의 수명은 "페이지에 렌더링되기 전 준비 과정부터 ~ 페이지에서 사라질 때까지" 을 의미한다 라이프 사이클은 크게 Mount, Update, UnMount 3가지로 구분되며 라이프 사이클 관련 함수는 9개로 will은 어떤 작업을 처리하기 직전에 호출되는 함수, did는 어떤 작업을 처리한 후에 호출되는 함수이다. Mount 컴포넌트 인스턴스가 생성되고 실제 DOM에 반영되어 사용자 화면에 내용이 나오는 것이다 Update Props가 바뀔 때, State가 바뀔 때, 부모 컴포넌트가 리렌더링 될 때, forceUpdate 함수를 사용할 때 해당 컴포넌트는 Update..