Software Backend/Java & Spring

    자바 기초 다지기 -7 (네트워크, Java7, Java8)

    네트워크 프로그래밍 네트워킹이란? 장비와 장비가 데이터를 주고 받는 작업을 일컫는다 네트워크의 일반적인 레이어 애플리케이션 레이어(HTTP, ftp, telnet. ...) HTTP, ftp, telnet은 모두 TCP 통신을 한다. 트랜스포트 레이어(TCP, UDP, ...) 네트워크 레이어(IP, ....) 링크 레이어(device driver, ...) TCP 통신이란? "연결 기반 프로토콜", 데이터를 수신하는 상대가 데이터를 받았는지 확실히 보장한다. UDP 통신이란? 데이터를 제대로 받았는지 보장 없이 보내기만 한다. TCP와 UDP로 나뉘어 존재하는 이유는? 반드시 모든 데이터가 전송이 보장될 이유가 없고, 필요 없는 상황도 있다. TCP는 UDP에 비해 느리고 비싸다. "포트"란? 16비트..

    자바 기초 다지기 - 6 (Thread, Syncronized, Serializable, IO, NIO)

    Thread와 Runnable Thread는 하나의 프로세스 안에서 여러 개 생성되고 고객이 필요에 따라 이 Thread를 사용하고 작업이 끝날 경우 반납한다고 생각하면 되겠다. Runnable : Thread의 인터페이스 Thread Class: Runnable의 구현체 Thread의 실행 방법 run() 메소드로 구현이 가능하며 start()로 실행이 가능하다. Thread에 주요 메소드 Thread.sleep(1/1000초) : 쓰레드를 잠재운다. Thread.join() : 쓰레드가 끝날 때까지 기다린다. Thread.interrupt() : 쓰레드를 정지 시키고자 할 때 사용하는 메소드로서, 쓰레드가 일시 정지 상태일 경우 에러를 발생시켜 run() 메소드를 정상 종료 시킨다. Thread De..

    에러, java.io.NotSerializableException , java.io.InvalidClassException

    문제 1. Serializable 을 구현하지 않아 에러가 발생 java.io.NotSerializableException: com.example.test.SerialDTO at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1185) at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349) at com.example.test.ManageObject.saveObject(ManageObject.java:23) at com.example.test.ManageObject.main(ManageObject.java:14) 2. Serializ..

    에러, 서블릿 [app]을(를) 위한 Servlet.init() 호출이 예외를 발생시켰습니다.

    에러, 서블릿 [app]을(를) 위한 Servlet.init() 호출이 예외를 발생시켰습니다.

    문제 Servlet을 다시 공부해 보는 도중 설정하는데 에러가 났다. 아무리 봐도 이상이 없는데? 다른 사람들은 되는데 왜 나는 안되지? 인터넷에 에러를 검색해봐도 없는데?? 하면서 몇 시간을 날리게 되었다. 서블릿 [app]을(를) 위한 Servlet.init() 호출이 예외를 발생시켰습니다. Archetype Created Web Application contextClass org.springframework.web.context.support.AnnotationConfigWebApplicationContext contextConfigLocation me.whiteship.AppConfig org.springframework.web.context.ContextLoaderListener app org...

    자바 기초 다지기 - 5 ( Generic, Collection, Map )

    실수를 방지하도록 도와주는 제네릭 정확히는 타입의 형 변환의 실수를 사전에 방지하도록 만들어졌다 즉, 런타임이 아닌 컴파일 단계에서 잘못되었음을 알 수 있다. @Getter @Setter @Builder @ToString public class TestDTO { private String name; private int age; } public class GenericTest{ public GenericTest(){ List list = List.of(TestDTO.builder().name("이름").age(10).build()); System.out.println(list.toString()); } } Generic 타입의 이름 정하기 규칙 E : 요소 K : 키 N : 숫자 T : 타입 V : 값 ..

    Spring Framework IoC, AOP, PSA

    Spring Framework 입문 Spring의 주요 기능 3가지 : IoC, AOP, PSA IoC (Inversion of Control) : 제어권이 뒤바뀌었다. 내가 사용할 기능을 내가 만들지 않고 다른 클래스에 만들어진 기능을 이용 할 건데(의존성) 선언은 해 놓았는데 누군가 알아서 넣어주겠지 class OwnerController{ private OwnerRepository repo; public OwnerController(OwnerRepository repo){ this.repo = repo; } } 의존성을 풀이하자면 무슨 의미일까? : 기능을 수행하는데 있어서 완벽하게 하기 위해서는 부수적인 기능이 있어야 가능할 경우 부수적인 기능에 의존하고 있음을 알 수 있다. 선언을 private..

    자바 기초 다지기 - 4 (내부 클래스, 어노테이션, 자바)

    Nested Class 클래스 안의 클래스로서 자바 기반의 UI 처리를 할 때 사용자의 입력이나 외부의 이벤트에 대한 처리를 하는 곳에서 많이 사용된다. Static Nested 클래스 한 곳에서만 사용되는 클래스를 논리적으로 묶어서 처리할 필요가 있을 때 public class OuterClass{ static class StaticClass{ } public OuterClass(){ } } // 객체 생성방법 OuterClass.StaticClass staticClass = new OuterClass.StaticClass(); 내부 클래스 캡슐화가 필요할 때, 즉 내부구현을 감추고 싶을 때 로컬 내부 클래스 public class OuterClass{ class InnerClass{ } public ..

    javap 테스트, for문 안에서 String 문자열 합칠 경우 과연 new 객체를 생성할까?

    javap 테스트, for문 안에서 String 문자열 합칠 경우 과연 new 객체를 생성할까?

    개요 for문 안에서 String 문자열을 합칠(+) 경우 new String("")객체로 생성되어 성능상 좋지 않다는 글을 읽고 테스트 했다. 테스트는 ubuntu에서 JDK 11버전, javap를 통해 확인했다. java로 String을 만들고 for문 전, 내부, 후 3가지를 확인해보기 위해 다음과 같이 작성했다. public class Sample{ public String gcTest(String data){ String result = "start"; result += "Test"; System.out.println("for문 시작하기 전"); for( int i = 0 ; i < 10 ; i++ ){ result += "test"; System.out.println("for문 안에"); } ..