전체 글(355)
-
WebSocket (웹 소켓)
이전에 라이어게임 프로젝트를 진행하면서 해보고 싶었던 게임 개발을 어느 정도 체험할 수 있었다. 게임을 본격적으로 만들기 위해서는 애초에 Java는 그리 적합한 언어는 아니었지만 내가 가장 잘 다룰 수 있었던 언어가 Java 였고, 이러한 Java 로도 만들 수 있지 않을까 해서 만들게 되었었다. 게임은 실시간으로 유저끼리 대면하여 이루어지도록 구현해야했기에 동기 방식이 아닌 비동기 방식의 기능 구현은 당연했으며, 이를 Spring / Java 에서 녹이기 위해서는 WebSocket 이라는 기술을 사용해야 했다. 결과적으로 완성은 했지만 정확히 WebSocket에 대한 내용을 완벽히 파악하지 않고 사용했다는 느낌이 있기 때문에 정리하고자 한다. WebSocket 웹 소켓은 클라이언트와 서버 간의 데이터(..
2023.02.07 -
[네트워크] 동기 / 비동기
동기 통신 (Synchronous) 동기란 태스크(작업)을 직렬적으로 수행하는 방식이다. 요청(Request)을 보내고 난 이후에 반드시 응답(Response)을 받아야 다음 동작이 이루어진다. 흔히 말하는 동기화라고 하는 것은 이러한 수행 방식 때문에 작업이 완료될 동안 나머지 작업은 대기한다라고도 말할 수 있다. HTTP가 대표적인 동기방식 통신 프로토콜이다. 반드시 수행이 완료되고 난 이후에 다음 작업이 수행되기 때문에 속도가 느릴 뿐 더러 시스템의 전체적인 효율이 저하된다. 동기 통신을 실제 환경에서 예로 들자면 대표적으로 흔히 말하는 탁구를 예로 들을 수 있을 것이다. 서브(요청)를 해야지 상대방이 요청을 받고 리시브(응답)를 해줄 것이다. 이때 리시브가 정상적으로 반환될 때까지 서브를 날린 사..
2023.02.07 -
[Java] System.out.println 메소드 지양 이유
자바로 개발을 진행하다보면 System.out.println() 메소드를 많이 사용하게 된다. 개발 관련 도서들을 보아도 기본적으로 출력을 System.out.println() 을 통해 진행하기도 하고, 비교적 간단하게 자신이 출력하고자하는 결과값을 간편하게 확인할 수 있기 때문에 많이 사용한다. 또한, 자신이 작성한 코드에 에러가 발생하게 된다면 로그를 확인하기 위한 용도로도 많이 사용하기도 하는데 간단한 로직이나 알고리즘을 확인하기 위한 용도라면 상관없지만 본격적인 프로젝트나 사용자가 존재하는 실무 환경에서의 프로젝트에서는 사용하는 것을 지양하는 것이 좋다고 한다. System.out.println() 사용 지양 이유 (1) 로그 내용 휘발성 System.out.println() 은 로그 내용이 표준..
2023.02.01 -
[Java] 오버로딩 / 오버라이딩
오버로딩 (OverLoading) 자바의 클래스 내에서 이미 존재하고 있는 메소드의 이름과 사용하려고 하는 메소드의 이름이 같더라도 매개변수의 개수 또는 타입 / 이름이 다르면 메소드를 새로이 정의해서 사용할 수 있는 기법을 뜻한다. 오버로딩 조건 앞서 말했던 것처럼 이름은 같아도 되지만, 매개변수의 개수 / 타입 / 이름이 다를 경우에 조건이 성립한다. 단, 리턴 값만을 다르게 할 경우에는 오버로딩을 했다고 볼 수 없다. 접근 제어자도 자유롭게 지정가능하다. (public, default, protected, private...) 이 역시 접근 제어자만을 변경했다고 해서 오버로딩을 했다고 볼 수 없다. 즉, 위의 조건들과 주의점을 보았을 때 오버로딩은 결국에는 매개변수에 대한 변경점이 있을 경우에 조건..
2023.01.31 -
[댓글] 댓글 삭제
댓글 삭제 api를 만들자 CommentController // 댓글 삭제 @DeleteMapping("/comment/delete/{comment_id}") public ResponseEntity commentDelete(HttpServletRequest request,@PathVariable Long comment_id){ log.info("댓글 삭제 - 댓글 삭제 유저 : {}, 삭제될 댓글 id : {}", jwtTokenProvider.getMemberFromAuthentication().getNickname(), comment_id); return commentService.commentDelete(request, comment_id); } 댓글 삭제 api를 만들어준다. 삭제 작업이 이루어질..
2023.01.28 -
[댓글] 댓글 수정
댓글 작성은 구현했으니 댓글 수정 api를 만들어보자. 수정은 게시글과 마찬가지로 작성한 작성자만이 수정이 가능하다. CommnetController // 댓글 수정 @PutMapping("/comment/update/{comment_id}") public ResponseEntity commentUpdate(HttpServletRequest request, @RequestBody CommentRequestDto commentRequestDto, @PathVariable Long comment_id){ log.info("댓글 수정 - 댓글 수정 유저 : {}, 댓글 수정 내용 일부분 : {}", jwtTokenProvider.getMemberFromAuthentication().getNickname(), ..
2023.01.28