이론 정리 153

한 권으로 읽는 컴퓨터 구조와 프로그래밍 4장 정리

컴퓨터는 크게 3개로 나뉜다. 메모리 입/출력 CPU 메모리 조작할 비트들을 저장할 장소 각각 바이트를 저장하는 위치가 있고, 거기 주소가 부여된다. 참고로 기본은 1비트이고 몇비트 컴퓨터인지에 따라 메모리의 덩어리가 달라진다. 즉 32비트다 이러면 메모리가 4비트 덩어리로 구성된다. 더 많은 데이터를 데이터 버스에 실을 수 있기 때문 데이터 버스에서 메모리의 위치가 어디로 갈지는 엔디안으로 확인한다. 인텔은 0번 바이트가 가장 오른쪽 / 모토로라는 0번이 가장 왼쪽 이런식으로 엔디안을 염두에 둬야한다. 입력과 출력 외부랑 통신하기 위해 사용. 주변장치라고도 한다. 중앙 처리 장치 실제 계산을 처리하는 컴퓨터 부품 다양한 요소로 이루어진다. 산술 논리장치(ALU : arithmetic logic unit..

한 권으로 읽는 컴퓨터 구조와 프로그래밍 3장 정리

순차 논리란, 순서에서 비롯된 말이다. 즉 시간적으로 어떤 값 뒤에 오는 다른 값이라는 건데 그동안 배웠던 조합 논리는 입력의 현재 상태만을 다뤘다면 순차논리는 현재와 과거를 함께 고려한다. 시간 표현과 상태 기억 주기함수를 사용해 시간 측정 예를 들어 지구의 자전이 주기함수임. 발진자 요런 식으로 주기에 맞춰 피드백을 돌려주는거 이게 정확하게 하려면 크리스탈을 활용하면 된다. 클록 발진자를 통한 시간 측정 참고로 이걸 통해 컴퓨터가 시간을 측정하기 때문에 오버클로킹하면 클록을 빠르게 공급 가능 래치 OR게이트 출력을 입력에 묶는 피드백을 통해 정보 기억 가능 요렇게 하면 입력이 들어온 다음부터는 무조건 1이 될것이다. 이를 해결하기 위해 회로 재설정 과정이 요렇게 여기서 reset위에 줄그어진거는 반전..

한 권으로 읽는 컴퓨터 구조와 프로그래밍 2장 정리

하드웨어 : 비트에 대해 동작하는 장치를 포함해 모든 물리적인 장치 그 중에서 조합 논리(불리언 대수) 를 구현하는 하드웨어에 대해 살펴볼 것이다. 디지털 컴퓨터의 사례 톱니바퀴 이용 두 바퀴의 상대적 회전 속도를 통한 계산 계산자 log(x*y) = log(x) + log(y) 를 이용하여 계산하는것 앞의 x만큼 띄어서 y해당 계산자를 붙이면 곱셈값을 구할 수 있다. 추가로 이거 밑이 10인 상용로그라 10의 거듭제곱도 쉽게 구할수있음(그거는 그냥 숫자처리하면 되니까) 차분기관같은것도 있었다고 함 아날로그 디지털 차이 디지털 : 이산적 -> 하나하나 다른 존재로 구분된다. 정수만 표현 가능 아날로그 : 연속적 -> 실수를 표현 가능 즉 계산자같은 애들은 아날로그 컴퓨터임 이거는 문제가 실수의 범위가 커..

한 권으로 읽는 컴퓨터 구조와 프로그래밍 1장 정리

언어 의사소통을 위해 쓰고, 문맥에 따른 의미 문자 언어 기호의 나열 비트 'binary' + 'digit' -> 요거 두개를 합친 말이라고 함 2진법 사용 논리 연산 논리적으로 예/아니오 불리언대수 비트에 대해 사용 가능한 연산 규칙 집합 결합법칙, 교환법칙, 분배법칙을 적용 가능 NOT : 논리적 반대 AND : 전부 참이어야 참 OR : 하나라도 참이면 참 XOR : 서로 달라야 참 드모르간의 법칙 (A and B) == NOT(NOT A or NOT B) 정수를 비트로 표현 2진수 쓰자 그럼 음수는? 부호화 크기 표현법 한 비트를 부호에 사용, 나머지 비트를 0부터의 크기를 표현 -> 잘 안쓰임 비트 구성에의 비용에서 0을 표현하는 방법이 2가지라 비용 낭비 덧셈 계산..

Spring boot Transactional rollback test와 Transaction 격리에 관한 소고(feat. requires_new)

Transactional rollback test와 Transaction 격리에 관한 소고 다들 알다시피, @SpringBootTest 에서 @Transactional 을 설정하면, 테스트 환경에서 진행한 내용이 실제로 DB와 격리된다. 즉, 테스트에서 뭘 하든 간에 실제 DB에 적용되지 않는다는 것이다. 나는 이거를 통해 여러 테스트를 해 보았는데(사실 근데 혼자 테스트할때는 거의 맨날 넣었다) 이번에 좀 생각치도 못한 변수를 마주해서 정리한다. Transactional의 기본 propagation은 REQUIRED이다. 기본적으로 Spring Boot의 propagation은 REQUIRED로 되어있고, 이건 이전에 활성화된 트랜잭션이 있다면 그 안에서 따로 새로운 트랜잭션의 호출 없이 거기 참가한다..

컴퓨터 구조 큰 그림

컴퓨터 구조 컴퓨터가 이해하는 정보 데이터 숫자, 문자, 이미지같은 정적인 정보 커퓨터와 주고받거나 내부에 저장된 정보를 데이터라 통칭하기도 함 0과 1로 숫자를 표현하는 방법 0과 1로 문자를 표현하는 방법 명령어 컴퓨터는 결국 명령어를 처리하는 기계 명령어란 컴퓨터를 실질적으로 움직이는 정보 데이터는 명령어를 위한 일종의 재료 명령어의 생김새와 동작 방식 컴퓨터의 네 가지 핵심 부품 CPU 메모리에 저장된 명령어를 읽어들이고, 해석하고, 실행하는 부품 요거를 구성하는 핵심 3가지가 ALU : 계산기 이거는 산술연산 / 논리연산을 하는 장치다. 레지스터 : CPU내부의 작은 저장장치 -> 임시 저장장치 제어장치: 제어 신호를 내보내고, 명령어를 해석하는 장치 제어 신호란) 컴퓨터 부품들을 관리하고 작동..

