분류 전체보기
-
0724TIL 2024. 7. 24. 23:15
제네릭 메서드메서드를 호출하는 시점에 타입 인자를 전달해서 타입을 지정하는 것. 따라서 타입을 지정하면서 메서드를 호출 제네릭 타입은 static 메서드에서 사용 할 수 없다제네릭 타입은 객체 생성 시 그 타입이 결정된다. static 메소드는 함수 프로그램 시작 시 만들어 진다.(인스턴스 단위가 아니라 클래스 단위이다). 즉, 타입이 정해지기 전에 만들어져야 하므로 사용 할 수 없다. 해결 방법은?제네릭 메서드를 사용한다. 제네릭 타입과 제네릭 메서드의 우선순위-> 제네릭 메서드가 우선순위를 가짐 왜?제네릭 타입은 클래스 레벨에서 걸림제네릭 메서드는 메서드 단위제네릭 메서드가 타입 매개변수와 위치가 더 가까움 -> 우선순위를 가짐 SET정의 : 세트(셋)은 유일한 요소들의 컬렉션. 특징1) 유일성: 중..
-
0723TIL 2024. 7. 24. 00:12
제네릭이란제네릭이라는 단어는 일반적인, 범용적인이라는 영어 단어 뜻이다. 풀어보면 특정 타입에 속한 것이 아니라 일반적으로, 범용적으로 사용할 수 있다는 뜻이다. 제네릭 왜 씀?객체의 명만 다르고 내부 동작이 거의 비슷한 두개의 클래스가 있다고 생각해보자. 개와 고양이는 울음소리가 다를 뿐 운다, 달린다, 먹는다 등의 공통 기능을 가지고 있다. 클래스 마다 메소드를 정의하면 중복되는 코드가 많이 발생하여 비효율 적일 것이다.이를 해결하기 위해 다형성을 활용해보자개와 고양이의 부모인 동물 클래스를 만들고 이를 상속받도록 하자. 이제 부모 클래스에 공통 메소드를 정의하면 코드의 중복은 해결되지만 안정성의 문제가 발생한다. 이를 모두 해결하기 위해 등장한 것이 제네릭이다. 매개변수와 인자매개변수는 메소드 뒤에..
-
0722TIL 2024. 7. 23. 01:39
데몬 스레드와 사용자 스레드사용자 스레드 : 우선순위가 높은 스레드로. main() 이 해당. main에서 호출한 스레드도 모두 사용자 스레드이다. 상속에 의해서. 이 사용자 스레드 들이 모두 종료되면 JVM이 종료되며 프로그램이 끝난다. 데몬 스레드 : 우선수위가 낮은 스레드로 보조 스레드 개념. 가비지 컬렉터가 대표적 예시. 사용자 스레드와 달리 JVM이 실행이 끝날때까지 기다려주지 않는다. 사용자 스레드가 끝나면 함께 종료 왜 사용하나?프로그램 실행 중 비교적 중요도가 떨어지는 프로그램을 실행하기 위해서. 백그라운드에서 실행되며 주 스레드가 종료 될 때 자동으로 종료되기 때문에 사용자가 직접 관리하지 않아도 된다. 자동저장, 가비지 컬렉션, 사용자 모니터링이 이에 해당한다. runnable vs t..
-
thread unsafe카테고리 없음 2024. 7. 16. 22:55
thread unsafe 가 무엇?동기화가 되어있지 않는 환경. 동기화는 멀티 쓰레드 환경에서 일어난다. 멀티 쓰레드란?다수의 쓰레드가 동시 실행되는 환경을 의미한다. 멀티 쓰레드 환경에서는 병렬로 처리가 진행되기 때문에, 쓰레드간 자원에 동시 접근하여 삽입, 삭제와 같은 연산을 수행 할 경우 개발자의 의도와는 다른 결과가 도출 될 수 있다. 이러한 문제를 예방하는 것이 synchronized 키워드 이다. 메서드 앞에 synchronized 키워드를 삽입하면, 동기화 처리가 되어 동시 접근을 방지해준다. 동기화란?서로가 알고 있는 것을 일치시키는 것이다. 컴퓨터의 영역에서는 데이터를 일치시키는 것을 의미한다. 이를 위해서는 프로세스의 순차적 작업이 이루어져야 한다. thread unsafe 대표..
-
불변객체카테고리 없음 2024. 7. 16. 22:32
불변객체란?불변객체란 상태값을 수정할 수 없는 객체를 의미한다.즉, 객체를 처음 생성(초기화) 후에는 객체가 가지는 상태를 변경할 수 없는 것을 의미한다.불변객체를 만드는 방법1) 캡슐화를 통해 내부 변수 접근 불가public class Immutable { String address = "대한민국 서울시"; String gender = "female"; String identityNumber = "9706192034623"; public String getAddress() { return address; } public String getGender() { return gender; } public String getIdentityNu..
-
IEEE754카테고리 없음 2024. 7. 12. 01:32
IEEE754 란?IEEE 754는 IEEE에서 개발한 컴퓨터에서 부동소수점을 표현하는 가장 널리 쓰이는 표준이다. 실수와 메모리컴퓨터는 2진수를 기반으로 정보를 저장한다. 실수 또한 이진수를 기반으로 저장되어져야하며, 컴퓨터에서 실수를 표현하는 방식으로는고정소수점과 부동소수점 방식이 있다. 고정소수점 -> 부동소수점 방식이 나온 이유이기도 함고정소수점 방식이란 메모리를 정수부와 소수부로 나누고 고정하여 처리하는 방식이다. 다음과 같이 32bit 체계에서 고정소수점 방식은 1bit 부호비트, 15 bit 정수부, 16 bit 소수부로 나뉘어 진다. 이 방식은 직관적이라서 알아보기 편하다는 장점이 있지만, 1) 수의 표현범위가 작다 2) 메모리 낭비가 발생 할 수 있다는 치명적인 단점을 가지고 있다. 부..
-
JVM카테고리 없음 2024. 7. 12. 01:32
JVM 이란?Java Virtual Machine의 줄임말로 다른 프로그램을 실행시키는 것이 목적인 프로그램이다. JAVA는 OS에 독립적이라는 특징을 가지고 있다. 추가적인 절차 없이 어느 운영체제에서나 동작한다는 말이다. 이것을 가능하게 해주는 것이 바로 JVM 이다.즉, JVM은 OS에 종속받지 않고 CPU가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터이다.주의해야 할 점은, JVM은 OS에 종속적이라는 것이다. JVM도 OS에 종속적이라는데 왜 JAVA는 생산성이 좋은 언어일까?사용자의 입장에서 보면 다른 언어(C/C++)을 사용하는 것과 차이가 없이 느껴질 수 있다. 언어별 컴파일러를 설치하는 것이나 JVM을 설치하는 것 모두 운영체제에 맞춰 설치하는 것이기 때문이다.하지만, 개발자의 관..
-
변수와 자료형카테고리 없음 2024. 6. 30. 19:33
변수란?프로그래밍을 할 때, 내용을 담아둘 저장공간이 필요하다. 이때, 데이터를 저장하는 저장공간을 변수라고 한다. 변수는 왜 필요할까?마트에서 10% 할인 과일들을 20%로 할인률을 높여 판매한다고 가정해보자.변수가 없다면 다음과 같이 모든 항목을 일일히 수정해야 한다.package Variable;public class variableMain { public static void main(String[] args) { // 할인률 10% System.out.println("apple:" + (1000 * 0.1)); System.out.println("pineApple:" + (5600 * 0.1)); System.out.println("melo..