분류 전체보기 233

[기술면접] Spring - 3/3

[기술면접] Spring - 3/3의 목차 SOLID란? 디자인패턴 MVC패턴 선언형, 명령형 프로그래밍 (+ 프로그래밍 패러다임) 객체지향 프로그래밍 절차형 프로그래밍 😎 SOLID란? 객체지향 프로그래밍 5가지 설계 원칙, SOLID SOLID란 객체 지향 프로그래밍을 하면서 지켜야하는 5대 원칙으로 각각 SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), DIP(의존 역전 원칙), ISP(인터페이스 분리 원칙)의 앞글자를 따서 만들어졌다. SOLID 원칙을 철저히 지키면 시간이 지나도 변경이 용이하고, 유지보수와 확장이 쉬운 소프트웨어를 개발하는데 도움이 되는 것으로 알려져있다. [ 단일 책임의 원칙(SRP, Single Responsibility Principle)..

[기술면접] Spring - 2/3

[기술면접] Spring - 2/3의 목차 롬복이 만드는 메소드들이 생성되는 시점 서블릿(Servlet) VO와 BO, DAO, DTO 대용량 트래픽에서 장애가 발생하면 어떻게 대응할 것인가요? Spring의 싱글톤 패턴 Spring의 스코프 프로토 타입 빈 @Transactional의 동작 원리 JPA N + 1 문제와 발생하는 이유 그리고 해결하는 방법 JPA와 같은 ORM을 사용하면서 쿼리가 복잡해지는 경우에는 어떻게 해결하는게 좋을까요? [[ 간단 Q&A ]] 스프링 스프링이랑 스프링 부트는 차이점 MVC패턴 MVC1이랑 MVC2 패턴 차이 스프링 MVC 구조 흐름에 대해 과정대로 설명해보세요. 스프링 필터랑 인터셉터의 차이점 IOC란? Dispatcher-Servlet이란? DI(Dependen..

[기술면접] Spring - 1/3

Spring 핵심 키워드 AOP IOC DI Spring MVC 구조 빈, 컨테이너 개념 디자인 패턴 [기술면접] Spring - 1/3의 목차 WAS(Web Application Server)와 WS(Web Server)의 차이 Spring Framework @RequestBody, @RequestParam, @ModelAttribute의 차이 Spring MVC 제어의 역전 (IoC, Inversion of Control) 스프링 빈의 라이프사이클은 어떻게 관리되는지 설명 Spring Filter와 Interceptor에 대해 설명하고, 사용 예시를 설명 관점지향 프로그래밍(AOP, Aspect Oriented Programming)는 무엇이고, 언제 사용할 수 있을까요? 😎 WAS(Web Appli..

[기술면접] 프로그래밍 공통

[기술면접] 프로그래밍 공통 목차 Restful API 프레임워크와 라이브러리의 차이 Call By Value와 Call By Reference의 차이 CORS 절차지향 프로그래밍과 객체지향 프로그래밍의 차이점 OAuth 2.0의 흐름 CSRF에 대해 설명하고, 이를 막기 위한 방법 대칭키, 비대칭키 암호화 방식 TDD(Test-Driven-Development) MSA(Microservice Architecture) 😎 Restful API에 대해 설명해주세요. Restful API는 HTTP 통신을 Rest 설계 규칙을 잘 지켜서 개발한 API를 Restful한 API라고 합니다. Rest 설계 규칙은 URI는 정보의 자원만 표현해야 하며, 자원의 상태와 행위는 HTTP Method에 명시하는걸 말합..

크롬 브라우저 쿠키 삭제 방법

개인 PC를 종종 남들에게 보여줘야 하는 경우가 생깁니다. 그때 제 검색기록이 다 보이면 민망할 때가 있는데요, 전 그래서 미리 크롬 쿠키를 삭제합니다. 방법만 알면 1분이면 후다닥 지울 수 있기에 유용하게 사용할 수 있습니다. 다만, 가끔 사용하는거라 잘 까먹어서 이렇게 기록으로 박제해두려 합니다. 주의! 로그인 했던 모든 사이트에서 로그아웃이 됩니다. 백업을 꼭 해두세요~ 시작합니다. 전 두가지 방법을 통해 쿠키를 삭제합니다. 첫 번째 설정 → 개인 정보 보호 및 보안 → 쿠키 및 기타 사이트 데이터 모든 사이트 데이터 및 권한 보기 → 모든 데이터 삭제를 클릭합니다. 이어서 바로 진행합니다. 두 번째 설정 → 개인 정보 보호 및 보안 → 인터넷 사용 기록 삭제 전체 기간 → 인터넷 사용 기록 삭제 ..

[Cinemagram] 공통기능은 묶어보자 AOP, 마지막 확인 - (16)

이번 포스팅은 Cinemagram의 마지막포스팅입니다. 물론, 계속해서 리팩터링 하거나 기능을 추가할 예정이지만 우선 이렇게 막을 내리고 추후에 작업을 해서 올리도록 하겠습니다. AOP란? Aspect Oriented Programming의 약자로 관점 지향 프로그래밍입니다. 그렇다고 객체지향프로그래밍은 버리겠다는 것이 아니라 추가로 적용 가능합니다. 예를 들어보겠습니다. 로그인 기능, 회원가입 기능을 구현하고자 할 때 로직을 기술해 보면 다음과 같습니다. 핵심기능 로그인 로직 회원가입 로직 1. username, password입력 1. username, password, email, name입력 2. DB에 SELECT쿼리 보냄 2. DB에 INSERT함 3. 로그인(세션) 두 기능의 핵심기능은 다르..

[Cinemagram] 댓글 등록 및 삭제 - (15)

이번 포스팅에서는 댓글(Commnet) 등록과 삭제 기능 구현을 하겠습니다. 댓글 모델 만들기 어떤 필드가 필요할까요? 누가 어떤 내용을 어떤 이미지에 몇 시에 적었는지 이렇게 필드를 구성한 후 연관관계를 잡아주면 됩니다. Comment @NoArgsConstructor @AllArgsConstructor @Getter @Entity public class Comment extends BaseTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @Column(length = 100, nullable = false) private String content; @JoinColumn(name = "userId")..

[타임리프] Session Id를 html, js에 가져다 쓰는 방법

토이프로젝트를 할 때 html이나 js로 sessionId가 넘어가지 않아서 애를 많이 먹었습니다. 오히려 자바 코드 짜는 것보다 이 부분에서 시간을 더 많이 쏟은 듯합니다. 그만큼 헷갈리고 다음에도 헷갈릴 가능성이 있기에 기록으로 남겨둡니다. html Controller @GetMapping("/user/{pageUserId}") public String profile(@PathVariable int pageUserId, Model model, @AuthenticationPrincipal CustomUserDetails customUserDetails) { ... model.addAttribute("sessionId", customUserDetails.getUser().getId()); return "..

Spring 2023.02.08

[2월 Wanted 프리온보딩] 백엔드 - MySQL 잘 사용하기

취업 준비생들이 기업에 지원하기 위해 Wanted를 많이 이용하고 있습니다. 뿐만 아니라 거의 매달 프리온보딩을 진행하고 있는데요, 프론트엔드 / 백엔드 / 마케팅 등 지식과 기술을 업그레이드하고 싶은 분들을 모아서 강의를 진행합니다. 전 토이프로젝트를 하고 CS지식을 쌓으면서 쿼리를 짜는 것에 어려움을 느끼고 있었습니다. 우연히 원티드에서 2월달에 백엔드 - MySQL 잘 사용하기 챌린지가 있어서 홀린 듯 바로 신청하였습니다. 길지는 않습니다. 챌린지 일정을 보면 2주간 수, 금요일 3시간씩 수업을 하고 그 후 4주간은 이력서를 제출하고 취업하는 코스입니다. 4주간 취업 챌린지의 경우 원티드에서 도움을 주는 것은 따로 없습니다. 기업에 지원하기 두려워하는 취준생들이 이 기회를 이용해서 이력서 작성과 취..

개발 공부 2023.02.06

[타임리프] th:onclick과 location.href 함께 사용하는 방법

타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용됩니다. 백엔드 개발자의 경우 (화려한 프론트엔드 기술을 적용할 필요 없이) 빠르게 데이터를 확인 해야할 일이 생깁니다. 이를 위해서라도 SSR의 한 가지 정도는 공부하는 것을 추천하는 데 그중 하나가 타임리프입니다. 정말 간단한 것들은 타임리프 문법을 숙지해서 넣으면 되는데, 중간에 주소를 넣는 부분은 해도해도 까먹어서 이렇게 포스팅으로 박제를 하고자합니다. 이 글을 보시는 분들도 유용하게 사용하셨으면 합니다. 첫 번째, 컨트롤러에서 넘긴 URL변수를 이용하고 싶을 때 th:onclick="'location.href=\''+ @{${moveUrl}} + '\''" 두 번째, 이동하고 싶은 주소를 넣고 싶을 때 참고 : 타임리프 자주 ..

개발 공부 2023.02.01