요즘 프로젝트들은 대부분 프레임워크 기반으로 개발을 진행한다. 프레임워크 사용법만 익히면 웬만한 기능들을 큰 오류없이, 성능의 큰 손실 없이, 빠르게 개발할 수 있기 때문이다. 그런데, 프레임워크란 무엇인가? 라이브러리가 개발에 필요한 도구들을 단순히 나열해 놓은 것이라면, 프레임워크는 동작에 필요한 구조를 어느정도 완성해 놓은 반제품 형태의 도구라고 할 수 있다. (스프링 프레임워크는 단순히 빈 관리를 위한 IoC 컨테이너를 넘어서 웹 MVC 아키텍처와 보안, 모바일 등 다양한 분야의 기반 기술을 제공한다고 하는데, 지금은 일단 넘어가자) 따라서 프레임워크를 제대로 사용하기 위해서(그리고 프레임워크로 해결할 수 없는 요구사항들을 해결하기 위해서는) ‘동작’에 대해 알아야 하고, 이를 구현하는 ‘구조’ ..
[2017/09/09 추가]포스팅 후에 피드백을 받았습니다. 원래 글은 IBM 및 다른 블로그, 책 등을 참조해서 작성했었는데, 애초에 IBM 블로그가 오류가 있다고 하네요. 인터넷 상에 IBM 블로그를 기초로 작성된 글들이 많은데요, 밑에 원글도 그대로 두니 비교 참조하시길 바랍니다. async : 이벤트 핸들러 (callback)에 의해 처리 (callback 함수가 호출되기까지 다른 작업 가능)sync : 이벤트를 자신이 직접 처리(확인의 주체가 유저 프로세스이며, 다 될때까지 기다리거나 스스로 확인)block : 완료까지 대기(리턴되기 전까지 멈춤)non-block : 미완료라도 즉시 리턴 간단히 까페에서 커피를 주문하는 것을 예로 들어보면,1. 커피를 타달라는 요청이 왔다. 2-1. 이 때 커피..
Collection 인터페이스 구성 인터페이스 Hash Table Resizable Array Balanced Tree Linked List List+Hash Set HashSet TreeSet LinkedHashSet List ArrayList LinkedList Deque ArrayDeque LinkedList Map HashMap TreeMap LinkedHashMap 일반적으로 사용되는 클래스- 데이터 읽기/쓰기 등 평균 응답시간이 가장 좋다- 필요한 목적에 부합하는 클래스를 선택해서 사용하는 것이 바람직하다. (TreeSet은 느리지만, 데이터를 저장하면서 정렬하기때문에 순서에 따라 탐색할때 유용하다) 인터페이스 클래스 Set HashSet List ArrayList Map HashMap Que..
String은 immutable 하고, StringBuffer는 mutable하다. String은 한번 생성되면 불변한다? 문자열을 더할 경우("Hello" + "World"), 새로운 String객체를 생성한 후 값("Hello World")을 담아 리턴한다는 말이다. (기존의 객체들 에 담긴 값("Hello", "World")이 변하지 않음) 따라서, String은 짧은 문자열을 더할 경우에나 사용하는 것이 좋다고 한다. (새로운 객체를 생성하여 리턴하므로..) StringBuilder는 스레드에 안전한지의 여부와 전혀 관계없는 프로그램을 개발할 때 사용하면 좋다. 만약 메서드 내에 변수를 선언했다면, 해당 변수는 그 메서드 내에서만 살아있으므로, StringBuilder를 사용하면 된다. Strin..
다른 사람들의 Github를 돌아다니다 보면 빌드관련 버튼을 볼 수 있다. 아직 지속적 통합, 이런 개념은 와닿지 않고, 그냥 내 git에도 버튼을 추가하고 싶었다.추후에 스테이징 서버에 배포하는 등 구조 개선이 이루어지면 관련 내용을 추가해야겠다. Travis CIGithub 저장소에 Push가 되었을 때, CI (continuous integration) 서버가 빌드테스트 후 결과를 리포팅해주는 서비스이다. 1. travis사이트에서 자신의 저장소(github)와 연동2. travis 사이트에서 Web Hook 설정3. github 저장소의 settings에서 Travis CI 적용 확인 yaml 파일 생성 1. 최상위 경로에 .travis.yml 파일을 생성해준다 language: java befo..
(17/10/20 honux의 특강 후 추가 내용) - git을 제대로 이해하기 위해서는 참조에 대한 개념이 필요하다. git에는 객체와 참조가 있으며, commit만이 객체이다.(나머지는 모두 참조일뿐)자식은 부모를 찾아갈 수 있는 이유는 부모 링크를 가지고 있기 때문이다.git commit하면 HEAD(현재 branch, 즉 가장 마지막 commit을 참조)에서 commit 생성된다. branch 는 객체의 참조를 의미할 뿐이다. (commit의 이름이 너무 어렵기 때문에 branch를 사용하는 것이라고 봐도 될듯)1. commit하면 commit 생성2. HEAD 갱신3. HEAD가 가르키는 branch가 있을 x`x경우 branch 갱신 - git branch -f jake C5 -> (강제로 브..
이동 Alt + ) 이전(다음) 작업 화면 Ctrl + PageUp , Ctrl + PageDown Edit 창 좌우 이동 Ctrl + L 특정 라인으로 이동 Ctrl + , or . 다음 annotation(에러, 워닝, 북마크 가능)으로 점프 Ctrl + Shift + K 역으로 찾고자 하는 문자열을 찾아감. Ctrl + Shift + R파일 찾기 Ctrl + K 블럭으로 설정된 문자열 찾기 Ctrl + Shift + Down 클래스 내에서 다음 멤버로 이동 F3 선언 위치로 이동 F12 Editor 창으로 이동 편집 및 교정 단축키 동작Ctrl + N 새로운 파일 / 프로젝트 생성 Ctrl + / 한 라인/블록에 대해 주석 추가 및 제거 Alt + Shift + J 주석 템플릿을 생성 Ctrl + ..
테스트 환경 구축하기 구조 Local PC (Windows) -> github -> remote Server (AWS/Ubuntu)Local PC 세팅 JDK 최신버전 설치 - Click ! [Accetpt License Agreement] - Windows x64 (내 PC의 속성에서 확인, 32비트일 경우 x86) - 다운로드 후 설치 (전부 next) Spring Tool Suite 최신버전 설치 - 다운로드 후 압축 풀기 - \sts-bundle\sts-3.9.0.RELEASE\STS 실행 후 자신의 작업공간 경로 세팅 - Spring 프로젝트 생성 (ctrl + n ->Spring Starter Project) - Type : Maven / 나머지 세팅은 적당히하고 next - Check [De..
배열 랜덤으로 값 추출 import java.util.Arrays; import java.util.Collections; import java.util.List; public class xx { ... String[] Pool = {"1", "2", "3"}; List Shuffle = Arrays.asList(Pool); Shuffle.get(리스트순서번호).toString() 문자열 문자열 길이 sentence.length(); 문자열 출력 System.out.printf("%d, %s, %c",1,"문장을 입력",'a'); System.out.println("문장"); 문자열 입력받기 .next() 공백을 기준으로 문자, 문자열을 입력받음 .nextLine() 문자, 문자열 한 줄을 입력받음 .ne..