저번에 update-alternatives 명령어를 쓰면서, 이런 의문이 들었습니다. javac의 버전? 비슷한 것을 선택할 수 있는 것은 어디서 정보를 얻어올까? 보통 파일을 열고 닫는 연산을 하게 되면, open 이나 close 같은 시스템 콜 함수는 호출하게 되어 있으니, strace로 간단하게 보도록 하겠습니다. strace update-alternatives --config javac를 쳐 보겠습니다. 그러면 execve 같은 시스템 콜 함수들이 잔뜩 보일 텐데요. 제가 관심있는 것은 open 계열의 함수들입니다. 쭉 보니까, /var/lib/dpkg/alternatives/javac 파일을 열어버리는 게 보입니다. 제가 데비안 계열의 우분투를 쓰고 있긴 하니, 이해는 가네요. /var/lib/..
OS 검색 결과
안녕하세요. 오랫만입니다. 제 우분투 서버에 설치되어 있는 java랑 javac 버전은 8인데요. 이를 11로 어떻게 바꾸었는지 보도록 하겠습니다. 먼저, Main.java입니다. Map.of 메서드가 보이는데요. 문서를 보면 9 버전부터 적용되는 메서드라고 되어 있어요. 이 메서드가 리턴하는 것은 immutable map이라고 하는데요. Main.java를 컴파일 해 보면, of 라는 것을 찾을 수 없다는 에러가 나옵니다. 왜 그럴까요? java랑 javac의 버전이 1.8이였기 때문입니다. 저 메서드는 1.9에 추가되었으니 java11로 업데이트를 해 보겠습니다. 저는 우분투를 쓰고 있으니, apt search를 이용해서 openjdk가 들어가는 패키지를 모두 찾도록 하겠습니다. 보니까 제가 찾는 것..
안녕하세요. 이번 시간에는 ConcurrentHashMap을 간단하게 보도록 하겠습니다. 이 글에서는 왜 이 친구를 쓸까? 정도만 보아도 되지 않을까 싶어요. 먼저 Collections의 SynchronizedMap는 이 글에서도 개략적인 구조를 설명해 드린 적이 있습니다. 간단하게 다시 보도록 하겠습니다. 먼저, mutex라는 잠금용으로 쓸 객체를 하나 둡니다. 다음에 실제 map을 하나 두는데요. 여기서 mutex는 언제 쓸까요? map에 접근할 때 동기화 용으로 쓰게 됩니다. get 메서드를 봐도 mutex에 synchronized를 걸어놓았어요. 그리고 put 메서드를 호출할 때에도 mutex에 synchronized를 걸어놓았어요. 그런데, Hash 기반에서의 자료 구조를 잘 생각해 봅시다. 얘..
안녕하세요. 이번 시간에는 리눅스 sort 명령어를 배워보면서 정렬에 대해서 간단하게 이해해 보겠습니다. man 페이지에서 언급하고 있는 로케일에 관한 warning은 이 글에서 다루지 않겠습니다. 몇 번 삽질을 해 봐야 아 로케일이 이런 거라는 것이 와 닿지 않을까 싶어요. 혹시나, 보완할 부분이나 잘못된 부분이 있다면 댓글로 남겨주시면 감사히 받겠습니다. 1.in의 1번째 줄 부터 10번째 줄 까지는 이런 내용들이 있어요. 요구 사항이 하나 들어왔는데요. 공백을 기준으로 필드를 나눌 때, 1번째 필드 오름차순으로 정렬하려고 해요. 단, 필드에는 수가 있으니까, 수가 증가하는 순서대로 정렬이 되어야 합니다. 옵션을 찾아 보니, KEYDEF라는 것이 보여요. F[.C][OPTS][,F[.C][OPTS]]..
이번 시간에는 sed 명령어를 이용해서 :로 구분되어 있는 PATH 변수를 보기 쉽게 출력하는 방법을 익혀 보겠습니다. 그리고 응용 문제도 간단하게 풀어봅시다. 먼저 env는 (환경) 변수들의 목록을 보여줍니다. 대표적으로 PATH와 같은 것들이 있습니다. 아마 자바를 설치하셨다면, 한 번 정도는 써 보셨지 않을까 싶습니다. echo $JAVA_HOME을 쓰실려나요? env | grep PATH를 입력하면, env의 결과에서 PATH를 부분 문자열로 가지는 행을 가져 오는데요. 뭔가 경로가 여러 개가 있는 거 같습니다. /usr/local/sbin:/usr/local/bin:... 이렇게 있는 걸로 보아서는, :을 구분자로 해서, 경로들이 구분 되는 것으로 보였습니다. 이 변수가 긴 경우에는 읽기가 그리..
최근댓글