전체 글 495

[Kotlin] 코틀린 기본 타입

코틀린의 기본 타입은 다른 언어와 마찬가지로 정수 타입, 소수 타입, 문자 타입 등이 있습니다. 이번 포스팅에서는 각각을 좀 더구체적으로 정리해보겠습니다. 기본타입 - 정수 타입 이름 크기 범위 대응 자바 타입 Byte 1 -128 .. 127 byte Short 2 -32768 .. 32767 short Int 4 -2^31 .. 2^31-1 int Long 8 -2^63 .. 2^63-1 long 코틀린에서는 정수를 객체처럼 바라봅니다. 기본타입 - 정수 리터럴 1. 10진수 val n = 12345 val m = 34_721_189 // ,대신 2. Long 리터럴 val hundred1 = 100 // int val hundred2 = 100L // long 3. 2진수(앞에 0b) val bin..

[컴퓨터구조] 컴퓨터 시스템

컴퓨터 시스템은 사용자가 원하는 작업 내용을 포함하는 소프트웨어와 작업을 수행하기 위한 하드웨어로 구성된 시스템입니다. 컴퓨터 시스템은 어떤 요소로 이루어지는지 어떤 기능을 수행하는지 알아보겠습니다. 컴퓨터 시스템의 개념적 구성 컴퓨터 시스템은 일반적으로 하드웨어와 소프트웨어로 구성됩니다. 하드웨어는 시스템을 구성하는 물리적 부품으로 이루어진 전자 기기를 의미합니다. 소프트웨어는 명령어로 구성된 프로그램과 프로그램 수행에 필요한 절차, 문서 등을 포함합니다.(넓은 의미) 소프트웨어에는 프로그램이라는 개념이 있습니다. 프로그램은 컴퓨터가 일을 처리하기 위해 컴퓨터가 이해할 수 있는 언어로 작성된 명령어들의 집합입니다. 추가적으로 펌웨어라는 것이 있습니다. 펌웨어는 하드웨어를 제어하기 위한 것으로 하드웨어와..

CS/컴퓨터구조 2022.10.07

[Kotlin] 코틀린 언어 특징

코틀린은 왜 배울까요? 최근들어 안드로이드도 java가 아닌 kotlin으로 코딩하고 있습니다. java를 대체할 수 있는 언어라고하는데요 최근에는 자바로 개발하던 백엔드 진영에서도 코틀린을 쓰는 경우가 있습니다. 이러한 코틀린 언어의 특징에 대해 알아보고자 합니다. 코틀린 언어 특징 - 객체지향 1. 프로그램을 수많은 객체라는 기본 단위로 나누고 이들의 상호작용을 서술하는 방식입니다. 데이터와 함수를 병합해 프로그램의 단위인 '객체' 및 '클래스'를 정의합니다. 2. 자료추상화 불필요한 정보는 숨기고 중요한 정보만 노출합니다. 3. 상속 연관된 클래스 간 상하위 관계를 두어 클래스를 선언합니다. ex) 동물 - 원숭이 4. 다형성 한 요소에 여러 개념을 넣어 놓는 것(개념에는 일관성이 있어야함). 오버..

[컴퓨터구조] 명령어 집합

어떤 프로그램과 그 프로그램을 수행할 컴퓨터 하드웨어 사이의 인터페이스에 대한 완전한 정의 혹은 명세를 ISA(명령어 집합 구조) 라고 합니다. 명령어를 만들 때는 다양한 특성을 고려해야 하는데, 거기엔 형태, 피연산자 수, 명령어 길이, 각 필드 길이 등 다양한 특성이 있습니다. 명령어의 특성 1. 형태 명령어는 특성에 맞는 형태(서식) 정의가 필요합니다. 따라서 명령어의 형태에 영향을 미치는 요인들을 고려해야합니다. 2. 피연산자수 명령어는 피연산자의 수에 따라 달라집니다. z = f(x, y) # 두 변수 x,y를 연산한 후 결과값 z를 생성하는 함수 f를 의미한다. f: 명령어(연산 부호, opcode) x, y, z : 피연산자(operand)로서, 데이터 위치(레지스터/ 메모리 주소)나 값을 ..

CS/컴퓨터구조 2022.10.06

[데이터 베이스] 제약조건 정리

데이터베이스에는 무결성을 위한 제약조건이 있는데, 개체 무결성, 참조 무결성, 도메인 무결성이 있습니다. 개체 무결성 제약 조건 기본 키를 구성하는 속성은 NULL값을 가질 수 없다는 것입니다. 예를 들어 ID가 기본키로 정의되어 있으면 튜플을 추가할 때 ID가 NULL이거나, 중복된 값을 가지면 안된다는 것입니다. 참조 무결성 제약 조건 외래 키 값이 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 한다는 것입니다. 또한 도메인도 같아야 합니다. 릴레이션은 참조할 수 없는 외래 키 값을 가질 수 없습니다. 아래의 예시에서 Insert into WORKS_ON. 로 튜플을 삽입할 수 있을까요? 아닙니다. 왜냐하면 Works_on의 Pno가 참조하는 Project의 Pnumber에 7이 없기 때문입니다..

회원가입 로그인을 구현하면서 겪은 이슈 정리

