분류 전체보기
SQL 조인(JOIN)의 개념과 종류
조인(JOIN)이란? DB에서 자주 사용되는 조인이란 개념은 무엇일까요? 조인은 '어울리다'라는 의미를 가지고 있는데 이 말대로, 데이터베이스에서 테이블간의 결합(어울림)을 이야기합니다. 즉, 두개 이상의 테이블에 대해서 결합하여 나타낼 때 조인이라는 것을 이용합니다. 물론 셀프조인에서는 사실 하나의 테이블을 다루는 것입니다. 이에 대해서는 뒤에서 다시 이야기해보겠습니다. insert into employee (empNo, empName, job, manager, hireDate, salary, commission) values (1015, '문정진', '대리', 1001, '2009-11-11', 350, 50); select * from employee; select * from department;..
DBMS 키의 개념 및 종류
키(Key)는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 Attribute(속성)입니다. *튜플 : 릴레이션을 구성하는 각각의 행, 속성의 모임으로 구성된다. 파일 구조에서는 레코드와 같은 개념, 튜플의 수 = 카디널리티(Cardinality) = 기수 = 대응수 릴레이션 학번 주민번호 성명 성별 1001 810429-1231457 김형석 남 1002 800504-1546781 김현천 남 1002 811216-2547842 류기선 여 1003 910322-1233445 홍영선 여 릴레이션 학번 과목명 1001 영어 1001 전산 1002 영어 1003 수학 1004 (참조무결성) 영어 1004 (참조무결성) 전산 1. 후보키 (Ca..
NoSQL 저장방식에 따른 분류
간단하게 NoSQL이란 ? Not Only SQL의 의 약자로 기존 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미하며 관계형 데이터 베이스의 한계를 극복하기 위한 데이터 저장소의 새로운 형태로 수평적 확장성이 있다 RDBMS 가 클라이언트/서버 환경에 맞는 데이터 저장기술이라면 NoSQL은 클라우드 환경에 맞는 저장 기술이다. 나오게된 배경 이전까지의 컴퓨팅 시스템은 기업 업무를 자동화하고 효율화 하는데 그 목적이 있었고 복잡한 데이터를 저장하거나 그 데이터간의 관계를 정의하고 분석하는데 최적화되어 있었다. 물론 그 과정에서 생성되는 데이터의 양은 한계를 가지고 있었다. 그러나 인터넷의 발전과 함께 특정 고객이 아닌 전세계의 사람들을 대상으로 하는 형태의 서비스가 발전..
CAP 이론
CAP 이론이란? 분산 시스템은 일관성(Consistency), 가용성(Availability), 분할 허용성(Partition tolerance) 3가지중 최대 2가지만 만족할 수 있다는 이론이다. 시스템 특성에 따라 RDBMS,NoSQL 등 어떤 데이터베이스를 사용해야하는지 CAP 필요성에 따라 분석하고 데이터베이스를 선택해야합니다. 분산 시스템이란 일반적으로 웹 서버와 DB서버를 동일한 시스템에 설치하지는 않을 것입니다. 이와 같이 "단일 시스템"이 아닌 다중 시스템 환경에서 서버가 여러 곳으로 분산되어 소프트웨어가 동작하는 것을 분산 컴퓨터(팅)이라고 한다. 용어정리 일관성(Consistency) 일관성은 동시성, 동일성이라고도 하며 어떤 데이터에 대해서 일관적인 데이터를 보증한다는 것을 의미한다..
대칭키 암호 vs 공개키 암호
대칭키(비밀키) - 암호화,복호화 할 때 사용하는 키가 동일(대칭)한 경우 어떠한 정보가 대칭키를 통해 암호화 되었더라면, 똑같은 키를 갖고 있는 사용자가 아니면 해당 정보를 확인 할 수 없습니다. 따라서, 암호화 된 정보를 전달하고 확인하기 위해서는 송,수신자 둘 다 똑같은 키를 가지고 있어야합니다. 대칭키 암호화 방식의 핵심은 키를 안전하게 교환 하는것! 예시 부산에 살고있는 철수는 A라는 열쇠로만 열 수 있는 보물상자를 서울에 있는 영희에게 안전하게 전달 하고자 합니다. 그렇다면 철수는 보물상자를 영희에게 보내는 것은 물론이고, 이 상자를 열 수 있는 A열쇠 또한 안전하게 영희에게 전달해야합니다. 만약 보물상자와 함께 열쇠를 담아 보낸다면, 중간에 다른사람이 가로채 상자를 열어볼 수 있게 됩니다. ..
[Java/자바 백준 14999] 주사위 굴리기
풀이 풀이에 앞서 최근에 코테를 봤는데 이 문제 비슷한게 나왔습니다. 처음으로 코테를 가서 풀어서 다른 사람 키보드 때문에 멘탈도 살살 털리구 집중을 못했네요 ㅜㅜ 핵심은 dice 리스트에 바닥 동 서 남 북 위 순으로 현재 값을 계속 바꿔주면서 담아주는 방법을 쓰겠습니다. 하나를 예로 들자면, 동쪽으로 굴리자면 바닥에 있던 0번째 인덱스 값이 서쪽으로 가서 2번째로, 동쪽에 있던 1번째 인덱스 값이 바닥으로 가서 0번째로, 서쪽에 있던 2번째 인덱스 값이 위쪽으로 가서 5번째로, 남쪽에 있던 3번째 인덱스 값은 그대로 북쪽에 있던 4번째 인덱스 값도 그대로, 마지막으로 위쪽에 있던 5번째 인덱스 값은 동으로 이동하게 됩니다. 나머지 서 남 북으로 이동할 때에 맞춰 인덱스 값을 변경해주고 현재 위치에 맵..
[Java/자바 백준 17140] 이차원 배열과 연산
풀이 문제 자체 해석이 조금 오래 걸린 문제... r 연산 기준을 예시로 들면 1 2 3 4 5 3 1 [해당숫자, 갯수] [1 , 2개] [2, 1개] [3, 2개] [4, 1개] [5, 1개] 이들을 정렬해야하는데 1. 갯수가 낮은 순서대로 정렬하고 2. 갯수가 같다면 해당숫자가 낮은 순서대로 정렬하시면 됩니다. 구현문제라 디버깅 돌리시면 푸시면 되는데 저는 check를 arraylist로 받아서 check를 해당 연산할때 숫자가 잇는지 없는지 판단했습니다. 또 나머지를 0으로 채워줘야 할때를 연산을 하고나서 x,y 인덱스가 커질 수도 있지만 작아질 수도 있는거에 유의해서 풀었습니다. import java.io.*; import java.util.*; class hash implements Compa..
[Java/자바 swea 5648] 원자 소멸 시뮬레이션
풀이 고려해줄 사항 1. map의 크기 정의 처음엔 2000*2000이면 가능하겠다 생각해서 풀다가 0.5초에 충돌하는 경우를 해결하지 못했습니다. *2를 해주어서 map의 크기를 늘려주어 이를 해결해줬습니다. input 원자들의 값들도 *2 해주고 + 2000씩 해주어야합니다. 2. map[nx][ny] 값이 0일 경우는 그냥 옮겨주고 0이 아닐 경우에는 map[nx][ny]= map[nx][ny] + 현재 에너지 로 잡고 queue를 넣어주지 않았습니다. 이렇게 되면, 처음 도달한 원자 값만 큐에 있기 때문에, 이 원자값을 현재 map 위치의 값과 비교해주어서 조건에 해당하면 현재 map위치의 값에 있는 원자 에너지값을 모두 더해주었습니다. 3. 원자 에너지가 0인 경우 원자 에너지가 0인 경우는 에..
[Java/자바 swea 5653] 줄기세포배양
풀이 조건 1. map의 크기 map은 무한대로 크다고 하였으니 K에 따라서 여유있게 잡아줘야합니다. 2. 생명력이 높은순으로 같은 시간에 두개의 세포가 같은 곳에 퍼져나가는 경우가 있습니다. pq를 사용해서 생명력이 높은 순서대로 꺼내주도록 합니다. 3. 시간별로 진행. 시간별로 진행하므로,, pq랑 별개로 temp 큐를 만들어서 pq에서 temp로 넣어주고 pq가 비게되면 temp에서 다시 pq로 넣어줍니다. 4. 활성화 비활성화. 생명력 크기만큼 시간이 지나야 활성화가 되고, 또다시 생명력 크기만큼 시간이 지나면 죽으므로 현재 curLife를 2배로 지정해서. original이 크면 활성화를 시작하구 curlife가 0이 된다면 큐에 넣어주지 않습니다. import java.io.*; import ..
mysql 8.0 패스워드 변경, 비밀번호 초기화 (mac)
글 쓰게된 계기... 저는 데스크탑은 윈도우를 쓰고 노트북은 맥을 써용... 한 두달전인가 mysql깔았을때 버전에 따라서 간단한 비밀번호 ex)1234 이런게 안돼서 뭐로 해놨는데 기억이 가물가물하네용..! 그래서 초기화를 했습니다. 터미널에서 초기화하게되면 간단한 비밀번호도 사용가능하더라구요. mac에서 바꾸는 법입니다. 8.0대 이후로 구글링한거 해봤는데 UPDATE mysql.user SET authentication_string=PASSWORD('바꿀 비밀번호') where user='root'; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server..