hashCode를 구현할 때 31 숫자를 많이 사용한다. 그래서 그 이유에 대해서 찾아보았다. 홀수인 소수이다 첫번째로 31은 소수이기 때문에 사용된다. 소수인 경우에는 값을 곱하였을 때 더 분산이 잘 된다. 만약 소수가 아닌 경우(다른 수로도 배수가 만들어지는 경우)에 충돌이 발생하기 쉽기 때문이다. 짝수로 해시값이 나오는 경우에는 홀수 번째 자리를 효율적으로 사용하지 못한다. 따라서 소수를 사용해서 충돌을 최대한 방지하는 것이다. 쉬프트 연산을 사용할 수 있다 X * 31은 쉬프트 연산과 뺄셈 연산으로 표현할 수 있다. X * 31 X * (32 - 1) X * 32 - X X
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bqRtAC/btro3809Nxo/e4bkftvIbn563SrwV06it1/img.png)
브라우저 주소창에 주소를 입력하면 브라우저는 HTTP GET 요청을 주소에 해당하는 서버로 전송한다. 프론트엔드가 있는 웹 서비스라면 HTML 파일을 보내준다. 받은 HTML파일은 다음과 같은 두 단계를 거쳐 HTML 파일을 브라우저에 보여준다. 1. 파싱 2. 렌더링 파싱 파싱은 렌더링의 전처리 단계이다. 파싱 단계에서는 다음과 같은 일을 한다. 1. HTML을 트리 형태인 DOM 트리로 변환 2. IMAGE, CSS, SCRIPT와 같은 리소스 다운로드 3. CSS는 CSSOM 트리로 변환 4. 자바스크립트를 인터프리트, 컴파일, 파싱 및 실행 렌더링 파싱 후 렌더링 단계를 거친다. 렌더링은 다음과 같은 일을 한다. 1. 내용인 DOM 트리와 디자인인 CSSOM 트리를 합쳐 렌더 트리 생성 2. 노드..
로그 레벨은 로그 메시지에 포함된 메시지의 중요성과 긴급성에 대한 대략적인 정보라고 할 수 있다. 치명적인 정도에 따른 순서는 다음과 같다. FATAL ERROR WARN INFO DEBUG TRACE FATAL 응용 프로그램의 중요한 비즈니스 기능 중 하나가 더 이상 작동하지 않는 상태에 진입했을 때 혹은 전체 프로그램이 비즈니스 기능을 수행하지 않을 때 알려주는 로그 수준이다. 데이터베이스와 같은 중요한 저장소에 연결할 수 없는 경우 이에 해당된다. ERROR 응용 프로그램이 하나 이상의 기능이 제대로 작동않아 일부 기능이 올바르지 않게 작동하지 않을 때 사용한다. WARN 예기치 않은 일이 발생했음을 나타내는 로그 레벨이지만, 응용 프로그램이 실패했다는 것을 의미하지는 않는다. 예기치 않은 상황에서..
REST는 Representational State Transfer의 약자로 아키텍처 스타일이다. 아키텍처 스타일은 반복되는 문제 상황을 해결하는 도구이다. 이와 유사한 말로 아키텍처 패턴이 있는데 이는 반복되는 아키텍처 디자인을 의미한다. REST는 웹 서비스에서 자주 사용되는 HTTP 위에서 느슨하게 결합되는 애플리케이션 설계를 위한 스타일이다. REST 제약 조건 REST 아키텍처는 6가지 제약조건으로 구성된다. 1. Uniform Interface 2. Client-Server 3. Stateless 4. Casheable 5. Layered System 6. Code on demand (선택) 이 제약조건을 따르는 API를 RESTful API라고 한다. Uniform Interface 인터페이..
JSON은 속성-값의 쌍으로 오브젝트를 표현하는 문자열이다. 오브젝트는 메모리에 할당된 일종의 데이터이다. JSON에는 Javascript라는 말이 있는데 자바스크립트 언어로부터 파생되어 자바스크립트의 오브젝트를 생성하는 형식과 같아 이런 이름이 붙여졌다. https://sdardew-valley.tistory.com/entry/TIL-%EC%A7%81%EB%A0%AC%ED%99%94%EB%9E%80 [TIL] 직렬화란? 공부를 하는 도중에 직렬화란 말이 많이 나와서 정리해본다. 🌱 직렬화(Serialization)? 메모리에 있는 객체를 바이트 스트림으로 바꾸는 것이다. 🌱 직렬화를 하는 이유? 디스크에 저장을 하거나 sdardew-valley.tistory.com 위의 글을 보면 직렬화와 역직렬화라는..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/33zR6/btrnGj3pgcc/httVAHEmql6z6oQp3ar0qK/img.jpg)
개발을 하다보면 프론트엔드와 백엔드가 구분되어있는 것을 확인할 수 있다. 이를 Decoupled Architecture이라고한다. Decoupled Architecture를 알아보기 전에 전통적인 웹사이트 아키텍처를 이해해야 한다. 전통적인 아키텍처 - Monolithic Architecture Monolithic Architecture의 구조는 아래와 같다. 이 구조는 많은 기능이 동일한 코드베이스 내에 있다. 이 구조에서는 동일한 코드베이스 내에 있는 기능을 통해서 작업을 처리하게 된다. 코드베이스란? 특정 소프트웨어 시스템, 응용 소프트웨어, 소프트웨어 구성 요소를 빌드하기 위해 사용되는 소스 코드의 모임 따라서 이런 단일 소프트웨어는 백엔드 로직과 웹 사이트 프론트엔드 렌더링까지 모두 담당하게 된..
- Total
- Today
- Yesterday
- graphql
- hashcode
- 코틀린
- 2차 인터뷰
- postman collection
- postman tests
- Basic Type
- mysql
- Python
- DGS Framework
- github
- pm.test
- squash merge
- 1차 인터뷰
- git
- solidity
- 네이버 2022 공채
- pm.expect
- java
- postman
- downTo
- go 특징
- Squash and merge
- Kotlin In Action
- string
- 주생성자
- python3
- Kotlin
- 확장 함수
- 코딩테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |