목록Backend/Java (44)
elevne's Study Note

Gson 은 Java Object 를 JSON 으로 변환하는데 사용할 수 있는 Java 라이브러리이다. JSON 문자열을 동등한 Java 객체로 변환하는데에도 사용할 수 있다. 우선 아래와 같이 간단하게 User 클래스를 작성해본다. package test_classes2; public class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } 위 클래스를 JSON 문자열로 변환하는 것은 매우 간단하다. 아..

Enum (열거체, Enumeration Type) 에 대해서 알아보았다. C 언어와 C++ 에서는 열거체를 사용할 수 있었지만, JDK 1.5 이전의 Java 에서는 Enum 을 사용할 수 없었다고 한다. 하지만 JDK 1.5 이후로는 C 언어의 열거체보다 더욱 향상된 성능의 Enum 클래스를 사용할 수 있게되었다고 한다. 자바의 Enum 은 열거체를 비교할 때 실제값 뿐만 아니라 타입까지도 체크하며, 열거체의 상수값이 재정의되더라도 다시 컴파일할 필요가 없다는 장점이 있다. 우선 아래와 같이 매우 간단한 Enum 클래스를 생성해보았다. package test_classes; public enum TestEnum { RED, BLUE, GREEN } 위 TestEnum 내에 RED, BLUE, GREE..

이번에는 Java 의 Functional Interface 에 대해 알아보았다. Functional Interface 란 단 하나의 추상 메서드를 가지는 인터페이스를 말한다. (단 default 메서드는 제외한다) @FunctionalInterface 메서드가 사용될 수 있는데 이는 인터페이스가 Functional Interface 라는 것을 명시해주며, 이를 사용할 시 부적절한 메서드를 추가하거나 다른 인터페이스를 상속받으면Compile error 을 발생시킨다. Functional Interface 를 사용하는 이유는 무엇일까? 함수형 개발 방식은 행위에 해당하는 부분도 값으로 취급이 가능해졌다는 뜻이다. 코드의 재활용 단위가 클래스에서 함수 단위로도 가능해진 것이며, 이는 개발을 더 유연하게 할 수..
Thread Thread 클래스는 Java 에서 제공하는 클래스 중 하나로 멀티쓰레드 프로그래밍을 구현하는데 사용된다. Thread() Thread(Runnable target) Thread(String name) Thread(Runnable target, String name) Thread(ThreadGroup group, Runnable target) Thread(ThreadGroup group, String name) Thread(ThreadGroup group, Runnable target, String name) Thread 클래스는 start(), run(), sleep(), yield(), join(), interrupt() 등 다양한 메서드를 제공한다. start() 메서드는 쓰레드를 실행..
Native native 키워드는 자바 코드 내에서 다른 언어를 사용할 수 있게끔 해준다. JNI (Java Native Interface) 를 사용하는데, 이는 자바로 만들어진 프로그램에서 특정 플랫폼에서만 실행되는 코드 (Native Code) 에 접근하기 위한 API 인 것이다. Native Code 를 생성하는 다른 언어와 함께 공동작업, 하드웨어에 보다 깊게 접근하여 컨트롤할 수 있다는 장점이 있다. 예를 들어 C 언어로 작성된 외부 라이브러리를 Java 프로그램에서 사용하려면 해당 라이브러리의 함수를 Java 메서드로 래핑하고, 해당 메서드에 native 키워드를 사용하여 해당 함수가 C 언어로 작성된 코드와 연결되도록 선언할 수 있는 것이다. public class NativeExample ..

Cache 란, 간단히 설명하자면 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소를 가리키는 것이다. 또는 잠시 저장해둔다는 의미로 사용하기도 한다. 캐시는 저장 공간이 작고 비용이 비싸지만, 빠른 성능을 보장한다. 조금 더 구체적으로는, Cache Memory 는 메인 메모리와 CPU 간의 데이터 속도 향상을 위한 중간 버퍼 역할을 하는 CPU 내 또는 외에 존재하는 메모리이다. Cache 의 원리를 이용한 Cache 서버를 활용하여 CDN 같은 서비스에 응용해볼 수도 있다고 한다. CDN 은 컨텐츠를 딜리버리 해주는 서비스인데, 먼 곳에 있는 파일을 매번 불러오는 것은 네트워크 구간이 멀어 실패할 수도 있고 오래 걸릴 수도 있다. 여기에서, 자주 쓰는 파일들을 가까운 지역의 서버에 올려놓음으..

Java 에서 Spring 프레임워크를 사용하지 않고 서버를 생성하는 방법에 대해 알아보았다. 이러한 경우에는 HttpServer 클래스를 사용할 수 있다. 우선 아래와 같이 main 함수를 구성하였다. public static void main(String[] args) throws Exception{ HttpServer server = HttpServer.create(new InetSocketAddress(8090), 0); server.createContext("/", new MyRequestHandler()); server.setExecutor(null); server.start(); System.out.println("===========================================..
Spring 웹 프로젝트에서 파일 다운로드 기능을 제작하는 방법에 대해서 알아보았다. 우선 아래와 같은 인자를 갖는 함수를 Controller 에 정의해준다. @GetMapping("/download") public void downloadFile(@RequestParam int fileSeq, HttpServletRequest request, HttpServletResponse response) thrwos Exception { ... } HttpServlet 은 HTTP 프로토콜을 사용하는 웹 브라우저에서 서블릿 기능을 수행한다고 한다. WAS 가 브라우저로부터 Servlet 요청을 받으면 요청받을 때 전달받은 정보를 HttpServletRequest 객체를 생성해서 저장, 브라우저에 응답을 반환할 ..