분류 전체보기 244

java 함수형 인터페이스

자바에서 제공하는 주요 함수형 인터페이스:Predicate: T 타입을 받아 boolean을 반환 (test 메소드)Consumer: T 타입을 받고 반환값 없음 (accept 메소드)Function: T 타입을 받아 R 타입을 반환 (apply 메소드)Supplier: 매개변수 없이 T 타입 반환 (get 메소드) java// Predicate 예제 - 조건 검사Predicate isLong = s -> s.length() > 10;System.out.println(isLong.test("Hello World")); // true// Consumer 예제 - 출력Consumer printer = s -> System.out.println(s);printer.accept("Hello Lambda"); ..

카테고리 없음 2025.04.21

stream vs for문

스트림의 장점코드 가독성 향상: 의도가 명확하게 드러남함수형 프로그래밍 스타일: 불변성과 부작용 없는 함수 지향지연 연산(Lazy Evaluation): 필요할 때만 연산 수행병렬 처리 용이: parallelStream()으로 쉽게 병렬 처리 가능스트림의 단점디버깅 어려움: 체이닝된 메소드 호출에서 중간 상태 확인 어려움오버헤드: 간단한 작업에서는 for문보다 성능이 떨어질 수 있음학습 곡선: 익숙해지는데 시간이 필요함 일반적으로 단순하고 작은 데이터셋에서는 for문이 스트림보다 성능이 좋음!! 스트림은 초기화 비용과 객체 생성 오버헤드가 있기 때문입니다. 하지만 대용량 데이터나 복잡한 연산, 특히 병렬 처리가 필요한 경우에는 스트림이 더 효율적일 수 있습니다. 실제 프로젝트에서는 가독성과 유지보수성을 ..

TIL 2025.04.21

관계형DB vs NoSQL

여기서, 수직 확장, 수평 확장이 뭘까? 수직확장기존 서버의 성능을 높이는 방식. 기존 서버 하나만 계속 강하게 만드는 것🟡 장점: 구현이 간단하고 기존 구조 그대로 사용 가능🔴 단점: 한계가 있음 (무한정 CPU, 메모리 늘릴 수 없음), 비용 비쌈→ 관계형 DB(MySQL 등)는 일반적으로 이 방식을 많이 씀 수평 확장서버 개수를 늘리는 방식예: 서버 1대 → 서버 10대데이터베이스를 여러 노드에 분산해서 처리작은 서버 여러 개로 분산 처리🟢 장점: 무한에 가까운 확장 가능, 장애 분산🔴 단점: 구현이 복잡함 (분산 처리, 일관성 보장 어려움)→ NoSQL(MongoDB, Cassandra, DynamoDB 등)은 이 방식을 쉽게 지원 어떻게? -> 샤딩 을 통해서. 하나의 큰 테이블(데..

TIL 2025.04.21

TPS , Latency, 에러율, CPU 사용률이 높을때

전체 요청 흐름 파악해보자. Client → Load Balancer → Web Server → Application Server → DB → 외부 API 대게 이런 구조인데, 1)TPS 높음 + Latency 높음의미: 요청이 많고, 각 요청 처리에 시간이 오래 걸림필요 조치: 어떤 계층이 지연되는지 추적 필요 2)CPU 사용률 높음Application 서버 병목 가능성GC, 스레드 경쟁, 루프, 무한 재시도DB CPU 높음쿼리 최적화 필요성 검토 3)모니터링 도구:시스템: top, htop, perfJava: jstack, jstat, jvm heap dump통합: APM (Datadog, New Relic, Pinpoint, Skywalking) ⏱️ Latency 높음각 구간별 지연 시간 확..

TIL 2025.04.17

ConcurrenHashMap 원리

concurrentHashMap은 멀티 스레드 환경에서 잘 동작한다고 그냥 알고있다. 근데 왜? HashMap의 멀티스레드 취약점일반 HashMap은 멀티스레드 환경에서 심각한 문제를 일으킬 수 있습니다. Map map = new HashMap();Runnable task = () -> { for(int i=0; i이 코드에서 발생하는 문제:구조적 손상: 내부 버킷 배열 구조가 깨질 수 있음데이터 손실: 한 스레드의 put이 다른 스레드의 put을 덮어쓸 수 있음무한 루프: HashMap의 내부 연결 리스트가 순환 참조되어 무한 루프에 빠질 수 있음ConcurrentModificationException: 한 스레드가 순회 중일 때 다른 스레드가 수정하면 발생ConcurrentHashMap의 해결..

TIL 2025.04.15

AI_ 음성 분할에 대해서

통화녹음을 바탕으로 2개의 음성을 추출하고싶다면 어떻게 할까? 여기에는 크게 2가지 솔루션이 있다. Speech Diarization Speech Separation 두 기술의 핵심 차이점Speech Separation (음성 분리)무엇을 하는 기술인가? 여러 사람의 목소리가 섞인 오디오에서 각 사람의 목소리를 개별 오디오 파일로 분리합니다.결과물: 각 화자별로 분리된 별도의 오디오 파일을 생성합니다.비유하자면: 여러 사람이 동시에 말하는 시끄러운 파티에서 한 사람의 목소리만 따로 듣게 해주는 기술입니다.Speech Diarization (화자 분할)무엇을 하는 기술인가? 오디오에서 "누가 언제 말했는지"를 시간 정보와 함께 알려줍니다.결과물: 시간 정보가 포함된 메타데이터(예: 0:050:15 ..

TIL 2025.04.14

flutter 카카오 앱에서 로그인 이슈 삽질기

error: misconfigured, error_description: invalid android_key_hash or ios_bundle_id or web_site_url 에러가 뜬다면 참고해보자! 반나절 넘게 뻘짓한것같다.. 우선 결론부터 말하면,  직접 폰 연결해서 flutter 로그 까보기!로 해결했다. 우선 가이드에 나온 keytool을 활용해서 내 key로 확인을 해보자. 다른 사람은 잘 되나보다.. 사용 중인 운영체제에 따라 다음 명령어 입력Mac디버그 키 해시  keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android | openssl sh..

TIL 2025.04.11