반응형

2021/01 61

[Jenkins] What is Jenkins? CI/CD란?

1). 젠킨스란? 소프트웨어 개발 시 지속적으로 통합 서비스를 제공하는 툴 CI(Continuous Integration) 툴 이라고 표현 쉽게 말해 빌드 자동화 툴이다. 다수의 개발자가 하나의 프로젝트를 만들때 버전 충돌을 방지하기위해 각자 작업한 내용을 공유영역에 있는 저장소에 자주 업로드함으로써 지속적으로 통합을 가능하게 해준다. 젠킨스와 같은 CI툴이 등장하기 전에는 일정시간마다 빌드를 실행하는 방식이 일반적이었다. 특히 개발자들이 당일 작성한 소스들의 커밋이 모드 끝난 심야 시간대에 이러한 빌드가 타이머에 의해 집중적으로 진행되었는데, 이를 nightly-build라 한다. 하지만, 젠킨스는 정기적인 빌드에서 한발 나아가 서브버전, Git 과 같은 버전관리시스템과 연동하여 소스의 커밋을 감지하면..

[Knowledge] MVC , MVP, MVVM 디자인 패턴 개념

궁금했던것들을 좀 찾아보며 견문을 넓혀야겠다라는 생각이 들었다. 기존 SpringFramework로 개발한것만 생각하면 MVC Model2패턴이 다인가 라는 생각에 검색을 해본적도 있었지만 정리는...ㅎ; 오늘 정리를 좀 해봐야겠다. 1). MVC Model2 정의 : Model + View + Controller 세가지를 합친 용어 Model : App에서 사용되는 데이터 + 데이터를 처리하는 로직을 담당 View : Client에 보여지는 UI 담당 Controller : Client의 요청을 받고 반응 처리 담당 동작 : 사용자의 Action들은 Controller로 보내진다. Controller는 사용자의 Action를 확인 => Model을 업데이트 Controller는 Model을 나타내줄 V..

[Java-Algorithm] HackerRank Java - Sherlock and Anagrams 풀이

1). 문제 : www.hackerrank.com/challenges/sherlock-and-anagrams/ Sherlock and Anagrams | HackerRank Find the number of unordered anagramic pairs of substrings of a string. www.hackerrank.com 2). 풀이 : Comparator를 알고있는지 모르는지에 대한 문제였던것 같다. compareTo를 사용했을때 클때, 같을때 작을때 1, 0, -1 을 return하는것만 알고있으면 비교할때 쉬울수있는 문제. import java.util.*; class Player { String name; int score; Player(String name, int score) { ..

[Spring-JSP] 파일업로드 처리 / 파일(단,다중) + 추가정보 @ModelAttribute

파일업로드를 구현할때가 굉장히 많을 것이다. 하지만 여러가지 상황으로 파일하나만 올리는지, 파일과 추가정보를 같이 보내는지, 여러파일을 올리는지에 따라 사용법이 다르기 때문에 정리해 놓으려고 한다. 단일 파일 업로드 다중 파일 업로드 파일업로드 + 추가정보 => @RequestParam => 개별로 (파일&추가정보) 파일업로드 + 추가정보 => @ModelAttribute => 한번에 클래스 매핑 보통 스프링에서 파일업로드를 사용할때 두가지 방식 중 하나를 선택해서 사용한다. Servlet 3.0 Multipart Request 사용 Apache Commons FileUpload API 사용 나는 Commons Fileupload를 사용해서 정리를 해놓을 예정이다. 1). Dependency추가 comm..

[Java] Collection 정리 Set이란 HashSet & TreeSet & LinkedHashSet

Set 정의 : 중복되지 않는 데이터의 집합 => 수학적으로 집합과 동일하다. 특징 : 데이터가 중복되지 않는다. 순서가 보장될수도 있다. Set은 인덱스로 관리하지 않는다고 했다. 그러므로 데이터를 검색하기 위해서는 iterator() 메서드로 반복자를 생성하고 데이터를 가져와야 한다. 시간복잡도를 먼저 알아보자 추가적으로 HashSet이 TreeSet이나 LinkedHashSet보다 성능이 더 빠르고, 메모리를 적게 사용한다. 1). HashSet 정의 : 중복이 안되고 순서가 없는 형태의 Set 특징 : 빠른 접근속도 중복 허용하지 않음 순서 보장하지 않음 => 순차적으로 정렬해준다고 100% 믿으면 안됀다. 예제 : public static void main(String[] args) { Set ..

[Java] Collection 정리 Map이란 HashMap & TreeMap

너무 기본적인 것들에 대해 정리가 되어있지 않아 초심으로 돌아가보려고 한다. 왜 사용하는지 다시한번 머리 속에 담아두자..! Map은 Collection Interface를 상속받고 있지않지만 편의상 Collection으로 분류한다고 한다. Map 정의 : 키(Key) , 값(Value) 을 하나의 쌍으로 묶어서 저장하는 컬렉션 클래스들을 구현하는 데 사용 되는 인터페이스 특징 : 요소의 저장 순서가 별도로 존재하지 않는다. Key : 중복 허용하지 않음 Value : 중복 허용 1). HashMap 특징 : 내부적으로 Entry[] Entry의 배열로 이루어 져있다. 해당 Array에 Index는 내부 해쉬 함수를 통해 계산된다. 내부 Hash값에 따라서 키 순서가 정해지므로 순서의 규칙이 없다. 그래..

[Java] Collection 정리 List란 ArrayList & LinkedList

너무 기본적인 것들에 대해 정리가 되어있지 않아 초심으로 돌아가보려고 한다. 왜 사용하는지 다시한번 머리 속에 담아두자..! 배열 : 연속된 메모리의 집합 1). List 정의 : 데이터를 순차적으로 나열해 놓은 집합체. 장점 : 동적으로 사이즈가 자유롭게 변할 수 있다. 단점 : 배열과 비교했을때 배열 : 직접 엑세스로 (값을 넣거나 가져올때) 빠르다. -> 배열의 값으로 바로 접근가능하다. List : 배열과 비교했을때 순차적 엑세스로 (값을 넣거나 가져올때) 조금 느리다. -> 메모리의 0번째 객체 주소부터 1,2,3... 로 읽어서 접근하는 방식이기 때문(순차적 엑세스) 종류 : ArrayList : 정의 : 크기를 동적으로 늘릴수있는 배열 객체 / 제네릭을 사용하여 타입을 지정해줄 수있다. 장점..

[Java-Algorithm] HackerRank Java - Array Manipulation -누적합풀이

1).문제 : www.hackerrank.com/challenges/crush Array Manipulation | HackerRank Perform m operations on an array and print the maximum of the values. www.hackerrank.com 주어진 배열에 시작점과 끝점을 제시하고, 시작점~끝점에 더해질 k 값이 주어진다. 시작점~끝점에 각각 K를 더하고 난뒤 최종 배열에서 가장 큰 값을 추출해내는 문제. 2). 풀이 : 2중 for문을 사용해 아주 쉽게 해결 할 수 있다고 생각했다. 하지만 Timeout! 어떻게 풀어야할지 한참 ...아주 한참 머리를 괴롭혔다... 어떻게 하면 for문을 한번만 돌수 있을까......!!!!!!!!!!!!!!!!!!!..

반응형