Language
-
Java Collection - QueueLanguage/Java 2023. 2. 19. 14:45
자바 컬렉션 중 하나인 Queue(큐)에 대해서 정리를 하기 위한 포스팅이다. 상세한 정보는 java.util 패키지에 Queue 클래스에 나와 있다. 예외 발생 값 반환 Insert(추가) add(e) offer(e) remove(삭제) remove() poll() examine(검사) element() peek() queue에 값을 추가하는 함수는 표와 같이 add(e), offer(e) 2가지이다. 둘다 boolean을 반환하지만 add()의 경우 queue에 더 이상 추가할 수 없는 경우(queue의 용량이 꽉찬 경우) IllegalStateException 에러를 발생시키게 된다. offer의 경우 추가하지 못하는 경우 false를 반환한다. 그렇기 때문에 좀 더 안정적으로 사용할 수 있다. r..
-
JAVA JVM(자바 가상머신)에 관하여Language/Java 2023. 2. 18. 16:39
자바는 JVM(JAVA Virtual Machine) 위에서 동작한다. 이번 시간에는 JVM에 대한 정보를 공부해보도록 한다. JVM은 다음과 같은 특징을 가지고 있다. JAVA와 OS 사이에서 중개자 역할 메모리관리, Gabage Collection의 역할을 수행 ARM 아키텍쳐 같은 하드웨어는 레지스터 기반으로 동작하지만 JVM은 스택기반으로 동작 jvm은 이러한 역할을 하고 있는데 애플리케이션 개발자가 사용할 때 몰라도 된다고 생각할 수 있다. 하지만 다음과 같은 이유로, 최소한의 동작원리는 이해하고 아는 것이 중요하다고 본다. JVM을 알아야 하는 이유 한정된 메모리를 효율적으로 사용하여 최고의 성능을 내기 위하여 메모리를 효율적으로 사용하기 위해서(메모리 구조를 알아야 한다) JVM을 이해하기 ..
-
자바 진법 변환(2진법 10진법 등)Language/Java 2023. 2. 16. 23:05
자바에서 진수(진법) 변환하는 방식은 래퍼클래스의 함수를 통해서 이용하면 쉽게 변환이 가능하다. 특이사항은 다른 10진법에서 다른 진법으로 변환할 때 리턴값은 String이라는 점이다. 먼저 가장 흔한 2진법과 10진법 변환을 살펴보자. int i = 123; // 10진수 > 2진수 String binaryString = Integer.toBinaryString(i); // 출력 1111011 // 2진수 > 10진수 int binaryToDecimal = Integer.parseInt(binaryString, 2); // 출력 123 다른 진법은 많이 쓸 일은 없긴한데 간단하므로 쉽게 알아보도록 하자. // 10진수 > 8진수 String octalString = Integer.toOctalStrin..
-
[Java] 객체 복사에 대한 고찰Language/Java 2022. 4. 15. 00:01
제목은 거창하게 객체 복사에 대한 고찰이라고 적었지만 사실 개발자라면 흔히 들어본 shallow copy, deep copy 부분에 대한 포스팅이다. shallow copy는 얕은 복사라는 뜻으로 보통 주소값(참조값)을 복사한다는 뜻이고, deep copy는 깊는 복사라는 뜻으로 주소값이 아닌 값 자체를 복사한다는 뜻이다. 이러한 부분을 상세히 이해하려면 stack, heap에 대하여 좀 더 공부를 하여야한다. 또 이 부분을 자세히 공부하려면 메모리에 대하여 공부를 하여야 한다. (역시 공부는 끝이 없..) 그래도 이번 포스팅이 이러한 객체를 복사하는 것에 대한 고찰 글이므로 간략히라도 적어본다. 1번 예제) int a = 1; -> 이런식으로 코드를 작성하게 되는 경우 변수 a와 1은 각자 다른 곳에 ..
-
[Javascript] NVM 정리Language/Javascript 2022. 2. 26. 00:03
예전에 프로젝트에서 작업하던 것들을 오랜만에 버전업을 전부 최신으로 업그레이드하였다. 이 때 최신버전을 알기 위해서 package.json을 쉽게 관리하는 포스팅을 했었다. 2022.02.25 - [Framework/React.js] - [React.js] package.json 버전관리 패키지 그 연장선으로 이렇게 오래된 프로젝트나 최신 프로젝트를 동시에 진행하게 되면 여러가지 node버전을 사용하게 된다. 이 때 노드 버전에 따라서 호환되지 않는 패키지들이 있을 수 있다. 그렇기 때문에 다양한 노드 버전을 관리할 수 있어야 한다. 이를 가능케해주는 것이 NVM이다. NVM에 대해서 요약하자면, 1. Node.js의 다양한 버전을 관리하는 역할을 한다. 2. 여러개의 노드 버전을 사용하고 싶을 때 사용..
-
[Typescript] 타입스크립트 Intellij 실행Language/Javascript 2022. 2. 23. 20:10
intellij 툴에서 타입스크립트 실행하는 방법이다. intellij로 프로젝트를 열고 오른쪽 상단에 보면 Add Configuration을 보면 아직 실행 설정이 되지 않은 모습을 알 수 있다. 저 버튼을 클릭하면 다음과 같은 창이 뜬다. 이 창에서 시작 환경설정을 진행할 수 있는 데 왼쪽 상단에 +버튼을 누르고 추가를 원하는 언어를 치면 된다. 타입스크립트를 시작하기로 했으므로 typescript를 치면 된다. 그런데 아마 typescript가 처음에는 나오지 않는다. 이럴때는 당황하지 말고 플러그인을 설치해주어야한다! intellij > Preferences 메뉴를 누르고 창이 뜨면 왼쪽에서 Plugins를 클릭하고 Marketplace에서 typescript를 검색하면 Run Configurat..
-
Python Selenium autoit을 사용한 파일 업로드창 제어Language/Python 2021. 12. 28. 01:00
보통 python selenium(이하 셀레니움)을 통해서 웹브라우저를 동적으로 제어하곤 한다. 이번에는 그 중에서도 파일 업로드 창을 제어하는 부분에 대해서 알아본다. 기본적으로 셀레니움은 다음과 같은 파일 업로드 창을 제어할 수 없다. 아 물론 autoit이라는 모듈을 사용해서 업로드 제어가 가능하다. 하지만 이번 상황에서는 pycharm과 같은 툴에서 동작하는 것이 아닌 exe파일로 변환하였을 때 autoit이 제대로 실행되지 않기 때문에 제어가 안된다고 하는 것이다. 이 포스팅의 목적은 이 부분이 아니라 이 코드가 삽입된 파이썬 파일을 실행파일(exe)파일로 변환하였을 때 생기는 이슈를 해결하고자 한다. 그럼 우선 ide같은 툴에서 실행하도록 하는 방식을 알아보자. import autoit # B..