반응형

전체 글 423

Static, Stack, Heap / Java 메모리 영역의 구조와 특징

Java를 사용하면서 알아야 할 메모리 구조 및 특징에 대해서 정리합니다. (Static, Stack, Heap) 먼저 프로그램을 구동하기 위해서는 운영체제(OS)가 메모리(RAM)에 데이터 및 명령어를 저장할 공간을 할당하여 줍니다. 메모리는 컴퓨터에 있어 가장 핵심이 되는 부품이고, CPU가 처리할 데이터가 임시로 저장되는 공간입니다. 동작은 하드디스크에 저장된 데이터가 메모리에 올라가서 실행되며, 메모리(RAM)를 주 기억 장치라고 부릅니다. 메모리는 사용할 수 있는 공간이 한정되어 있기 때문에 어떻게 관리하느냐에 따라서 프로그램의 성능(속도 등)이 좌우됩니다. 따라서 Java 어플리케이션에서 메모리를 효율적으로 사용하기 위해서는 메모리 구조와 특징에 대해 이해할 필요가 있습니다. 1. Static..

Programming/Java 2021.08.23

Spring Boot Redis 두 가지 사용 방법 RedisTemplate, RedisRepository

https://wildeveloperetrain.tistory.com/21 Redis란? 레디스의 기본적인 개념 (인메모리 데이터 구조 저장소) Redis란? Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템 (DBMS)입니다. 데이터베이스, 캐시, 메세지 브로커로 사용되며 인메모리 wildeveloperetrain.tistory.com 인메모리 데이터 저장소 Redis 기본 개념에 대한 포스팅입니다. Spring Boot Redis 사용 방법 (RedisTemplate, RedisRepository) * Redis 설치 이후 진행과정입니다. Spring Boot에서는 Spring Date Redis를 통해 Lettuce, Jedis라..

iphone13 망고 오렌지 유출 이미지, iphone13 출시 예정일

지난 13일 대만의 한 매체에서 공개된 아이폰 13 망고오렌지 컬러 사진입니다. 해당 사진은 중국의 IT 블로거가 웨이보를 통해 공개한 것인데요. 이번에 출시될 iphone13의 색상은 펄, 로제, 선셋 골드, 스카이블루, 매트 블랙 등 새로운 색상이 다양하게 출시 될 것으로 예상되고 있습니다. 아이폰 12로 역대 최대 실적을 내고 있는 애플의 다음 신작인 아이폰13 출시 예정일이 가까워지고 있습니다. 애플은 아이폰 13에 사용될 새로운 A15 칩을 기존 계획보다 늘려 주문했다는 소식이 있습니다. 2021년 9월 출시 예정인 아이폰 13은 카메라 홀이 더 커지고 두꺼워지며, 노치가 줄어들어 출시될 거라는 예상과 충전 단자가 없어질 것이라는 예상도 나오고 있습니다. 성능적으로 좋은 소식은 동일한 크기를 유..

IT Info 2021.08.22

Java 빌더 패턴 (Builder Pattern)이란?

Java 빌더 패턴 (Builder Pattern) 이란? Java에서는 클래스를 객체화하는 '점층적 생성자 패턴', '자바 빈즈 패턴', '빌더 패턴' 3가지 패턴이 존재합니다. https://wildeveloperetrain.tistory.com/29 (Java) 점층적 생성자 패턴 & 자바 빈즈 패턴 프로그래밍에서 Class를 설계하다 보면, 필수로 받아야 할 인자와 선택적으로 받아야 할 인자가 구분됩니다. 그리고 Java에서는 이렇게 설계된 다양한 형태의 Class들을 객체화하는 3가지 패턴이 존 wildeveloperetrain.tistory.com 이전 포스팅의 점층적 생성자 패턴, 자바 빈즈 패턴에 이어 점층적 생성자 패턴의 안전성과 자바 빈즈 패턴의 가독성을 더한 빌더 패턴 (Builder..

Programming/Java 2021.08.22

(Java) 점층적 생성자 패턴 & 자바 빈즈 패턴

