Java에서 문자열은 매우 중요한 데이터 형식으로 사용되며, 문자열을 효율적으로 처리하기 위해 String, StringBuffer, StringBuilder 세 가지 클래스가 제공된다. 개발자는 각 클래스를 사용 목적에 맞게 선택함으로써 프로그램의 성능과 안정성을 극대화할 수 있다. String 클래스는 불변성으로 안정성을 보장하며, 문자열 수정이 거의 없는 경우에 적합하다. StringBuffer 클래스는 멀티스레드 환경에서 안전하게 문자열을 동적으로 수정할 때 사용한다. StringBuilder 클래스는 단일 스레드 환경에서 빠르게 문자열을 처리할 때 사용한다. 전체 코드 public class Main { public static void main(String[] args) { // String ..
웹 브라우저를 실행하면 한 번에 여러 웹 페이지를 로드하고 사용자의 입력을 처리한다. 이러한 복잡한 작업을 가능하게 하는 것이 프로세스와 스레드이다. 프로세스와 스레드를 이해하고 구현함으로써 운영체제의 동작 원리를 이해하고, 효율적인 프로그램을 개발할 수 있다. 또한, 교착상태(프로세스나 스레드가 서로 필요한 자원을 점유하고 있어서 더 이상 진행할 수 없는 상태)와 같은 문제를 해결하기 위한 다양한 동기화 기법을 이해할 수 있다. 프로세스와 스레드 요약 프로세스(Process) 스레드(Thread) 운영체제로부터 자원을 할당받은 작업의 단위 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위 프로세스는 각각 독립된 메모리 공간을 가지며 실행되는 프로그램의 인스턴스이며, 스레드는 프로세스 내에서 실행되는..
💡static 키워드란? Java에서 static 키워드는 클래스에서 공유되는 변수나 메서드를 정의할 때 사용하며, 메모리에 한번 할당되고 나면 프로그램이 종료될 때 해제된다. static 변수를 남발하면 메모리 관리에 문제를 일으킬 수 있으므로 신중하게 사용해야 한다. 과도한 static 멤버의 사용은 프로그램의 성능을 저하시키고, 메모리 누수의 원인이 될 수 있다. static 변수는 메모리에 고정적으로 할당되어 프로그램이 종료될 때 해제되는 변수이며, static 메서드는 객체 생성 없이 호출이 가능한 메서드라고 할 수 있다. 그리고 상태를 가지고 있지 않은 단순히 메서드만 가지고 있는 구조라고 볼 수 있는데, 이러한 이유로 인해 객체지향에 벗어난 개념이 되어 일부 좋지 않은 시선도 있는 편이다. ..
프로그래밍을 할 때 디버깅은 굉장히 중요하다. 자바 프로그래밍을 하다 보면 오류를 해결해야 할 때가 있는데, 이때 디버깅이라는 기술을 사용하면 오류를 쉽게 찾고 해결할 수 있다. 디버그와 디버깅에 대한 개념을 이해하고 VS Code를 사용하여 자바 프로그램을 디버깅하는 방법에 대해 알아보도록 하자. 💡디버깅 관련 개념 디버그와 디버깅 디버깅(debugging)은 프로그램이 예상대로 작동하지 않거나 오류가 발생했을 때 이를 해결하는 과정을 의미한다. 여기서 디버그(debug)는 버그(bug)를 찾아 잡는 것을 의미하며, 버그란 프로그램이 개발자의 의도와 다르게 동작하거나 예상치 못한 오류로 인해 실행이 중단되는 상황을 가리킨다. 디버깅을 이용하여 이러한 오류를 잡아낼 수 있다. 디버거 디버깅 도구 중 하나..
자바에서 프로젝트를 진행하면서 산출물 중, 다른 사람들이 코드를 알아보기 위한 도움말, 개발 문서(Documentation)을 만들어야 한다. JDK의 javadoc.exe 기능을 이용해 개발 문서를 만들 수 있다. Project Main Class package com.test.main; //메인 클래스 /* * 다중 주석 */ /** * 메인 클래스 * 프로젝트 메인 역할을 하는 클래스입니다. * @author Isaac */ public class Main { // 메인 메소드 // 프로그램 시작점 /** * 메인 메소드 * 프로그램의 시작을 담당합니다. * @param args 메인 인자 */ public static void main(String[] args) { // 도움말 > Document..
정규 표현식은 특정한 패턴(규칙)을 가지는 문자열의 집합을 표현하는 식이다. 정규 표현식은 문자열을 검색하는 용도로 사용하며, 대다수 환경/프로그래밍 언어 등에서 지원한다. Ctrl + F 검색 기능에서 Regular expressions를 체크하여 정규 표현식 검색을 할 수 있다. 💡정규 표현식의 구성 요소 x x는 임의의 1개의 문자를 의미한다. 정규 표현식으로 특정 글자 하나를 입력하면 그 패턴과 똑같은 글자를 찾는 작업을 한다. x가 a이면 a를 찾으라는 의미이며, x가 abc이면 abc를 찾으라는 의미이다. 출현 횟수 1. 생략 (아무것도 표현하지 않음) 바로 앞의 대상의 출현 횟수 1 > 생략 X, 중복 X 바로 앞의 대상의 출현 횟수가 1이면 생략이 안 되고, 중복도 안 된다는 뜻이다. ex..
💡OpenAPI OpenAPI는 외부에서 웹 프로토콜(HTTP)로 호출하여 사용할 수 있도록 개방한 API이다. 그래서 OpenAPI는 공개된 프로그래밍 기능이라고 부르며, 모두에게 공개되어 있긴 하지만 무료라는 뜻으로 말하는 Open은 아니다. OpenAPI는 웹 서비스, 라이브러리, 또는 다른 소프트웨어와의 통합에 용이하게 사용할 수 있다. 일반적으로 공공 데이터 포털 등에서 이러한 데이터를 쉽게 받아볼 수 있다. 공공 데이터 포털 1. 공공 데이터 포탈 가입 https://www.data.go.kr/index.do 2. 활용 신청하기 서울특별시_노선정보조회 서비스 https://www.data.go.kr/data/15000193/openapi.do 국토교통부_(TAGO)_지하철정보 https://w..
💡스트림 스트림은 데이터 소스로부터 데이터를 탐색하고 조작하는 도구로, 컬렉션과 배열 등의 데이터를 더 쉽고 효율적으로 다룰 수 있게 도와준다. 스트림을 사용하면 컬렉션 또는 배열의 요소들을 한 번에 하나씩 처리할 수 있다. 스트림을 이용한 표현으로 list.stream().forEach()와 같이 쓸 수 있는데, 여기서 forEach() 같은 메소드를 파이프(Pipe)라고 부른다. [Java] 스트림 (Stream) 💡쓰기 스트림 FileOutputStream class > FileWriter class > BufferedWriter class 우리가 사용하는 대부분의 스트림은 일방통행이며, 내뱉기만 하는 빨대가 따로 있고, 들이마시는 빨대가 따로 있다. 양방향인 isaac-christian.tisto..