programming language/Java 29

static / final / static final이란?

어찌보면 쌩 기초이지만 생각나는대로 기초를 다시 다잡고 가려고 한다. static 혹은 final도 굉장히 많이 보는 친구들이지만(너같은 친구 난 없어) 정말 간단히 알아보려 한다. 1. Static (정적)이란? 정적 : 고정된이란 의미 이 키워드를 사용하여 static 변수, static 메소드를 만들 수 있다. 정적 필드와 정적 메소드는 객체에 소속된 멤버가 아니라 클래스에 고정된 멤버로, 클래스 로더가 클래스를 로딩해서 메소드 메모리 영역에 적재시 클래스별로 관리된다. 따라서, 클래스 로딩이 끝나는 즉시 사용이 가능하다. 필드나 메소드를 객체마다 다르게 가져야 한다면 인스턴스로 생성하면 되고 공용 데이터에 해당하거나 인스턴스 필드를 포함하지 않는 메소드를 선언하고자 할 때 이용한다. 출처 http..

어노테이션(annotation)이란?

평소 어노테이션을 많이 사용하지만 이에 대해 무엇이라고 설명할 수 없는 자신을 가르치기(?) 위해 이 글을 정리한다. 다음 정리할 내용을 사이트와 함께 java의 정석도 참고했다. 출처 : https://www.geeksforgeeks.org/annotations-in-java/ 1. 어노테이션이란? 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것 - java의 정석 발췌 - 어노테이션은 @로 시작한다. 어노테이션은 컴파일된 프로그램의 행동을 바꾸지 않는다. 어노테이션은 프로그램 elements와 메타데이터를 어울리도록 돕는다. 즉, 인스턴스 변수, 생성자, 메소드, 클래스 등등 어노테이션은 한 프로그램이 컴파일러에 의해 다뤄지는 방식을 바꿀 수 있기에 순수한 주석..

리플렉션(Reflection)과 jdk 동적 프록시(dynamic proxy)

1. 프록시란? 프록시(Proxy)는 '대리'라는 의미다. 다른 개발자분들 께서 이미 잘 정리를 해주셨다. (참고하려면 여기 클릭) 그리고 이 프록시를 사용하는 프록시 패턴에 대해서 전에 학습했다. 뒤에 올 내용도 이것을 바탕으로 추가를 할 예정이다. (프록시 패턴 바로가기) 2. 프록시의 단점? 전에 프록시 패턴의 구조를 한 번 다시 보고 가겠다. 현재 특정 객체에 대한 접근을 제어하거나 기능을 추가하고 있다. 별 거 없어 보이지만 RealSubject가 Subject를 구현하는데 이것을 FirstProxyCache에서 캐싱 처리를 하고 있는 것이다. 만약 FirstProxyCache의 기능이 맘에 안들어서 다른 class를 통해 proxy기능을 구현하려고 한다면 어떻게 해야 할 까? 그러면 새롭게 c..

제네릭 이해하기

사실 제네릭은 어렴풋이 대~강 사용하는 법을 알고있지만, 무언가 내가 직접 어떤것을 만들고 적용하려면 그렇게 바로 할 수 있지는 않았다. 이번에 제대로 제네릭에 대해서 이해하도록 하고, 실제로 어떻게 쓰이는지도 알아볼 것이다. 참고 서적은 Java의 정석이다. 1. Generic란? 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능이다. => 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다. 2. 제네릭 예시 1 Person.java => 일반 class package com.example.generic; public class Person { Object pocket; public Object getPocket..

interface vs abtract class

공부를 하는 와중에 추상클래스를 사용할 일이 있었는데 인터페이스와 추상클래스의 차이점을 이야기하라고 하면 이야기를 못하겠었다. 그래서 이번 기회에 두개의 차이점에 대해 다시 알아보고자 한다. 1. 인터페이스(Interface)란? interface 는 한 클래스를 구현하기 위해 사용되는 청사진입니다. 인터페이스는 구체적인 메소드를 포함하지 않습니다. 인터페이스는 초기화 될 수없지만 인터페이스를 상속하는 클래스들은 초기화 할 수 있다. 인터페이스는 인스턴수 변수를 절대 포함하지 않지만, public static final 변수를 포함할 수 있다. 인터페이스의 모든 메소드는 추상 메소드다. *추상 메소드(abstract method)란 자식 클래스에서 반드시 오버라이딩해야만 사용할 수 있는 메소드를 의미합니..

BigInteger 사용하기

leetcode 에서 문제를 푸는중 문제가 하나 발생했다. 링크 : https://leetcode.com/problems/plus-one/ 해당 문제는 int배열을 변환하는 것인데 필자는 string으로 전부 성분을 하나의 문자열로 합쳐서 다시 int 배열로 만드는 작업을 시행했는데 이를 시행하는 와중에 int형의 범위를 벗어나는 문제를 겪었다. import java.math.BigInteger; class Solution { public int[] plusOne(int[] digits) { if(digits == null || digits.length == 0) return null; String stringNum = ""; for(int component : digits){ stringNum += I..

Jar 과 War의 차이점은?

필자는 Inflearn을 강의를 굉장히 자주 듣는다. 최근 Spring 기본 강의를 듣고있는 중에 Spring initializr에서 어떤 프로젝트는 Jar로, 다른것은 War로 다운을 받는데 이 두개의 차이점을 잘 모르겠다! 그래서 이 글을 통해 공부할 것이다. 우선 google에 간단하게 Jar(Java ARchive) vs War(Web application ARchive) 를 검색해보니 맨 상단에 stack overflow가 있다. 1) https://stackoverflow.com/questions/5871053/difference-between-jar-and-war-in-java 들어가서 보니 이런 말이 있다. From Java Tips: Difference between ear jar and..

HashTable, HashMap, ConcurrentHashmap

우선 hash가 무엇인지 알아봐야 하겠다. Hash란 정확히 무엇을 말하나? Humors get you through the tough time! Have fun :) 1. Hash이란? key와 value가 쌍을 이루는 자료구조. 필요한 데이를 키 값을 통해 빠르게 탐색이 가능하며, 고유의 해쉬함수를 통해 데이터에 접근하는 구조. 그런데 이러한 Hash도 단점이 있는데... Hash collection이 일어난다고 한다. - 서로 다른 키의 해쉬 연산 결과가 같을 때 문제가 생기는 현상 참고: https://jroomstudio.tistory.com/10 참고 : https://siyoon210.tistory.com/85 2. HashTable A hash table is a type of data s..

DTO? VO? 개념 정리 및 사용 이유

https://kafcamus.tistory.com/13 DTO란 무엇인가, VO와의 비교 오늘은 다음의 고민 때문에 글을 작성하게 되었다. DTO가 정확히 뭘 의미하는 거지? DTO를 꼭 써야하는 이유가 뭐지? DTO랑 VO를 많이 비교하던데, 뭐가 다른거지? DTO란 무엇인가 DTO(Data Transfer Object, kafcamus.tistory.com 필자는 최근에 김영한 팀장님의 JPA 강의를 전부 들었다. 이제 간단하게 미니 프로젝트를 통해서 공부를 진행할 생각인데 모호한 개념들을 몇개 정리하고자 한다. DTO는 뭐고 VO는 뭘까? 위에 블로그에 보면 잘 정리가 되어있다. 위에서 DTO를 써야 하는 이유에 대하 잘 설명을 해주셨다. 그리고 실제로 Spring Data Jpa를 사용할 때에도..