good_da22 's devLog

Java 17

Smart Card IO

JAVA NFC java의 javax.smartcardio 라이브러리를 이용한 nfc writer 구현 NFC란? 무선태그(RFID) 기술 중 하나로 비접촉식 통신 기술 근거리 무선 통신 (Near Field Communication, NFC)으로 13.56MHz의 대역을 가지며 아주 가까운 거리(접촉 및 근접 비접촉(약 10cm) 포함)의 무선 통신을 하기 위한 기술 모드에 따라 쓰기(write)와 읽기(read)가 가능하며 대부분의 스마트폰에서 NFC 기능을 제공한다. 양방향 통신으로 상대 기기로 정보를 주기도 하며 상대 기기에서 정보를 가져오기도 한다. Java smartcard I/O API // java smartcardio NFC Write example code public class Nfc..

Java 2023.03.22

파싱(Parsing)

Parsing 문서에서 필요한 정보를 얻기 위해 태그를 구별하고 내용을 추출하는 과정 전문적인 parser 활용 SAX parser Simple API for XML parser 문서를 읽으면서 태그의 시작, 종료 등 이벤트 기반으로 처리하는 방식 빠르고 한번에 처리하기 때문에 다양한 탐색이 어렵다. DOM parser Document Object Model 문서를 다 읽고 난 후 문서 구조 전체를 자료구조에 저장하여 탐색하는 방식 다양한 탐색이 가능하지만 느리고 무거우며 큰 문서를 처리하기 어렵다. SAX(Simple API for XML) parser 문서를 읽다가 발생하는 이벤트 기반으로 문서 처리 SAX Parser Factory : SAX Parser 생성 SAX Parser : 문서 parsi..

Java 2022.07.31

직렬화(Serialization)

객체 직렬화 Serialization 직렬화(serialization) 객체를 데이터 스트림으로 만드는 것 객체를 파일등에 저장하거나 네트워크로 전송하기 위해 연속적인 데이터로 변환하는 것 역 직렬화(deserialization) 직렬화의 반대로 스트림으로부터 데이터를 읽어서 객체를 만드는 것 직렬화 조건 java.io.Serializable 인터페이스를 구현해야 한다. 추가 구현 메서드는 없다 @SuppressWarnings("serial") 경고를 무시할 수 있지만 사용하지 말 것 Serializable를 구현하는 클래스를 상속받는다면, 자식 클래스에서는 Serializable을 구현하지 않아도 된다. 부모 클래스가 Serializable을 구현하지 않은 상태에서 자식 클래스가 Serializable..

Java 2022.07.31

보조스트림(Stream)

보조 스트림 Filter Stream, Processing Stram 다른 스트림에 부가적인 기능을 제공하는 스트림 보조 스트림 자체적으로는 입출력을 수행할 수 없어 노드 스트림이 필요하다. 스트림 체이닝 Stream Chaining 필요에 따라 여러 보조 스트림을 연결해서 사용 가능 보조 스트림 종류 byte 스트림을 char 스트림으로 변환 byte 기반 InputStreamReader OutputStreamReader 버퍼링을 통한 속도 향상 byte 기반 BufferedInputStream BufferedOutputStream char 기반 BufferedReader BufferedWriter 객체 전송 byte 기반 ObjectInputStream ObjectOutputStream 이전 스트림을..

Java 2022.07.31

파일(File)

File 가장 기본적인 입출력 장치 파일과 디렉토리를 다루는 클래스 디렉토리도 파일이다. File 주요 메서드 File() public File(String pathname) pathname에 해당하는 파일을 생성 경로 없이 파일을 생성하면 애플리케이션을 시작한 경로가 된다. public File(String parent, String child) parent 경로 아래 child 를 생성한다. public File(File parent, String child) parent 경로 아래 child 를 생성한다. public File(URI uri) file 로 시작하는 URI 객체를 이용해 파일을 생성한다. createNewFile() public boolean createNewFile() throws ..

Java 2022.07.31

입출력 (I/O) & 스트림(Stream)

I / O Input 과 Output, 데이터의 입력과 출력 Stream 데이터는 한 쪽에서 주고 한 쪽에서 받는 구조로 되어있다. 이때, 입력과 출력의 끝단 : 노드(Node) 두 노드를 연결하고 데이터를 전송할 수 있는 개념 : 스트입(Stream) 스트림이란 데이터를 운반하는데 사용되는 연결 통로 스트림은 단방향 통신만 가능하기 때문에 하나의 스트림으로 입력과 출력을 동시에 처리할 수 없다. 입력과 출력을 동시에 수행하려면 입력을 위한 입력스트림(input stream)과 출력을 위한 출력스트림(output stream), 모두 2개의 스트림이 필요하다. 스트림은 먼저 보낸 데이터를 먼저 받게 되어 있어 중간에 건너뜀 없이 연속적으로 데이터를 주고받는다. Node Stream 종류 데이터 타입에 따..

Java 2022.07.31

함수형 인터페이스(functional interface)

java.util.function 패키지 대부분의 메서드는 매개변수가 없거나 한 개 또는 두 개, 반환 값이 없거나 한 개 제네릭 메서드로 정의하면 매개변수나 반환 타입이 달라도 문제가 되지 않는다. java.util.function 패키지에 일반적으로 쓰이는 형식의 메서드를 함수형 인터페이스로 미리 정의 패키지 활용을 통해 함수형 인터페이스에 정의된 메서드 이름 통일 재사용성이나 유지보수 측면에서 효율적 매개변수의 개수, 반환 여부에 따라 함수형 인터페이스 사용 가능 매개변수 없음, 반환값 없음 java.lang.Runable @FunctionalInterface public interface Runnable { public abstract void run(); } 매개변수 없음, 반환값 있음 @Fun..

Java 2022.07.31

람다 표현식(Lambda Expression)

람다 표현식 Lambda Exression 자바8 (JDK1.8) 부터 지원 기존의 자바 변경없이 함수형 프로그래밍 형태 지원 코드 간결화 가능 다른 함수에 전달되는 함수인 일급객체를 쓸 수 있다. -> 함수형 프로그래밍 언어이다. 람다식 메서드를 하나의 식(expression) 으로 표현한 것 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어져 익명 함수(anonymous function) 이라고도 한다. // 변수명 = 람다식 매개변수 -> { 구현/리턴 내용 }; FunctionalInterface 참조변수 = (int x1, int x2) -> { return x1 + x2; }; 익명 클래스의 객체와 동등하다. 구현부가 한 줄인 경우 중괄호 {} 생략 가능 // 구현 내용이 한 줄일 경..

Java 2022.07.31

정렬(Sort)

정렬 Sort 요소를 특정 기준에 대한 내림차순 또는 오름차순으로 배치 하는 것 순서를 가지는 Collection들만 정렬 가능하다. sort 인터페이스를 상속 받은 자식들 List 계열 Set에서 SortedSet의 자식 객체 (TreeSet) Map에서 SortedMap의 자식 객체(key 기준) (TreeMap) Collections의 sort()를 이용한 정렬 sort(List list) 객체가 Comparable을 구현하고 있는 경우 내장 알고리즘을 통해 정렬 Comparator 와 Comparable Comparator 와 Comparable은 모두 인터페이스로 컬렉션을 정렬하는데 필요한 메서드를 정의 Comparable을 구현하고 있는 클래스들은 같은 타입의 인스턴스끼리 서로 비교가 가능한 ..

Java 2022.07.30