[Java] Thread 동기화가 필요해.
·
BackEnd/JAVA
쓰레드 동기화쓰레드 동기화란?애플리케이션 내에서 멀티스레드로 동작을 하게 되면 스레드끼리 자원을 공유하며 작업하게 됩니다.이때, 공유 자원의 안정성을 위하여 하나의 쓰레드 작업 시 다른 쓰레드는 접근하지 못하도록 막는 것을 쓰레드 동기화 라고 합니다.동기화를 위해서는 임계영역과 잠금이 사용됩니다.임계영역 (critical section) : 오직 한 스레드만 접근을 보장하는 영역잠금 (Lock) : 임계 영역에 접근 시 락을 획득하고, 작업 완료 후 락을 반납하며 임계영역을 벗어납니다. 동기화를 사용하는 이유간단히 입출금으로 비교했볼 수 있습니다.통장에 10만원이 있다고 가정할 때, A가 통장에서 3만원을 출금하려고 시도하던 중 B가 동일한 통장에 들어와 2만원을 출금을 하고, A의 출금 작업을 완료했습..
[Java] Socket 통신 구현해보기(ServerSocket, Socket)
·
BackEnd/JAVA
SocketTCP/IP 기반 네트워크 통신에서 데이터 송수신의 마지막 접점을 의미합니다.프로토콜과 IP주소, 포트 넘버로 구성되며 클라이언트/서버 구조로 동작합니다. Socket 통신의 흐름서버 흐름소켓 생성IP와 Port번호를 설정하는 바인딩 작업 수행listen으로 클라이언트 요청 대기accept로 클라이언트와 연결데이터 송수신소켓 닫기클라이언트 흐름소켓 생성서버에 설정된 ip와 port로 연결데이터 송수신소켓 닫기 ServerSocket서버측에서 클라이언트의 접속을 대기하며 클라이언트 접속 시 접속을 허용하고 통신하기 위한 클래스입니다.실제 모든 작업은 SocketImpl 인스턴스가 수행하게 되며 생성자 호출 시 인스턴스를 생성합니다.내부 bind와 accept함수를 보면 모든 작업 수행 시 soc..
[멋쟁이사자처럼부트캠프 백엔드 자바 15기] 데이터베이스 JOIN
·
DevOps/데이터베이스
간단한 ERD 분석city-countryCountryCode > country.code를 참조(1:N) 관계하나의 국가에는 여러 도시가 있을 수 있다. (국가: 도시)논리적 참조 관계 (점선) - 제약은 없고 단순 참조관계country - countrylanguageCountryCode > country.code를 참조(1:N) 관계 (국가: 언어)하나의 국가는 여러 언어를 가질 수 있다.실제 FK 존재 (실선) - 제약조건 자체가 데이터베이스에 명시되어 있는 것→ 실선과 점선의 차이는 제약조건(데이터 무결성)의 차이다.→ countrylanguage는 복합키(CountryCode, Language)를 가진다. ERD 점선과 실선의 차이점선 : 비식별관계부모테이블의 PK가 자식테이블의 일반 속성인 경우부..
[JAVA] 함수형 인터페이스라는게 있더라구요..(feat.Lambda)
·
BackEnd/JAVA
오늘 교육 도중 함수형 인터페이스라는 것을 배웠습니다.계속해서 자바를 해왔지만 처음 보는 것이라 매우 신기하고 당황스러웠는데요..여전히 공부할게 많고 더욱 더 노력해야겠구나 싶었습니다..흑..이 생소한 듯 익숙했던 함수형 인터페이스에 대해서 알아보겠습니다.  함수형 인터페이스란?함수형 인터페이스는 인터페이스 내에 추상메서드가 하나인 인터페이스를 의미합니다. 단일 메서드 작성 테스트간단한 예시를 작성해보겠습니다.@FunctionalInterfacepublic interface FcInterface { String printStr(String str);}@FunctionalInterface 어노테이션을 명시해주면 함수형 인터페이스임을 명시하는 것입니다.새로 생성한 FcInterface 내에 입력한 St..
싱글톤 컨테이너(Singleton Container)란 무엇인가
·
BackEnd/Spring
“스프링에서 빈은 싱글톤으로 관리됩니다.”이 말을 항상 들어왔지만 무슨말인지 설명을 못했습니다. 이번 글에서는 이게 무슨말인지 알아가 보겠습니다. 일단 빈과 싱글톤 두가지 단어에 집중해서 알아보겠습니다.빈(Bean) 이란?빈은 스프링 컨테이너의 의해서 관리되는 객체를 의미합니다. 스프링 컨테이너는 객체간의 의존관계를 설정하기 위해 빈을 관리 합니다. 그럼 싱글톤(Singleton)이란 무엇일까요?싱글톤은 디자인 패턴 중 하나입니다. 개발을 하다보면 초당 수백, 수천건 이상의 요청을 받게 됩니다. 한 건의 요청 당 10개의 객체가 사용된다고 하면 수백, 수천건의 요청이 들어오면 수도 없이 많은 객체가 생성이 되게 됩니다. 이 많은 객체들이 메모리에 적재되고 참조되지 않을 때까지 기다렸다가 GC에 걸려 제거..