공부하면서 얻은 지식들

공부하면서 얻은 지식들

정적 바인딩 vs 동적 바인딩

정적 바인딩 (Static Binding) 컴파일 시점에 메소드 호출이 결정된다. 메소드 오버로딩에서 주로 사용 메소드 호출이 컴파일 시점에 결정되기 때문에 실행 속도가 빠르고, 어떤 메소드가 호출될지 예측할 수 있다.하지만 다형성은 적절히 구현하지 못한다. 동적 바인딩 (Dynamic Binding) 런타임 시점에 메소드 호출이 결정된다. 메소드 오버라이딩에서 주로 사용 메소드 호출이 런타임 시점에 결정되기 때문에 오버헤드가 발생할 수 있지만, 다형성을 적절히 구현할 수 있다.

공부하면서 얻은 지식들

Docker 도커

도커 컨테이너를 사용하여 응용프로그램을 더 쉽게 만들고, 배포하고 실행할 수 있도록 설계된 도구이며 컨테이너 기반의 오픈소스 가상화 플랫폼 어플리케이션 환경에 구애받지 않고 손쉽게 배포 관리가 가능하다. 컨테이너 기반 배포 방식은 구글을 비롯해 대부분 서비스 회사가 컨테이너로 서비스 운영 중 컨테이너는 도커 이미지를 독립적인 공간에서 실행할 수 있게 해주는 기술이다. 도커는 왜 사용할까? 똑같은 일을 하는 서버가 2대가 있다고 하자. A서버는 1년 전에 구성했고 B서버는 방금 구성했다. 그럼 운영체제, 컴파일러 등의 조건이 같지가 않을 가능성이 높다. 도커는 서버마다 동일한 환경을 구성해주기 때문에 이러한 문제를 해결할 수 있다. 또, auto scaling에 유리하다. auto scaling ? 서버 ..

공부하면서 얻은 지식들

개발자 소통 언어

다양한 사람들과 이야기하면 종종 줄임말을 들을 수 있다. 이처럼, 개발자끼리 소통을 할 때 사용하는 약어들이 있다. AFAIK [ as far as I know ] : 내가 기억하는 한, 내가 알기로는 ASAP [ as soon as possible ] : 가능한 빨리 FYI [For your information ] : 참고로 IMO [ In my opinion ] : 제 생각은 IOW [ In other words ] : 다시 말하면, 바꾸어 말하면 LGTM [ look good to me ] : 괜찮아, 좋아 SGTM [ sounds good to me ] : 괜찮아, 좋아 PR을 날리고 상대방이 PR에 대한 다른 의견이 없으면, LGTM과 SGTM을 응답으로 자주 받을 수 있다. TL;DR [ t..

공부하면서 얻은 지식들

정규표현식

import re result = re.findall(regex, search_target) \d : 숫자를 대표하는 정규표현식, 한 글자만 찾는다. [ \d+ : 하나 혹은 그 이상의 연속된 숫자] [ \d* : 0개 이상의 숫자] \w : 글자를 대표하는 정규표현식 ? : 있거나 없거나 [-? : '-'가 있거나 없거나] [- ]? : '-' 혹은 공백이 있거나 없거나 {숫자} : 해당 숫자만큼 반복한다. {숫자1, 숫자2} : 숫자1부터 숫자2까지 반복한다. [a-z] : 알파벳 a부터 z까지 선택한다. [a-z]+ : 연속된 알파벳 소문자 [가-힣]+ : 연속된 한글 문자 \s : 공백 문자(스페이스, 탭, 뉴라인) \S : 공백 문자를 제외한 문자 \D : 숫자를 제외한 문자 \W : 글자 대표..

공부하면서 얻은 지식들

CUDA

Computed Unified Device Architecture CUDA : 그래픽 처리 장치에서 수행하는 알고리즘을 C언어와 같은 언어를 사용하여 작성할 수 있도록 하는 GPGPU 기술이다. CUDA는 엔비디아가 개발하였다. 더 자세한 서술 이전에 CPU와 GPU에 대해 간략히 알아보자. CPU는 다양한 시스템 자원을 제어해야 하고 복잡한 명령들을 처리해야하기 때문에 연산을 위한 장치 이외에도 다른 구성요소들이 존재한다. GPU는 복잡한 구조를 버리고 연산에 특화된 장치로서 그래픽처리를 위해 고안되었으며 단순한 연산들을 병렬로 고속처리를 할 수 있도록 한다. GPGPU : 그래픽처리만 하는 GPU와 달리 병렬로 연산기능까지 수행하게 해주는 GPU 위와 같은 개념이 나오면서 C언어 또는 C++언어로 병..

공부하면서 얻은 지식들

로깅(Logging)

로그(Log)란 프로그램 개발이나 운영 시 발생하는 문제점을 추적하거나 운영 상태를 모니터링하기 위한 텍스트이다. System.out.println(); 를 사용하여 로그를 확인할 수 있지만 일반적으로, 실무에서는 로그를 기록하는 클래스를 만들어 사용한다. /* getClass()메서드를 통해 사용되는 클래스 타입 반환하여 삽입 */ private Logger log = LoggerFactory.getLogger(getClass()); 로그(Log)는 다음과 같은 레벨을 가진다. 낮은 순서대로 나열하겠다. TRACE : 디버그 레벨이 너무 광범위한 것을 해결하기 위해서 좀 더 상세한 이벤트를 나타낸다. DEBUG : 디버그 용도로 사용하는 메시지를 나타낸다. INFO : 어떠한 상태 변경과 같은 정보성 ..

공부하면서 얻은 지식들

어댑터 패턴(Adapter Pattern)

해외 여행 갔을 때, 전원 어댑터 규격이 맞지 않았던 경우 있으신가요? 코드를 작성할 때도 마찬가지인 경우가 생길 수 있습니다. 그래서 어댑터 패턴이라는 것이 등장하였습니다. 이는 클라이언트의 요구 타입과 반환 타입이 다를지라도 중간에 어댑터를 둠으로써 둘을 연결해주는 것입니다. public class Math { public static double twoTime(double num) { return num * 2; } public static double half(double num) { return num / 2; } } 기존에 double 타입의 값을 받아 두 배를 반환하는 twoTime 메서드와 절반을 반환하는 half 메서드가 있습니다. 그런데 요구사항이 있습니다. 1. Float 매개변수를 ..

공부하면서 얻은 지식들

import os [파이썬 자동화]

import os 를 통해 내 컴퓨터 안의 있는 파일들을 다룰 수 있다. os.listdir(경로) : 폴더 안의 내용을 문자열로 된 리스트로 출력한다. os.path.abspath() : 해당 파일 혹은 폴더에 대한 절대 경로를 출력한다. os.path.exists() : 해당 경로가 실제로 존재하는 경로인지 True or False로 출력한다. os.path.join() : 여러 경로를 합쳐준다. os.walk() : 파라미터의 경로 아래에 있는 모든 폴더, 파일들을 출력한다. for문과 같이 사용한다. 예시 ) for path, directory, files in os.walk("/"); os.rename(파일의 원래경로, 이동할 경로) : 파일의 이름을 변경해준다. 혹은 파일을 이동시킨다.

화서동 병아리
'공부하면서 얻은 지식들' 카테고리의 글 목록