JAVA

JAVA

HashTable과 HashMap

HashTable 키(Key)와 값(Value)쌍의 데이터 구조 Key와 Value에 Null을 허용하지 않음 동기화 보장 Thread-safe하기 때문에, 멀티 쓰레드 환경에서 사용 가능 get(), put(), remove() 등에 synchronized키워드가 붙어 있음 해당 키워드들은 메소드 호출 전, 쓰레드 간 동기화 락 쓰레드간 동기화 락은 매우 느린 동작이라는 단점 존재 public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializable { ... public synchronized V put(K key, V value) { if (value == null) { throw new NullPointer..

JAVA

Spring 의존성 주입 방법

DI, IoC IoC 제어의 역전(개발자 → 컴퓨터) 프레임워크 정의 : 프로그램 실행 제어권이 개발자에게 있냐, 컴퓨터에게 있냐. 컴퓨터에게 있으니까 스프링은 IoC DI Dependency Injection 의존성 주입 new 를 스프링이 해준다. 스프링에서는 3가지 의존성 주입 방식을 지원함 Field 주입 Setter 주입 Constructor 주입 Field 주입 Field 주입은 클래스의 Field 에 Autowired 어노테이션을 붙여서 주입하는 방식을 말함 @Controller public class LogController { @Autowired private LogService logService; @Autowired private RestTemplateUtils restTemplate..

JAVA

Spring의 WebSocket

WebSocket 기존 단방향 HTTP 프로토콜과 호환되어 양방향 통신을 제공하기 위해 개발된 프로토콜 TCP/IP 레이어(4계층)를 사용하는 Socket과 달리 HTTP 레이어(7계층)에서 동작 80 포트를 사용하므로 방화벽에 제약이 없으며 WebSocket이라고 불림 HTTP 프로토콜을 사용하여 연결을 한 뒤, 자체적인 WebSocket 프로토콜을 활용하여 통신 진행 실시간 양방향 통신을 위해 사용 HTTP와 WebSocket의 차이 출처 : https://kbj96.tistory.com/46 HTTP는 Response 이전에 Request가 반드시 존재해야 함 하지만 이럴 경우, 채팅과 같은 경우에는 서버에 주기적으로 Request를 전송하여 메시지가 왔는지 확인해야 함 → 매우 비효율적 WebSo..

JAVA

자바의 Collection

java.util 패키지 다수의 데이터를 쉽게 처리하는 방법 제공 → DB처럼 CRUD 중요 List 특징 순서가 있는 데이터의 집합 순서가 있으므로 데이터의 중복을 허락 주요 메서드 List friends = new ArrayList(); public void createTest(){ friends.add("홍길동"); friends.add("홍길동"); friends.add("장길산"); friends.add("임꺽정"); friends.add(0,"이몽룡"); //끼워넣기 } 배열과 ArrayList 배열의 장점 가장 기본적인 형태의 자료 구조로 간단하며 사용이 쉬움 접근 속도가 빠름 배열의 단점 크기를 변경할 수 없어 추가 데이터를 위해 배열을 만들고 복사해야 함 비 순차적 데이터의 추가, 삭제에..

JAVA

자바의 추상 클래스

추상클래스(Abstract class) 미완성 클래스 다른 클래스에서 사용하기 위한 보조 클래스 //추상 메서드는 아래와 같이 선언만 되어있고 구현부가 없는 메서드, //반드시 구현이 이루어져야 하기 때문에 private은 불가 public abstract class 클래스명() // 추상 클래스는 아래와 같이 클래스 앞에 abstract가 붙음 abstract class 클래스이름 { ... ... } 추상클래스의 특징 기본 클래스의 특징을 모두 가지고 있음 상태를 가질 수 있다. 직접 객체 생성 불가 간접적으로만 가능 → 자식 클래스에 의해서 추상메서드를 포함할 수 있다. 추상 클래스는 항상 추상 메서드를 포함할 필요는 없음 하지만 추상 메소드를 하나라도 가지는 클래스는 반드시 추상 클래스가 되어야 ..

JAVA

String 클래스의 메서드

String의 메서드 10가지 리턴 타입 메소드 이름(매개 변수) 설명 char charAt(int index) 특정 위치의 문자를 리턴합니다. boolean equals(Object anObject) 두 문자열을 비교합니다. byte[] getBytes() byte[]로 리턴합니다. byte[] getBytes(Charset charset) 주어진 문자셋으로 인코딩한 byte[]로 리턴합니다. int indexOf(String str) 문자열 내에서 주어진 문자열의 위치를 리턴합니다. int length() 총 문자의 수를 리턴합니다. String replace(CharSequence target, CharSequence replacement) target 부분을 replacement로 대치한 새로운 ..

JAVA

자바 String 리터럴과 객체 생성의 차이

String str ="i"와 String str = new String("i")가 동일할까? 결론부터 말하자면, 다르다. 첫 번째로 표기한 str과 두 번째로 표기한 str 변수는 동일한 문자열 값을 갖게 되지만 완전히 동일하지는 않음 첫 번째 방식은 리터럴 표기 객체 생성 없이 고정된 값을 그대로 대입 “i” 라는 문자열을 JVM의 String pool이라는 메모리 공간에 저장 다시 동일한 문자열이 선언 될 경우, 미리 캐시된 문자열을 리턴 두 번째 방식은 객체 생성 방식 new 키워드를 활용한 객체를 생성하는 방식 매번 새로운 객체가 Heap 메모리 영역에 생성 💡 String Pool은 문자열 리터럴을 저장하고 재사용하기 위한 메모리 영역으로서, JVM의 일부인 메모리 내부에 위치하며, 동일한 문..

JAVA

Java의 데이터 타입

Java에서 데이터 타입은 크게 2가지(기본 타입, 참조 타입)로 분류 출처 : http://wiki.hash.kr/index.php/자료형 기본 타입(Primitive Type) 정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입 정수 타입(byte, short, int, long) 실수 타입(float, double) 논리 타입(boolean) 문자타입(char) 출처 : https://dudri63.github.io/2019/02/13/java3/ 기본 자료형은 반드시 사용하기 전에 선언 해야 함 OS에 따라 자료형의 길이가 변하지 않음 객체가 아니기 때문에 null을 가질 수 없음 참조 타입(Reference Type) 객체의 주소를 저장하는 변수. 즉 값이 아닌 인스턴스에 대한 주소값을 저장..

D_Helloper
'JAVA' 카테고리의 글 목록