본문 바로가기

delphi481

8.Command 패턴과 Mediator 패턴 Command 패턴과 Mediator 패턴 Command 패턴 command의 의미는 '명령어'이다. 문서편집기의 복사(copy), 붙여넣기(paste), 잘라내기(cut) 등도 모두 명령어이다. 그런데 이런 명령어를 각각 구현하는 것보다는 [그림 5-52]처럼 하나의 추상 클래스에 execute() 메서드를 하나 만들고 각 명령이 들어오면 그에 맞는 서브 클래스(copy_command)가 선택되어 실행하는 것이 효율적이다. 이는 함수 오버로딩(overloading)과 같은 추상화 개념을 사용한 것이다. 그러나 command 패턴은 단순히 명령어를 추상 클래스(abstract class)와 구체 클래스(copy_command, cut_command, paste_command)로 분리하여 단순화한 것으로 .. 2023. 3. 28.
7. Immutable 패턴 / Flyweight 패턴 Immutable 패턴 / Flyweight 패턴 1. Immutable (변하지 않은...) 2.Flyweight (권투 헤비급..가볍다) 2023. 3. 27.
6-2.Instance 패턴 Instance 패턴 예를 들어 풀 만들기 및 필요할 때마다 할당하십시오. 왜? -Java는 Object로 시작하여 Object로 끝납니다. -너무로드 된 JVM 추적 오브젝트 -고려해야 할 사항 언제, 객체를 인스턴스화하는 방법 인스턴스화 객체를 최적화하는 방법 인스턴스 풀은 Singleton의 친구입니다 왜? -관리자 필요 -그러나 여러 관리자가 필요하지 않습니다 -한 명의 관리자만으로 충분 왜? -관리자 필요 -그러나 여러 관리자가 필요하지 않습니다 -한 명의 관리자만으로 충분 2023. 3. 24.
6-1.Singleton 패턴 Singleton 패턴 singleton은 '단독 개체', '독신자'라는 뜻 말고도 '정확히 하나의 요소만 갖는 집합' 등의 의미가 있다. singleton 패턴은 객체의 생성과 관련된 패턴으로서 특정 클래스의 객체가 오직 한 개만 존재하도록 보장한다. 즉 클래스의 객체를 하나로 제한한다. 프로그램에서 이런 개념이 필요할 때는 언제일까? 프린터 드라이버의 예를 들어보자. 여러 컴퓨터에서 프린터 한 대를 공유하는 경우, 한 대의 컴퓨터에서 프린트하고 있을 때 다른 컴퓨터가 프린트 명령을 내려도 현재 프린트하는 작업을 마치고 그다음 프린트를 해야지 두 작업이 섞여 나오면 문제가 될 것이다. 즉 여러 클라이언트(컴퓨터)가 동일 객체(공유 프린터)를 사용하지만 한 개의 객체(프린트 명령을 받은 출력물)가 유일하.. 2023. 3. 22.
5.facade 패턴 facade 패턴 facade는 '건물의 앞쪽 정면(전면)'이란 뜻이다. facade 패턴은 [그림 5-40]에서 적용 전과 후를 비교해보면 어떤 의미인지 짐작할 수 있을 것이다. 몇 개의 클라이언트 클래스와 서브시스템의 클라이언트 사이에 facade라는 객체를 세워놓음으로써 복잡한 관계를 정리(구조화)한 것이다. 즉 모든 관계가 전면에 세워진 facade 객체를 통해서만 이루어질 수 있게 단순한 인터페이스를 제공(단순한 창구 역할)하는 것이다. facade 패턴을 이용하면 서브시스템 내부에서 작동하고 있는 많은 클래스들의 관계나 사용법을 의식하지 않고 facade에서 제공하는 단순화된 하나의 인터페이스만 사용하므로, 클래스 간의 의존 관계가 줄어들고 복잡성 또한 낮아지는 효과를 볼 수 있다. 여기서 f.. 2023. 3. 21.
4-2.Prototype 패턴 Prototype 패턴 패턴 프로그램 코드를 작성하다보면 기존에 만들어진 인스턴스의 내용을 일부 수정하여 사용하고 싶을 때가 있다. 그런 경우 객체를 새로 생성할 때는 사용하는 new Object() 메서드보다 [그림 5-31]처럼 clone() 메서드를 이용해 기존의 것을 복사하여 일부만 바꿔 인스턴스를 생성할 수 있다. 이런 개념을 확장하여 처음부터 일반적인 prototype(원형)을 만들어놓고, 그것을 복사한 후 필요한 부분만 수정하면 new Object() 메서드로 객체를 생성하는 것보다 편리하다. prototype 패턴은 이처럼 인스턴스를 복제하여 사용하는 구조이다. 따라서 생성할 객체의 원형을 제공하는 프로토타입 인스턴스로부터 생성할 객체들의 타입이 결정되도록 한다. 이 패턴은 객체를 생성할 .. 2023. 3. 17.
4-1.RMI란 RMI란 1. Java RMI란? 1.1 개요 RMI(Remote Method Invocation)란? 1. 분산되어 존재하는 객체 간의 메시지 전송(메소드를 호출하는 것 포함)을 가능하게 하는 프로토콜 현대 시스템 개발은 3계층 시스템이 주류로 이루고, 이 3계층인 데이터베이스, 애플리케이션, 클라이언트 모두 객체를 통하여 구현하고 저장하는 일이 많아졌습니다. 그래서 이렇게 분산되어 존재하는 객체간의 메시지 전송을 할 필요가 생겼고 이를 가능케 하는 것이 RMI 프로토콜입니다. 2. RMI 자체는 분산객체 간의 통신을 구현하는 모든 프로토콜을 의미함. (CORBA, DCOM …) RMI는 Java RMI 이전부터 쓰여지던 단어로써 분산객체를 개념을 구현하는 CORBA, DCOM 등을 포함하는 의미입니다.. 2023. 3. 16.
3.객체지향 - 패턴 이해를 위한 객체지향 개념 - OOP 객체지향 - 패턴 이해를 위한 객체지향 개념 - OOP 1. inheritance : 상속 / 계승 2. Encapsulation : 은익성 , 캡슐화 3. Polymorphism : 다형성 - Method Overlading : 중복정의 / 방법 중첩 - Method Overriding : 재정의 - Heterogeneous Collection : 이기종 컬렉션 / 이기종집합 - Polymorphic Parameter : 다형성 매개 변수 /다형적 변수 1.Super(Parent) @ Child 2.Extends vs Implement ( single vs multi inheritance, 단일 대 다중 상속) 3.Is a' relationship ( 'a '관계 ) 4.java.lang.Object .. 2023. 3. 14.
2.Factory 패턴 2.Factory 패턴 abstract factory는 '추상적인 공장'이란 뜻으로, [그림 5-33]과 같이 여러 개의 concrete Product를 추상화시킨 것이다. 따라서 구체적인 구현은 concrete Product 클래스에서 이루어진다. abstract factory에서는 사용자에게 인터페이스(API)를 제공하고, 인터페이스만 사용해서 부품을 조립하여 만든다. 즉 추상적인 부품을 조합해서 추상적인 제품을 만든다. 역할 : 클래스를 인스턴스화합니다 요점 : 제작자와 제품의 연계 상실 이점 : 제품의 제작 방식 변경으로 인한 영향 없음 2023. 3. 13.
1.MVC (Model - View - Controller) 1.MVC (Model - View - Controller) 1. MVC 란 무엇인가 > 모델 -알고리즘 구현 (비즈니스 로직) -환경과 무관 >보기 -환경과 의사 소통 -모델을위한 I / O 인터페이스 구현 컨트롤러 -모델과 뷰 간 데이터 교환 (알림 프로토콜)을 제어합니다 2. MVC를 구현하는 방법 > OPP의 배경 개념 -브레인 스토밍을 통한 기능 및 속성 목록 만들기 -그룹화 -클래스의 정의 -MVC의 역할을 클래스에 할당 2023. 3. 10.
디자인 패턴? 디자인 패턴? - Software Engineering Concept, Created by GOF(Gang of FOUR) (GOF (Gang of FOUR)가 만든 소프트웨어 엔지니어링 개념) - Artifacts from creative OOP - How to DEsign S/W (소프트웨어 설계 방법) - Basic Pattern 23EA, still being Built (기본 패턴 23) 2023. 3. 9.
mariaDB 마리아DB 컬럼 암호화 복호화 mariaDB 마리아DB 컬럼 암호화 복호화 AES_ENCRYPT(암화화할 값,암호키) AES_DECRYPT(복호화할 값,암호키) 컬럼 타입을 바꿔준다. ALTER TABLE 테이블명 MODIFY 컬럼명 blob; UPDATE 테이블명 a SET a.컬럼명 = AES_ENCRYPT(암호화할컬럼또는데이터, SHA2("암호화비밀번호",512)) , SELECT CONVERT(AES_DECRYPT(암호복호화데이터또는컬럼명,SHA2("암호화비밀번호",512))using euckr) Cus_JuminNumber FROM 테이블명 a 2023. 3. 8.
sqlite 팁 TIP sqlite 팁 TIP Sqlite 다중 중첩 case문 case [Su_Volt] when 1 then (case [Su_Kind] when 1 then '6600' when 2 then '440' end) when 2 then (case [Su_Kind] when 1 then '3300' when 2 then '380' end) when 3 then (case [Su_Kind] when 2 then '220' end) end as Su_Volt, expecting: LargeInt actual: WideString TFDQuery and SQLite: Type mismatch for field, expecting: LargeInt actual: WideString SELECT DayTime AS "T.. 2023. 3. 3.
[sqlite] 문자열 자르기 그 외 팁 문자열 자르기 그 외 팁 SELECT substr('yumipink@naver.com', 5) → return : pink@naver.com , substr('yumipink@naver.com', 1,4) → return : yumi , instr('yumipink@naver.com','@') → return : 9 , substr('yumipink@naver.com',1,(instr('yumipink@naver.com','@')-1)) → return : yumipink 2023. 2. 20.
SQLite 다중 스레드 응용프로그램 사용 SQLite 다중 스레드 응용프로그램 사용 1. 개요 SQLite는 세 가지 스레딩 모드를 지원합니다. 단일 스레드. 이 모드에서는 모든 뮤텍스가 비활성화되고 SQLite는 한 번에 단일 스레드에서 사용하지 않는 것이 안전합니다. 멀티 스레드. 이 모드에서SQLite는 두 개 이상의 스레드에서 단일 데이터베이스 연결이 동시에 사용되지 않는 경우 여러 스레드에서 안전하게 사용할 수 있습니다. 직렬화. 직렬화된 모드에서SQLite는 제한 없이 여러 스레드에서 안전하게 사용할 수 있습니다. 스레딩 모드는 컴파일 시간 (SQLite 라이브러리가 소스 코드에서 컴파일되는 경우) 또는 시작 시간 (SQLite를 사용하려는 응용 프로그램이 초기화되는 경우) 또는 런타임(새 SQLite 데이터베이스 연결이 생성되는 경.. 2023. 2. 17.
오라클 필드에 필드 추가/수정/삭제(Alter table) 오라클 필드에 필드 추가/수정/삭제(Alter table) alter table [table_name] modify( [컬럼명] [변수형] ) =>alter table 도서원장 modify(도서명 varchar2(50)); 도서원장에 존재하는 도서명 컬럼의 데이타 타입을 varchar2(50)으로 바꾼다. alter table [table_name] drop( [컬럼명]) =>alter table 도서원장 drop(도서명); 도서원장에 존재하는 도서명 컬럼을 삭제한다. alter table [table_name] add( [컬럼명] [변수형] ) =>alter table 도서원장 add(출판사코드 varchar2(3)); 도서원장에 출판사코드컬럼을 새로이 추가한다. 2023. 2. 8.
오라클 시퀀스 생성/초기화 오라클 시퀀스 생성/초기화 DROP SEQUENCE PAY_REG_NO create sequence PAY_REG_NO increment by 1 -- 증가값 start with 1 -- 첫 시작값 nomaxvalue -- 최대값 제한 (최대값 제한) nocycle nocache; 2023. 2. 7.
오라클 설치하기-무료버전 오라클 설치하기 오라클 설치하기-무료버전 https://www.youtube.com/watch?v=mJXgnqaGR8o&list=PLuvImYntyp-s76lJiia8YfskDRAypeoyh&index=14 CMD 창을 열고 sqlplus sys as sysdba 입력 비밀번호는 오라클 설치시 설정 해놓은 비밀번호 저는 항상 1234 로해놓습니다. 접속 완료 create user 계정이름 identified by 계정비번; 하면 당연히 만들어 저여하는데 에라가 똮!! 1행에 오류: ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. 음......... 삽질해보니 오라클 12c로 넘어오면서 계정이름 앞에 c##을 붙여줘야 공통 사용자를 생성가능 하답니다. 다시 create user c##계정이름.. 2023. 2. 6.
오라클 버전 정보 알아내기 오라클 버전 정보 알아내기 >>> V$VERSION 데이터 사전을 사용해 보도록 하쟈 SQL> COL banner FORMAT A70 HEADING "Oracle Versions" SQL> SELECT banner FROM V$VERSION; ***********************************결과 화면*************************************** 그외 정보 알아보기 2.제품 인스톨 정보 조회 >> PRODUCT_COMPONENT_VERSION 데이터 사전을 사용 SQL> COL PRODUCT FORMAT A30 HEADING "Products Installed" SQL> COL VERSION FORMAT A15 SQL> COL STATUS FORMAT A15 SQL>.. 2023. 2. 2.
ms sql 포맷 - 콤마 찍기 ms sql 포맷 - 콤마 찍기 숫자만 있는 경우 replace(convert(varchar, cast(숫자필드 AS MONEY),1), '.00','') 위의 경우는 일단 숫자 필드를 MONEY 타입으로 캐스팅 한다 그러면 기본 숫자에 콤마가 찍히게 되고 달러기준 MONEY 표시 이기 때문에 센트 표현을 위해서 #,###.## 의 형태로 나오게 된다. 당연히 소숫점은 없는거라 생각하고 varchar 형태로 바꾼 다음 센트 표시를 하는 소숫점 부분을 replace로 없애버린다고 생각하면된다. ㅇㅋ? CASE WHEN ISNUMERIC(숫자필드) = 0 THEN 숫자필드 ELSE REPLACE(CONVERT(VARCHAR, CAST(숫자필드 AS MONEY),1),'.00','') END 그리고 위의 경우.. 2023. 1. 31.