본문 바로가기

JAVA

(15)
[Java] Socket, ServerSocket 클래스 자바에서는 소켓 프로그래밍을 할 때, 클라이언트와 서버 간의 연결을 위해 Socket 클래스와 ServerSocket 클래스를 사용한다. 1. Socket 클래스주로 클라이언트가 서버에 연결하기 위해 사용하는 클래스이며, TCP 기반으로 동작한다. Socket의 기본 동작 흐름클라이언트가 Socket 객체를 생성하여 서버의 특정 IP 주소와 포트로 연결 요청서버가 ServerSocket.accpet()를 호출하여 클라이언트 연결 수락클라이언트와 서버가 데이터를 송수신통신이 끝나면 close()를 호출하여 소켓 종료1) Socket 객체 생성Socket socket = new Socket("localhost", 12345);"localhost" (127.0.0.1) : 자신의 컴퓨터를 가리킴, (IP 주소..
[Java] JUnit 테스트 코드 메서드 정리 테스트 어노테이션1. 기본적인 테스트@Test - 단위 테스트 실행@Testvoid testAddition() { int result = 2 + 3; Assertions.assertEquals(5, result);} 해당 메서드가 테스트 실행 대상이 됨2. 테스트 실행 전 / 후 설정@BeforeEach - 각 테스트 실행 전에 실행@BeforeEachvoid setUp() { System.out.println("테스트 시작");} 주로 테스트 데이터 초기화에 사용됨 @AfterEach - 각 테스트 실행 후에 실행@AfterEachvoid close() { System.out.println("테스트 종료");} 주로 테스트 종료 후 자원 반환에 사용됨 @BeforeAll - 모든 ..
[Java] ConcurrentHashMap 정리 ConcurrentHashMap 클래스는 아래 두 클래스와 유사하지만, 세부적으로 보면 차이점을 알 수 있다. 결론부터 말하자면, ConcurrentHashMap 클래스는 멀티 쓰레드 환경에서의 동기화 문제를 해결하는데 사용된다. 아래 두 클래스와의 차이를 비교해보겠다.Hashtable 클래스HashMap 클래스Hashtable 클래스public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializable { private transient Entry[] table; private transient int count; ... public synchronized int size()..
[Java] Main 문 공부를 하다 문득 main문에 대해 궁금해졌다. 사실 이제서야 이런 의문을 가지고 찾아본게 부끄럽다. 반성하겠다.지금까지 코딩을 하면서도 그냥 생각없이 코드를 작성하기에 급급했는데, 이제는 조금 더 여유를 가지고 궁금증이 생기는 것들에 대해 탐구하고 정리해보려 한다. 갖게된 의문점은 아래와 같다.왜 main문 안에다가 실행 코드들을 작성해야 하지?main의 매개변수 (String[] args) 는 뭘 의미하는거지1번의 이유가 2번이랑 연관이 있나? 1. 왜 main 메소드를 사용하는 것인가? 자바에서 main 메소드는 프로그램 실행의 시작점(entry point) 역할을 한다. 즉, 프로그램이 실행되면 JVM(Java Virtual Machine)이 가장 먼저 호출하는 메소드가 main. 예를 들어,pu..
[Java] Stream API Stream컬렉션 데이터를 처리하기 위해 *영속된 데이터 흐름을 제공(*영속 : Stream 작업 후에도 변화하지 않고 지속적으로 존재)데이터를 읽기 전용으로 처리원본 데이터를 변경시키지 않고 처리함컬렉션의 요소를 하나씩 순회하며 작업을 수행할 수 있음데이터 필터링, 집계, 변환 작업을 간단하게 표현 가능데이터 파이프라인을 제공복잡한 데이터를 간단하고 직관적으로 처리할 수 있게 해줌데이터 처리 과정 -> 함수형 프로그래밍 스타일로 작성가독성이 높아짐함수형 프로그래밍 스타일동일한 입력에 동일한 결과물외부 상태가 변경되지 않음어떻게 처리할지 X -> 무엇을 처리할지 고민될 때 작성중간 연산과 최종 연산중간 연산map(), filter(), sorted(), ...스트림을 변환하고 또 다른 스트림을 반환여러개..
[Java] 컬렉션 프레임워크 컬렉션 프레임워크데이터를 저장하고 조작하는 구조와 인터페이스를 제공하는 자바의 라이브러리List, Set, Map 과 같은 주요 컬렉션 인터페이스와 이들이 구현체를 활용해 데이터를 조작 및 관리List순서가 있는 데이터의 집합ArrayList, LinkedListArrayList인덱스를 통해 빠르게 요소에 접근 가능배열 기반으로 구현체LinkedList삽입과 삭제가 빈번한 경우 적합노드 기반 구현체중간에 요소 삽입하거나 삭제할 때 성능 좋음// 1.ArrayListList arrayList = new ArrayList();arrayList.add("Charlie");arrayList.add("Bob");arrayList.add("Gray");arrayList.add(1, "David"); // 중간삽입S..
[JAVA] 스트림(stream) 정리 : 람다 함수를 활용해 배열과 컬렉션을 함수형으로 간단하게 처리 가능 특징원본 데이터 소스를 변경하지 않음 -> 읽기만 함일회용이다. -> 한번 사용하면 닫혀서 재사용 불가능최종 연산 전까지 중간 연산 수행 X작업을 내부 반복으로 처리함. -> forEach() 는 매개변수에 대입된 람다식을 데이터 소스의 모든 요소에 적용병렬 처리가 쉽다.
[JAVA] DAO, DTO, VO 개념 1. DAO(Data Access Object)데이터베이스의 data에 접근하기 위한 객체.데이터베이스 접근을 하기 위한 로직과 비즈니스 로직을 분리하기 위해 사용. 사용자는 자신이 필요한 Interface를 DAO에게 던지고 -> DAO는 이 Interface를 구현한 객체를 사용자에게 편리하게 사용할 수 있도록 반환. -> 직접 Database에 접근하여 data를 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행.(주로 MVC 패턴의 Model에서 이러한 일을 수행) 2. DTO(Data Transfer Object)VO라고도 표현하며 계층 간 데이터 교환을 위한 자바 빈즈(Java Beans).데이터베이스 레코드의 데이터를 매핑하기 위한 데이터 객체를 말함. DTO는 보통 로직을 가지고 있지 않..