일단 씻고 나가자

23.05.10 본문

Study/닥치는 대로 주워 담기

23.05.10

일단 씻고 나가자 2023. 5. 11. 23:14

2023. 05. 10 수요일

 

- [Java] 두 시간을 문자열로 받았을 때, 두 시간의 분 차이를 계산하는 방법?

: String time1 = “10:00”; String time2 = “12:00”;일 때

SimpleDateFormat sdf = new SimpleDateFormat(“HH:mm”);

Date date1 = sdf.parse(time1); long timeMilli1 = date1.getTime();

Date date2 = sdf.parse(time2); long timeMilli2 = date2.getTime();

구하고자 하는 값은 (timeMilli2 timeMilli1) / 1000() || / 60000() 이 된다.

 

이때 SimpleDateFormatjava.text. , Datejava.util. 에 있으며

sdf.parse 시에 ParseException이 발생할 수 있으므로

java.text. 에 있는 해당 클래스를 import하고 try-catch 해야 한다.

 

 

- 해시테이블의 용어? Direct-address table이란?

해시 테이블이란 키를 해시 함수로 변환하여 index를 정하고, 해당 인덱스에 실제 키와 값을 저장해둔 곳을 버킷이라 한다.

 

Direct-address table이란 키의 개수만큼 버킷이 존재하는 것이다. 대표적으로 값을 index와 똑같이 취급하여 만든 배열이 있는데, 11 대응으로 해시 충돌이 일어나진 않는 장점이 있지만 개수가 적을 때 key 자체의 값이 클 경우 공간이 낭비된다는 비효율성이 있다.

(ex. [10, 100, 200] 일 때 200의 공간 배열을 만들고 10, 100, 200 index에 저장.)

 

 

- [Effective Java] equals를 재정의할 때 hash code의 활용 방법? lombok이란?

: equals를 재정의 시에 public int hashCode() 함수도 재정의해주어야 한다.

보통 모든 매개변수에 대하여 변수.hashCode() 의 반환 int 값을 모두 연산하는 방법으로 재정의할 수 있으며, return Objects.hash(매개변수, 매개변수..) 등으로 활용할 수 있으나 속도가 느림. (내부적으론 result = result * 31(소수) + 각 변수들의 hashCode 방안을 쓴다고 한다.)

 

매번 매개변수 들의 값을 연산하긴 힘들므로 lombok을 활용할 수 있다. (가독성)

lombok이란 반복되는 메소드를 Annotation을 사용하여 자동으로 작성해주게끔 하는 라이브러리이다.

예시로 @Getter, @Setter 등이 있으며, @Data 어노테이션을 통해

@ToString, @EqualsAndHashCode, @Getter

모든 non-final field에 대하여 @Setter, @RequiredArgsConstructor을 설정해준다.

https://jiurinie.tistory.com/20

 

 

- [Git] fetch?

: pull과 유사하나, 원격 저장소의 내용을 다운받아 바로 지역저장소의 branch로 병합하는 pull과 달리 다운로드만 받고 아무 반영을 하지 않는 기능.

fetch를 이용하면 현재 branch는 가장 최근의 commit을 가리키고 있지만, remote는 다운 받은 commit을 가리키고 있다.

, pull = fetch + merge

 

 

-리눅스의 탄생 역사?

: 리누스 토발즈(Linus Torvalds)가 기존의 대학에만 있던 UNIX 운영체제를 집에서 사용하기 위해, 다중 사용자 및 다중 작업(시분할 시스템, 멀티 태스킹)을 지원하는 UNIX와 유사한 운영체제를 개발.

 

리차드 스톨만이 각 회사에서 UNIX를 개발하고 해당 기능을 공유하지 않는 문화에 반발하여 GNU 프로젝트 (일종의 재단)를 시작, 1985년 기술 공유와 소스 오픈의 장려를 모토로 GNU 선언문을 발표하고 GNU 프로젝트 지원을 위해 자유 소프트웨어 재단(FSF) 설립과 GNU 공개 라이선스(GPL) 규약을 제공. 이때 GPL 프로그램이란 제공된 소스를 활용하거나 수정 및 재배포 시에 해당 소스도 배포해야 한다는 규약. (apache가 그 예시)

UNIX의 커널과 쉘 프로그램 및 여러 프로그램을 UNIX를 대체할 정도로 완벽히 구현하려고 한 커널이 GNU Hurd이고, 커널은 아직도 미구현인 상태이다. 그때 나타난 것이 리누스 토발즈의 리눅스 커널 소스 오픈이고, 그 소스를 기반하여 GNU 프로젝트와 리눅스 커널이 통합 개발됨. 그것이 현재의 리눅스이며, 본명은 GNU/Linux이나 리눅스로 굳혀짐.

 

'Study > 닥치는 대로 주워 담기' 카테고리의 다른 글

23.05.12  (0) 2023.05.13
23.05.11  (0) 2023.05.12
23.05.09  (0) 2023.05.10
23.05.04  (0) 2023.05.05
23.05.03  (0) 2023.05.04