Language(13)
-
코루틴(Coroutine)이란?
코루틴은 비동기 프로그래밍을 위한 (1) 경량 스레드 개념으로 일반적인 함수와는 달리 (2)중간에 실행을 멈췄다가 다시 시작할 수 있는 함수를 의미합니다. chat gpt를 통해 '코루틴에 대해 설명해 줘'라는 질문을 작성하면 얻을 수 있는 답입니다. 저는 해당 답변에서 두 가지에 대한 추가 질문을 했습니다. 경량 스레드란?중간에 실행을 멈췄다가 다시 시작할 수 있는 함수의 동작 방식은?먼저 경량 스레드는 (1)운영체제 수준의 스레드가 아니라, 애플리케이션 또는 (2) 런타임 수준에서 실행되는 단위를 의미합니다. 간단한 코드를 통해서 일반적인 멀티 스레드 방식과 경량 스레드 방식(코루틴 사용)의 차이를 보겠습니다. 먼저 일반적인 멀티 스레드 방식에서는 아래 코드를 실행하면 Thread {... }. ..
2025.05.15 -
JSON stringify 란?
jQuery Ajax를 사용하면서 json 형식으로 데이터를 주고받는 일이 빈번하게 발생했습니다. 예를 들어 아래와 같은 json 형태를 주고 받는데 있어서는 어려움이 전혀 없었지만, { id : 'min.c00', name : '정민창',} 문제는, 아래의 상황처럼 하나의 key에 array형태로 데이터를 전송해야 하는 부분이었습니다.{ list : ['....', '....', ...]} 이 문제를 해결하고자 찾은 방법이 JSON stringity입니다.1. JSON stringify 란?먼저 JSON은 일반적으로 데이터를 저장하거나 전송할 때 많이 사용되는 데이터 교환 방식인데 Javascript에서 객체를 만들 때 사용하는 표현식을 의미합니다. JSON stringify는 이런 객체를 ..
2022.02.05 -
자바에서 정확한 실수의 표현과 부동 소수점
자바를 공부하다가 정말 이상한 점을 발견했다. 아래의 코드의 출력 결과는 굉장히 충격적이었다. System.out.println(2.0 - 1.1); 나는 자신있게 '0.9' 를 외쳤지만 내 기대와 다른 결과가 도출 됬다. 0.899999999999999 뭐지... 내가 배웠던 수학이 잘못 되었는지에 대해 회의감이 발생하지만 알고나면 내 수학공부 과정이 틀리지 않았음을 알 수 있었다. 오늘의 주제는 자바에서 2.0 - 1.1 의 계산 결과가 0.9가 나오지 않았던 이유에 대해 정리해보려고 합니다. 컴퓨터의 언어 (기계어) 컴퓨터는 내부적으로 0 과 1의 스트림만 이해 할 수 있습니다. 즉, 내가 컴퓨터 한테 '1+1 계산해줘'라고 해봤자 못알아 먹는다는 겁니다. '1+1 계산해줘' 를 2진수 체계로 변환..
2022.01.11 -
Collection이란?
자바에서는 배열을 사용해서 데이터 타입이 같은 데이터들을 하나의 변수로 묶어 관리합니다. 배열의 장점은 많은 양의 데이터를 한 번에 관리할 수 있고 반복문과 결합해 단순 반복적인 효율적으로 처리할 수 있다는 것입니다. 다만, 배열의 단점 또한 존재합니다. 배열을 선언하면 배열의 크기를 초기에 설정하고 이후에 변경이 불가능하다.데이터를 검색하는 과정에서 시간이 많이 걸린다.같은 기본형 데이터 타입의 자료형만 저장할 수 있다.배열의 단점을 보완하기 위해서 Collection이 등장하였습니다. 이번 포스팅에서는 Collection의 개념과 사용법에 대해 정리하려고 합니다.1. Collection 이란?Collection은 간단히 말해 객체들의 집합이자 자료구조를 의미합니다. 객체들을 한 곳에 저장하고 관리하는..
2022.01.10 -
추상 (Abstract) 클래스 와 인터페이스 (Interface)의 사용 목적과 차이점
이번 글에서는 자바에서 사용하는 추상 클래스 (Abstract Class) 와 인터페이스 (Interface) 의 차이점과 두 가지의 사용 목적에 대해 정리를 해보겠습니다. 먼저 추상 클래스의 개념에 대한 정리를 하겠습니다. 1. 추상 클래스 (Abstract Class) 추상클래스는 실체 클래스의 공통적인 부분을 추출해서 선언한 클래스를 의미하며 실체성이 없고 구체적이지 않기 때문에 객체를 생성할 수 없다. 때문에 실체클래스와의 상속 관계를 통해 사용할 수 있다. 추상화에서 추상화는 클래스간의 공통점을 찾아내서 공통의 부모를 설계하는 작업을 의미합니다. 비유하자면 추상클래스는 미완성 설계도라고 할 수 있다. 자바에서 사용 방법은 다음과 같습니다. [접근 제한자] abstract class [클래스명] ..
2022.01.10 -
Exception (예외) 의 개념과 사용 이유
Exception 은 '예외'라는 뜻이다. Exception에 대해 정리하기 전에 궁금증이 생겼습니다.예외와 오류의 차이는 뭐지? 위의 물음을 해결하고자 예외와 오류의 차이를 먼저 정리하고 가겠습니다. 0. Exception (예외) 와 Error (오류)의 차이 Java Documatation 을 확인해 봐도 Exception과 Error는 다르다고 가지 치기를 해놓은걸 확인할 수 있습니다. 결론부터 말하자면, 예외와 오류의 가장 큰 차이는 발생후 처리 가능성입니다. 그 말인 즉슨, 예외의 경우 프로그램적으로 처리가 가능하기 때문에 일반 개발자가 핸들링이 가능하고, 오류의 경우는 프로그램 자체가 종료될 수 있다는 점과 개발자가 핸들링할 수 없다는 특징이 있습니다. 그럼 좀 더 나아가 예외의 종류에 ..
2022.01.07