개발 공부 기록

개발 공부 기록

  • 분류 전체보기 (190)
    • spring (41)
      • JPA (19)
      • TEST (4)
      • 비동기 처리 (4)
      • SECURITY (1)
      • BATCH (0)
      • WebFlux (0)
    • 문제풀이 (2)
      • 백준 (2)
      • 프로그래머스 (0)
    • java (43)
      • java (39)
      • servlet_jsp (3)
      • jdbc (1)
    • 프론트 (7)
      • html (6)
      • css (1)
    • DB (12)
      • Oracle-기초 (8)
      • Mysql-기초 (4)
      • Redis (0)
    • CS (4)
      • Network (4)
      • 디자인 패턴 (0)
    • Project (0)
      • e-commerce (0)
    • Book (66)
      • 이펙티브 자바 (55)
      • 클린코드 (0)
      • 모던 자바 인 액션 (11)
  • 홈
  • 태그
  • 방명록
RSS 피드
로그인
로그아웃 글쓰기 관리

개발 공부 기록

컨텐츠 검색

태그

단위 테스트 Enum 메서드 참조 가변인수 통합 테스트 이펙티브 자바 인터페이스 최적화 스트림 JPA 조인 람다 DSL 배열 디폴트 메서드 람다식 제네릭 상속 영속성 Collector

최근글

댓글

공지사항

아카이브

