본문 바로가기

분류 전체보기

(89)
[Gradle] 옵션 : buildscript, repository 그리고 dependencies 1. buildscript 그래들(Gradle)에서 buildscript는 보통 별도의 외부 라이브러리를 가져와야 할 때 사용합니다. 즉, 심플한(외부 라이브러리가 필요 없는) 라이브 사용 시에는 별도로 작성할 필요가 없습니다. buildscript는 repository와 dependencies로 구성됩니다. 2. repository 그래들(Gradle)에서 repository란 build.gradle이 들어있는 프로젝트에서 사용하는 라이브러리의 위치를 지정합니다. 가장 흔하게 사용하는 것은 jcenter(), mavenCentral(), google() 등이 있습니다. 모두 인터넷에 있는 공개용 라이브러리 저장소입니다. 3. dependencies repository에서 jcenter, mavenCen..
[Network] HTTP/2 란? HTTP/2 HTTP 2.0이라고도 불리는 HTTP/2는 Hypertext Transfer Protocol Version 2의 약자로서, 2015년 IETF에 의해 공식적으로 발표된 HTTP/1.1(기존 표준)의 차기 버전이다. IETF: Internet Engineering Task Force, 국제 인터넷 표준화 기구를 의미하며, 인터넷의 운영, 관리, 개발에 대해 협의하고 프로토콜과 구조적인 사안들을 분석하는 인터넷 표준화 작업기구 기반 SPDY(스피디/speedy로 발음)라는 구글의 비표준 개방형 네트워크 프로토콜에 기반한다. 기존의 HTTP methods, status codes, semantics 개념들이 동일하게 호환된다. Frame & Stream & Messages 기존에 Plain Te..
[Linux] NFS(Network File System)이란? NFS(Network File System)이란? 공유된 원격 호스트의 파일을 로컬에서 사용할 수 있도록 개발된 파일 시스템을 네트워크 파일 시스템(NFS)이라고 합니다. 전통적인 유닉스 환경에서는 오랫동안 네트워크에서 자료를 공유하는 방법으로 NFS를 사용했습니다. NFS 서버가 파일을 공유하면 NFS 클라이언트가 공유한 디렉터리를 마운트해서 원격 호스트(NFS 서버)의 파일을 사용합니다. NFS는 손쉽게 파일을 공유할 수 있다는 장점이 있지만 보안에 취약하다는 단점이 있습니다. NFS로 공유한 파일에는 일반적인 소유권과 접근 권한이 그대로 적용됩니다. 원격 시스템에서 어떤 사용자가 파일 소유자와 같은 UID로 공유 디렉터리에 접근해서 파일을 마음대로 사용할 수 있습니다. 루트 권한이 부여된 사용자가 ..
[Linux] Graceful Shutdown이란 무엇인가?(SIGINT, SIGTERM, SIGKILL) 1. Graceful Shutdown이란 무엇인가? 우아한 종료라고 직역하면 뭔가 어색하지만, 그 역의 경우를 생각해보면 제법 어울리는 표현이라는 생각이 든다. 우아한 종료는 프로그램이 종료될 때 최대한 side effect가 없도록 로직들을 잘 처리하고 종료하는 것을 말한다. Gracueful Shutdown Hard Shutdown 우아한 종료의 대척점에는 Hard Shutdown이 있다. 예를 들면 이런 것이다. 회사에서 코드를 한창 짜고 있는데, 팀장님이 "땡땡씨 퇴근하세요."라고 했을 때 - 코드를 커밋하고 푸시한 뒤 컴퓨터를 끄고 퇴근하는 것: graceful shutdown - 그대로 컴퓨터를 바로 끄고 퇴근하는 것: hard shutdown 하고있던 작업을 적절히 마무리한 뒤 종료되는 것이..
[Java] ConnectionTimeout과 ReadTimeout의 차이 @ 설명 ConnectionTimeout : 접속되기 전까지의 기다리는 시간 ReadTimeout : 접속되고 응답을 받기까지 기다리는 시간 참고사이트 inyl.github.io/programming/2017/12/02/timeout.html HttpURLConnectiondocs.oracle.com/javase/7/docs/api/java/net/URLConnection.html#setReadTimeout(int) docs.oracle.com/javase/7/docs/api/java/net/URLConnection.html#setConnectTimeout(int)
[IPC] GRPC에 대한 기본 개념과 이해 GRPC는 Groole Remote Procedure Call의 약자로 기존의 Client-Server의 HTTP 호출방식의 대안으로 떠오르는 IPC 기법입니다. 현대 시스템의 구조상 거대하고 복잡한 분산 환경 또는 MSA 환경이 주를 이루는데, 다양한 언어로 개발된 수많은 프로세스가 유기적으로 통신하면서 서비스를 제공합니다. 이런 복잡한 시스템 환경에서 일반적인 HTTP 통신보다 GRPC가 주는 이점이 많기 때문에 요즘 각광받고 있습니다. RPC 우선 RPC에 대해 간단히 확인하고 본론으로 넘어가도록 하겠습니다. RPC는 Remote Procedure Call 의 약자로 분산 네트워크 환경에서 조금 더 편하게 프로그래밍 하기 위한 등장하였습니다. 클라이언트 - 서버 간의 커뮤니케이션에 필요한 상세한 정..
[Java] 추상클래스 vs 인터페이스 추상클래스와 인터페이스의 공통점과 차이점 공통점 추상클래스와 인터페이스는 선언만 있고 구현내용은 없는 클래스입니다. 추상클래스와 인터페이스로는 객체를 생성할 수 없습니다. 추상클래스를 상속받은 클래스와 인터페이스를 implements하고 구현한 클래스들만 객체 생성이 가능합니다. 차이점 추상클래스는 단일상속만되고 인터페이스는 다중구현이 가능합니다. 추상클래스는 상속을 강제해서 기능을 확장시키는 것을 목적으로 하고 인터페이스는 구현하는 모든 클래스에 대해 특정 메소드가 반드시 존재하도록 강제하는 것을 목적으로 합니다. 참고사이트 https://velog.io/@seungjoo/JAVAAbstract
[Java] HashMap 값으로 정렬하는 방법 소스코드 간단하게 바로 사용하는 방법 import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Iterator; public class ArraySort { public static void main(String[] args) { Map hashMap = new HashMap(); hashMap.put("A", 5); hashMap.put("B", 1); hashMap.put("C", 2); hashMap.put("D", 4); hashMap.put("E", 3); List listKeySet = new..