[Java] 김영한의 실전 자바 - 중급편 섹션5 열거형 - ENUM○ 열거형의 탄생 유래등급별로 할인을 적용해보자. 예제 단순화를 위해 회원 등급에 null 은 입력되지 않는다고 가정한다.public class DiscountService { public int discount(String grade, int price) { int discountPercent = 0; if (grade.equals("BASIC")) { discountPercent = 10; } else if (grade.equals("GOLD")) { discountPercent = 20; } else if (grade.equals("DIAMOND")) { dis..
[Java] 김영한의 실전 자바 - 중급편 섹션3,4 String ,래퍼,Class 클래스○ String 클래스🟢 String 클래스 구조public final class String { //문자열 보관 private final char[] value;// 자바 9 이전 private final byte[] value;// 자바 9 이후 //여러 메서드 public String concat(String str) {...} public int length() {...} ...자바에서 문자 하나를 표현하는 char 는 2byte 를 차지한다. 단순 영어, 숫자로만 표현된 경우 1byte 를 사용하고, 그렇지 않은 나머지의 경우 2byte 인 UTF..
[Spring] 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 섹션7 로그인 처리2 - 필터, 인터셉터◼️ 서블릿 필터 - 소개문제점로그인하지 않은 사용자가 관리화면에 들어가지 못하게 하려면 로그인 여부를 체크하는 로직을 모든 컨트롤러에서 체크해야 한다.하지만 이후 로그인 관련 로직이 변경되면 작성한 모든 로직을 다 수정해야 할 수 있다. 해결 방안이렇게 애플리케이션 여러 로직에서 공통으로 관심이 있는 있는 것을 공통 관심사(cross-cutting concern)라고 한다. 여기서는 등록, 수정, 삭제, 조회 등등 여러 로직에서 공통으로 인증에 대해서 관심을 가지고 있다.웹과 관련된 공통 관심사는 서블릿 필터 또는 스프링 인터셉터를 사용한다.웹과 관련된 공통 관심사를 처리할 때는 HTTP의 헤더..
[Spring] 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 섹션6 로그인 처리1 - 쿠키, 세션◼️ 로그인 요구사항로그인 요구사항 홈 화면 - 로그인 전회원 가입로그인홈 화면 - 로그인 후 본인 이름(누구님 환영합니다.)상품 관리로그 아웃보안 요구사항로그인 사용자만 상품에 접근하고, 관리할 수 있음로그인 하지 않은 사용자가 상품 관리에 접근하면 로그인 화면으로 이동회원 가입, 상품 관리 🟢 패키지 구조 도메인이 가장 중요하다. domain은 web을 참조하면 안된다. domain이 타 영역에 의존하지 않도록 의존관계를 설정하는것이 중요하다.도메인: 화면, UI, 기술 인프라 등등의 영역은 제외한 시스템이 구현해야 하는 핵심 비즈니스 업무 영역◼️ 로그인 기능 구현@Service@RequiredA..
[Spring] 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 섹션4 검증1 - Validation◼️ 검증 요구사항요구사항: 검증 로직 추가 타입 검증가격, 수량에 문자가 들어가면 검증 오류 처리필드 검증상품명: 필수, 공백X가격: 1000원 이상, 1백만원 이하수량: 최대 9999특정 필드의 범위를 넘어서는 검증가격 * 수량의 합은 10,000원 이상 컨트롤러의 중요한 역할중 하나는 HTTP 요청이 정상인지 검증하는 것이다.참고: 클라이언트 검증, 서버 검증클라이언트 검증은 조작할 수 있으므로 보안에 취약하다.서버만으로 검증하면, 즉각적인 고객 사용성이 부족해진다.둘을 적절히 섞어서 사용하되, 최종적으로 서버 검증은 필수 API 방식을 사용하면 API 스펙을 잘 정의해서 검증 오류를 API 응답..
[Spring] 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 섹션3 메시지, 국제화◼️ 메시지, 국제화메시지 기능: 다양한 메시지를 한곳에서 관리하도록 하는 기능 messages.properties ( /resources/messages.properties )item=상품item.id=상품 IDitem.itemName=상품명item.price=가격item.quantity=수량 HTML들은 아래와 같이 데이터를 key 값으로 불러서 사용 국제화: 메시지 파일을 각 나라별로 별도로 관리하면 서비스를 국제화 할 수 있다. 어느 나라에서 접근한 것인지 인식은 HTTP accept-language 해더 값, 사용자가 직접 언어를 선택, 쿠키 등을 사용해 처리한다. messages_en.properties..
[Java] 김영한의 실전 자바 - 중급편 섹션2 불변 객체○ 기본형과 참조형의 공유기본형: 하나의 값을 여러 변수에서 절대로 공유하지 않는다.참조형: 하나의 객체를 참조값을 통해 여러 변수에서 공유할 수 있다. 기본형 예제package lang.immutable.address;public class PrimitiveMain { public static void main(String[] args) { // 기본형은 절대로 같은 값을 공유하지 않는다. int a = 10; int b = a; // a -> b, 값 복사 후 대입 System.out.println("a = " + a); System.out.println("b = " + b)..
[Java] 김영한의 실전 자바 - 중급편 섹션1 Object 클래스○ java.lang 패키지 소개◼️java.lang 패키지 대표적 클래스들Object: 모든 자바 객체 부모 클래스String: 문자열Integer, Long, Double: 래퍼 타입, 기본형 데이터 타입을 객체로 만든 것Class: 클래스 메타 정보System: 시스템과 관련된 기본 기능들을 제공java.lang 패키지는 모든 자바 애플리케이션에 자동으로 임포트(import)된다.○ Object 클래스자바에서 모든 객체의 최종 부모는 Object이다.클래스에 상속 받을 부모 클래스가 없으면 묵시적으로 Object 클래스를 상속받는다. (extends Object)묵시적(Implicit) vs 명시적(Explicit)묵시적: 개발자가..
🖤 1. java.lang패키지1.1 Object클래스equals() clone() 등 11개의 메소드를 가짐🟢 equals()두 객체의 같고 다름을 참조변수의 값으로 판단한다.class Main { public static void main (String[] args) throws java.lang.Exception { Value v1 = new Value(10); Value v2 = new Value(10); if ( v1.equals(v2) ) System.out.println("v1과 v2는 같습니다."); else System.out.println("v1과 v2는 다릅니다."); v2 = v1; if ( v1.equals(..
문제링크 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.comAlgorithmIdea가능한 모든 경우를 탐색한다. 가능한 기준선 i, j 경우의 수를 모두 탐색하며 W,B,R개수를 세서 cnt에 더해준다.이를 반복하여 cnt 최댓값을 구하고 이를 전체에서 빼서 채워야하는 최소 개수를 구해준다.PythonT = int(input())for tc in range(1, T+1): N, M = map(int, input().split()) arr = [input() for _ in range(N)] mx = 0 for i in range(N-2): for j in range(i+1, N-1):..