목록Language (5)
Youn's IT Memo
Summary 오늘 CS 관련 영상을 여러개 보다가 Mutex와 Semaphore 관련된 영상을 보게 되었습니다. 대학교 시절에 운영체제 수업을 들을때 배웠지만 다시 새롭게 들으면서 잊고 있던 부분을 상기시킬수 있었던 좋은 시간이었습니다. 그래서 제가 쓰는 자바에서는 어떻게 동기화 로직을 어떻게 지원하는지 궁금해졌습니다. 따라서 오늘은 Oracle Docs를 통해 자바에서 어떻게 지원하는지 살펴보고 정리해보겠습니다. Oracle Docs Url https://docs.oracle.com/javase/specs/jls/se8/html/jls-17.html#jls-17.4 Chapter 17. Threads and Locks class A { final int x; A() { x = 1; } int f() ..
Summary Java 21이 LTS가 되면서 향후 어떤 기능이 들어가는지 지속적으로 살펴보던 중 가장 실무에 사용하기에 적합한 부분이 있는거 같아서 글을 남겨봅니다. 동기 부여 모든 Java 개발자가 공통적으로 느끼는 부분으로 String 쓰는 방식이 참으로 불편하다는 느낌이 듭니다. 아래의 예시처럼 작성된 경우가 대다수 였던거 같습니다. +를 통한 문자열 연결 String line = "hello " + number + "번 유저님"; StringBuilder나 Buffer를 이용한 문자열 연결 StringBuilder line = new StringBuilder().append("hello ") .append(number) .append("번 유저님"); StringFormat String line..
Summary 제가 쓰는 Java와 기본적인 것은 비슷한 경우가 많았습니다. 하지만 따로 정리가 필요한 경우 있어 정리가 필요해 보였습니다. 1. Immutability (불변성) 기본적으로 Rust는 불변성을 기반으로 합니다. 값을 변경할때 mut를 붙여 값을 변경하도록 합니다. let mut val:i8 = 3; 2. Shadowing 불변성을 유지하면서 타입과 값을 변경하고 동일한 변수를 사용하도록 합니다. 개인적으로 Mut와 기능적으로 비슷한 것 같지만 값을 계속 갱신시켜 나가면서 진행 let white_spaces = " "; let white_spaces = white_spaces.len(); 3. 스칼라 타입 1. 정수형 정수 값을 지원하는 데이터 타입 특이점 : Unsigned, 정수형 크..
왜 시작했는가? Java 처럼 GC를 이용해서 메모리가 Managed 되는 언어가 아닌 Un-Managed되는 언어를 하나 사용해보고 싶습니다. 하지만 예전처럼 C나 C++이 아닌 새로운 언어를 배워보고 싶은 마음에 고심 끝에 Rust를 선택했습니다. Rust의 경우 어떻게 보면 소유권 개념을 통해 매니징 되고 있다고 생각은 들지만 문법이나 개념 등이 특이하여 매력적이라는 생각이 들어 공부하게 되었습니다 ( 실무 사용은 힘들지만 ... ) Rust 란? 제가 생각했을 때는 메모리 안정성과 동시성, 속도를 중점으로 제작된 언어라는 느낌이 강합니다. 2006년 그레이던 호어가 사이드 프로젝트로 3년간 진행 모질라 재단에서 2010년 7월 7일 발표 2021년 2월에 러스트 재단으로 분리됨 C, C++의 속도..
Summary 최근 문제를 풀면서 Sort에 대한 이슈(?) 에 대해 궁금증이 생겨 테스트를 해보았다. 본인은 Sort 사용시 주로 java.util을 이용을 하는데... 여기서 내가 본 코드는 기본적으로 제공된 Arrays나 Collections 모두 Comparator 사용시 Primitive 타입을 사용할수 없다는 점이다. 그러면 Boxing하는 과정에서 얼마나 리소스를 잡아먹을까 ? Example. Arrays.sort () public static void sort(T[] a, Comparator