반응형

java 53

태태개발일지 - 멀티스레딩(김영한 고급 자바)

메모리 가시성 (Memory Visibility) 스레드를 선언할 때 공유변수를 volatile 으로 선언하는 이유를 알아보았다. 쓰레드와 메인쓰레드는 효율을 위해서 캐시에 변수의 값을 집어넣고 프로세스를 진행한다.즉. Main Thread에서 기존 쓰레드의 공유변수의 상태값을 바꾼다해도 캐시의 값이 바뀌기 때문에 쓰레드는 그 값의 변화를 인지하지 못한다는 것이다. private Boolean flag;를 쓰레드안에 선언해놓고 MainMethod에서flag = "false";를 선언한다고 해도 바로 실행중인 멀티 스레드에서 인지하지 못한다는 뜻이다.이것이 메모리의 가시성이다. 이유위에 언급한 것 처럼, MainThread 와 Multi Trhead모두 변수의 값을 캐시에 불러와서 그 값을 지속적으로 읽기..

JAVA 2025.02.17

태태개발일지 - Exception

예외처리 *throw로 예외를 발생시킬 수 있다. **thorws는 밖으로 예외를 던진다는 뜻* 체크예외특징: 1. 예외가 일어났을 때 throws 로 예외를 넘기거나 처리를 해주어야 한다.         2.{try catch}를 통해서 예외를 처리할 수 있다. 예외를 처리하지않고 계속 밖으로 예외를 던지다보면 runtimeExpetion이 뜬다. 그러면 프로그램이 멈추게된다.중간 로직에 예외를 잡지않아도 컴파일 에러가 뜨게 된다. 장단점:          장점: 꼭 예외를 잡아야만 하기 때문에 개발자가 실수로 넘겨도 확인할 수 있다.         단점: 일일이 싹다 잡아줘야하기 때문에 복잡하다. 예시) extends Exception 언체크 예외 특징 : 1. 예외를 잡아서 처리하지 않아도 thro..

JAVA 2024.10.14

태태개발일지(JAVA 상속)

요즘은 퇴근 길에 인프런 강의중 김영한 선생님의 Java 기본 강의를 듣고있다. 자바에 대한 완벽한 심화 강의는 아니지만, 그래도 JAVA를 앞으로 계속 사용할 거라 돈을 주고 구매한 후 쭉 듣는데 상속 부분에서 머리에 넣어야 할 부분이 생긴 것 같아서 글로 작성한다. https://www.inflearn.com/course/%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%8B%A4%EC%A0%84-%EC%9E%90%EB%B0%94-%EA%B8%B0%EB%B3%B8%ED%8E%B8 학습 페이지 www.inflearn.com 상속의 개념. 상속 : 비슷한 속성을 가진 객체들의 부모를 만들어서 중복된 코드를 제거하고, 재사용성을 늘린다. 기존에 인지하던 상속? 사실 상속에 대해서 공..

JAVA 2024.01.09

태태개발일지(소켓 통신)

소캣통신 서버와 유저가 데이터를 주고받으려면 -> http 요청을 통해서 클라이언트: 데이터줘. 서버: 오케이. 실시간 리소스를 주어야할 때, 클라이언트: 내가 계속 요청을 해줘야해? 너가 그냥 알아서 보내주면 되잖아. 서버: 그럼 내가 server-sent event나 Web socket을 사용해볼게 server - sent event -> http통신을 종료안하고 계속 유지(단방향) WebSocket -> http요청을 보내서 클라이언트: 오늘부터 웹소켓으로 할가? 서버: 좋아 그럼 websocket으로 업그레이드 해놓을게 1. 서버소켓에 클라이언트의 주소와, 포트를 바인딩해준다. 2. 무한 루프를 돌면서 클라이언트의 접속을 대기한다. 3. 클라이언트가 인지 되었을 경우 인풋스트림과 아웃풋 스트림을 ..

CS 2023.10.11

51일차 회고 Spring security

