기본 콘텐츠로 건너뛰기

책뿌수기 - SQL 레벨업 5

인용하는 그림은 다양한 곳에서 가져왔음을 밝힙니다 5. 반복된(절차 지향형의 속박) ch 14. 반복문 의존증 RDB는 관계 전체를 조작의 대상으로 삼기 때문에 설계상에서 반복을 제외했다 ch 15. 반복계의 공포 record at a time 사고 방식 반복계의 장점은 생각하기 쉽고 단순하다는 것 1) 반복계의 단점 성능 (1) SQL 실행의 오버헤드 전처리 a. sql 구문을 네트워크로 전송 b. DB 연결 c. sql 구문 파스 d. sql 구문의 실행 계획 생성 또는 평가 후처리 e. 결과 집합을 네트워크로 전송 a, e는 동일한 본체에 있거나 분리되어 있어도 고만고만함 b는 요즘에 커넥션 풀이라는 기술로 오버헤드를 감소시킴 c와 d가 주된 오버헤드이다. 그중에서도 c가 성가시다 c는 db가 sql을 받을때 마다 실행하므로 반복계에서는 오버헤드의 비중이 커진다 (2) 병렬 분산이 힘들다 반본계는 하나씩만 처리하기 때문에 병렬처리가 힘들다 저장소의 분산 효율이 낮다(하나씩 처리하다보니 한번에 처리하는 데이터가 얼마안됨) (3) 데이터 베이스의 진화로 인한 혜택을 받을 수 없다 대규모의 데이터를 효율적으로 다루기 위해 진화하고 있으나, 반복계를 사요하면 그 혜택을 받을 수 없다 포장계 sql이 반복계에 비해 복잡하므로 튜닝을 잘해야 하는 단점도 있는 반면 제대로만 튜닝하면 현격한 성능차이가 발생한다 반복계는 단순해 튜닝포인트도 적다 2) 반복계를 빠르게 만드는 방법은 없다 (1) 반복계를 포장계로 다시 작성 애플리케이션의 수정을 의미 (2) 각각의 sql을 빠르게 수정 너무 단순해 튜닝한 건덕지가 없음 (3) 다중화 처리 리소스 여유가 있고, 처리를 나눌 수 있는 키가 있고, 순서가 중요하지 않다면 다중화 가능 3) 반복계의 장점 sql이 단순하다 (1) 실행 계획의 안정성 실행계획이 바뀌어 느려지는 경우가 없다 (2) 예상 처리 시간의 정밀...

책뿌수기 - SQL 레벨업 5 123

인용하는 그림은 다양한 곳에서 가져왔음을 밝힙니다 5. 반복된(절차 지향형의 속박) ch 14. 반복문 의존증 RDB는 관계 전체를 조작의 대상으로 삼기 때문에 설계상에서 반복을 제외했다 ch 15. 반복계의 공포 record at a time 사고 방식 반복계의 장점은 생각하기 쉽고 단순하다는 것 ###1) 반복계의 단점 성능 (1) SQL 실행의 오버헤드 전처리 a. sql 구문을 네트워크로 전송 b. DB 연결 c. sql 구문 파스 d. sql 구문의 실행 계획 생성 또는 평가 후처리 e. 결과 집합을 네트워크로 전송 a, e는 동일한 본체에 있거나 분리되어 있어도 고만고만함 b는 요즘에 커넥션 풀이라는 기술로 오버헤드를 감소시킴 c와 d가 주된 오버헤드이다. 그중에서도 c가 성가시다 c는 db가 sql을 받을때 마다 실행하므로 반복계에서는 오버헤드의 비중이 커진다 (2) 병렬 분산이 힘들다 반본계는 하나씩만 처리하기 때문에 병렬처리가 힘들다 저장소의 분산 효율이 낮다(하나씩 처리하다보니 한번에 처리하는 데이터가 얼마안됨) (3) 데이터 베이스의 진화로 인한 혜택을 받을 수 없다 대규모의 데이터를 효율적으로 다루기 위해 진화하고 있으나, 반복계를 사요하면 그 혜택을 받을 수 없다 포장계 sql이 반복계에 비해 복잡하므로 튜닝을 잘해야 하는 단점도 있는 반면 제대로만 튜닝하면 현격한 성능차이가 발생한다 반복계는 단순해 튜닝포인트도 적다 2) 반복계를 빠르게 만드는 방법은 없다 (1) 반복계를 포장계로 다시 작성 애플리케이션의 수정을 의미 ####(2) 각각의 sql을 빠르게 수정 너무 단순해 튜닝한 건덕지가 없음 (3) 다중화 처리 리소스 여유가 있고, 처리를 나눌 수 있는 키가 있고, 순서가 중요하지 않다면 다중화 가능 3) 반복계의 장점 sql이 단순하다 ####(1) 실행 계획의 안정성 실행계획이 바뀌어 느려지는 경우가 없다 )(2) ...

알고리즘 복습하기

복습도 할겸, 새로산 노트9 펜도 써볼겸 겸사겸사

우왕 예비군끝~!

어제 마지막 예비군 훈련을 받았다. 6년동안 받던 훈련도 끝났구나..ㅜ 그만큼 나이를 먹었다는 뜻이겠지. 이제 2년간의 휴식기를 갖고 민방위훈련을 받게되는데 그동안에 뭔가를 이루고싶다. 개인적인 목표이든 외적인 성과이든 뭔가 쉽지않은 것으로. 시간이 흐르면 절로 생기는 것들말고. 오래동안 해오던것에 변화가 생기면 과거를 되돌아보게되는데 2년후에 민방위훈련을 시작하게되면 아마도 2년동안 무엇을했나 생각하게될것 같다. 그때 '아 그래도 이것 하나는 이뤘네, 놀기만 한건아니네' 라고 생각하고싶다. 그 동안 고민도 많이하고 시간도 많이 날렸다 빠이팅해보자!!

