본문 바로가기

Java (국비)86

스레드 (Thread) 간단 정리 Thread : 메모리를 할당받은 프로세스에서 실질적인 작업을 수행하는 주체. Process : "실행중인 프로그램" 을 의미. Thread의 특징 : "독립적"으로 일을 수행. (스레드 객체들은 독립적으로 일을 수행 하고 있음을 이해 해야 한다) => A 객체가 있고, B 객체가 있으면, A 객체가 끝나고 B 객체가 실행되는게 아니라 ! A 객체를 실행시키고 곧바로 B 객체도 실행을 동시에 진행 ! 프로세스가 실행되는 방식 : 1. 선점형 방식 우선순위 순서대로 자원(메모리)을 할당 받아 진행되는 방식. 단점 - 기아현상이 발생될 가능성이 있음. 기아현상 - 자원을 할당받지 못함을 의미한다. why ? - 우선 순위에서 계속 계속 밀려버리면 실행이 안되기 때문이다. 2. 시간분할 방식 시간을 동일하게 .. 2023. 5. 22.
예외처리 문제 요구 조건 : 정상적인 입력을 3번 할 때 까지 계속 반복. 이클립스 에서 구현 1. 예외가 발생할것 같은 여지가 있는 것을 try 문에 넣고 정수를 제대로 입력받으면 cnt++; 2. 그렇지 않으면, 출력문을 출력하고, 3. cnt가 3보다 작을때 까지 while문을 반복 한다. 4. 종료조건은 cnt 가 3이되면 while문을 탈출 한다. 주의할점 : 버퍼에 남아있는 값을 제거하지 않으면, 다음과 같이 문제가 발생 한다. 2023. 5. 20.
배열리스트 문제 2 이클립스에서 구현 1. 문제에서 정수를 3개까지 받겠다고 했으니, 절대 변하지 않는 상수로 처리해서 final int CNT = 3; size() : 컬렉션프레임워크 타입들의 길이에 대해 알고 싶을때 사용. 2. 정수 말고 그외의 것들도 입력 받을 수 있어서, 입력을 총 몇번 받을지 모르니까 while. 3. 정수를 입력받으면 문제되는게 없으니, data.add(num) 이 되고, 4. 그렇지 않으면, catch 문으로 들어가서 출력문이 나오고, continue; 된다. 주의할점 : data.size() 2023. 5. 20.
배열리스트 문제 1. 중복을 제외한다는 조건이 없기 때문에 ArrayList 클래스를 사용해서 배열리스트를 만들기 2.스캐너를 사용해서 0을 입력받으면 종료되는 프로그램 3.정수만 들어가기 때문에 을 사용 해서 강제성을 부여하기. 4. 입력을 몇번할지 모르니까 while(true), 종료 조건은 0번 입력받았을 때 5. data.add(입력받은값) 해서 배열리스트에 값을 저장 6. 만약 프로그램이 종료되면 ? 종료되기전까지 입력한 정수들의 평균을 출력 평균 : 입력한 정수들의 총합 / 입력한 정수의 개수 그리고, 내가 입력한 정수 중에서 짝수가 몇개인지를 출력 만약 내가 입력한 정수를 2로 나눴을때 나머지가 0이야? ok 그러면 그 ok된 짝수들의 개수를 출력 짝수는 __개 입니다. 그리고, 그 짝수가 뭔지를 출력. [.. 2023. 5. 20.
예외와 예외처리 그동안, 예외를 만난 경험이 있다. => 원인을 분석 하고, 해결방안을 찾고 해결 했다. 코딩 자체에는 문제가 없지만 (문법에 이상이 없거나 등) "실행시" 발생하는 문제 == "예외" 라고 한다. 예외 처리를 하면 좋은점 : 1. 프로그램이 비정상적으로 종료되는것을 막을 수 있다. 2. 예외가 발생되면서 커질 수 있는 피해들을 최소화 하는것이 목표 ! 사용방법 : try { 실행시 예외가 발생할수도 있는 코드 예외가 발생되면, "즉시" catch문으로 이동. } catch (예외클래스 e) { 해당 예외클래스의 문제가 발생되면 이곳의 코드를 수행 } finally { 예외 발생 여부와 무관하게 항상 수행되는 코드. 통신을 위해 확보해둔 모든 연결스트림을 해제 한다. } 예시) 1. int형 타입의 배열.. 2023. 5. 19.
에러 메모 23.05.19 23.05.20 2023. 5. 19.
컬렉션 프레임워크 (집합 (Set)) "데이터 묶음" (== "컬렉션") Set (집합) 1. Set은 추상클래스라 객체 생성이 불가능 하다. 2. Set류의 조상 클래스 이다. 특징 : 1. 순서가 없다. (index 개념이 없다) 2. 중복 허용이 불가능 하다. 3. 배열리스트와 마찬가지로 다양한 자료형 저장이 가능하지만, => 반드시, 서로 같은 자료형만 취급 한다. 4. 제네릭 을 사용해 집합에 저장될 타입을 강제화 한다. Set data = new Set(); => 에러 발생 추상 클래스라 객체 생성 불가능. Set 추상클래스의 자손클래스로, HashSet 이라는 클래스가 있다. 사용예시 : 1. 집합에 숫자 10을 넣어 준다. 2. 숫자 10은 총 3개 3. String 타입의 "apple"은 int 타입으로 제너릭 해줬기 때문에.. 2023. 5. 19.
컬렉션 프레임워크 (배열리스트 (ArrayList)) "데이터 묶음" (== "컬렉션") ArrayList (배열리스트) == 향상된 배열 ArrayList 참조변수 = new ArrayList(); 로 사용이 가능 하다. 특징 : 1. 데이터를 마음대로 저장 가능. (괄호안에 숫자를 넣어 공간의 크기를 설정할 수 있다) 2. toString()이 오버라이딩 되어있다. 3. add(), remove(), clear(), size(), get(), ... 과 같은 다양한 기능의 메서드를 기본 제공 한다. 4. 서로 다른 자료형(타입) 들도 저장은 가능하지만, => 반드시, 서로 같은 자료형만 취급 한다. => 이는 "강제성"을 부여한다고 볼 수 있다. 5. 이때, 제네릭 을 사용해 배열리스트에 저장될 타입을 강제화 한다. ArrayList 참조변수 == ne.. 2023. 5. 18.
컬렉션 프레임워크 "프레임워크" 컬렉션, Spring, JPA, Mybatis, ... 등이 있다. "프레임워크" 란? 말그대로, 틀, 골격, 뼈대, ... 를 의미 한다. 즉, 이 틀로 써야 해 라고 "강제성"을 부여 하는것이다. ex) 리모컨 모든 리모컨 제품을 판매할 때는 "규격"이 맞아야 한다. 마찬가지로 코드도 코드의 "기준"이 필요하다. 이런 기준점을 잡아주는 역할을 하는것이 "프레임워크" 이다. Q. "프레임워크" 를 사용했을 때 좋은점 ? A. 1. 코드에 기준을 부여하여, 개발자들의 평균실력이 향상 된다. 즉, 내가 어떻게 짤지 몰라도 틀이 있으니까 짤 수 있게 된다는 말로도 볼 수 있다. 2. 틀이 있기 때문에 유지보수에 용이하다. (다른 사람이 알아보기 쉬운 코드) "데이터 묶음" (== "컬렉션") .. 2023. 5. 18.