본문 바로가기

Java/이론

(16)
Javax → Jakarta SpringSecurity 개발을 하면서 기존에는 javax.*를 사용했는데 에러가 났다.알고보니 Jakarta.* 로 변경되었다. 간단히 그 이유를 설명하자면 그냥 회사가 바뀌어서 그렇다. Jakarta에 대한 설명은 다음과 같다. 출처 : https://s-core.co.kr/insight/view/java-ee%EC%97%90%EC%84%9C-jakarta-ee%EB%A1%9C%EC%9D%98-%EC%A0%84%ED%99%98/ 새로운 시작, Jakarta EE(Jakarta, Enterprise Edition)이클립스 재단으로 이관된 자바EE의 공식 명칭은 자카르타EE, 프로젝트 명은 EE4J(Eclipse Enterprise for Java)로 변경되었다. 자카르타EE는 기존 JCP 정책이 아닌..
제네릭(Generic) 정의 : generic 타입 및 메소드를 정의하고 사용할 수 있는 언어적 특성List list = new ArrayList();Map map = new HashMap(); 위와 같이 " " 부분이 클래스 타입이 명시된 부분이다.이것을 제네릭(Generic)이라고 부르며, 제네릭 파라미터는 꺽쇠안에 포함하여 전달한다. ● 파라미터 타입이나 리턴 타입에 대한 정의를 외부로 미룬다.● 타입에 대해 유연성과 안전성을 확보한다.● 런타임 환경에 아무런 영향이 없는 컴파일 시점의 전처리 기술 ※ 런타임 에러는 프로그램이 작동 중에 에러가 나는 것이고, 컴파일은 프로그램 작동 전에 컴파일러가코드 해석 중에 아예 해석을 못하겠다고 포기하고 에러내는 것이다. 그러므로 프로그램이 실행되고작동되는 것보다 굳이 따지자면 컴..
String, StringBuilder, StringBuffer String을 많이 쓰는데 그에 대한 정보를 알아봐야겠다. 1) String기본적으로 Java에서는 String 객체의 값은 변경할 수 없다.그래서 초기공간과 다른 값에 대한 연산에서 많은 시간과 자원을 사용하게 된다는 특징이 있다. ※ jdk8까지는 String객체의 값은 char[] 배열로 구성되어져 있지만, jdk9부터는 기존 char[]에서 byte[]사용으로 바뀌어 성능 및 heap 공간 효율(2byte → 1byte)을 높이도록 수정되었다. 다음 이미지의 예시로 String이 어떻게 메모리를 차지하는지 알아보자.Strimmutable 변수를 보면 정상적으로 string이 더해진 것을 볼 수 있다. 시각적으로는 immutable에서더해진 것이지만 실제 메모리 상에서는 그렇지 않다. 오른쪽 그림을..
암호화 비밀번호 암호화하면서 대략적인 정보만 알고 있었다. 좀 자세히 알아보자. 평문(Plaintext) : 해독 가능한 형태의 메시지(암호화전 메시지)암호문(Cipertext) : 해독 불가능한 형태의 메시지(암호화된 메시지암호화(Encryption) : 평문을 암호문으로 변환하는 과정복호화(Decryption) : 암호문을 평문으로 변환하는 과정전자서명송신자의 Private Key로 메시지를 서명하여 전달수신자측에서는 송신자의 Public Key를 이용하여 서명값을 검증양방향암호화 : 암호화와 복호화과정을 통해 송.수신간 주고받는 메시지를 안전하게 암.복호화하는 과정단방향암호화 : 해싱(Hashing)을 이용한 암호화 방식으로 양방향과는 다른 개념으로, 평문을 암호문으로 암호화는 가능하지만 암호문을 평문으로..
Java Version(8, 11, 17) SI하면서 주로 java8버전을 썼는데 그런 이유가 있었다. 한 단어로 표현하자면 안정적이다.왜 그런지 알아보자 주로 사용하는 자바 Version은 8,11,17이 있다. 일단 기본적으로 8, 11, 17이 보장 기간이 가장 길고 17이후부터는 계속해서 지원 버전이 긴 것을 알 수 있다.LTS(Long Term Support)가 붙은 것도 그 이유이다. Java8● 32비트를 지원하는 공식적인 마지막 버전● 날짜 시간 API 제공● 람다식 제공● StreamAPI 제공 → 현재 페이지가 돌아가는데 큰 무리없이 사용할 수 있는 기능들이 기본적으로 있다. Java11● G1 GC이 기본 GC로 설정 ● 람다 지역변수 var 키워드 사용 가능    → var변수가 자동으로 return타입에 맞는 변수로 저장된..
람다식(Lamda)식 Vue를 공부하면서 Lamda식을 주로 쓰게 되었다. 아직 익숙하지는 않지만 확실히 코드가 간결해진다. 람다식의 목적은 람다식 자체만으로도 메서드의 역할을 대신할 수 있으며, 메서드의 매개변수로 전달되어지는 것도가능하고 메서드의 결과로 반환될 수 있다. 즉 주된 이득은 간결해지는 것이다. 또한 간단히 Return받는 함수를 사용한다고가정하면 굳이 메서드 명과 리턴 자료형까지 고민할 필요가 없어진다. 익명함수가 생기는 것이다.  위의 그림 예시 중 2번 째를 보자.우선 squre라는 함수명을 지정해줘야 한다. 람다식이 아닌 경우는 리턴 타입과 메서드 명을 기입해야 한다.하지만 람다식으로 변환하면 아주 간단하게 치환된 것을 볼 수 있다. java8이상부터 지원한다고 하는데.. java version에 대한 ..
TDD(Test Driven Development) 내가 개발할 때는 요구사항 수집 후 개발한 후 테스트를 하게 됐다.배포를 하고 계속해서 수정사항이 바뀌었는데 TDD를 통해서 이런 점을 보완한다고 한다.근데 TDD가 뭔지를 모른다. 알아보자. 내가 이해한 바로는 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여구현하는 것이다. 테스트 → 정보처리기사할 때 테스트 종류가 많았는데 무엇이 있는지 한 번 보자 테스트의 종류 ● 단위 테스트 : 매우 낮은 수준으로 애플리케이션의 소스와 가깝다. 소프트웨어에서 사용하는 클래스                         구성 요소 또는 모듈의 개별 메서드와 함수를 테스트하는 것으로 구성되어 있다.                         단위 테스트는 일반적으로 자동화 비용이 상..
GC(Garbage Collection) Re 결론적으로 내 개인적인 생각은 GC를 효율적으로 사용하면 개발시 메모리 관리를 간접적으로 설정할 수 있다! 즉 효율적이게 만드는데 아주 중요한 지식이라는 것이다. 정의 : 가비지 컬렉션(Garbage Collection, 이하 CG)은 자바의 메모리 관리 방법 중의 하나로 JVM(자바 가상머신)의 Heap영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체(garbage)를 모아 주기적으로제거하는 프로세스를 말한다. C/C++에서는 이러한 가비지 컬렉션이 없어 프로그래머가 수동으로 메모리 할당과 해제를 일일이 해줘야 했다.→ C언어 때 배운 malloc()을 생각해보면 쉽게 알 수 있다. 장점은 사용자가 직접 메모리 관리를 하지 않아도      CG라는 것이 있어서 개발에만 집중하면 되는것이다..