분류 전체보기264 [Java8] Java 비동기 - CompletableFuture 안녕하세요. 우리는 이전시간에 [비동기] Reactive Stream 이란 포스팅에서 reactive stream에 대해서 알아보았습니다. Reactive Stream은 published된 이벤트에 반응하여 일련의 값을 처리하는 방식입니다. 하지만 우리가 비동기를 이용할 때는 이벤트를 처리할 때도 있지만 일회성으로 무거운 작업을 여러 CPU로 나눠서 처리하고자 함도 있습니다. 물론 Reactive 방식을 이용하여 처리할 수 있지만 Reactive 방식으로는 이럴경우 Thread를 완벽하게 제어하기가 까다롭습니다. 이럴 때 사용하는 비동기 방식이 일반적으로 생각할 수 있는 thread를 생성하여 작업을 위임하는 방법입니다.이러한 방법은 Java 5에서부터는 Future라는 이름을 추상화 되어 .. 2020. 7. 11. [Java] Reactive Stream 이란? reactive stream이란 non-blocking(넌블럭킹) backPressure(역압)을 이용하여 비동기 서비스를 할 때 기본이 되는 스펙입니다. java의 RxJava, Spring5 Webflux의 Core에 있는 ProjectReactor 프로젝트 모두 해당 스펙을 따르고 있습니다. 또한 Java9에 추가된 Flow 역시 reactvie stream 스펙을 채택하여 사용하고 있습니다. 따라서 비동기 프로젝트를 잘 이해하기 위해서는 기본 스펙이 되는 Reactive Stream에 대해서 이해가 필요합니다. 이 스펙은 다행스럽게도 공개된 사이트가 있습니다. 원 페이지 주소는 참조에 두도록 하겠습니다. 오늘은 Reactive Stream 스펙에 대해서 한번 알아보는 시간을 가져보겠습니다. 개요 .. 2020. 7. 2. [Spring] Spring AOP - 원리편 안녕하세요. 오늘은 Spring AOP의 3번째 시간으로 마지막 시간입니다. 오늘은 AOP가 Spring 내부에서 구현되는 원리에 대해서 한번 알아보는 시간을 가져보도록 하겠습니다. AOP를 사용하는 방법 및 기본적인 이론은 아래 링크를 통해 이전 포스팅을 확인해주시기 바랍니다. [Spring] Spring AOP - 기본 이론편 [Spring] Spring AOP - 실전편 정적 프록시와 동적 프록시 Spring의 AOP는 프록시 패턴을 사용합니다. proxy pattern에 대해서는 예전에 [Spring & Design Pattern] Spring에서 발견한 디자인패턴_Proxy Pattern 으로 포스팅 한적이 있으니 참고하시면 자세히 알 수 있습니다. 만약 Class에 .. 2020. 7. 1. [Java] 자바에서 줄바꿈, 개행의 규칙 개발은 회사에 들어가면 혼자할 수 도 있지만 협업하는 경우가 훨씬 많습니다. 동일한 시간에 혼자서 만들 수 있는 프로젝트에는 한계가 있기 때문입니다. 무궁무진하게 쉴새없이 좋은 기술들이 나오고 있는 현재, 그리고 계속해서 바뀌는 요구사항. 모든 것을 만족시키려면 협업이 중요합니다. 여러명이서 만들지만 혼자서 만든것과 같은 결과물이 나온다면 그것은 더 없이 좋은 결과물이라고 생각합니다. 그러기 위해서는 코딩의 습관 등이 프로젝트에 일관적일 필요가 있습니다. 이럴 때 이용할 수 있는 것이 Coding Convention입니다. 오늘은 Coding Convention 중 Oracle docs에 나와있는 Coding Convention을 보면서 스스로 자신의 코딩 스타일에 대해서 되돌아보는 시간을 가지고자 합니.. 2020. 6. 26. [Spring] Spring AOP - 실전편 안녕하세요. 오늘은 저번 포스팅, 기본 이론편에 이어서 Spring AOP에 대해서 실제 적용을 해보며 알아보는 시간을 가지도록 하겠습니다. 저번 포스팅에서 배운 이론이 어떻게 적용되는지 눈으로 확인하시며 쉽게 이해가 되셨으면 좋겠습니다. AOP 적용 타입 Spring AOP는 아래와 같은 type의 Advice를 제공합니다. @Before Before는 target 메서드가 실행되기 전에 Advice가 실행됩니다. target이 실행되지 못하도록 막는 방법은 가지고 있지 않습니다. (exception을 발생시키면 되기는 합니다.) @After After는 target 메서드가 실행된 후에 Advice가 실행됩니다. 정상적으로 메서드가 마무리되든 비정상적으로 exception이 발생하든 무조건 실행되는 .. 2020. 6. 23. [Spring] Spring AOP - 기본 이론편 안녕하세요. 오늘은 Spring AOP에 대해서 알아보고 실제로 적용하는 방법에 대해서 이야기해보고자합니다. AOP는 [Spring] Spring의 정의와 기본 개념에서 Spring을 비침투적인 기술로 만들기위한 3가지 기술중 하나라고 언급한 적이있습니다. 오늘부터는 Spring AOP에 대해서 알아보는 시간을 가져보도록 하겠습니다. AOP 먼저 아래 코드의 상황을 보면서 문제를 이해해보도록 하겠습니다. doSomething이라는 메서드가 있습니다. 이 메서드는 어떤 바쁜 일을 합니다. 이렇게 운영하던 중 새로운 요구사항이 들어왔습니다. 바로 doSomething 메서드가 실행되는 시간을 찍어달라고 합니다. 그렇다면 우리는 아래와 같이 timeCheck 메서드를 만들어 코드를 작성할 수 있습니다. pub.. 2020. 6. 20. [python] java 개발자가 배우는 python - dictionary 안녕하세요. 오늘은 java 개발자가 배우는 python 4번째 시간입니다. 오늘 배워볼 내용은 tuple과 마찬가지로 java에는 나오지 않는 자료형의 이름을 가진 dictionary입니다. 하지만 API를 개발해 보신분이라면 그렇게 생소하지 않을 것입니다. 빠르게 아래에서 dictionary에 대해서 알아보도록하겠습니다. dictionary dictionary는 java의 Map과 가장 유사한 자료구조를 가지고 있습니다. 즉, key - value Mapping의 자료구조라는 뜻입니다. dictionary는 list나 tuple 처럼 순차적으로 해당 요소값을 구하지 못하며 key를 통해 value의 값을 얻어옵니다. 이것이 dictionary의 가장 큰 특징이며 이때 hash를 사용하여 검색합니다. .. 2020. 6. 17. [python] java 개발자가 배우는 python - tuple 안녕하세요. java 개발자가 배우는 python 3번째 시간입니다. 오늘 알아볼 것은 java 개발자가에게는 조금 생소한 개념일 수도 있는 tuple이라는 자료구조입니다. tuple tuple으 쉼표로 구분되는 여러 값으로 구성되는 자료구조입니다. 이 tuple은 python의 immutable(수정불가능한) list로써 python 함수의 다중리턴에 사용됩니다. 어떻게 사용하는 자료구조인지 예시를 들어가며 한번 확인해보도록 하겠습니다. 선언은 소괄호와 컴마를 이용해서 가능합니다. >>> test = () >>> type(test) >>> t = (1, 2, 3) >>> t (1, 2, 3) >>> type(t) 뿐만 아니라 선언시 초기화 할 경우에는 소괄호를 생략해도 tuple 자료형으로 선언됩니다... 2020. 6. 14. 어떤 DB를 사용해야 할까 ? CAP 이론 안녕하세요. 현재 세상에는 수많은 데이터를 저장할 수 있는 서비스가 많이 나와있습니다. 그런데 이런 와중에 내가 만드는 시스템은 어떤 Database를 사용해야 좋을까요? 확장성은 어느정도로 가져가야할지, 사용할 수 있는 비용은 어느정도인지, 팀의 기술 숙련도는 어떤지... 등등 여러가지를 생각해야합니다. 오늘은 여러분의 database 선택의 한가지 척도로써 도움을 줄 수 있는 CAP 이론에 대해서 이야기 해보고자 합니다. CAP 이론 CAP 이론(또는 Brewer`s theorem)이란 Network로 연결된 분산된 데이터베이스 시스템은 일관성(Consistency), 가용성(Availability), and 분할 내구성(Partition Tolerance)의 3가지 특성중 2가지 특성만을 충족 할수.. 2020. 6. 13. [python] java 개발자가 배우는 python - List 안녕하세요. 오늘은 java 개발자가 배우는 python의 2번째 시간입니다. Java의 배열 및 List와 비교하여 python의 list는 어떤지 확인해보도록 하겠습니다. List python의 기본형 타입으로 int, float, string을 배웠습니다. 이런 데이터가 여러개의 순차적인 묶음으로써 필요할 때가 많이 있습니다. 이때 사용할 수 있는 python의 타입이 List 타입입니다. java에서 List java에서는 기본적으로 배열을 사용할 수 있습니다. java의 배열은 일반적으로 아래와 같이 사용합니다. // type[] name = new type[size] int[] array = new int[10]; 위와같이 선언하면 array는 int형의 10개의 사이즈의 크기를 가지는 메모리.. 2020. 6. 8. [python] java 개발자가 배우는 python - NoneType 안녕하세요. 오늘은 java 개발자가 배우는 python이라는 주제로 찾아뵙습니다. 오늘 알아볼 것은 python의 NoneType입니다. java와 유사한 개념은 무엇이며 어떻게 사용하는지 알아보도록 하겠습니다. NoneType python에서 NoneType은 값이 존재하지 않음(None Object)을 나타내는 Type입니다. java에서 null과 유사한 의미를 가진다고 할 수 있을 것 같습니다. 하지만 java의 null과는 근본적으로 다른 점도 존재합니다. python의 함수는 반드시 return이 있습니다. 즉, java에서의 void 형식의 메서드가 존재하지 않는다는 것입니다. 아래에서 예제로 비교를 해보겠습니다. public void compute() { ...로직... } java 에서.. 2020. 6. 2. [python] python - 기본 데이터 타입 안녕하세요. 오늘부터는 python을 공부하면서 정리한 것을 포스팅하고자합니다. 저도 이제 막 python을 시작하는 입장이라 여러분들에게 팁을 알려드리긴 힘들것이라 생각합니다. 하지만 python을 이용하면서 알아두어야 할 정보라던지 필요하겠다라고 생각되는 부분을 공유드리고자 합니다. 오늘은 python의 변수에 대해서 한번 이야기 해보고자 합니다. 그리고 오늘 과정은 python의 대화형 모드(interactive mode)를 통해 확인해보도록 하겠습니다. python3 기준입니다. python2와는 다름을 알려드립니다. 데이터 타입 python의 데이터 타입은 다른 여느 언어들과 마찬가지로 기본 타입과 객체 타입으로 나누어 집니다. 기본타입에 대해서 먼저 알아보고 객체타입에 대해서 알아보도록 하겠습.. 2020. 5. 31. 이전 1 ··· 12 13 14 15 16 17 18 ··· 22 다음