팩토리 메소드 패턴에서 템플릿 메소드 패턴의 사용됨을 안다. 팩토리 메소드 패턴에서의 구조와 구현의 분리를 이해 creator 클래스 내에 create 함수가 템플릿 메소드 패턴처럼 여러 단계로 나누어지는 경우가 있다. ex ) oper1 실행 후 oper2 실행 ... 이것을 사용 요구사항 게임 아이템과 아이템 생성 구현 아이템을 생성하기 전에 데이터 베이스에서 아이템 정보 요청 아이템 생성 후 아이템 복제 등 불법 방지를 위해 DB에서 아이템 생성정보를 남김 아이템을 생성하는 주체를 ItemCreator로 이름을 짓는다. 아이템은 item이라는 인터페이스로 다룬다( use함수를 기본으로 가지고 있다.) 현재 아이템의 종류는 체력 회복 물약, 마력 회복 물약이 있다. public interface It..
알고리즘을 단계별 메소드로 나눈다! ( Operation1(), Operation2(), Operation3() ); 알고리즘을 수행할 템플릿메소드를 만든다. 하위 클래스에서 메소드 구현 요구사항 1. 신작 게임의 접속 구현 - requestConnection(String str) : String 유저가 접속시 다음을 고려 보안: 보안 처리, 인증: id/pwd 확인, 권한: 유료회원인지 무료회원인지 확인, 접속: 접속자에게 커넥션정보 넘김 추상화 클래스 ( 알고리즘의 단계별 메소드, 정의된 메소드를 이용한 템플릿 메소드 작성 ); public abstract class AbstGameConnectHelper { protected abstract String doSecurity(String string)..
RestAPI 속도 개선 https://ehdvudee.tistory.com/24 REST API 속도 개선(Java/Spring/Cache) 목차 상황 REST API 속도 개선 기술 스프링 캐시 용례1 - 1억건 통계 데이터 처리 API 캐싱 용례2 - KMS 캐싱 (EHCache를 통한 기능 추가) 상황 우연히 1억건의 DB 데이터를 처리하는 API 서버를 개발하게 되 ehdvudee.tistory.com Spring Rest Docs https://jaehun2841.github.io/2019/08/04/2019-08-04-spring-rest-docs/#asciidoctor-plugin-%EC%84%A4%EC%A0%95 Spring Rest Docs를 이용한 API 문서 만들기 | Carrey`..
정의 Exception은 Checked Exception과 Unchecked Exception으로 구분됨 RuntimeException을 상속하지 않는 클래스가 Checked Exception RuntimeException을 상속한 클래스가 Unchecked Exception 특징 RuntimeException 은 언제 발생할까? 프로그래머의 실수로 발생하는 예외 ( 0으로 나누기, nullPointer, outofindex) => Code를 잘못 만들어서 생기는 문제. => 업무의 흐름보다는 기본적인 에러. => 컴파일 하는데는 문제가 없다. 실행하면 문제가 발생함. ----------------------------------------------------------------------------..
Wrapper 클래스 자바의 primitive type의 객체화 버전이다. 비교PrimitiveWrapper 1 byte Byte 2 short Short 3 int Integer 4 long Integer 5 float Integer 6 double Integer 7 char Character 8 boolean Boolean 박싱 : 기본 타입 -> 래퍼 클래스의 형태로 변환 언박싱 : 래퍼 클래스 -> 기본 타입의 형태로 변환 자바 1.5 버전 이상부터는 박싱/언박싱이 자동으로 됨 사용이유 int [] arr = new int[4]; ArrayList list = new ArrayList() -----> Error ArrayList list = new ArrayList() Integer로 받는 경우에..
Content-Type의 종류 1) Multipart Related MIME 타입 - Content-Type: Multipart/related
##GET으로 수정을 했다고 가정하자. GET 특징을 그대로 적용해보면 GET은 캐시가 남는다. GET은 파라미터에 URL이 남는다. -- GET을 사용할 때 메시지가 남는다. 민감한 정보가 포함되었는가? 민감한 정보를 담지 말라는 의미 : 즉 수정에 사용하지 말라는 의미로 유추된다. 캐시가 남는 점(브라우저에 남는다).. 보안에 좋지 않다.추가 작성 예정
가로 스크롤 넣어야 할 때 옵션 셋팅 shrinkToFit :false autowidth: true 코드 $("#gridId").jqGrid({ height:auto, autowidth:true, // jQgrid width 자동100% 채워지게 shrinkToFit:false, // width를 자동설정 해주는 기능 colNames:['a','b'...], colModel:[ {name:'a', index:'a', width: 100, key: true, hidden:true...}, // 값을 키로 사용하기, // hidden : 값 숨기기 {name:'b', index:'b', width: 150, ...}, ....
- 방법 조사 이유 : . API 결과 관리 페이지 개발 중 개발자에게 JSON 응답 가이드를 전달하기 위해 [Jsonlint와 같은 json 정렬을 간단하게 구현하는 방법] 1. TextArea영역에 바인딩함을 조건으로 한다. 2. JSON.stringify(data, null, 4) - data는 Object 형태 - , } 이런 것들 뒤에 4칸씩 뛰어서 정렬 3. TextArea에 붙힌다 - $('#contents').val(JSON.stringfy(data, null, 4)); - TextArea에 처리해야 그대로 들여쓰기가 적용된다.