반응형

전체 글 20

Java Stream(스트림) (3) 중간 연산

생성된 스트림을 필터링하거나 원하는 형태로 가공하는 연산입니다.중간 연산의 특징중 하나로 중간 연산의 결과값은 스트림을 반환하기 때문에 이어서 호출하는 메소드 체이닝이 가능합니다.또한 중간연산은 전에 언급했듯이 성능을 위하여 지연 연산이기 때문에 모든 중간 연산을 합친 다음 합친 연산을 마지막으로 처리합니다.skip()Skip 메소드는 스트림내의 첫번째 인자부터 설정한 n개의 인자를 제외한 나머지를 반환합니다.Stream skip(long n) 예제코드//1IntStream stream = Intstream.rangeClose(1,5);//12345stream.skip(2).forEach(System.out::print); // 345//2Stream stream = Arrays.stream(new St..

Java 2024.05.15

Java Stream(스트림) (2) 생성

기본적으로 스트림 API는 컬렉션, 배열, 파일, 비어있는 스트림등 다양한 데이터 소스에서 생성이 가능합니다.컬렉션(Collection)컬렉션 타입(Collection, List, Set)은 내장된 stream 메소드를 이용하여 스트림을 생성할수 있습니다.List list = Arrays.asList("apple","banana","cat","dog");// of()메소드 : 자바 9부터 추가됨// List list = List.of("apple","banana","cat","dog"); Stream stream = list.stream();배열(Array)Arrays 클래스의 stream 메소드 또한 배열을 통해 스트림을 생성해줍니다.Arrays.stream(T[] arr);//매개 변수로 온 배열의 ..

Java 2024.05.15

Java Stream(스트림) (1) 특징

Stream?Java8에서 부터 지원하는 Stream은 다양한 데이터 소스 즉 배열이나 컬렉션(List, Map,Set)으로 원하는 값을 얻을때 요소들을 하나씩 참조하면서 반복적인 처리를 할수 있게 합니다. 그렇게 되면 복잡한 로직이나 코드를 가진 경우에 불필요한 for이나 if문들을 쓰지 않고 깔끔하게 처리가능하게 됩니다.Stream의 특징Stream은 데이터소스로부터 데이터를 읽기만할뿐 기존 데이터를 변경하지 않습니다.Stream은 Iterator처럼 일회용입니다. 최종연산 즉 결과값을 반환후에는 스트림이 닫혀 스트림을 사용할려고 하면 에러가 뜨게 됩니다. 사용할려면 다시 스트림을 생성해야 합니다.최종 연산 전까지 중간 연산이 수행되지 않고 지연됩니다.Stream의 구조Stream은 생성 - 가공 -..

Java 2024.05.15

Spring Container

IOC(Inversion of Control)란Inversion of Control의 약자로써 제어의 역전이라고도 합니다.보통 개발자가 코드를 작성하여 구현된 객체가 프로그램의 제어 흐름을 스스로 컨트롤하는것이 기본적이지만 이것을 외부에서 관리하는것을 제어의 역전이라고 합니다.즉 개발자가 객체를 생성하는것이 아니라 컨테이너에서 가져오는것입니다.Spring에서는 BeanFactory, ApplicationContext가 이러한 역할을 하게 됩니다.스프링은 스프링 컨테이너를 통해 객체를 관리하는데, 스프링 컨테이너에서 관리되는 객체를 Bean이라고 합니다.DI(Dependecy Injection)란?DI(Dependecy Injection) : 의존관계, 의존성 주입이란 뜻을 가지고 있습니다.스프링은 DI로..

Web 2024.05.15

Maven이란 무엇인가?

Spring을 공부하던중 메이븐과 그래들에 대해 알게 되었고 이러한 개념들의 정리가 필요할거같아 정리해보려 합니다.Maven이란?Maven은 Apache Ant의 대안으로 만들어진 자바용 프로젝트 관리 도구로써 프로젝트의 작성부터 컴파일등 프로젝트 라이프사이클에 포함되는 모든 테스트를 관리 및 지원하는 도구입니다.Maven은 필요한 라이브러리를 문서(pom.xml)에 정의해 놓으면 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작동하는데 필요한 라이브러리 모두 네트워크를 통해서 다운받아 관리합니다.Maven이 참조하는 파일- settings.xmlsettings.xml은 maven의 tool 자체의 설정을 담당하는 파일입니다.pom.xml자바 프로젝트를 생성할때 빌드 툴로 Maven을 선택했다면 프로젝..

