전체 글
-
[Study] 자바 2주차 과제JAVA 2020. 11. 21. 19:24
2주차 과제입니다. 프리미티브 타입 종류와 값의 범위 그리고 기본 값 타입 종류 기본 값 값 범위 메모리 사용 크기 Wrapper Class 정수형 byte 0 -128 ~ 127 1byte Byte short 0 -32,768 ~ 32,767 2byte Short int 0 -2,147,483,648 ~ -2,147,483,647 4byte Integer long 0L -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 8byte Long 실수형 float 0.0F (3.4 X 10-38) ~ (3.4 X 1038) 의 근사값 4byte Float double 0.0 (1.7 X 10-308) ~ (1.7 X 10308) 의 근사값 8byte Double ..
-
[Study] 자바 1주차 과제JAVA 2020. 11. 17. 21:55
우연히 백기선님께서 자바 스터디를 진행하고 계신다는 것을 알게 되어 참여해보려 한다. 21일까지 1주차를 마감한다고 하시니까 관심 있은 분들은 아래의 유튜브를 참고하시길 바랍니다. - youtu.be/rPYhY5kFD5k JVM이란 무엇인가 JVM은 Java Virtual Machine의 약자로 'Java를 실행시키기 위한 가상 기계' 라고 생각하면 됩니다. 보통 일반 프로그램은 실행되기 위해 운영체제(OS)가 메모리를 제어하여 실행이 되는 반면, Java 프로그램의 경우 JVM이 OS로부터 메모리를 할당받고 Java Compiler가 변환한 바이트 코드를 실행시킵니다. 그렇기에 Java는 OS에 종속적이지 않지만 JVM에 종속적입니다. 컴파일 하는 방법 이클립스나 인텔리제이와 같은 IDE를 이용해 자동..
-
RDBMS vs NoSQL데이터베이스 2020. 11. 16. 21:31
프로젝트를 구상할 때 데이터베이스는 무엇을 쓸 것인가 하고 고민을 해본 적이 많을 것이다. 나 같은 경우는 프로젝트 경험이 적기 때문에 써본 데이터베이스가 Oracle, MySQL, MariaDB 밖에 없는데 이거는 모두 RDBMS(관계형 데이터베이스 관리 시스템)이다. 후에 MongoDB를 써보고 싶다는 생각이 있었는데 마침 RDBMS와 NoSQL에 대해 찾아볼 일이 생겨 이렇게 포스팅하게 되었다. RDBMS RDBMS는 Relational Database Management System의 약자로 관계형 데이터베이스 관리 시스템이라고 합니다. SQL(Structured Query Language, 구조화 질의어)를 사용해 데이터의 CRUD가 가능합니다. 정해져 있는 스키마(데이터베이스에서 자료의 구조,..
-
[JAVA] 제네릭(Generic) 이란?JAVA 2020. 11. 15. 21:53
자바에서 타입을 지정해주는 제네릭에 대해 알아보도록 하자. 제네릭(Generic) 이란? List나 Map과 같은 Collection을 사용하다보면 List, Map와 같이 "" 사이에 타입을 명시해놓는 형태를 본 적이 많을 것입니다. 이게 제네릭 입니다. 이걸 왜 사용하는 것일까요? 제네릭을 사용하지 않고 ArrayList를 만들어 봅시다. ArrayList에는 기본적으로 모든 클래스의 조상인 Object 타입이 올 수가 있습니다. 여기에 문자열을 집어넣고 이를 get 메소드를 통해 반환하려고 하면 반드시 casting(형변환)을 해주어야 합니다. 수만, 수십만개의 데이터를 꺼내야 한다면 마찬가지로 수만, 수십만번의 casting을 해주어야 하기에 시스템 성능의 큰 저하를 가져오게 됩니다. 그리고 만약..
-
프레임워크와 라이브러리WEB 2020. 11. 9. 21:33
개발을 하면서 프레임워크와 라이브러리를 사용해왔다. 물론 프레임워크는 Spring과 Vue밖에 사용해보지 않았지만 라이브러리는 정말 많이 사용해왔던 것 같다. 이 두 용어의 의미와 차이는 어렴풋이 알고는 있지만 어렴풋이 안다 == 잘 모른다 라고 생각을 하기에 다시 한번 찾아보고 머릿속에 새겨둘 필요가 있다고 생각했다. 프레임워크 (Framework) 프레임워크는 뼈대라는 뜻에서 알 수 있듯이 애플리케이션을 개발할 때 필수적인 코드, 알고리즘 등과 같이 어느 정도의 구조를 제공해주는 것입니다. 그리하여 프레임워크를 사용하는 프로그래머는 이 프레임워크의 뼈대 위에서 코드를 작성하여 애플리케이션을 개발하면 됩니다. 어느정도 뼈대를 제공해 주기 때문에 객체 지향 개발을 하면서 일관성 부족 등의 문제를 해결해 ..
-
인덱스(Index) 란?데이터베이스 2020. 11. 3. 21:37
면접에서 많이 질문을 받는다는 인덱스. 그만큼 현업에서 중요하다는 뜻. 하지만 프로젝트를 진행하면서 한번도 만들어 본 적도 써 본 적도 없다. 프로젝트 경험 횟수가 적었고 당시에는 써 볼 여유가 없었다. 그렇기에 인덱스에 대한 공부 겸 직접 만들어서 성능 테스트를 한번 해보았다. 인덱스 (Index) 위키백과에서는 인덱스를 데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료 구조라고 정의되어 있습니다. 그리고 인덱스는 테이블 내의 1개의 컬럼, 혹은 여러 개의 컬럼을 이용하여 생성될 수 있다고 적혀있습니다. 쉽게 말하자면 테이블에서 특정 데이터를 찾으려고 할 때 쉽게 찾을 수 있도록 만들어 놓은 별도의 테이블 즉, 책으로 예를 들면 맨 뒷장에 있는 찾아보기 영역을 생각하시면 됩니다. 예..
-
교착상태(Deadlock) 란?OS 2020. 10. 29. 18:32
프로세스 / 스레드란?에서 교착상태에 대한 설명이 잠깐 나온다. 그렇다면 교착상태를 해결하기 위한 방법은 무엇일까? 교착상태의 정의를 다시 알아보고 해결 방법을 알아보자. 교착상태(Deadlock) 란? 교착상태는 스레드끼리 한정된 자원을 공유하기 때문에 발생하는 현상으로 두 개 이상의 작업이 하나씩 자원을 소지(hold)하고 있으면서 상대방이 가진 자원을 서로 원하고(need) 있는 상태입니다. 그래서 어떤 작업도 실행되지 못하고 상대방의 작업이 끝나기 만을 기다리는 무한정 대기상태를 의미합니다. 교착상태(Deadlock) 발생 조건 교착 상태는 한 시스템 내에서 다음의 네 가지 조건이 동시에 성립할 때 발생합니다. 따라서, 네 가지 조건 중 하나라도 성립하지 않도록 만든다면 교착 상태를 해결할 수 있..
-
[JAVA] StringTokenizerJAVA 2020. 10. 28. 00:19
백준 알고리즘 문제를 보다보면 5 3 과 같이 공백이 있는 입력을 많이 보게 된다. Scanner를 사용하면 간단하게 nextInt로 받아 변수에다 넣어주면 되지만, BufferedReader를 사용하게 될 경우 한 라인마다 입력을 받기에 한번에 입력을 받아서 나눠줘야 한다. 그래서 난 보통 String 메소드인 split를 사용하여 배열을 만들어 주었는데 다른 사람들 풀이를 보니 StringTokenizer를 사용하는 경우가 많았다. 쓸데없이 배열 만드는 것보다 훨씬 좋아보였기에 StringTokenizer에 대해 알아보기로 하였다. StringTokenizer java.util 패키지 내에 있는 클래스로 String을 특정한 구분 문자(Delimiter)로 여러 개의 토큰(Token) 문자열로 나누어..