전체 글 (46) 썸네일형 리스트형 [IntelliJ IDEA] 새 프로젝트를 탭으로 열기 설정 방법 (MacOS) 인텔리제이에서 여러가지 프로젝트를 작업할 때, 나는 하나의 창(Window)에서 여러 탭으로 프로젝트를 띄워두는걸 선호한다.그런데 문제는 회사 맥북부터 내 개인 맥미니, 또 새로 지급받은 맥북에서 매번 설정할 때마다 까먹어서 ..근데 또 검색하면 잘 안나온다;; 그래서 내 블로그에 남겨두려고 작성한다. 바로 설정방법부터 알아보자.설정 방법1. IntelliJ Settings 설정 Settings... > Appearance & Behavior > System Settings > Project 로 이동"Open project in" 옵션을 New Window로 변경New Window → 새 창으로 열기 ✅Current Window → 기존 창을 덮어씀Ask → 매번 물어봄 2. MacOS 시스템 설정Sys.. 기계식 키보드 특정 키 입력 안되는 문제 해결방법(feat. archon AK47) 사건의 발단나의 키보드는 archon AK47이다. 축은 아마도 저소음 피치축인 것 같다.작년 하반기쯤에 알리에서 50000원대로 싸게 샀었다. 그 이후로 약 1년 좀 안되는 기간동안 정말 잘 쓰고 있었는데....그런데 갑자기 어제부터 . 키가 잘 안눌리기 시작했다. 세게 눌러야 눌리고 한 5번 누르면 한번 눌리고 이런 느낌.. 어느정도 참고 써볼까 했지만.... 내가 '.' 이라는 문자를 얼마나 자주 쓰고 있는지만 깨달았고 너---무 불편했다.키보드를 새로 사야 하나 고민도 했지만 조금 낭비인 것 같다는 생각에 검색을 시작했다.물론 키캡 빼고 청소하는 것은 기본적으로 다 했던 상태였다.그럼에도 동작하지 않는....사건의 해결구글링의 시작..결과적으로 이분의 블로그가 나를 살렸다. 해결 방법은, 안쓰는 .. 🤿 Deep dive: Java 애플리케이션에서 스레드 안전을 보장하기 위해 해야할 것은 무엇인가? Intro멀티스레딩은 중요하다. 한 프로세스 내에서 여러 작업을 동시에 실행해서 시스템 자원을 효율적으로 활용할 수 있고, 처리 성능과 응답성을 향상시킬 수 있기 때문이다. 또한, 데이터의 가변성(Mutability)은 중요하다. 프로그램이 동작하면서 상황에 따라 상태가 변화하는게 일반적이기 때문이다. 하지만! 멀티스레딩 환경에서 데이터를 변경할 때를 생각해보자.만약 어떤 변수 a의 값을 Thread-1, Thread-2가 동시에 변경한다면?서로 다른 시점에 읽어서 변경하고 썼는데, 그 값이 덮어쓰여진다면?믿을 수 없는 데이터밖에 남지 않게 되겠지.... 그럼 이제 스레드 안전성(Thread safety)이라는 용어의 의미부터 알아보자.이 말은 "스레드가 안전하다" 라는 뜻이 아니라, "스레드의 동작으로.. 부분 배열 논리합의 K번째 값 구하기 코딩 문제를 풀면서 문제 풀이 실력을 길러보자 ^!^📌 문제 요약정수 n, k가 주어진다. (1 길이 n의 정수 배열 A가 주어진다.모든 (1, r)구간(0 모든 B[l, r] 값들을 모아 오름차순으로 정렬한 뒤, k번째로 작은 값을 출력해보자.📌 풀이 아이디어O(n^2)의 시간복잡도로 가능한 모든 (l, r)구간을 만들어서 OR 값을 구할 수 있다.각 구간마다 OR 계산하고 리스트에 저장한다.정렬 후 k번째 값을 출력한다.Java codeimport java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nex.. Json Transcoder 설계 과정 ARCUS 캐시를 위한 Json Transcoder 클래스를 설계하면서 타입 소거 개념에 대해 추가적으로 알게 된 내용이 있어서 블로그에 남겨두려고 한다.이 클래스는 encode/decode 메서드로 직렬화/역직렬화를 진행하는데, decode의 경우에는 어떤 클래스로 디코딩을 하느냐에 대한 고민 지점이 있었다.처음 설계할 때, decode 메서드를 오버로딩해서 Class나 TypeReference를 명시적으로 전달하는 메서드를 만드려고 했는데, 다음과 같은 생각이 떠올랐다:"애초부터 transcoder 인스턴스를 제네릭 로 만들면, 그 T로 TypeReference 전달이 가능하지 않을까?" 즉, new TypeReference() {}를 decode 메서드 내부에서 생성하여 타입 정보를 전달하면 굳이 .. [Intellij Debugger] 내가 원하는 메서드가 언제 호출되는지 찾아보자 인텔리제이에서 breakpoint를 찍고 여기저기 왔다갔다 하면서 나름 디버깅에 익숙해졌다.그러다가 한번 내가 원하는 메서드가 정확히 어디에서 어떤 과정으로 호출되는지를 찾고 싶었다.테스트중이던 라이브러리는 아무래도 자바다 보니... 추상화의추상화의추상화된 결과물이라서 타고타고 들어가면 정말 깊숙하게 들어가게 된다. 아마 디버깅 툴 자체적으로 어느 깊이 이상은 들어가지 않게 설정하는게 있는걸로는 알고 있는데, 그 이야기는 여기서 하진 않을 것이다. 나의 테스트 과정은 다음과 같은 단계로 이루어진다. 가장 먼저, 목표하는 메서드 바디에 breakpoint를 찍는다.다음으로, 목표하는 메서드를 호출하는 가장 바깥 쪽의 코드 라인에 breakpoint를 찍는다.해당 코드에서부터 한줄씩 실행해보기 위해 Step.. [OS] OS 프로세스, JAVA 스레드의 상태를 비교해보자 🤔 기본적인 OS 프로세스의 상태와 전이 과정운영체제에서 프로세스(Process)는 실행 중인 프로그램을 의미하며, 특정한 상태(state)를 가지면서 실행 흐름을 이어간다.아래는 대표적인 프로세스 상태 전이 과정에 대한 정리 내용이다.1. NEW → READY프로세스가 처음 생성되면 NEW 상태로 시작한다.OS가 이 프로세스를 준비 상태로 올리면, READY 상태가 된다.❓ READY 상태란?CPU에서 실행될 준비는 되었지만, 아직 CPU를 배정받지 못한 상태이다.2. READY → RUNNING스케줄러에 의해 이 프로세스에게 CPU가 할당되면, RUNNING 상태로 전이된다.RUNNING 상태는 프로세스는 실제로 CPU 위에서 명령어를 실행 중인 상태이다.3. RUNNING → READY (타임슬라이스 .. [OS] 멀티프로그래밍, 멀티태스킹, 멀티스레딩, 멀티프로세싱 운영체제를 공부하다보면 초반부터 "멀티OOO" 라는 용어가 굉장히 많이 나온다.각각 용어만 따로 보면 매우 헷갈리기 때문에 한번에 정리를 해보려고 한다.본 포스팅에서 다루는 용어 목록멀티프로그래밍멀티태스킹멀티스레딩멀티프로세싱☁️ 프로세스와 메모리본격적인 내용을 이야기하기 전에, 기본적인 용어부터 정리해보자.운영체제에서 프로세스는 실행 중인 프로그램을 의미하며, 각 프로세스는 별도의 메모리 공간을 할당받는다.이 메모리 공간은 다른 프로세스와 독립적이어서 서로 간섭하지 않도록 설계되었다.프로세스에는 상태라는 개념이 있는데, 자세한 내용은 아래 포스팅에 작성해두었다.https://jinyshin.tistory.com/63 [OS] OS 프로세스, JAVA 스레드의 상태를 비교해보자 🤔기본적인 OS 프로세스의.. 이전 1 2 3 4 ··· 6 다음