Java
-
토비의 스프링[8] 스프링이란 무엇일까?Spring 2021. 7. 19. 11:08
스프링 프레임워크 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크 애플리케이션의 전 영역을 관통하는 일관된 프로그래밍 모델과 핵심 기술을 바탕으로 해서 각 분야의 특성에 맞는 필요를 채워주고 있기 때문에, 애플리케이션을 빠르고 효과적으로 개발할 수가 있다. 이것이 스프링이 애플리케이션 프레임워크라 불리는 이유다. 스프링을 MVC프레임워크 혹은 JDBC/ORM 지원 프레임워크라고 생각하는 것은 스프링이 다루는 일부 영역만 봤기 때문이다. 스프링을 IoC/DI 프레임워크나 AOP 툴이라고 보는 이유는 스프링이 제공하는 핵심 기술에만 주목했기 때문이다. 스프링의 일차적인 존재 목적은 핵심 기술에 담긴 프로그래밍 모델을 일관되게 적용해서 엔터프라이즈 애플리케이션 전 계층과 전 영역..
-
토비의 스프링[1] 오브젝트와 의존관계Spring 2020. 12. 17. 01:20
서론 관심사 분리하여 DAO를 처리하는 방법과 싱글톤 패턴 및 애플리케이션 컨텍스트에 대해 알아보며, 제어의 역전(IoC)에 대해 알아보자. 관심사 분리 초난감 DAO 처리하기 public class UserDao { public void add(User user) throws SQLException, ClassNotFoundException { Class.forName("com.mysql.cj.jdbc.Driver"); Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/sys?serverTimezone=UTC&characterEncoding=UTF-8", "root", "1234"); PreparedStatement ps =..
-
H2 DB 사용하기데이터베이스 2020. 11. 11. 21:36
H2 DB란? H2DB는 자바 기반의 오픈소스 관계형 데이터 베이스 관리 시스템입니다.(RDBMS) H2DB는 서버모드, 인베디드 모드의 인메모리 기능을 지원한다. 무엇보다 간편한 설치(저용량)으로 인하여 사용하기 쉬우며 테스트에 적합하다. DB자체가 매우 라이트하며, 속도도 빠르고 JDBC API 까지 지원하고 있다. 다운하기 h2database.com/html/main.html 다운로드 후 설치 저게 끝이다... 설치 이후 설치경로의 /bin/h2.bat 을 실행시켜주면 된다.(window 기준 linux는 sh 실행) 실행을 할 경우 8082포트에서 가동되며 웹상에서 h2DB를 사용할 수 있게된다.
-
챕터[19] 함수형 프로그래밍 기법카테고리 없음 2020. 10. 22. 00:44
서론 일급 시민 고차원 함수 커링 부분 적용 영속 자료구조 자바 스트림을 일반화하는 게으른 평가와 게으른 리스트 패턴 매칭, 자바에서 패턴 매칭을 흉내 내는 방법 참조 투명성과 캐싱 일급 함수 함수형 프로그래밍에서 함수를 마치 일반값처럼 사용하여 인수를 전달하거나, 결과를 반환하거나 자료구조를 저장할 수 있어 일반값처럼 취급하는 함수를 일급 함수라고한다. 자바 8이 이전 버전과 구분될 수 있는 특징중 하나가 일급 함수를 지원한다는 점이 있다. 추가로 자바 8에서는 메서드 참조( :: ) 및 람다로 직접 함수값을 표현해 메서드를 함수값으로 사용할 수 있다. 고차원 함수 자바 8의 함수는 고차원 함수라 할 수 있으며 아래의 특징을 가진다. 하나 이상의 함수를 인수로 받는다. 결과값으로 함수를 반환한다. 지역..
-
챕터[18] 함수형 관점으로 생각하기모던자바인액션 2020. 10. 22. 00:44
서론 함수형 프로그래밍을 이용하지 않으면 메소드의 호출로 인하여 다른 객체가 변경될 경우 부작용이 발생할 수 있다. 이러한 부작용은 결국 개발자 입장에서 유지보수를 하기 힘들게 만들며, 병렬로 처리하는 과정에서는 언제 어떻게 값이 변경되는지 추적할 수가 없어진다. 공유된 가변 데이터 어떠한 자료구조도 바꾸지 않으며(자신을 포함하는 클래스의 상태 및 다른 객체) return 문을 통해서 자신의 결과를 반환하는 메서드를 순수 메서드 혹은 부작용 없는 메서드라고 불린다. 부작용 없는 메서드의 부작용이란? 자료구조를 고치거나 필드에 값을 할당 예외 발생 파일에 쓰기 및 I/O 동작 선언형 프로그래밍 어떻게로 접근하는 방식을 선언형프로그래밍이라고 부르기도 한다. 선언형 프로그래밍에서는 우리가 원하는 것이 무엇이고..
-
챕터[13] 디폴트 메서드모던자바인액션 2020. 10. 21. 16:04
서론 디폴트 메서드란? 이론적인 챕터 알아두면 언젠가는 쓸 수 있을꺼라 생각한다. 기존 Java 8 이전의 인터페이스에 새로운 메서드가 생길경우 인터페이스를 구현하는 모든 클래스는 인터페이스의 새로운 메서드를 구현하거나 슈퍼클래스의 구현을 상속받아야 한다. 갑작스런(?) 인터페이스에 메서드가 추가될 경우 상속한 모든 클래스를 고치는 문제점을 해결하는 방법으러는 2가지가 존재한다. 정적 메서드(Static) 디폴트 메서드(default) 디폴트 메서드 활용 패턴 디폴트 메서드를 사용하는 방법으로 책에서 설명하는 디폴트 메서드 이용에는 2가지 방법을 알아보자. 선택형 메서드(optional) 디폴트 메서드를 이용하여 빈 메서드를 선언하여 사용을 원한다면 구현해서(재정의) 선언하면 된다. 다중 상속(multi..
-
챕터[4] 스트림모던자바인액션 2020. 10. 21. 15:56
서론 자바 8에서 추가된 스트림은 무엇인지 컬렉션과 무엇이 다른지 등 스트림의 대해서 설명 스트림이란? Java 8 API에 새로 추가된 기능으로 스트림을 이용하면 선언형(데이터를 처리하는 임시 구현 코드 대신 질의로 표현)으로 컬렉션 데이터를 처리할 수 있다. 또한 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다. 특징으로는 선언형(간결 및 가독성 증가), 조립가능(유연성 증가), 병렬화(성능 증가) 가 존재한다. (스트림은 계속해서 챕터에 나오므로 순차적으로 배워가면 된다.) 스트림 == 데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소 요소의 정의 연속된 요소 컬렉션과 동일하게 스트림은 특정 요소 형식으로 이루어진 연속된 값 집합의 인터페이스를 제공한다. 컬렉션은..
-
JNI 사용하여 Native Method를 가동시켜 HelloWorld를 찍기Java 2020. 4. 24. 19:16
소스 코드입니다. github https://github.com/hodolee246/intellij-on-my-own/tree/master/jnisample ubuntu 환경에서의 Java JNI 사용하여 HelloWorld찍기! 목차 1. HelloJni.java 작성 2. HelloJni.java 컴파일 3. HelloJni.h header파일 생성 4. HelloJni.c 파일 생성 5. hellojni.so 파일 생성 6. 환경변수 입력 7. 실행 HelloJni.java public class HelloJni { native void printHello(); static { System.loadLibrary("hellojni"); } } 1. HelloJni.java 작성 먼저 HelloJni...