반응형

java 17

Java에서의 Close (feat. Connection, Statement, ResultSet)

Java에서 Close 의 의미는? Java에는 close가 필요한 객체들이 여러개 있다. Java Application 내에서만 사용되는 자원들이 아니라 운영체제의 자원을 사용하는 것들(File, Network, DB 등)이 이에 해당한다. 꼭 자원의 문제가 아니더라도 종료를 명시하는 close 메서드가 존재한다면 사용 후 호출하기를 의도했을 수 도 있으니 API문서를 잘 확인하여 보자. 여기서는 부스트코스 JDBC 연결 샘플에 있는 내용으로 예를 들어 본다. Close 방식 Java 7 이전의 finally 방식 Java 7 try-with-resources 방식 Java 9 향상된 try-with-resources 방식 Java 7 이전의 finally 방식 public Role getRole(In..

카테고리 없음 2019.10.18

카운트 증가 로직 성능 향상을 위한 방법

각각의 요청마다 조회 수나 노출 수 등을 증가시켜야 한다면 어떻게 처리하는 것이 좋을까? 단순하게는 요청이 올때마다 +1씩 업데이트를 해주면 된다. 하지만 대량의 트래픽이 발생되는 환경에서 매 번 많은 비용이 소모되는 디비 연결과 update가 이루어진다면 부하를 감당하지 못 해 장애로 연결될 것 이 뻔하다. 개선을 위한 방법 중 하나는, 로컬 메모리로 매 번 요청되는 카운트 증가를 관리하고 일정시간마다 한 번 씩 모아서 db에 update하는 방법이다. 참고용으로 코드를 적어둔다. 흐름 카운트 증가 요청 시 매번 countMap에 누적 (CountService.addReadCount) 매 5초마다 countMap의 누적 카운트를 DB로 업데이트 (ScheduledTasks.addCountInDb) pu..

Dev/Backend 2019.09.26

부록. Class Diagram Code 변환 연습

다음의 다이어그램을 보고 머리속으로 코드를 한번 떠올려보자. 그리고 나서 코드칸의 답을 확인해 본다. (JAVA) design pattern model 해석 준비사용요소diagramcodeclassvisibility stereo typestatic Generalization Realization Dependency association aggregation composition 같이 보기2019/02/19 - [Dev. 객체지향개발/디자인패턴] - 부록. design pattern과 class diagram2019/02/19 - [Dev. 객체지향개발/디자인패턴] - 부록. Class Diagram 구성 요소2019/02/19 - [Dev. 객체지향개발/디자인패턴] - 부록. Class Diagram C..

Dev/아키텍처 2019.02.19

[jackson] json serialize 시 상위클래스 필드 무시하기

rest api response로 객체를 json으로 변환하는데 가끔 상속받은 객체의 필드명과 다르게 반환해야 하는 경우들이 있다. 이런 경우 쓸 수 있는 팁. @JsonIgnore 활용 getter method 생성. public class SuperClass implements Serializable { private static final long serialVersionUID = -4657230387423033313L; protected String superA; protected String superB; public String getSuperA() { return superA; } public void setSuperA(String superA) { this.superA = superA; }..

Dev/Backend 2019.01.15

[spring - mybatis tip] MyBatis(iBatis)에서 Java Enum code custom typeHandler 사용하기

요즘에야 JPA - Hibernate를 많이 쓰는 추세라 이런 고민은 안하겠지만.. 프로젝트는 spring - mybatis기반이고.. 객체 지향 설계를 하다보니 enum들은 많아지고 그렇다고 mybatis에서 기본 제공되는 EnumTypeHandler를 쓰자니 DB에 저장되는 값이 커지고.. 뭐 그래서 암튼 enum 요소에 매핑되는 code값들을 db에 넣고 싶은데 이놈들을 코드값으로 넣고 빼고 하는건.. 아무래도 customizing이 필요함. 사용법은 아래처럼.. MediaEnumUtil.javapublic class MediaEnumUtils { public static T getCodeEnum(Class enumClass, String code) { return EnumSet.allOf(enum..

Dev/Backend 2017.07.06

[Java Test Tip] Assertj 로 좀 더 직관적인 테스트설계를 하자!

AssertJ란? java test를 위해 좀 더 풍부한 문법을 제공하고 메서드 체이닝을 통해 직관적인 테스트 흐름을 작성할 수 있도록 개발된 오픈소스 라이브러리이다. 최근 junit에 필수로 사용되고 있는 추세이다. 공식홈페이지http://joel-costigliola.github.io/assertj/ maven org.assertj assertj-core 3.8.0 test gradletestCompile 'org.assertj:assertj-core:3.8.0' 실사용예 - 공식홈페이지에서 발췌. // entry point for all assertThat methods and utility methods (e.g. entry) import static org.assertj.core.api.Asse..

Dev/Backend 2017.06.26

[Java Test Tip] JsonPath 로 더 쉽게 테스트하자.

JsonPath란?json 데이터를 쉽게 처리할 수 있도록 표현식 제공. 공식페이지https://github.com/json-path/JsonPath 사용법 테스트 페이지http://jsonpath.herokuapp.com/ maven com.jayway.jsonpath json-path 2.2.0 실사용예@Test public void testMethodArgumentNotValid() throws Exception { mockMvc.perform(post("/test/method-argument").content("{}").contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isBadRequest()) .andExpect(jsonPath("$...

Dev/Backend 2017.06.26

Global 환경의 Timezone을 고려한 개발 관련 사항들..

참고날짜 데이터 연산의 달인기술을 전수하기 (1) - http://staropener.tistory.com/451날짜 데이터 연산의 달인기술을 전수하기 (2) - http://staropener.tistory.com/452날짜 데이터 연산의 달인기술을 전수하기 (3) - http://staropener.tistory.com/453Java에서 표준시(Global Time)와 지방시(Local time)를 상호 변경하는 함수 - http://blog.acronym.co.kr/archive/20120718다국어, 국제화 웹 사이트 개발시 고려사항 - http://jace.tistory.com/121Global 환경에서 프로그래밍 하기 - Time Zone 이야기 - http://www.smartplace.kr..

Dev/Backend 2015.09.30

Java Velocity 템플릿 엔진 완전 정리 — VTL 문법과 실전 예제

Spring Boot 시대에 Thymeleaf가 표준이 됐지만, Velocity 기반 레거시 프로젝트는 아직도 많습니다.유지보수 중에 VTL 문법을 찾는 분들을 위해 핵심 내용을 정리했습니다.Velocity란?Apache Velocity는 Java 기반 템플릿 엔진입니다. 웹 페이지 디자이너와 개발자가 MVC 아키텍처에서각자의 영역에 집중할 수 있도록 설계되었습니다. JSP의 실용적인 대안으로 오랫동안 쓰였습니다.HTTP, HTTPS 환경에서 HTML 생성이메일 템플릿, SQL 쿼리 생성 등 웹 외 영역에도 활용VTL(Velocity Template Language) 사용신규 프로젝트라면 Thymeleaf를 권장합니다. 이 글은 기존 Velocity 코드 유지보수를 위한 레퍼런스입니다.Velocity v..

Dev/아카이브 2015.04.29

[JAVA] Network 한눈에 보기(URL, InetAddress, Socket, DatagramSocket 등)

1. 짚고가야 할 주요 용어 (1) 네트워크(NETWORK)란? - 컴퓨터 Network은 서로 다른 장소에 있는 컴퓨터 시스템들을 서로 연결하는 데이터 통신 시스템을 말한다. (2) 프로토콜(PROTOCOL)이란 ? - 통신할 때의 데이터를 구분 하기 위한 꼬리표(통신규약 - 언어) (1) TCP/IP의 개념 (Transmission Control Protocol/Internet Protocol) - 통신 프로토콜 혹은 통신 규약. 인터넷에서 사용하는 기본적인 통신 프로토콜이며 인트라넷이나 엑스트라넷과 같은 사설 망에서도 사용이 가능함. 사용자가 인터넷에 접속하기 위해 자신의 컴퓨터를 설정할 때 TCP/IP 프로그램이 설치되며, 이를 통하여 역시 같은 TCP/IP 프로토콜을 쓰고 있는 다른 컴퓨터 사용..

Dev/Backend 2013.01.24
반응형