본문 바로가기

전체 글43

[Kernel] 커널 디버깅 1. 커널 디버깅이란 ? 리눅스 커널 디버깅은 커널 부분에 있는 버그를 찾고 해결하는 과정을 의미한다. 또한, 디바이스 드라이버의 경우 커널함수로 작성돼있고, 커널 함수는 각 서브시스템 개발자 작성한 코드이기 때문에 디버깅을 통해 버그 해결 및 코드 구조를 파악할 수 있다. 2. 목표 커널에 함수를 추가하여 디버깅을 통해 출력 해보자 (1) cat /proc/interrupts 명령어를 입력하면 인터럽트의 세부 속성을 알 수 있다. 위 로그들은 커널 소스인 linux/kernel/irq/proc.c 의 show_interupts()함수 에서 출력 된다. (2) show_interupts() 함수에 rpi_get_interrupt_info 함수를 추가한다. 해당 함수는 책에서 나온 코드를 그대로 가져왔다... 2024. 3. 3.
스프링 빈과 의존관계 스프링 빈과 의존관계 스프링 빈이란?? 간단하게 말하면 스프링 빈이랑 자바 객체를 의미합니다. 스프링 컨테이너에 의해서 자바 객체가 생상되면 이 객체를 스프링 빈이라고 부르는것입니다. 스프링 빈 생성후 의존관계 설정 스프링 빈을 생성하고난 뒤 의존관계를 주입해야합니다. 다시 말해서 동적인 객체 인스턴스간의 의존 관계 주입(Dependency Injection)을 하여 객체간의 관계를 만들어주는것 입니다. 스프링 빈과 의존관계 컴포넌트 스캔과 자동 의존관계 설정 @Component 에노테이션이 있으면 스프링 빈으로 자동 등록됨 @Component를 포함하는 @Controller, @Service, @Repository도 스프링 빈으로 자동 등록 된다. 자바코드로 직접 스프링 빈 등록하기 1. 컴포넌트 스캔.. 2021. 5. 16.
배치(Batch) 란 ? 배치(Batch) 란 ? 배치작업은 데이터를 실시간으로 처리하는게 아니라, 일괄적으로 모아서 한번에 처리하는 작업을 의미한다. 가령, 은행의 정산작업의 경우 배치 작업을 통해 일괄처리를 수행하게 되며 사용자에게 빠른 응답이 필요하지 않은 서비스에 적용할 수 있다. 특정 시간이후에는 자원을 거의 소비하지 않는 것이 특징이다. 배치의 특징 대량의 데이터를 처리한다. 특정 시간에 프로그램을 실행한다. 일괄적으로 처리한다 2021. 3. 8.
[python] Generator 나만의 정리 [python] Generator 나만의 정리 Generator란 ?? Generator은 일드(yield)와 함께 사용됨. 이 generator는 next메서드로 호출이 가능함. for 문처럼 모든 값을 불러오는게 아니라 한번 호출될때마다 하나의 값만 리턴함 def generator(): yield 12 # yield 키워드를 통해 generator을 만들어줌 yield 23 yield 35 test = generator() >>> next(test) 12 >>> next(test) 23 Generator의 장점 일반 함수의 경우 호출되면 첫번째부터 마지막까지 모든 값을 리턴하고 메모리 상에서 사라진다. 하지만 generator의 경우 하나의 일을 마치면 하던일을 기억하며 대기하다가 다시 호출되면 일을.. 2020. 12. 12.
[운영체제] 프로세스(Process)와 스레드(Thread)의 차이 프로세스(Process)와 스레드(Thread) 1. 프로세스(Process) 프로세스를 쉽게 말하면 일을 처리하는 일련의 과정이다. 예를 들어, 라면을 끓이기 위해 물을 끓인다 라면을 뜯는다. 라면을 넣는다. 먹는다. 를 라면을 위한 프로세스라 할수있다. 컴퓨터에게 프로세스란 ?? 운영체제로부터 자원을 할당받는 작업의 단위 컴퓨터에서 연속적으로 실행되고 있는 프로그램 프로세스는 각각 독립된 메모리 영역(code, data, stack, heap)으로 이루어져 있다. 각 프로세스는 별도의 주소공간에서 실행되며, 한 프로세스는 다른 프로세스에 접근할 수 없다. IPC, Shared memory 등 프로세스 간의 통신을 통해 데이터를 주고 받을 수 있다. 한번에 여러개의 프로세스들을 실행할 수 있지만, 여러.. 2020. 11. 9.
6장 텍스트 시퀀스를 딥러닝1 6장 텍스트 시퀀스를 딥러닝1 시퀀스 데이터를 위한 딥러닝 모델은 기본적으로 순환 신경망(Recurrent Neural Network)과 1D 컨브넷이 있다. 6.1 텍스트 데이터 다루기 텍스트 데이터를 딥러닝 학습을 위한 수치형 텐서로 변환하여 딥러닝학습을 진행한다. 텍스트를 단어로 나누고 각 단어를 하나의 벡터로 변환 텍스트를 문자로 나누고 각 문자를 하나의 벡터로 변환 텍스트에서 단어나 문자의 n-그램을 추추랗여 각 n-그램을 하나의 백터로 변환 6.1.1 단어와 문자의 원-핫 인코딩 모든 단어에 고유한 정수 인덱스틀 부여하고 이 정수 인덱스 i를 크기가 N인 이진 벡터로 변환한다. 이 벡터는 i번째 원소만 1이고 나머지는 0이다. Tokenizer 원-핫 인코딩: 각각의 항목을 벡터차원으로 변환하.. 2020. 11. 8.
Prim 알고리즘 - 최소 신장 트리(MST) Prim 알고리즘 - 최소 신장 트리(Minimum Spanning Tree) 최소 신장 트리(mst)란 ? 그래프에 있는 모든 정점들을 가장 적은 가중치의 합으로 연결하는것을 말한다. MST의 특징 N개의 정점과 N-1개의 간선으로 이루어진 무방향 그래프 사이클을 형성하면 안된다. 대표적인 알고리즘으로 Prim 알고리즘, Kruskal 알고리즘, dijkstra알고리즘이 있다 MST는 도로건설이나 통신 등 거리나 비용을 최소로 요구하는곳에 사용됨 Prim 알고리즘 하나의 정점에서 연결된 간선들 중에 하나씩 선택면서 MST를 만들어가는 방식 시작 정점을 기준으로 하여 인접하는 정점들 중의 최소비용의 간선이 존재하는 정점을 선택 N-1개의 간선을 가질때 까지 반복 과정 시작정점인 0번에서 가중치가 가장 작.. 2020. 11. 7.
[자료구조] 힙(heap) 나만의정리 자료구조 힙(heap)이란 ? 힙은 완전 이진트리의 일종으로 우선순위 큐를 위해 만들어진 자료구조이다. 여러개의 값중에서 최대값이나 최소값을 빠르게 찾아내는 구조다. 힙 트리의 경우에는 중복된 값을 허용한다(이진 탐색 트리에서는 중복된 값을 허용하지 않는다.) 힙(heap)의 종류 힙의 종류는 최대힙과 최소힙이있다. 최대힙(max heap) 부모의 노드값이 자식 노드의 값보다 큰 완전 이진 트리 최소힙(min heap) 부모의 노드값이 자식 노드의 값보다 작은 완전이진트리 힙(heap)의 성질 힙에서 부모 노드와 자식 노드의 관계 왼쪽 자식의 인덱스 = (부모 인덱스) x 2 오른 자식의 인덱스 = (부모 인덱스) x 2 + 1 부모의 인덱스 = (자식 인덱스) / 2 예시) 2 (숫자 7의 인덱스) =.. 2020. 11. 4.
퀵정렬(Quick Sort) 퀵정렬(Quick Sort) 퀵정렬은 분할정복 알고리즘으로, 병합정렬과 달리 비균등하게 분할하고 병합해 나갑니다. 과정 리스트안에 하나의 원소을 고른다. 이때 이 원소를 pivot 이라고 한다. pivot을 기준으로 피봇보다 작은건 왼쪽으로, 큰건 오른쪽으로 옮겨진다. 피벗을 제외한 왼쪽 리스트와 오른쪽 리스트를 다시 정렬하기 위해 분할된 리스트들에 대해 1, 2번과정을 반복한다. 더이상 분할이 불가능할때까지 반복한다 예시로 알아보는 퀵정렬 처음 pivot = 3으로 설정한뒤 3을 기준으로 왼쪽과 오른쪽을 정렬한다. pivot을 기준으로 두개의 리스트로 나눠진 부분에서 각각 1과 6을 pivot으로 정한뒤 왼쪽과 오른쪽으로 정렬한다. 이런 과정을 더이상 분할이 불가능할때까지 반복한다 퀵정렬 코드 def .. 2020. 11. 3.
[백준] 2225번 [python] [백준] 2225번 [python] 문제 https://www.acmicpc.net/problem/2225 2225번: 합분해 첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 해당문제는 DP문제로 점화식을 구하면 풀수있다. 해당 점화식을 구해보도록 하자 N = 4, K = 3라고 가정할때 정수 0을 만들기 위해 갯수 1개인경우는 (0), 1개 갯수 2개인경우는 (0,0), 1개 갯수 3개인경우는 (0,0,0) , 1개이다. 또한 정수 2를 만들기 위해 갯수 1개인경우는 (2), 1개 갯수 2개인경우는 (0,2), (0,2), (1,1), 3개 갯수 3개인경우는 (0,0,2), (0,2,0), (2,0,0), (0,1,1), (1,0,1), (1,1,0),.. 2020. 11. 3.