일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- HTTP
- 백준알고리즘
- Docker
- bufferdreader
- mongodb
- Mongoose
- 스프링
- redis
- MapReduce
- 스프링부트
- Scanner
- 서버
- Spring
- puppeteer
- mysql
- Apollo
- java11
- nodejs
- eof
- ai
- 프로그래머스
- 자바
- Android
- restapi
- java
- 조건문
- k8s
- LangChain
- TCP
- graphql
- Today
- Total
목록전체 글 (69)
자라나라 개발머리
* 인프런 '스프링 핵심 원리' 강좌 복습 게시글 입니다. BeanDefinition(빈 설정 메타정보) 스프링 컨테이너에 스프링 빈을 등록할 때 BeanDefinition(빈 설정 메타정보)를 사용해 스프링 빈을 생성한다. 덕분에 자바 코드,xml등 다양한 형식의 설정 형식을 지원한다. 스프링 빈 등록 과정 1. 자바 코드(xml)을 읽어서 BeanDefinition을 생성한다. 2. BeanDefinition으로 스프링 빈을 생성한다. 3. 스프링 컨테이너에 빈 등록 한다. BeanDefinition 생성 방법 1. BeanDefinition을 직접 적어서 생성 - 실무에서 잘 사용하지 않음 2. FactoryBean을 통해서 생성 - 자바 코드로 생성하는 방법이 이 방법을 사용한다.
* 인프런 '스프링 핵심 원리' 강좌 복습 게시글 입니다. 스프링 컨테이너 스프링 빈을 관리해주는 역할 BeanFactory와 ApplicationContext를 우리는 '스프링 컨테이너'라고 부른다. BeanFactory와 ApplicationContext 차이점 및 정리 1. AC가 BF의 기능을 상속받는 구조이다. 2. AC = BF + 부가기능(메세지소스, 환경변수, 애플리케이션 이벤트, 편리한 리소스 조회) 3. 실무에서는 거의 AC만 쓴다.
* 인프런 '스프링 핵심 원리' 강좌 복습 게시글 입니다. IOC (Inversion of control: 제어의 역전) AppConfig 사용 전: 제어 흐름이 구현 객체에서 드러남 AppConfig 사용 후: AppConfig가 제어 흐름을 담당함 ( 구현 객체는 로직 실행만 담당하게 됨) 같은 맥락으로, 프레임워크와 라이브러리의 차이도 제어의 주체가 개발자냐 프로그램이냐임. 프레임워크 사용시 제어의 역전이 일어남. DI (Dependency Ingection: 의존 관계 주입) 의존 관계의 종류 1. 정적인 의존 관게: 어플케이션을 실행하지 않아도 알 수 있는 의존 관계 2. 동적인 의존 관계(동적인 객체 인스턴스 의존 관계): 실제 동작 시 사용되는 객체의 의존 관계 의존 관계 주입은, 실행 시 ..
* 인프런 '스프링 핵심 원리' 강좌 복습 게시글 입니다. 스프링을 만든 이유 좋은 객체 지향 애플리케이션을 개발 하기 위해 좋은 객체 지향 프로그래밍이란? 유연하고 변경이 용이해야함 > 자바의 다형성! 다형성이란? 역할과 구현으로 분리해서 개발하는 것. 즉, 스프링은 다형성을 극대화하여 이용할 수 있게 도와준다. ( 다형성을 지키며 *SOLID의 OCP,DIP를 지키면서 프로그래밍 할 수 있게 해준다.) * 좋은 객체 지향 설계의 5가지 원칙 (SOLID) 1. SRP(Single Responsibility Principle, 단일 책임 원칙): 한 클래스는 하나의 책임만 가져야 한다. 2. OCP(Open/Cloesd Principle, 개방-폐쇄 원칙): 확장에는 열려있으나 변경에는 닫혀 있어야 한..
*인프런 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술' 강의를 보고 이해한 것을 정리한 내용입니다. 단어 사용이나, 흐름이 맞지 않을 수 있습니다. 1. 프로젝트 생성 스프링 부트 스타터 사이트 - https://start.spring.io 2. 프론트엔드(?) 개발 정적 컨텐츠, MVC, API 등 적절히 사용해서 뼈대 만듬 3-1. 백엔드 개발 비즈니스 요구사항 정리 > 도메인, 리포지토리 만들기 > 리포지토리 테스트 > 서비스 개발 > 서비스 테스트 3-2. DB 접근 주로 JPA, 스프링데이터JPA 사용
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/boAssK/btrU557DHfl/RGUvzk0rZDUItmV0ZGNN70/img.png)
공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 핵심 관심 사항: 각 기능의 핵심 로직 공통 관심 사항: 모든 메소드에 대부분 공통으로 필요한 로직 ( ex: 메소드 시간 측정 ) 핵심 관심 사항과 공통 관심 사항이 섞여있는 로직은 가독성이 안 좋을 뿐더러 유지보수도 어렵다. AOP는 이러한 문제를 해결하는 역할을 한다. AOP AOP: Aspect Oriented Programming 핵심 관심 사항과 공통 관심 사항을 분리해줌 AOP 적용 후 달라지는 의존 관계 AOP를 적용하면 *프록시를 생성하여 직접적으로 객체에 의존하지 않게 된다. 프록시: 가짜 객체
1. 의존관계 컨트롤러에 명령이 들어오면 서비스를 통해 회원가입하고 서비스는 리포지토리를 통해 데이터를 저장하고 조회한다. 이를 클래스 간에 의존관계가 있다고 표현하는데 이 의존관계를 주입하는 방식에는 두가지가 있다. ① 컴포넌트 스캔과 자동 의존관계 설정 @Controller, @Service, @Repository 각 어노테이션 안에는 @Component 어노테이션이 포함되어 있는데 이 어노테이션이 있으면 스프링 컨테이너에 하나의 싱글톤(유일한) 객체로 등록이 된다. 이것이 컴포넌트 스캔이다. @Autowired : 자동으로 의존성 주입 생성자 주입, 필드 주입, setter 주입이 있는데 주로 생성자 주입을 사용한다. ② 자바 코드로 직접 스프링 빈 등록하기 자바 클래스를 새로 생성해서 아래 어노테..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/NojlL/btrQVz6wLsB/VkErcLhPWNtxczioJXdzC0/img.png)
1. 정적 컨텐츠 서버에서 HTML파일 자체를 웹 브라우저로 넘겨줌. 동적 수행이 없다. 동작 방식 1. 스프링 컨테이너에 관련 컨트롤러가 있는지 찾아본다. 2. 없으면 html을 찾아본다. 3. 웹 브라우저로 보낸다. 2. MVC와 템플릿 엔진 Model, View, Controler로 나누어서 코드 작성. 템플릿 엔진으로 서버에서 동적인 처리가 가능하게 한다. 동작 방식 1. 스프링 컨테이너에 관련 컨트롤러가 있는지 찾아본다. 2. 컨트롤러에서 인자를 받고, 리턴한 html을 찾는다. 3. 템플릿 엔진을 통해 동적 수행을 한다. 4. 웹 브라우저로 변환된 html을 보낸다. 3. API html파일이 아니라 stiring, 객체(json) 등을 보내줄 때 쓰인다. 동작 방식 1. 스프링 컨테이너에서 ..
내가 자주 사용하는 인텔리제이 단축키 윈도우 버전! Alt + insert : Generate (getter, setter, constructor, ...) Ctrl + Alt + V : 반환 타입 자동 작성 Ctrl + Alt + M : Extract Method Ctrl + Shift + T : Test case 자동 작성 Shift + F6 : 변수명 전체 변경 Ctrl + / : 한 줄 단위 주석 처리 Ctrl + Shift + / : 블록 단위 주석 처리 Ctrl + D : 줄 복사 Ctrl + Shift + F10 : 파일 실행 Shift + F10 : 이전 실행 파일 재실행 Ctrl + Alt + L : 코드 자동정렬
백준 알고리즘 해답을 보는데 자꾸만 눈에 거슬리는 StringBuilder.. 입출력 문제의 해답엔 십중팔구 얘가 등장해버린다. 공부를 안 할래야 안 할수가 없다. StringBuilder란? String 연산을 효율적으로 처리해주기 위한 클래스 StringBuilder는 어떻게 효율적으로 처리해주는가? StringBuilder의 장점을 알려면 String의 특징을 알아야 한다. String은 클래스이므로 String을 쓰려면 인스턴스를 생성해서 써야한다. 일반적으로는 생성문을 생략하고 쓴다. //같은 의미 String str1 = new String("Hello!"); String str2 = "Hello!"; 중요한 점은, String 클래스에서 생성되는 String 인스턴스는 Immutable 인스..