본문 바로가기

IT for developer/Java

(9)
int[] to Integer[] Java 8 Stream API 이용하기 public Integer[] convertToInteger(int[] array) { return Arrays .stream(array) .boxed() .toArray(Integer[]::new); } Sorted 하기 (내림차순) public Integer[] convertToInteger(int[] array) { return Arrays .stream(array) .boxed() .sorted(Comparator.reverseOrder()) .toArray(Integer[]::new); }
equals 함수를 여태 잘못 알고 있었다.; apache commons에 있는 ListUtils 라는 클래스를 이용해서 결과들을 Union, Intersecion, Sum 등을 하기위해서 사용하고 있는데 이상하게 잘 안되서 당황했다. equals라는 함수도 잘 만들어줬는데 도대체 뭐가 문제인지 몰라서 헤딩만했다. 디버깅해봐도 list의 contains 함수가 결국 equals함수를 호출하는데 브레이크포인트를 걸어놔도 그냥 넘어가 버린다. 완전 삽질이였다. equals 함수의 인수는 (Object o) 로 해야만 했다. equals(CustomType o) 이런식으로 선언해놨더니 완전 맹구가 되버린 것이다. ㅜㅜ
Java Concurrency Part 3 – Thread Pools 쓰레드 풀은 쓰레드의 수, 쓰레드 재사용, 스케쥴링등를 수행할 수 있다. 흠 지금 보고 있는 사이트가 너무 심플하게 나와서 다른사이트를 보거나 API를 보고 정리해야할듯. 참고 사이트: http://www.baptiste-wicht.com/2010/09/java-concurrency-part-7-executors-and-thread-pools/ 쓰레드 풀을 살펴보기전에 기반 클래스들을 살펴보자. Executor 라는 클래스 보통 Thread를 실행하기 위해서 Runnable 인터페이스를 구현한 클래스를 생성하고 다음과 같이 쓰레드를 실행한다. new Thread(new(RunnableTask())). start() 상당히 심플하지만 여러개의 쓰레드를 동시에 실행하고 끝날 때 까지 기다리고 하는등의 작업을..
Java Concurrency Part 2 – Reentrant Locks 원문: http://www.carfey.com/blog/?p=57 자바에서 synchronized 키워드는 탁월한 툴이다. 그러나 synchronization 이상의 것이 필요할 때가 있다. 접근 타입(읽기, 쓰기)를 제어할 필요가 있거나, mutext가 없거나 다중의 mutex를 관리할 필요하기 때문에 사용하는 것은 상당히 귀찮다. Java Reentrant Locks java.util.concurrent.locks 패키지에 몇개의 lock을 구현하고 있다. Lock - 획득/해제할 수 있는 가장 간단한 락 ReadWriteRock - 읽기와 쓰기 락타입을 가지고 있다. ReentrantLock: 재진입 가능한 Lock 구현 ReentrantReadWriteLock: 재진입가능한 ReadWriteLoc..
Java Concurrency Part 1 - Semaphores 원문 : http://www.carfey.com/blog/?p=55 Java Concurrency 쪽 살펴 볼려고했는데 인터넷에 잘 정리된 것이 있는 듯해서 번역하면서 볼 생각이다. 물론 발번역이고 필요한 부분만 발췌. 우리는 세마포어에 대해서 알아볼 것이다. 특히 카운팅 세마포어. 세마포어는 간혹 리소스의 접근을한하기때문에 잘못 이해되고 많이 쓰이지 않는다. 그들은 리소스에 접근을 제어하는 다른 방법들 때문에 무시되어진다. 그러나 세마포어는 동기화와 다른툴들이 제공하는 것이상의 것들을 우리에게 제공한다. 세마포어가 무엇인가? 오직 n개의 프로세스들이 주어진 시간에 특정 리소스를 접근할 수 있도록 해주는것이다. 그렇게 하는 목적이 무엇인가? 이를 설명하기 위한 예를 살펴보자. 연결 수를 제한하기. pub..
(6장) JADE PROGRAMMING FOR BEGINNERS 6 THE YELLOW PAGES SERVICE – THE DFSERVICE CLASS 지금까지 사용된 코드를 보면 판매 에이전트가 정해져 있다고 가정했다. 다시말해 각 구매 에이전트가 이미 판매 에이전트를 알고 있다고 가정했다. 이번장에서는 이러한 가정을 어떻게 제거하는지 보여준다. yellow 페이지 서비스로 구매 에이전트가 해당 시간에 판매에이전트를 발견할 수 있도록 한다. 6.1 The DF agent 옐로 페이지 서비스는 에이전트가 하나이상의 서비스를 공개하여 다른 에이전트가 이를 찾을 수 있게 해준다. JADE에서 옐로 페이지 서비스는 DF(Directory Facilitator)라는 에이전트에 의해 제공된다. 6.2 Interacting with the DF DF는 적당한 언어와 온토로지를 ..
(5장) JADE PROGRAMMING FOR BEGINNERS AGENT COMMUNICATION – THE ACLMESSAGE CLASS JADE 에이전트의 가장 큰 특징은 통신 기능의 제공이다. 통신 패러다임은 비동기적 메시징 방식을 채택했다. 각 에이전트는 메세지 큐를 가지고 있다 . 메세지큐에 메세지를 쓰면 받으려는 에이전트에서 알려준다. (JADE Runtime이 이를 수행해 준다.) 5.1 The ACL language FIPA (http://www.fipa.org) 에서 정의한 통신을 위한 메세지 형태 - 송신자. - 수신자 리스트 - 통신 의도 (performative) - 컨텐츠 - 언어 - 온톨로지 - 컨트롤 필드 jade.lang.acl.ACLMessage 에 구현되어 있음. 5.2 Sending messages ACLMessage msg = n..
(1~4장) JADE PROGRAMMING FOR BEGINNERS 원문 : http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf 개인적으로 정리하기 위해서 번역하는 중.... 이 튜토리얼은 어떻게 간단한 JADE 에이전트를 생성하고 어떻게 실행 테스크를 만들고 서로 통신하게 하는지에 대해 보여준다. JADE는 자바로 만들어졌으면 에이전트를 개발하기 위해서는 자바로 개발해야한다. 이 글을 읽는 사람들은 자바 언어에 익숙하다고 생각하고 글을 쓴다. 1 JADE OVERVIEW JADE는 다중 에이전트 시스템 개발을 돕는 미들웨어이다. 다음을 포함하고 있다. - 실행 환경 : 이 미들웨어 위에서 에이전트는 수행된다. - 라이브러리: 에이전트를 개발할 때 필요한 클래스들을 제공한다. - 그..