전체 글 47

포인터 & 배열 + 포인터 연산

크래프톤 정글에서 포인터 공부했던 내용을 정리하는 글입니다. 배열배열(영어: array, 配列·排列, 문화어: 배렬)은 번호(인덱스)와 번호에 대응하는 데이터들로 이루어진 자료 구조를 나타낸다. 포인터포인터(pointer)는 다른 변수, 혹은 그 변수의 메모리 공간주소를 가리키는 변수를 말한다. 포인터가 가리키는 값을 가져오는 것을 역참조라고 한다. 그 포인터가 가르키는 공간의 값을 가져오는 것을 역참조라고한다. 32 바이트 환경에서 C언어의 포인터는 4 바이트이며, 64 바이트 환경에서는 8 바이트이다.포인터 표기포인터의 선언int* p; // int형 데이터를 가르키는 포인터 선언: 초기화하지 않음 포인터의 역참조int a = *p; // p의 위치에 있는 값을 a로 복사 주소 연산: &int s =..

Programming/C & C++ 2023.10.19

Static

코드를 작성하다 (바보같이) 간과하고 넘어갔던 부분에 대해 궁금증이 생겨서 조금씩 공부해보기로 했다. of 메서드를 static으로 사용하는 이유는? 둘 다 비슷한 용도로 사용하는데, toEntity 메서드와 달리 of 메서드는 static으로 되어 있다. @Getter @Builder @ToString @NoArgsConstructor(access = AccessLevel.PRIVATE) @AllArgsConstructor public class RoadmapViewportDto { private BigDecimal x; private BigDecimal y; private BigDecimal zoom; public RoadmapViewport toEntity() { return RoadmapViewp..

Programming/Java 2023.10.17

컴퓨터는 데이터를 어떻게 사용할까 1: 메모리, OS

C 언어를 기준으로 설명. 가상메모리, 자료구조와 포인터, 캐시와 가상메모리에 대한 문제는 다른 페이지에서 상세하게 다루고, 여기에서는 전체적인 흐름을 위한 간단하고 단순화한 설명만 있음. 하드웨어: 메모리 RAM 컴퓨터의 기억장치는 휘발성 메모리와 비휘발성 메모리가 있다. 휘발성 메모리로 대표적인 것은 RAM(Random Access Memory) 비휘발성 메모리로 대표되는 것은 ROM(Read Only Memory)등이 있다. 보통 메모리라 함은 우리가 컴퓨터에서 주로 작업대로 사용하는 RAM을 지칭하는 것으로 사용한다. RAM은 데이터를 순차적으로 접근해야 하는 ROM과는 달리 랜덤으로 접근할 수 있기 때문에 속도가 매우 빠르다. 이런 매우 빠른 특성 때문에 느린 ROM과 빠른 CPU를 중개(👉 캐..

Computer Science 2023.10.13

JPA | BaseTimeEntity: 생성/수정 시간 자동 설정

BaseTimeEntity 모든 Entity의 상위 클래스에서 createdDate, updateDate를 자동으로 관리해 줌. Date자료형보다 LocalDate, LocalDateTime을 사용할 것을 추천. BaseTimeEntity 추상클래스를 구현하고 Entity 클래스들에게 상속시켜 사용한다. BaseTimeEntity 추상클래스 @Getter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) // Auditing 기능 포함 public abstract class BaseTimeEntity { @CreatedDate @Column(updatable = false) private LocalDateTime createdDate; @..

Programming/Spring 2023.10.09

Spring

Spring Framework Java 플랫폼을 위한 오픈소스 프레임워크 경량 컨테이너: 자바 객체를 직접 관리하며, 객체 생성/소멸과 같은 라이프사이클을 관리한다. POJO(Plain Old Java Object)방식의 프레임워크: 일반적인 J2EE 프레임워크에 비해 구현을 위한 특정 인터페이스를 구현하거나 상속 받을 필요가 없어 기존 라이브러리를 지원하기에 용이하고 객체가 가볍다. 제어 반전(IoC: Inversion of Control): 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어, 필요에 따라 스프링에서 사용자의 코드를 호출한다(라이브러리와는 반대: 라이브러리의 경우 사용자의 코드가 필요에 따라 라이브러리의 코드를 호출한다). 의존성 주입(DI: Dependency Injection): ..

Programming/Spring 2023.10.09

01 | 무중단 배포환경 구축(Blue/Green) - 2

구축 Code Deploy의 배포 과정은 다음과 같다. 애플리케이션 최상단 경로에 AppSpec.yml 파일(배포에 필요한 절차 명세)을 추가한다. 특정 버전에 대한배포 요청이 들어오면, Code Deploy는 배포할 EC2 인스턴스에 설치된 Code Deploy Agent들과 통신하여 Agent들에게 요청 버전을 배포해달라고 요청한다. Agent들은 코드 저장소(여기에서는 jar파일이 저장된 S3)에서 프로젝트 전체를 서버에 내려받고, AppSpec.yml 파일의 절차대로 배포를 진행한다. Agent는 배포 후 성공/실패 여부를 알려준다. 3. Code Deploy를 활용한 자동 배포 루틴 만들기 (1) EC2 세팅 인바운드 규칙: ssh 접속은 현재 내 IP, HTTP, HTTPS 포트인 80, 44..

01 | 기본 문법 | 변수와 리터럴

키워드(keyword) Java 언어에서 정한 예약어 변수명 하나 이상의 글자 첫번째 글자는 문자, '$', '_' 그 이후 글자는 문자, '$', '_', 숫자 길이 제한 없음 키워드는 변수명으로 사용할 수 없음 Primitive Type 기본형 타입은 모두 정해진 메모리 크기를 가지고, 주어진 메모리 안에 그 값을 저장한다. 예: int 정수 하나를 저장하기 위해 메모리에 4 byte가 필요. int i = 1; 메모리 4 byte를 i로 칭하고 정수를 저장한다는 뜻이다. 정수 리터럴(literal) 1을 i 라는 메모리 공간에 저장한 것이다. Literal이란 변수에 입력되는 값 자체. 이 4byte메모리에 숫자 1이 2진수로 저장된다. short: 2 byte, long: 8 byte float,..

Programming/Java 2023.10.04

00 | Java의 동작: Hello.java

기초(노션) JAVA는 객체 지향 언어. 플랫폼에 독립적이다. 느리지만, 버전 업 되면서 다른 언어들의 장점을 흡수하고 있다.(모던 자바) 람다: 함수형 프로그래밍 Stream API: 람다 표현식과 메서드 참조 등의 기능과 결합하여 매우 복잡하고 어려운 데이터 처리 작업을 쉽게 조회하고 필터링하고 변환하고 처리할 수 있도록 한다. 병렬 프로그래밍: 여러 개의 CPU 코어에서 작업을 배분해서 동시에 작업을 수행한다. 클래스 class 이름은 파일 이름과 동일해야 한다. 첫 글자는 무조건 대문자. public class Hello{ ... } 메서드 클래스는 필드(Field)와 메서드(Method)를 가질 수 있다. 프로그램 실행이 시작되는 시작점: main 메서드 public static void mai..

Programming/Java 2023.10.04

데이터베이스 기초

[원티드 프리온보딩 백엔드 챌린지 10월: SQL 기초]의 학습 내용입니다. 1. 데이터베이스와 테이블의 차이는 무엇인가요? 데이터베이스 어떤 규칙이나 목적을 기초로 하여 관리되는 데이터의 모음. 데이터의 정리와 관리를 쉽게 하기 위해 만든 데이터를 모은 것이다. 여러 개의 데이터베이스를 만드는 이유는 각 데이터베이스마다 데이터베이스에 접근할 수 있는 계정을 설정할 수 있기 때문이다. DBMS를 포함하는 프로그램도 데이터베이스라고 부르지만, 데이터를 저장하는 공간도 데이터베이스라고 혼용한다. 테이블 데이터베이스 안에 실제 데이터가 저장되는 형태이다. 파일에 데이터를 저장할 때 어떤 구조로 저장할 지 결정하는 것이다. 여러 개의 테이블이 데이터베이스 안에 존재할 수 있다. 2. MySQL에서 데이터를 조회..

Programming/DB 2023.09.29

02 | System Structure & Program Execution - 1

본격적으로 운영체제 들어가기 전, 하드웨어의 동작에 대해 알아본다. 컴퓨터 시스템 구조 CPU CPU는 메모리로부터 매 clock cycle마다 기계어 instruction를 읽어들인다 Register: 메모리보다 더 빠르면서 정보를 저장할 수 있는 공간, 메모리와의 속도 차이를 보완하는 역할을 한다. Mode Bit: CPU에서 실행되는 것이 운영체제인지 사용자 프로그램인지 구분 Interrupt Line: CPU는 Instruction만 실행하는 역할만 수행. 키보드 입력이 들어오거나 디스크에서 읽어오는 것을 완료한 경우 CPU는 이 interrupt를 통해 관련 처리를 수행한다. 메모리의 프로그램 A -> ( 특정 디바이스 접근 요청 ) -> CPU 에서 해당 인스트럭션 처리 -> device co..