본문 바로가기

전체 글

(71)
[JAVA/멀티스레드] JAVA멀티스레딩 - 스레드생성1부. 스레드의 기능과 디버깅 스레드 생성자바에서는 JDK가 모든 스레드의 관련 속성과 메서드를 스레드 클래스로 압축한다. 그래서 새 스레드를 만들려면 스레드 객체를 생성해야한다. package thread.creation.example; public class Main { public static void main(String[] args) { Thread thread1 = new Thread(new Runnable() { @Override public void run() { //Code that will run in a new thread } }); //lambda java8 Thread thread2 = new Thread(()->{ //스레드명을 알 수 있는 static 메서드 Thread.currentThread().getN..
[JAVA/멀티스레드] JAVA멀티스레딩 - 운영체제기초2 (컨텍스트 스위치) Context Switch (컨텍스트 스위치) - OS가 알아서 스레드 관리를 해주는데, 여러개의 스레드가 번갈아 가면서 CPU를 사용할수 있게 한다. 이때, 하나의 스레드에서 다른 스레드로 전환하는 일을을 ‘컨텍스트 스위치’라고 한다. 컨텍스트 스위치가 발생할때는 리소스를 CPU와 메모리에 복원하는 일을 한다.(사람이 여러가지 일을 한번에 할때 다른일을 하기위해 잠시 머리를 정리하고 준비를 하는것과 비슷) - 너무 많은 프로세스와 스레드가 실행중일때는 컨텍스트 스위치가 너무 자주 일어나기 때문에 성능저하가 있을 수 있다. (context switch cost 발생) - 같은 프로세스 내 두 스레드간의 컨텍스트 스위치를 할때는 서로 리소스를 공유하기 때문에 다른 프로세스의 스레드간 컨텍스트 스위치보다 효..
[JAVA/멀티스레드] JAVA멀티스레딩 - 개요와 운영체제기초 멀티스레드 공부 시작 Udemy 강좌로 시작~~~ 멀티스레드 필요이유1. 응답성 향상 (빠른 반응)특히 유저인터페이스가 있는 프로그램의 경우. 사용자가 어떤 요청을 해서 실행시간이 길어지면 다음요청에 대해서는 이전요청의 실행이 끝날때까지 기다려야함. 동시에 여러작업을 병행하기위해 멀티스레드가 필요. 2. 성능병행성(동시성)으로 여러작업을 동시에 수행하는 것처럼 보인다 싱글코어, 하나의 코어만으로도 같은 시간안에 더 많은일을 할수 있다. 스레드는 무엇???시스템의 기본적인 작동 방식- 컴퓨터를 켜면 ‘운영체제’라는 특별한 프로그램이 디스크에서 메모리로 로드됨 - 운영체제는 애플리케이션 개발자(나)를 대신해 간섭하고 나와 하드웨어 사이의 상호작용을 돕는다 - 모든 애플리케이션(메모장,웹브라우저 등)은 파일형..
[Swagger] OpenAPI3 설정 (yaml 다운로드 custom) 설정하지 않았을때 yaml 다운로드 기본 url http://localhost:8080/v3/api-docs.yaml local 설정 # swagger springdoc: version: v1.0.0 swagger-ui: path: /chat/swagger-ui.html #swagger ui로 접속하는 경로 # config-url: /chat/api-docs/swagger-config #config 경로 -> default : {api-docs.path}설정된 경로 + '/swagger-config' url: /chat/api-docs.yaml #swagger ui에서 연결되는 api document (json or yaml) -> default : {api-docs.path}설정된 경로 (json으로 ..
[Java/Reactor] Mono then() 동작 흐름 테스트 오늘의 주제 Mono then() 메서드가 어떻게 동작하는지 흐름 파악하기. 배경 Java Reactive Programing 으로 채팅서버 구현중. then()의 역할에 대해 의구심이 들었다. A.then(B) 인 경우에 A의 값이 반환된 후 B가 실행된다고 생각하고 있었는데 A가 끝나기전 B가 실행되고 실행이 끝나버리는 경우가 발생. 목표 - sleep 동작하는 메서드 생성하기 - A.then(B) 에서 sleep을 걸고 A,B가 어떻게 실행되는지 확인하기 실행하기 Mono로 리턴하는 메서드를 두개를 then으로 연결해서 실행 @Test void mono_then_test() { first_sequence().then(second_sequence()).subscribe(); } Mono first_s..
[Spring/WebSocket] 초초초기본편 웹소켓 통신해보기 (1) 오늘의 주제 Spring boot WebSocket basic으로 구현해보기 초초초기본으루다가!😎 배경 채팅서버를 구현하기 위해 웹소켓을 공부하던중, 제일 기본적인 웹소켓부터 사용해보기로 함. 목표 간단한 기본적인 기능만 구현해서 사용해보기. - 소켓 연결 - 웹브라우저에서 보낸 메시지 받기 (서버에서) - 서버에서 브라우저로 메시지 보내기 깐딴쓰~ >.
[Spring/WebSocket] RSocket 예제코드 실행해보기(WIP) 오늘의 주제 Spring에 있는 RSocket 배경 채팅서버를 만들기 위해 Websocket에 대해 공부를 하던중.. 전달받은 블로그 포스팅! 전통적인? 방식의 websocket + redis pub/sub과 webflux(rsocket) + redis pub/sub를 비교할수 있을거라 하셨는데.. Websocket도 모르겠는 마당에 RSocket은 무엇인가ㅠㅠㅠㅠㅠㅠㅠㅠㅠ ↓↓↓↓↓ blop post https://dev.to/olibroughton/building-a-scalable-live-stream-chat-service-with-spring-webflux-redis-pubsub-rsocket-and-auth0-22o9 github https://github.com/oli-broughton/li..
[JPA] @Transient 과 엔티티 접근 방식 @Transient 해당 데이터를 테이블의 컬럼과 매핑 시키지 않는다. 영속 대상에서 제외시키기 위해 사용한다. @Tansient 사용방법 ElementType.METHOD : 메서드 위에 애노테이션을 붙여서 사용 ElementType.FIELD : 필드 위에 애노테이션을 붙여서 사용 엔티티 접근방식 프로퍼티 방식 (getter/setter Method, JavaBeans Property 스타일) 필드 방식 (Instance Fileds) JPA의 엔티티의 접근 방식은 @Id 애노테이션의 위치에 의해 결정된다. 엔티티의 모든 필드 또는 상속된 엔티티의 계층에 대해서도 일관성 있게 적용해줘야 한다. [1] @Id 애노테이션 위치가 getter메서드인지, 필드인지 확인 [2] getter메서드위에 있을경우,..