클래스 로더 (Class Loader)
2022. 1. 22. 20:37
개발 지식/JAVA 기본 지식
JVM의 클래스로더에 대해 조금 더 자세히 정리하려고 한다 JVM에서의 클래스 로더(Class Loader)의 역할 JAVA 컴파일러(javac)를 통해 변환된 Class 파일(바이트 코드)을 읽어서 메모리에 배치 클래스 로더 실행 순서 실행 순서는 로딩, 링크, 초기화 순으로 이루어 진다 로딩(Loading) .class 파일을 읽고 그 내용에 따라 적절한 바이너리 데이터를 만들고 메소드 영역에 저장 메소드 영역에 저장하는 데이터 종류 Class Interface Enum FQCN(Fully Qualified Class Name) (object, 함수, 변수의 계층적 구조를 모두 포함하여 표현하는 것. Java의 경우 클래스가 포함된 패키지를 의미함) String str = new String(); /..
매번 까먹는 JVM 정리
2022. 1. 22. 19:19
개발 지식/JAVA 기본 지식
매번 까먹는 것 같아서 생각난김에 정리해두려고 한다. JVM 이란? Java Virtual Machine 자바 가상 머신의 약자 Class 파일(자바 바이트 코드)을 OS에 특화된 코드로 변환하여 실행 (OS 환경에 구애받지 않고 재사용 가능하도록 중개 역할) GC(Garbage Collection)를 통해 메모리 관리 JAVA는 컴파일러 언어인데 JVM을 통해 인터프리터 방식으로 동작 JVM 기반 언어 Java, 클로저, 그루비, JRuby, Jython, Kotlin, Scala 등등.. JVM 구조 JVM 실행 순서 OS로 부터 메모리를 할당 받음 JAVA 컴파일러(javac)를 통해 JAVA 파일을 Class 파일(바이트 코드)로 변환 클래스 로더 시스템을 통해 바이트 코드를 읽음 로딩: Clas..
7장. Spring Web Security를 이용한 로그인 처리
2022. 1. 22. 13:54
개발 서적/코드로 배우는 스프링 웹 프로젝트
7장. Part07_Spring Web Security를 이용한 로그인 처리 ch30. Spring Web Security 소개 스프링 시큐리티의 기본 동작 방식 서블릿의 여러가지 필터와 인터셉터를 이용하여 처리 필터 인터셉터 서블릿에서 말하는 단순한 필터를 의미 스프링에서 필터와 유사한 역할 스프링과 무관하게 서블릿 자원 스프링의 빈으로 관리되면서 스프링의 컨텍스트 내에 속함 Dispatcher servlet의 앞단에서 정보를 처리 Dispatcher servlet에서 Handler(Controller)로 가기 전에 정보를 처리 J2EE 표준 스펙에 정의 되어 있는 기능 Spring Framework에서 자체적으로 제공하는 기능 인코딩이나 보안 관련 처리와 같은 web app의 전역적으로 처리해야 하는..
6장. 파일 업로드 처리
2022. 1. 22. 13:22
개발 서적/코드로 배우는 스프링 웹 프로젝트
6장. 파일 업로드 처리 ch21. 파일 업로드 방식 파일 업로드 방식 태그를 이용하는 방식 브라우저의 제한이 없어야 하는 경우에 사용 일반적으로 페이지 이동과 동시에 첨부파일을 업로드하는 방식 을 이용해서 화면의 이동 없이 첨부파일을 처리하는 방식 Ajax를 이용한 방식 첨부파일을 별도로 처리하는 방식 을 이용하고 Ajax로 처리하는 방식 HTML5의 Drag And Drop 기능이나 jQuery 라이브러리를 이용해서 처리하는 방식 방식의 파일 업로드 uploadForm.jsp Submit UploadController.java package org.zerock.controller; import java.io.File; import org.springframework.stereotype.Controll..
5장. AOP와 트랜잭션
2022. 1. 22. 13:20
개발 서적/코드로 배우는 스프링 웹 프로젝트
5장. AOP와 트랜잭션 ch18. AOP라는 패러다임 AOP란? 관점 지향 프로그래밍 관점이라는 용어는 개발자들에게 관심사(concern)라는 말로 통용됨 즉, 코드를 작성하면서 염두(관심)에 두는 일들 파라미터가 올바르게 들어왔을까? 이 작업을 하는 사용자가 적절한 권한을 가진 사용자인가? 이 작업에서 발생할 수 있는 모든 예외는 어떻게 처리해야 하는가? 등등... 핵심 로직은 아니지만, 코드를 온전하게 만들기 위해서 필요한 고민들. AOP는 이러한 핵심 비즈니스 로직이 아닌 관심사들을 별도의 코드로 작성하여 컴파일 혹은 실행시점에만 결합시킬 수 있도록 괌심사를 분리 하는 것. 이로 인해 개발자는 핵심 로직에 조금 더 집중할 수 있음 기존의 코드를 수정하지 않고, 원하는 기능들과 결합할 수 있는 패러..
4장. REST 방식과 Ajax를 이용하는 댓글 처리
2022. 1. 22. 13:17
개발 서적/코드로 배우는 스프링 웹 프로젝트
4장. REST 방식과 Ajax를 이용하는 댓글 처리 ch16. REST 방식으로 전환 REST 데이터 처리를 위한 어노테이션 어노테이션 기능 @RestController Controller가 REST 방식을 처리하기 위한 것임을 명시 함 @ResponseBody 일반적인 JSP와 같은 뷰로 전달되는 게 아니라 데이터 자체를 전달하기 위한 용도 @PathVariable URL 경로에 있는 값을 파라미터로 추출하려고 할때 사용 @CrossOrigin Ajax의 크로스 도메인 문제를 해결해주는 어노테이션 @RequestBody JSON 데이터를 원하는 타입으로 바인딩 처리 @RestController JSP와 달리 순수한 데이터를 반환하는 형태이므로 다양한 포맷의 데이터 전송 가능 주로 많이 사용 형태 : ..
3장. 기본적인 웹 게시물 관리물 관리
2022. 1. 22. 13:15
개발 서적/코드로 배우는 스프링 웹 프로젝트
3장. 기본적인 웹 게시물 관리물 관리 ch08. 영속/비즈니스 계층의 CRUD 구현 VO 클래스 정의 lombok 사용 package org.zerock.controller; import java.util.Date; import lombok.Data; @Data public class BoardVO { private Long bno; private String title; private String content; private String writer; private Date regdate; private Date updatedate; } org.zerock.mapper 패키지를 스캔하도록 설정 root-context.xml BoardMapper.java package org.zerock.mapper..
2장. 스프링 MVC 설정
2022. 1. 22. 13:10
개발 서적/코드로 배우는 스프링 웹 프로젝트
2장. 스프링 MVC 설정 ch05. 스프링 MVC의 기본 구조 web.xml Tomcat 구동과 관련된 설정 root-context.xml, servlet-context.xml 스프링과 관련된 설정 web.xml 설정 contextConfigLocation /WEB-INF/spring/root-context.xml org.springframework.web.context.ContextLoaderListener appServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/spring/appServlet/servlet-context.xml 1 appServlet / root-context.xml의 경로 ..
1장. 스프링 개발 환경 구축
2022. 1. 21. 18:58
개발 서적/코드로 배우는 스프링 웹 프로젝트
1장. 스프링 개발 환경 구축 ch01. 개발을 위한 준비 pom.xml 설정 pom.xml 에서 스프링 프레임워크 버전은 3.1.1로 생성되므로, 5.0.7 버젼으로 변경 java 1.8 버젼으로 변경 maven-compiler-plugin 3.5.1 버젼으로 변경 1.8 5.0.7.RELEASE 1.6.10 1.6.6 org.apache.maven.plugins maven-compiler-plugin 3.5.1 1.8 1.8 -Xlint:all true true lombok 설치 getter/setter, toString(), 생성자 등 자동 생성 ch02. 스프링의 특징과 의존성 주입 스프링의 주요 특징 POJO(Plain Old Java Object) 기반의 구성 별도의 API를 사용하지 않는 P..
String to Double Array (String -> Double[]) 변경
2021. 5. 26. 13:19
개발 지식/Memo
String str = "1.1,2.2,3.3,4.4,5.5,6.6,7.7"; double[] doubleArray = Arrays.stream(str.split(",")).mapToDouble(Double::parseDouble).toArray(); Double[] DoubleArray = Arrays.stream(str.split(",")).map(Double::valueOf).toArray(Double[]::new);