질문 출처 : https://github.com/jjuyeon/Tech-Interview-Study/blob/main/spring/README.mdSpring프레임워크Spring TriangleEnterprise Application 개발 시 복잡함을 해결하는 Spring의 3대 핵심 요소. 각각 IoC(DI), AOP, PSA 이다.IoC (Inversion of Control, 제어의 역행)객체지향 언어에서 프로그래머가 작성한 프로그램이 재사용 라이브러리의 흐름 제어를 받게되는 소프트웨어 디자인을 말한다. 전통적인 프로그래밍에서 흐름은 프로그래머가 작성한 프로그램이 외부 라이브러리의 코드를 호출해 이용하지만, 제어가 반대로 적용된 구조에서는 외부 라이브러리의 코드가 프로그래머가 작성한 코드를 호출하여..
본 게시글의 내용과 소스 코드는 도서를 참고하여 작성되었습니다. 객체 의존 여기 회원 가입을 처리하는 기능을 구현한 코드가 있다. package spring; import java.time.LocalDateTime; public class MemberRegisterService { // new 연산자를 사용하여 MemberDao를 생성한 모습 private MemberDao memberDao = new MemberDao(); public Long regist(RegisterRequest req) { Member member = memberDao.selectByEmail(req.getEmail()); if (member != null) { throw new DuplicateMemberException("d..
컨테이너 기술 발전 전통적인 어플리케이션 배포 방식 (Traditional deployment) 서버에 의존성(라이브러리, 프레임워크)를 설치하고 그 위에 어플리케이션(바이너리, 코드)를 배포해서 실행함. 근데 규모가 커지고 운영하는 서비스가 많아지게 되면 같은 서버에서 여러개의 어플리케이션을 돌리는 경우가 생긴다. 이들의 어플리케이션은 서로 다른 각각의 의존성을 가질 수 있고, 그 과정에서 동일한 의존성을 가지지만 다른 버전을 설치해야하는 경우도 있다. 이 때, 한 서버에 다른 버전을 설치하는게 좀 귀찮고 효율성도 낮고 확장성도 낮아진다는 문제가 생긴다. => 어플리케이션을 sandboxing 하고자 했음. 어플리케이션과 의존성을 하나의 샌드박스(독립된 공간)로 묶어버리면 같은 서버 내에서 서로 영향을..
질문 출처 https://github.com/jjuyeon/Tech-Interview-Study/tree/main/operatingSystem [OS] 임계영역에 대해 설명하시오. 임계영역 (Critical section) 임계 구역(영역) 또는 공유변수 영역은 병렬컴퓨팅에서 둘 이상의 스레드가 동시에 접근해서는 안되는 공유 자원(자료 구조 또는 장치)을 접근하는 코드의 일부 공유되는 자원, 즉 동시접근하려고 하는 자원에서 문제가 발생하지 않게 독점을 보장해줘야 하는 영역을 임계영역이라고 한다. 임계 구역은 지정된 시간이 지난 후 종료된다. 때문에 어떤 스레드(태스크 또는 프로세스)가 임계 구역에 들어가고자 한다면 지정된 시간만큼 대기해야 한다. 스레드가 공유자원의 배타적인 사용을 보장받기 위해서 임계 ..
질문 출처 : https://github.com/jjuyeon/Tech-Interview-Study/blob/main/java/README.md [JAVA] JAVA 더보기 출처 종류 자바는 크게 세가지의 종류로 나뉜다. SE, EE, ME Java SE (Standard Edition) 자바 언어의 핵심 기능을 제공. 자바 언어의 기본적인 타입과 객체에서부터, 네트워킹, 보안, 데이터베이스 접근, GUI, XML 파싱에 사용되는 고수준의 클래스까지 모두 정의한다. 보통 학생들이 사용하는 수준의 에디션이다. Java EE (Enterprise Edition) 얘는 Java SE 플랫폼 상에 구축된다. 이는 기업용 애플리케이션을 개발하는 데 필요한 여러가지 도구와 라이브러리를 모아 놓은 것이다. 이 패키지..
LIS의 다른 두가지 방법 이번에는 이진 검색을 활용하여 최장 증가 수열의 크기를 구해보자. C[k]: 길이 k인 증가 수열에 대하여, 0~(k-1)번째 값을 고려하였을 때 k번째에 들어갈 수 있는 가장 작은 값을 C[k]에 저장한다. 이때 이전 알고리즘과는 다르게 LIS 길이는 C[k]에 저장되는 것이 아니라, k 그 자체가 된다! 예를들어 한 학급의 학생들을 키 순으로 정렬한다고 생각해보자. 결과적으로 완성되는 배치는 다음과 같다. 여기서 주의할 점은 line5는 LIS가 아니라는 것이다!!! 이 배열은 오직 LIS의 길이를 구하기 위해 제작된 것이라 이 배열만으로는 정확한 LIS를 알아낼 수 없다.
문제 (1194번) 달이 차오른다, 가자 링크 : https://www.acmicpc.net/problem/1194 사용 언어 : JAVA 내 생각 초기 생각 옛날에 풀었던 아기상어와 비슷하게 풀면 되겠다고 생각했다. 근데 visited 배열을 어떻게 만들어야할지 당최.. 알 수가 없었다. (다른 문제를 풀어도 항상 여기서 막힌다..ㅎ) 그래서 위의 방법이 아닌가? 하면서 dfs로도 풀어보고 stack도 사용해보고 여튼 별 짓 다함 개선 비트 연산자를 활용해야 한다는 힌트를 듣고, visited 배열에 key 보유 상태를 나타내는 차원을 추가했다. 3차원 배열을 사용할 때마다 안터지나..? 하고 조마조마한데 생각보다 잘 안터지는 듯. 최종 bfs/dfs 문제는 푸는 방식이 거의 정해져 있다. bfs로 탐..
질문 출처 : https://github.com/jjuyeon/Tech-Interview-Study/blob/main/java/README.md [JAVA] 객체지향이란? 더보기 참고 https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D http://www.incodom.kr/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5#h_6c44ebae9d828428c5a51a0e5235aa96 개념 Object-Oriented Programming, OOP. 컴퓨터 프로그래밍의 패러다임 중 명령형 프로그래밍의 하나이다. 객체 지향 프로그래밍은 컴..
https://lordofkangs.tistory.com/35 [ JSP ] 서블릿(Servlet) 등록 (web.xml 과 어노테이션) [ JSP ] Servlet 이란? Servlet이란 Server Application Let의 줄임말이다. Let은 조각을 의미하니 서버의 조각을 Servlet이라고 한다. Servlet은 왜 필요할까? 우선 서버의 필요성부터 알아보자. 서버(Server)란.. lordofkangs.tistory.com request.getContextPath() 함수 = 프로젝트 Path만 가져옴 예) http://localhost:8080/project/list.jsp [return] /project 를 가져옴 request.getRequestURI() 함수 = 프로젝트 + 파일..
질문 출처 : https://github.com/jjuyeon/Tech-Interview-Study/tree/main/web [7. Web/Web] DAO, DTO, VO란? MVC 패턴에서 사용되는 객체이다. DAO (Data Access Object) DB와 관련된 CRUD 작업을 전담하도록 만든 객체이다. 비즈니스 로직에서 DB 접근 로직을 분리하기 위해 사용된다. 사용자는 자신이 필요한 인터페이스를 DAO에게 던지고 DAO는 이 인터페이스를 구현한 객체를 사용자에게 편리하게 사용할 수 있도록 반환해 준다. DTO (Data Transfer Object) 계층간의 데이터 교환을 위해 만들어진 Java Beans. (여기서 말하는 계층이란 Controller, View, Busniess, Persis..