본문 바로가기

분류 전체보기

(113)
Object 클래스의 hashCode() native code 밑바닥까지 파헤치기 결론부터 말하자면, OpenJDK 기준 Java 8 이후 부터는 hash값을 생성할 때, 객체의 메모리 주소는 활용하지 않으며, 쓰레드의 상태값을 활용하여 해시값을 생성합니다. 다른 JVM 구현체는 다를 수도 있습니다. hashCode() 메서드에 대해서 알아보기 전에, 이 글을 포스팅하게 된 이유를 말하고자 한다. ( 참고로, 이 포스팅은, Java 11 공식문서 와 openjdk github source 를 기준으로 확인한 것입니다. ) equals() 메서드에 의해 동일하다고 취급되는 객체가, HashTable 계열의 자료구조에서 사용될 때, 동일한 KEY로서 인식되기 위해, equals() 메서드를 오버라이딩하면, 반드시 hashCode() 메서드도 오버라이딩해줘야한다.왜냐하면, Hash~ 자료구.. 2024. 1. 21. 22:44
[DB] SQL 질문 정리 이 글은 데이터베이스 스터디 중 데이터베이스 기본개념 관련 질문을 정리한 것입니다. SQL에 대해서 설명해주세요. C언어와 같은 프로그래밍 언어와 어떤차이가 있나요? SQL이란 RDB와 상호작용하기 위한 컴퓨터 언어입니다. 데이터베이스를 관리 및 조작하기 위한 언어입니다. 이때, SQL은 DBMS가 어떤 동작을 수행하면 되는지 알려주는 역할을 합니다. C언어와 같은 프로그래밍 언어와 비교했을 때, SQL은 DB를 대상으로 하는 언어인 반면, C언어는 OS를 대상으로 한다는 점에서 다릅니다. 또한, SQL은 원하는 작업의 결과만을 기술하고, 그 작업이 어떻게 수행되는지 고려하지 않아도 되는 비절차적 언어인 반면, C언어는 절차적 언어입니다. 개발자가 작성한 SQL이 어떤 과정을 통해 실행 되는지 설명해주세.. 2024. 1. 18. 21:27
[DB] SELECT 문장 처리 순서 이 글은 데이터베이스 스터디 중 학습한 내용을 정리한 것입니다. SELECT DISTINCT column, AGG_FUNC(column_or_expression), … FROM mytable JOIN another_table ON mytable.column = another_table.column WHERE constraint_expression GROUP BY column HAVING constraint_expression ORDER BY column ASC/DESC LIMIT count; 위와 같은 쿼리문을 예시로 들겠다. 위 쿼리에서 각 절은 아래의 순서로 실행된다. 1. FROM & JOIN FROM절과 JOIN절이 가장 첫번째로 실행되며, 수행되어야 할 데이터 셋을 결정한다. 만약 FROM & .. 2024. 1. 18. 19:33
[DB] SQL -DDL 이 글은 데이터베이스 스터디 중 학습한 내용을 정리한 것입니다. CREATE 데이터베이스, 테이블, 프로시저등을 생성하기 위해서 사용된다. 테이블 생성 -- 문법 CREATE TABLE_테이블_이름 ( (1) 속성_이름 데이터_타입 [NOT NULL] [DEFAULT 기본_값] (2) [PRIMARY KEY (속성)] (3) [UNIQUE (속성_리스트)] (4) [FOREIGN KEY (속성_리스트) REFERENCES 테이블_이름(속성_리스트)] [ON DELETE 옵션] [ON UPDATE 옵션] (5) [CONSTRAINT 이름] [CHECK(조건)] ); -- 예시 CREATE TABLE Customer( CustomerID INT PRIMARY KEY, CustomerName VARCHAR(5.. 2024. 1. 17. 21:52
[DB] SQL 개요 이 글은 데이터베이스 스터디 중 학습한 내용을 정리한 것입니다. SQL이란? RDB와 상호작용하기 위한 컴퓨터 언어로서, 데이터베이스로 부터 데이터를 관리하고 조작하고, 필요한 데이터를 검색하기 위한 언어이다. DBMS는 SQL 쿼리를 처리하여, 요청된 데이터를 검색한 이후, 반환한다. 이때 SQL은 DBMS가 어떤 동작을 수행하면 되는지 알려주는 역할을 한다. 예를 들어, 데이터베이스에 어떤 구조의 테이블이 생성되어야 하는지 명령을 내릴 수 있고, 테이블로 부터 특정 조건에 일치하는 데이터를 조회하고, 특정 형태로 데이터를 반환받을 수 있다. C언어와 비교한 SQL의 특징 SQL은 비절차적 언어 SQL 언어는, 원하는 작업의 결과만을 기술하고, 그 작업이 어떻게 수행될 것인지는 고려하지 않아도 되는 비.. 2024. 1. 17. 20:21
[OS] 시스템콜, 그리고 관련된 개념들 이 글은 '운영체제 아주 쉬운 세가지 이야기' 책을 학습하고 정리한 내용입니다. 운영체제 아주 쉬운 세 가지 이야기 운영체제 아주 쉬운 세 가지 이야기 www.aladin.co.kr OS에서 가상화 기법을 구현하기 위해서 ‘성능 저하’, ‘제어 문제’라는 이슈를 해결해야 했다. 초기 OS 개발자들은 프로그램을 빠르게 실행시키기 위해, 가장 기초적인 접근법인 ‘직접 실행’을 적용하였다. (시스템콜 도입 배경) 직접 실행 (여기서 직접 실행이란, 프로그램이 시스템에 필요한 모든 연산들을 직접 통제 가능하다는 의미이다) 직접 실행이란 간단하다. 말그대로 프로그램을 CPU 상에서 실행시키는 것이다. 프로그램이 실행되기 위해서 OS는 아래의 절차를 수행한다. 프로세스 목록에 해당 프로세스 항목 생성 메모리 할당 .. 2024. 1. 17. 18:49
[OS] 운영체제 개요 이 글은 '운영체제 아주 쉬운 세가지 이야기' 책을 학습하고 정리한 내용입니다. 운영체제 아주 쉬운 세 가지 이야기 운영체제 아주 쉬운 세 가지 이야기 www.aladin.co.kr 운영체제란? OS(운영체제)란 프로그램을 쉽게 실행시키고, 여러 프로그램을 하나의 컴퓨터에서 동작할 수 있도록 하며, 여러 프로그램이 하나의 메모리를 함께 공유할 수 있게 하며, 프로그램이 컴퓨터의 물리적인 장치와 상호작용할 수 있게 도와주는 소프트웨어를 말한다. OS에서 위와 같은 기능들을 지원하기 위해, 도입한 핵심적인 개념은 ‘가상화(virtualization)’, ‘병행성(concurrency)’, ‘영속성(persistence)’이다. 가상화를 지원한다는 측면에서 가상 머신(virtual machine)리가 불리기도.. 2024. 1. 17. 17:08
[HTTP] 17. 내용 협상과 트랜스코딩 이 포스팅은 "HTTP-완벽 가이드" 책을 학습하고 정리한 것입니다. https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=49731592 HTTP 완벽 가이드 HTTP 규약이 어떻게 동작하고 웹 기반 애플리케이션을 개발하는 데 어떻게 사용하는지 설명한다. 하지만 이 책은 단순히 HTTP에 대해서만 다루지는 않는다. HTTP가 효율적으로 동작하도록 함께 사 더보기 HTTP 완벽 가이드 - 시리즈 01. HTTP 개관 02. URL과 리소스 03. HTTP 메시지 04. 커넥션 관리 05. 웹 서버 06. 프락시 07. 캐시(1) 07. 캐시(2) 10. HTTP/2.0 11. 클라이언트 식별과 쿠키 12. 기본 인증 14. 보안 HTTP 15. 엔터티와 인코딩 16... 2024. 1. 17. 15:19
[HTTP] 16. 국제화 이 포스팅은 "HTTP-완벽 가이드" 책을 학습하고 정리한 것입니다. https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=49731592 HTTP 완벽 가이드 HTTP 규약이 어떻게 동작하고 웹 기반 애플리케이션을 개발하는 데 어떻게 사용하는지 설명한다. 하지만 이 책은 단순히 HTTP에 대해서만 다루지는 않는다. HTTP가 효율적으로 동작하도록 함께 사 더보기 HTTP 완벽 가이드 - 시리즈 01. HTTP 개관 02. URL과 리소스 03. HTTP 메시지 04. 커넥션 관리 05. 웹 서버 06. 프락시 07. 캐시(1) 07. 캐시(2) 10. HTTP/2.0 11. 클라이언트 식별과 쿠키 12. 기본 인증 14. 보안 HTTP 15. 엔터티와 인코딩 16... 2024. 1. 17. 14:17
[HTTP] 15. 엔터티와 인코딩 이 포스팅은 "HTTP-완벽 가이드" 책을 학습하고 정리한 것입니다. https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=49731592 HTTP 완벽 가이드 HTTP 규약이 어떻게 동작하고 웹 기반 애플리케이션을 개발하는 데 어떻게 사용하는지 설명한다. 하지만 이 책은 단순히 HTTP에 대해서만 다루지는 않는다. HTTP가 효율적으로 동작하도록 함께 사 더보기 HTTP 완벽 가이드 - 시리즈 01. HTTP 개관 02. URL과 리소스 03. HTTP 메시지 04. 커넥션 관리 05. 웹 서버 06. 프락시 07. 캐시(1) 07. 캐시(2) 10. HTTP/2.0 11. 클라이언트 식별과 쿠키 12. 기본 인증 14. 보안 HTTP 15. 엔터티와 인코딩 16... 2024. 1. 16. 21:17
[HTTP] 11. 클라이언트 식별과 쿠키 이 포스팅은 "HTTP-완벽 가이드" 책을 학습하고 정리한 것입니다. https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=49731592 HTTP 완벽 가이드 HTTP 규약이 어떻게 동작하고 웹 기반 애플리케이션을 개발하는 데 어떻게 사용하는지 설명한다. 하지만 이 책은 단순히 HTTP에 대해서만 다루지는 않는다. HTTP가 효율적으로 동작하도록 함께 사 더보기 HTTP 완벽 가이드 - 시리즈 01. HTTP 개관 02. URL과 리소스 03. HTTP 메시지 04. 커넥션 관리 05. 웹 서버 06. 프락시 07. 캐시(1) 07. 캐시(2) 10. HTTP/2.0 11. 클라이언트 식별과 쿠키 12. 기본 인증 14. 보안 HTTP 15. 엔터티와 인코딩 16... 2024. 1. 16. 16:58
[책 서평] 퓨처 셀프 퓨처 셀프 ‘미래의 나는 어떤 모습일까?’라는 질문은 우리가 인생에서 쉽게 놓치는 중요한 진실에 이르게 한다. 즉, 미래의 나와 연결될수록 현재 더 나은 삶을 살게 된다는 것이다. 이 책은 미래의 내가 www.aladin.co.kr 저자는 말한다. "인간의 모든 행동은 목표지향적이다." (p.132) 지금 행하고 있는, '서평을 작성하는 행동'은 어떤 결과를 얻기 위함인지 고민하였다. 필자에게 서평은 책의 내용을 제 삶에 녹여내기 위한 방법인 것 같다. 책을 읽은 후, 내 삶에 적용하지 않는 것은, 활자를 읽는 행위에 불가하다고 생각한다. 더 성장하여, 추구하는 목적 또는 가치관을 실현하는 삶을 살고 싶기 때문에, 서평을 작성하게 되었다. 책의 내용 중 인상깊었던 부분 3가지를 소개하고자 한다. 1. 미.. 2024. 1. 14. 20:17
[DB] Real MySQL 8.0 - 4.1 MySQL 아키텍처 이 글은 Real MySQL 8.0 책을 읽고 정리한 것입니다. Real MySQL 8.0 1권 《Real MySQL》을 정제해서 꼭 필요한 내용으로 압축하고, MySQL 8.0의 GTID와 InnoDB 클러스터 기능들과 소프트웨어 업계 트렌드를 반영한 GIS 및 전문 검색 등의 확장 기능들을 추가로 수록했다. www.aladin.co.kr 4.1.1 MySQL의 전체 구조 MySQL은 대부분의 프로그래밍 언어로부터 접근 방법을 모두 지원한다. 위 이미지에 ‘MySQL Connectors’에 명시된 것 처럼, C, JDBC, ODBC, 등등 표준 드라이버를 제공한다. MySQL 서버는 ‘MySQL 엔진’과 ‘스토리지 엔진’으로 구분할 수 있다. 4.1.1.1 MySQL 엔진 MySQL 엔진은 대표적으로 .. 2024. 1. 12. 15:05
[DB] 데이터베이스 기본개념 관련 질문정리 이 글은 데이터베이스 스터디 중 데이터베이스 기본개념 관련 질문을 정리한 것입니다. 파일시스템과 데이터베이스의 차이점에 대해서 설명해주세요. 응용 프로그램의 관점에서 봤을 때, 두 데이터 저장기법의 가장 큰 차이점은, 먼저 파일 시스템은 데이터가 중복되고 프로그램이 데이터 구조에 종속되는 반면, 데이터베이스에서 데이터는 중복을 통제할 수 있으며 프로그램이 데이터 독립적이 된다는 점입니다. 동시 공유라는 특징에서는, 파일 시스템에서는 파일에 대해 오직 하나의 프로그램만 접근이 가능한 방면, 데이터베이스는 여러 프로그램이 동시에 데이터에 접근 가능하다는 차이점이 존재합니다. 데이터베이스의 특징에 대해 설명해주세요. DB의 특징 중 첫번째는 ‘실시간 접근’입니다. DB는 사용자의 요청에 대해 실시간으로 응답할.. 2024. 1. 11. 15:11