| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
| 29 | 30 | 31 |
- 프로그래머스
- 구글 OAuth login
- 99클럽
- 취업리부트코스
- jwt
- KPT회고
- 전략패턴 #StrategyPattern #디자인패턴
- spring batch 5.0
- infcon 2024
- 프로그래머스 이중우선순위큐
- 항해99
- 디자인 패턴
- 파이썬
- Spring multimodule
- DesignPattern
- 빈 조회 2개 이상
- 개발자 취업
- 코딩테스트 준비
- @FeignClient
- 단기개발자코스
- 빈 충돌
- 커스텀 헤더
- 1주일회고
- JavaScript
- 개발자부트캠프추천
- TiL
- jwttoken
- Python
- 디자인패턴
- 인프콘 2024
- Today
- Total
m1ndy5's coding blog
회사 백엔드 직무 필기시험 준비 본문
Spring/Java
IoC/DI란?
IoC(Inversiont of Control)는 객체의 생성 및 의존 관계를 개발자가 아닌 스프링 컨테이너가 제어하는 개념
DI(Dependency Injection)는 의존 객체를 외부에서 주입받는 방식으로 IoC를 구현
@RestController
public class MemberController {
private final MemberService memberService;
// 💡 스프링이 자동으로 MemberService를 주입
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
@GetMapping("/join")
public String join(@RequestParam String name) {
memberService.join(name);
return name + " 회원가입 완료!";
}
}@RestController는 스프링이 빈(애플리케이션 실행 시 필요한 객체)으로 등록
IoC 컨테이너가 필요한 의존성을 자동으로 DI 해준다.
AOP
공통 관심사를 핵심 로직과 분리하여 재사용 가능하게 함 @Aspect, @Around
Bean Scope
singleton, prototype, request, session, application 등이 있음
Bean이 언제 생성되고 공유되는지 정의
Bean Life Cycle
객체 생성 -> 의존성 주입 -> 초기화(@PostConstruct) -> 사용 -> 소멸(@PreDestroy)
Controller -> Service -> Repository
MVC 패턴 기반.
Controller : 요청/응답 처리
Service : 비즈니스 로직 처리
Repository : DB 접근 담당
@Controller VS @RestController
@Controller는 View 반환용, @RestController는 JSON 데이터 반환용
@GetMapping, @PostMapping
HTTP Method와 URI를 매핑하는 어노테이션
@RequestParam vs @PathVariable
@RequestParam은 쿼리파라미터, @Pathvariable은 URI 경로 변수
좀 더 들어가자면 @RequestParam은 검색, 필터링과같은 선택적 데이터 전달에, @PathVariable은 리소스의 식별자(ID)처럼 고유한 값 전달에
throws vs throw
throw는 예외를 발생시키는 키워드, throws는 메서드 선언부에서 예외를 던질 수 있음을 명시
객체지향 4대 특징
추상화, 캡슐화, 상속, 다형성
Collection Framework
List, Set, Map 등
ex) ArrayList(순서O, 중복O), HashSet(순서X, 중복X), HaspMap(key-value 구조)
Stream API
데이터의 연속적 처리를 위한 API
ex) list.stream().filter(x -> x > 10).collect(Collectors.toList());
RDBMS
Join
여러 테이블을 연결해 데이터를 조회
inner join, left join, right join, full outer join
ex) left join은 왼쪽 행을 기준으로 오른쪽 값이 널이여도 출력
Group by / having
그룹별 집계 후 조건 적용. having은 group by 이후 조건
IN vs EXISTS
IN은 리스트 값과 비교, EXISTS는 서브쿼리의 존재 여부 확인
Index
검색 속도 향상을 위한 자료구조
Insert/update 시 성능 저하
트랜잭션 ACID
원자성 : 트랜잭션의 모든 작업이 전부 수행되거나, 전혀 수행되지 않아야함
일관성 : 트랜잭션 수행 전후에 데이터의 제약조건과 규칙이 항상 유지되어야 함
고립성 : 동시에 여러 트랜잭션이 수행되도 서로의 작업에 영향을 주지 않아야 함
지속성 : 트랜잭션이 성공적으로 완료되면 결과가 영구적으로 저장되어야 함
프로시저 / 함수
프로시저는 반환값 X, 함수는 반환값 O
운영체제
프로세스 확인
ps -ef, top, ps aux
프로세스 종료
kill -9 [PID]
특정 포트 사용하는 프로세스
netstat -tulnp | grep [포트번호]
네트워크 확인
ping, telnet, netstat
파일 권한
chmod 755 -> owner: rwx(7), group: r-x(5), others: r-x(5)
소유자 변경
chown user:group filename
로그 확인
tail -f /var/log/messages
Middleware / WAS
Web Server VS WAS
Web Server는 정적 리소스 처리 (HTML, CSS 등)
WAS는 비즈니스 로직 실행
'CS Study' 카테고리의 다른 글
| JPA의 동작원리 (1) | 2024.03.13 |
|---|---|
| Garbage Collector (1) | 2024.03.07 |
| Java의 메모리 영역 (0) | 2024.03.07 |
| JVM, JRE, JDK & 자바 프로그램의 실행 과정 (0) | 2024.03.07 |
| 영속성 컨텍스트 (0) | 2024.03.06 |