언어 28

[JAVA] 스레드

스레드란? 컴퓨터 프로그램에서 실행되는 작업의 가장 작은 단위 보통 하나의 프로그램은 여러 개의 스레드를 가질 수 있으며, 이러한 스레드들은 동시에 실행될 수 있음 스레드를 사용하면 프로그램이 여러 작업을 동시에 처리하거나, 여러 작업을 병렬로 실행할 수 있어서 전체적인 성능을 향상시킬 수 있음 스레드는 프로세스 안에서 메모리를 공유하므로, 데이터를 효율적으로 공유하고 통신할 수 있음 스레드를 사용할 때는 동기화와 관련된 문제에 유의해야 하고, 이를 효과적으로 관리하기 위해 동기화 기술을 활용함 그렇다면 자바에서의 스레드 특징은? 멀티스레드 지원: 자바는 멀티스레드 프로그래밍을 지원하며, 여러 스레드를 생성하고 관리할 수 있는 강력한 기능을 제공 쓰레드 생성과 관리: 자바에서는 스레드를 생성하기 위해 T..

언어/Java 2024.04.13

[Java] record

자바에서 record는 JDK 14부터 도입된 새로운 데이터 구조이다. Record는 불변(immutable)한 데이터를 표현하기 위한 간단하고 강력한 방법을 제공한다. Record는 주로 Entity, DTO 등의 데이터를 저장하고 접근하기 위한 목적으로 사용되며, 간결하게 작성할 수 있고 자동으로 생성자, 접근자 메서드, equals(), hashCode(), toString() 등을 제공한다. 이를 통해 코드의 가독성을 높이고 실수를 줄일 수 있다. 코드가 정말 간단하게 줄어듦을 아래와 같이 확인할 수 있다. public class Person { private final String name; private final int age; public Person(String name, int age)..

언어/Java 2024.04.12

[Java] JVM 개요

JVM은, 다른 프로그램을 실행시키는 것이 목적이다. 갖춘 기능으로는 크게 2가지로 말할 수 있다. 자바 프로그램이 어느 기기나 운영체제 상에서도 실행될 수 있도록 하는 것(컴파일 언어 특징) 메모리 관리, 가비지 컬렉션, 스레드 관리 등과 같은 다양한 작업을 처리하여 프로그램의 안정성과 성능을 유지 개발자들이 말하는 JVM은 보통 어떤 기기상에서 실행되고 있는 프로세스, 특히 자바 앱에 대한 리소스를 대표하고 통제하는 서버를 지칭한다. 자바 애플리케이션을 클래스 로더를 통해 읽어들이고, 자바 API와 함께 실행하는 역할. JAVA와 OS 사이에서 중개자 역할을 수행하여 OS에 구애받지 않고 재사용을 가능하게 해준다. JVM의 구성요소 클래스 로더(Class Loader) 실행 엔진(Execution E..

언어/Java 2024.04.11

Java static

https://wikidocs.net/228 07-03 스태틱 스태틱(static)은 클래스에서 공유되는 변수나 메서드를 정의할 때 사용된다. 이번 절에서는 스태틱에 대해서 자세히 알아보자. [TOC] ## static 변수 다음과 … wikidocs.net 스태틱(static)은 클래스에서 공유되는 변수나 메서드를 정의할 때 사용된다. 위 링크를 보고 공부했기 때문에 아래 예시를 보면서 static을 더 자세히 이해했다. - static이 있는 경우 class HouseLee { static String lastname = "이"; } public class Sample { public static void main(String[] args) { HouseLee lee1 = new HouseLee();..

언어/Java 2024.04.07

[Java] 추상 클래스란?

추상 클래스(abstract class)는 객체 지향 프로그래밍에서 일종의 템플릿이며, 직접적으로 인스턴스화할 수 없는 클래스다. 추상 클래스는 하나 이상의 추상 메서드(abstract method)를 포함하며, 추상 메서드는 메서드 시그니처만을 가지고 있고 구현은 없는 메서드다. 추상 클래스는 일반적으로 상속을 통해 자식 클래스에서 구체적인 동작을 정의하도록 유도한다. 자식 클래스는 추상 클래스로부터 상속받은 추상 메서드를 반드시 구현해야 한다. 추상 클래스는 클래스의 계층 구조를 설계하는 데 사용되며, 코드의 재사용성과 유연성을 높이는 데 도움이 된다. 또한, 추상 클래스를 사용하여 공통된 기능을 정의하고, 이를 상속받는 여러 개의 클래스에서 필요에 따라 구현할 수 있다. 자바(Java)에서는 추상 ..

언어/Java 2024.04.07

Java 객체 속성 설정 관련 공부

https://wikidocs.net/214 05-02 클래스 이 책에서는 클래스에 대한 개념적인 설명을 하기보다는 가장 간단한 클래스를 작성하는 것에서부터 시작하여 조금씩 클래스의 규모를 키워 가며 설명할 것이다. [TOC] ## 클래… wikidocs.net 위 단계를 공부하다가 문득 신기한 생각이 들어 정리해보았다. 사이트를 보면 아래와 같은 코드가 있다. class Animal { String name; public void setName(String name) { this.name = name; } } public class Sample { public static void main(String[] args) { Animal cat = new Animal(); System.out.println(..

언어/Java 2024.04.06

[Python] Garbage Collection

Python의 언어가 가지는 의미를 이때까지 얕게 이해했음을 이번 Garbage Collection(이하 GC) 공부를 통해 확실하게 느꼈다. 프레임워크를 잘 사용하고, 파이썬 함수/자료구조/알고리즘을 적절히 잘 사용하여 효율적으로 코드를 짜면 1차적으로 좋은 신입이 되지 않을까 생각했는데.. 새로운 분야에 눈을 뜬 것 같아서 오히려 좋다. GC는 현대적인 언어에는 거의 필수로 존재하며 개발자의 생산성을 향상해준다. C#, JS, Python 등의 언어는 GC를 기본적으로 제공하며, C, C++과 같은 언어에서는 malloc(), free()와 같은 저수준의 메모리 관리 함수를 제공한다. 실제로 현대적인 언어로 오면서 개발자는 메모리를 직접 관리하는 코드를 거의 사용하지 않게 되었다.(어쩐지 아직 경험해..

언어/Python 2024.03.05

[Python] itertools 프로그래밍

파이썬 내장 라이브러리인 itertools는 특정배열에 대하여 순열이나 조합을 이용한 문제를 풀 때 유용하며 자신의 반복자를 만드는 모듈이다. 이 라이브러리에는 상당히 많은 함수들이 내장되어 있기에, 알아두고 가는 것이 많이 도움이 된다. 1. cycle 반복 가능한 객체를 순서대로 무한히 반복하는 iterator 생성 import itertools student = itertools.cycle(['가나다','라마바','사아자']) next(student) # 가나다 # 라마바 # 사아자 # 가나다 # 라마바 ... 2. accumulate 반복 가능한 객체의 누적 합을 계산하여 iterator로 반환하는 함수 보통은 iterator를 반환하기 때문에 아래와 같이 list로 깔끔하게 반환한다. month..

언어/Python 2024.01.16

Join

JOIN이란 두 개 이상의 테ㅔ이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말한다. RDBMS에서는 두 테이블을 엮어야만 형태가 나오는 것들이 많다. 1. Inner Join 두 테이블의 조인을 위한 조건으로는 테이블이 One to Many 관계로 연결되어야 한다. 학생 테이블과 강의 테이블을 생성했다. -- 학생 테이블 CREATE TABLE Students ( StudentID INT PRIMARY KEY, FirstName VARCHAR(255), LastName VARCHAR(255), Age INT ); -- 강의 테이블 CREATE TABLE Courses ( CourseID INT PRIMARY KEY, CourseName VARCHAR(255), Instructor VARCHAR(2..

언어/MYSQL 2023.12.08

변수 사용, 데이터 형식 변환

SQL도 다른 프로그래밍 언어처럼 변수를 선언하고 사용할 수 있다. # 변수 선언 SET @변수이름 = 변수의 값; #변수 값 출력 SELECT @변수이름; >> 변수의 값 데이터 형 변환에는 두 가지가 있다. 1. 명시적인 변환 : 직접 함수를 사용해서 변환 2. 암시적인 변환 : 별도의 지시 없이 자연스럽게 변환 1. 명시적인 변환 데이터 형식을 변환하는 함수로 CAST(), CONVERT()가 있다. -- 숫자를 문자열로 변환 SELECT CAST(123 AS VARCHAR(10)); -- 날짜를 문자열로 변환 SELECT CAST(GETDATE() AS VARCHAR(10)); -- 문자열을 날짜로 변환 SELECT CAST('2023-12-08' AS DATE); -- 숫자를 문자열로 변환 SE..

언어/MYSQL 2023.12.08