java(43)

  • 람다식(3) - 표준 API의 함수적 인터페이스

    자바에서 제공되는 표준 API에서 한 개의 추상 메소드를 가지는 인터페이스들은 모둔 람다식을 이용해서 익명 구현 객체로 표현이 가능하다. public static void main(String[] args) { Runnable runnable = () -> { for (int i = 0; i { for (int i = 0; i < 10; i++) { System.out.println(i); } ..

    2023.12.09
  • 람다식(2) - 클래스 멤버와 로컬 변수 사용

    람다식의 실행 블록에는 클래스의 멤버 (필드 및 메소드) 및 로컬 변수를 사용할 수 있다. 클래스의 멤버는 제약 사항 없이 사용 가능하지만, 로컬 변수는 제약 사항이 있으니 알아보자 3.1 클래스의 멤버 사용 1. 람다식 실행블록에 클래스의 멤버는 제약 없이 사용할 수 있다. 2. this 키워드를 사용할 때에는 주의하라 - 일반적으로 익명 객체 내부에서 this는 익명 객체의 참조지만, 람다식에 this는 람다식을 실행한 객체의 참조이다. public class NestedClass { public int outterField = 10; class Inner { int innerField = 20; void method() { MyFunctionalInterface f1 = () -> { System...

    2023.12.08
  • 람다식 (1) - 기본 문법, 함수적 인터페이스

    람다식은 익명함수를 생성하기 위한 식으로 객체 지향 언어보다는 함수 지향 언어에 가깝다. 객체 지향 프로그래밍에 익숙한 개발자들은 다소 혼란스러울 수 있지만, 자바에서 람다식을 수용한 이유는 코드가 간결해지고, 컬렉션의 요소를 필터링하거나 매핑해서 원하는 결과를 쉽게 집계할 수 있기 때문이다. 람다식의 형태는 매개 변수를 가진 코드 블록이지만, 런타임 시에는 익명 구현 객체를 생성한다. 예를 들어 Runnable 인터페이스의 익명 구현 객체를 생성하는 전형적인 코드는 다음과 같다. Runnable runnable = new Runnable() { @Override public void run() { } }; 위 코드에서 익명 구현 객체를 람다식으로 표현하면 다음과 같다. Runnable runnable ..

    2023.12.07
  • Generic

    1] 왜 제네릭을 사용해야 할까? Java 5부터 제네릭 타입이 새로 추가되었다. 제네릭 타입을 이용함으로써 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있게 되었다. 제네릭은 컬렉션, 람다식, 스트림, NIO에서 널리 사용되므로 확실히 애해해 두어야 한다. 제네릭을 사용하는 코드는 비제네릭 코드에 비해 다음과 같은 이점을 가지고 있다. 컴파일 시 강한 타입 체크를 할 수 있다. 자바 컴파일러는 코드에서 잘못 사용된 타입 때문에 발생하는 문제점을 제거하기 위해 제네릭 코드에 대해 강한 타입 체크를 해 컴파일 타임에 에러를 체크한다. 타입 변환을 제거한다. 비제네릭 코드는 불필요한 타입 변환을 하기 때문에 프로그램 성능에 악영향을 미친다. public static void main(St..

    2023.12.04
  • 중첩 클래스와 중첩 인터페이스란?

    객체 지향 프로그램에서는 클래스들은 서로 긴밀한 관계를 맺고 상호작용을 한다. 어떤 클래스는 여러 클래스와 관계를 맺지만 어떤 클래스는 특정 클래스와 관계를 맺는다. => *다른 클래스에서는 특정 클래스에서만 종속적으로 쓰이는 경우에 하는 걸로 알고있다. 중첩 클래스란 클래스 내부에 선언한 클래스를 말하는데, 중첩 클래스를 사용하면 두 클래스으 ㅣ멤버들을 서로 쉽게 접근할 수 있다는 장점과 외부에는 불필요한 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다. public class ClassName { ... class NestedClassName { ... } } 인터페이스도 클래스 내부에 선언할 수 있다. 이런 인터페이스를 중첩 인터페이스라고 한다. 중첩 인터페이스를 쓰는 이유는 해당 클래스와 ..

    2023.11.29
  • 어노테이션

    어노테이션이란? 어노테이션이란 메타데이터라고 볼 수 있다. 메타데이터란 애플리케이션이 처리해야 할 데이터가 아니라, 컴파일 과정과 실행 과정에서 코드를 어떻게 컴파일하고 처리할 것인지를 알려주는 정보이다. 용도 1. 컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공 2. 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공 3. 런타임 시 특정 기능을 실행하도록 정보를 제공 예를들어 @Override 어노테이션은 메소드가 오버라이드된 것임을 컴파일러에게 알려주어 컴파일러가 오버라이드 검사를 하도록 해준다. 어노테이션은 빌드 시 XML 설정 파일을 생성하거나, 배포를 위해 JAR 압축 파일을 생성하는데에도 사용된다. 그리고 실행 시 클래스의 역할을 정의하기도 한다. 어노테..

    2023.11.26
  • UDP 네트워킹

    *UDP(User Datagram Protocol) [1] 특징 1) 비연결 지향적 프로토콜 - 연결 절차를 거치지 않고 발신자가 일방적으로 데이터를 발신하는 방식 - 연결 절차가 없기 때문에 TCP 보다는 빠르게 전송할 수 있다. 2) 통신 선로가 고정적이지 않다. - 데이터 패킷들이 서로 다른 통신 선로를 통해 전달될 수 있다. - 먼저 보낸 패킷이 느린 선로를 통해 전송될 경우, 나중에 보낸 패킷보다 늦게 도착할 수 있다. 3) 데이터 손실이 발생할 수 있다. - 일부 패킷은 잘못된 선로로 전송되어 잃어 버릴 수 있다. -> 데이터 전달 신뢰성이 떨어진다. [2] java.net API 1) DatagramSocket, DatagramPacket

    2022.06.04
  • 스레드 풀(1)

    *스레드 폭증 1) 병렬 작업 처리가 많아지면 스레드의 개수가 증가 2) 스레드 생성과 스케쥴링으로 인해 CPU가 바빠지고, 메모리 사용량이 늘어난다. 3) 따라서 애플리케이션의 성능이 급격히 저하된다. *스레드 풀 1) 작업 처리에 사용되는 스레드를 제한된 개수만큼 미리 생성 2) 작업 큐에 들어오는 작업들을 하나씩 스레드가 맡아 처리 3) 작업 처리가 끝난 스레드는 작업 결과를 애플리케이션으로 전달. 4) 스레드는 다시 작업큐에서 새로운 작업을 가져와 처리 *ExecutorService 인터페이스와 Excutors 클래스 1) 스레드풀을 생성하고 사용할 수 있도록 java.util.concurrent패키지에서 제공 2) Excutors의 정적 메소드를 이용해서 ExcutorService 구현 객체 생..

    2022.05.07
  • TCP 네트워킹

    *스레드 병렬 처리 1) 블로킹(대기 상태)가 되는 메소드 - ServerSocket의 accept() - Socket 생성자 또는 connect() - Socket의 read(), write() 2) 병렬 처리의 필요성 - 스레드가 블로킹되면 다른 작업을 수행하지 못한다. -1) 입출력 할 동안 다른 클라이언트의 연결 요청을 수락하지 못한다. -2) 입출력 할 동안 다른 클라이언트의 입출력을 하지 못한다. - UI 생성/변경 스레드에서 블로킹 메소드를 호출하지 않도록 한다. -1) UI 생성 및 변경이 안되고 이벤트 처리가 안된다. 3) 스레드 병렬처리 4) 스레드풀을 사용해서 스레드 수 관리 - 스레드풀은 스레드 수를 제한해서 사용하기 때문에 갑작스런 클라이언트의 폭증은 - 작업큐의 작업량만 증가시킬..

    2022.05.07
이전
1 2 3 4 5
다음
티스토리
© 2018 TISTORY. All rights reserved.

티스토리툴바