전체 글 337

연산자와 반복문과 조건문

오버 플로우와 언더플로우정수 타입 연산에서 오버/언더플로우가 발생되면 실행 에러가 발생하지 않고, 정수 타입의 최소/최대값으로 되돌아간다.byte value =127;value++; // value 값에 1을 더함 System.out.println(value); // -128최대값 +1 -> 최소값최소값 -1 -> 최대값  정확한 계산은 정수 연산으로public class AccuracyExample1 { public static void main(String[] args) { int apple = 1; double pieceUnit = 0.1; int number = 7; double result = apple - number*pieceUnit; System..

변수와 기본타입과 타입변환(캐스팅)

변수변수 : 하나의 값을 저장할 수 있는 메모리 공간에 붙여진 이름변수 선언 : 어떤 타입의 데이터를 저장할 것인지, 변수 이름이 무엇인지 결정하는 것. 지역변수는 사용되기 전에 반드시 초기화해야하며,필드(클래스 변수와 인스턴스 변수)는 초기화를 생략할 수 있다.  8개의 기본타입자바는 8개의 기본 타입이 있다.값의 분류기본 타입정수byte, char, short, int, long실수float, double논리boolean 정수타입 타입메모리크기저장되는 값의 허용 범위byte1byte-128 ~ 127short2byte-32,768 ~ 32,767char2byte0 ~ 65,535(유니코드)int4byte약 -21억 ~ 21억long8byte약 -9경 ~ 9경 진수 표현방식System.out.print..

자바의 특징 및 자바 프로그램 실행과정

자바 언어의 특징1. 운영체제에 독립적이다.자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고, JVM이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제와 하드웨어가 이해할 수 있도록 변환하여 전달한다.자바로 작성된 프로그램은 운영체제에 독립적이지만 JVM은 운영체제에 종속적이어서 썬에서는 여러 운영체제에 설치할 수 있는 서로 다른 버전의 JVM을 제공하고 있다.2. 객체지향언어이다.자바는 프로그래밍의 대세로 자리 잡은 객체지향 프로그래밍언어(object-oriented programming language) 중의 하나로 객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어라는 평가를 받고 있다.3. 자동 메모리 관리(Garbage Collection)자바로..

자바 문자열 및 배열

문자열 ASCII 코드 -> 소문자와 대문자 차이 32 65(A), 90(Z)97(a), 122(z)  문자열 대문자 변환  ( Upper Lower)String str = "hello";String upperStr = str.toUpperCase(); // "HELLO" 문자의 대문자 변환char ch = 'a';char upperCh = Character.toUpperCase(ch); // 'A'문자의 소/대문자 확인 char c = 'a';if (Character.isLowerCase(c)) { System.out.println(c + "는 소문자입니다.");} 문자열에서 문자 추출String str = "hello";char ch = str.charAt(0); // 'h' 문자열에서 특정 ..

스프링 부트 CI/CD 배포 서버 인프라 구축[EC2, RDS, Route 53, S3, ELB(https)]

개발이 들어가기 앞서 배포 인프라를 구축할 것이다.이후에도 비슷한 인프라 세팅할 일이 많을 것으로 예상되어 집대성해서 한번에 정리하려고 한다.   FCM, 지도 api들을 사용할 예정이기에 https까지 붙인 환경을 한번에 구성할 예정이다.이전의  AWS의 프리티어 계정을 활용하며 학습용도의 인프라 구성이 아닌 실사용자를 가진 서버 인프라를 구성하므로 약간의 스펙업으로 인해 과금이 발생할것으로 예상된다. 또한 현재 구축하는 인프라는 정말 서비스 초기의 인프라이므로 이후 사용자가 증가함에 따라 인프라 구조를 변경할 예정이다.   1. 스프링 부트 프로젝트 생성2. EC2 에 배포하기3. Route 53으로 도메인 연결하기 4. ELB로 https 설정하기5. RDS 연결하기6. 파일 업로드를 위한 S3 세..

도커 컴포즈(Docker Compose)

도커 컴포즈(Docker Compose) 란 ?     YAML 이란 ?  주요 명령어docker compose up -d # YAML 파일에 정의된 서비스 생성 및 시작docker compose ps # 현재 실행중인 서비스 상태 표시docker compose build # 현재 실행중인 서비스의 이미지만 빌드docker compose logs # 실행 중인 서비스의 로그 표시docker compose down # YAML 파일에 정의된 서비스 종료 및 제거 Hitchecker 앱 실습  app.pyfrom flask import Flaskfrom redis import Redisapp = Flask(__name__)redis = Redis(host='redis', port=6379) # 레..

주문 재고 요청시 동시성 제어 [REDIS 분산락(Distribution Lock)]

https://softmoca.tistory.com/345 주문 재고 요청시 동시성 제어테스트 [트랜잭션/격리수준/LOCK/REDIS]https://softmoca.tistory.com/346현재 포스팅은 위 포스팅으로 이어 진다. 동시성 제어가 필요한 이유현재 kwangsang에서는 마감 시간이 가까워 졌을 때 떨이로 상품을 내놓는 점주 분들과 마감 할인 상품softmoca.tistory.com해당 포스팅은 위 포스팅과 이어 진다. 최종 동시성 제어 성능 비교 정리 [100명 동시 요청 기준]동시성 제어시 고려해야할 사항 4가지 중요 우선 순위  - 우선 순위중 하나라도 만족을 못하면 이후 순위들은 무의미해진다.(EX : 아무리 시간이 준수하고, 사용자 요청 순서가 보장되어도 데이터 무결성이 지켜 지지..

주문 재고 요청시 동시성 제어테스트 [트랜잭션/격리수준/LOCK/REDIS]

https://softmoca.tistory.com/346현재 포스팅은 위 포스팅으로 이어 진다.동시성 제어가 필요한 이유현재 kwangsang에서는 마감 시간이 가까워 졌을 때 떨이로 상품을 내놓는 점주 분들과 마감 할인 상품에 대한 정보를 필요로 하는 고객들을 위한 유통 서비스 플랫폼을 제작 중이다. 그리고 당시에는 @@대학교와 협약을 맺어 해당 서비스 플랫폼을 운영하기로  했었고 나는  1000명 이상의 동시 사용자들의 주문 요청에 대한 동시성을 제어하는 API를 개발 하는 역할을 되었다. 해당 서비스에서 동시성 제어를 필요로 하는 부분에 대해 간단히 알아보자.처음 푸쉬 알림을 통해 고객들에게 마감 할인 상품에 대한 정보가 주어지면 특정 시간에 많은 사용자의 트래픽이 몰리게 된다.그리고 해당 화면과..

JMeter 부하 테스트

부하테스트에는 여러가지 툴들이 있다.그중 유명한 JMeter와 nGrinder가 있지만 비교적 자료 소스가 많고 설치 법과 사용법이 간단해서 JMeter를 고르게 되었다.맥 OS인 나는 늘 그렇듯 brew로 설치를 하였다.윈도우를 사용하다가 맥 OS로 갈아타니 자질구레한 설정까지 신경을 안써도 되서 너무 좋을 것 같다. brew짱우선 대부분의 부하테스트 툴을 사용하기 위해서는 JAVA를 먼저 설치를 해야한다.하지만 brew를 사용하여 설치하면 이미 내부에서 java를 먼저 설치하고 이후 jmeter를 설치한다   JMeter란 ?Apache에서 만든 자바로 만들어진 웹 어플리케이션 성능 테스트 오픈 소스이다. - 웹 - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)- SO..