일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- heapq
- terraform main commands
- terraform 기본개념
- Jenkins
- algorithm
- Docker
- JWT
- linuxr계정설정
- Process monitoring
- terraform variable
- ec2
- endpoint
- terraform backend
- s3
- Timezon설정
- Python
- SELinux비활성화
- session manager
- java
- 인텔리제이
- Jenkinspipeline
- binarysearch
- terraform 설치
- 프로그래머스
- haproxy
- lsof
- PrivateSubnet
- Mac
- 이진탐색
- terraform
- Today
- Total
목록Programming (10)
MONG 기술블로그
함수형 프로그래밍 함수형 프로그래밍이란 함수를 정의하고 이 함수를 데이터 처리부로 전달하여 데이터를 처리하는 기법을 말한다. 즉 데이터 처리부는 데이터만 가지고 있고, 처리 방법에 대한 인터페이스만 존재하기에 외부에서 제공된 함수에 의존하여 데이터를 처리한다. 자바는 함수형 프로그래밍을 위해 Java8부터 람다식(Lambda Function)을 지원한다. 람다식은 함수형 프로그래밍에서 데이터 처리부에 외부에서 제공되는 함수의 역할을 하며, 자바는 람다식을 익명 구현 객체로 변환하여 처리한다. 람다식을 코드 예시를 통해 알아보자 // @FunctionalInterface를 사용하여 람다식으로 사용될 binaryOperator 함수를 정의한다. @FunctionalInterface interface Calc..

일반적으로 컬렉션 및 배열에 저장된 요소를 반복 처리하기 위해서는 for / while문을 사용해야했다. Java 8 부터는 컬렉션 및 배열 요소에 대해 반복 처리하기위해 스트림(Stream)을 통해 접근 할 수 있다. List list = {1,2,3,4,5}; // for문 for(String str : list){...} // stream Stream stream = list.stream(); stream.forEach(item -> ... ); Stream은 기존에 사용하던 Iterator와 비교하여 다음과같은 차이점을 가지고 있다. 1. 내부 반복자이므로 처리속도가 빠르고 병렬 처리에 효율적이다 2. 람다식으로 다양한 요소 처리를 정의할 수 있다. 3. 중간 처리와 최종 처리를 수행하도록 파이프..

JWT ( Json Web Token ) 이란 ? JWT는 Json Web Token의 약자로, 웹 애플리케이션에서 사용자 인증을 관리하기 위한 토큰 기반의 인증 방식 중 하나이다. JWT는 .(dot)을 구분자로 세 부분으로 이루어져있는데, 이중 첫번째인 헤더는(Header) JWT가 어떤 암호화 알고리즘을 사용하는지 나타낸다. 두번째로 페이로드(Payload)는 JWT에 담길 정보를 포함하며, 마지막으로 서명(Signature)는 토큰의 무결성을 보장하기 위한 서명이다. JWT 방식은 세션 기반 인증 방식과 달리 서버에서 클라이언트에 발급된 토큰을 기반으로 인증 정보를 관리하기에 세션 기반 인증 관리에 비해 서버의 부하를 줄일 수 있다. 다음은 Header / Payload / Signature 로 ..

의존성 주입 ( DI / Dependency Injection ) DI ( Dependency Injection ) 란 스프링의 핵심 기능으로써 객체를 직접 생성하지 않고, 외부에서 생성한 객체를 주입해주는 방식이다. IoC ( Inversion Of Control ) 이란 직역하면 "제어의 역전" 이라는 의미로, 스프링에서는 객체를 개발자가 아닌 스프링 컨테이너를 통해 관리한다. DI / IoC 를 통해 객체 간 결합도를 낮추고 유연성을 높힐 수 있다. 바로 예제로 알아보자. 위와 같은 구조에서 아래 테스트 코드를 기반으로 DI /IoC 의 유연성을 느껴보자 아래 코드에서 사용하는 showDbmsName() 메서드는 각 DbmsService의 name을 출력하는 메소드이다. package springb..

https://start.spring.io/ 로 접속하면 위와 같은 화면을 볼 수 있다. 여기에서 다음과 같이 선택하자. Project : Gradle Spring Boot : 3.0.2 Packaging : Jar Java : 8 ( PC에 설정된 Java 버전을 선택 ) Dependencies 의 ADD DEPENDENCIES... 를 선택하여 위 화면과 같이 Spring WEB을 선택한 뒤에 GENERATE를 선택하자. 최종적으로 GENERATE 선택으로인해 다운로드된 디렉토리를 IntelliJ 의 Open Project를 통해 열면 세팅이 완료된다. DemoApplication.java 를 실행하면 내장된 Tomcat 서버가 8080 포트 작동하는 모습을 볼 수 있다.
SpringBoot를 이용하면 어노테이션 기반으로 HTTP Method API를 구현할 수 있다. 어노테이션을 이용하여 간단하게 API 서버를 설계하며 사용법에 대해 간단히 알아보자. 개발환경에 대한 설정은 https://uosjihwan.tistory.com/93 를 참고하자. 우선 API를 구현하기 전에 @ResponseBody / @RestController 어노테이션에 대해 알아보자. @ResponseBody 자바 객체를 HTTP Response의 Body부분에 매핑할 때 사용한다. 주로 자바의 객체를 HTTP Response의 Body 부분에 Json 형태로 매핑하여 전달할 때 사용한다. @RestController 클래스에 @RestController를 선언하면 해당 클래스의 HTTP 요청 관..

IDE를 능숙하게 사용하는건 개발의 생산성을 향상할 수 있는 중요한 방법 중에 하나이다. Java프로그래밍 시 사용하는 IDE인 인텔리제이의 중요한 단축키에 대해 정리하고 익숙해질 수 있도록 노력하자. 정리에 사용되는 단축키 기호는 다음과 같다. 이미지 설명 ⇧ Shift ⌃ Control ⌥ Option ( Alt ) ⌘ Command ↩ Return ( Enter ) ↑ Up ↓ Down ⌫ Delete 용도 단축키 프로젝트 창 포커스 ⌥ + 1 미리보기 space 에디터 창 포커스 ⇧ + ⌘ + F12 새 파일 생성 ⌘ + N , ⌃ + ⌥ + N 라인 시작 / 끝 , 페이지 위 / 아래 Fn + 방향키 블록 주석 ⌥ + ⌘ + / 사용처 찾기 ⌥ + F7 빠른 찾기 ⌘ + B 경로 내 검색 ⌘ +..

이진 탐색 ( Binary Search )이란 정렬된 배열에서 타겟을 빠르게 찾는 검색 알고리즘이다. 제약 조건 : 정렬된 상태의 배열에서 사용가능 장점 : 시간복잡도가 O(logN) 으로 매우 빠른 성능 보유 시간복잡도를 수치로 변경하여 설명해보면 다음과 같다. 크기 1억개인 배열에서 특정 값을 찾는 경우. ( 정렬된 경우 ) 순차 탐색 : 최악의 경우 1억번 탐색 필요 이진 탐색 : log100000000 번 탐색 필요. 대략 26번만의 탐색으로 특정 값을 찾을 수 있음 이를 Python 코드로 직접 구현하여 탐색 횟수를 비교해보자. import random # 1 - 천만 nums = [i for i in range(1, 10000001)] # 유니크한 백만개의 수를 1-천만 범위에서 리스트로 추출..