-- 목차 --
비트 모아 데이터
- 이진수
- 바이트
- 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)
[논리회로] 덧셈기(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이 잘 생성되었는지 확인.
잘 생성되었다 👏
'항해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 |
댓글