인터럽트와 예외 - 1

개요 인터럽트는 프로세서가 실행하는 명령어의 순서를 바꾸는 사건으로 정의한다. 이런 사건은 CPU의 내·외부에서 하드웨어적인 회로가 발생하는 전기적인 신호에 해당하다. 흔히 동기적 인터럽트와 비동기적 인터럽트로 나눈다. 동기적인 인터럽트는 CPU의 제어 유닛이 명령어를 실행하는 과정에서 발생하는데, 제어 유닛은 명령어 실행을 마친 후에만 이를 발생시키기 때문에 동기적이라고 한다. 비동기적 인터럽트는 다른 하드웨어 장치가 CPU 클럭의 신호와 관계없이 아무 때나 발생한다. 인텔 마이크로프로세서 매뉴얼에서는 동기적인 인터럽트를 예외(Exception), 비동기적인 인터럽트를 인터럽트라고 명한다. 인터럽트는 간격 타이머와 입출력장치에 의해 발생한다. 입출력장치인 키보드의 키를 누르면 인터럽트가 발생한다. 반면, 예외는 프로그래밍 에러나 커널이 처리해야 하는 비정상적인 상황에 의해 발생한다. 프로그래밍 에러인 경우 커널은 현재 프로세스에게 신호를 보내 예외를 처리한다. 비정상적인 상황인 경우에는 페이지 폴트(Page Fault)나 커널 서비스 요청(int 또는 systenter) 같은 비정상적인 상황을 복구하는데 필요한 모든 단계를 수행한다. 인터럽트 신호와 역할 인터럽트 신호는 프로세서가 정상적인 제어 흐름 밖의 코드로 방향을 바꾸는 방법을 제공한다. 인터럽트 신호가 도착하면 CPU는 EIP와 CS 레지스터를 커널 모드 스택에 저장하고, 발생한 인터럽트 종류와 연계된 주소를 프로그램 카운터에 넣어 수행한다. 이 전환 과정은 프로세스 전환 과정의 컨텍스트 전환과 큰 차이가 있다. 인터럽트·예외 핸들러가 실행하는 코드는 프로세스가 아니다. 인터럽트가 발생한 시점에 CPU를 점유하고 있던 프로세스가 수행되던 과정에서 실행되는 커널 제어 경로라고 할 수 있다. 인터럽트 핸들러는 커널 제어 경로 이므로 프로세스보다 가볍다. 인터럽트는 다음의 조건을 만족해야 한다. 가능한 빨리 인터럽트에서 벗어나고 되도록 ...

프로그래머스 - 줄서는 방법

문제가 점점 어려워지는군욤 import java.util.ArrayList ; import java.util.Arrays ; public class LineCombination { public int [] setAlign ( int n , long k ) { int [] answer = new int [ n ]; ArrayList < Integer > list = new ArrayList < Integer >(); int [] fac = new int [ n + 1 ]; fac [ 0 ] = 1 ; for ( int i = 1 ; i < n ; i ++) { fac [ i ] = fac [ i - 1 ]* i ; } int idx = 0 ; for ( int i = 0 ; i < n ; i ++) { list . add ( i + 1 ); } for ( int i = 0 ; i < n ; i ++) { idx =( int ) (( k - 1 )/ fac [ n - 1 - i ]); answer [ i ]= list . get ( idx ); list . remove ( idx ); k =( k - 1 )% fac [ n - 1 - i ]+ 1 ; } return answer ; } // 아래는 테스트로 출력해 보기 위한 코드입니다. public static void main ( String [] args ) { LineCombi...

SQL 고난이도

1.emp에서 이름, 급여, 커미션 금액, 총액(급여+커미션금액)을 구하여 총액이 많은 순서대로 출력하라. select first_name, salary, salary*commission_pct, (salary + salary*commission_pct) total from hr_employees where commission_pct is not null 2. 80번 부서의 모든사람들에게 급여의 13%를 보너스로 지불하기로 했다. 이름, 급여, 보너스 금액, 부서번호를 출력하라 select first_name, salary, salary*0.13, department_id from hr_employees where department_id=80

뉴럴 네트워크 기초 - 실수치 회로, 역전파

https://tensorflow.blog/1%EC%9E%A5-%EC%8B%A4%EC%88%98%EC%B9%98-%ED%9A%8C%EB%A1%9C-%ED%95%B4%EC%BB%A4%EA%B0%80-%EC%95%8C%EB%A0%A4%EC%A3%BC%EB%8A%94-%EB%89%B4%EB%9F%B4-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/ 을 공부한 내용 https://github.com/jaejin0me/NeuralNetwork import sys import random from math import exp class rgate : def mul ( x , y ): return x * y def add ( x , y ): return x + y class unit : value = 0.0 grad = 0.0 def __init__ ( self , value = 0.0 , grad = 0.0 ): self .value = value self .grad = grad class u : value = 0.0 grad = 0.0 def __init__ ( self , value = 0.0 , grad = 0.0 ): self .value = value self .grad = grad class mg : u0 = None u1 = None ru = None def __init__ ( self , u0 = None , u1 = None ): self .u0 = None self .u1 = None self .ru = None def f ( self , u0 , u1 ): self .u0 = u0 self .u1 = u1 self .ru = unit(u0.value * u1.value, 0 ) return self .ru def b ( self ): self .u0.grad += self .ru.gra...