Design Patterns Intro (in JS) Singleton Pattern 개념 싱글톤 패턴은 싱글 오브젝트에 대해 클래스 인스턴스를 제한하는 것이다. 생성자가 여러번 호출되더라도 처음 생성된 first 인스턴스가 반환된다. 예시 버튼 클래스가 있고, 버튼이 눌릴 때마다 횟수를 카운트 하고 싶다. 버튼은 여러 개이며 각각 눌리는 횟수도 다를 것이다. 이 때에 각 버튼을 별개의 인스턴스로 만든다면 컴포넌트 간 관계나 교류가 복잡해진다. 이 때문에 카운트 state가 부정확해질 가능성도 있으며, 어떤 버튼 인스턴스의 state를 보여줘야 할지도 분명하지 않다. 그러나 버튼은 여러개이지만 한 개의 인스턴스만을 공유한다면, counter state는 한 곳에서 업데이트되며 따라서 간결하고 정확하게 s..
다중행 함수 여러 행의 값을 하나의 값으로 만들어 출력 SUM, COUNT, MAX, MIN, AVG -- SUM. ALL SAL과 SAL 합계는 동일 SELECT SUM(DISTINCT SAL), SUM(ALL SAL), SUM(SAL) FROM EMP; -- COUNT SELECT COUNT(*) FROM EMP; -- 테이블의 모든 행 수 SELECT COUNT(*) FROM EMP WHERE DEPTNO = 30; SELECT COUNT(*) FROM EMP WHERE COMM IS NOT NULL; -- MAX, MIN SELECT MAX(HIREDATE) FROM EMP WHERE DEPTNO = 10; -- 부서번호가 10이면서 가장 입사일이 최근인 사람 -- AVG SELECT AVG(DI..
DECODE SELECT EMPNO, ENAME, JOB, SAL, DECODE(JOB, 'MANAGER', SAL * 1.1, 'SALESMAN', SAL * 1.05, SAL * 1.03) AS UPSAL FROM EMP; decode 마지막 param은 default값 CASE문 --예시1 SELECT EMPNO, ENAME, JOB, SAL, CASE JOB WHEN 'MANAGER' THEN SAL * 1.1 WHEN 'SALESMAN' THEN SAL * 1.05 ELSE SAL * 1.03 END AS UPSAL FROM EMP; --예시2 SELECT EMPNO, ENAME, JOB, SAL, CASE WHEN COMM IS NULL THEN '해당 없음' WHEN COMM >= 0 THE..
숫자 함수 ROUND (반올림) / TRUNC (버림) SELECT ROUND(123.456, 0) FROM DUAL; -- return 123 SELECT ROUND(123.456, -1) FROM DUAL; -- return 120 CEIL, FLOOR(가까운 정수 리턴) SELECT CEIL(-3.14) FROM DUAL; -- return -3 MOD SELECT MOD(15,6) FROM DUAL; -- return 3 날짜 함수 SYSDATE: 현재 날짜, +연산, - 연산을 하면 일(day)단위가 바뀜 ADD_MONTHS SELECT SYSDATE, ADD_MONTHS(SYSDATE, 3) FROM DUAL; -- 현재 날짜로부터 3개월 뒤를 출력 MONTHS_BETWEEN SELECT SY..
SQL 문자 함수 ORACLE SQL 기준 UPPER, LOWER, INITCAP(첫글자만 대문자) SELECT ENAME, UPPER(ENAME), LOWER(ENAME), INITCAP(ENAME) FROM EMP; --upper로 문자열 비교 SELECT * FROM EMP WHERE UPPER(ENAME) = UPPER('scott'); LENGTH(길이) SELECT ENAME, LENGTH(ENAME) FROM EMP; SELECT ENAME, LENGTH(ENAME) FROM EMP WHERE LENGTH(ENAME) >= 5; SUBSTR --두번째 param은 시작 글자의 위치, 세번째 param은 리턴하고자 하는 글자의 개수 SELECT JOB, SUBSTR(JOB, 3,..
Today I Learned oracle sql 기본 구문 select, where, like 등 알고리즘 2개
관계형 데이터베이스의 테이블 기본키(primary key) 테이블에 저장된 행을 식별할 수 있는 유일한 값이어야 한다. (eg. 주민등록번호) 값의 중복이 없어야 한다. NULL값을 가질 수 없다. 후보키(candidate key), 대체키(alternative key) 기본키가 될 수 있는 모든 키는 후보키이다. (eg. 학번, 아이디, 주민등록번호) 후보키 중에서 기본키가 아니게 된 모든 키를 대체키라고 한다. (eg. 주민등록번호가 기본키가 된 경우 학번, 아이디가 대체키) 외래키(foreign key) 특정 테이블에 포함되어 있으면서 다른 테이블의 기본키로 지정된 키 외래키를 통해 테이블 간 참조가 이루어지며 관계를 맺게 된다. 만약 한 테이블에 모든 정보를 넣었을 때 불필요한 중복을 피하기 위해..
문제 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ... n을 d(n)의 생성자라고 한다. 위의 수열에서 33은 39의 생성자이고, 39는 51의 생성자, 51은 57의 생성자이다. 생성자가 한 개보다 많은 경우도 있다. 예를 들어, 101은 생성자가 2개(91과 100) 있다. 생성자가 없는 ..
직렬화(Serialization) def: 객체를 데이터 스트림으로 만드는 것. 객체에 저장된 데이터를 스트림에 쓰기(write) 위해 연속적인(serial) 데이터로 변환하는 것을 의미한다. 반대로 스트림으로부터 데이터를 읽어서 객체를 만드는 것은 역직렬화(deserialization)이라고 한다. 객체란 클래스에 정의된 인스턴스 변수의 집합이다. 객체에는 클래스변수나 메서드가 포함되지 않는다. 객체는 오직 인스턴스 변수로만 구성되어 있다. 그래서 객체를 저장한다는 것은 객체의 모든 인스턴스 변수값을 저장하는 것과 같은 의미이다. ObjectInputStream, ObjectOutputStream 직렬화에는 ObjectOutputStream을 사용하고 역직렬화에는 ObjectInputStream을 사용..
Today I Learned 알고리즘 4문제 JAVA 직렬화 Today was 자바 진도는 끝!
빠른 A+B 문제 3 1 11 // should print 12 2 30 // should print 32 12 1 // should print 13 첫 번째 숫자는 총 입력받을 숫자 줄의 개수. 그리고 나머지 줄 부터는 입력받아서 두 숫자의 합을 출력하면 된다. 단 시간 제한이 있어 Scanner를 사용하면 시간 초과가 나므로 BufferedReader 등을 사용해야 한다. 내가 푼 답 import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); Buffere..
스트림(Stream) 스트림은 데이터소스를 추상화하고 자주 사용되는 메서드를 정의해놓았다. 데이터 소스 추상화는 데이터 소스가 무엇이던 간에(ArrayList이든 Array이든) 같은 방식으로 다룰 수 있게 되었다는 것과 코드 재사용성이 높아졌다는 것을 의미한다. 예시 // 배열과 배열리스트 String[] strArr = {"a", "b", "c"}; List strList = Arrays.asList(strArr); // 스트림 생성 Stream strStream1 = Arrays.stream(strArr); Stream srtStream2 = strList.stream(); // 스트림 정렬 및 출력 strStream1.sorted().forEach(System.out::println); strSt..
I/O programming 입력과 출력에 관한 프로그래밍 입출력 표준, 파일, 네트워크 입출력 대상에 관계없이 스트림이라는 논리적 구조를 사용한다. 이는 데이터 소스 추상화와 관련있는 스트림이랑은 다른 개념이다. I/O에서의 스트림은 데이터를 운반하는 데에 사용되는 연결통로이다. 스트림은 크게 바이트 기반과 문자 기반으로 나뉜다. Input, Output 등의 용어가 포함된 스트림은 바이트 기반이며, Reader, Writer이라는 용어가 포함되면 문자 기반 스트림(문자 입출력시 사용)이다. FileReader 예시 import java.io.*; class FileReaderEx1 { public static void main(String[] args) { try { String fileName = ..
- Total
- Today
- Yesterday
- CSS
- Prefix Sums
- 제네릭스
- 알고리즘
- til
- getter
- Data Structure
- package.json
- oracle
- Java
- Redux
- 깃
- react
- useEffect
- linkedlist
- jQuery
- JavaScript
- 개발 공부
- 포인터 변수
- this
- rxjs
- Conflict
- SQL
- 인스턴스
- Session
- 자바
- youtube data api
- GIT
- c언어
- 리덕스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |