[Java] 컬렉션 프레임워크의 HashSet과 HashMap, HashTable과 Hashing이란
·
Programming Language/Java
자바의 컬렉션 프레임워크인 HashSet, Hash Map과 HashTable과 Hashing에 대한 개념을 작성한 글입니다. HashSet HashSet은 자바 컬렉션 프레임워크(Collection Framework)에서 제공하는 Set 인터페이스를 구현한 클래스 중 하나입니다. Set의 특징대로 HashSet은 중복된 요소를 저장하지 않습니다. 또한 저장 순서를 유지하지 않으므로 저장 순서를 유지하고자 한다면 LinkedHashSet을 이용해야 합니다. HashSet은 해시 테이블을 기반으로 하기 때문에 해시 함수에 의해 요소들이 저장되는 공간인 버킷(Bucket)으로 구성됩니다. 요소의 해시 코드를 계산하여 해당하는 버킷에 요소를 저장하고, 동일한 해시 코드를 가진 요소는 동일한 버킷에 저장됩니다...
[Java] Lombok 제대로 알아보기
·
Programming Language/Java
롬복이란? 롬복은 자바에서 클래스를 작성을 간결하게 할 수 있도록 어노테이션(annotations)을 이용하여 자동으로 Getter, Setter, Constructor 등의 메서드를 생성하는 라이브러리 입니다. 롬복은 컴파일 과정에서 어노테이션을 통해 메서드를 생성합니다. 다양한 사용 예시 @Getter와 @Setter 필드의 게터와 세터를 생성합니다. import lombok.Getter; import lombok.Setter; @Getter @Setter public class Person { private String name; private int age; } @ToString 클래스의 toString 메서드를 생성합니다. import lombok.ToString; @ToString public..
[Java] 자바에서 GitHub REST API 사용하기
·
Programming Language/Java
https://docs.github.com/ko/rest?apiVersion=2022-11-28 GitHub REST API 설명서 - GitHub Docs 통합을 만들고, 데이터를 검색하고, 워크플로를 자동화하고, GitHub REST API를 사용하여 빌드합니다. docs.github.com 통합을 만들고, 데이터를 검색하고, 워크플로를 자동화하고, GitHub REST API를 사용하여 빌드합니다. docs.github.com](https://docs.github.com/ko/rest?apiVersion=2022-11-28) Java에서 GitHub REST API를 사용하는 방법에 대해 정리해봤습니다. 깃허브 API 말고도 다른 API에 요청을 보낼 때에도 응용할 수 있습니다. 의존성 추가 먼저 ..
[Java] Github API 사용하기
·
Programming Language/Java
프로젝트를 하면서 Github API를 사용하게 되었는데, 사용하는 방법을 소개해 드리도록 하겠습니다! 의존성 추가하기 https://mvnrepository.com/artifact/org.kohsuke/github-api 먼저 위 문서에서 Project Documentation - Project Information - Dependencies 에 들어가 API를 사용할 수 있도록 의존성을 추가하겠습니다. 가장 최근 버전을 선택하고 자신의 프로젝트와 맞게 선택한 후 의존성을 추가해주세요 implementation group: 'org.kohsuke', name: 'github-api', version: '1.315' 저는 gradle을 사용하기 때문에 위 코드를 dependencies에 추가했습니다. 사..
[JAVA] 소켓 프로그래밍, TCP 소켓 프로그래밍
·
Programming Language/Java
소켓 프로그래밍이란? 먼저 소켓(socket)이란 프로세스간의 통신에 가용되는 양쪽 끝단(endpoint)를 의미한다. 프로세스간의 통신을 위해서는 무언가가 필요한데 그것이 바로 소켓이다. 자바에서는 java.net패키지를 통해 소켓 프로그래밍을 지언하는데, 소켓통신에 사용되는 프로토콜에 따라 다른 조율의 소켓을 구현하여 제공한다. TCP와 UDP TCP/IP 프로토콜은 이기종 시스템간의 통신을 위한 표준 프로토콜로 프로토콜의 집합이다. TCP와 UDP 모두 TCP?IP 프로토콜에 포함되어 있으며, OSI 7계층의 전송계층에 해당하는 프로토콜이다. TCP와 UDP는 전송 방식이 다르며, 각 방식에 따른 장단점이 있다. 항목 TCP UDP 연결 방식 연결기반(connection-oriented), 연결 후..
[JAVA] 네트워킹 이해하기 & InetAddress
·
Programming Language/Java
네트워킹이란? 네트워킹이란 두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크를 구성하는 것을 말한다. 자바에서 제공하는 java.net 패키지를 사용하면 네트워크 어플레이케이션은 단 몇 줄의 자바 코드 만으로도 작성이 가능하다. 클라이언트 / 서버 클라이언트/서버는 컴퓨간의 관계를 역할로 구분하는 개념이다. 서버는 서비스를 제공하는 컴퓨터이고 클라이언트는 서비스를 사용하는 컴퓨터가 된다. 서버 기반 모델 네트워크를 구성할 때 전용 서버를 두는 것을 서버 기반 모델이라고 한다. 서버 기반 모델의 특징으로는 다음과 같다 안정적인 서비스의 제공이 가능하다. 공유 데이터의 관리와 보안이 용이하다. 서버구축비용과 관리비용이 든다. P2P 모델 별도의 전용서버없이 각 클라이언트가 서버역할을 동시에 수행하는 것을 P..
[JAVA] 패키지와 접근제어자
·
Programming Language/Java
패키지 선언 패키지의 물리적인 형태는 파일 시스템 폴더 패키지는 클래스의 일부분, 클래스를 유일하게 만드는 식별자 역할 클래스의 전체 이름은 패키지 이름 + 클래스 이름 package 상위패키지.하위패키지; 패키지 이름 작성 규칙 숫자로 시작해선 안되고 _, $를 제외한 특수 문자를 사용해서는 안된다 java로 시작하는 패키지는 자바 표준API에서만 사용하므로 사용해서는 안된다 모두 소문자로 작성하는것이 관례 import 문 사용하고자 하는 클래스 또는 인터페이스가 다른 패키지에 소속되어 있을 때 사용 import 상위패키지.하위패키지.클래스이름; import 상위패키지.하위패키지.*; 접근제한자 클래스 및 인터페이스 그리고 이들이 가진 멤버의 접근을 제한 public : 외부 클래스가 자유롭게 사용할 ..
[JAVA] 인터페이스(interface)
·
Programming Language/Java
인터페이스 객체의 사용 방법을 정의한 타입 개발 코드와 객체가 서로 통신하는 접점 역할 개발 코드가 인터페이스의 메소드를 호출하면 인터페이스는 메소드를 호출시킴 → 개발코드가 객체 매부 구조를 알 필요가 없고 인터페이스의 메소드만 알고 있으면 됨 인터페이스를 왜 사용하는가? → 개발 코드를 수정하지 않고 사용 객체 변경 → 리턴값 다양화 인터페이스 선언 물리적 형태는 클래스와 동일 [public] interface 인터페이스이름 { … } 첫 글자는 대문자로 하고 나머지는 소문자로 작성하는 것이 관례 상수필드와 추상 메소드만을 구성 멤버로 가짐 객체를 생성할 수 없기 때문에 생성자를 가질 수 없음 interface 인터페이스이름 { //상수 타입 상수이름 = 값; //추상 메소드 타입 메소드이름 ( 매개..