본문 바로가기

분류 전체보기270

오라클 시퀀스 사용법(NEXTVAL, CURRVAL) 시퀀스 생성 CREATE SEQUENCE [시퀀스 이름] [START WITH 시작번호] - default 1 [INCREMENT BY 증가단위] - default 1 [MAXVALUE 최대값] - default 오라클 버전 최대값 [MINVALUE 최소값] - default 1 [CYCLE | NOCYCLE] [CACHE | NOCACHE] - default 20 이름 빼고는 생략가능 cycle - 시퀀스가 최대 값이 되었을 때 다시 시작값으로 돌아갈 것인지 cache - 시퀀스 값을 메모리에 할당할 것인지 시퀀스 수정 ALTER SEQUENCE [시퀀스 이름] START WITH는 수정 불가능 시퀀스 검색 `SELECT * FROM USER_SEQUENCES`; 이 쿼리를 사용하면 생성된 모든 시퀀스.. 2019. 5. 14.
[프로그래머스] 프린터 (level 2) java 문제 https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 | 프로그래머스 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린터를 개발했습니다. 이 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다. 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 programmers.co.kr 이 문제를 풀기에 앞서 priorityQueue(Collections.r.. 2019. 5. 13.
[자료구조] 우선순위 큐(PriorityQueue) + 힙(Heap) - 2 프로그래머스 프린터라는 문제를 풀다가 의아한 점이 생겼다. PriorityQueue priority = new PriorityQueue(Collections.reverseOrder()); 우선순위 큐를 사용하기 위해 우선순위 큐를 생성하고, 문제에서 숫자가 클 수록 우선순위가 높다고 요구하여 내림차순으로 설정을 했다. 그런데 우선순위 큐에 {2,5,4,1,3}을 넣었을 때 내가 단순히 생각하기에는 {5,4,3,2,1}이 나올 것이라고 생각했지만, 실제로는 {5,3,4,1,2}가 나왔다. ??? 자바 공식 문서에서도 reverseOrder() Returns a comparator that imposes the reverse of the natural ordering. 라고 했다. 내림차순이라는 소리다. 알.. 2019. 5. 13.
[MySql] 실행계획 MySql 실행 계획 DBMS의 쿼리가 실행되면 결과를 출력하는 방법은 아주 많이 있지만, 그 중에서 최적화된 방법을 결정해야 한다. DBMS에서는 쿼리를 최적으로 실행하기 위해 각 테이블의 데이터가 어떤 분포로 저장돼 있는지 통계 정보를 참조하고, 그 기본 데이터를 비교해 최적의 실행 계획을 수립하는 작업이 필요하다. 이런 역할을 하는 것이 DBMS의 옵티마이저다. 모든 DBMS의 옵티마이저는 가장 복잡하고, 이해하기 어렵다. 하지만 실행 계획을 이해할 수 있어야 불합리한 부분을 찾아내, 더욱 최적화된 방법으로 계획을 수립하도록 유도할 수 있다. 쿼리 실행 절차 크게 3가지로 나눌 수 있다. 사용자로부터 요청된 SQL 문장을 잘게 쪼개서 MySql 서버가 이해할 수 있는 수준으로 분리 SQL의 파싱 정.. 2019. 5. 4.
안전한 패스워드 만드는 방식 안전한 패스워드 저장 저번 개인 프로젝트에서 나는 해시 알고리즘 SHA-256을 사용해서 사용자의 패스워드를 암호화했었다. SHA-256 방식은 **단방향 해시함수의 다이제스트(digest)** 방식이다. 이 방식은 수학적인 연산을 통해 원본 메시지를 변환하여 암호화된 메시지인 다이제스트를 생성한다. 원본 메시지를 알면 암호화된 메시지를 구하기는 쉽지만 암호화된 메시지로는 원본 메시지를 구할 수 없어야 하며, 이를 '단방향성' 이라고 한다. 실제로는 사용자의 패스워드가 변환된 해시 값으로 저장되기 때문에 패스워드를 직접 저장하는 위험을 피할 수 있다. 그리고 로그인 시 해시 값을 비교해 일치 여부를 확인한다. 나는 이 방식으로 암호화가 됐으니 끝이겠지 하고 넘어갔었다. 하지만 새로 다른 프로젝트를 진행하.. 2019. 5. 2.
split 세부적으로 사용하기 자바에서 split을 사용해 원하는 단어를 기준으로 구분할 수 있다는 사실은 대부분 알 것이다. 그런데 검색을 하다가 split을 신기하게 사용하는 방식이 있어 메모해 두려고 한다. 아래 예제를 보면, ","를 기준으로 구분한다고 할 때 나눠진 항목에 대해서 인덱스 번호를 부여해 내가 원하는 단어만 쉽게 가져올 수 있다. 12345678910111213141516public class mainClass { public static void main(String[] args) { String str = "IT,개발의,세상"; String val1 = str.split(",")[0]; String val2 = str.split(",")[1]; String val3 = str.split(",")[2]; Sys.. 2019. 4. 22.