전체 글 27

자바의 특징

기술 스택을 Java로 바꾸게 되었다. 그래서 Java가 어떤 특징을 가지고 있는지 정리해보겠다. 1. 객체지향 언어 현대 개발 언어에서 가장 대중적으로 사용하는 객체지향 프로그래밍 언어이다. 객체지향의 특징인 상속, 캡슐화, 다형성 등이 잘 적용된 순수 객체지향 언어이다. 2. 자동 메모리 관리(가비지 컬렉션) 자바는 자동으로 메모리를 관리해주는 '가바지컬렉터'가 존재한다. 가비지 컬렉터는 프로그래머가 사용하지 않는 메모리를 체크하여 자동으로 반환, 정리해주는 역할을 하고 있다. 하지만 프로그래머의 의도와 다르게 자동으로 메모리를 반환하며 관리해주는 것이 비효율적일 수 있겠지만, 프로그래머가 보다 프로그래밍에 집중할 수 있는 환경을 만들어준다. 3. 운영체제에 독립적이다. 자바는 운영체제나 하드웨어와 ..

Java 2020.09.13

해시(hash)

해시(hash)란 해시란 다양한 길이를 가진 데이터(key)를 고정된 길이를 가진 암호화된 데이터(value)로 변환시키는 것이다. 암호화된 데이터는 단방향 암호화로 이루어진 특성을 가지고 있으며, 이러한 특성으로 인해 패스워드 설정, 블록체인 등에 사용한다. 또한, 해시는 해시 테이블(hash table)이라는 곳에 key와 value가 한 쌍으로 저장된다. 그리고 key값이 해시 함수를 통해 변환된 후, 다른 작업을 거쳐 배열의 인덱스로 변환된다. 그래서 이 배열의 인덱스를 이용해서 value를 찾을 수 있으므로 검색과 저장의 평균적인 시간 복잡도가 O(1)에 수렴하게 된다. 결론은 해시를 사용하면 장점은 1. key에 대한 암호화 2. 검색과 저장을 빠르게 할 수 있다! 위의 두 사진처럼 임의의 길..

시간복잡도

알고리즘을 평가하는 데는 2가지 기준이 있다. 첫째, 알고리즘 실행시간에 해당하는 시간 복잡도 둘째, 메모리 사용량에 해당하는 공간 복잡도. 일반적으로 알고리즘을 평가할 때는 메모리의 사용량보다 실행 시간에 초점을 준다. 그러므로 시간 복잡도에 대해 정리해보겠다. 시간 복잡도란? - 알고리즘이 다수의 입력값에 대한 문제를 얼마나 빠른 시간 내에 해결하는지 알 수 있는 척도(표기법). 알고리즘의 효율성을 판별할 수 있다. 시간 복잡도 표기법 3가지 1. 빅-오메가: 최고의 성능일 경우(Best Case) 2. 세타: 평균의 성능일 경우(Average Case) 3. 빅-오: 최악의 성능일 경우(Worst Case) 표기법의 3가지 중, 대부분 Big-O를 활용한다. 그 이유는, 평균의 성능 일 때가 좋아 ..

http

이번 글에는 http에 대해 정리해보겠습니다. 웹 개발 업무를 진행하며, 웹이 http프로토콜을 통해 클라이언트와 서버가 통신한다는 것을 알게 되었습니다. 그런데 http를 통해 통신한다는 것은 알겠는데 http가 어떠한 특징을 가지고 있는지에 대한 개념이 없었습니다. 그래서 이번 기회에 정리해보겠습니다. HTTP HTTP는 'Hyper Text Transfer Protocol'의 약자이면서 뜻 그대로 HyperText 전송 프로토콜입니다. 그리고 이 프로토콜은 웹에서 클라이언트(웹브라우저)와 서버가 데이터를 주고받는 데 사용하는 프로토콜(통신규약)이다. 그런데 여기서 HyperText가 무엇이냐면, ※HyperText 일반 텍스트와 달리 문장이나 단어 등이 링크를 통해 서로 연결된 네트워크처럼 구성된 ..

카테고리 없음 2020.08.29

깃, 깃허브 세팅 및 사용법

깃허브 세팅 및 사용법에 대해 정리해보겠다. 테스트 코드나 공부했던 소스코드들을 기껏 만들어놨는데 폴더 정리하면서 삭제하는 경우가 많다. 그래서 필요성을 느껴서 드.디.어 깃허브를 사용해보기로 마음먹었다! 셋팅을 하기 전에 먼저 깃과 깃허브에 대해 알아보겠다. 깃이란? - 소스코드 관리를 위한 분산 버전 관리 시스템 ※분산버전 관리 시스템이란? -> 여러명의 개발자가 특정 프로젝트를 자신의 컴퓨터로 협업하여 개발하면서 버전을 관리할 수 있는 시스템 그렇다면 git은 왜 필요한가? - 소스코드를 주고 받을 필요 없이, 같은 파일을여러 명이 동시에 작업하는 병렬 개발이 가능하다 - 분산 버전관리이기 때문에 인터넷이 연결되지 않은 곳에서도 개발을 진행할 수 있으며, 중앙 저장소가 날라가버려도 다시 원상복구할 ..

깃, 깃허브 2020.08.22

자바스크립트 객체

오늘은 객체에 대해 정리해보겠다. 자바스크립트는 일반 정적 언어들(c#, java, c++ 등)과 달리 class를 통해 객체를 생성하지 않아도 된다. ES6부터 class 문법이 추가돼서 class를 통해 객체를 생성할 수 있지만, 자바스크립트는 기본적으로 프로토타입 기반이기 때문에 굳이 class를 사용하지 않아도 된다! 일단 객체를 생성해보겠다. let car={ gear:1, speed:150, name:'m9 car', }; 리터럴 표현으로 객체를 생성해보았다. 객체에 대해 설명하기 앞서 '리터럴'을 설명해보자면, -리터럴이란 소스 코드의 고정된 값을 대표하는 용어다.(위키백과) - 즉, 변수, 상수, 객체 등에 저장되는 값들의 표현 방식이면서 이 코드에서는 car={...} 의 값들을 리터럴로..

Javascript 2020.08.21

데이터 타입

첫 글로 자바스크립트의 데이터 타입에 대해 정리해보겠다. 자바스크립트 데이터 타입은 크게 기본형과 참조형으로 분류할 수 있다. 기본형 기본형에는 Number, String, Boolean, null, undefined, Symbol 타입이 있다. 여기서 Number는 정수형, 부동소수형 상관없이 모두 8byte를 할당한다. 문자열은 글자당 영어는 1byte, 한글은 2byte 가 할당된다. 그래서 문자열에 대해서는 메모리가 가변적이다. 참조형 참조형에는 객체(Object)가 있다. 그리고 객체의 하위로 Array, Function, Date, RegExp, Map/weakMap, Set/WeakSet이 속해있다. 기본형의 특징과 데이터 처리 과정 그렇다면 이러한 데이터들이 자바스크립트에서 어떻게 처리되는..

Javascript 2020.08.19