일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- Interceptor
- OOP
- 자료구조
- typescript
- JWT
- GraphQL
- 변수
- winston
- java
- 인접행렬
- 탐욕법
- Deep Dive
- javascript
- nestjs
- 프로그래머스
- dfs
- html
- LifeCycle
- 알고리즘
- css
- Spring
- node.js
- MySQL
- logger
- TIL
- 코딩테스트
- REST API
- bean
- 인접리스트
- queue
- Today
- Total
목록분류 전체보기 (227)
처음부터 차근차근
오늘 한 일 Java 공부 진행 Set과 Map 정리 진행 Java 공부 과제 전형 진행 관련 Java 공부를 진행하였습니다. Java의 특징, 소스코드 분석을 하였습니다. Class 기반 객체 지향 프로그래밍 언어입니다. Class 기반 객체지향 언어라는 특징과, JVM을 이용해 다양한 OS에도 지원 가능하다는 특징이 있었습니다. 나머지 문법(변수, 연산자 등)은 거의 Javascript와 비슷하였습니다. Map과 Set에 대해 정리 Deep Dive를 통해 Map과 Set에 대해 정리하였습니다. Set은 수학적 구조인 집합을 나타내기 위해서 사용합니다. Map은 Object와 비슷하지만, 다른점이 많이 존재합니다. 저번 TIL에서도 적어놨듯이, Set과 Map은 Hash Table을 사용하기 때문..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/RibMK/btsBZHDpMcw/PFvJumtgDgh73ltgyMK8ok/img.png)
Set과 Map의 특징 Map과 Set 모두 Hash를 통해 구현합니다. 두 가지의 자료구조 특징 중 하나는 우리가 자주 사용하는 Array나 Object에 비해 데이터 삽입, 삭제, 조회를 할 경우 시간복잡도가 낮다는 점이 장점입니다. Optimizing hash tables: hiding the hash code · V8 ECMAScript 2015 introduced several new data structures such as Map, Set, WeakSet, and WeakMap, all of which use hash tables under the hood. This post details the recent improvements in how V8 v6.3+ stores the keys i..
연산자는 쉬우니 코드를 통해 간단하게 넘어가겠습니다. 자바 연산자 우선순위 암기법 참고 : 연산자 우선순위를 외우려고 하지 마세요. 아무도 외우지 않습니다. 다만, 코드를 작성할 때 주의할 것이 있습니다. 1. 상식선에서 우선순위를 사용하자. 우리는 덧셈보다 곱센이 우선순위인 것을 기초수학을 통해 배웠습니다. 이런것을 통해 상식선에서 우선순위를 사용하는게 개발자들끼리 코드를 리뷰하는데도 도움이 되고, 알아보기도 수월합니다. 2. 애매하면 괄호()를 사용하자. 우선순위를 고민할 것 같으면, 괄호를 사용하세요. 괄호는 가장 첫번째 우선순위입니다. 괄호 () 단항 연산자 (예: `++` , `--` , `!` , `~` , `new` , `(type)` ) 산술 연산자( `*` , `/` , `%` 우선, 그..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/vtTeq/btsB17uwVIy/fIkFBiM7KgQNlvTJRg1oY1/img.png)
변수 프로그래밍을 하다 보면 값을 저장해 둘 공간이 필요한데, 그 공간을 변수라고 합니다. 변수(variable)는 이름 그대로 변할 수 있다는 뜻을 의미하며, 공간에 들어간 값은 변할 수 있습니다. 변수 선언 저장공간, 즉 변수가 필요하다면 먼저 변수를 선언해야합니다. // 변수를 선언하는 방법 // 변수타입 변수이름; int a; 숫자 정수( `integer` )를 보관할 수 있는 이름이 `a` 라는 데이터 저장소를 만든다. 이것을 변수라 한다. 이렇게 변수를 만드는 것을 변수 선언이라 한다. 이제 변수 `a` 에는 숫자 정수를 보관할 수 있다. 정수 뿐만 아니라 문자, 소수와 같이 다양한 종류의 값을 저장할 수 있다. 변수를 선언하면, 메모리의 빈 공간에 '변수타입'에 알맞은 크기의 저장공간이 확보..
Java는 Class 기반 객체 지향 프로그래밍 언어이기 때문에, 모든 코드는 반드시 클래스 안에 존재해야 합니다. 그리고 서로 관련된 코드들을 구럽으로 나누어 별도의 클래스를 구성하고, 이 클래스들이 모여 하나의 Java Application을 이룹니다. Java application 만들어보기 Java가 어떻게 구동되는지 알기 위해서 코드를 직접 한번 작성해보았습니다. 먼저 intelliJ를 통해 Java project를 만들게 되면, 하나의 main.java 파일이 만들어지고, 그 안에는 이러한 코드가 들어있습니다. public class HelloJava { // 프로그램 시작 시점 public static void main(String[] args) { // 내부에 실행할 코드를 작성한다. Sy..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/899jE/btsBXKfTujW/RTwsVETrKE8SFeC6XBzR81/img.png)
JVM(Java virtual machine) 간단히 직역하면 자바를 실행하기 위한 가상 기계라고 할 수 있습니다. 자바로 작성된 애플리케이션은 모두 이 JVM에서만 실행되기 때문에 JVM은 필수적입니다. Java는 OS에 종속적이지 않다는 특징을 가지고 있는데, 이는 JVM을 통해서 가능합니다. Java의 소스코드는 CPU가 인식하지 못하므로 기계어로 컴파일 해줘야 합니다. 하지만 Java는 JVM이라는 가상 머신을 거쳐서 OS에 도달하기 때문에 OS가 인식할 수 있는 기계어로 바로 컴파일 되는게 아니라 JVM이 인식할 수 있는 Java bytecode(*.class)로 변환됩니다. 이렇게 변환된 bytecode는 기계어가 아니기 때문에 바로 OS에서 실행되지 않습니다. 대신 JVM이 OS가 bytec..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/drM5JV/btsBSaGsD7z/f25sjF4DhTCwIT4OIuNLsK/img.png)
Java란? 자바는 썬 마이크로시스템즈의 제임스 고슬링과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어이다. 1991년 Green Project라는 이름으로 시작해 1995년에 발표되었습니다. 처음에는 가전제품 내에 탑재해 동작하는 프로그램을 개발하기 위해 C++을 확장해서 사용하려 했지만, 그들의 목적을 이루기에는 부족했습니다. 그래서 C++의 장점을 도입하고 단점을 보완한 새로운 언어를 개발했습니다. 이 프로젝트 초기에는 가전제품이나 PDA와 같은 소형기기에 사용될 목적이였으나, 여러 종류의 운영체제를 사용하는 컴퓨터들이 통신하는 인터넷이 등장하자 운영체제에 독립적인 자바가 적합해졌으며, 현재는 웹 애플리케이션 분야에 가장 많이 사용되는 언어 중 하나입니다. Java의 특징 1. 운영체제에 독립..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cbtaJy/btsBUccLfoc/ZLN4wJueRMs7zPQbjzCUhk/img.png)
CSS 선택자의 종류 1. HTML 요소 선택자 (타입 선택자) CSS를 적용할 대상으로 HTML 요소의 이름을 직접 사용하여 선택할 수 있습니다. 특정 태그에만 적용하고 싶을 때 사용되며, 특정 태그 전체에 적용됩니다. /* p 태그에 style 적용시키기 */ p { color: blueviolet; margin: 0; } 2. id 선택자 id 선택자는 CSS에 적용할 대상으로 특정 요소를 선택할 때 사용합니다. #을 사용해서 구분합니다. id 선택자는 고유하게 적용하기 때문에, 한번만 적용하는 것이 원칙입니다. (여러 요소에 같은 아이디 이름을 사용해도 문제없이 동작하나, 중복된 아이디를 가지고 자바스크립트 작업을 하게 되면 오류가 발생하기 때문에 id는 한번만 적용하는 것이 좋습니다.) #con..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/beZ9mz/btsBRRNDibo/oYyCO2xcaYNd6Pv2YXZpuK/img.png)
CSS(Cascading Style Sheet)란? CSS는 사용자에게 문서를 표시하는 방법을 지정하는 언어입니다. 기본적으로 HTML은 마크업 언어로서, 구조화 된 문서 파일입니다. 콘텐츠의 구조를 정의하는 뼈대만 만들고, 그 안에 있는 내용을 보여주고 있지만, HTML만 사용한다면 굉장히 밋밋합니다. CSS를 통해 HTML 문서를 이쁘게 만들 수 있습니다. CSS는 HTML이나 XML같은 구조화 된 문서(Document)를 화면, 종이 등에 어떻게 렌더링할 것인지를 정의하기 위한 언어입니다. 즉, HTML의 각 요소(Element)의 style(design, layout 등)을 정의하여 화면(Screen) 등에 어떻게 렌더링하면 되는지 브라우저에 설명하는 언어입니다. 아래와 같이 글자 색을 바꾸고 싶..
오늘 한 일 코딩 과제 진행 중 Map을 활용한 성능 개선 Cache를 활용하여 Rate Limit 구현 Map을 활용한 성능 개선 Javascript Data Type 중 하나인 Map을 이용한 성능 개선 진행 Map은 Key-Value 형태로 이루어진 자료구조이다. Map의 특징 중 하나는, 해시 테이블 알고리즘을 통해 구현한다는 점이다. Javascript의 데이터 타입 중 하나인 Map을 활용하여 성능 개선을 진행했습니다. 코딩 과제의 목표는 크롤링한 데이터의 상품 카테고리 매칭 혹은 단어 치환입니다. 카테고리 혹은 단어 치환 List를 Map을 통해 성능 개선하였는데, 이때 Map은 해시 테이블 알고리즘으로 구현되어 있어서 어떤 데이터를 참조할 경우 시간복잡도가 O(1)이라는 것입니다. //..