Spring
·
개발/spring
Spring Framework 오늘날 가장 많이 사용하는 java기반 응용 프로그램 개발 프레임워크(효율적인 개발을 위해서 개발방식을 정한것, 우리가 짠소스를 프레임워크안에 집어넣는것) 모든 java어플리케이션 개발에 이용할수있으며, java EE 위의 웹어플리케이션 개발에 주로사용. Spring Framework의 특징 경량 컨테이너로써 자바 객체를 직접관리(개발생성 소멸..) POJO(Plain Old Java Object) 방식의 프레임워크(자바 모델이나, 기능, 프레임워크 등에 따르지 않고 홀로 독립적으며 단순한 기능만을 가진 객체들 = 그냥 자바 bean) IOC(Inversion of Control) 지원(개발자가 코드의 흐름이나 객체 생성에 관련된 코드를 프로그래밍코드에 직접 작성하는 것이 ..
네티(Netty) 기본정리
·
개발/open source
본 포스팅은 2편으로 구성되어 있습니다.네티(Netty) 기본정리 네티(Netty) 기본정리2 Netty네티는 비동기 이벤트 기반 네트워크 애플리케이션 프레임워크로써 유지보수를 고려한 고성능 프로토콜 서버와 클라이언트를 빠르게 개발할 수 있다.네티를 사용하면 네티가 이벤트를 사용하여 데이터를 처리해주기 때문에 순수 자바코드로 짠 네트워크프로그램보다 훨씬 쉽게 개발할 수 있다.소켓소켓은 데이터 송수신을 위한 네트워크 추상화단위인데, 일반적으로 네트워크 프로그램에서 소켓은 ip와 port를 가지고있으며 양방향 네트워크 통신이 가능한 객체를 의미.동기 & 비동기동기 : 서비스처리가 완료된 이후에 처리 결과를 확인하는 방식을 동기식 호출(결과가 올때까지 대기해야함)비동기 : 서비스처리가 완료되기전에 우선 응답을..
Java8 람다(Lambda)를 이용한 프로그래밍
·
개발/java
함수형 인터페이스람다를 이용한 프로그래밍 람다를 받는다(함수형인터페이스를 찾던가 만들던가)람다를 호출해야하는지 검사필요할때 람다를 호출모든 람다의 핵심은 지연실행이다. 코드를 나중에 실행할 이유는 다음과 같다.별도의 스레드에서 코드실행코드를 여러번 실행알고리즘에서 코드를 적절한 시점에서 실행(정렬 비교연산 등)어떤일이 발생했을 때 코드 실행(이벤트 등..)필요할때만 코드 실행각 픽셀에 Color → Color 함수를 적용하여 이미지를 변환한다고 가정.public static Image transform(Image image, UnaryOperator f){ // 고정된 값만큼 모든 픽셀의 밝기를 올리는 메서드// ..... f.apply(image.getColor);}Image brightenedImag..
Java8 스트림(Stream)연산을 사용해보자
·
개발/java
Stream(스트림)연산컬렉션을 처리할때 보통은 요소들을 첨부터 끝까지 순회하면서 각 요소를 대상으로 작업한다. 하지만, Java8 부터는 스트림연산을 통해 반복하지 않아도 된다.List word;int count = 0;for(String w : words){ // 일반 방식 if(w.length() > 12) { count++; }}long count = words.stream().filter(w -> w.length() > 12).count(); // 스트림스트림은 데이터를 변환하고 추출할수있어서 겉으로는 컬렉션과 유사해보이지만 큰 차이점이 있다.스트림은 요소들을 보관하지않는다. 요소들은 하부의 컬렉션에 보관되거나 필요할때 생성된다.스트림 연산은 원본을 변경하지않는다. 대신 결과를 담은 새로운 스..
Java8 람다(Lambda)를 사용해보자
·
개발/java
Lambda 메서드를 간단한 식으로 표현하는 방법 다른언어들은 자바와 다르게 함수자체를 파라미터로 보낼 수 있지만, 자바는 객체지향언어이므로 함수자체를 보낼수없어서 그 함수를 포함한 객체를 만들고 그 객체를 보내야 하는 불편함이 있었다. class ABC implements Compatrator{ public int compare(String first, String second){ // {return a + b;}; (a, b) -> a+b; 한줄로 처리되는 바디는 {}로 감쌀필요가 없다. 여러줄로 처리되어야하는 바디는 {}로 감싼다. {}를 사용할때는 return문을 명시적으로 써줘야한다. 기본적으로 람다파라미터에는 타입을 명시해주는게 맞지만, 유추가 가능할경우에는 타입명을 생략가능하다. 타입유추가 ..
Java8 옵셔널(Optional<T>)객체 올바르게 사용하기
·
개발/java
Optional Optional 객체는 T타입 객체 또는 객체가 없는 경우의 래퍼다. T타입일수도있고 null일수도있을때 쓰는 표현이다. optional은 객체 또는 null을 가리키는 T타입 레퍼런스보다 안전한 대안으로 만들어졌다. 하지만 올바르게 사용할 경우에만 안전하다. (Optional을 제대로 사용하려면, Optional을 최대 1개의 원소를 가지고 있는 특별한 Stream이라고 생각하면 편하다.) get메서드는 감싸고있는 요소가 존재할때만 요소를 얻고, 그렇지않으면 NoSuchElementException을 던진다. Optional val = ...; val.get().someMethod(); // v.처리); val.ifPresent(v -> list.add(v)); // 리스트에 해당값을 ..