전체 글 썸네일형 리스트형 아이폰 벨소리앱, '벨소리메이커' 좋아요! '벨소리메이커' 앱은 내가 이용하고 있는 벨소리앱이다.나는 평소에는 아이튠즈를 이용해서 벨소리를 제작해 쓰고 있었다.그러다가 폰을 바꾸면서 벨소리를 다시 아이튠즈를 열어 만들 것을 생각하니, 너무 귀찮은 것이다.쉬운 방법이 없을까? 검색을하고 여러가지 앱을 실험하다가 발견한 '벨소리메이커'!나는 '벨소리메이커' 앱을 가지고 마음에 드는 벨소리를 설정해서 잘 쓰고 있다. 이 화면은 현재 내 '벨소리메이커' 앱의 첫 화면이다.앱을 열면 이 화면이 나타나는데, 위에 있는 두 음악이 내가 현재 벨소리에 다운로드 받아놓은 것이다.하나는 '벨소리메이커'에서 무료로 다운로드 받은 것이고, 또 하나는 내가 아이클라우드에 담아 놓은 음악을 가지고 만든 것이다.화면의 하단에 보이는 바와 같이, '벨소리메이커'는 .. 더보기 자바(Java)의 인기있는 라이브러리(Library)들 자바(Java)프로그램 언어는 라이브러리가 다양한 것으로 유명하다.미리 만들어 놓은 라이브러리들을 언제라도 불러서 활용할 수 있도록 계발되었다.그러나 나는 아직 라이브러리의 정확한 개념과 그 활용법을 잘 모른다.연구가 필요하다.ㅠㅠ 아래는 자바의 인기있는 라이브러리들이다.유튜브에서 '자바공부'(이것이 자바다)를 하다가 캡쳐해 놓은 것이다. 더보기 ID, 패스워드 설정과 로그인화면을 만들때 참고할만한 Hashtable 위 코드는 자바 Hashtable을 공부하면서 교재에 나와있는 코드를 따라 작성한 것이다.Hashtable은 key 값과 value 값이 쌍을 이뤄서 다니는 배열을 말한다.여기서 key 값은 중복저장이 안되고 value 값은 중복 저장 가능하다.만약, 나중에 같은 key에 다른 value 값을 저장하게 되면, 나중에 한 값으로 교체된다.그렇기 때문에 회원의 아이디와 패스워드를 설정하고 이들 값을 이용해 로그인 화면을 만들 때 매우 유용한 컬렉션이다. Hashtable은 Map 컬렉션에 속한 것으로, 제네릭(Generic)을 활용하면 매우 편리하다.Map map = new HashMap();이 때, key와 value 타입은 주로 String을 많이 사용한다. 한편, Map 컬렉션에서 값을 저장할 때는 p.. 더보기 주사위 던지기 자바 코드 작성하기 이 코드는 자바(Java)로 구현한 주사위 던지기 코드이다. 1에서 6까지 숫자를 랜덤으로 뽑는 것을 보여준다. 이것을 반복적으로 실행하면, 계속해서 랜덤으로 뽑힌 정수(Int) 타입의 숫자가 콘솔창에 뿌려진다.중앙의 괄호 안의 (Math.random()*6)이 바로 주사위의 6개의 경우의 수를 담고 있다.6대신 다른 숫자를 넣으면, 그 숫자들 중 하나가 랜덤으로 뽑힌다.숫자를 바꾸면 다양한 방법에 활용할 수 있을 것 같다. 더보기 자바 제네릭(Generic) 요약정리 제네릭(Generic)은 자바5부터 새롭게 추가된 기능으로, 컴파일시 타입을 강하게 체크해서 미리 에러가 일어나는 것을 방지해 준다.또 타입변환을 꼭 해야 하는 상황일 때, 제네릭을 사용하면 타입변환을 해주지 않아도 된다.위 코드는 제네릭을 사용하는 방식을 보여준다.선언을 할 때, 클래스나 인터페이스 이름 뒤에 부호를 붙인다. 안에는 타입 파라미터가 위치한다. 안에 타입 파라미터는 일반적으로 알파벳 대문자 한 글자로 쓴다.개발 코드에서는 타입 파라미터 자리에 구체적인 타입을 지정해야 한다.제네릭 타입은 두 개 이상의 멀티 타입 파라미터를 사용할 수 있는데, 이 경우 각 타입 파라미터를 콤마로 구분한다.제네릭 메소드는 매개타입과 리턴타입으로 타입 파라미터를 갖는 메소드를 말한다.제네릭 메소드를 선언하는 방.. 더보기 스레드풀(ThreadPool)에서execute()와 submit()의 차이 병렬작업 처리가 많아지면, 스레드 갯수가 증가하게 되면서 CPU가 바빠져서 메모리 사용량이 증가한다. 이것은 곧 애플리케이션 성능 저하로 이어지게 된다. 갑작스런 병렬 작업의 증가로 인한 스레드폭증을 막기 위해, 스레드풀(ThreadPool)을 사용한다. 스레드풀은 작업처리에 사용되는 스레드의 숫자를 정해 놓고 작업 큐(Queue)에 들어오는 작업들을 하나씩 맡아 처리하는 것을 말한다. 즉, 스레드 갯수를 정해놓고 늘리지 않으면서 작업처리가 끝난 스레드가 다시 작업 큐에서 새로운 작업을 가져와 처리하는 식이다. 그러므로 작업요청이 늘더라도 스레드의 전체 갯수가 늘어나지 않아, 애플리케이션의 성능이 급격히 저하되는 것을 막아준다. 자바는 스레드풀(ThreadPool)을 위해서 java,util.concur.. 더보기 스레드(Thread) 상태를 재어하는 메소드(Method)들 스레드는 공유객체를 함께 사용하는 만큼, 원할하게 작동시키기 위한 다양한 실행 메소드(Method)들이 존재한다.다른 객체가 공유객체를 사용하는 동안 일시정지해 있거나 대기상태에 있어야 할 때도 있다.스레드가 잘 작동하도록 하기 위해서는 다양한 제어방법을 잘 알고 활용할 줄 알아야 할 것이다. 이에 앞서 '스레드 상태'(state)를 먼저 이해할 필요가 있다.스레드 상태에는 객체생성, 실행대기, 일시정지, 종료가 있다.1) 객체생성(열거상수 NEW): 스레드 객체가 생성, 아직 Start() 메소드가 호출되지 않은 상태2) 실행대기(RUNNABLE): 실행상태로 언제든지 갈 수 있는 상태3) 일시정지(WAITING): 다른 스레드가 통지할 때까지 기다리는 상태, (TIMED_WAITING): 주어진 시간.. 더보기 스레드(Thread)에서 동기화(Synchronized) 메소드와 동기화 블럭 멀티스레드작업을 실행하는 데 있어서 한 스레드가 작업을 하는 동안 다른 스레드가 변경할 수 없도록, 스레드 작업이 끝날 때까지 객체에 잠금을 걸어서 다른 사용할 수 없도록 하는 것이 필요하다. 이렇게 멀티스레드 프로그램에서 단 하나의 스레드만 실행할 수 있는 코드 영역을 임계영역(critical section)이라고 한다.Java에서는 임계영역을 지정하기 위해 '동기화(Synchronized) 메소드'와 '동기화 블럭'을 사용한다.이들이 선언되면, 객체에 잠금을 걸어서 다른 스레드가 임계영역 코드를 실행하지 못하도록 한다.먼저, 동기화가 선언되지 않았을 때의 멀티스레드 작업을 살표보자.먼저, 스레드 두 개를 사용할 때 각각 2초의 일시 정지 상태를 가진 뒤, 다시 작업을 실행해 그 메모리값을 출력하는 클.. 더보기 이전 1 ··· 3 4 5 6 7 8 9 다음