본문 바로가기
반응형

Develop/Java+Kotlin61

[Jackson] JsonNode, ObjectNode, ArrayNode 차이 🐱‍🐉 개요 이번에 개발하면서 JsonNode, ObjectNode, ArrayNode을 정말 많이 썼는데 정리용으로 글을 작성한다. 먼저 Json에 대해 잘 모르면 아래 글부터 읽어보길 바란다. https://yeonyeon.tistory.com/48?category=925909 [Json] Json의 개념과 형식 개요 JsonNode와 ObjectNode의 차이점을 찾다가 아예 json에 대해 정리하게 되었다. 목차는 다음과 같다. Json의 개념 Java에서 Json 사용하기 - Jackson JsonObject와 JsonArray JsonNode와 ObjectNode Json 관련.. yeonyeon.tistory.com 🐱‍👤 JsonNode, ObjectNode, ArrayNode JsonNo.. 2021. 8. 24.
[Java] 얕은 복사와 깊은 복사 (+Clone) 코딩테스트를 보면서 Queue를 여러 메소드에서 사용하다가 요소가 여러개 삭제되는 경우가 있었다. 파라미터로 보낸 Queue에서 요소를 삭제하면 원본 Queue에도 영향을 미치는 문제였으며, String 같은 변수를 넘길 때는 파라미터 값을 변경해도 원본에는 영향을 미치지 않았다. 이 개념을 정리하기 위해 글을 작성한다. 한 가지 간단한 테스트를 해보자. public class Test { public static void main(String[] args) { String str = "originTest"; String[] arr = {"origin", "test"}; System.out.println("before: "+str); for(String a:arr) { System.out.println(.. 2021. 6. 22.
[Java] static과 synchronized 흔히 static 키워드는 multi-thread 환경에서 문제가 생기고, multi-thread 접근을 방지하기 위한 방법으로는 synchronized의 사용이 있다. static만 쓰거나, synchronized만 쓰거나, 둘 다 쓰거나... 이런 경우가 헷갈려서 따로 정리해본다. static 메모리에 한 번 할당되며 프로그램 종료 시 해제 GC과 관여하지 않는 영역의 메모리에 저장됨 객체 지향적이지 않아서 Java에서는 사용 지양을 권장 interface 구현에 사용할 수 없어 재사용성이 떨어짐 multi-thread 환경에서도 공유됨 설정 파일 정보, 자주 사용하고 절대 변하지 않는 변수(이건 final static을 쓰면 좋다) 등에 사용 메모리에 대한 보충 설명 ▼ 더보기 JVM의 메모리 영역.. 2021. 5. 26.
[Java] Collections와 Map 코딩 테스트를 풀때 효율성 문제에서 제일 헷갈리는게 Collections 같다. '자바 성능 튜닝 이야기' 책에 의하면 각 클래스의 효율성 자체는 크게 나지는 않지만... 어느 상황에 어떤 컬렉션을 쓰는 것이 적절한지 헷갈리니까 정리해두겠다. 이 글은 컬렉션 프레임워크를 대충 쓰고는 있었지만 서로의 차이점을 확실히 알고 싶은 사람에게 추천한다. 사용법이 아닌 개념과 이해를 위한 설명을 위주로 작성한다. 컬렉션 프레임워크(Collection Framework)란? 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화해 클래스로 구현한 것 Collection Framework의 계층 Collection fra.. 2021. 5. 21.
[MVC] Controller 단순화 v3까지 설계한 것은 구조적으로 좋은 설계이다. 하지만 개발자들 입장에서는 항상 ModelView 객체 생성 반환해야해서 좀 번거롭다. 이를 좀 더 단순화하기 위해 코드를 변경해보겠다. 이전 코드: yeonyeon.tistory.com/105 [MVC] Model 분리 현재 코드의 문제점 컨트롤러는 매번 사용하지도 않는 HttpServletRequest, HttpServletResponse를 받는다. "/WEB-INF/views/new-form.jsp" 같은 경로에서 "/WEB-INF/views" 같이 경로가 반복된다. 현재 서블릿에.. yeonyeon.tistory.com 이번 글은 코드 전문을 공개하기보다 어느 부분이 어떻게 바뀌었는지 위주로 짚어보겠다. (코드 전문: https://github.co.. 2021. 5. 13.
[MVC] Model 분리 현재 코드의 문제점 컨트롤러는 매번 사용하지도 않는 HttpServletRequest, HttpServletResponse를 받는다. "/WEB-INF/views/new-form.jsp" 같은 경로에서 "/WEB-INF/views" 같이 경로가 반복된다. 현재 서블릿에서 종속성을 제거하기 위해 Model과 View 이름을 전달하는 객체 ModelView를 생성해보겠다. ModelView는 MyView와 마찬가지로 다른 버전에서도 계속 사용하기 위해 상위 폴더에 둔다. ModelView @Getter @Setter public class ModelView { private String viewName; private Map model = new HashMap(); public ModelView(String.. 2021. 5. 11.
[MVC] View 분리 지난 글 까지는 MVC 패턴을 분리하고, Front Controller를 분리했다. 이제 View를 분리하는 작업을 해보겠다. 프로젝트 구조는 다음과 같다. MyView는 이후 다른 버전에서도 사용할 것이므로 v2보다 상단인 frontcontroller에 위치 시켰다. MyView public class MyView { private String viewPath; public MyView(String viewPath) { this.viewPath = viewPath; } public void render(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { RequestDispatcher dispatc.. 2021. 5. 10.
[MVC] 프론트 컨트롤러 패턴 기존의 패턴을 설명하자면 아래 그림과 같다 각 클라이언트들은 Controller A, B, C에 대해 각각 호출한다. 공통 코드들은 별도로 처리되어 있지 않고 각 Controller에 포함되어 있다. 하지만 프론트 컨트롤러 패턴을 도입한다면? 각 클라이언트들은 Front Controller에 요청을 보내고, Front Controller은 각 요청에 맞는 컨트롤러를 찾아서 호출시킨다. 공통 코드에 대해서는 Front Controller에서 처리하고, 서로 다른 코드들만 각 Controller에서 처리할 수 있도록 한다. 장점을 정리해보자면, 공통 코드 처리가 가능 (★중요) Front Controller 외 다른 Controller에서 Servlet 사용하지 않아도 됨 스프링 웹 MVC의 핵심도 위 같은.. 2021. 5. 10.
[MVC패턴] 회원 관리 웹 애플리케이션 예제에 들어가기 앞서 MVC 패턴에 대해 간단히 설명하겠다. 프로젝트 구성 요소를 Model, View, Controller 3가지로 나눈 패턴 Model: View에 출력할 데이터 담아두기 View: Model에 담긴 데이터를 사용해 화면 그려내기 Controller: HTTP 요청을 받아 파라미터 검증 및 비즈니스 로직 실행. View에 전달할 결과 데이터를 Model에 담기 기본적으로 나는 일단 코딩하고 개념을 찾아보는 편이라... 자세한 설명은 생략한다. 이후에 MVC 패턴에 대해 따로 공부하는 것을 추천한다. 회원 관리 웹 애플리케이션의 요구사항 회원 저장 회원 목록 조회 회원 관리 웹 애플리케이션 코드 비교 Servlet: yeonyeon.tistory.com/100 JSP: yeonyeon... 2021. 5. 10.
반응형