Enum Class의 동시성 이슈 troubleshooting #1 Enum Class가 싱글톤 성질을 가지고 있기 때문에 발생했던 동시성 이슈를 기록하고자 한다. (동시성 이슈﹖ 다수의 스레드가 동시에 같은 인스턴스 필드 또는 공용 필드 값을 변경하면서 발생하는 이슈) . 그 이슈는 바로바로.. 🥁🥁🥁 . ... Issue 구매 완료 알림 푸시가 내가 주문한 상품명이 아닌 다른 사람이 주문한 상품명으로 전달된 이슈였다. 예를 들어 사용자는 불고기버거 기프트콘을 주문했지만, 무소음 키보드 주문이 완료되었다는 구매 완료 알리 푸시를 받게 된 것이다. 정상 푸시 메시지 불고기버거 세트 기프트콘 주문이.. 문제의 푸시 메시지 무소음 키보드 주문이.. Problem 푸시 톡 클래스는 Enum 클래스인데, 아래와..
Json 구조의 로그 파일 분석 Json 구조의 로그 파일을 분석하는 코드를 작성해보자. 간단한 설명은 주석을 참고해보자. Log file Example Line-by-line json type. 라인 단위로 Json 형태의 로그가 저장되어있는 파일이다. {"success":"true", "fileType":"pdf", "summary":[{"page_count":"3", "sentence_count":"20", "char_count":"80"}]} {"success":"true", "fileType":"docx", "summary":[{"page_count":"6", "sentence_count":"50", "char_count":"140"}]} Code import json import os file..
| 10. 클래스- || 클래스 체계- 클래스를 정의하는 표준 자바 관례 (순차적인 추상화 단계)1. 변수 목록- static public- static private- 비공개 인스턴스 변수2. 공개 함수3. 비공개 함수 ||| 캡슐화- 때로 변수나 유틸리티 함수를 protected로 선언하여 테스트 코드에 접근을 허용하는 방법도 있다.- 하지만, 그 전에 비공개 상태를 유지할 온갖 방법을 강구하고 캡슐화를 풀어주는 결정은 언제나 최후의 수단으로! || 클래스는 작아야 한다! - 클래스를 만들 때 첫 번째 규칙은 크기, 클래스는 작아야 한다. (두 세 번째 규칙도 크기다...)- 함수와 마찬가지로 '작게'가 기본 규칙- 함수는 물리적인 행 수로 크기를 측정했다면, 클래스는 맡은 책임을 센다. * 클래스 ..
#. 추상 클래스 > 추상 메서드 - abstract 예약어 ㄴ 메서드와 클래스를 선언할 때 사용하는 Modifier ㄴ 메서드를 선언에 사용 시 추상 메서드로 정의하겠다는 의미 - 추상 메서드12public int sum(int n1, int n2 ..) { ... } // 일반 메서드public abstract int sum(int n1, int n2 ..); // 상 메서드cs ㄴ 메서드의 시그니처(리턴 타입, 메서드명, 매개변수)만 정의 ㄴ 구체적인 행위, 즉 블록({ }) 부분은 정의되지 않은 특수한 메서드 ㄴ 메서드의 시그니처가 선언되어 있기 때문에 메서드의 기본적인 기능 유추 가능 ㄴ 추상 메서드는 의미가 없지만 자식 클래스에서 Overriding 했을 때, 상속을 통해 의미를 가짐 ㄴ 추상..
* 요약 *static : 변수에 붙일 시 멤버 변수를 클래스 변수로 선언하는 것이고 클래스로부터 생성되는 모든 객체들이 공유하는 변수가 된다.final : 변수에 붙일 시 상수를 의미하고 메서드 앞에 붙이면 Overriding을 금지하며, 클래스 앞에 붙이면 상속을 금지abstract : 클래스와 메서드 앞에 붙일 수 있고, 메서드 앞에 붙이면 추상 메서드, 클래스 앞에 붙이면 추상 클래스 #. static 예약어 > static 예약어 (변수) - 멤버 변수와 메서드 앞에 붙일 수 있는 modifier로서, 활용 방법을 제어123456class Employee { String name; // 인스턴스 변수 int emplyeeNo; // 인스턴스 변수 int age; // 인스턴스 변수 static ..
#. 클래스 선언 > 클래스 선언 - 현실 세계의 객체들을 추상화하여 만들어낸 소스 형태의 산출물인 클래스 작성을 시작으로 객체지향 프로그램은 시작 - 클래스의 선언부와 몸체로 나뉘고 몸체에는 클래스의 멤버가 선언12345[access modifier] class명 [extends 부모 클래스명] { // 클래서 선언부 // 클래스 몸체 [access modifier] 클래스명(argument list) { } // 생성자 [access modifier] 데이터 타입(data_type) 변수명[=초기 값]; // 변수 선언 [access modifier] return_type 메서드명(argument list) { } // 메서드 cs - 클래스 멤버 구성 ㄴ 객체의 초기화를 담당하는 생성자 (Const..
#. OOP(Object Oriented Programming)> 절차지향 (POP) - 실행되는 순서가 위에서부터 아래로 순차적으로 진행되는 형태를 가진 언어 - 프로그램 재사용 시 기존에 만들어진 코드를 복사하여 붙여넣기 하는 방법 사용 => 함수의 등장. ㄴ자주 사용되는 특정한 코드를 하나의 모듈(묶음)로 묶어 놓은 것 ㄴ프로그래머가 사용하고 싶을 때마다 호출하여 코드가 실행되도록 함 ㄴ데이터와 함수 간에 유기적인 관계성을 갖지 못함 > 객체지향 (OOP) - 모듈성을 높이기 위해 함수가 등장 - 객체 등장 (함수보다 더 높은 모듈 관리를 위해 자신이 가진 고유의 데이터와 그 데이터를 처리할 수 있는 메서드를 가짐) - 이러한 객체들이 모여 객체지향 프로그램 구조가 형성 - 객체지향을 통해 보다 높..
1. 클래스(class)-- 클래스 생성1234567891011121314// 클래스 생성 public class Student { String name; // 객체 변수(인스턴스 멤버, 멤버 변수, 속성) public void setName(String name) { // 메소드(Method) this.name = name; } public static void main(String[] args) { Student stu1 = new Student(); // cat 객체 생성, student의 인스턴스(instance) stu1.setName("Aaron"); System.out.println(stu1.name); // 객체 변수의 값 확인 }}Colored by Color Scriptercs 2. 메..