JAVA-Basic 20

Lambda , Stream 개인 정리

코드의 간결 성, 함수를 이해하는 개인 간의 가독 성 상승 Collection 의 요소를 순회하여 Filtering , Mapping 가능 Collection 의 요소를 간결한 코드로 순회하여 결과를 만들어 낼 수 있다. @FunctionalInterface , 함수형 인터페이스에서 람다식 사용 허용 Anonymous Function , 익명 함수를 만들어내는 방식으로 작성된다. 즉, Runtime 시점에 Anonymous Implementation Object 를 생성하는 형태 기본문법 람다식 -> 매개변수를 가진 코드블록 -> 익명 구현 객체 (매개변수) -> { … } (매개변수) 란은 Lambda 에서 사용될 값을 제공 하나의 매개변수를 가진다면 괄호를 생략가능 하나의 Statement 로 끝난다..

JAVA-Basic 2021.01.10

JVM 할당 CPU, Memory 확인하기

JDK1.8 에는 jshell 이 없기 떄문에 자바 코드로 확인해본다. 기본적으로 물리코어 1개 당 가상코어 2개로 확인된다. public class Cpu { public static void main(String[] args) { int availableProcessors = Runtime.getRuntime().availableProcessors(); System.out.println(availableProcessors); } } ==>12 윈도우에는 grep 키워드대신 findstr 로 매개변수를 찾아올 수 있다. JVM 메모리 할당량 확인을 위해 -XX:+PrintFlagsFinal -version 으로 런타임 변수를 확인하고 findstr MaxHeapSize 으로 MaxHeapSize 를 확..

JAVA-Basic 2021.01.01

다시보는 객체지향언어의 특징

상속(일반화) : 필드 메서드 / 생성자의 경우 부모객체가 생성되고 자식 객체가 생성되는 것이므로 상속받지 않음. 다형성 : 정보은닉 : 접근제한자 상속은 공통 속성 정의에서 나온다. ( 일반화, 추상화 과정 ), 즉 확장 extends 다형성은 하나의 기능을 다양하는게 쓰는 것. ( 하나의 기능을 받아 다양하게 사용한다. , 즉 필요할 때 붙여쓴다. ) : @Override 인터페이스는 스프링에서 가장 많이 나타남 : 부품으로 갈아 끼워 사용. > 좋은 시스템의 정의 는 응집도가 높고 결합도(의존 전파 정도) 낮아야 함. static 정적 멤버는 1개의 저장공간을 가지며 클래스 이름으로 바로 접근이 가능하다. 객체 지향에서 원칙적으로는 객체를 만들어 쓰는 것을 권장한다. package ch01; pub..

JAVA-Basic 2020.09.24

클래스 생성자에 추가사항이 있을때의 관리방법.

변경 국부성, Locality of Change 변경을 할 때 제한된 부분만 개발하는 방법. public Criteria(Criteria other,int tot) {//넘겨야하는 객체안에서 변경사항을 관리하는 방법, 객체 안의 생성자에서 생성자의 변경점을 관리함. this.pageNo = other.pageNo; this.amount = other.amount; calc(tot); } 부모 클래스의 생성자를 객체를 받게끔 해놓고 자식 클래스로 이동한다. 자식클래스에 부모 생성자를 이용해서 기존 생성자를 받아주고, 변경된 점만 따로 받아낸다. @Data @NoArgsConstructor public class SearchCriteria extends Criteria { private String type..

JAVA-Basic 2020.09.11

제네릭을 이용한 필요한 클래스들의 모듈화

해당클래스의 제네릭에 원하는 클래스를 넣거나 리턴 타입을 지정하여 사용한다. @AllArgsConstructor @Data public class PagingCriteriaGeneric { private F allWithPaging; private S totalCount; } 요런 식으로 쓰기 좋다. public PagingCriteriaGeneric readAllWithPaging(Criteria criteria){ return new PagingCriteriaGeneric (boardMapper.getAllWithPaging(criteria),boardMapper.getPostTotalCount()); }; * 여러정보를 제네릭클래스로 모듈화하여 하나의 클래스로 리턴하는 방법이다. 방안이 무엇일까. ..

JAVA-Basic 2020.09.10

Interface 에 정의된 메소드에서 던질 수 있는 Exception간 관계

java.sqlSQLException을 인터페이스의 추상메서드는 던지고 있다. 그 구현객체는 반드시 추상메서드를 재정의 해야하는데, 이때 구현객체에서 메서드 재정의시 던질 수 있는 익셉션은 Interface에 정의된 메서드가 던지는 Exception의 하위 타입이어야한다. package test; import java.sql.SQLException; import java.sql.SQLTransientException; public class ExceptionEx1 { public void main() { A a = new B(); try { a.method(); } catch (SQLException e) { e.printStackTrace(); } } } class B implements A{ @Ove..

JAVA-Basic 2020.07.28

10.Thread와 동기화(synchronized)

Thread-safe하지 못하다는 말을 많이 듣게 되는데, 이 부분은 뜬구름 잡듯 잘 감이 잡히지 않고 코드를 짤때 Thread-safe하지 않겠구나 하고 예측만을 하게된다. 일단 Thread의 실행 방법은 Thread의 매개값인 Runnable 인터페이스의 구현객체, Thread의 상속 개체 사용의 2가지가 존재하고, .start()메서드로 시작한다. Runnable의 구현방식. public class BeepTask implements Runnable { @Override public void run() { Toolkit toolkit = Toolkit.getDefaultToolkit(); for(int i =0; i

JAVA-Basic 2020.07.10