핀테크 서비스에도 동시성 문제를 해결해야 했다 데드락 우선 먼저 동시성 테스트를 해보니 락을 사용하지도 않았는데 데드락 에러가 발생했다 그래서 찾아보니 레코드를 수정할때 x-lock을 걸어버리고 다른 레코드를 참조하는 새 레코드를 생성할때 s-lock을 건다고 한다 따라서 x-lock을 획득하기 위해 다른 트랜잭션의 s-lock을 기다리게 되버리므로 데드락에 빠진다 https://0soo.tistory.com/214 MySQL 낙관적 락과 데드락(dead lock) With JPA Hibernate 프로젝트에서 모임 가입 기능을 구현하면서, 동시성 문제와 데드락까지 경험한 내용 그리고 어떻게 해결하였는지 고민과정과 해결방법을 정리하려고 합니다. 프로젝트 버전 SpringBoot 2.7.8 MySQL 8…
[Tistory] 함수 호출 규약 (Calling Convention)
함수 호출 규약 1. 함수 호출 규약 1. 함수 호출 규약이란? 함수 호출 규약은 함수의 호출 및 반환에 대한 약속이다. 함수를 호출할 때 파라미터를 어떤 식으로 전달하는지에 대한 규칙을 정의한다. caller (호출자) : 함수를 호출한 곳 callee (피호출자) : 호출 당하는 함수 함수 호출 규약을 적용하는 것은 일반적으로 컴파일러의 몫이다. 프로그래머가 코드에 명시하지 않는다면, 컴파일러는 CPU 의 아키텍처에 적합한 함수 호출 규약을 적용한다. 2. 함수 호출 규약 종류 컴파일러는 지원하는 호출 규약 중, CPU 아키텍처에 적합한 것을 선택한다. x86 (32bit) 아키텍처는 레지스터의 수가 적으므로, 스택으로 인자를 전달하는 규약을 사용한다. 반대로 x86-64 (64bit) 아키텍처는 레..
[Tistory] 24시간 돌아가는 코인 시세 알림 봇 만들기 #3
이번에는 저번 글에서 작성한 코드를 24시간 돌릴 수 있는 서버를 만들어 봅시다 ! 1. 서버 생성 Oracle Cloud에서 다음과 같은 서비스를 무료로 이용할 수 있습니다. 따라서 따로 컴퓨터를 24시간 켜두지 않아도 코드를 돌릴 수 있습니다. https://www.oracle.com/kr/cloud/free/ 클라우드 서비스 무료 이용 Oracle Cloud Free Tier는 기업에게 무제한으로 사용할 수 있는 상시 무료 클라우드 서비스를 제공합니다. www.oracle.com 위의 링크에서 회원가입을 해주시길 바랍니다. 로그인이 완료 됐으면 다음과 같이 화면이 나타나는데 인스턴트 컴퓨트를 클릭합니다. 인스턴스 생성을 눌러줍니다. 이름을 정하고 전용 키를 다운 받습니다. 저는 이미 하나를 만들어둬..
[Tistory] 지칭개 효능 부작용 먹는방법 재배방법 꽃말
지칭개의 놀라운 효능: 건강과 면역력 향상을 위한 자연의 선물 지칭개는 한국, 중국, 일본 등 동아시아에 널리 자생하는 다년생 초본 식물입니다. 옛날부터 약용 식물로 사용되어 왔으며, 최근에는 건강과 면역력 향상에 도움이 되는 기능성 식품으로 주목받고 있습니다. 지칭개의 주요 성분으로는 플라보노이드, 폴리페놀, 테르페노이드 등이 있습니다. 이러한 성분들은 항산화, 항염증, 항균, 항바이러스 등 다양한 생리활성을 가지고 있으며, 이를 통해 다음과 같은 건강상의 효능을 제공하는 것으로 알려져 있습니다. 1. 지칭개의 성분과 작용 메커니즘 지칭개에는 다양한 생리활성 물질들이 함유되어 있습니다. 그중 대표적인 성분으로는 다음과 같은 것들이 있습니다. * 플라보노이드: 항산화 효과, 항염증 효과, 면역력 강화..
[Tistory] [JAVA] static 멤버(static 필드, static 메서드)
정적 멤버(static member, class member) 정의 클래스에 소속된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메서드 클래스에 소속된 멤버이기 때문에 클래스 멤버라고 함 특정한 인스턴스에 속해 있는 멤버가 아님 즉, 인스턴스와 무관함 종류 static 필드(class 필드) static 메서드 특징 class StaticTest { static int count; // static 필드 static void printHello() { // static 메서드 System.out.println(“hello”); } } 클래스의 인스턴스를 생성하지 않더라도 static 멤버에 접근이 가능 즉, 클래스가 정의만 되어도 static 메서드와 static 필드에 접근이 가능 클래스명과..
[Tistory] [자바스크립트] 바닐라JS로 캐러셀기능 구현하기
🔗 레퍼런스https://www.wavve.com/ Wavve(웨이브)세상 얕은 콘텐츠부터 세상 딥한 콘텐츠까지 JUST DIVE! Wavvewww.wavve.com ✅ 구현 사항1. 한 눈에 데이터 3개 노출하기 (swiper-slide)2. 버튼으로 슬라이드 동작 구현하기 (swipe-button-next / swipe-button-prev) html ..
[Tistory] [HYFE] 종목선정
1. DB하이텍 1) 사업 개요 반도체 제조 (8인치 파운드리 주. 종속기업이 구동IC제품 설계) ”회사는 8인치 순수 파운드리 기업으로 다품종 소량 생산이 가능하며, 소비가전, 스마트폰, TV, 자동차, 산업용 등 다양한 분야에 활용되는 제품을 생산하고 있습니다. “ + 12인치 파운드리도 진출하고자 시도 중 웨이퍼 생산도 함 → 최근 디램, 낸드 등 레거시 반도체 수요 증가한 것 아닌가? 그럼 자연스레 웨이터 투입량도 증가했을텐데 왜 주가 하락세? : 파운드리 경쟁에서 이길수가 없다 : 반면 웨이퍼 제조 업체들은 대규모 설비투자 진행하며 capa 증대 중 2) 시장 환경가. 공급 증가 – 중국이 올해 말까지 32개의 레거시 프로세스 웨이퍼 팹 완공을 앞두고 있음 – 특..
[Tistory] 마이크로소프트 서비스 장애로 인한 글로벌 임팩트
한국시간으로 금일 오전부터 마이크로소프트의 서비스 장애로 인하여 글로벌 서비스 업체들의 광범위한 장애가 발생하고 있습니다.7/18 6:00pm(ET): 한국시간 7/19(금) 오전 8시장애원인: 사이버 보안 제품인 크라우드스트라이커의 ‘팰컨 센서’ 업데이트로 인해 윈도우OS와 충돌을 일으키면서 블루스크린 및 복구 부팅 루프 발생장애현상: 윈도우 블루스크린(BSOD) 지속적으로 나타나는 현상으로 인한 시스템 마비항공사유나이티드 항공델타 항공아메리칸 항공라이언에어프론티어 그룹 홀딩스의 계열사인 프론티어 항공: 7월18일 밤11시 – 7월19일 새벽 1시까지, 현재는 운행 재개뭄바이 공항: 승객 수동 확인 방식델리공항: 정전으로 인한 공항 일부 서비스 영향홍콩 공항: 승객 수동 확인 방식시드니 공항: 출국 전..
[Tistory] 이펙티브 자바 Item 22,23 – 인터페이스는 타입을 정의하는 용도로만 사용하라, 태그 달린 클래스보다는 클래스 계층구조를 활용하라
아이템 22 인터페이스는 타입을 정의하는 용도로만 사용하라 메서드 없이 상수 필드만 가득한 상수 인터페이스를 만들지마라. -> 이는 안티 패턴이다.상수 인터페이스의 구현은 외부 인터페이스가 아닌 내부 구현에 해당하는데, 내부 구현을 외부로 노출할 우려가 있다. 상수를 공개하고 싶다면, 상수 전용 인터페이스를 구현하지 말고 그와 연관된 클래스나 인터페이스에서 공개하도록 하자.아니면 인스턴스화를 막은 클래스에 담아서 공개하자 상수 공개 방법 1. 클래스나 인터페이스 자체에 상수 추가 방법 [첫 번째 – 클래스, 인터페이스 자체 상수 추가]public final class Integer extends Number implements Comparable { … @Native public static ..
[Tistory] 한글 input value를 입력 받은 후 키보드 이벤트가 발생했을 때, 왜 api가 2번 호출될까?
프로젝트를 진행하며 콘솔로 받아온 데이터를 확인하는데 계속 두번 씩 데이터를 받아오는 것을 발견했다. 현재 프로젝트의 규모가 작아 당장은 상관 없으나, 나중에 서버와 연결했을 경우 정확한 원인을 알 수 없으니 메모리 누수가 생길 수도 있는 점을 고려하지 않을 수 없었다. 그래서 오늘은 그에 대한 트러블 슈팅 기록을 하고자 한다. 😇 // SearchInput.tsx const enterKeyHandler: KeyboardEventHandler = (e) => { const locationInfo = filteredTitle(inputSearch); if (e.key === “Enter” && locationInfo.length !== 0) { api(setData, locationInfo); // 유저가..