본문 바로가기

전체 글85

C# async / await async와 await는 C#에서 비동기 프로그래밍을 구현하기 위한 키워드로, async는 메서드가 비동기 작업을 포함할 수 있음을 나타내며 Task나 Task를 반환하도록 한다. 이 메서드 내부에서 await 키워드를 사용하면, 지정된 비동기 작업(Task)이 완료될 때까지 현재 메서드의 실행 흐름을 일시 중단하고 제어권을 반환하게 된다. 이때 흐름은 스레드를 차단하지 않고 대기하며, 작업이 완료되면 중단된 지점부터 실행을 재개한다. 즉, async는 비동기 흐름을 정의하고 await는 그 흐름 중 Task의 완료를 기다리는 구조를 만들어, 효율적인 비동기 처리를 가능하게 한다.namespace Program{ class Program { // async 메서드는 Task를 반환.. 2025. 8. 8.
[.Net Core] EF Core LINQ 확장 메서드 정리 📚 EF Core LINQ 확장 메서드 정리🏷️ 필터링 및 조건Where(predicate): 조건에 맞는 엔티티를 필터링한다.예: context.Users.Where(u => u.IsActive)Any(predicate): 조건을 만족하는 엔티티가 하나라도 존재하는지 확인한다.예: context.Users.Any(u => u.IsBanned)All(predicate): 모든 엔티티가 조건을 만족하는지 확인한다.예: context.Users.All(u => u.IsActive)🏷️ 정렬OrderBy(keySelector): 지정한 키로 오름차순 정렬.예: context.Users.OrderBy(u => u.Name)OrderByDescending(keySelector): 내림차순 정렬.예: cont.. 2025. 6. 1.
[.Net Core] EF Core Context 주요 메서드 정리 📚 EF Core DbContext 자주 사용하는 메서드 정리🏷️ 엔티티 조회 및 추적Set(): 지정한 엔티티 타입(T)에 대한 DbSet을 반환한다.예: context.Set()FindAsync(): 기본 키 값으로 엔티티를 조회한다. (1차 캐시 우선)예: context.Users.FindAsync(1)FirstOrDefaultAsync() / SingleOrDefaultAsync(): 조건에 맞는 첫 번째(또는 단일) 엔티티를 비동기적으로 가져온다.예: context.Users.FirstOrDefaultAsync(u => u.Name == "John")ToListAsync(): IQueryable 결과를 비동기적으로 리스트로 변환한다.예: context.Users.Where(u => u.IsA.. 2025. 6. 1.
[.Net Core] EF Core 엔티티 Configure 에서 자주 사용되는 메서드 정리 📚 EntityTypeBuilder 주요 메서드 정리 (줄글 버전)🏷️ 키 설정HasKey: 엔티티의 기본 키(Primary Key)를 지정하는 메서드.예: builder.HasKey(u => u.Id);🏷️ 속성 설정Property: 특정 속성(컬럼)에 대한 설정을 시작한다. 이후 체이닝으로 다양한 속성 설정을 추가할 수 있다.예: builder.Property(u => u.Name).HasMaxLength(100).IsRequired();HasMaxLength: 문자열 속성의 최대 길이를 지정한다.예: builder.Property(u => u.Name).HasMaxLength(100);IsRequired: 해당 속성을 NOT NULL로 설정한다.예: builder.Property(u => u... 2025. 6. 1.
혼자 해보는 동시성 프로그래밍 연구 동시성 프로그래밍 테스트 케이스 정리:1. Lock-Free Queue vs Mutex Queue// 테스트 조건- 작업 크기: 짧은 작업(1ms) vs 긴 작업(100ms)- 쓰레드 수: 2, 4, 8, 16- 생산자:소비자 비율: 1:1, 1:N, N:12. SpinLock vs Mutex 성능- CPU 코어수 기준 쓰레드 수 변경- 크리티컬 섹션 길이: 10ns, 100ns, 1000ns- 경합 상황 vs 비경합 상황3. Read-Write Lock 활용- 읽기:쓰기 비율: 99:1, 90:10, 50:50- 쓰레드 수: 2~32- 읽기/쓰기 작업 시간 변경4. False Sharing 회피- 캐시라인 정렬 vs 비정렬- 쓰레드 수에 따른 영향- 데이터 접근 패턴 변경테스트 수도코드만 우선 작성//.. 2025. 1. 25.
이미지 구현 아이디어 메모 with NGinX 보호되어 있는 글 입니다. 2025. 1. 16.
캐시 - 캐시의 구조의 분석 캐시 메모리의 동작 원리와 특성캐시 친화성 (Cache Affinity)캐시는 두 가지 중요한 특성을 기반으로 동작합니다:시간적 지역성 (Temporal Locality): 최근에 사용된 데이터가 다시 사용될 가능성이 높습니다.공간적 지역성 (Spatial Locality): 현재 사용 중인 데이터 주변의 데이터가 곧 사용될 가능성이 높습니다.캐시 라인과 메모리 구조캐시는 캐시 라인이라는 단위로 데이터를 저장하며, 이는 메모리 접근 패턴에 큰 영향을 미칩니다:스택 영역의 데이터는 서로 인접해 있어 캐시 히트율이 높습니다.반면, 힙이나 데이터 영역의 값들은 상대적으로 캐시 히트율이 낮을 수 있습니다.캐시 구조와 주소 매핑캐시는 다음과 같은 구조로 데이터를 저장하고 접근합니다:인덱스: 캐시 라인의 주소에서 .. 2025. 1. 15.
자바 - 잘 기억 안나던 컬렉션 기능 정리 Java 컬렉션 정리1. PriorityQueue 사용법// 최소 힙(오름차순)PriorityQueue minHeap = new PriorityQueue();// 최대 힙(내림차순)PriorityQueue maxHeap = new PriorityQueue((a, b) -> b - a);// 주요 메서드pq.offer(값); // 요소 추가pq.poll(); // 최우선 요소 제거 및 반환pq.peek(); // 최우선 요소 확인2. HashMap 값으로 정렬하기Map map = new HashMap();// 값(Integer) 기준 내림차순 정렬하여 키(String) 리스트 얻기List sortedList = map.entrySet() .stream() .sorted(Map.Ent.. 2025. 1. 15.