개발공부(173)
-
[Spring] DI(Dependency Injection) 스프링 의존성 주입
의존성 주입에는 대표적으로 두 가지 방식이 있습니다. 필드 주입과 생성자 주입입니다. Spring 4.3부터 생성자가 하나 뿐인 클래스는 생성자 주입을 사용할 때 @Autowired를 생략해줄 수 있습니다. 생성자 주입의 장점은 필드에 @Autowired를 쓸 경우 테스트 클래스에서 의존하고 있는 객체를 주입해주지 않아 NPE가 발생하는 케이스를 방지할 수 있습니다. 그리고 필드 주입은 주입된 인스턴스를 불변으로 만들지 못하지만, 생성자 주입은 가능합니다. 이는 필드 주입은 객체를 생성하고 의존성을 Reflection으로 주입 받기 때문입니다. @Service public class DatabaseAccountService implements AccountService { private final Ris..
2022.05.16 -
[Java] Java Compiler가 어떻게 동작하는지?
Compile이란 소스코드가 컴퓨터가 인지할 수 있는 기계 언어로 번역해주는 과정을 말합니다. Javac Java에선 javac 컴파일러가 첫번째로 소스코드를 바이트 코드로 컴파일 시켜줍니다. 그런 다음 JVM이 바이트 코드를 해석하고 실행시킵니다. 그 과정에서 syntax error(자바 문법 오류)도 발견합니다. Javac 작동원리 소스코드가 컴파일 되면 Java 바이트코드를 생성하고 자동적으로 메모리에 .class 파일로 저장됩니다. 이 파일은 기반되는 OS 위에서, JVM에 의해 해석 및 실행됩니다. 참고자료 baeldung - How compilers Work sciencetecheasy - What is Java Compiler
2022.05.16 -
[Git] intellij(인텔리제이) .gitignore 추가하기
.gitignore 파일에 ignore할 파일 경로를 추가합니다. 그리고나서 git commit, push를 해줍니다. 아직 ignore되지 않았을 경우 git cache를 삭제해야합니다. git rm -r --cached . 모든 파일을 staging area(index)로부터 삭제하는 명령어입니다. ignore 하지 않을 파일들은 다시 staging area에 복귀시켜줘야 하기 때문에 다시 add를 실행해줍니다. git add . 정상적으로 git ignore가 적용된 것을 보실 수 있습니다. .gitignore 경로 정상적으로 gitignore이 적용된 파일들 참고자료 How To Clear Git Cache - devconnected
2022.05.16 -
[Java 9] Modularity(모듈화)
Java 9 Modularity 자세한 코드는 baeldung를 참고했습니다. Java 9버전에 새로운 기능 Modularity가 있습니다. 한 프로젝트 안에 독립적인 모듈을 여러 개 유지하면서 필요한 모듈 API를 구동함으로써 메모리를 효율적으로 사용할 수 있습니다. 또한 개별 모듈은 캡슐화을 가지면서도 서로 공유될 수 있는 접근성을 보장해줍니다. 사용할 수 있는 환경은, 프로젝트 내 여러 애플리케이션 서버를 가지는 경우 필요한 모듈만 따로 구동하되 모듈끼리 의존성을 가지는 부분은 연동이 필요할 때 사용하면 좋다고 생각합니다. 간단한 module 설정파일은 아래와 같습니다. 프로젝트 구조: //module-info.java (hello.modules) module hello.modules { expor..
2022.04.26 -
[HTTP강의] TCP/UDP와 URI
본 글은 인프런 김영한님 강의를 정리한 글입니다. 자세한 강의내용은 강의를 통해 들어보시길 추천드립니다. 데이터 통신할 때 IP 주소로 전송 데이터를 보냅니다. 전송 데이터 외 데이터의 순서와 통신 상대 간 신뢰를 주고받을 수 있는 프로토콜이 필요한데, TCP가 그 역할을 합니다. TCP(Transmission Control Protocol) PORT, 전송 데이터 순서에 대한 정보를 담아 전달합니다. *3-way-handshaking 방식으로 통신을 전달받습니다. *1.Syn(client to server) -> 2.Syn + Ack(server to client) -> 3.Ack(client to server) 마지막 단계에선 전송 데이터도 함께 전달하기도 합니다. UDP(User Datagram P..
2022.04.21 -
Arrays.sort(), Comparable, Comparator
Arrays.sort(), Comparable, Comparator Sort Java에서 Collections나 Arrays를 정렬하기 위해 sort() 를 사용합니다. Sorting 알고리즘은 퀵 정렬을 채택해 시간복잡도는 O(nlong(n)) 입니다. 타입이 객체거나 2차원 배열을 사용해서 sorting해줄 땐 Comparator를 파라미터에 추가해줘야 합니다. Comparable compareTo() 메서드만 가지고 있는 인터페이스 입니다. Integer, Long, Date 등의 타입클래스는 Comparable를 상속해 compareTo()가 오버라이딩 되어 있습니다. 만일 내가 클래스를 따로 만들어 Comparable를 상속하고, compareTo()를 오버라이딩 한다면 Sort할 때 오버라이딩..
2022.04.13