java

정의 직렬화란 java code처럼 사람이 읽기 좋은 형태인 코드를 바이트 코드로 바꾸는 것을 의미합니다. 직렬화 방법 데이터를 전송할 때, java code로 만들어진 데이터를 다른 컴퓨터로 보낸다고 가정하겠습니다. 이런 데이터는 다른 컴퓨터에 도착합니다. 하지만 모든 PC의 OS는 서로 다른 가상 메모리를 가집니다. 따라서 값을 바로 저장하는 Primitive 타입이 아닌 Reference 타입은 Serializable 인터페이스로 구현을 해야합니다. 이렇게 만든 바이트 코드는 데이터베이스나 파일과 같은 외부 저장소에 저장하고 다른 컴퓨터에 도착하게 되면 그 데이터를 역직렬화를 통해 자바 객체로 반환해서 JVM 메모리에 적재하게 됩니다. 효율적인 직렬화란? 하지만 이러한 직렬화에도 역사적인 문제점이 ..
개요가비지 컬렉션(Garbage Collection)은 프로그래밍에서 메모리 관리를 위한 개념입니다. 이는 JVM에서 사용되는 JRE 중에 하나입니다. 프로그램 실행 과정에서 사용하는 메모리 영역 중에서더 이상 사용되지 않는 메모리를 자동으로 찾아내고 해제하는 프로세스를 의미합니다. C언어를 사용하면 malloc() 으로 메모리를 할당하고  free() 함수를 통해 해제하지만Java나 Kotlin의 경우 개발자가 메모리를 직접 해제해주는 일이 없습니다.그 이유는 가비지 컬렉터가 불필요한 메모리를 알아서 정리해주기 때문입니다. 이를 GC(Garbage Collection)라고 부릅니다. Person person = new Person();person.setName("Me");person = null;// ..
스프링 부트의 꽃은 DI라고 합니다. DI가 무엇이길래? DI는 의존성 주입입니다. 의존성을 주입을 하는 이유가 뭘까요? public class BugService { public void bountLeg() { BugRepository bug = new Fly(); bug.legCount(); } } // BugService가 Fly class에 의존된다. 위 처럼 new를 통해 직접 객체를 생성하면 의존되어 버린다는 문제점이 있습니다. 따라서 다른 객체를 사용하고 싶어도 코드를 수정하기 전까지 사용할 수 없다는 문제가 생깁니다. 따라서 객체의 밖에서 객체를 넣어주는 방법을 사용하는데 이를 의존성 주입이라고 합니다. public class BugService { private final BugRepos..
제네릭스 자바 코드를 보다보면 안에 들어가 있는 형태를 볼 때가 있습니다. 이게 뭐지..? 라고 할수도 있지만 효율성을 높여준다는 말을 듣고 진지하게 임하게 되었습니다!! 제네릭스의 정의는 매개변수화된 자료형을 의미합니다. 클래스, 인터페이스, 메서드에 사용될 수 있습니다. 쉽게 풀어보면, 자료형에 타입을 지정할 수 있다는 것입니다. public static void main(String[] args) { ArrayList numbers = new ArrayList(); number.add(10); number.add(20); number.add("30"); // comfile error 정수형만 들어가야되는데 문자형이기 때문 } 또한, 중복되는 메소드를 하나만 만들어도 공통으로 사용할 수 있습니다. p..
시이지
'java' 태그의 글 목록 (3 Page)
상단으로