본문 바로가기

전체 글299

[Java] 의존관계 주입 방법 의존관계 주입 방법 생성자 주입 생서자를 통해서 의존 관계를 주입 받는 방법 특징은 생성자 호출시점에 1번만 호출되는 것이 보장된다, 불변,필수 의존관계에 사용 보통 생성자에 Autowired로 의존성 주입해서 사용한다 private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy.. 2022. 1. 20.
[T.I.L]DAY14 ------------------------------------------------------------ [T.I.L] ------------------------------------------------------------ 스프링에 관해 공부했다 보다 보니 부족한 부분이 있어서 javadoc에 가서 모르는 것이 있으면 검색해보고 있다 스프링 기본원리를 공부하다보니 시간이 녹는다 오늘 하루도 화이팅! 2022.01.20 - [프로그래밍 언어/JAVA] - [Java] 의존관계 주입 방법 [Java] 의존관계 주입 방법 의존관계 주입 방법 생성자 주입 생서자를 통해서 의존 관계를 주입 받는 방법 특징은 생성자 호출시점에 1번만 호출되는 것이 보장된다, 불변,필수 의존관계에 사용 보통 생성자에 Aut.. 2022. 1. 20.
[Java] 스프링과 싱글톤 패턴의 관계 (Configuration) 스프링과 싱글톤 패턴의 관계 (Configuration) 싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴 private final로 인스턴스를 생성하여 외부에서 new 키워드를 사용하지 못하도록 막아야함 싱글톤 패턴을 지킨 코드 getInstance 메서드를 통해서만 인스턴스를 생성할 수 있고 private 생성자를 선언하여 외부에서 new 키워드로 접근하는 것을 막음 public class SingletonService { //1. static 영역에 객체를 딱 1개만 생성해둔다. private static final SingletonService instance = new SingletonService(); //2. public으로 열어서 객체 인스터스가 필요하면 이 s.. 2022. 1. 19.
[코딩 동아리] 코딩 동아리 3주차 ------------------------------------------------------------ [코딩 동아리] ------------------------------------------------------------ 오늘은 코딩 동아리를 시작하고 어느덧 3주 차가 되었다 코딩 동아리의 순서는 1주일 동안 공부한 내용 중 공유하고 싶은 내용을 말한 뒤 내용에 대한 피드백을 받고 모르는 내용이면 찾아서 공부가 끝난 뒤 소개하는 시간을 갖는다 오늘은 싱글톤과 스프링의 관계를 발표하였다 2022.01.19 - [프로그래밍 언어/JAVA] - [Java] 스프링과 싱글톤 패턴의 관계 (Configuration) [Java] 스프링과 싱글톤 패턴의 관계 (Configuration) 스프링과 싱글톤.. 2022. 1. 19.
[T.I.L]DAY13 ------------------------------------------------------------ [T.I.L] ------------------------------------------------------------ 싱글톤 패턴과 스프링과의 관계 2022.01.19 - [프로그래밍언어/JAVA] - [Java] 스프링과 싱글톤 패턴의 관계 (Configuration) [Java] 스프링과 싱글톤 패턴의 관계 (Configuration) 스프링과 싱글톤 패턴의 관계 (Configuration) 싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴 private final로 인스턴스를 생성하여 외부에서 new 키워드를 사용하지 못 yikanghee2.tistory.c.. 2022. 1. 19.
[세미나] 코드 리뷰 노하우 OKKY 커뮤니티에서 주최한 11번가 웹 개발자 백명석 님의 세미나를 들었다. 우리가 살고 있는 시대는 ICT 융합으로 이뤄지는 차세대 산업혁명이 이뤄지는 세대이다 Global GDP에서 Tech의 비율이 2020 : 5% -> 2030 : 10%로 늘어날 것으로 전망되며, 지난 2년 동안 Non-Tech 영역에서 개발자 수 증가속도가 Tech 영역에서 보다 가파른 것을 보아 비즈니스 분야 성공을 위해서 소프트웨어 개발이 얼마나 필수적인지 알 수 있다 SW공학은 다른 공학에 비해 빌드 과정보다 설계 과정에 중점을 많이 두는데 그 때문에 좋은 설계과정은 좋은 결과를 낳는다 SW공학에서의 설계는 소스코드를 말하는데 완전한 소스코드가 있으면 좋은 설계라고 할 수 있다 이 때문에 흔히 말하는 클린 코드는 매우 .. 2022. 1. 19.
[ T.I.L]DAY12 ------------------------------------------------------------ [T.I.L] ------------------------------------------------------------ OKKY 커뮤니티에서 제공한 백명석 개발자의 세미나를 들었다 코드 리뷰의 중요성과 필요성에 관한 내용이었다 2022.01.19 - [코딩동아리/세미나] - [세미나] 코딩 리뷰 노하우 지금 하고있는 코딩 스터디에서 더 좋은 역량을 발휘 하고 열정적인 참여를 해야겠다 스프링 빈 조회와 스프링 빈 개념 웹 어플리케이션 개발에서 싱글톤의 중요성 2022.01.18 - [프로그래밍언어/JAVA] - [Java]웹 어플리케이션과 싱글톤 [Java]웹 어플리케이션과 싱글톤 웹 어플리케이.. 2022. 1. 18.
[Java]웹 어플리케이션과 싱글톤 웹 어플리케이션 개발할 떄 싱글톤 패턴을 사용하는 이유 문제 : 웹 어플리케이션은 보통 여러 고객이 동시에 접속한다 @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer() { AppConfig appConfig = new AppConfig(); //1. 조회: 호출할 때 마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); //2. 조회: 호출할 때 마다 객체를 생성 MemberService memberService2 = appConfig.memberService(); //참조값이 다른 것을 확인 System.out.println("memberService1 = " + memberS.. 2022. 1. 18.
[ Python] 소수 반대로 출력 n = int(input()) a = list(map(int, input().split())) def reverse(x): res = 0 while x>0: t = x%10 res = res*10 +t x = x//10 return res def isPrime(x): if x==1: return False for i in range(2, x//2 +1): if x%i ==0: return False else : return True for x in a : reverse1=reverse(x) if isPrime(reverse1) : print(reverse1) 함수 2개를 사용하여 reverse에서는 숫자를 반대로 만들어주는 기능을 isPrime에서는 소수를 걸러주는 기능을 만들어주다 reverse에서는 .. 2022. 1. 18.
[Python] 자릿수 합 n=int(input()) a=list(map(int, input().split())) max = -21470000000 def digit_sum(x): sum = 0 while x>0: sum += x%10 x = x//10 return sum for x in a : tmp=digit_sum(x) if max 2022. 1. 18.
[Python] 정육면체 주사위 합 구하기 n,m = map(int, input().split()) cnt = [0]*(n+m+2) max = -21470000000 for i in range(1, n+1): for j in range(1, m+1): cnt[i+j] += 1 for i in range(1, n+m+1): if cnt[i] > max: max = cnt[i] for i in range(1, n+m+1): if cnt[i] == max: print(i, end='') 기본적인 리스트 구조를 알고 풀면 쉬운 문제 처음 0이 들어있는 리스트를 주사위1 + 주사위2 + 여유2개 만들어주고 이후에 최댓값을 구하기 위해서 정수에서 나타낼 수 있는 가장 작은 수 -21470000000 을 선언 for문을 돌려 더해진 값을 리스트 위치에 넣고 .. 2022. 1. 18.
[Python] 문자열 내장함수, 리스트 내장함수 정리 문자열과 내장함수 msg = "It is Time" print(msg.upper()) - > 대문자 print(msg.lower()) - > 소문자 tmp = msg.upper() - > 대문자 print(tmp.find('T')) -> T의인덱스 번호 print(tmp.count('T')) -> T의 개수 print(msg[:2]) -> 0 ~ 1 인덱스 print(msg[3:5]) - > 3 ~ 4 인덱스 print(len(msg)) - > msg의 길이 for i in range(len(msg)) : print(msg[i], end= '') for x in msg : print(x, end='') for x in msg : if x.isupper() : print(x, end = '') for x .. 2022. 1. 18.
[Java] DIP, OCP 원칙 DIP, OCP 원칙 DIP(Dependency Injection) 과 OCP (Open Closed Principle)은 스프링 프로젝트에서 관심사 분리를 통해 보다 훌륭한 프로젝트를 만드는 것을 도와준다 코드를 통해 *DIP, *OCP를 알아보자 커피점에서 커피값을 할인할 때 할인정책을 정역할인해줄지, 퍼센테이지로 할인해줄지 아직 정해지지 않았다 이때, 다형성을 이용하여 기능 구현을 하면 두개의 기능을 만들어놓고 끼워 넣기만 하는 상황이된다 위에 같은 상황일때, 구현 객체 코드에서 변경이 생기면 OCP 정책에 위반하게 된다 이 상황을 해결하기 위해서 외부 의존관계 주입을 통해 해결한다. *프로그래머는 “추상화에 집중해야지, 구현화에 집중해서는 안된다” *소프트웨어 개체(클래스, 모듈 등) 은 확장에 .. 2022. 1. 17.
[T.I.L]DAY11 ------------------------------------------------------------ [T.I.L] ------------------------------------------------------------ 옳바른 객체지향 설계 2022.01.14 - [개발 개념/이론] - [Java] 객체지향 프로그램 (다형성 , SOLID) 자바 메모리 구조 , 코드 살펴보기 2022. 1. 14.
[Java] 객체지향 프로그램 (다형성 , SOLID) 객제지향프로그래밍 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지 를 주고받고, 데이터를 처리할 수 있다. (협력 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프 트웨어 개발에 많이 사용된다 다형성 - 유연하고, 변경이 용이한 방법 다형성은 역할(인터페이스) , 구현(객체) 라고 생각했을때 역할과 구현을 구분하면 세상이 단순해지고, 유연해지며 변경도 편리해진다 클라이언트는 대상의 역할(인터페이스)만 알면 된다 클라이너트는 구현 대상의 내부 구조를 몰라도 된다 클라이언트는 구현 대상의 내부 구조가 변경되어도 영향을 받지 않는다 클라이언트는 구.. 2022. 1. 14.
[T.I.L]DAY10 ------------------------------------------------------------ [T.I.L] ------------------------------------------------------------ 대부분의 시간을 스프링 인강 듣는데 쓰고 있다 그래도 기억나거나 기록하고 공부하고 싶은 게 있으면 블로그를 작성하려고 한다 스프링 의존관계 설정 2022.01.13 - [프로그래밍 언어/JAVA] - 스프링 자동 의존관계 , 수동 의존관계 2022. 1. 13.
스프링 자동 의존관계 , 수동 의존관계 자동 의존관계 설정 스프링이 연관된 객체를 스프링 컨테이너에서 찾아 넣어주는 것을 @Autowired라고 한다 이렇게 객체 의존 관계를 외부에서 넣어주는 것을 DI(Dependency Injection), 의존성 주입이라고 한다 @Autowired를 사용할 때에는 생성자에 어노테이션 해준다 private final MemberService memberService; @Autowired public MemberController(MemberService memberService) { this.memberService = memberService; } 위에서 MemberService를 객체로 가졌지만 MemberService가 스프링 빈으로 등록되어 있지 않을 경우 컴포넌트 스캔을 사용하여 자동 겸 색 해준.. 2022. 1. 13.
스프링 회원 조회 기능 구현 public class Member { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } Member 클래스에 캡슐화된 객체를 생성해준다 public interface MemberRepository { Member save(Member member); Optional findById(Long id); } Member형식으로 생성된 save는 매개변수로 member를 가지고 .. 2022. 1. 12.
[T.I.L] DAY 9 ------------------------------------------------------------ [T.I.L] ------------------------------------------------------------ 파이썬 알고리즘 문제풀이 : ROUND함수로 소수점. SET함수 사용하여 중복제거 스트림 함수 (조만간 포스팅) 스프링 Test코드 작성 및 객체 상관관계 공부 2022.01.12 - [프로그래밍언어/JAVA] - 스프링 회원 조회 기능 구현 2022. 1. 12.
[T.I.L] DAY8 ------------------------------------------------------------ [T.I.L] ------------------------------------------------------------ 스프링 강의 시청 2022.01.11 - [프로그래밍언어/JAVA] - 스프링 웹 방식 스프링 웹 방식 스프링 웹 방식 정적 컨텐츠 정적 컨텐츠는 HTML 파일을 그대로 띄워주는 것을 말한다 static content 정적 컨텐츠 입니다. resources/static/hello-static.html에 넣어주고 localhost:8080/hell.. yikanghee2.tistory.com TEST프로그램 만들기 도전 2022. 1. 11.
스프링 웹 방식 스프링 웹 방식 정적 컨텐츠 정적 컨텐츠는 HTML 파일을 그대로 띄워주는 것을 말한다 정적 컨텐츠 입니다. resources/static/hello-static.html에 넣어주고 localhost:8080/hello-static.html 검색하면 아래와 같이 값이 띄워진다 웹 브라우저에서 내장 톰캣 서버에 요청하면 스프링 컨테이너에 맵핑 해야하지만 컨트롤러가 때문에 html 주소로 바로 연결하여 웹 브라우저에 응답하게 된다 MVC와 템플릿 엔진 MVC : Model, View , Controller MVC 모델은 Controller를 통해 연결해주는 것을 말한다 @GetMapping("hello-mvc") public String helloMvc(@RequestParam("name") String n.. 2022. 1. 11.