기타 2024.05.15

throw(예외발생) throws(예외처리)

- throwthrow는 예외를 강제로 발생시킬때 사용합니다. 예를 들면public class test{ public static void main(String[] args){ try{ throw new Exception(); // 예외 발생 }catch (Exception e){ // 예외 처리 코드 System.out.println(e); } }}   위의 코드는 메인함수를 들어갈때 throw을 써서 생성한 Exception객체를 강제로 발생시켰습니다.Exception이 강제로 발생하였기 때문에 위와 같이 catch문에서 발생한 예외을 출력하게 됩니다. - throwsthrows도 예외를 처리할때 사용하는데요throws는 발생한 예외를 상위 메소드로 ..

Java 2024.05.15

Call-by-Value, Call-by-Reference의 개념

Call by Value 그리고 Call by Reference에 대한 차이는 현재도 많이 물어보는 회사 면접 단골 문제입니다. Call by Value와 Call by Reference가 무엇인지 프로그래밍 언어에 따라 어떤 차이가 있는지 정리해보려고 합니다. Call by Value 함수가 호출될때 메모리에는 함수를 위한 임시 공간이 생성되는데요. 이때 Call by Value(값에 의한 호출)은 전달되는 변수의 값을 복사하여 함수의 인자로 전달하는데요 복사된 인자는 지역 변수의 특징을 지니며 이로 인해 함수 안의 인자 값이 변경되어도 외부의 인자 값은 변경되지 않습니다. C++ 언어로 예를 들어 보겠습니다. #include using namespace std; void swap(int num1,in..

기타 2023.08.07

[Java] Class, Object, Instance(클래스, 객체, 인스턴스)

최근에 요로 결석이 걸려 한동안 죽을듯한 고통을 겪어 블로그 게시글을 제대로 올리지 못했다.... 여름철 수분 보충이 매우 중요하다는걸 크게 느끼는 바이다. 오늘은 전 블로그에서 두번째로 포스팅한 게시물 내용인 클래스, 객체, 인스턴스에 대해서 이야기하고자 한다. 클래스, 객체, 인스턴스의 개념 클래스(Class) 객체 지향 프로그래밍에서 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀입니다. 클래스에 포함되는 title, author과 같은 변수는 속성(property)라고 하며 함수는 메소드(method)라고 합니다. 예시 // 클래스 public class Book { String title; String author; public void read(){...} } 객체(Object)..

Java 2023.08.07

Mutex, Semaphore

Mutex, Semaphore에 관한 글은 전 블로그에 가장 첫글입니다. 다시 해당 자료를 보면서 부족한 부분이 있다면 추가해서 작성해였습니다. Mutex, Semaphore? 프로세스들은 병렬 프로그래밍, 다중 프로그래밍에 의해 병렬적 또는 병행적으로 실행됩니다. 하지만 프로세스간 메시지 전송 또는 공유 메모리를 통해 공유된 자원에 여러개의 프로세스가 동시에 접근하면 임계영역(Critical Section)문제가 발생한다. Mutex, Semaphore 모두 이러한 임계영역 문제를 해결하기 위한 동기화 기법이다. 여기서 생소한 개념을 알고가야할 단어가 병렬, 병행 그리고 임계영역(Critical Section)입니다. 먼저 병렬과 병행의 차이에 대해 정확히 알고계시나요? 애매하다면 다시 한번 보세요. ..

OS 2023.08.03

개발 블로그 이전합니다.

기존 운영하던 개발 블로그를 이전하게 되었다. 기존에는 Github Page과 Jekyll을 사용하여 블로그를 운영해왔으나 블로그 글을 올릴때는 마크다운으로 올릴 게시글을 로컬에서 한번 확인후 Github에 커밋하는것이 번거러워 글을 작성하고도 올리지 못해 게시물을 한번에 3,4개를 올리는 등 꾸준히 글을 올리자는 취지에 벗어나게 되었다. 아래는 그동안 운영했던 블로그 주소이다. PandaMun Personal development blog pandamun.github.io 이러한 취지를 다시 확고히 하기위해 게시글을 쉽고 빠르게 올릴수 있으며, 전처럼 블로그의 Customizing이 가능한 Tistory를 선택하게 되었습니다. 이전에 작성하였던 게시물들은 부족한 부분이 있다면 수정하고, 까먹었던 내용이..

기타 2023.07.31
반응형