전체 글 95

[JAVA] 자바 기본형 타입 종류와 크기

자바의 기본형 변수는 메모리 스택 영역에 그 값을 바로 저장한다.(별도의 힙 메모리 영역에 값을 저장하고, 스택 영역의 변수가 이를 참조하는 참조형 변수와 차이) 이 기본형 변수의 크기 단위는 바이트(1바이트=8비트)로 표시한다. 8비트는 2^8 = 256개의 값을 표현할 수 있다.이 값들은 부호가 있을 때와 없을 때 범위가 달라지는데,각 자료형이 얼마의 값 범위를 내포하는지 알아보자.  1) 부호가 있는 경우 (Signed)-부호가 있는 형 종류 : byte, short, int, long-가장 왼쪽의 비트를 부호 비트로 사용한다.-정수형 데이터 타입에서 음수와 양수를 모두 표현 가능-부호 비트가 0이면 양수, 1이면 음수(= 2의 보수(2's complement) 표기법)-범위 계산법 :  -2^(n..

[JAVA] BufferedReader, BufferedWriter 사용해야 하는 이유

자바에서 입력은 Scanner 통해 받고,출력은 System.out.println("") 을 통해 한다. 평상시에는 이러한 입,출력이 문제가 되지 않지만 특정 상황의 경우 이것을 쓰는 것이 적합하지 않을 때가 있다. 바로 코딩테스트와 같은 시간 제한이 주어진 상황에서 컴파일이 완료되어야 하는 경우이다.원래 쓰던 대로 하면 시간 초과 오류가 뜬다.이 때 오류를 해결할 수 있는 방법은 입, 출력을 더 빠르게 받는 것이다!나는 코딩 테스트로 인해 이 방법을 알아보면서StringBuffer가 성능이 좋은 이유가 있듯이, BufferReader가 더 빠른 이유가 궁금해졌다. ■ 버퍼링 개념버퍼링은 데이터를 한 번에 조금씩 읽거나 쓰는 대신, 더 큰 덩어리로 읽거나 쓰는 방법이다. 이렇게 하면 디스크나 네트워크 같..

CORS 에러란? 발생 원인과 해결 방안까지

프론트-백을 겸하여 개발하다보면쉽게 만날 수 있는 CORS 에러.특히나 서로 다른 도메인이나 포트에서 실행되는 마이크로서비스(MSA)들 간의 요청에서CORS 문제가 발생할 수 있다.■ CORS란?CORS(Cross-Origin Resource Sharing)는 보안 기능 중 하나로, 웹 브라우저가 다른 출처(origin)의 리소스를 요청할 때 발생할 수 있는 문제를 해결하기 위해 존재한다. 예를 들어, 웹사이트 A에 접속해 있는데 이 웹사이트가 다른 도메인(B)에 있는 데이터를 요청하면, 브라우저는 보안상의 이유로 이를 막을 수 있다. 이때 CORS 정책이 작동한다. 쉽게 말해, 서버의 Origin이 다르면 접근을 제한하는 것이다.  ■ CORS 정책이 없으면 발생할 수 있는 문제?크로스 사이트 요청 위..

Network 2024.06.18

MSA란? 개념 이해하기 / MA와 MSA 장단점 비교 (+CORS 에러)

■ MA 란? 기존의 서버 형태는 Monolithic Architecture (MA) 개념에 가깝다.Monolithic 의 사전적 정의를 보자. '단단히 짜여 하나로 되어 있는' 응용 프로그램이 단일 코드베이스로 구성되는 아키텍처이다. 즉,  하나의 서비스의 장애가 다른 서비스로 전이되어 전체 시스템 장애로 이어질 수 있는 구조이다.   모든 기능이 하나의 애플리케이션으로 결합되어 배포되며,모듈들은 내부적으로 긴밀하게 결합되어 있는 것이 특징이다.이러면 단순한 개발 및 배포/관리가 가능하다는 장점이 있다.심지어 같은 메모리 공간에서 실행되므로 서비스 간 통신 오버헤드가 적어 cpu성능 면에서 좋을지도 모른다. 그러나 서비스가 커질 수록,=> 애플리케이션 전체를 확장해야 하므로 자원 낭비가 발생하고 의존성..

Server 2024.06.18

[Python/백준] 23791번 : ZOAC 4

[문제]2021년 12월, 네 번째로 개최된 ZOAC의 오프닝을 맡은 성우는 오프라인 대회를 대비하여 강의실을 예약하려고 한다.강의실에서 대회를 치르려면 거리두기 수칙을 지켜야 한다!한 명씩 앉을 수 있는 테이블이 행마다 W개씩 H행에 걸쳐 있을 때, 모든 참가자는 세로로 N칸 또는 가로로 M칸 이상 비우고 앉아야 한다. 즉, 다른 모든 참가자와 세로줄 번호의 차가 N보다 크거나 가로줄 번호의 차가 M보다 큰 곳에만 앉을 수 있다.논문과 과제에 시달리는 성우를 위해 강의실이 거리두기 수칙을 지키면서 최대 몇 명을 수용할 수 있는지 구해보자.H, W, N, M이 공백으로 구분되어 주어진다. (0  H, W, N, M ≤ 50,000)강의실이 수용할 수 있는 최대 인원 수를 출력한다.-입력5 4 1 1-출력..

alorithm/Baekjoon 2024.06.17

[Windows10] C드라이브 파티션 확장하기 (D:/ -> C:/)

메모리가 부족한 건 어쩔 수가 없는 듯 하다. D드라이브도 용량이 아주 넉넉한 건 아니지만 조금 파티션을 떼어줘보기로 했다... 윈도우 -> '파티션' 검색 D드라이브 우클릭-볼륨 축소 10G만 떼어주겠습니다.... 참고로 1024MB = 1G 할당되지 않은 빈 파티션 . . . 근데 볼륨 확장이 안된다. 찾아보니 별도의 프로그램이 필요하다고 하여 시도해봤으나 디스크가 달라 방법이 없는 상황. 그래서 그냥 돌고 돌아 간단한 방법을 쓰기로 했다.. -C드라이브 디스크 정리 추가로 용량 큰 폴더 옮겨주기 CentOS8 서버... D드라이브로 옮겨주었다... 끝... 이제 Intellij나 크롬 잔뜩 실행해도 67% 밖에 메모리 안먹는다.. 끝...진짜 끝.. 요약 : D->C드라이브 디스크끼리 파티션 이동,..

생활리뷰 2024.03.27

[Docker] Springboot 도커 배포해보기 | 도커 이미지 장점 (Docker hub,Docker API)

도커 이미지란? WHAT is the Docker Image? 도커 이미지는 파일 시스템의 변경사항만을 포함하는 여러 개의 읽기 전용 레이어로 구성됨. 이미지를 업데이트할 때 전체 이미지를 다시 다운로드할 필요 없이 변경된 부분만 업데이트할 수 있다! 이미지 빌드 과정에서 이미 빌드된 레이어는 로컬에 캐시되어 다음 빌드 시 재사용되며, 중복 다운로드 방지 & 조금씩 변경하면서 빌드를 반복할 때 특히 유용하다. 도커 서비스의 가장 작은 단위라고 생각하면 될 듯하다. 오늘은 도커의 개념과 장점은 간단하게 훑고 실제 스프링부트 프로젝트 배포를 실습해보자. 도커가 리눅스 혹은 각자 환경에 설치된 것을 기본 베이스로 한다. 도커에 권한부터 추가해야 한다. (권한 추가이므로 관리자 모드 sudo) usermod -..

DevOps/Docker 2024.03.17

[Spring] 스프링 빌드 오류 모음 || sudo: ./gradlew: command not found 에러가 뜰 때

스프링 프로젝트 개발을 마치고 빌드를 실행하기 위해 ./gradlew build 를 수행해야 하는데, (관리자 권한으로 수행) 분명 작업 폴더에 접근했고 목록에 gradlew 가 있는 것을 봤는데도 수행이 안될 때가 있다. [CASE1] 우선 프로젝트 파일을 원격지에서 받아왔을 경우, 자바나 gradle 환경이 달라서 오류가 날 수는 있다. => gradle -v (gradle 버전 확인) , java --version (자바 버전 확인) 버전이 다르면 그에 맞게 업그레이드/다운그레이드를 해줘야 함 [CASE2] 무한 빌드 상태에 빠질 경우 (무한 빌드의 경우, 돌리고자 하는 서버의 메모리를 확인할 것. 본인은 클라우드를 사용하여 프리 티어로 받은 메모리가 1G밖에 되지 않아서 그런 것이었고 증설하니 문..

Backend-dev/Spring 2024.02.21

[Linux] 윈도우 서버와 우분투 파일 동기화 쉽게 하기(LSync,rsync 사용법)

scp를 이용해서 디렉토리를 주고 받는 방법이 가장 익숙하지만 변동이 많은 프로젝트를 이렇게 주고 받는 건 비효율적이라는 생각이 들어서 실시간 연동이 가능한 동기화 방법을 찾아봤다. 그래서 찾아보니 LSync를 많이 이용하는 것을 알게 되었다. ▶[리눅스] 우분투 서버에서 LSync 설정 1. LSync 설치: sudo apt-get update sudo apt-get install lsyncd 2. LSync 설정 파일 생성: LSync는 설정 파일을 통해 동작한다. /etc/lsyncd/lsyncd.conf.lua lsync 를 함께 설치해준다. 2. LSync 설정: RSync 클라이언트를 사용하여 윈도우 서버에서 원격 동기화를 수행하는 스크립트를 작성한다. Cygwin shell: C:\Delta..

Server/Linux 2024.02.18