본문 바로가기

전체 글

(424)
(TIL) -> { 비플제로페이; 온누리상품권; 세금공제; return 개이득; } 오늘의 알게된점: 공부할 땐 역시 뭐든 딴짓이 재밌다. 이번달 연말정산까지 더 들어와서 분배를 좀 하던 중에 긴가민가해서 제로페이를 다시 확인했다. 비플제로페이 앱을 사용해서 간편결제 하는건데, 지금까지 제로페이로 직접 계좌연결된거 결제하면 자동으로 10% 할인인줄 알았는데 아니었다. -> 제로페이로 결제하면 30% 세금공제가 되는거라서 기존 신용카드류 15% 보다 공제가 훨씬 많이되는 장점이 있는 것이다. 음 그러면 공제가 아니라 실제 금액의 10% 할인되는 것은 뭐냐? -> 제로페이에서 온누리상품권을 10% 할인된 금액으로 구매해서 온누리상품권으로 결제하면 된다. 이게 전통시장 마트에서 와인 살 때 온누리상품권을 사용가능했어서 헷갈렸다. 정리: 제로페이는 세금공제 2배, 전통시장 온누리상품권은 실제가..
캐싱을 한다면 고려할 점 (Spring, @Cachable, @CacheEvict) 서버에서 어떤 요청에 대해서 캐싱을 하려면 고려해야 할 것들이.. 1. 정상 반환에 대해서만 캐싱 2. 유효한 캐싱 시간을 설정하고 지나면 삭제 후 다시 로딩/계산 후 캐싱 (왜냐면 그 사이에 내용이 변화할 수 있으니까) 스프링 프레임워크를 놓고 본다면... @Cachable(value = "캐시이름", key = "#캐싱키이름(파라미터)", unless = "#result == null") public Object methodForCache(Object 캐싱키이름(파라미터)) { 무언가 작업을 하고; return 결과물; } 이 때, 스프링 캐시의 구현체로 설정하는 ehcache, redis 등의 cache manager 에서 ttl (time to live) 설정을 하는 것도 가능하겠지만.. 수동으로..
Java collection 교집합 retainsAll() 에 대하여 (List, Set, 시간복잡도, 최적화) List vs Set, Time complexity 보통 2개의 다른 콜렉션 등에서 같은 것들을 찾는 등의 동작은 List 의 경우는 n^2 시간복잡도이다 (빅오) 그래서 중복이 없다면 기준이 되는 콜렉션을 Set 으로 사용하면 n 시간복잡도로 해결 할 수 있다. UUID 교집합을 골라내는 작업 중 최적화가 필요한 부분이 있었는데, List 두개를 retainAll() 을 사용해서 구하고 있었다. n^2 의 경우에 약 50만^2 정도의 연산횟수가 필요했는데 retainAll() 을 사용할 필요없이 기준을 Set 으로 해서 O(n) 으로 마칠 수 있을 것 같다는 의견을 전달했다. 최초 내 생각은 Set 을 사용하되 retainAll 에 해당하는 메서드를 만들면 된다는 말이었지만 Set, List 로 기존 ..
HTTP 메시지에 관하여.. (HTTP/1.1 기준) HTTP 메시지에 관하여.. (HTTP/1.1 기준) 기본적인 HTTP 메시지의 구조는 메시지 헤더, 개행문자, 메시지 바디 로 만들어진다. 크게 Request, Response 메시지로 나눌 수 있다. 요청과 응답 시 헤더의 차이가 나는데, 요청 시: 리퀘스트 라인, 리퀘스트 헤더필드, 일반 헤더필드, 엔티티 헤더필드 응답 시: 상태 라인, 리스폰스 헤더필드, 일반 헤더필드, 엔티티 헤더필드 메시지 바디와 엔티티 바디의 차이점은? 기본적으로 HTTP 메시지 바디의 역할은 리퀘스트와 리스폰스에 관한 엔티티 바디를 운반하는 일이다. 따라서 기본적으로 메시지 바디와 엔티티 바디는 같지만, 전송 코딩이 적용되는 경우에 엔티티 바디의 내용이 변화하기 때문에 메시지 바디와 달라지게 된다. 메시지 바디 안에 엔티티..
MySQL vs Cubrid, 차이에 관하여... MySQL vs Cubrid, 차이에 관하여... 일반 기능 데이터 타입 쿼리 함수 그냥 이러이런게 다르다더라 정도로 보면 될 듯 하다. 전체 차이점도 아니다. 일반 기능 범주 MySQL Cubrid 테이블 내의 속성 수 ~3398 제한 없음 레코드 크기 ~65534 (BLOB, TEXT 별도) 제한 없음 명명 규칙 (테이블, 뷰, 인덱스) 대상_이름 [소유자].대상_이름 데이터베이스 이름 도메인 내 고유 도메인 내 고유 데이터베이스 이름 길이 64바이트 최대 17바이트 테이블 이름 데이터베이스 사용자 계정 안에서 고유 데이터베이스 안에서 고유, 대소문자 구분 없음 데이터 타입 대체적으로 비슷하지만, 다른 부분들이 있음 MySQL 에서 타입이 더 세분화하여 나뉘어져 있다. Cubrid 는 BIT 가 BI..
HTTP 2.0 에 관하여... HTTP 2.0 에 대하여... HTTP 2.0 등장배경 HTTP 2.0 특징 정리 https://github.com/itdar/TIL/commit/533167fb17d0c7d0a25ec6dcc9f905778a5b93fd chore: HTTP 2.0 에 관하여... · itdar/TIL@533167f + HTTP Message github.com 1. HTTP 2.0 등장배경 (2015) 과거의 웹 요청 및 전송속도에 쓰던 전송기술이 현대와 맞지 않음 HTTP 1.1 이 1999년도에 나온 후 웹 전송기술의 표준이 게속 유지되었음 옛날의 웹 요청과 다르게 최근에는 요청의 횟수와 요청 리소스 용량도 많아짐 전송속도도 옛날에 비해 100배 이상 빨라지게 됨 2. HTTP 2.0 특징 바이너리 프로토콜 텍스트..
DispatcherServlet 에 관하여... (스프링 디스패처서블릿) Dispatcher Servlet 에 관하여.. WAS -> Servlet Container (Servlet Context) -> Front Controller (Dispatcher Servlet) -> Servlet 으로 보면 될 것 같다. 그냥 오래전에 보고 막연하게 알고있다가 정리를 할 필요가 있어서 정리했다. 스프링 뿐만 아니라 대부분의 web MVC 프레임워크들은, 요청을 웹어플리케이션의 다른 컨트롤러나 기능제공 부분에 전달(dispatch) 해주는 센터 서블릿을 두고 디자인 되어있다. 스프링의 DispatcherServlet 은 Spring IoC Container 와 완벽히 통합되는 등 스프링이 제공하는 아주 많은 기능들을 사용할 수 있게 해준다. 프론트컨트롤러 패턴으로 부를 수도 있고, 다..
GRASP 책임할당패턴에 대하여... GRASP (General Responsibility Assignment Software Pattern) 에 관하여.. 책임 기반 객체지향 관점에서 객체에 책임을 할당하기 위한 패턴을 정리한 것 책임과 역할 이라는 말을 많이 쓰는데, 이 때 책임의 종류를 나열하고 어떻게 할당할 것인지에 대한 기준 패턴으로 보면 될 것 같다. Information Expert 역할을 수행할 수 있는 정보를 가지고 있는 객체에 역할을 부여한다. Problem: What is a basic principle by which to assign responsibilities to objects? Solution: Assign a responsibility to the class that has the information nee..