- Today
- Total
목록Category (318)
개발하는 고라니
Collection List Map Set 프로그래밍 언어에는 종류에 상관없이 Map, Set, List 컬렉션을 지원한다. 하지만 JS의 경우 ES 6 이전에 List밖에 없었고, 다음 버전인 ES 6에서는 나머지 컬렉션들이 추가가 되었다. Set let set = new Set(); set.add(5); set.add("5"); set.add('ok'); set.add(true); set.add(5); console.log(set.size); //4 Set은 흔히 알고있듯, Value가 Key가 되는, 즉 하나의 Value의 중복을 허용하지 않는 컬렉션이다. 그래서 배열의 중복제거를 위해 종종 사용되기도 한다. const arr = [2, 2, 3, 8, 1, 10, 2, 5, 3, 5, 8, 7, ..
Java로 웹 개발을 접해보았다면 Servlet/JSP로 입문을 했을 가능성이 높고, Spring과 MyBatis, JSP로 그 다음을 접해보았을 것이라 기대된다. JSP는 Java Server Page의 약자로 그간 많이 사용되어왔고, 현재도 많이 쓰이는 뷰 엔진(View Engine)이다. 하지만 최근 스프링 부트로 넘어오면서 JSP 대신 Thymeleaf라는 비교적 새로운 뷰 템플릿 엔진이 등장하였고 많은 사람들이 이것을 사용한다. 물론 Thymeleaf말고도 Mustache, Groovy, FreeMarker ... 등 많은 뷰 엔진이 있다. 이번 포스팅에서 알아볼 Thymeleaf은 Spring Framework(특히 Spring MVC)에 통합시킬 수 있는 뷰 엔진이다. Thymeleaf or..
웹 서비스를 개발하다보면 하나의 업무 로직에서 반드시 함께 처리 되어야하는 업무 단위가 있다. 예를 들어 송금의 상황에서 A가 B에게 송금을 했다면, A의 통장은 잔고가 업데이트 되어야 하고, B의 통장 잔고 또한 업데이트 되어야 하는데, 예기치 못한 상황이 발생해 A에서 돈이 빠져나갔지만, B에게 돈이 들어오지 않았다면... A에서 빠져나간 돈은 다시 원래대로 복구되어야 할 것이다. 이를 트랜잭션 처리라고 한다. @Transactional 스프링의 트랜잭션은 AOP를 기반으로 동작한다. 즉 메인 로직의 시작과 끝에 붙어 트랜잭션을 처리해주는 것이다. 사실 개발자 입장에서는 @Transactional 어노테이션만 붙여주면 끝이난다. 하지만 이 어노테이션의 옵션을 한번 들여다보자. 전파 옵션 - Propa..
Java를 이용해 웹 개발을 한다면 Spring Boot를 높은 확률로 사용할 것이고, 데이터베이스와 연결하기 위해 MyBatis나 JPA를 많이 사용하는 추세이다. 만약 Spring Boot와 MyBatis를 사용할 경우 간단한 설정과 사용법을 보도록 하자 MyBatis 먼저 이를 사용하려면 라이브러리가 필요한데, Maven Repository에서 가져와 인젝션 해주자. 나는 MySQL을 사용할 것 이기에 mysql 라이브러리도 가져왔다. 그리고 jdbc는 필수로 있어야 한다. org.springframework.boot spring-boot-starter-jdbc mysql mysql-connector-java 8.0.24 org.mybatis.spring.boot mybatis-spring-boot..
B는 C를 사용하므로 C는 B의 부품 A는 B를 사용하므로 B는 A의 부품 Frame은 A를 사용하므로 Frame의 부품 즉, Dependency는 상대적이다. 왼쪽, 중앙 방법은 부픔(A)를 뺏다 꼇다 할 수 있는 방법이 아니므로 DI가 아니다. 오른쪽은 Setter, Constructor 로 Injection를 하는 방법이다. 스프링이 DI를 해준다. 직접 관리하는 것보다 속도는 느릴 수 있으나 변경이 유연하다 IoC Container Dependency Injection의 방법 생성자 Injection @Service public class NoticeServiceImpl implements NoticeService{ private final NoticeRepository repository; //..
DispatcherServlet 서블릿/JSP을 다룰 때 Controller 단에서 @WebServlet("/test")와 같은 URL Mapping을 설정했고, 클라이언트의 요청을 직접 받아 로직을 수행했다. 스프링에서는 어떻게 처리를 하는지 보자. 개념 Servlet Container에서 HTTP 프로토콜을 통해 들어오는 모든 요청을 프레젠테이션 계층(Controller)의 제일 앞에두어 중앙집중식으로 처리해주는 프론트 컨트롤러 [프론트 컨트롤러란 주로 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아 처리해주는 컨트롤러인데, MVC 구조에서 함께 사용되는 패턴] 스프링을 사용하면 DispatcherServlet이라는 핸들러 서블릿이 모든 URL로 들어오는 요청을 받아 스프..
12763번: 지각하면 안 돼 1호관에서 3호관, 4호관을 거쳐 5호관으로 간다면, 3시간만에 3500원의 지출로 도착할 수 있다. (다행히 이번 수업은 휴강이었다고 합니다.) www.acmicpc.net [Dijkstra + DFS] N개의 정점을 탐색하는 것에서 그래프 문제임을 유추할 수 있고, 조건이 주어지며 최소한의 값으로 목표 정점에 도착하는 것을 구하는 것에서 최단경로 문제임을 유추할 수 있다. 그저 그런 다익스트라 문제인줄 알고 여유롭게 풀었지만 85% 쯤 오답판정을 받았다. 이럴리가 없는데..하면서 몇 번을 다시 제출했지만 여전히 오답이었다. 틀린 이유에 대한 해답은 질문 게시판에서 찾을 수 있었다. 링크 : https://www.acmicpc.net/board/view/37703#post..
코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 나의 문제 접근법 주어진 문자열을 문자 배열로 변환하고, 각 문자로의 이동 회수를 구했다. 예를 들어 "JAN"이라는 문자열이 주어지면 첫번째 'A'에서 'J'로 갈 수 있는 이동횟수는 오른쪽으로 이동했을 때 9회, 왼쪽으로 이동했을 때 16회인데, 이 둘 중 최소값인 9를 택한다. 마찬가지로 두번째 문자에 대해서도 동일한 방법으로 이동회수를 구한다. 현재 문자에서 왼쪽과 오른쪽으로 탐색을 하는데, 이 때 'A'가 아닌 문자가 있는 곳을 찾는..