[Java] 정적 멤버와 static
·
Java
1️⃣ 정적 멤버 선언정적 멤버(static)는 클래스에 속하는 멤버로 인스턴스가 아닌 클래스 자체에 소속된다.정적 변수 : static으로 선언된 변수는 클래스의 모든 인스턴스가 공유하며, 프로그램 종료 시까지 유지된다.정적 메서드 : static으로 선언된 메서드는 클래스 이름으로 호출하며, 객체 생성 없이 사용할 수 있다.public class 클래스 { // 정적 필드 static 타입 필드 [= 초기값]; // 정적 메소드 static 리턴 타입 메소드(매개변수 선언, ...) [...]} 🔍 정적 변수 사용 판단 기준 : 객체마다 개별적으로 관리해야 하는 데이터라면 인스턴스 필드로 선언모든 객체가 공유해야 하는 데이터라면 정적 필드로 선언 🔍 정적 메서드 사용 판단 ..
[TIL] SOLID 원칙 정리
·
TIL
SOLID 원칙은 객체지향 설계에서 코드의 유연성, 확장성, 유지보수성을 높이기 위한 5가지 핵심 원칙이다.이 원칙들을 이해하고 실천하면 코드의 품질과 협업 효율을 높일 수 있다. 1️⃣ SRP (Single Responsibiliry Principle, 단일 책임 원칙)클래스는 하나의 책임만 가져야 한다.한 가지 역할만 수행하는 클래스가 이상적한 클래스가 너무 많은 책임을 가지면 코드 변경 시 의도치 않은 영향을 줄 위험이 크다. 🚧 잘못된 설계public class UserManager { public void createUser() { // 사용자 생성 } public void validateUser() { // 사용자 검증 } p..
[TIL] 객체지향 프로그래밍(OOP) 이란? (캡슐화, 상속, 다형성, 추상화)
·
TIL
📖 객체지향 프로그래밍 (OOP) 이란?객체지향 프로그래밍(OOP)은 코드의 유지보수성과 재사용성을 높이기 위해 데이터를 객체로 묶고, 이 객체들 간의 상호작용으로 프로그램을 설계하는 기법이다.OOP 는 대규모 소프트웨어 개발과 유지보수에 특히 유용하며, 복잡한 문제를 단순하게 구조화할 수 있게 도와준다. ❓ OOP 가 필요한 이유1. 코드 분류복잡한 코드를 체계적으로 정리하고 관리하기 쉽게 만든다.모듈화된 코드로 개발 속도를 향상2. 코드 교체 용이성시스템 변경 및 확장이 쉽다.특정 기능이나 모듈을 독립적으로 교체 가능3. 유지보수성변경 및 수정 시 다른 코드에 영향을 덜 미친다.스파게티 코드 방지 🌟 OOP 의 핵심 개념 (4대 특징) 1️⃣ 캡슐화 (Encapsulation)캡슐화란 데이터를 외..
[컴퓨터 구조] CISC와 RISC
·
CS
1. 명령어 집합, 명령어 집합 구조 (ISA: Instruction Set Architecture)CPU가 이해할 수 있는 명령어들의 모음CPU마다 다를 수 있고 ISA가 달라지면 같은 소스 코드로 만들어진 프로그램도 서로 다른 어셈블리어를 사용이로 인해 ISA가 다르면 명령어 해석 방식, 레지스터 종류, 메모리 관리 방법 등이 달라진다.ISA는 CPU의 언어이자 하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속 2. CISC (Complex Instruction Set Computer)복잡하고 다양한 명령어 집합을 사용하는 CPU 설계 방식대표적인 예 : x86, x86-64 아키텍처특징 :가변 길이 명령어 : 명령어가 길고 복잡하여 실행 시간이 일정하지 않다.적은 수의 명령어로 프로그램 실행 가능..
[컴퓨터 구조] 명령어 병렬 처리 기법 (명령어 파이프라이닝, 슈퍼스칼라, 비순차적 명령어 처리 기법)
·
CS
빠른 CPU를 만들기 위해서는 높은 클럭 속도, 멀티코어 (Multicore), 멀티스레드 (Multithreading) 외에도 CPU가 효율적으로 작업을 수행하도록 하는 명령어 병렬 처리 기법이 중요하다. 이를 통해 CPU는 대기 시간을 줄이고 효율적인 연산을 할 수 있다. 1. 명령어 파이프라이닝 (Instruction Pipelining)CPU의 명령어 처리 과정에서 각 단계를 분리하여 명령어 파이프라인 (Instruction Pipeline) 에 넣어 동시에 처리할 수 있도록 하는 기법일반적인 명령어 처리 과정 :명령어 인출 (Instruction Fetch)명령어 해석 (Instruction Decode)명령어 실행 (Instruction Execute)결과 저장 (Write Back) t0t1..
[컴퓨터 구조] 빠른 CPU를 위한 설계 기법 (클럭, 코어, 멀티코어, 스레드, 멀티스레드)
·
CS
1. 클럭 (Clock)클럭 (Clock) : CPU 동작을 동기화하는 신호로, CPU 성능에 큰 영향을 미친다.클럭 속도 : CPU의 성능을 나타내는 주요 지표로, 단위는 헤르츠(Hz)1초에 명령어를 몇 번 실행할 수 있는지 나타낸다.클럭 속도가 높을수록 일반적으로 CPU의 처리 속도가 빠르다.동적 클럭 조절 : CPU는 상황에 따라 클럭 속도를 조정성능이 필요한 경우 클럭 속도를 높이고, 필요하지 않을 때는 낮춰 효율성을 높임오버클럭킹 (overclocking) : 최대 클럭 속도를 높여 성능을 향상시키는 기법이지만 발열과 안정성 문제가 발생할 수 있다.한계 : 클럭 속도를 올리는 것만으로는 CPU 성능 향상에 한계가 있으며, 발열 문제가 있을 수 있다. 2. 코어와 멀티코어코어 (Core) : 명령..
[컴퓨터 구조] CPU의 작동 원리
·
CS
1. ALU와 제어장치 1.1 ALUALU의 역할 : 산술 연산(덧셈, 뺄셈 등)과 논리 연산(AND, OR 등)을 수행하는 CPU의 주요 구성 요소ALU가 작동하는 과정 :입력 : 레지스터로부터 피연산자를 받아들인다.명령 : 제어장치로부터 연산 종류를 나타내는 제어 신호를 받아들인다.결과 저장 : 계산 결과를 다시 레지스터에 저장ALU의 특징 :메모리 접근보다 레지스터 접근 속도가 훨씬 빠르다.연산 결과 외에도 플래그를 생성하여 추가적인 상태 정보를 제공플래그 (Flag) : 연산 결과에 대한 추가 정보를 담는 값으로 플래그는 플래그 레지스터에 저장된다.ALU 내부 주요 구성 요소 :가산기 : 덧셈 연산 수행보수기 : 뺄셈 연산 수행 (2의 보수 활용)시프터(Shifter) : 비트 이동 연산 수행오버..
[컴퓨터 구조] 명령어의 구조와 오퍼랜드 필드의 주소 지정 방식
·
CS
연산 코드와 오퍼랜드명령어는 연산 코드와 오퍼랜드로 구성연산 코드 필드 (분홍색 필드) : 명령어가 수행할 연산인 연산 코드 (Operation Code), 연산자오퍼랜드 필드 (흰색 필드) : 연산에 사용할 데이터 또는 사용할 데이터의 저장된 위치를 나타내는 오퍼랜드(Operand), 피연산자 연산 코드 유형데이터 전송산술/논리 연산제어 흐름 변경입출력 제어 더보기데이터 전송- MOVE : 데이터 옮기기- STORE : 메모리에 저장- LOAD (FETCH) : 메모리에서 CPU로 데이터 가져오기- PUSH : 스택에 데이터 저장- POP : 스택의 최상단 데이터 꺼내기 산술/논리 연산- ADD/SUBTRACT/MULTIPLY/DIVIDE : 덧셈 / 뺄셈 / 곱셈 / 나눗셈- INCREMENT/DEC..
[컴퓨터 구조] 컴퓨터의 구성
·
CS
컴퓨터 구조의 큰 그림크게 두가지로 나뉜다. 하나는 컴퓨터가 이해하는 정보, 또 하나는 컴퓨터의 핵심 부품이다. 컴퓨터가 이해하는 정보데이터 (Data) : 컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상과 같은 정적인 정보명령어 (Instruction) :컴퓨터를 실질적으로 작동시키는 더 중요한 정보데이터를 움직이고 컴퓨터를 작동시키는 정보 컴퓨터의 핵심 부품메인보드 (Main Board, 마더보드 : Mother Board) 안에는 아래와 같은 핵심 부품들이 존재한다.중앙처리장치 (CPU : Central Processing Unit)산술논리연산장치 (ALU: Arithmetic Logic Unit)제어장치 (CU: Control Unit)여러 레지스터 (Register)주기억장치 (Main Memo..
[TIL] MySql WorkBench 명령어 정리 및 DB 실습
·
SQL
DDL (Data Definition Language)테이블과 같은 데이터 구조를 정의하는데 사용하는 명령어ex) CREATE, ALTER, DROP, RENAME, TRUNCATE CREATE - 테이블 생성CREATE TABLE 'book' ('bookid' INT NOT NULL,'bookname' VARCHAR(45) NOT NULL,'publisher' VARCHAR(45) NOT NULL,'price' INT NOT NULL,PRIMARY KEY('bookid'));PK, NN, UQ, AI와 같은 약어들은 테이블을 생성할 때 열의 제약 조건(Constraint)을 정의할 때 사용 1. PK(Primary Key)주 키(Primary Key)는 중복되지 않고 NULL 값을 가질 수 없다.테이블..
[TIL] AWS EC2에 Docker 설치, Container 띄우기
·
TIL
오늘은 AWS EC2에 Docker를 설치하고 Mysql, nginx와 같은 Container를 띄우는 실습을 했다. 따라하면서 막힌 부분들은 없었지만 생각보다 해야할 게 많고 AWS를 처음 사용해보기 때문에 까먹지 않도록 블로그에 정리하기로 하였다.  AWS 인스턴스 생성하기AWS 링크 무료 클라우드 컴퓨팅 서비스 - AWS 프리 티어Q: AWS 프리 티어란 무엇입니까? AWS 프리 티어는 고객에게 서비스별로 지정된 한도 내에서 무료로 AWS 서비스를 살펴보고 사용해 볼 수 있는 기능을 제공합니다. 프리 티어는 12개월 프리 티어, 상aws.amazon.comAWS에 로그인해서 EC2 인스턴스를 생성한다. 생성하기 전에 리전이 서울로 되어있는지 꼭 확인한다. 또한 AWS에서는 잘못하다가 괜한 금액들이 ..