while(1) work();
반응형
article thumbnail
7. Singleton Pattern

Java Singleton 자바에서 Singleton 패턴을 구현하려면 아래와 같은 귀찮은 코드들이 필요하다. public class Singleton { private final static Singleton instance = new Singleton(); private Singleton() { // 객체 생성 방지하기 위해 private 생성자 사용 } public static Singleton getInstance() { return instance; } public void logic() { ... } } Singleton obj1 = Singleton.getInstance(); Singleton obj2 = Singleton.getInstance(); obj1 == obj2 //true Spr..

6. 모든 빈 조회

package com.sample.spring; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Main { public static void main(String[] args) { ApplicationContext context = new AnnotationConfigApplicationContext(Config.class); for (String beanName : context.getBeanDefinitionNames()) { System.out.println(beanName); }..

5. 진정한 DI

지금까지 구현한 코드에는 사실 여러 문제가 있다. 코드가 Spring Framework에 지나치게 의존하고 있다. getBean 메서드가 제공되지 않는(다른 이름으로 제공되는) DI 프레임워크로 교체해야한다면 모든 코드를 다 바꾸어야 한다. 생성된 ApplicationContext를 계속 전달하며 공유해야 한다. 사실 지금까지는 의존성을 주입받았다고 보기는 어렵다. 생성자를 통해 ApplicationContext를 주입 받았고, 그로부터 SampleRepository 타입 객체를 가져와 사용했을 뿐이다. 사전 준비 그 전에 먼저, 코드를 간소화하기 위해 Application class도 Bean으로 등록시켜주자. package com.sample.spring; import org.springframewo..

4. Annotation Context와 두 개의 Bean

Annotation을 이용한 빈 설정 XML을 이용해 빈을 설정하는 것은 상당히 번거롭다. Spring 3.2 버전부터 Java의 Annotation 문법을 사용해 빈 설정이 가능하도록 지원한다. package com.sample.spring; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; //import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(Str..

article thumbnail
3. Spring Context 사용해보기

Spring의 IoC 기능은 org.springframework:spring-context 의존성으로부터 얻을 수 있음. spring-context 가 의존하는 패키지를 보면 아래와 같음 따라서 spring-context만 의존성에 추가하면 spring-core, spring-aop 등을 추가하지 않고 사용 가능하다. Maven project 생성 mvn archetype:generate 위 명령을 통해 비어있는 Maven Project를 생성할 수 있다. Maven과 같은 빌드 도구를 사용하지 않으려면 spring-context.jar 파일을 내려받고 javac -cp “spring-context.jar” xxxx.java 와 같이 컴파일 해야 한다. 뿐만 아니라 spring-context가 의존하는 ..

2. IoC와 DI

개요 Spring Framework를 처음 공부할 때 가장 어렵게 느낀 부분이 IoC와 DI에 대한 개념 DI(Dependency Injection; 의존성주입)는 클래스들 간의 연관관계를 클래스 내 코드로 작성하게 되면 강한 결합이 생기기 때문에, 이를 방지하고자 외부에서 주입하겠다는 의미 IoC(Inversion of Control; 제어의 역전) 는 DI를 개발자가 하는 것이 아니라 프레임워크가 대신 해준다는 의미 SOLID 원칙 객체 지향 프로그래밍 설계의 다섯 가지 기본 원칙 S (Single responsibility principle; 단일 책임 원칙) O (Open-closed principle; 개방 폐쇄 원칙) L (Liskov substitution principle; 리스코프 치환 ..

1. Spring Framework

개요 스프링은 “세계에서 가장 인기있는” 자바 프레임워크임 웹 서버 프로젝트에만 적용되는 프레임워크가 아님 모듈식 구조 스프링은 모듈식 구조를 가짐. 따라서 개발 시 필요한 모듈만 사용할 수 있음 Spring Framework Spring Boot Spring Data Spring Cloud Spring Security Spring Batch 등 특정 분야에 적합한 여러개의 모듈로 나뉘어져 있음 주요 패키지 https://mvnrepository.com/artifact/org.springframework Maven Repository에 org.springframework를 검색하면 다양한 스프링 패키지들이 나옴 spring-core : 각 스프링 모듈에서 필요한 공통 클래스들 spring-context ..

article thumbnail
WSL2와 Docker, 그리고 CUDA 연동
버그와 삽질 2022. 12. 27. 21:00

2020년에 Windows10 기준으로 타 사이트에 작성한 글을 가져왔습니다. WSL 업데이트로 인해 지금도 이렇게 동작하는지 알 수 없으니 참고용으로만 읽어주세요. 서론 Windows의 Docker 환경에서는 GPU CUDA를 사용할 수 없다. 좀 더 정확히 말하면 Nvidia-docker가 Windows를 지원하지 않는다. 따라서 CUDA를 사용하기 위해서는 Linux 환경이 필요한데, 현실적으로 개발 환경을 Linux로 구축하기에는 다소 어려움이 따른다. 하지만 다행히, Microsoft의 WSL(Windows Subsystem for Linux)이라는 기술을 사용할 수 있다. 본 글에서는 WSL(WSL2)을 사용하여 가상 리눅스 시스템을 구축하고 리눅스에 Docker를 설치하여 Docker 내부에..

반응형

검색 태그