Searched Case Expression과 Simple Case Expression의 차이 - 이 둘의 가장 큰 차이점은 Simple Case Expression은 'expression'을, Searched Case Expression은 'Condition'을 사용하여 Return 값이 정해집니다. 예시) Searched Case Expression SELECT t.id, CASE WHEN t.color = 1 THEN 'Red' WHEN t.color = 2 THEN 'Blue' WHEN t.color = 3 THEN 'Green' ELSE 'NoColor' END AS color FROM @t t 위의 예시를 보면 Searched Case Expression에서는 t.color의 조건에 따라 결과..
하드링크 vs 소프트링크 [inode] 정의 : Kernel이 관리하고 있는 파일을 위한 메타 데이터 사용자는 file 명을 가지고 파일을 액세스 하려고 하면, 내부적으로는 파일이름과 맵핑된 inode 번호로 맵핑된다. - inode가 가진 정보 1) 파일 모드(퍼미션) 2) 링크 수 3) 소유자명 4) 그룹명 5) 파일크기 6) 마지막 접근 정보 7) 마지막 수정 정보 8) 아이노드 수정 정보 [하드링크] 하드링크는 원본 파일의 inode의 위치를 가르킨다. 파일명만 다르지 사실상 하드링크, 원본파일을 구분할 수 없다. (원본과 복사본의 차이가 없다) 왜냐하면 파일 시스템에 있는 데이터를 복사한 것이 아니라, inode 번호만 복사했기 때문이다. 따라서 실제 파일은 1개만 존재하는 셈이 된다. [소프트..
안녕하세요 강정호입니다. 오늘은 Composite INDEX(결합 인덱스)에 대해서 공부해보겠습니다. [결합 인덱스 정의] 결합 인덱스란 인덱스를 생성할 때 두 개 이상의 컬럼을 합쳐서 인덱스를 만드는 것을 말합니다. 용도 : 주로 SQL 문장에서 WHERE절의 조건 컬럼이 2개 이상 AND로 연결되어 함께 사용되는 경우에 많이 사용하게 됩니다. [예제] EMP 테이블에 인원 100명이 있는데, 그 중에서 남자 50명, 여자 50명이 있다. 남자 중에 이름이 'SMITH'인 사람이 단 2명이 있다. 성별이 남자 중에서 이름이 SMITH인 사람을 찾아라 쿼리문 SELECT ename, sal FROM emp WHERE ename = 'SMITH' AND sex = 'M' ; 결합 인덱스 생성 구문 CREA..
안녕하세요 강정호입니다. 오늘은 DESCENDING INDEX(내림차순 인덱스)에 대해서 공부해보겠습니다. [내림차순 인덱스 정의] 여러 인덱스들을 생성할 때 큰 값이 먼저 오도록, 즉 내림차순으로 인덱스를 생성하는 것을 의미. 이 유형의 인덱스는 주로 큰 값을 많이 조회하는 SQL에 생성하는 것이 좋다. ex) 인터넷 뱅킹의 계좌 조회시 최근 날짜부터 나오게 하는 것 생성 예제 CREATE INDEX idx_prof_pay ON professor(pay DESC);
안녕하세요 강정호입니다. 오늘은 DB의 인덱스 중에서 함수기반 인덱스에 대해서 공부해볼 예정입니다. 인덱스를 사용하면서 우리는 질문을 하게 됩니다. 과연 인덱스는 어느 컬럼에 만들어야 할까요? 거의 대부분 "WHERE 절에 오는 조건 컬럼이나 조인 컬럼 등에 만들어야 한다" 입니다. ex) WHERE pay = 1000이란 조건일 경우, pay 컬럼에 인덱스를 만들어야 합니다. But!! 만약 pay 컬럼으로 인덱스를 생성했는데, 정작 SQL 문장에서는 WHERE pay + 1000 = 2000이라는 조건으로 조회를 했다고 하면 pay 컬럼의 인덱스는 사용할 수 없게 됩니다. --> INDEX Suppressing Error * INDEX Suppressing Error : 인덱스를 잘 생성해 놓고 SQ..
[C언어 문자 자료형 사용하기] C언어에서는 정수 자료형인 Char를 이용하여 문자 1개를 저장합니다. 다음은 문자 자료형의 크기위 저장할 수 있는 범위입니다. ▼ 표 9‑1 char의 크기 및 범위 자료형크기범위비고 char signed char 1바이트, 8비트 -128~127 문자 저장 unsigned char 1바이트, 8비트 0~255 바이트 단위 데이터 저장 char에 문자를 저장할 때는 문자 자체를 저장하는 것이 아님. 문자에 해당하는 정수값을 저장한다. 다음은 각 정수값이 어떤 문자에 해당되는지 표로 나타낸 것이며, 이 규칙이 바로 아스키코드라고 한다. ▼ 표 9‑2 정수 10진수, 16진수와 문자 대응표(ASCII 코드) 10진수16진수문자10진수16진수문자10진수16진수문자 32 0x2..
안녕하세요 강정호입니다. 오늘은 파일 포지션에 대해서 공부해보겠습니다. 파일 포지션 : 파일 내용을 다룰 때, 어떤 Operation을 수행하는 위치. ex) 현재 반짝이는 커서가 어디에 있는지. 파일 오프셋 : 파일의 시작지점부터 현재 커서의 위치까지 얼마나 떨어져 있는지 정수로 보여주는 것이 offset 값이다. ftell 함수에 현재 살아있는 file 포인터를 인자로 넣어서 함수를 호출하면 long 타입으로 offset을 반환한다. 아래 설명에 나타나 있듯이 fseek()는 파일의 포지션을 변경할 수 있는 함수이다. 1) fseek(fp, 5, SEEK_SET) : 파일의 시작지점부터 5칸을 건너뛰고 6칸부터 파일포지션을 위치시킴. 2) fseek(fp, 5, SEEK_CUR) : 현재 파일 포지션..
RGB문제1) 색칠할 수 있는 최대의 경우 : 3의 n승 => 완전탐색으로는 구하기 어렵다. 문제해결1) func(idx, color) 함수를 정의2) idx 번쨰 집을 color로 칠한다3. 이 때 idx부터 n번째 집까지 칠하는데 드는 최소비용. 문제해결1. func(idx, color)는 재귀적으로 어떻게 정의?2. 현재 위치를 칠할 때는 이미 cost가 정해져있다. 3. func(idx, color) = min(func(idx+1, c1), func(idx+1, c2)) + cost[idx][color] => 이것 자체만으로는 완전탐색과 다를바가 없다.4. 메모이제이션 하는 코드가 들어가 있어야 한다. DP 문제의 경우 ~ 경우의 수를 구하여라, 최소값을 구하여라, 최대값을 구하여라 와 같이 끝맺..
예외처리 예외 처리하기123456789101112131415require 'open-uri'page = 'podcasts'file_name = "#{page}.html"web_page = open("http://pragprog.com/#{page}")output = File.open(file_name, 'w')begin while line = web_page.gets output.puts line end output.closerescue Exception STDERR.puts "Failed to download #{page}: #{$!}" output.close File.delete(file_name) raiseendColored by Color Scriptercs예외가 발생하면 루비는 이후의 예외 처리..
5.1 상속 상속을 사용하면 다른 클래스를 개선하거나 특수한 기능을 더한 클래스를 만들 수 있다.자식 클래스를 생성하는 기본적인 원리는 간단하다. 먼저 자식 클래스는 부모 클래스의 모든 기능을 상속한다. 자식 클래스에서는 부모 클래스의 모든 인스턴스 메서드를 사용할 수 있다. 간단한 예제를 살펴보자1234567891011121314151617class Parent def say_hello puts "Hello from #{self}" endend p = Parent.newp.say_hello # 자식 클래스 생성class Child Object cs 상속을 사용하여 자식 클래스는 부모 클래스에게 처리를 위임할 수 있으며, 자식 클래스에서는 실질적인 훅 메서드만을 호출해 애플리케이션에 기능을 추가할 수 있..
2635번 수이어가기 : https://www.acmicpc.net/problem/2635 문제다음과 같은 규칙에 따라 수들을 만들려고 한다.첫 번째 수로 양의 정수가 주어진다.두 번째 수는 양의 정수 중에서 하나를 선택한다.세 번째부터 이후에 나오는 모든 수는 앞의 앞의 수에서 앞의 수를 빼서 만든다. 예를 들어, 세 번째 수는 첫 번째 수에서 두 번째 수를 뺀 것이고, 네 번째 수는 두 번째 수에서 세 번째 수를 뺀 것이다.음의 정수가 만들어지면, 이 음의 정수를 버리고 더 이상 수를 만들지 않는다.첫 번째 수로 100이 주어질 때, 두 번째 수로 60을 선택하여 위의 규칙으로 수들을 만들면 7개의 수들 100, 60, 40, 20, 20 , 0, 20이 만들어진다. 그리고 두 번째 수로 62를 선택..
일곱난장이 : https://www.acmicpc.net/problem/2309문제왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다.아홉 명의 난쟁이는 모두 자신이 "백설 공주와 일곱 난쟁이"의 주인공이라고 주장했다. 뛰어난 수학적 직관력을 가지고 있던 백설공주는, 다행스럽게도 일곱 난쟁이의 키의 합이 100이 됨을 기억해 냈다.아홉 난쟁이의 키가 주어졌을 때, 백설공주를 도와 일곱 난쟁이를 찾는 프로그램을 작성하시오.입력아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다..
객체로서의 블록 블록은 익명 메서드와 비슷하지만 단순히 이걸로 끝이 아니다. 블록은 객체로 변환할 수 있으며, 이 객체를 변수에 저장할 수도 있고, 어딘가에 넘겨줄 수도 있으며, 나중에 호출할 수도 있다. 블록은 메서드에 넘겨지는 추가적인 매개변수로 생각해도 무방하다. 사실 암묵적인 매개 변수일 뿐만 아니라 명시적인 매개변수로 사용할 수 있다. 메서드를 정의할 때 마지막 매개 변수에 앰퍼샌드(&)를 접두사로 붙이면 루비는 이 메서드가 호출될 때마다 코드 블록이 넘겨졌는지 찾아본다. 다음은 특정 인스턴스 메서드에서 Proc 객체를 생성하고 이를 인스턴스 변수에 저장하고, 다른 인스턴스 메서드에서 이를 호출하는 예제다. 123456789101112class ProcExample def pass_in_bloc..
트랜잭션을 위한 블록 블록이 반복자에서 사용되기는 하지만 다른 용도로 사용될 때도 있다.트랜잭션 제어 하에서 동작해야만 하는 코드를 작성해야 할 때 블록을 사용할 수 있다.다음의 코드는 파일을 열고 그 내용으로 작업을 한 후에 마치면 이 파일이 닫히는 트랜잭션이다. 1234567891011121314class File #open_and_process는 클래스 메서드로 생성 def self.open_and_process(*args) f = File.open(*args) yield f f.close() end end File.open_and_process("testfile", "r") do |file| while line = file.gets puts line endendColored by Color Scr..
알고리즘 스터디 2회차 [일곱 난장이]* 스페셜 저지 : 답이 여러가지가 있을 수 있다. 문제해결법11. 7개를 선택하는 완전 탐색 알고리즘 설계2. 모든 경우의 수를 진행3. 만족하는 답이 한 개라도 발견되면 문제 해결 문제해결법21. 9개 중에서 7개를 선택해야 한다는 것은 2개를 선택하지 않는 것2. 선택하지 않는 것을 선택해보자3. 전체의 합에서 2개를 선택해 빼서 100이 되게 만들자. [홀수 문제]1. 주어지는 수들의 합을 구하자2. 주어지는 수들 [악수구하기] 문제해결법1. N의 약수를 어떻게 구할 것인가?2. 가장 쉬운 방법은 1-N까지 전부 확인3. 조금 더 빠른 방법은? --> N이 십억, 20억일 때 좀 더빠른 밥버이 있을까?? 문제해결법21. 각각의 약수는 서로 매칭되는 약수가 있음..
Web socket이란 무엇인가??웹 소켓이란 서버와 클라이언트 사이에 효율적인 양방향 통신을 가능하게 하는 기술이다. 실시간 채팅 어플리케이션을 사용할 때 새로고침이 없이도 다른 사람이 작성한 텍스트를 바로 바로 확인할 수 있는데 바로 Websocket 때문에 가능한 것이다. Web socket을 왜 사용하나요?기존에는 HTTP 통신을 이용해서 클라이언트와 서버가 통신을 하였습니다. HTTP는 기본적으로 Stateless 상태이기 때문에 클라이언트가 Request를 할 때만 서버에서 Response를 하게 됩니다. 이 때 발생할 수 있는 문제점은 서버는 업데이트가 되었지만, 클라이언트가 refresh를 하지 않으면 업데이트가 반영되지 않은 상태로 유지된다는 점입니다. 이전에는 프론트엔드 쪽에서 Long..
알고리즘 공부를 할 때 효과적인 방법 - 답을 보는 것이 부끄러운 것이 아니다.- 문제를 풀 수 있는만큼 많이 풀어보자- 라이벌을 정해보자( 단 이길 수 있을 것 같은 사람으로) 프로그래밍에서 하는 흔한 실수- 쉬운 문제를 어렵게 푸는 것- 컴퓨터가 잘하는 것은 따로 있다- 컴퓨터가 잘하는 것을 최대한 활용하자. 가능한 모든 경우의 수를 다 해보는 것이 중요하다! - 재귀 호출은 완전 탐색을 구현하는데 아주 효율적인 도구 재귀 함수를 구현하는 방법은 정형화 되어 있음1. 기저 사례를 작성한다 : 함수가 끝나는 시점을 기저 사례라고 한다.2. 재귀 함수를 호출한다.3. 값을 반환한다. 단어의 개수(BOJ 1152)1. 여러 단어가 한 줄에 걸쳐 주어진다.2. 각 단어는 공백으로 구분 된다.3. 입출력의 원..
- Total
- Today
- Yesterday
- 항해플러스후기
- 부동산공부
- 재테크공부
- 도커
- 깃
- Use case
- front
- 유즈케이스
- 깃허브
- push_back
- pop_back
- 항해플러스백엔드
- GIT
- Spring boot
- Inception
- 파라메터
- 관계대수
- 월급쟁이부자들
- 2023년
- docker
- ```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
- 폭포수
- 내년은 빡세게!!
- 월부닷컴
- 항해솔직후기
- github
- 인셉션
- 개발자 회고
- resize
- 열반스쿨기초반
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |