[Spring] 스프링 핵심 원리 - 기본편 섹션 9 빈 스코프 ◼️ 빈 스코프란? 빈은 기본적으로 싱글톤 스코프 🟢 스코프 싱글톤: 기본 스코프, 스프링 컨테이너 시작 ~ 종료까지 유지 (가장 넓은 범위) 프로토타입: 프로토타입 빈 생성 ~ 의존관계주입까지만 관여 🟢 웹 관련 스코프 request: 웹 요청이 들어오고 나갈때 까지 유지 session: 웹 세션이 생성되고 종료될 때 까지 유지 application: 웹의 서블릿 컨텍스트와 같은 범위로 유지 컴포넌트스캔 자동등록 @Scope("prototype") @Component public class HelloBean {} 수동등록 @Scope("prototype") @Bean PrototypeBean HelloBean() { return new H..
[Spring] 스프링 핵심 원리 - 기본편 섹션 8 빈 생명주기 콜백 💨 빈 생명주기 콜백 시작 데이터베이스 커넥션 풀이나, 네트워크 소켓등은 객체의 초기화와 종료 작업이 필요하다. 이번시간에는 스프링을 통해 이러한 초기화 작업과 종료 작업을 어떻게 진행하는지 예제로 알아보자. 간단하게 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정한다. 이 NetworkClient 는 애플리케이션 시작 시점 connect() 를 호출해서 연결을 맺고, 애플리케이션이 종료되면 disConnect() 를 호출해서 연결을 끊어야 한다. public class NetworkClient { private String url; public NetworkClient() { System.out.println("생성자 호..
[Spring] 스프링 핵심 원리 - 기본편 섹션 7 의존관계 자동 주입 💨 다양한 의존관계 주입 방법 💚 의존관계 주입법 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 생성자 주입 생성자 호출시점에 딱 1번만 호출 보장 불변, 필수 의존관계에 사용 스프링빈에서 생성자가 딱 1개만 있으면 @Autowired를 생략해도 자동 주입된다. @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } 수정자 주입(set..
가장 많이 알고 있는 유클리드 호제법 2개의 자연수 최대공약수를 구하는 알고리즘의 하나 두 정수가 n과 m이고, n을 m으로 나눈 나머지가 r일 때, n과 m의 최대공약수는 m과 r의 최대공약수와 같다. 최소공배수 파이썬 def gcd(n, m): if m == 0: return n else: return gcd(m, n % m) 자바 public static int gcd(int n, int m) { if (m == 0) return n; return gcd(m, n % m); } 최대공배수 x*y를 최대공약수로 나눈 몫이 최소공배수 파이썬 def lcm(x,y): res = (x*y) // gcd(x,y) return res 자바 public static int lcm(int x, int y) { r..
https://school.programmers.co.kr/learn/courses/30/lessons/120863 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Algorithm Idea 언뜻 간단해보였지만... 경우의 수를 꼼꼼히 따져 출력해내야 하는 문제였다ㅠㅠ. 늘 손코딩 먼저 꼼꼼히 작성하자! 각 항을 돌며 const,xnum에 경우수를 축적해준다. 그리고 xnum과 상수여부에 따라 값을 구분해 출력해준다. Python def solution(polynomial): xnum = 0 const = 0 for c in polynomial.split(..
https://school.programmers.co.kr/learn/courses/30/lessons/120860?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Algorithm Idea 축과 평행하므로 가장 큰 각 x,y좌표에서 평행한 작은좌표를 빼준다. Python def solution(dots): return (max(dots)[0] - min(dots)[0])*(max(dots)[1] - min(dots)[1]) Java class Solution { public int solution(int[][] dots) {..
https://school.programmers.co.kr/learn/courses/30/lessons/120860?language=python3 Algorithm Idea 축과 평행하므로 가장 큰 각 x,y좌표에서 평행한 작은좌표를 빼준다. Python def solution(dots): return (max(dots)[0] - min(dots)[0])*(max(dots)[1] - min(dots)[1]) Java class Solution { public int solution(int[][] dots) { int answer = 0; int tmp = dots[0][0]; int w = 0; int h = 0; for(int i = 1; i < dots.length; i++){ if(dots[i][0..
김영한의 자바 입문 - 섹션2~3 변수, 연산자 섹션2 변수 🟢 변수 초기화 변수를 선언하고, 선언한 변수에 처음으로 값을 저장하는 것을 변수 초기화라 한다. 변수는 반드시 초기화 해야한다. 안하면 컴파일 에러가 발생. 🟢 변수 타입 int : 정수를 다룬다. 예) 1 , 100 , 1000 double : 실수를 다룬다. 예) 0.2 , 1.5 , 100.121 boolean : 불리언 타입이라 한다. true , false 값만 사용할 수 있다. char : 문자 하나를 다룰 때 사용한다. 작은따옴표( ' )를 사용해서 감싸야 한다. 예) 'A' , '가' String : 문자열을 다룬다. 큰따옴표를 사용해야 한다. 예) "hello java" 🟢 변수 타입 2 정수형 byte : -128 ~ 127..
김영한의 자바 입문 - 섹션1 Hello World 자바란? 자바는 표준 스펙과 구현으로 나눌 수 있다. 🟢 자바 표준 스펙 자바는 이렇게 만들어야 한다는 설계도이며, 문서이다 이 표준 스펙을 기반으로 여러 회사에서 실제 작동하는 자바를 만든다 🟢 다양한 자바 구현 자바 표준에 맞춘 자바 프로그램이다. 각각 장단점이 있다. 예를 들어 Amazon Corretto는 AWS에 최적화 되어 있다 🟢 컴파일과 실행 자바 컴파일러(javac)를 사용해서 소스 코드를 컴파일 .java->.class 파일이 생성된다. 자바 소스 코드를 바이트코드로 변환하며 자바 가상 머신에서 더 빠르게 실행될 수 있게 최적화하고 문법 오 류도 검출한다. 자바 프로그램을 실행한다. (java 프로그램 사용) 자바 가상 머신(JVM)이..
자바 ORM 표준 JPA 프로그래밍 - 기본편 섹션2 JPA 시작하기 🔲 Hello JPA - 프로젝트 생성 ◻ JPA 설정 - persistence.xml • JPA 실행을 위한 기본 설정 파일 • /META-INF/persistence.xml 위치 • persistence-unit name으로 이름 지정 • javax.persistence로 시작: JPA 표준 속성 • hibernate로 시작: 하이버네이트 전용 속성 ◻ 데이터베이스 방언 JPA는 특정 데이터베이스에 종속 X 각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다르다. 가변 문자: MySQL은 VARCHAR, Oracle은 VARCHAR2 문자열을 자르는 함수: SQL 표준은 SUBSTRING(), Oracle은SUBSTR()..