hstory0208의 등록된 링크

키자드에 등록된 총 346개의 포스트를 확인하실 수 있습니다.

Tistory

(Java/자바) 프로그래머스 Lv1 - 정수 제곱근 판별

문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 n은 1이상, 50000000000000 이하인 양의 정수입니다. 입출력 예 n return 121 144 3 -1 입출력 예#1 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다. 입출력 예#2 3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다. Solution.java 나의 풀이 class Solution { public long solution(long n) { long sqrt = (long) Math.sqrt(n); if..

Tistory

Java - 특수 문자 다루기

\ " 역슬래쉬 " 를 이용해 아래 옵션으로 다양한 방식으로 문자를 표현할 수 있습니다. 특수문자 문자 리터럴 tab ( 들여쓰기 ) \t backspace ( 한 글자 지우기 ) \b form feed ( 프린터에 보내면 연속용지가 다음 페이지의 시작 부분으로 넘겨진다. ) \f new line ( 줄 바꿈 ) \n carriage return ( 현재 줄에서 젤 앞으로 보낸다 ) \r 역슬래쉬 나타내기 \\ 작은따옴표 나타내기 \' 큰따옴표 나타내기 \" 공백 나타내기 \0 유니코드(16진수)문자 \u 예제 코드 public class SpecialCharEx { public static void main(String[] args) { // TODO Auto-generated method stub S..

Tistory

Java - 변수의 타입 (기본형과 참조형)

