반응형

JAVA 30

태태개발일지 - JAVA 간단한 network programming

cs지식을 늘리기 위해서 김영한 선생님의 java network programming 강의를 듣는 중이다. Network Programming 기본적인 로직은 다음과 같다. 소켓서버 포트 지정소켓서버 오픈클라이언트 소켓서버에 접속클라이언트 소켓서버에 데이터 송신소켓서버는 클라이언트로 부터 데이터 수신소켓서버가 클라이언트에게 데이터 송신클라이언트는 소켓서버에서 데이터 수신종료 CodeClientimport java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.Socket;public class Client { private static final int PORT = 12345..

JAVA 2025.12.13

태태개발일지 - Java 파일 입출력 완전 정리

회사에서 기존에 고용노동부 퇴직연금시스템 파일 로직 점검에 이어서 운용사 선정 페이지 파일 로직 점검 업무를 받았다.기존 고용노동부 시스템은 전자정부 프레임워크라, jdk와 java 버전이 낮아서, 좀더 간편하고 성능좋은게 있을 까 강의를 들어봤다.파일 시스템 라이브러리와 클래스 자체는 변한게 없는 것 같은데. 상황에 따라 어떤 것을 사용하는 것이 좋은 지 좋은 지식이 되었다. 바이트 스트림 vs 문자 스트림 바이트 스트림 (Byte Stream)FileInputStream / FileOutputStream데이터를 바이트 단위로 읽고 쓴다.이미지, 동영상, 바이너리 파일, PDF 등 텍스트가 아닌 파일 처리에 적합. 문자 스트림 (Character Stream)FileReader / FileWriter텍..

JAVA 2025.12.01

태태개발일지 - 김영한 java 고급 (람다) 람다 총정리

람다 총정리 람다 VS 익명클래스 람다오직 함수형 인터페이스에만 사용되며 문법이 간결하고 외곽 클래스의 this를 캡처한다. 람다는 메서드 본문 형태로만 동작하고 별도 클래스 파일을 만들지 않는 컴파일 타임 변환이 이뤄져 경량이다. 익명 클래스인터페이스/추상클래스 구현이나 확장이 가능하고 자체 this를 가진다. 필드, 보조 메서드, 초기화 블록 등을 정의할 수 있어 “작은 클래스”처럼 동작한다. this는 내부 클래스의 this를 캡처한다. 사용시기한 메서드짜리 콜백(Runnable/Callable/Comparator/Listener 등)은 람다,상태·여러 메서드·명시적 타입 확장·주석/애노테이션이 필요한 경우는 익명 클래스가 적합하다. // Comparator - 람다var list = List..

JAVA 2025.09.05

태태개발일지 - 김영한 java 고급 디폴트 메서드

강의 링크https://inf.run/EXqku 김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍| 김영한 - 인프런 강의현재 평점 5점 수강생 3422명인 강의를 만나보세요. 최신 자바에 꼭 필요한 람다, 스트림, 자바를 활용한 함수형 프로그래밍 기술을 기초부터 실무 레벨까지 깊이있게 학습합니다. 람다, 함수형www.inflearn.com interface default method default 메서드는 Java 8부터 인터페이스(interface) 내부에 구현된 코드를 포함할 수 있도록 허용된 메서드입니다. 가끔 interface를 쓰다보면 defaultmethod개념이 나온다. interface의 메서드를 구현하면 안되지만, default method를 사용하여 기본 코드를 ..

JAVA 2025.08.11

태태코딩 - 김영한 고급 java 람다

강의 링크https://inf.run/EXqku 김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍| 김영한 - 인프런 강의현재 평점 5점 수강생 3249명인 강의를 만나보세요. 최신 자바에 꼭 필요한 람다, 스트림, 자바를 활용한 함수형 프로그래밍 기술을 기초부터 실무 레벨까지 깊이있게 학습합니다. 람다, 함수형www.inflearn.com 즉시평가와 지연평가 get 과 getElse의 차이를 알기 위해 간단한 코드구현 1. 즉시평가public class EagerEvaluationIf { public static int calc() { System.out.println("즉시평가: 연산이 수행됨!"); return 42; } public s..

JAVA 2025.07.29

태태개발일지 - 김영한 고급 JAVA LAMBDA

강의 링크https://inf.run/EXqku 김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍| 김영한 - 인프런 강의현재 평점 5점 수강생 3236명인 강의를 만나보세요. 최신 자바에 꼭 필요한 람다, 스트림, 자바를 활용한 함수형 프로그래밍 기술을 기초부터 실무 레벨까지 깊이있게 학습합니다. 람다, 함수형www.inflearn.com JAVA OPTIONAL optionalJava의 Optional은 NullPointerException을 방지하고, 코드ㅢ 명확성을 높이기 위해 등장한 컨테이너 클래스다.그럼 언제쓰는가?Nullable한 값 처리직접 null 체크 로직을 넣는 대신 Optional을 활용해 더 명확하고 안전하게 값을 다룰 수 있다.NullPointerExcepti..

JAVA 2025.07.28

태태개발일지 - flatMap

Java Stream과 flatMap Java의 Stream API는 컬렉션을 다루는 데 있어 매우 강력하다.특히 flatMap은 2차원 이상의 자료구조를 평탄화(flatten)할 때 필수적인 메서드이다.이번 글에서는 flatMap이 왜 필요한지, 그리고 실제로 어떻게 동작하는지 예제를 통해 쉽게 설명하겠다. 2차원 리스트List> list = Arrays.asList( Arrays.asList(1, 2), Arrays.asList(2, 4)); 이 리스트에 stream 사용 Stream> stream = list.stream(); 각 요소는 리스트이다. Stream> mappedStream = list.stream().map(innerList -> innerList.stream()); 그..

JAVA 2025.07.08

태태개발일지 - 김영한 고급JAVA (LAMBDA)

람다 메서드 참조 기존 람다 방식Lambda a = (int a, int b) -> {return a+b};Lambda b = (int a, int b) -> {return a+b}; 동일한 기능을 함수로 묶을 수 있다. Lambda a = (int a, int b) -> {add(a,b)};Lambda b = (int a, int b) -> {add(a,b)};public static int add (a ,b ){ return a+b;} 다음과 같이 함수로 묶을 수 있다. 하지만, 이것 역시 편리하게 사용할 수 있는 방법이 있는 것이다. 그것이 바로메서드 참조이다. 메서드 참조의 기본 문법 메서드 참조는 (::) 연산자를 사용한다.클래스명::메서드명(정적 메서드)참조변수::메서드명(인스턴스 메..

JAVA 2025.05.26

태태개발일지 - 김영한 자바 고급

람다 람다식은 함수형 인터페이스(추상 메서드가 하나인 인터페이스)의 인스턴스를 간결하게 표현하는 방법이다.Java 8부터 도입된 기능으로, 코드의 길이를 줄이고 가독성을 높여줍니다. 람다는 메서드만 전달하며, 익명클래스보다 더 간단하게 함수 객체를 만들 수 있습니다. 단, 람다는 함수형 인터페이스에만 사용할 수 있고, this 키워드는 외부 클래스의 인스턴스를 참조합니다 익명클래스 익명클래스는 이름이 없는 클래스로, 주로 일회성으로 인터페이스나 추상클래스를 구현할 때 사용한다. 예를 들어, Comparator나 Runnable 같은 인터페이스를 구현할 때 별도의 클래스를 만들지 않고 코드 내에서 바로 정의할 수 있다. 익명클래스는 여러 메서드를 구현할 수 있고, 내부에 필드나 초기화 블록도 선언할 수 있..

JAVA 2025.05.20

태태개발일지 - JAVA 고급편(3) 김영한 람다

람다&제네릭제네릭 사용 이유1. 중복과 가시성Function func1 = a -> a+3;Function2 func2 = a -> a+2; 이와같이 람다를 만들 때 비슷하거나 같은 코드를 여러개만든다면, 중복과 가시성에 문제가 생길 수 있음 2. 람다 대입Function func1 = a -> a+3;#Function2 func2 = a -> a+2;Function2 func2 = func1 (x) 아래와 같이 java 특성상 같은 값이라도 다른 자료형에 값을 대입할 수 없다. 즉 int s = 10String w = "10"w =s (x) 같은 값이라도 대입할 수 없기 때문이다. 제네릭&람다@FunctionalInterfacepublic interface Function { R apply(T ..

JAVA 2025.05.05
반응형