본문 바로가기
반응형

전체 글152

프로토타입 패턴(Prototype Pattern) 프로토타입 패턴 : 기존 인스턴스를 복제하여 새로운 인스턴스를 만드는 방법. 기존의 객체를 응용하여 새로운 객체를 만들 때 사용한다. 특히 기존의 인스턴스를 만들 때 시간이 오래걸리는 작업. 가령 데이터 베이스에서 데이터를 읽어와서 인스턴스를 생성한다던가 http 요청을 보내서 가져온 데이터로 인스턴스를 만들어야 하는 경우는 상대적으로 오랜시간과 큰 리소스가 필요한 작업이다. 이 때 DB나 http통신으로 가져온 데이터를 복제를 해서 새로운 인스턴스를 만들고 원하는 값만 일부 변경하여 사용한다. interface ShapeProperties { color: string; x: number; y: number; } abstract class Shape { constructor(public propertie.. 2023. 10. 2.
자바스크립트) 객체의 참조 VS 얕은 복사 VS 깊은 복사 자바스크립트에서 객체를 다루려면 참조와 복사의 개념에 대해 반드시 알아야 한다. 객체의 참조, 얕은 복사, 깊은 복사의 차이점에 대해 자세히 알아보도록 하겠다. 요약 의미 방식 참조 (reference) 같은 객체를 참조 변수에 그대로 대입 얕은 복사 (shallow copy) 중첩된 객체를 복사했을 때, 가장 바깥 객체만 복사되며 내부 객체는 참조 관계를 유지. 깊은 복사와 참조의 중간 형식 스프레드 문법 사용 깊은 복사 (deep copy) 복사하여 새로운 객체를 생성 참조 관계가 생기지 않음 JSON 연산자 사용 참조 (Reference) 변수 array와 ref는 같은 객체를 참조하고 있기 때문에 어떤 걸 비교해도 true로 반환된다. 한쪽에서 변경하면 다른 쪽도 변경된다. 1 2 3 4 5 6 .. 2023. 10. 2.
싱글톤 패턴(Singleton Pattern) 1. 싱글톤 패턴(Singleton pattern) 정리 싱글톤 패턴이란? 인스턴스를 단 1개만 만드는 패턴이다. 어플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고(static) 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴이다. 예를들어 레지스트리 같은 설정 파일의 경우 객체가 여러개 생성되면 설정 값이 변경될 위험이 생길 수 있다. 인스턴스가 1개만 생성되는 특징을 가진 싱글턴 패턴을 이용하면, 하나의 인스턴스를 메모리에 등록해서 여러 쓰레드가 동시에 해당 인스턴스를 공유하여 사용할 수 있게끔 할 수 있기 때문에 요청이 많은 곳에서 사용하면 효율을 높일 수 있다. 주의해야 할 점은 싱글턴을 만들 때 동시성(Concurrency) 문제를 고려해서 설계해야 한다. 싱글톤 패턴의 .. 2023. 10. 1.
SOLID 원칙 SOLID 원칙 SOLID 원칙이란 로버트 마틴이 소개한 객체 지향 프로그래밍 및 설계의 5가지 기본 원칙을 말하며, 5가지의 원칙의 앞 글자를 따서 “SOLID”라고 부른다. SRP (Single Responsibility Principle) : 단일 책임 원칙 OCP (Open/Closed Principle) : 개방/폐쇄 원칙 LSP (Liskov Substitution Principle) : 리스코프 치환 원칙 ISP (Interface Segregation Principle) : 인터페이스 분리 원칙 DIP (Dependacny Inversion Principle) : 의존관계 역전 원칙 📒 SRP (Single Responsibility Principle) 단일 책임 원칙 어떤 클래스던지 단 .. 2023. 10. 1.
오라클)SELECT * FOR UPDATE SELECT * FOR UPDATE는 현재 트랜잭션이 완료될 때까지 다른 트랜잭션에서 해당 행을 수정하지 못하도록 행을 잠그는 목적으로 사용됩니다.  충돌을 피하기 위한 기술입니다. SELECT * FOR UPDATE 문의 작동 방식SELECT: 일반적인 SELECT 문으로 시작하며 지정된 조건을 기반으로 테이블에서 행을 검색합니다. FOR UPDATE: SELECT 문의 끝에 FOR UPDATE 절을 추가합니다. 트랜잭션이 SELECT * FOR UPDATE 문을 실행하면 지정된 조건을 충족하는 행에 잠그게 되고, 현재 트랜잭션이 잠긴 행을 해제할 때까지 다른 트랜잭션이 이러한 행을 수정하지 못하게 합니다.동시성 제어가 필요할 때,좌석이나 티켓 예매시, 동시 접속자가 많아 둘 이상의 사람이 같은 자리를.. 2023. 9. 30.
오라클)Ordered와 Leading 힌트 1.orderedordered 힌트는 FROM 절에서 기술한 테이블 순서대로 조인합니다. 조인 순서에 따라 실행 계획이 달라지는 것을 볼 수 있습니다. SELECT /*+ ordered */ E.DEPTNO , E.EMPNO , D.DNAMEFROM DEPT D , EMP EWHERE D.DEPTNO = E.DEPTNO ; SELECT /*+ ordered */ E.DEPTNO , E.EMPNO , D.DNAMEFROM EMP E , DEPT DWHERE D.DEPTNO = E.DEPTNO ;2. leadingleading 힌트 안에 쓴 테이블 순서대로 조인합니다. leading도 위와 마찬.. 2023. 9. 30.
리액트) 테트리스 코딩(리액트 + toolkit + 타입스크립트 + styled components) 깃헙주소: https://github.com/Box-Cat/react-toolkit-tetris GitHub - Box-Cat/react-toolkit-tetris Contribute to Box-Cat/react-toolkit-tetris development by creating an account on GitHub. github.com 배포주소: https://647fa9cb2e3cc37e4ace08d0--classy-choux-d832e8.netlify.app/ REACT TOOLKIT TETRIS 647fa9cb2e3cc37e4ace08d0--classy-choux-d832e8.netlify.app *인터랙티브 웹을 적용해서, 핸드폰에서도 PC에서도 둘다 접속 가능합니다 2023. 9. 30.
스택(Stack) - 자바스크립트, JS class Stack { constructor() { this.items = []; } // 스택에 요소 추가 push(element) { this.items.push(element); } // 스택에서 가장 위의 요소 제거 후 반환 pop() { if (this.isEmpty()) { return "Stack is empty."; } return this.items.pop(); } // 스택의 가장 위의 요소 반환 (제거하지 않음) peek() { if (this.isEmpty()) { return "Stack is empty."; } return this.items[this.items.length - 1]; } // 스택이 비어있는지 여부 확인 isEmpty() { return this.items.l.. 2023. 7. 15.
사방면보다 큰수의 갯수 구하기 5*5 격자판이 주어집니다. 각 격자에는 숫자가 쓰여있습니다. 각 격자 판의 숫자 중 자신의 상하좌우 숫자보다 큰 숫자의 갯수를 구하는 프로그램을 작성하세요. 격자의 가장자리는 0으로 초기화 되었다고 가정한다. 0000000 0537230 0371610 0725340 0436410 0873520 0000000 function solution(arr){ let answer=0; let n=arr.length; let dx=[-1, 0, 1, 0]; let dy=[0, 1, 0, -1]; for(let i=0; i 2023. 6. 26.
반응형