TIL(Today I Learned)
-
Vector vs ArrayListTIL(Today I Learned) 2022. 10. 3. 21:29
Vector 특징? List 인터페이스를 구현한 클래스 객체들을 삽입, 삭제, 검색할 수 있다. 배열의 길이 제한 단점을 극복 아이템을 맨 마지막이나 중간에 삽입 가능 add()로 요소 추가 get()으로 요소 검색 다양한 타입의 객체 삽입 가능(Integer, String, ..) 요소들은 인덱스로 관리 스레드 안전(Thread Safe) 객체들이 많아지면 크기 자동 증가(100% 증가) 동기화, 한번에 하나의 스레드만 작업 단일스레드일 경우 비효율적 ArrayList 특징? Vector의 기능과 거의 모든게 동일 단, ArrayList는 동시에 여러 스레드를 작업 가능 Vector보다 속도가 빠름(20~30%) 멀티스레드로 구현할 시 개발자가 명시적으로 동기화 코드를 추가해야함 Vector vs Ar..
-
try/catch/finallyTIL(Today I Learned) 2022. 10. 2. 21:00
try/catch란? try/catch는 주로 예외 처리를 할 때 사용합니다. 일반 예외와 실행 예외가 있습니다. 프로그램이 예기치 못한 에러로 종료되는 것을 사전에 방지하기 위해 사용합니다. 일반 예외란? 자바 컴파일러는 소스 파일을 컴파일할 때 일반 예외가 발생할 가능성이 있는 코드를 발견하면 컴파올 오류를 발생시켜 개발자로 하여금 '강제적'으로 예외 처리 코드를 작성하라고 요구합니다. 예시 코드 public class NormalException{ public static void main(String[] args){ try{ Class clazz = Class.forName("java.lang.String2"); }catch(ClassNotFoundException e){ e.printStackT..
-
HTTP MethodTIL(Today I Learned) 2022. 9. 30. 21:40
GET이란? - url에 쿼리스트링이 남습니다. - 불필요한 요청 처리를 방지하기 위해 캐시를 사용합니다. - 보안에 취약합니다. - 보낼 수 있는 값의 길이가 제한적입니다. - 브라우저 히스토리에 남습니다. - HTTP Body에 데이터를 전송하지 않습니다. 캐시란? - 브라우저에 데이터를 저장하는 방식입니다. - 데이터의 변동이 거의 없어 서버에 자주 요청할 필요가 없는 정적 페이지를 브라우저 캐시에 담아 두어 서버에 요청하지 않도록 하는 방식입니다. - 정적페이지에 변동이 있어 재요청이 필요할 시에는 google에 개발자 도구 캐시 삭제를 참조하십쇼 - Http cache-control에서 옵션 설정이 가능합니다. Post란? - 리소스를 생성/변경 하기 위해 사용합니다. - HTTP Body에 데..
-
추상화(Abstract)TIL(Today I Learned) 2022. 9. 28. 18:23
추상화란? 추상화(Abstract)란 클래스들의 중요하고 공통된 성질들을 추출하여 슈퍼클래스로 만든 것입니다. 추상화의 원칙 추상화 방식으로 메서드를 만들 땐 메서드의 기능을 쉽고 분명하게 이해할 수 있는 메서드명을 짓습니다. 하나의 메서드는 완전한 하나의 기능만을 갖습니다. 메서드의 코드 길이를 최대한 짧고 간결하게 작성합니다. 추상화 사용 이유 추상화를 사용했을 시 다음과 같은 장점이 있습니다. - 코드의 가독성, 간결성, 유지보수성(코드를 짧고 간결하게 작성하고, 추상화 클래스로 메서드를 관리하기 때문) - 코드의 재사용성(같은 기능을 하는 메소드를 여러 클래스에서 사용할 수 있기 때문) - 중복코드 감소(여러 클래스에서 공통으로 사용되는 메서드를 슈퍼클래스에 작성하고 하위 클래스에선 가져와 사용만..
-
모듈/모듈화TIL(Today I Learned) 2022. 9. 27. 18:51
모듈화란 해결하기 어려운 큰 문제를 다루기 위해 쉬운 작은 문제로 나누는 과정입니다. 모듈이란 각 모듈은 논리적 또는 기능적으로 본체로부터 분리된 독립된 실체입니다. (모듈이 독립적인 기능을 가지고 있다는 의미입니다.) 컴퓨터 부품을 예로 들 수 있을 것 같습니다. 컴퓨터는 CPU, SSD, 그래픽 카드..등 독립적인 기능을 하는 부품들의 조합으로 기능합니다. 여기서 컴퓨터 부품들을 모듈이라고 볼 수 있습니다. 모듈화의 장점 (모듈화들이 부품으로 사용되기 위해선 모듈끼리의 호환성을 고려해야 합니다. 따라서 표준화가 중요합니다.) 1. 수정이 용이.(서로 독립된 실체기 때문에) 2. 재사용성이 용이.(표준화 되어 있기 때문에) 3. 유지관리가 쉬움.(큰 기능(애플리케이션)을 작은 기능 단위로 나누어 관리하..
-
자바 컴파일 흐름TIL(Today I Learned) 2022. 9. 26. 21:01
컴파일 흐름 소스코드(.java) -> 자바컴파일러 -> 바이트코드(.class) -> JVM(JIT 또는 인터프리터) -> 기계어 -> 하드웨어 및 OS JIT란? JIT(Just In Time) 컴파일은 JIT(Just In Time) 컴파일은 프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일 기법입니다. JIT는 인터프리터 방식과 정적 컴파일 방식을 혼합한 방식입니다. 바이트 코드(.class) 전체를 컴파일하여 바이너리 코드(컴퓨터가 인식할 수 있는 0과 1로 구성된 이진코드)로 변환하고 그 이후에는 해당 메서드를 더이상 인터프리팅 하지 않고 바이너리 코드로 직접 실행하는 방식입니다. JIT 방식을 사용하게 되면 반복적으로 사용하는 파일의 컴파일 속도는 빠르지만, 처음 컴파일 하는 파일의 ..
-
오버로딩/오버라이딩TIL(Today I Learned) 2022. 9. 26. 20:55
오버로딩(Overloading)이란? 서로 같은 이름의 메서드이면서 매개변수의 타입과 개수가 반드시 다르도록 하는 방식입니다. 오버로딩의 사용 이유 동일한 기능을 하는 메서드를 하나의 이름으로 관리할 수 있다는 장점이 있습니다. 대표적인 예로 println()이 있습니다. println()은 출력이라는 기능을 하지만 반환형이 String일 때, int일 때, Object일 때와 같이 매개변수가 다양하게 선언될 수 있기 때문에 오버로딩에 적합한 예입니다. 생성자 오버로딩(기본 생성자)이란? 클래스를 생성하면 자동으로 기본 생성자를 만들어줍니다. 이때 오버로딩의 특성을 이용해서 기본 생성자에 매개변수를 추가해줄 수 있습니다. (만약 매개변수가 있는 생성자 메서드가 존재한다면 기본 생성자를 자동으로 만들어주지..
-
다형성(Polymorphism)TIL(Today I Learned) 2022. 9. 26. 20:45
다형성이란? 다형성은 하나의 타입에 여러 객체를 대입할 수 있는 성질입니다. 다형성을 활용하면 기능을 확장하거나, 객체를 변경해야할 때 타입 변경 없이 객체 주입만으로 수정이 일어나게 할 수 있습니다. 또한 상속을 사용한다면 중복되는 코드까지 제거할 수 있으므로 더욱 객체 지향 설계와 가까워질 수 있습니다. 자바에서 다형성을 지원하는 방법으로 메서드 오버로딩과 오버라이딩이 있습니다. 다형성의 쉬운 예시로 동물을 들겠습니다. 거의 대부분의 동물들의 특징은 달리거나 걷거나 잠을 잡니다. 그리고 동물들의 종류는 다양합니다. 원숭이, 강아지, 기린, 코뿔소..등 동물이라는 하나의 타입에 원숭이, 강아지, 기린, 코뿔소와 같은 여러 객체를 대입할 수 있고 공통된 기능(걷기, 자기, 뛰기..등)을 오버라이딩 하여 ..