본문 바로가기

분류 전체보기

(71)
[Book] Java의 정석 - 계획대로 읽고 실습하고 싶은 책들도 많지만, 혼자서 코딩을 하다보면 프레임워크와는 별개로 아주 기초적인 자바 코드의 원리도 모르고 밑빠진 독에 물을 붓고 있는 듯한 기분을 자주 느꼈다(특히 최근에 알고리즘 기초적인 문제를 풀 때). - 생각해보면 코딩을 시작한 이후 제대로 기본서를 처음부터 끝까지 본 적이 없다. '이것이 자바다' 책을 구입한 건 3년 전 일이지만, 당시에는 눈으로만 봤었고 이해할 수 없는 내용이 대부분이였다. - 제대로 다시 보고 싶은 파트 : 객체지향 프로그래밍(전체), 예외처리, java.lang 패키지, enum, annotation, 소켓 프로그래밍
[Java] JVM(Java Virtual Machine) - JVM은 'Java Virtual Machine'을 줄인 것으로 직역하면 '자바를 실행하기 위한 가상 기계'라고 할 수 있다. - 영어권에서는 컴퓨터를 머신(machine)이라고도 부르기 때문에 '머신'이라는 용어대신 '컴퓨터'를 사용해서 '자바를 실행하기 위한 가상 컴퓨터'라고 할 수 있다. - Virtual Machine(가상 기계)는 소프트웨어로 구현된 하드웨어를 뜻하는 넓은 의미의 용어이며, 컴퓨터의 성능이 향상됨에 따라 점점 더 많은 하드웨어들이 소프트웨어화되어 컴퓨터 속으로 들어오고 있는데, 마찬가지로 '가상 컴퓨터(virtual computer)'는 실제 컴퓨터(하드웨어)가 아닌 소프트웨어로 구현된 컴퓨터라는 뜻으로 컴퓨터 속의 컴퓨터이다. - 자바로 작성된 애플리케이션은 모두 이 가상 ..
[SpringBoot] Starter로 의존성 관리하기 - maven project에서는 pom.xml 파일을 통해 프로젝트에 필요한 의존성을 관리할 수 있지만, 예를 들어 프로젝트에 스프링과 JPA를 연동해서 데이터베이스 작업을 처리한다고 가정하면 hibernate-entitymanager.jar 파일을 다운로드하여 클래스 패스에 추가해야 한다. 그러기 위해서는 pom.xml 파일에 하이버네이트 관련된 설정을 가장 먼저 추가해야 한다. - 하지만 문제는 프로젝트에 하이버네이트 관련 의존성만 추가했다고 해서 스프링과 JPA연동을 바로 처리할 수 없다는 것이다. 즉, 스프링과 JPA를 연동하기 위해서는 하이버네이트 말고도 spring-orm.jar나 spring-data-jpa.jar 같은 다른 라이버러리들이 추가적으로 필요하다. 그런데 어떤 라이브러리가 더 ..
구입예정 목록
[Linux] 권한 및 그룹 설정 #chgrp [옵션] 그룹명 파일명 - 리눅스 시스템의 모든 파일과 디렉터리에는 접근권한(permission)과 소유권(ownership)이 부여된다. - 명령어 'ls -l'은 파일 속성을 나타낸다. 속성값 의미 - rw-rw-r-- ∙ 파일 허가권(permission) ∙ 파일 유형(-)과 파일접근 권한(-rw-rw-r--)으로 구성 1 물리적 파일 연결 개수 homeshake 파일 소유자명(User Ownership hoemeshake 파일 소유 그룹명(Group OwnerShip) 53 파일 크기(바이트 단위) 2020-01-01 파일이 마지막으로 변경된 시간 TST 파일명 - 속성 필드 중 첫 번째 필드는 파일이나 디렉터리의 허가권(permission), 세 번째와 네 번째 필드는 파일이나 디렉..
[Linux] 리눅스 개요 정리 리눅스의 특징 1) 오픈 소스 운영체제이다. : 소스코드 및 모든 관련 자료가 공개되어 있는 운영체제이다. 2) 멀티유저(다중사용자), 멀티태스킹(다중작업) 운영체제이다. ・ 멀티유저 기능은 여러 사용자가 동시에 동일한 시스템에 접근이 가능한 것을 의미한다. ・ 멀티태스킹은 여러 개의 태스크를 동시에 실행하고, 교대로 컴퓨터의 자원을 사용할 수 있는 기능이다. ・ 가상 터미널 환경으로 하나의 모니터에 여러 개의 가상 화면(가상 콘솔)을 두어 화면마다 다른 작업을 실행할 수 있다. 3) 다중 스레드를 지원하는 네트워크 운영체제이다. ・ 하나의 프로세스 내에서 여러 개의 네트워크 작업을 동시에 처리할 수 있기 때문에 강력한 네트워크 지원이 가능하다. ・ 네트워크 서버로 이용이 가능하며 인터넷과 이더넷에 안정..
[Spring] 스프링 MVC의 기본 구조 - 스프링은 하나의 기능을 위해서만 만들어진 프레임워크가 아니라 '코어'라고 할 수 있는 프레임워크에 여러 서브 프로젝트를 결합해서 다양한 상황에 대처할 수 있도록 개발되었다. - 서브 프로젝트라는 의미를 개발자의 입장에서 가장 쉽게 이해할 수 있는 방법은 '별도의 설정이 존재할 수 있다'라는 개념이다. - Spring Legacy Project로 생성한 예제의 경우에도 servlet-context.xml과 root-context.xml로 설정 파일이 분리된 것을 볼 수 있다. - 스프링 MVC가 서브 프로젝트 이므로 구성 방식이나 설정 역시 조금 다르다. 스프링 MVC 프로젝트의 내부 구조 - 스프링 MVC 프로젝트를 구성해서 사용한다는 의미는 내부적으로 root-context.xml로 사용하는 일반 ..
[Java] 람다식(Lambda Expressions) 람다식이란? - 람다식은 익명 함수(anonymous function)를 생성하기 위한 식으로 객체 지향 언어보다는 함수 지향 언어에 가깝다. - 객체 지향 프로그래밍에 익숙한 개발자들은 혼란스러울 수 있지만, 자바에서 람다식을 수용한 이유는 자바 코드가 매우 간결해지고, Collection의 요소를 필터링하거나 매핑해서 원하는 결과를 쉽게 집계할 수 있기 때문이다. - 람다식의 형태는 매개 변수를 가진 코드 블록이지만, 런타임 시에는 익명 구현 객체를 생성한다. 람다식 -> 매개 변수를 가진 코드 블록 -> 익명 구현 객체 예를 들어 Runnable 인터페이스의 익명 구현 객체를 생성하는 전형적인 코드는 다음과 같다. 위 코드에서 익명 구현 객체를 람다식으로 표현하면 다음과 같다. - 람다식은 "(매개..
[SpringBoot] JPA(Java Persistence) 개념 정리 ORM이란? - ORM이란 용어에도 나와있듯이 객체(Object)와 관계(Relation)을 연결(Mapping)해 주는 개념이다. - 객체와 테이블 시스템(RDBMSs)을 변형 및 연결해주는 작업이라 말 할 수 있다. - ORM을 이용한 개발은 객체와 데이터베이스의 변형에 유연하게 대처할 수 있도록 해준다. - ORM을 객체 지향 프로그래밍 관점에서 생각해보면, 관계형 데이터베이스에 제약을 최대한 받지 않으면서, 객체를 클래스로 표현하는 것과 같이 관계형 데이터베이스를 객체처럼 쉽게 표현 또는 사용하자는 것이다. [ORM] ORM이란? ORM을 이용하기 위해서는 Object modeling과 Relational modeling, 두 Modeling의 차이점을 이해해야... blog.naver.com -..
[SpringBoot] Springboot의 자동설정 스프링 MVC를 이용하여 웹 애플리케이션을 개발한다면 간단한 웹 애플리케이션이라도 기본적으로 여러 가지 설정이 필요하지만 스프링부트에서는 자동설정 기능이 동작하면서 수많은 bean들이 자동으로 등록되고 동작한다. - 메인 클래스 위에 선언된 @SpringBootApplication 어노테이션 하나만으로 복잡한 설정들을 대신할 수 있다. - @SpringBootApplication은 다양한 어노테이션을 포함하고 있는데, 중요한 한 어노테이션은 @SpringBootConfiguration, @ComponentScan, @EnableAutoConfiguration 3개다. @SpringBootConfiguration -환경설정 bean 클래스를 표현하기 위해 사용했던 @Configuration과 동일하다 @C..