본문 바로가기
항해99

[TIL] 항해14일차

by yeaseul912 2022. 7. 25.
728x90
-- 목차 --
비트 모아 데이터
 - 이진수
 - 바이트
 - 16진수
 - 우리가 이진수를 이해하고 관심을 가져야 하는 이유

개인프로젝트 : 스프링 부트로 로그인 기능이 없는 나만의 항해 블로그 백엔드 서버 만들기
 

 

비트 모아 데이터

 

이진수

십진수를 이진수로 나타내는 것은 초로 시간을 구하는 과정과 비슷합니다.

  • 95,440 초 = 1일 2시간 30분 40초

초로 시간 구하기

  • 1867 = 1111 0100 1011
  • 111 101 001 011
  • 7 5 1 3 (8)
  • 15(F) 4 13(E) F4E (16)

십진수를 이진수로 / 이진수를 십진수로 바꾸기
이진 덧셈 표(XOR)와 곱셈 표(AND)

[논리회로] 덧셈기(binary adder)와 74LS83


바이트

데이터 처리와 메모리 구성의 기본단위로 8 bit = 1 byte 이다.

 

왜 8비트 일까?

최초로 설계한 덧셈기가 8비트 기반이기 때문이다.

 BCD code 를 저장하기 편했기 때문이다. [Digital design] BCD코드와 여러가지 Binary Code

읽고 쓰기 편하기 때문이다.

ex) 

1byte = 0000 0000 ~ 1111 1111 (2)

1byte = 000 ~ 377 (8)

1byte = 00 ~ FF (16)

각 바이트 단위의 표현 방법과 동일한 표현을 사용할 수 있도록 동일한 비트단위로 나누어지도록 할 필요가 있다.

=> 2비트씩 나누든지(4진수, nibble), 4비트씩 나누든지(16진수)


16진수

웹페이지 색상

각 픽셀에 3바이트 사용

1byte = 8 bit = 128

0 ~ 127 까지 표현

8bit를 4bit 4bit 쪼개서 16진수로 표현 => FFFFFF

색상표

이더넷 주소


BUT. 가장 중요한 것은 비트 모음의 의미가 상황에 따라 결정된다.

ex) 010 이라는 숫자를 만났을 때 우리는

핸드폰 번호 앞에 3자리

날짜 앞자리(1월~)

우편번호 앞자리

음악/사진 파일명 앞자리

도로 번호 등...

 

어떤 의미인지 알고 사용하도록 하자.


왜 우리는 이진수를 이해하고 관심을 가져야 할까?

컴퓨터는 이진수가 간단하기 때문에 사용한다.

이진수와 이진연산은 컴퓨터의 작동의 핵심 개념이다.

익숙하지 않은 기수로 이루어진 수를 사용해 보는것이

친숙한 십진수의 작동원리를 더 잘 이해하는데 도움을 주기 때문이다.

이것을 잘 활용하면 어떤 기수의 수를 만나더라도 추론을 할 수 있게 되지 않을까?

 

 

개인프로젝트 : 스프링 부트로 로그인 기능이 없는 나만의 항해 블로그 백엔드 서버 만들기

1. Mysql 설정

 -- 정책낮추기 / sparta user 추가 / 8자 이상으로 비밀번호 설정  
show variables like 'validate_password%';
set global validate_password.policy = LOW;

 -- 새로운 유저 생성
create user 'sparta'@'%' identified by 'sparta1234';

 -- 권한주기 / On DB이름.테이블명 To 유저 이름@아이피주소
 Grant all privileges on *.* To 'sparta'@'%';
 
 -- DB 생성
 create database sparta;

2. application.properties 설정 - DB 연동

# MySQL
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# DB Source URL
spring.datasource.url=jdbc:mysql://localhost:3306/sparta
# DB username
spring.datasource.username=sparta
# DB password
spring.datasource.password=sparta1234
# 처리시 발생하는 SQL을 보여줄 것인지 결정
spring.jpa.show-sql=true
# 프로젝트 실행시 자동으로 DDL(create, alter, drop) 을 생성할 것 인지 결정하는 설정
# create : 매번 테이블 생성을 새로 시도한다 / update : 변경이 필요한 경우 alter로 변경되고 테이블이 없는경우 create가 된다
spring.jpa.hibernate.ddl-auto=create
# 실제 JPA 구현체인 Hibernate가 동작하면서 발생하는 SQL을 포맷팅해서 출력한다 -> 실행되는 SQL의 가독성을 높여준다
spring.jpa.properties.hibernate.format_sql=true

3. Entity 생성 

Board.java

package com.sparta.week01.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.CreationTimestamp;

import javax.persistence.*;
import java.sql.Timestamp;

@Data // getter, setter 생성
@NoArgsConstructor // 매개변수를 갖지 않는 constructor
@AllArgsConstructor // 모든 변수를 매개변수로 갖는 constructor
@Builder // builder 패턴 사용 가능
@Entity  // JPA로 관리되는 객체라는 것을 의미. 자동으로 테이블 생성
public class Board {

    @Id // 기본키로 지정
    @GeneratedValue(strategy = GenerationType.IDENTITY) // 내가 설정한 database의 전략을 따라가겠다.
    private int id;

    // 꼭 입력값이 필요함.
    @Column(nullable = false) 
    private String title;

    @Column(nullable = false)
    private String author;

    @Column(nullable = false)
    private String password;

    @Lob
    private String content;

    // 생성일 자동으로 넣어줌
    @CreationTimestamp
    private Timestamp createDate;

    @CreationTimestamp
    private Timestamp modifiedDate;
}

 

4. 프로젝트 실행

mysql DB에 잘 연결이 되었는지, mysql DB에 table이 잘 생성되었는지 확인.

mysql workbench

잘 생성되었다 👏

반응형

'항해99' 카테고리의 다른 글

[TIL] 항해 18일차  (0) 2022.07.28
CRUD 와 HTTP Method  (0) 2022.07.26
[WIL] 항해 2주차  (0) 2022.07.24
[TIL] 항해 12일차  (0) 2022.07.22
[TIL] 항해 11일차  (0) 2022.07.21

댓글