프로그래밍에서 Class를 설계하다 보면, 필수로 받아야 할 인자와 선택적으로 받아야 할 인자가 구분됩니다. 그리고 Java에서는 이렇게 설계된 다양한 형태의 Class들을 객체화하는 3가지 패턴이 존재합니다. '점층적 생성자 패턴', '자바 빈즈 패턴', '빌더 패턴' 먼저 점층적 생성자 패턴 (Telescoping Constructor Pattern)과 자바 빈즈 패턴 (Java Beans Pattern)을 알아보고, 다음으로 점층적 생성자 패턴의 안전성과 자바 빈즈 패턴의 가독성을 더한 빌더 패턴 (Builder Pattern)에 대해서 알아보겠습니다. 점층적 생성자 패턴 (Telescoping Constructor Pattern) 이란? public class Member { private Str..

Programming/Java 2021.08.21

Out of range value for column Exception (@Enumerated)

could not execute query; Out of range value for column JPA를 사용하여 데이터를 Insert 하는 과정에서 발생한 Exception입니다. 'out of range value for column' 에러는 insert 하는 값이 해당 컬럼 데이터의 타입과 불일치하는 문제가 있을 때 발생합니다. 아래의 경우는 enum type을 사용하며 발생했습니다. @Builder @Getter @AllArgsConstructor @Entity public class Transaction { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long idx; private String tid; private Tra..

Programming/Error 2021.08.20

IntelliJ 개발환경 꾸미기 Plugins 소개 (Meterial Theme UI, Progress Bar 외)

플러그인을 사용한 IntelliJ 개발 환경 꾸미기 Plugins 소개입니다. 사용한 Plugins은 다음과 같습니다. Material Theme UI Atom Material Icons Progress Bar Power Mode 2 플러그인은 Preferences -> Plugins -> Marketplace 에서 검색을 통해 찾아서 다운 받을 수 있습니다. plugins Mac : Command + Shift + A Windows Ctrl + Shift + A 가장 먼저 Material Theme UI 입니다. 색상 및 폰트 등, 전체적인 IntelliJ 색상 및 분위기를 바꿀 수 있는 꾸미기에 가장 큰 영향을 주는 플러그인 입니다. * theme는 위 테마 외에도 많은 색상이 있고, custom 테..

@Component 와 @Bean, @Autowired 어노테이션 알아보기

자주 사용하면서도 정확하게 무슨 용도로 사용되는지, 어떤 동작 원리를 가지는지, 어떤 차이가 있는지 잘 몰랐던 부분에 대해서 공부합니다. 먼저 Annotation에 대해서 간단하게 알아보겠습니다. Annotation은 Java 5부터 추가된 문법 요소로, 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술입니다. 실제 데이터가 아닌 데이터를 위한 데이터로 메타데이터 (meta data)로 불립니다. 어노테이션의 용도 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보 제공 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보 제공 실행 시 (런타임) 특정 기능을 실행하도록 정보 제공 어노테이션을 사용하기 위한 순서 어노테이션 정의 클래스에 어노테이션 배치 코드가..

Spring Boot Validation 적용하는 법, @Valid 작동 안되는 이유

* @Valid 어노테이션이 작동이 안 한다면? spring boot 2.3 version 이상부터는 spring-boot-starter-web 의존성 내부에 있던 validation이 사라졌습니다. 때문에 사용하시는 spring boot version이 2.3 이상이라면 validation 의존성을 따로 추가해주셔야 사용할 수 있습니다. Spring Boot Validation 적용하는 방법 - Validation을 사용하기 위해 먼저 의존성을 추가합니다. // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation implementation group: 'org.springframework.bo..

(Gradle Project) finished with non-zero exit value 1 Error 해결 방법

Execution failed for task ':HssApplication.main()'. > Process 'command '/Library/Java/JavaVirtualMachines/jdk-12.0.1.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1 * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. IntelliJ를 사용하여 Gradle Project를 코딩하며 발생한 에러입니다. Project를 Run ..

Programming/Error 2021.08.15

(Mac OS) git The requested URL returned error: 403 해결 방법

프로젝트 작업 후 git 명령어를 사용하는데 오류가 발생하였습니다. 이유는 github에서 8월 13일부터 password 인증을 중단했기 때문인데요. Please use a personal access token instead. 패스워드 인증 대신에 개인 엑세스액세스 토큰을 생성하여 인증을 하는 방식으로 변경되었으니 액세스 토큰을 이용하라고 합니다. https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token Creating a personal access token - GitHub Docs Personal access tokens (..

Programming/Error 2021.08.15

git clone Error - HTTP Basic: Access denied, gitconfig: Permission denied

git clone Error, 금일 새로운 프로젝트 기본 세팅 후 작업을 하기 위해 clone 하던 중 발생한 에러입니다. 에러를 해결하고 project를 정상적으로 clone 했지만 아쉽게도 정확한 원인이 무엇이었는지, 이 해결 방법이 어떤 영향을 줘서 해결된 건지는 파악하지 못했습니다. 발생한 에러는 다음 두 가지 에러입니다. - HTTP Basic: Access denied - Could not lock config file C:\Program Files\Git\mingw64/etc/gitconfig:Permission denied 프로젝트에 권한이 정상적으로 적용된 것을 확인하였고, 평소와 같은 방법으로 access token 정보를 담은 주소를 가지고 project를 clone 하였습니다. Cl..

Programming/Error 2021.08.12

Redis란? 레디스의 기본적인 개념 (인메모리 데이터 구조 저장소)

Redis란? Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템 (DBMS)입니다. 데이터베이스, 캐시, 메세지 브로커로 사용되며 인메모리 데이터 구조를 가진 저장소입니다. * db-engines.com 에서 key, value 저장소 중 가장 순위가 높습니다. Redis에 대해서 더 자세하게 알아보기 전 캐시 서버(Cache Server)에 대해서, 데이터 베이스가 있는데도 Redis라는 인메모리 데이터 구조 저장소를 사용하는 이유는 무엇일까요? 데이터 베이스는 데이터를 물리 디스크에 직접 쓰기 때문에 서버에 문제가 발생하여 다운되더라도 데이터가 손실되지 않습니다. 하지만 매번 디스크에 접근해야 하기 때문에 사용자가 많아질수록 부하가..

Programming/Web 2021.08.12

JWT 토큰 기반 인증 시스템 (JSON Web Token)

Spring Boot + Security + JWT + Redis 를 기본으로한 RESTful API를 구현하기로 계획하며 토큰 기반 인증 시스템 JWT에 대해서 다시 한번 정리합니다. 토큰 기반 인증 시스템이란, 먼저 웹 보안은 요청하는 사용자를 식별하는 인증 (Authenticate)와 인증된 사용자가 보호된 리소스에 접근할 권한이 있는지 확인하는 인가 (Authorize) 가 바탕이 됩니다. 토큰(Token) 기반 인증 시스템은 인증을 받은 사용자에게 토큰을 발급하고, 사용자가 서버에 요청을 할 때 헤더(Header)에 발급 받은 토큰을 함께 보내도록 하여 유효성을 검사합니다. * 사용자의 정보를 세션에 계속 유지해야 하는 서버 기반 인증 시스템과 달리 연결을 유지하지 않는 stateless 구조를..

IntelliJ Community version Spring Boot Project 생성하는 방법

IntellJ Community version Spring Boot Project 생성하는 방법입니다. 인텔리제이 커뮤니티 버전을 사용하신다면 New Project에서 스프링, 스프링 부트 프로젝트를 생성하는 'Spring Initializr' 을 찾을 수 없습니다. 그렇기 때문에 다른 방법을 이용해야 하는데요. https://start.spring.io/ 방법들 중 하나로 start.spring.io 사이트를 이용하는 방법이 있습니다. 프로젝트 생성 방법은 아주 간단합니다. 좌측 메뉴를 기준으로 원하는 프로젝트 Maven, Gradle 선택 및 언어와 Spring Boot 버전을 선택하고 프로젝트의 Metadata, 패키징 방법, Java 버전을 입력합니다. 그리고 우측 ADD DEPENDENCIES를..

반응형