1. 구글 로그인에서는 비밀번호를 관리할 필요가 없었는데, 회원가입을 하면 User Entity에 비밀번호를 저장할 필요가 생긴다. 이런 경우 User Entity를 따로 또 만들어야하는지에 대한 고민이 생겼다. -> 보통 개발자분들이 하나로 퉁치라고 조언을 해주셨고.. 이에 따랐다. 2. Controller에서 객체 형식으로 데이터를 받을 때 NPE가 발생하는 이슈 각각의 파라미터 name,email, password를 @RequestParam으로 받으면 문제없이 잘 동작하지만, 객체 타입으로 받으려고하니 에러가 발생하였다. 이유는 SessionUser라는 dto에 빈 생성자가 없었기 때문인데 이를 추가하여 문제를 해결하였다. 2. sns 로그인과 기존 로그인의 구분 sns 로그인은 spring sec..

백엔드 2022.10.03

[디버깅] h2 콘솔에 테이블이 안보이는 원인 해결

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 공부중 문제가 생겼습니다. 인텔리제이에서 잘 동작하고, db 쿼리도 날라가는데 h2에서 테이블이 보이지 않는 문제가 있어 이를 해결하는 과정을 기록하였습니다. 문제 해결 과정 1 위와 같이 직접 url과 기타 설정을 수동으로 작성해 주었으나 문제가 해결되지 않았습니다. 혼자 이것저것 해보고 구글링을 해보았지만 2시간동안 해결을 못했었습니다. 그래서 유쾌한 스프링방 선배님들께 여쭤보고 문제를 해결할 수 있었습니다. 문제의 원인 시작의 아이콘에서 h2를 눌러서 접근했었는데 http://localhost:8080/h2-console로 들어가니 문제가 해결되었습니다. 구체적으로는 local 모드와 server모드가 다른데 다른 방식으로 접근했기 때문에 오류가 났던..

IT/디버깅 2022.09.26

[알고리즘] 버블정렬과 삽입정렬

버블 정렬은 맨 왼쪽 원소부터 바로 이웃한 원소와 비교하면서 정렬하는 것이고, 삽입 정렬은 이미 정렬된 부분과 정렬할 부분을 나눠 정렬하는 것입니다. 알고리즘의 핵심인 정렬 중 버블 정렬과 삽입 정렬에 대해 알아보겠습니다. 1. 버블 정렬 개념 맨 왼쪽 원소부터 바로 이웃한 원소와 비교해 가면서, 큰 수가 오른쪽으로 가도록 교환하는 정렬입니다. 맨 끝까지 가면 가장 큰 원소를 찾은 것이므로, 이 과정을 다시 나머지 n-1개 수에 대해 반복합니다. 예시) 5 3 1 4 2를 오름차순으로 정렬 특징 정확성을 보이기 제일 쉽습니다. 시간복잡도 처음 가장 큰 원소를 구할 때 n-1 번을 비교하고, 두번째 큰 원소를 비교할 때 n-2를 비교합니다. 이런식으로 (n-1) + (n-2) + ... + 2 + 1 = ..

CS/알고리즘 2022.09.22

[컴퓨터구조] 컴퓨터 성능 계산과 암달의 법칙

컴퓨터구조에서 성능을 알기 위한 공식은 여러개로, 관련 개념으로 CPI, MIPS 등이 있습니다. 각각의 개념은 무엇이고 어떤 기준으로 컴퓨터의 성능을 평가하는지 알아보겠습니다. 1. 컴퓨터 성능의 기준 컴퓨터 성능의 기준은 무엇일까요? 예를 들어 한번에 커피 한잔을 5분 만에 뽑는 커피 머신 A와 한번에 커피 두잔을 7분만에 뽑아내는 커피 머신 B가 있다면 어느 것이 성능이 좋은 것인가요? 개인의 관점에선 A가 더 좋습니다. 하나만 필요하고 제일 빨리 커피를 주는 것이 더 좋으니까요. 이는 응답시간(Response)을 기준으로 판단하는 것입니다. 그러나 두명의 커피를 주문해야하는 팀의 관점에선 B가 좋습니다. 이는 처리율(Throughput)을 기준으로 판단하는 것입니다. 응답 시간으로 컴퓨터의 성능을..

CS/컴퓨터구조 2022.09.21

[AWS] aws 용어 정리

이번 포스팅에서는 클라우드 컴퓨팅, 글로벌 인프라 등 각각의 분야를 기준으로 한 aws의 생소한 용어들에 대해 간단히 알아보겠습니다. aws 모듈1 - 기타 IAAS: infrastructure 레벨을 제공하는 서비스로, 사용자는 OS를 직접 올리고 그 상위 계층만 구성하면 되는 모델로 EC2같은 것이 이에 해당합니다. PAAS: 개발자가 응용 프로그램만 작성할 수 있도록 플랫폼 및 환경까지 제공하는 모델 SAAS: 설치할 필요 없이 클라우드를 통해 제공되는 SW로 웹 메일, MS 오피스 365 등이 있습니다. IAM: 계정관리 서비스 Amazon Direct Connect: 기존 회사의 데이터 센터 온프레미스 it 자원과 aws 클라우드 자원을 연결해 하이브리드 환경을 구축하는 서비스 aws 모듈2 -..

백엔드/AWS 2022.09.03