자바 10

컬렉션 프레임 워크

컬렉션 프레임워크 소개 애플리케이션을 개발하다 보면 다수의 객체를 저장해 두고 필요할 때마다 꺼내서 사용하는 경우가 많다. 만약 10개의 Product 객체를 저장해 두고, 필요할 때마다 하나씩 꺼내서 이용한다고 가정해보자 어떻게 Product 객레츨 효율적으로 추가, 검색, 삭제 할지 고민해야 되는데, 가장 간단한 방법은 배열을 이용하는 것이다 // 길이 10인 배열 생성 Product[] array = new Product[10]; //객체 추가 array[0] = new Product("Model1"); array[1] = new Product("Model20"); //객체 검색 Product model1 = array[0]; Product model2 = array[2]; //객체 삭제 array..

람다식

람다식이란? 자바는 객체 지향 프로그래밍이 소프트웨어 개발의 주요 패러다임이였던 1990년대에 디자인 되었다. 객체 지향 프로그래밍 나오기 오래전부터 Lisp 또는 Scheme 와 같은 함수적 프로그래밍 언어들이 있었는데, 학계를 제외하고는 현업에서 큰 호응 받지 못했다. 최근 들어 함수적 프로그래밍이 다시 부각되고 있는데, 병렬 처리와 이벤트 지향 프로그래밍에 적합하기 때문이다. 그래서 객체 지향 프로그래밍과 함수적 프로그래밍을 혼합함으로써 더욱 효율적인 프로그래밍이 될수 있도록 프로그램 개발 언어가 변하고 있다. 자바는 함수적 프로그래밍을 위해 자바 8부터 람다식(Lambda Expressions)을 지원하면서 기존의 코드 패턴이 많이 달라졌다. 람다식은 수학자 알론조 처리(Alonzon Church..

스레드 풀

병렬 작업 처리가 많아지면 스레드 개수가 증가되고 그에 따른 스레드 생성과 스케줄링으로 인해 CPU가 바빠져 메모리 사용량이 늘어난다. 따라서 애플리케이션의 성능저하 된다. 갑작스런 병렬 작업의 폭증으로 인한 스레드의 폭증을 막으려면 스레드풀(ThreadPool)을 사용해야 한다. 스레드풀은 작업처리에 사용되는 스레드를 제한된 개수만큼 정해놓고 작업 큐 (Queue)에 들어노는 작업들을 하나씩 스레드가 맡아 처리한다 작업 처리가 끝난 스레드는 다시 작업 큐에서 새로운 작업을 가져와 처리한다. 그렇기 때문에 작업 처리 요청이 폭증되어도 스레드의 전체 개수가 늘어나지 않으므로 애플리케이션의 성능이 급격히 저하 되지 않는다. 자바는 스레드풀을 생성하고 사용할 수 있도록 java.util.concurrent 패..

멀티 스레드 개념

프로세스와 스레드 프로세스(Process) : 운영체제에서는 실행 중인 하나의 애플리케이션 - 사용자가 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행 하나의 애플리케이션은 다중 프로세스를 만들기도 한다 . Chrome 브라우저를 두개 실행 했다면 두 개의 Chrome 프로세스 생성 프로그램 -> 실행 프로세스 -> 실행 프로세스 멀티 태스킹 : 두 가지 이상의 작업을 동시에 처리하는 것, 운영체제는 멀티 태스킹을 할 수 있도록 CPU 및 메모리 자원을 프로세스마다 적절히 할당 , 병렬로 실행 워드로 문서작업을 하면서 동시에 윈도우 미디어 플레이로 음악을 들을수 있다. 멀티 태스킹은 꼭 멀티 프로세스를 뜻하지는 않는다. 한 프로세스 내에서 멀티 태스킹을 할..

Java 연산자

연산자 단항 : 부호 증감 연산자 ex) x++ 이항 : 나머지 삼항 : 조건 연산자 ex) (sum>90) ? "A" : "B" 단항 연산자 부호연산자 short s = 100 short result = -s // 컴파일 에러 -> 부호 연산자 산출 타입 => int 증감연산자 ++,-- 피연산자 다른연산 수행하기 전 피연산자 ++,-- 다른 연산 수행한 후 * .class 파일은 -> Navigator 뷰 추가후 bin 폴더이 바이트 코드 파일 열어보기 비트 반전 연산자 byte v1 = 10 byte v2 = ~v1 // 컴파일 에러 --> ~ 연산자는 수행전 int 형으로 변환 ~v1 + 1; => -v1은 -11, -> 산출값 1 더하면 부호가 반대인 정수 얻음 산술 연산자 byte byte1 ..

빌드 용어

빌드 빌드 컴파일 + 링크 빌드 과정 원시파일(.java) -> 컴파일러 : 오브젝트파일(.class) -> 링커 : 실행파일(.jar) 빌드 도구 소스 코드로부터 실행 가능한 어플리케이션을 생성하는 것을 자동화하는 프로그램 java : ant -> maven -> gradle Ant Maven Gradle xml pom.xml 절차적 의존성 다운로드 가능 Groovy/ Kotlin 유연성(하나 하나 명시) 컨벤션(간편 해졌다.) 유연성 스크립트를 직접 명시 사용자 의도에 맞는 로직 개발이 어려움 스크립트의 규모가 작음 현대적인 빌드 도구 c# : MSBulid 닷넷 : .NetFrameWork, Nant *자동화(서비스 중 프로그램 코드 수정) 1. 코드수정 2. Git 3. 컴파일 4. 빌드 -> 빌..

Back-end/ETC 2021.05.04

Spring Boot vs Spring

Spring -> 이름의 유래 개발자들의 겨울이 끝났다 !! 봄이 왔다!! 1. 모든 dependency를 버전까지 정확하게 한땀 한땀. 2. configuration 길다! Spring boot makes it easy stand - alone production -grade Spring based Applications just run 1. 짧아 졌다. 버전 관리도 권장버전으로 자동설정 스타터로 자동 디펜던시 2. gradle 이용시 더 짧은 길이 application.properties-> aplication.yml 사용자가 보기 깔끔하다. *Yaml Ain't Markup Language 3. Tomcat 내장 서버 -> 내장 서블릿 컨테이너 덕북에 jar 파일로 간단 배포! 4. 스프링 Seur..

Back-end/SpringBoot 2021.05.01

SpringBoot Auto Configuration

Annotation = 주석? 컴파일러가 Anotation을 만나면 미리 정의 된 일이 동작한다. @SpringBootApplication -> 들어가보면 @SpringBootConfiguration -> 빈을 만들어준다. @EnableAutoConfiguration -> 2번 Resoruse 의 Meta-info- spring factories의 EnableAutoConfigration이 있는 Compent들과 연관이 있는 외부클래스들을 가져와 빈을 등록한다. @ComponentScan -> 1번 @Component 붙어있는 객체들을 스캔을 하면서 빈으로 등록한다 @Filter @inrherited @Documented @Retention @Target www.youtube.com/watch?v=OXI..

Back-end/SpringBoot 2021.04.25