아 정말 spring공부하면서 가장 어려웠던 부분이라고 생각한다.. Ytube도 봐보고 google 서칭도 해보면서, 얼추 개념확립만 한 상태로블로깅을 해보려고 한다.  spring boot를 통해 프로젝트를 구현할 때 회원을 등록하는 코드도 있고, 데이터 베이스를 통해서 회원의 정보를 가져오는 코드를 만드는 경우가 있다. 하지만 보통 프로젝트라면 정해진 기능이 있을 것이고, 관리자와 사용자등 역할이 나눠져 있을 것이다. 그래서 각각 회원마다 인가--> 역할을 정해주는 것과, 회원이 맞는지 인증하는 로그인 기능이 필요함을 느꼈다. 이를 대신 해주는 것이 spring security이다. implementation 'org.springframework.boot:spring-boot-starter-secur..

35일차 회고

오늘은 테스트 케이스에 대해 작성하는 방법에 대해서 정리하고자 한다.기본적으로 테스트는 기능테스트, 통합테스트 , 단위 테스트로 나뉘고기능 테스트애플리케이션 전체통합 테스트데이터베이스와 연결하여 테스트슬라이스 테스트애플리케이션 내 메서드 기능 FIRST원칙을 따르는데 FAST 빠르게           Independent 독립적으로Repeatable 반복적으로Self-validating 셀프 검증이 되도록Timely 시기 적절하게라는 원칙을 따르게 된다.보통 JAVA에서는 Junit을 사용하여 단위 테스트를 하게 되고,  Assertion(어써션)이란?Assertion(어써션)을 검색해 보면 우리말로 ‘단언’, ‘단정’ 등의 뜻을 확인할 수 있는데 그 의미가 선뜻 와닿지 않습니다.테스트 세계에서 Asse..

32~34

오늘은 JPA Spring boot의 핵심기능에 대해서 정리해 보고자 한다.기존 JDBC Spring JDBC등 Spring의 Repository역활을 하는 데이터베이스 기술들이 있지만, 요즘의 대세는 JPA기술이라고 한다.즉 JPA는 ORM기술로 데이터베이스로 연동할때 객체를 중심으로 연동하는 기술이다. 즉 클래스를 테이블로 인식하고 연동하는 기술이다. JPA의 P는 영속성을 뜻하는데 이것은 entitymanger을 통해서 확인할 수 있다. ORM은 객체(Object)와 데이터베이스 테이블의 매핑을 통해 엔티티 클래스 객체 안에 포함된 정보를 테이블에 저장하는 기술입니다.JPA에서는 테이블과 매핑되는 엔티티 객체 정보를 영속성 컨텍스트(Persistence Context)라는 곳에 보관해서 애플리케이션..

30~31

이게 뭐람.. 계속 티스토리 400 Not found가 떠서 다른 Tistory 블로그도 다 그렇게 뜨길래 서버가 터진줄 알고 계속 기다렸더니 혹시나 bing으로 들어가봤더니 되는..? 이게 무슨일이지.. 쨌든 다시 bing으로 시작한다.. 얼마나 밀린거야  오늘 알아 봐볼 범위는 Spring MVC부분에서 Excpetion 즉 예외에 대한 처리 부분이다. 기본적으로 Spring boot에서는 한 클래스 안에서 @ExceptionHandler을 명시하고 받을 Exception을 명시하면 그에 대한 예외를 처리할 수 있다. 예를 들면 @ExceptionHandler public ResponseEntity handleException(Exception e) { final List fiel..

28~30회고

이전 회고에서 DTO의 필요성과 Service와의 연관성 에대해서 정리를 했고, 이제 DTO에 대해서 좀 더 정확하게 정리를 해보려 한다.Spring Controller를 통해서 값이 들어올때 DTO로 값을 매핑할때 유효성을 검증 하는 코드를 넣을 수 있는데, 풀어서 작성하려면 코드의 가독성이 떨어지고, 코드가 길어지게 된다. 그렇기에 DTO를 정의할 때 annotaion을 통해 유효성을 맞춰서 넣을 수 있는데 몇가지만 예시로 보여주자면 @NotBlacnk @Email @pattern 같은 annotion을 통해 검증을 할 수 있고,  정규식을 여기서 설명하지는 않겠다.다음으로는 유효성검사를 통해 annotaion을 만들 수 있는 데 만들 수 있는 것은@Target(ElementType.FIELD)@Re..

반응형