[Java] 컬렉션 프레임워크의 HashSet과 HashMap, HashTable과 Hashing이란
·
Programming Language/Java
자바의 컬렉션 프레임워크인 HashSet, Hash Map과 HashTable과 Hashing에 대한 개념을 작성한 글입니다. HashSet HashSet은 자바 컬렉션 프레임워크(Collection Framework)에서 제공하는 Set 인터페이스를 구현한 클래스 중 하나입니다. Set의 특징대로 HashSet은 중복된 요소를 저장하지 않습니다. 또한 저장 순서를 유지하지 않으므로 저장 순서를 유지하고자 한다면 LinkedHashSet을 이용해야 합니다. HashSet은 해시 테이블을 기반으로 하기 때문에 해시 함수에 의해 요소들이 저장되는 공간인 버킷(Bucket)으로 구성됩니다. 요소의 해시 코드를 계산하여 해당하는 버킷에 요소를 저장하고, 동일한 해시 코드를 가진 요소는 동일한 버킷에 저장됩니다...
[JavaScript] Window.lacalStorage와 Window.sessionStorage
·
Programming Language/JavaScript
localStorage와 sessionStorage 로컬 스토리지와 세션 스토리지는 자바 스크립트에서 사용되는 웹 스토리지 옵션입니다. 이 두 가지 기능은 웹 브라우저에서 키와 값으로 이루어진 데이터를 저장하는 데에 사용됩니다. 쿠키와의 차이점 웹 브라우저에 데이터를 저장하는 것이 쿠키와 유사하다고 생각할 수 있지만 다음과 같은 차이점이 존재합니다. 쿠키와 달리 네트워크 요청 시 서버로 전송되지 않는다 개발자가 브라우저 내 웹 스토리지 구성 방식을 설정할 수 있다 쿠키와 달리 HTTP 헤더를 통해 객체를 조작할 수 없다 프로토콜과 서브 도메인이 다르면 데이터에 접근할 수 없다 제공하는 프로퍼티와 메서드 공통 프로퍼티 localStorage.length 및 sessionStorage.length: 스토리지..
[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에 추가했습니다. 사..
[JavaScript] async와 await
·
Programming Language/JavaScript
async 함수 async와 await이라는 문법을 사용하면 프로미스를 더 편하게 사용할 수 있습니다. async 는 function 앞에 위치합니다. async function fnc(){ return 0; } 함수 앞에 async를 붙이면 그 함수는 항상 프로미스를 반환합니다. async function fnc() { return 'hello'; } fnc().then(alert); 명시적으로도 프로미를 반환할 수 있습니다. async function fnc() { return Promise.resolve(1); } fnc().then(alert); 위 두 개의 코드의 결과는 같습니다. 즉, async가 붙은 함수는 반드시 프로미스를 반환해 프로미스가 아닌 returun값은 프로미로 감싸 반환합니다...
[JavaScript] Promise 객체 기본 개념
·
Programming Language/JavaScript
프로미스 객체란? 프로미스(Promise) 객체는 비동기 작업의 최종 완료 또는 실패를 나타내는 객체입니다. 즉 비동기 함수의 실행 상태에 따라 각각의 함수를 호출하여 작업의 결과를 나타내는 것입니다. 예시 비동기적으로 이미지파일을 생성하는 createImageFile() 이라는 함수가 있을 때, 이 함수의 파라미터로는 (1)이미지 파일의 이름, (2)성공 시 호출할 함수, (3)실패 시 호출할 함수가 있습니다. function createImageFile(fileName, successCallBack, failureCallBack){ // 이미지 파일 생성중 if(success) successCallBack(fileName); else failureCallBack(fileName); } 프로미스가 나타..
[JavaScript] 비동기 처리와 콜백 함수
·
Programming Language/JavaScript
동기와 비동기 동기 (Synchronous) 자바스크립트에서 코드는 기본적으로 작성한 순서에 따라 위에서부터 아래로 순차적으로 실행되는데, 이처럼 순차적으로 코드를 실행하는 것을 동기라고 합니다. console.log("1번"); console.log("2번"); console.log("3번"); 위 코드를 실행하면 결과는 1번 2번 3번 이 됩니다. 마트에서 계산을 하기위해 카운터에서 기다릴 때를 생각해보세요. 앞 사람의 계산이 끝나야 뒤의 사람의 계산이 시작됩니다. 동기도 이처럼 앞의 작업을 완료가 되어야 다음 작업을 실행할 수 있습니다. 자바 스크립트는 기본적으로 동기적으로 동작합니다. 동기적으로 동작하는 코드는 작성된 수서에 따라 작업이 진행되므로 작업의 흐름을 파악하기 쉽습니다. 그런데, 위와 ..
[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..
[JavaScript] 데이터 단위 변환기 토이 프로젝트 만들어보기
·
Programming Language/JavaScript
안녕하세요~ 드디어!! 자바 스크립트의 함수, 액션리스너를 사용하여 데이터 단위 변환기 프로젝트를 진행해보겠습니다. 진짜... 너무 쉬워서 한시간이면 다 만들거에요 HTML, CSS 소스 준비 깃허브, zip 파일 소스코드 복사 등 편하신 방법으로 소스를 준비해주세요. 깃허브를 가장 추천드립니다. 내가 깃허브를 잘 못다룬다! 싶으시면 ctrl+c, crtl+v 를 가장 추천합니다... https://github.com/hyeg0121/2WeeksStudy_JavaScript GitHub - hyeg0121/2WeeksStudy_JavaScript: 2동안 자바 스크립트의 함수와 이벤트, 객체를 공부하여 데이터 2동안 자바 스크립트의 함수와 이벤트, 객체를 공부하여 데이터 양 계산 웹페이지 만들기. Con..
[JavaScript] DOM 객체로 HTML 요소의 속성 바꾸기
·
Programming Language/JavaScript
안녕하세요!! 오늘은 체크박스나 셀렉트 등 다양한 HTML 폼 요소에 접근하여 속성을 바꾸는 방법에 대해 알아보도록 하겠습니다! 실습 준비 실습 전 다음 소스를 복사 붙여넣기 하여 HTML 파일과 JS 파일을 준비 해주세요! (두 개의 파일은 편의상 같은 디렉토리에 위치시켜 주세요) demo.html 이메일 주소 : == 이메일 선택 == naver.com gmail.com hanmail.net HTML 파일을 실행시키면 위와 같은 폼들이 보일 것입니다. 각각 코드로 구현된 부분은 다음과 같습니다. label : 텍스트 (이메일 주소 :) input type="text" : 텍스트 입력 필드 select : 콤보박스 option : 콤보박스의 옵션 input type="checkbox" : 체크박스 다음..