자바 스트림 병렬성

병렬데이터 처리 스트림을 통한 순차 스트림을 사용하면 병렬 스트림으로 자연스럽게 바꿀 수 있다. 병렬 스트림 각각의 스레드에서 처리할 수 있도록 스트림 요소를 여러 청크로 분할한 스트림 그래서 병렬 스트림을 이용하면 모든 멀티코어 프로세서가 각각의 청크를 처리하도록 할당 가능 예를 들어 n을 받아서 1~n까지 모두 더하는 경우 이를 무한스트림으로 할 수 있는데, 이거를 n이 커지면 병렬로 처리하는게 좋을 것이다. 순차 스트림을 병렬 스트림으로 변환 순차스트림에 parallel 메서드 호출하면 기존의 함수형 리듀싱 연산이 병렬로 처리됨 저걸 쓰면 청크단위로 호출되는데, 스트림 자체에는 변화가 없고 내부적으로 불리언 플래그가 설정되는것 sequential은 반대로 병렬스트림을 순차스트림으로 바꾸는것 두 메서..

이론 정리/java 2023.12.30

java stream collector

정리 Collector 고급 리듀싱 기능을 수행하는 컬렉터 함수형 API의 장점 중 높은 수준의 조합성과 재사용성을 꼽을 수 있음 collect로 결과를 수집하는 과정을 간단하면서도 유연한 방식으로 정의할 수 있는게 컬렉터의 최대 장점 보통 함수를 요소로 변환하는 경우(데이터 저장 구조를 변환) 컬렉터를 적용해서 누적한다. 직관적으로 toList 같은거 미리 정의된 컬렉터 미리 정의된 것이고, 크게 3가지 역할 수행 요약 연산 합계나 평균값 계산 등 연산을 요약하는것 문자열 연결 말 그대로 연결하는거고 뭐 사이에 구분자 넣는것도 가능 범용 리듀싱 요약 연결 위에서 한것들을 이걸 통해 정의 가능(reducing 팩토리 메서드) 위에서 한거를 이거는 다른 방식으로 쓸 수 있는것이다(프로그램적으로 위의 것들이..

이론 정리/java 2023.12.30

Real MySQL 8장 정리

인덱스 이거 매우매우매우 중요!! 인덱스? 책 마지막의 색인으로 비유한다. 말하자면 DBMS의 모든 데이터를 찾아오는거는 힘드니까 key-value로 값-주소를 인덱스로 만들어 두는 것이다. 이거를 정해진 순서에 맞춰서 만들어두는것 정리하면, 본래 데이터는 순서 상관 없이 저장 되고 인덱스는 설정한 순서에 따라 정렬된 key value 쌍을 만들어둠 으로 이를 활용해서 해당 데이터를 찾는 방식이다. 이거는 보면 알겠지만 select에서는 성능이 좋지만 update, delete, insert할 때에 관련 인덱스도 업데이트해야해서 그 때에 성능이 희생된다. 너무 많이 만들면 안된다는것이다. 인덱스 분류 PK : 레코드 대표값(PK) 이게 식별자이고, 동시에 not null이며 중복할수 없다. 세컨더리 인덱..

Real MySQL 7장 정리

데이터 암호화 MySQL5.7부터 암호화 기능 지원 이거는 데이터 파일(테이블스페이스)에 대해서만 지원됨 MySQL8.0부터는 더 지원된다. 리두로그, 언두로그 복제를 위한 바이너리 로그 등 이게 핀케트처럼 중요한 정보를 저장하는곳에서는 응용프로그램에서 암호화 한걸 다시 DB서버에서 암호화하는 이중 암호화를 하기도 한다 함 어플리케이션에는 중요정보 컬럼 단위 DB에서는 테이블 단위로 한다 한다. MySQL 데이터 암호화 DB서버랑 디스크 사이의 데이터 읽고쓰는 지점에서 암호화 / 복호화 수행됨 디스크 입출력 이외에서는 암호화 처리가 필요X 즉 InnoDB스토리지 엔진의 I/O 레이어에서만 데이터의 암호화 및 복호화 과정이 실행된다. 2단계 키 관리 TDE(Trasparent Data Encryption)..