58일차 자바 스레드풀 사용 및 Mysql 설치 및 단순한 예제 사용

58일차 자바 스레드풀 사용 및 Mysql 설치 및 단순한 예제 사용

메타의 CEO인 마크 저커버그가 새롭게 내세운 SNS인 Threads가 인스타그램과 페이스북의 모회사인 메타 플랫폼에서 폭발적으로 인기를 얻고 있습니다. 스레드는 단지 하루 반 만에 무려 7천만 명의 가입자를 기록했습니다. 인스타그램 계정이 있는 사용자들은 프로필 화면의 우측 상단에 있는 설정을 누르시면 바로 Threads 아이콘을 확인할 수 있습니다. 클릭하시면 Threads를 다운로드할 수 있는 화면으로 이동하며, 안드로이드 기기의 경우 구글 플레이 스토어로, 아이폰의 경우 APP 스토어로 이동하여 설치할 수 있습니다.

이렇게 단순하게 Threads를 설치하고 가입할 수 있어서 많은 인스타그램 사용자들이 즐겨 찾는 SNS로 자리 잡는 있는 것으로 보입니다. 메타의 스레드는 이미 인기를 끌고 있으며, 더 많은 사용자들이 가입할 것으로 예상됩니다.


예약된 영역의 확장 불가능성
예약된 영역의 확장 불가능성

예약된 영역의 확장 불가능성

flAllocationType에 MEMRESERVE를 지정하여 VirtualAlloc을 수행한 뒤, 그 주소를 다시 시작주소로 VirtualAlloc을 수행해서 예약된 영역을 확장하는 것은 불가능합니다. 만약 예약된 영역을 확장하고 싶다면 반환된 lpAddress를 시작주소로 VirtualFree를 호출한 후 다시 희망하는 확장된 크기규모로 VirtualAlloc을 호출해서 메모리를 예약해야 합니다. 위 그림은 시작주소로부터 8KB를 예약한 상태의 메모리를 나타낸 것입니다.

예약된 8KB을 확장하고 싶으면 VirtualFree를 호출하고 다시 미리 예약해두는 수밖에 없으며, 만약 그리하지 않는다면 남는 56KB는 낭비되는 수밖에 없습니다..

스레드 간의 데이터 공유
스레드 간의 데이터 공유

스레드 간의 데이터 공유

객체는 레퍼런스가 최소 하나라도 있다면야 힙에 머무르는데 모든 레퍼런스가 없으면 가비지 컬렉터에 의해 사라집니다. 멤버 변수는 부모 객체와 묶이는데 부모 객체와 같은 생명 주기를 갖습니다. 정적 변수는 애플리케이션 실행되는 내내 가만히 그 자리에 머뭅니다. Object obj1 new ObjectObject obj2 obj1

위의 코드에서 new Object는 오브젝트이고 obj1과 obj2는 new Object의 주소값을 가지는 레퍼런스입니다.

그러므로 레퍼런스가 메서드 내에서 선언되면 레퍼런스는 스택에 할당됩니다. 그리고 클래스의 멤버일 경우는 부모 객체와 함께 힙 상단에 할당됩니다. 객체는 늘 힙에 할당됩니다.

페이지 속성 변경의 활용 경우 1 breakPoint

__debugbreak(); 는 어셈블리로 int, 3 즉 인터럽트 3번(프로그램 인터럽트)을 발생시키는 것입니다. 만약 int 3 발생 시 프로세스에 디버거가 연결되어있지 않으면 프로세스는 크래시 하게 됩니다. 자신이 비주얼 스튜디오에 중단점을 찍으면 해당지점에 int 3 이 추가됩니다. 하지만 이것은 비주얼 스튜디오 브레이크 포인트 목록에 등록이 되기 때문에, 인터럽트 발생 시 디버거가 가로채고, 해당 부분을 디스어셈블리에서 가리고, 소스코드를 수정합니다.

그랬다가 수행이 재개, 즉 런타임에 다시 브레이크 포인트를 넣는다. 즉 우리들이 관찰이 불가능하다

이같은 경우애 디버거가 코드영역을 바꾸려면, 페이지의 속성을 쓰기가 가능하도록 바꿔야 하기 때문에, 이는 대표적인 페이지 속성변경의 활용 예시입니다.

스레드Threads의 비전

스레드Threads의 전망은 저커버그의 두 차례 스레드에서 볼 수 있듯이 대화를 위한 개방적이고 가까운 공공 공간을 만드는 것 임을 강조하였습니다 한 마디로 스레드와는 어떤 메신저든 호환이 가능하도록 하겠다는 것인데요. 이로써 예를 들면 코리아에서 자주 활용하는 메신저인 카카오톡이든 일본에서 자주 사용되는 라인이든 모두 스레드를 통해 대화를 할 수 있는 개방성을 이야기하는 것 같습니다

그리고 저커버그 자신과 자신의 어린이 사진같이 개인적인 사진을 올리면서 친근함을 강조하는 것으로 보로 보로 보입니다 3) 폭발적인 가입자수의 스레드(Threads)출시한 지 하루 만에 약 3,500만 명의 가입자가 증가하였고 그 이후 현재는 가입자수가 1억 명이 돌파하였다고 하는데요 아직 유럽EU에서는 오픈이 되지 않았음에도 불구하고 이 정도 속도라면 트위터를 금방 따라잡을 것 같습니다.

스레드 스택 동작원리

RegionSize 인자로 들어온 주소에 해당하는 페이지와 근처의 state와 protect가 같은 페이지들의 총 바이트 state commit, reserve, free 중 무엇에 해당하는지 include include define kSTACKSIZE 1024 1024void displayStackInfoUINTPTR pStack, UINTPTR pStackEndMEMORYBASICINFORMATION mbiSIZET size VirtualQueryLPCVOIDpStack, mbi, sizeofmbiif size debugbreakwhile pStack 결국 최상위 예약된 페이지 바로 아래의 가드페이지로의 스택 확장을 시도하면 EXCEPTIONSTACKOVERFLOW가 발생합니다.

자주 묻는 질문

예약된 영역의 확장

flAllocationType에 MEMRESERVE를 지정하여 VirtualAlloc을 수행한 뒤, 그 주소를 다시 시작주소로 VirtualAlloc을 수행해서 예약된 영역을 확장하는 것은 불가능합니다. 궁금한 내용은 본문을 참고하시기 바랍니다.

스레드 간의 데이터 공유

객체는 레퍼런스가 최소 하나라도 있다면야 힙에 머무르는데 모든 레퍼런스가 없으면 가비지 컬렉터에 의해 사라집니다. 궁금한 사항은 본문을 참고하시기 바랍니다.

페이지 속성 변경의 활용 경우 1

debugbreak 는 어셈블리로 int, 3 즉 인터럽트 3번(프로그램 인터럽트)을 발생시키는 것입니다. 좀 더 자세한 사항은 본문을 참고해 주세요.