본문 바로가기

전체 글74

[Java] scripts 사용하여 JDK 여러개 사용하기 - Window 진행하는 프로젝트에 따라 JDK를 유동적으로 전환하여 사용해야 하는 일이 빈번히 발생하여 Window에서 scripts를 사용하여 JDK를 유동적으로 전환하는 방법에 대해 이야기하려 한다. 1. 자바 환경 변수 설정 내 PC 우 클릭 > 속성 > 고급 시스템 설정 > 환경 변수 클릭 시스템 변수 새로 만들기 클릭 변수 이름 > JAVA_HOME 입력, 변수 값 > C:\Program Files (x86)\Eclipse Adoptium\jdk-8.0.332.9-hotspot 입력 > 확인 클릭 시스템 변수 path 더블 클릭 > 새로 만들기 클릭 > C:\Program Files (x86)\Eclipse Adoptium\scripts 입력 > 확인 클릭 > 확인 눌러 환경 변수 창 닫기 2. 변환하여 사용.. 2023. 12. 13.
[Java] Stack vs Deque 공식 문서는 이렇게 말하고 있다. 더욱 완전하고 일관된 LIFO Stack 작업은 Deque 인터페이스 및 해당 구현을 사용하여 구현하는 것이다. 즉, Stack 대신 Deque의 구현체인 ArrayDeque 사용을 제안하고 있다. Java에서 Vector는 특정 상황에서 효율적이지 않기 때문에 Thread Safe 않다고 할 수 있다. 그렇기 때문에 Vector를 상속 받은 Stack은 다음과 같은 단점이 존재한다. 초기 용량 설정을 지원하지 않는다. 모든 작업에 Lock이 사용된다. 단일 스레드 실행 성능이 저하될 수 있다. 단순한 Iterator의 탐색 작업에서도 get() 메서드 실행시 매번 Lock이 발생하게 되므로 오버헤드가 커진다. Stack은 Vector를 상속 받았기 때문에 다중 상속을 .. 2022. 7. 25.
[Java] Mutable과 Immutable에 관하여 1. Mutable 생성된 이후 수정 가능 이미 존재하는 객체에 재할당(값 변경) 값을 변경할 수 있는 메소드 제공 Mutable class일 경우 Getter와 Setter 존재 thread safe하지 않을 수 있음(병렬처리시 값 보장할 수 없게 됨) StringBuffer, StrinfBuilder, java.util.Date 등이 해당 a. Mutable : 대표적인 StringBuffer, StringBuilder 문자열 연산에서 클래스를 한번 생성하고 연산이 필요할 때 크기를 변경하여 문자열을 변경한다. 문자열 연산이 자주 있을 때 사용하는 것이 적절하다. b. StringBuffer 동기화 키워드를 지원하여 멀티스레드 환경에서 안전하다. 즉, 문자열 연산이 많고 멀티스레드 환경일 경우 사용하.. 2022. 7. 24.
[Java] 자료구조 Stack에 관하여 1. Stack Stack이라는 단어는 더미 혹은 쌓다 라는 의미의 단어로, 단어의 뜻 그대로 데이터를 쌓아 올린 형태의 자료구조이다. 가장 마지막에 들어온 자료가 가장 먼저 빠져나가는 선형구조이며, 후입선출(Last In First Out, 나중에 들어간 값이 먼저 나온다) 자료구조를 구현한 자바 클래스이다. List Collection의 Vector를 상속 받은 Stack 메모리 구조의 클래스를 제공한다. 배열 기반 데이터 구조로 인덱스로 요소에 액세스 할 수 있다. 2. 특징 먼저 들어간 데이터가 나중에 빠져나가는 Last In First Out 인터럽트 처리, 수식의 계산, 서브 루틴의 복귀 번지 저장 등에 쓰인다. 그래프의 깊이 우선 탐색(DFS) 알고리즘에 사용된다. 재귀적(Recursion).. 2022. 7. 23.
[Database] Oracle / MySQL의 특징과 차이 1. Oracle 미국의 오라클 회사에서 제작한 세계 점유율 1위 데이터베이스 관리시스템이며 현재 유닉스 체제에서 가장 많이 사용되는 DBMS이다. a. 장점 관리시스템 중앙 집중 방식으로 Administration Monitoring이 가능하고, Multiple Databases 튜닝이 가능하다. 다른 Admin User들과 공유가 가능하다. 다수의 사용자가 동시에 접근 가능하다. 변화 관리 변경 Plan을 작성하고 실제 구현하기 전에 변경사항의 효과를 볼 수 있다. 생산시스템을 방해하지 않는다. 경고 오류가 발생하면 오라클은 이메일이나 설정되어 있는 계정으로 연락을 줄 수 있다. 경고는 예정된 가동 정지 시간 동안 차단될 수 있다. 용량 & 처리 업그레이드 관리자의 계획을 돕기 위해 사용 패턴을 추적.. 2022. 7. 22.
[Database] 데이터베이스 RDBMS / NOSQL 에 관하여 1. Database란 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터들의 모임이다. 데이터에비스는 크게 관계형(RDMBS)와 비관계형(NOSQL)로 간략히 정리할 수 있다. 2. DBMS란 Database Management System의 약자로 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 데이터베이스 관리시스템 소프트웨어를 의미한다. 3. RDB란 RDB란 Relational Database의 약자로 관계형 데이터베이스라 불리고 말 그대로 데이터 모델마다 관계가 있는 데이터베이스라 볼 수 있다. 데이터 모델은 컬럼(column)과 로우(row)로 이루어졌을 때 하나의 테이블(table)이라 할 수 있다. 데이터 항목들은 로우에 저장되고, 항목의 속성은 컬럼이라고 .. 2022. 7. 21.
[Java] 큰 숫자(정수) 다루기(BigInteger 클래스 사용) 1. BigInteger를 사용해야 하는 이유 int 타입의 메모리 크기는 4byte로 표현할 수 있는 -2,147,483,648 ~ 2,147,483,647까지의 범위를 가졌고, long 타입의 메모리 크기는 8byte로 표현할 수 있는 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807까지의 범위를 가졌다. 그 범위를 넘어서게 되면 모두 0으로 출력이 되며, 숫자의 범위가 int 타입의 범위와 long 타입의 범위를 넘는 경우가 잘 없겠지만 항상 최악의 상황을 고려해야 하므로 무한 정수가 들어갈 수 있는 가능성이 존재한다면 BigInteger 클래스를 활용하는 것이 효율적이다. BigInteger 클래스는 문자열 형태로 이루어져 있어 숫자의 범위가 무한하.. 2022. 7. 20.
[Java] 자료구조 Map 에 관하여 1. Map과 HashMap의 차이 둘의 가장 큰 차이는 특정 키에 대한 값을 찾는 과정에서 HashMap은 이름 그대로 HashTable을 이용하여 키-값 관계를 유지하며, Map은 red-black tree 알고리즘을 이용한다. 일반적으로 Java Code에서 HashMap을 선언하여 사용한다고 할 때 아래와 같이 선언하여 사용할 수 있으며, 그 둘은 동일하게 HashMap을 사용할 수 있도록 선언한 코드에 해당한다. HashMap map1 = new HashMap(); Map map2 = new HashMap(); HashMap으로 받을 때와 Map으로 받을 때의 차이를 알아보자. 위 코드에서 두번째 라인 Map은 "HashMap이 구현하는 인터페이스" 개념으로 이해하면 된다. 그렇기 때문에 실질적.. 2022. 7. 19.
[Linux] sftp 패스워드 없이 key 인증으로 접속 H서버 hyun계정에서 👉 P서버 han계정으로 sftp 접속이 필요할 경우 패스워드 입력 없이 접속이 필요할 때 아래와 같은 작업을 진행하면 된다. 간단하게 설명하자면 H서버 hyun계정에서 인증키 생성 후 P서버 han계정에 키를 복사해넣는 방법이다. 1. H서버 hyun계정 인증키 생성 ssh-keygen -t rsa -b 2048 위와 같이 키를 생성하였다면 hyun계정 home 디렉토리에 .ssh 디렉토리가 생성되고 .ssh 디렉토리 안에는 id_rsa, id_rsa.pub 파일이 생성된 것을 확인할 수 있다. 2. id_rsa.pub 파일 내용 복사 cat id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDALhitelZZ0jDdWitxmLnPBOyfzQ.. 2022. 5. 25.