data의 type 우리가 주로 사용하는 값 ( data ) 의 종류 ( type )은 크게 "문자와 숫자"로 나눌 수 있으며, 숫자는 다시 "정수와 실수"로 나눌 수 있습니다. 이런 값( data )의 종류 ( type )에 따라 값이 저장될 공간의 크기와 저장형식을 정의한 것을 자료형 ( data type ) 이라고 합니다. 자바 프로그래머 권장 규칙 1. 클래스 이름의 첫 글자는 항상 대문자로 한다. => 변수와 메서드의 이름의 첫 글자는 항상 소문자로 한다. 2. 여러 단어로 이루어진 일므은 단어의 첫 글자를 대문자로 한다. => lastlndexOf, StringBuffer 3. 상수의 이름은 모두 대문자로 하고, 여러 단어로 이뤄진 경우 "_"로 구분한다. ( 상수란 고정된 값, 변하지 않는 ..

Tistory

Java - 상수와 리터럴 ( constant 와 literal ) 이란?

상수 ( constant ) 상수란 변수와 마찬가지로 "값을 저장할 수 있는 공간"이지만, 변수와 달리 한번 값을 저장하면 달느 값으로 변경할 수 없습니다. 즉, 한 번 선언하면 값은 고정됩니다. java에서 상수를 선언하는 방법은 변수와 동일하며 변수의 타입 앞에 "final"을 붙여주면됩니다. 그리고 상수의 이름은 모두 대문자로 한다는 규칙에 따라 모두 대문자로 작성합니다. final int MAX_SPEED = 100; // 상수 MAX_SPEED를 선언하고 초기화 final int MAX_SPEED; // Error : 상수는 선언과 동시에 초기화 해야한다. final int MIN_SPEED = 10; // MIN_SPEED를 선언과 동시에 초기화했음 MIN_SPEED = 200; // Erro..

Tistory

Java - print, println, printf 출력문의 모든 것

자바스크립트에서는 console.log() 로 출력결과를 보고 Java에서는 System.out.print() 를 통해 출력 결과를 볼 수 있습니다. 우선, print와 println은 간단합니다. 다음 코드를 통해 쉽게 이해할 수 있습니다. print print는 한줄로 결과를 출력합니다. System.out.print("자바의"); System.out.print(" 정석"); System.out.print(" 정독하기"); println println은 각 결과를 줄 바꿈을 통해 출력합니다. System.out.println("자바의"); System.out.println(" 정석"); System.out.println(" 정독하기"); printf - 형식화된 출력 보통 출력의 결과를 보고 싶을 때..

Tistory

멀티 프로세스와 멀티 스레드란 ?

이전 포스팅에선 프로세스와 스레드에 대해 알아보았습니다. 이번 포스팅에선 멀티 프로세스와 멀티 스레드에 대해 알아볼건데요. 프로세스와 스레드가 무엇인지에 대해 이해가 안가신다면 아래 포스팅을 참고하시면 됩니다. 프로세스와 스레드(process, thread)에 대해 알아보자. Process ( 프로세스 ) “프로그램 ( 어떤 작업을 위해 실행할 수 있는 파일 .exe )이 메모리에 올라와 운영체제로 부터 CPU를 할당받고 프로그램이 연속적으로 실행되고있는 상태.” ( 일을 처리하는 hstory0208.tistory.com 멀티 프로세스 ( Multi Process ) 하나의 프로세스는 하나의 작업만 처리할 수 있기 때문에 여러 작업을 동시에 처리할 수 없습니다. 그렇기 때문에 부모 프로세스를 fork 해..

Tistory

TDD ( 테스트 주도 개발 ) 란 ?

TDD ( Test Driven Development ) TDD란 "Test Driven Development"의 약자로 "테스트 주도 개발"이라고 합니다. 제품이 오류 없이 정상 작동하는지 확인하기 위해 모든 코드는 프로그래머가 작성하고 나서 테스트를 거치게 되는데, TDD에서는 제품의 기능 구현을 위한 코드와 별개로, 해당 기능이 정상적으로 움직이는지 검증하기 위한 테스트 코드를 작성합니다. 이를 통해 테스트가 실패할 경우, 테스트를 통과하기 위한 최소한으로 코드를 개선하고, 최종적으로 테스트에 성공한 코드를 리팩토링 하는 과정을 거칩니다. TDD 개발 절차 테스트 주도 개발은 다음과 같은 개발 절차를 가집니다. RED ( Write a failing test ) : 실패하는 테스트 코드를 먼저 작성..

Tistory

[Linux] kernel(커널) 이란 ? 쉽게 알아보자

컴퓨터는 크게 2가지로 구분할 수 있습니다. 물리적으로 만질 수 있는 하드웨어(키보드, 모니터, 컴퓨터 본체와 본체 안에 있는 CPU, 메모리 등) 물리적으로 존재하지 않는 소프트웨어 그리고, 소프트웨어는 운영체제(Linux, MacOS, Windows 등)와 그 위에 설치되는 프로그램인 응용 프로그램 (Exel, Chrome 등)으로 다시 나눌 수 있습니다. 그리고 운영체제는 커널(Kernel)과 시스템 프로그램으로 구분됩니다. 커널(Kernel)과 시스템 프로그램 커널은 운영체제의 핵심부분으로써 주로 디바이스 관리, 프로세스 관리, 메모리 관리, 시스템 콜 제공 같은 기능을 관리하는 등, 컴퓨터 자원을 관리합니다. 하지만 커널은 항상 컴퓨터 자원들만 바라보고 있어 사용자와 직접적인 상호작용은 하지 않..

Tistory

(javascript) - Lv1 : 문자열 내 맘대로 정렬하기

문제 설명 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 제한 조건 strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인 문자열입니다. 모든 strings의 원소의 길이는 n보다 큽니다. 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다. 입출력 예 입출력 예 1 "sun", "bed", "car"..

Tistory

프로세스와 스레드(process, thread)에 대해 알아보자.

2022.10.04 - [CS 기초 지식/[운영체제]] - 멀티 프로세스와 멀티 스레드란 ? Process ( 프로세스 ) “프로그램 ( 어떤 작업을 위해 실행할 수 있는 파일 .exe )이 메모리에 올라와 운영체제로 부터 CPU를 할당받고 프로그램이 연속적으로 실행되고있는 상태.” ( 일을 처리하는 일련의 과정 ) 음식을 예로 우리가 치킨을 먹기 위해 BBQ 치킨에 갔다고 가정해봅시다. BBQ에가서 치킨을 주문시키면 BBQ의 레시피를 주는 것이아니라 BBQ만의 특별한 레시피를 가지고 치킨을 만들어 주겠죠 ? 여기서 레시피가 코드 파일 ( 프로그램 )이고, 치킨은 프로그램이 실행 되어 우리가 사용할 수 있는 프로세스 입니다. 레시피를 통해 치킨을 만드는 것처럼, 코드 파일( 프로그램 )을 실행 시켜 "프..

Tistory

Git(깃)과 Github(깃허브)의 차이점에 대해 알아보자.

개발을 하다보면 자연스럽게 사용하게 되는 git과 Github 사실 저는 이 두 개가 같은 건줄알고 Github 줄인 말이 git인줄 알았습니다 ㅋㅋ; 하지만 CS 면접 나오는 대표적인 질문들 중 하나이기에 이번 포스팅으로 차이점을 알아보고자 합니다. Git ( 깃 ) 이란 ? 로컬 파일의 변경사항을 기록하고 해당 파일에 대한 여러 사용자 간의 작업을 조율하기 위한 분산형 버전 관리 시스템(VCS : Version Control System) 입니다. Git 이 왜 필요한지에 대해 살펴보자면, 우리가 과제를 제출할 때를 봅시다. 처음에 과제를 완성했다하고 이름을 저장했을 때는 "김김씨 과제.pdf"라고 저장할 것입니다. 근데, 다시 확인을 해보니 수정이 필요해 이전 파일이 필요할지도 모르니 복사하여 ..

Tistory

Linux (리눅스) 란 ?

개발을 하다보면 Linux 라는 단어에 대해 수도 없이 들어봤을겁니다. Linux가 운영체제인것 까진 그래도 알겠지만 정확히 뭐고 왜 사용하는지에 대해선 알지 못하기 때문에 이번 포스팅을 통해 Linux가 무엇인지, 왜 사용하는지?에 대해 간단히 알아보고자 합니다. UNIX 리눅스를 알기 전 먼저 리눅스의 조상인 유닉스에 대해 알아야 합니다. 유닉스에 대해 간단하게 알아보자면, 1965년 MIT, AT&T 벨 연구소, General Electric 소속 개발자들이 모여 멀티태스킹(다중작업)을 지원하는 멀틱스(Multics)라는 운영체제를 개발하기 시작했습니다. 하지만 이 당시 멀티태스킹 작업은 너무나도 어려운 작업이였기 때문에 실패했었습니다. 그 이후 프로젝트를 만들던 직원들이 따로 나와 멀틱스 프로젝트..

Tistory

[Linux] Shell 이란 ? 쉽게 알아보자.

Shell이란, 사용자의 명령어를 운영체제가 알아들을 수 있도록 해석하고 커널에게 전달합니다. 그리고 커널은 해석된 명령어를 받아 하드웨어에 직접적으로 명령을 내립니다. shell의 예시로 우리가 cmd에서 명령어를 칠 때를 봅시다. shj@DESKTOP-DS69STB:~$ ls -l 저는 이와 같은 ls -l 이라는 명령어를 쳤습니다. 하지만 해석하지못하면, 하드웨어는 "이게 뭔 말이야"라고 하며 이해하기 힘듭니다. 그래서 Shell이 필요하고 Shell이 "ls -l" 은 "현재 디렉토리에 있는 내용들을 -l 옵션으로 긴 목록 형식으로 출력해주세요"라고 해석해줍니다. 그러면 해석된 명령을 커널에게 전달하고 커널은 하드웨어에게 해석된 명령을 실행하라합니다. Shell의 주요 기능들 사용자와 커널 사이에..

Tistory

SSH (Secure SHell) 란? 쉽게 이해해보자.

"Secure Shell Protocol" 즉 네트워크 프로토콜 중 하나로 컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해 서로 통신을 할 때 보안적으로 안전하게 통신을 하기 위해 사용하는 프로토콜입니다. SSH는 개발을 하다보면 한번씩은 꼭 접해봤을 겁니다. 대표적인 예로는 Github을 사용할 때로, Github에 코드를 푸쉬하거나 Github 레포지토리를 clone할 때 사용하기도 합니다. SSH를 사용하면 네트워크 상의 다른 컴퓨터에 원격 로그인하여 ( 예를 들어, AWS EC2 원격접속 ), 원격 시스템에서 명령을 실행하고, 다른 시스템으로 파일을 복사 ( SCP 명령어 ) 할 수 있습니다. 데이터 전송 원격 접속 원격 제어 SSH를 사용하는 이유는, FTP나 Telnet과 같..

Tistory

동기와 비동기의 개념 및 차이에 대해 쉽게 알아보자.

동기(Synchronous) 방식 동기란, 말 그대로 동시에 일어난다는 뜻입니다. 요청을 하면 동시에 응답을 한다는 약속으로, 바로 요청을 하면 시간이 얼마가 걸리던지 요청한 자리에서 응답(결과)가 주어져야 합니다. 동기의 예 중에는 여러가지가 있지만, 콜센터의 직원을 예로 설명해 보겠습니다. 콜센터 직원 한명에게 3명의 고객이 전화를 건다고 생각해봅시다. 한명의 직원은 각기 다른 3명의 고객들의 이야기를 듣고 대답해줄 순 없을 겁니다. 그렇기 때문에 전화가 온 순서대로 고객의 전화를 받고 그 뒤 고객들은 "상담원이 통화중이니 잠시만 기다려주세요"라는 안내 음성을 들은적이 있을겁니다. 콜센터 직원은 제일 먼저 통화를 건 고객 1과의 전화를 먼저 한 후 끝나면 대기가 걸려있던 고객 2의 대기를 풀고 전화를..

Tistory

프록시 ( Proxy ) 란 ? 어떤 역할을 하는가?

proxy의 사전적의미를 보면 "대리" 라는 뜻을 가집니다. Client와 Server가 직접 통신할 때, 보안상의 문제를 방지하기 위해서 직접 통신하지 않고 중계자를 거쳐 통신합니다. 이때 중계자는 바로 프록시 ( proxy ) 입니다. Client와 Server 사이에 프록시 서버가 중계를 할 떄, Client는 프록시 서버를 "Server"라고 인식하고, Server는 프록시 서버를 "Client"라고 인식합니다. 프록시 서버는 서버의 위치에 따라 "Forward 프록시"와 "Reverse 프록시" 2가지로 나뉩니다. Forward 프록시 클라이언트 편 ( 사용자들을 대신해 인터넷 연결 ) 클라이언트 대신 프록시 서버가 목적 서버에 통신해주는 구성을 "포워드 프록시"라고 합니다. Forward 프록..

Tistory

공인(public) IP, 사설(private) IP란 ? ( 고정 IP, 유동 IP )

IPv4와 IPv6 란? IPv4와 IPv6의 차이점에 대해 알아보자. IP 주소 ( Internet Protocol Address ) 란 ? 인터넷에 연결되어 있는 모든 장치들(컴퓨터, 서버 장비, 스마트폰 등)을 식별할 수 있도록 각각의 장비에게 부여되는 고유 주소 네트워크 상에서 다른 PC에 접 hstory0208.tistory.com 위 포스팅에서 알 수 있듯이 우리가 사용하는 IPv4는 사용가능한 IP 갯수가 43억개이지만, 전세계가 발전하면서 전자기기가 점점 많아지고, 인터넷 수요가 늘어나면서 IPv4 주소가 부족한 문제를 겪고있습니다. IPv4의 문제점을 보완한 IPv6가 나오긴 했지만 기존의 주소체계에서 IPv6로 변경하기엔 천문학적인 비용이 들기 때문에 아직 IPv4를 사용하는 실정입니다..

Tistory

NAT (Network Address Translation) 란 ?

NAT란 네트워크 주소 변환 (Network Address Translation) 줄여서 NAT 라고 합니다. 우리가 인터넷을 사용할 때 공인 IP 와 사설 IP를 나누어서 사용하게 되는데, 이 공인 IP와 사설 IP의 경계에서 인터넷 주소를 주고 받으며 네트워크 트래픽을 주고 받게 해주는 역할을 합니다. 아마 공유기를 설치한 경험 다들 있으실 겁니다. 공유기를 설치할 때 랜선을 공유기 뒤 쪽 포트에 꽂게 됩니다. 그 랜선엔 우리 집에 부여된 공인 IP가 있습니다. 외부의 네트워크에서 우리 집에 랜선을 끌어 오면서 우리 집의 공간이 공유기를 통해 사설네트워크(사설망)가 된 것입니다. IP는 각 기기당 1나 씩만 할당되는데, 공유기에는 한개의 랜선만 꽂혀서 1개의 IP만 부여 받았는데 어떻게 집에 있는 여..

Tistory

도메인과 DNS 란 ?

도메인 ip는 사람이 이해하고 기억하기 어렵기 때문에 이를 위해서 각 ip에 이름을 부여할 수 있게 했는데, 이것을 도메인이라고 합니다. 우리는 도메인을 통해 한눈에 파악하기 힘든 IP 주소를 분명하게 나타낼 수 있습니다. 도메인이란 ? 도메인의 구조 도메인은 Root(루트) 라 불리는 도메인 이하에 역트리 구조로 구성되어 있습니다. 루트 다음으로 다음과 같이 2가지 도메인으로 나뉩니다. 1. 국가 최상위 도메인(ccTLD) - 2단계 도메인 SLD(Second Level Domain) ccTLD 다음단계 2. 일반 최상위 도메인(gTLD) 국가 최상위 도메인(ccTLD) 인터넷 상으로 국가를 나타내는 도메인으로 'kr(대한민국)', jp(일본), cn(중국), us(미국) 등 영문으로 구성된 영문 국가..

Tistory

[JS/Method] slice(), splice(), split() 에 대해 알아보자.

코딩 테스트 문제들을 풀면서 slice(), splice(), split() 메서드를 자주 접했을 겁니다. 근데 저는 이 메서드들이 다 비슷비슷해서 자세히 보지 않는 한 큰 차이가 없어보이더라구요. 그래서 이 번 포스팅에서 확실히 다뤄 보려합니다. slice(), splice() 메서드는 배열을 다룰 때 자주 사용하는 함수 slice() splice() 원본 배열은 수정되지 않는다 원본 배열 자체를 수정한다. split()는 문자열을 특정 문자를 기준으로 나눠, 배열로 바꿀 때 사용하는 함수 Array.prototype.slice() slice()는 begin부터 end 전까지의 복사본을 새로운 배열 객체로 반환한다. 즉, 원본 배열은 수정되지 않는다. arr.slice([begin[, end]]) ..

Tistory

Lotto 6/45 자동번호추첨기 제작

Lotto 6/45 브라우저 https://hevlotto.netlify.app/ 로또 추첨기 발 행 일: 2020/02/01(수) 14:32:12 추 첨 일: 2020/02/01(토) 지급기한: 2020/02/01 hevlotto.netlify.app 모바일 https://mhevlotto.netlify.app/ 로또 추첨기 발 행 일: 2020/02/01(수) 14:32:12 추 첨 일: 2020/02/01(토) 지급기한: 2020/02/01 mhevlotto.netlify.app 설명 QR 코드는 구현을 아직 못해 작동하지 않습니다. ( 추후 업데이트 예정 ) 발행일은 현재 날짜 기준 + 현재 요일 + 현재 시간 ( 시 : 분 : 초 ) 로 구현하였습니다. 추첨일은 실제 추첨일인 ( 현재 날짜 기준..

Tistory

암호화, 복호화란 ? 쉽게 알아보자.

암호란 ? 평문을 암호문으로 변환하거나 암호문을 평문으로 변환하는 기술을 의미합니다. 평문 해독 가능한 형태의 텍스트 ( 보고 알아볼 수 있다. ) "12345" , "안녕하세요", "반갑습니다" 암호문 해독 불가능한 형태의 텍스트 ( 보고 알아 볼 수가 없다. ) "A@3EC!BR_1T", "E)$A!EM|+A11", "꿜꽐뚫뽈쎵썀$!떙" 만약 암호가 적용되지 않는 다면 어떨까요 ? 이처럼 중간에 악의적인 의도를 가진 해커가 중간에 패킷을 탈취해 데이터를 확인할 수 있어 해킹에 위험이 있습니다. 하지만 암호가 적용된다면 ? 암호화를 통해 중간의 데이터가 암호문으로 변경되어 해커가 이를 탈취한다해도 읽을 수 없어 해킹에 안전합니다. 암호화와 복호화란 ? 암호화 평문을 암호문으로 변환하는 과정. 평문 ("..

Tistory

[암호화] 대칭키(비공개키)와 비대칭키(공개키) 란 ?

저번 포스팅에서 "암호화"에 대해 알아보았습니다. 암호화에는 단방향 암호화, 양방향 암호화 두 종류가 있었는데요. 이번 포스팅에선 양방향 암호화인 대칭키(비공개키)와 비대칭키(공개키)에 대해 설명해 보도록하겠습니다. 암호화, 복호화란 무엇인지에 대해 궁금하신 분들은 아래 포스팅을 참고하시면 됩니다. 암호화, 복호화란 ? 쉽게 알아보자. 암호란 ? 평문을 암호문으로 변환하거나 암호문을 평문으로 변환하는 기술을 의미합니다. 평문 해독 가능한 형태의 텍스트 ( 보고 알아볼 수 있다. ) "12345" , "안녕하세요", "반갑습니다" 암호문 hstory0208.tistory.com 대칭키(비공개키) 암복호화에 사용하는 키가 동일한 암호화 방식으로 공통키라고도 합니다. 송수신자는 서로 공유된 대칭키를 가지고 통..

Tistory

Gateway(게이트웨이)란 ? Router(라우터)란? 각 개념과 차이점에 대해 알아보자.

Gateway ( 게이트웨이 ) 란 ? “한 네트워크(segment)에서 다른 네트워크로 이동하기 위하여 거쳐야 하는 지점” 으로 서로 다른 네트워크의 프로토콜이 다를 경우에 중재 역할을 해줍니다. 서로 다른 네트워크란 아래 포스팅으로 클래스별 IP 대역을 참고하시면 이해 되실겁니다. [네트워크] Class란 ? CIDR 란 ? 차이점 및 개념을 쉽게 이해해보자 (feat.서브넷팅, 슈퍼넷팅) IP 란 ? IP는 8비트 씩 4자리로 이루어진 32 자리 이진수로 구성되어 있습니다. 아래 포스팅에 IPv4 와 IPv6에 대해서도 한번 읽어보시는 것을 추천 드립니다. IPv4와 IPv6 란? IPv4와 IPv6의 차이점에 대해 hstory0208.tistory.com 만약 내 네트워크 (192.168.0.1)..

Tistory

HTTP와 HTTPS의 개념 및 차이점에 대해 알아보자.

HTTP ( Hyper Text Transfer Protocol ) 란 ? “하이퍼텍스트(HyperText)를 전송(Transfer)하기 위해 사용되는 통신 규약(Protocol)”. HTTP는 80번 포트를 사용하고 있으며 HTTP는 80번 포트에서 요청을 기다리고 클라이언트는 80번 포트로 요청을 보냅니다. HTTP의 특징 Stateless ( 무상태성 ) 을 가져, 클라이언트의 상태 정보를 가지지 않는 서버 처리 방식입니다. 클라이언트와 첫번째 통신에서 데이터를 주고 받았다 해도, 두번째 통신에서 이전 데이터를 유지하지 않는다는 특징을 가지고 있습니다. 정보를 일반 텍스트로 보내기 때문에 "안전하지 않은" 것으로 간주되기 때문에 사이버 공간을 통해 이동하는 데이터를 누구나 가로챌 수 있습니다. 그렇..

Tistory

SSL 이란 ? TLS 이란 ?

SSL (Secure Sockey Layer) 이란 ? HTTPS에 사용되는 “클라이언트와 웹 서버버간의 통신 암호화 프로토콜.”입니다. SSL은 HTTPS와 같이 443 포트를 사용하며 통신 데이터가 암호화되어, 중간에 정보를 가르채려는 3자가 나타나도 데이터를 지킬 수 있습니다. 하지만 데이터 송/수신 과정에서 암호화, 복호화가 발생하므로 속도가 느리다는 단점이 있습니다. SSL이 적용되지 않은 경우 아래 그림과 같이 "High Value Information" 이라는 평문 (Plain Text)가 그대로 전송됩니다. 이렇게 되면 제 3자가 통신 패킷을 탈취할 경우, 그 내용을 쉽게 확인할 수 있는 문제점이 있습니다. SSL이 적용된 경우 요청을 암호화해서 보내므로 통신 패킷이 탈취되어도 복호화 키가..

Tistory

Port ( 포트 ) 란 무엇인가 ? 포트에 대해 알아보자.

Port 란 ? 데이터를 받을 프로세스(process)가 어떤 것인지를 알아야 데이터가 제대로 전송이 되는데, 이때 사용하는 식별자를Port Number(포트 번호)라 합니다. 포트 번호는 IP 주소 뒤 : 다음에 표시하며 예를 들자면 다음과 같습니다. http://127.0.0.1:3000 포트번호를 왜 사용해야하는지에 대해 쉽게 예를 들어보자면 택배기사 최배달이 물건(데이터)를 구매자에게 전달해줘야하는데 구매자의 아파트주소(MAC address)와 이름(IP address)은 알지만 고객이 그 아파트의 몇 호에 있는지 모른다면 배달을 할 수없는 곤란한 상황에 처할 것입니다. 이때, 103호 인지 1204호인지 알려주는것을 Port Number 라고 할 수 있습니다. MAC 주소 = 하드웨어 주소 IP..

Tistory

IaaS, PaaS, SaaS 란 무엇인가? 각 개념을 알아보고 비교해보자.

위 그림에서 볼 수 있는 하얀색 박스는 모두 사용자가 직접 관리하는 부분이고 파란색 박스 부분은 공급체로 부터 제공 받는 부분입니다. 전통적인 IT는 사용자가 직접 하나 부터 열 까지 다 관리 해야했다면 클라우드 서비스를 통해 클라우드 서비스 종류 별로 제공되는 부분을 관리 받을 수 있어 사용자는 모든것을 다 관리 할 필요 없습니다. IaaS (Infrastructrue as a Service) - 서버를 운영하기 위한 IT 인프라 서비스를 제공 IaaS를 사용함으로써 기존 On-premise 방식보다 확장성이 좋으며 가상화 기술을 사용하여 탄력적으로 리소스를 관리함으로써 리소스 낭비를 줄여 비용적인 측면에서 효율성을 만들어 낼 수 있다. 장점 고객은 가상 서버 하위의 레벨에 대해서는 고려할 필요가 없다..

Tistory

쿠키, 캐시, 세션 이란 ? 각 개념들과 차이점에 대해 쉽게 알아보자.

쿠키, 캐시, 세션에 대해 설명하기 전에 먼저 HTTP의 특징에 대해 짚고 넘어가야합니다. HTTP에 대한 설명은 아래 포스팅 참고하시면 좋습니다. HTTP와 HTTPS의 개념 및 차이점에 대해 알아보자. HTTP ( Hyper Text Transfer Protocol ) 란 ? “하이퍼텍스트(HyperText)를 전송(Transfer)하기 위해 사용되는 통신 규약(Protocol)”. HTTP는 80번 포트를 사용하고 있으며 HTTP는 80번 포트에서 요청을 기다리.. hstory0208.tistory.com HTTP에 대한 특징을 간단하게 설명하자면.. HTTP는 Stateless ( 무상태성 ) 프로토콜로 데이터를 주고 받아도 데이터를 유지하지 않습니다. HTTP는 통신 후, 통신이 끝나면 클라이언..

Tistory

TCP와 UDP란? 왜 사용하는지 알아보자

IP(Internet Protocol)의 한계 복잡한 인터넷 망에서 클라이언트와 서버가 서로 통신하기 위해서 일종의 규칙이 있어야하는데, 이때 IP 주소를 통해 통신할 수 있게 됩니다. 클라이언트가 서버에 데이터를 보낼 때 그냥 보내는 것이 아니라 Packet(패킷)으로 포장해 데이터를 보내게 됩니다. ( Packet : 통신망을 통해 전송하기 쉽게 자른 데이터 전송 단위. 쉽게 말해 택배 포장 박스라고 생각할 수 있습니다. ) 하지만 이 과정에서 IP는 다음과 같은 한계가 있습니다. 1. 비연결성 - 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷이 전송된다. 2. 비신뢰성 - 중간에 패킷이 사라지거나 패킷이 보낸 순서와 다르게 전송할 수 있다. 3. 같은 IP를 사용하는 서버에서 통신하는 애플리..

Tistory

(javascript) 알고리즘 - Lv4 단어 퍼즐 (코드별 설명,해석)

문제 설명 단어 퍼즐은 주어진 단어 조각들을 이용해서 주어진 문장을 완성하는 퍼즐입니다. 이때, 주어진 각 단어 조각들은 각각 무한개씩 있다고 가정합니다. 예를 들어 주어진 단어 조각이 [“ba”, “na”, “n”, “a”]인 경우 "ba", "na", "n", "a" 단어 조각이 각각 무한개씩 있습니다. 이때, 만들어야 하는 문장이 “banana”라면 “ba”, “na”, “n”, “a”의 4개를 사용하여 문장을 완성할 수 있지만, “ba”, “na”, “na”의 3개만을 사용해도 “banana”를 완성할 수 있습니다. 사용 가능한 단어 조각들을 담고 있는 배열 strs와 완성해야 하는 문자열 t가 매개변수로 주어질 때, 주어진 문장을 완성하기 위해 사용해야 하는 단어조각 개수의 최솟값을 return..

Tistory

URI와 URL 비슷해보이는데 차이점이 뭘까? ( 완벽 정리 )

우리가 인터넷을 할때 URI와 URL이란 걸 아주 자주 접할겁니다. 하지만 URI URL 두 가지가 있는지 모르고 이 두가지를 하나로 혼용해 "인터넷 주소잖아" 라고 생각하는게 일반적입니다. 크게 문제는 없지만 이 둘의 차이점이 존재합니다. 사진을 통해 간단히 보자면 URI가 가장 큰 개념으로 URI의 하위 개념으로 URL과 URN을 포함하고있습니다. 이번 포스팅에선 URI와 URL,URN 각 개념과 차이점에 대해 알아보려합니다. 먼저 URL의 구조 부터 알아야 하기 때문에 URL 부터 설명해보겠습니다. URL URN URI URL ( Uniform Resource Locator ) - 통합 자원 지시자 URL은 우리가 가장 흔히 보는 것으로 URL은 Resource의 정확한 위치 정보(파일의 위치)를 ..

Tistory

RDBMS와 NoSQL의 차이점 및 개념 완벽 정리

RDBMS와 NoSQL의 차이점 CS 면접 단골 질문이라고 하더라구요 ? 간단한 차이점에 대해 아는 사람은 많겠지만 깊이 있게 아는 사람은 그렇게 많지 않다고 생각합니다. 저 또한 그렇기 때문에 이번 포스팅에서는 RDBMS가 무엇인지 ? NoSQL이 무엇인지 ? 어떤 차이점을 갖고 있는지 설명해보려합니다. 데이터베이스 기초에 대한 내용은 아래 포스팅을 참고하시기 바랍니다. c 쉽게 정리하여 편하게 보실 수 있습니다. c 2022.09.21 - [CS 기초 지식/[데이터베이스]] - (데이터베이스 기초) DBMS, SQL 쉽고 간단하게 이해해보자. (데이터베이스 기초) DBMS, SQL 쉽고 간단하게 이해해보자. 데이터베이스 ( Database ) 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 ..

Tistory

(데이터베이스 기초) DBMS, SQL 쉽고 간단하게 이해해보자.

데이터베이스 ( Database ) 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터들의 모임이라고 할 수 있습니다. 데이터베이스가 등장하기 이전에는 파일 시스템을 사용해서 데이터를 관리했다고 합니다. 파일 시스템을 이용하면 파일 단위로 저장할때, 데이터 종속성 문제와 중복성, 데이터 무결성 문제가 존재하기 때문에 이런 문제점을 해결 해주는 데이터베이스가 등장하고 데이터베이스를 사용하기 시작했다고합니다. 데이터베이스는 데이터를 효율적으로 처리하기 위하여 개발된 것으로, 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합 자료항목의 중복을 없애고 자료를 구조화하여 저장함으로써 자료 검색과 갱신의 효율을 높일 수 있습니다. 또한 업무가 확대되어도 새로 파일을 준비할 필요가 ..

Tistory

DevOps 데브옵스란 무엇이고 어떤일을 할까 ? (CI/CD 파이프라인)

개발을하거나 개발공부를 하면서 한번쯤은 들어보거나 처음들어보는 사람도 있을겁니다. 저는 비전공자로 부트캠프로 개발공부를 시작하게 되었는데 그 부트캠프가 바로 DevOps 부트캠프였었습니다. 이 당시 개발 분야에 대한 지식도 전무했고, 단순히 요즘 뜨는 직군이고 클라우드의 중요성이 점점 확대 됨에따라, DevOps 직군의 중요도는 점점 더 커질 것이라는 것에 지원하여 4개월동안 공부를 하였습니다. 비록 짧지만 4개월 동안 DevOps에 대해 많은 것을 배울 수 있었고 DevOps가 무엇인지 어떤일을 하는지 알리고자 이 글을 작성하게 되었습니다. DevOps란 ? DevOps는 개발(Development) 와 운영(Operation)이 합쳐져 탄생한 개발 방법론입니다. 이렇게 보면 개발과 운영을 다하는게 D..

Tistory

[알고리즘] 동적 프로그래밍 (DP) 란? feat.동적 계획법

동적 프로그래밍(Dynamic programming) 란? 동적 프로그래밍은 "큰 문제"를 "부분 문제"로 나누고, "부분 문제"의 정답으로 "큰 문제"의 답을 찾는 알고리즘 설계 기법입니다. 동적 프로그래밍의 대표적인 예로 피보나치 수열을 예로 들 수 있는데요, 이 점화식을 코드로 표현하면 다음과 같습니다. F[1] = 1 F[2] = 1 F[1] = F[2] F[i] = F[i-1] + F[i-2] 점화식은 재귀식이라고도 하며 위 코드를 보면 피보나치 수열은 재귀적인 관계를 가지고 있다는 것을 알 수 있습니다. DP를 적용하기 위한 2가지 조건 동적 프로그래밍을 적용시키기 위해선 다음 고같은 두 가지가 만족되어야 합니다. 부분 반복 문제(Overlapping Subproblem) 최적 부분 구조(Op..

Tistory

[네트워크] Class란 ? CIDR 란 ? 차이점 및 개념을 쉽게 이해해보자 (feat.서브넷팅, 슈퍼넷팅)

IP 란 ? IP는 8비트 씩 4자리로 이루어진 32 자리 이진수로 구성되어 있습니다. 아래 포스팅에 IPv4 와 IPv6에 대해서도 한번 읽어보시는 것을 추천 드립니다. IPv4와 IPv6 란? IPv4와 IPv6의 차이점에 대해 알아보자. IP란 ? 인터넷에 연결되어 있는 모든 장치들(컴퓨터, 서버 장비, 스마트폰 등)을 식별할 수 있도록 각각의 장비에게 부여되는 고유 주소 IP 는 IPv4 와 IPv6 두 가지로 나뉘며 일반적으로 IPv4를 많이 hstory0208.tistory.com 192.168.0.1 위 IP 주소를 예를 들어 이진수로 표현했을 땐 다음과 같습니다. 2^7 ( 128 ) 2^6 ( 64 ) 2^5 ( 32 ) 2^4 ( 16 ) 2^3 ( 8 ) 2^2 ( 4 ) 2^1 ( ..

Tistory

(javascript) 알고리즘 - 스티커 모으기 (완벽설명, 이해)

문제 설명 N개의 스티커가 원형으로 연결되어 있습니다. 다음 그림은 N = 8인 경우의 예시입니다. 원형으로 연결된 스티커에서 몇 장의 스티커를 뜯어내어 뜯어낸 스티커에 적힌 숫자의 합이 최대가 되도록 하고 싶습니다. 단 스티커 한 장을 뜯어내면 양쪽으로 인접해있는 스티커는 찢어져서 사용할 수 없게 됩니다. 예를 들어 위 그림에서 14가 적힌 스티커를 뜯으면 인접해있는 10, 6이 적힌 스티커는 사용할 수 없습니다. 스티커에 적힌 숫자가 배열 형태로 주어질 때, 스티커를 뜯어내어 얻을 수 있는 숫자의 합의 최댓값을 return 하는 solution 함수를 완성해 주세요. 원형의 스티커 모양을 위해 배열의 첫 번째 원소와 마지막 원소가 서로 연결되어 있다고 간주합니다. 제한 사항 sticker는 원형으로 ..

Tistory

OSI 7 계층(OSI 7 LAYER)이란 ? 개념 및 각 계층 역할구조 까지 쉽고 간단하게 알아보자.

OSI 7 계층(OSI 7 LAYER)이란 ? OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것으로 계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있고 7계층 중 어느 한 부분에 이상이 생겼다면 전체를 건들이지 않고 이상이 생긴 특정 부분만 고칠 수 있습니다. OSI 7 계층 우측의 실제 인터넷에서 사용되는 TCP/IP 는 OSI 참조 모델을 기반으로 상업적이고 실무적으로 이용될 수 있도록 단순화한 것입니다. 순서 목적 설명 L7 -> L1 Data 전송 전송 시 7계층에서 1계층으로 각각의 층마다 인식할 수 있어야 하는 헤더를 붙입니다. (캡슐화) L1 -> L7 Data 수신 수신 시 1계층에서 7계층으로 헤더를 떼어냅니다. (디캡슐화) 예시 PC방에서 롤을 하고..

Tistory

(javascript) 알고리즘 문제 - 완전탐색 (가장 많은 문제를 맞춘 수포자 찾기)

문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. ( 수포자들의 답안 패턴을 찾기 쉽도록 글자색으로 나누었습니다. ) 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이..

Tistory

(javascript) 알고리즘 문제 - 땅따먹기 ( 완벽이해, 설명 )

문제 설명 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 합니다. 단, 땅따먹기 게임에는 한 행씩 내려올 때, 같은 열을 연속해서 밟을 수 없는 특수 규칙이 있습니다. 예를 들면, | 1 | 2 | 3 | 5 | | 5 | 6 | 7 | 8 | | 4 | 3 | 2 | 1 | 로 땅이 주어졌다면, 1행에서 네번째 칸 (5)를 밟았으면, 2행의 네번째 칸 (8)은 밟을 수 없습니다. 마지막 행까지 모두 내려왔을 때, 얻을 수 있는 점수의 최대값을 return하는 solution 함수를 완성해 주세요. 위 예의 경우, 1행의 네번째 칸 ..

Tistory

(javascript) 알고리즘 문제 - 나머지 한 점

문제 설명 직사각형을 만드는 데 필요한 4개의 점 중 3개의 좌표가 주어질 때, 나머지 한 점의 좌표를 구하려고 합니다. 점 3개의 좌표가 들어있는 배열 v가 매개변수로 주어질 때, 직사각형을 만드는 데 필요한 나머지 한 점의 좌표를 return 하도록 solution 함수를 완성해주세요. 단, 직사각형의 각 변은 x축, y축에 평행하며, 반드시 직사각형을 만들 수 있는 경우만 입력으로 주어집니다. 제한사항 v는 세 점의 좌표가 들어있는 2차원 배열입니다. v의 각 원소는 점의 좌표를 나타내며, 좌표는 [x축 좌표, y축 좌표] 순으로 주어집니다. 좌표값은 1 이상 10억 이하의 자연수입니다. 직사각형을 만드는 데 필요한 나머지 한 점의 좌표를 [x축 좌표, y축 좌표] 순으로 담아 return 해주세요..

Tistory

(javascript) 알고리즘 문제 - 가장 큰 정사각형 찾기 ( 완벽이해, 설명 )

문제 설명 1와 0로 채워진 표(board)가 있습니다. 표 1칸은 1 x 1 의 정사각형으로 이루어져 있습니다. 표에서 1로 이루어진 가장 큰 정사각형을 찾아 넓이를 return 하는 solution 함수를 완성해 주세요. (단, 정사각형이란 축에 평행한 정사각형을 말합니다.) 예를 들어, 1 2 3 4 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 가 있다면 가장 큰 정사각형은 1 2 3 4 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 가 되며 넓이는 9가 되므로 9를 반환해 주면 됩니다. 제한사항 표(board)는 2차원 배열로 주어집니다. 표(board)의 행(row)의 크기 : 1,000 이하의 자연수 표(board)의 열(column)의 크기 : 1,000 이하의 자연수..

Tistory

IPv4와 IPv6 란? IPv4와 IPv6의 차이점에 대해 알아보자.

IP 주소 ( Internet Protocol Address ) 란 ? 인터넷에 연결되어 있는 모든 장치들(컴퓨터, 서버 장비, 스마트폰 등)을 식별할 수 있도록 각각의 장비에게 부여되는 고유 주소 네트워크 상에서 다른 PC에 접속하기 위해선, 그 PC를 가리키는 주소를 알아야합니다. 네트워크에 연결된 특정 PC의 주소를 나타내는 체계를 바로 IP 주소라고 합니다. IP 는 IPv4 와 IPv6 두 가지로 나뉘며 일반적으로 IPv4를 많이 사용합니다. 그 이유는 아래에서 설명하겠습니다. IPv4 ( Internet Protocol version 4 ) 0~255 까지의 숫자로 주소는 32bit 주소 체계로, 8비트씩 4자리 이루어진 000.000.000.000 형태로 2^32 승, 대략 43억개의 IP를..

Tistory

(javascript) 알고리즘 문제 - 자릿수 더하기

문제설명 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출력 예 #1 N answer 123 6 987 24 입출력 예 #2 9 + 8 + 7 = 24이므로 24를 return 하면 됩니다. solution.js function solution(n) { let answer = 0; let str = n.toString(); for (let i = 0; i < str.length; i++) { answer += parseInt(str[i]); } return answer; } 해설 1. n의 각 자릿수의..

Tistory

(javascript) 알고리즘 문제 - 순열 검사

문제 설명 길이가 n인 배열에 1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는지를 확인하려고 합니다. 1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는 경우 true를, 아닌 경우 false를 반환하도록 함수 solution을 완성해주세요. 제한사항 배열의 길이는 10만 이하입니다. 배열의 원소는 0 이상 10만 이하인 정수입니다. 입출력 예 arr result [4,1,3,2] true [4,1,3] false 입출력 예 설명 입출력 예 #1 입력이 [4, 1, 3, 2]가 주어진 경우, 배열의 길이가 4이므로 배열에는 1부터 4까지 숫자가 모두 들어 있어야 합니다. [4, 1, 3, 2]에는 1부터 4까지의 숫자가 모두 들어 있으므로 true를 반환하면 됩니다. 입출력 예 #2 [4, 1, 3]..

1 2 3 4