분류 전체보기54 [네트워크] OSI 7계층 오늘은 네트워크 파트 중 OSI 7계층에 대해서알아보도록 하겠습니다.🧐 OSI 7계층, 각 계층은 어떤 역할을 하길래 7개나 필요할까요?하나씩 알아보도록 하겠습니다. 먼저, OSI 7계층이 무엇일까요?OSI 7계층OSI 7계층(Open Systems Interconnection Reference Model 7 Layesr)은 국제 표준화 기구인 ISO(International Organization for Standardization)에서 지정한 네트워크 통신 과정을 7단계로 나눈 표준 모델입니다. "이 모델은 어떻게 네트워크를 통해 데이터를 전달하게 될까요?"간략히 나타낸 그림은 다음과 같습니다. 데이터를 송신시에는 높은 계층에서 낮은 계층으로 전달이 되고, 수신부에 도착한 데이터는 가장 낮은 계층.. 2025. 1. 27. save()와 SELECT의 관계 "분명히 save()메서드를 호출했는데, 왜 select 쿼리문이 나가지?""save()랑 select 쿼리문은 어떤 관계가 있는걸까?"예시 코드유저의 팔로우 기능을 구현하는 간단한 예제 코드로 알아보겠습니다.@Overridepublic void save(User user, User targetUser) { UserRelationshipEntity entity = new UserRelationshipEntity(user.getId(), targetUser.getId()); jpaUserRelationRepository.save(entity); //jpaUserRepository.saveAll(List.of(new UserEntity(user), new UserEntity(target.. 2025. 1. 26. JPA와 DB는 어떻게 동기화가 되는걸까? "JPA와 DB는 도대체 어떻게 동기화되는 걸까?"이 질문에 대한 답을 찾기 위해, 이번 글에서는 @Transactional 어노테이션을 통해 JPA의 트랜잭션이 종료되는 시점에 어떤 일이 벌어지는지 하나씩 파헤쳐 보려고 합니다. 트랜잭션 흐름 트랜잭션의 종료 직전에 벌어지는 일을 다루기 전에, 트랜잭션의 전체 흐름을 간단하게 살펴보겠습니다.다음은 @Transactional을 사용하는 간단한 코드 예제입니다. @Service@RequriedArgsConstructorclass PostService { private final PostRepository; @Transactional public void updatePost(Long postId, String content) { .. 2025. 1. 26. 부동 소수점 이 글은 컴퓨터에서 소수를 나타내는 방식인부동 소수점에 대해서 정리한 글입니다. 실수란?실수는 수직선 상에서 나타낼 수 있는 모든 숫자를 말합니다. 실수로는 정수, 유리수, 무리수 등 모든 수를 포함하는 개념입니다. 실수는 언제 사용될까?실수는 연속적인 데이터나 정확한 표현이 필요할 때 사용합니다. 정수만으로는 표현할 수 없는 값, 정밀도가 필요한 계산에 적합합니다.예시로는 수학, 과학, 공학, 컴퓨터 그래픽, 금융과 같은 분야에 사용됩니다. 컴퓨터에서 실수는 어떻게 표현할까?현 시점에서 실수는 이진수 기반의 부동 소수점 방식으로 표현됩니다. 이는 IEEE 754 표준에 따라, 실수를 유효숫자와 지수로 나누어 표현합니다. 부동 소수점 방식은 무엇일까?부동 소수점은 컴퓨터가 실수를 효율적으로 저장하고 계산.. 2025. 1. 11. immutable 객체로 만드는 방법 이번 글은 불변 객체란 무엇이고 어떻게 만들수 있을지에 대한방법을 이야기하는 글입니다. 불변 객체(immutable Object)란?불변 객체는 객체를 생성 후 그 상태를 바꿀 수 없는 객체를 말합니다.객체의 상태를 바꿀수 없다는 말은 어떤 의미를 가질까요? 이는 객체가 생성된 이후 내부 데이터(필드 값)을 변경할 수 없는 특성을 의미합니다. 대표적인 예로 String 클래스를 들 수 있습니다. 이를 코드로 확인해 보겠습니다.public class Main { public static void main(String[] args) { String immutableObject = "immutable"; immutableObject.replace("immutable", "muta.. 2025. 1. 9. JVM 정복하기 📍 JVM이란?JVM(Java Virtual Machine)은 Java 플랫폼의 초석입니다. 이는 하드웨어 및 운영 체제의 독립성, 컴파일된 코드의 작은 크기, 악성 프로그램으로부터 사용자를 보호하는 기능을 담당하는 기술의 구성 요소 입니다.JVM은 추상 컴퓨팅 머신입니다. 실제 컴퓨팅 머신처럼 명령어 세트가 있으며 실행 시 다양한 메모리 영역을 조작합니다.JVM은 java 프로그래밍 언어에 대해 아무것도 알지 못하며, 특정 바이너리 형식인 클래스 파일 형식만 알고 있습니다. 클래스 파일에는 java Virtual Machine 명령어(또는 바이트 코드)와 심볼 테이블 및 기타 보조 정보가 포함되어 있습니다. Q. JVM이 어떻게 악성 프로그램으로부터 사용자를 보호하는가?바이트 코드 검증, 클래스 로더.. 2025. 1. 9. [Effective Java] 생성자 대신 팩터리 메서드를 고려하라 오늘 알아볼 주제는 "생성자 대신 팩터리 메서드를 고려하라"입니다.왜 생성자 대신 팩터리 메서드를 고려해야 할까요? 먼저 정적 팩터리 메서드가 생성자보다 좋은 장점 5가지에 대해 알아보도록 하겠습니다. 장점1. 이름을 가질 수 있습니다.2. 호출될 때마다 인스턴스를 새로 생성하지 않아도 됩니다.3. 반환 타입의 하위 타입 객체를 반환할 수 있는 능력이 있습니다.4. 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있습니다.5. 정적 팩터리 메서드를 작성하는 시점에는 반환할 객체의 클래스가 존재하지 않아도 됩니다. 장점이 있으면 단점도 늘 있는법 단점에 대해서도 알아보도록 하겠습니다.단점1. 상속을 하려면 public이나 protected 생성자가 필요하니 정적 팩터리 메서드만 제공하면 하위 클.. 2024. 12. 11. [Mysql] 트랜잭션과 잠금 이번 글은 트랜잭션과 잠금에 대해서 알아보도록 하겠습니다. 트랜잭션트랜잭션은 하나의 논리적인 작업이 100% 적용(commit)이 되거나 100% 적용이 되지 않아야 함(rollback)을 보장해주는 것입니다.트랜잭션은 작업의 일부만 진행되는 현상(Partial update)를 발생하지 않게 만들어주어 작업의 완정성을 보장해 줍니다. 추가로, MySQL 서버에서 트랜잭션을 지원하는 엔진은 InnoDB 스토리지 엔진입니다. MyISAM과 MEMORY는 트랜잭션을 지원하지 않습니다. MySQL에서 트랜잭션트랜잭션은 논리적인 작업 셋 자체가 100% 적용(COMMIT)되거나 아무것도 적용되지 않음(ROLLBACK)을 보장해 줍니다. InnoDB 테이블과 MyISAM 테이블 차이를 알아보기 위해 아래 코드를 적.. 2024. 12. 11. [운영체제] 스케줄링 스케줄링을 왜할까?한정된 CPU 자원 내에서 멀티 프로세스 환경의 여러 프로세스를 효율적으로 실행시키기 위함입니다.주어진 자원 내에서 최대한 효율적으로 자원을 활용하는 것이 당연한 부분입니다. 스케줄링(Scheduling) : 순서를 짠다, 일정 순서를 정합니다. 5가지 목적공평성 : 모든 프로세스가 공평하게 실행되어야 합니다.효율성 : 자원을 효율적으로 사용해야 합니다.안정성 : 높은 우선순위의 프로세스를 먼저 처리하도록 합니다.반응 시간 보장성 : 일정 시간 내에 응답할 수 있도록 스케줄링 해야 합니다.무한 연기 방지 : 프로세스에 대한 처리가 무한히 연기되지 않도록 스케줄링 해야 합니다. 스케줄링은 어떤 단계를 갖고 있는가? 스케줄링은 장기 스케줄, 중기 스케줄, 단기 스케줄링이 있습니다. 장기 스.. 2024. 11. 26. 이전 1 2 3 4 5 6 다음